Coverage Report - org.apache.maven.plugins.enforcer.RequireActiveProfile
 
Classes in this File Line Coverage Branch Coverage Complexity
RequireActiveProfile
0%
0/30
0%
0/22
8.5
 
 1  
 package org.apache.maven.plugins.enforcer;
 2  
 
 3  
 /*
 4  
  * Licensed to the Apache Software Foundation (ASF) under one
 5  
  * or more contributor license agreements.  See the NOTICE file
 6  
  * distributed with this work for additional information
 7  
  * regarding copyright ownership.  The ASF licenses this file
 8  
  * to you under the Apache License, Version 2.0 (the
 9  
  * "License"); you may not use this file except in compliance
 10  
  * with the License.  You may obtain a copy of the License at
 11  
  *
 12  
  *  http://www.apache.org/licenses/LICENSE-2.0
 13  
  *
 14  
  * Unless required by applicable law or agreed to in writing,
 15  
  * software distributed under the License is distributed on an
 16  
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 17  
  * KIND, either express or implied.  See the License for the
 18  
  * specific language governing permissions and limitations
 19  
  * under the License.
 20  
  */
 21  
 
 22  
 import java.util.ArrayList;
 23  
 import java.util.List;
 24  
 
 25  
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
 26  
 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
 27  
 import org.apache.maven.model.Profile;
 28  
 import org.apache.maven.project.MavenProject;
 29  
 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
 30  
 import org.codehaus.plexus.util.StringUtils;
 31  
 
 32  
 /**
 33  
  * This rule checks that some profiles are active.
 34  
  *
 35  
  * @author <a href="mailto:brianf@apache.org">Brian Fox</a>
 36  
  */
 37  0
 public class RequireActiveProfile
 38  
     extends AbstractNonCacheableEnforcerRule
 39  
 {
 40  
 
 41  
     /** Comma separated list of profiles to check. */
 42  0
     public String profiles = null;
 43  
 
 44  
     /** If all profiles must be active. If false, only one must be active */
 45  0
     public boolean all = true;
 46  
 
 47  
     /*
 48  
      * (non-Javadoc)
 49  
      *
 50  
      * @see org.apache.maven.enforcer.rule.api.EnforcerRule#execute(org.apache.maven.enforcer.rule.api.EnforcerRuleHelper)
 51  
      */
 52  
     public void execute( EnforcerRuleHelper theHelper )
 53  
         throws EnforcerRuleException
 54  
     {
 55  0
         List<String> missingProfiles = new ArrayList<String>();
 56  
         try
 57  
         {
 58  0
             MavenProject project = (MavenProject) theHelper.evaluate( "${project}" );
 59  0
             if ( StringUtils.isNotEmpty( profiles ) )
 60  
             {
 61  0
                 String[] profs = profiles.split( "," );
 62  0
                 for ( String profile : profs )
 63  
                 {
 64  0
                     if ( !isProfileActive( project, profile ) )
 65  
                     {
 66  0
                         missingProfiles.add( profile );
 67  
                     }
 68  
                 }
 69  
 
 70  0
                 boolean fail = false;
 71  0
                 if ( !missingProfiles.isEmpty() )
 72  
                 {
 73  0
                     fail = true;
 74  
                     // if (all && missingProfiles.size() != profs.length)
 75  
                     // {
 76  
                     // fail = true;
 77  
                     // }
 78  
                     // else
 79  
                     // {
 80  
                     // if (!all && missingProfiles.size() >= (profs.length -1))
 81  
                     // {
 82  
                     // fail = true;
 83  
                     // }
 84  
                     // }
 85  
                 }
 86  
 
 87  0
                 if ( fail )
 88  
                 {
 89  0
                     StringBuilder buf = new StringBuilder();
 90  0
                     if ( message != null )
 91  
                     {
 92  0
                         buf.append( message + "\n" );
 93  
                     }
 94  
 
 95  0
                     for ( String profile : missingProfiles )
 96  
                     {
 97  0
                         buf.append( "Profile \"" + profile + "\" is not activated.\n" );
 98  
                     }
 99  
 
 100  0
                     throw new EnforcerRuleException( buf.toString() );
 101  
                 }
 102  
 
 103  
             }
 104  
 
 105  
         }
 106  0
         catch ( ExpressionEvaluationException e )
 107  
         {
 108  0
             throw new EnforcerRuleException( "Unable to retrieve the project.", e );
 109  0
         }
 110  
 
 111  0
     }
 112  
 
 113  
     /**
 114  
      * Checks if profile is active.
 115  
      *
 116  
      * @param project the project
 117  
      * @param profileName the profile name
 118  
      * @return <code>true</code> if profile is active, otherwise <code>false</code>
 119  
      */
 120  
     protected boolean isProfileActive( MavenProject project, String profileName )
 121  
     {
 122  
         @SuppressWarnings( "unchecked" )
 123  0
         List<Profile> activeProfiles = project.getActiveProfiles();
 124  0
         if ( activeProfiles != null && !activeProfiles.isEmpty() )
 125  
         {
 126  0
             for ( Profile profile : activeProfiles )
 127  
             {
 128  0
                 if ( profile.getId().equals( profileName ) )
 129  
                 {
 130  0
                     return true;
 131  
                 }
 132  
             }
 133  
         }
 134  
 
 135  0
         return false;
 136  
     }
 137  
 }