Coverage Report - org.apache.maven.archiver.ManifestConfiguration
 
Classes in this File Line Coverage Branch Coverage Complexity
ManifestConfiguration
80%
33/41
75%
6/8
1.182
 
 1  
 package org.apache.maven.archiver;
 2  
 
 3  
 import org.apache.maven.artifact.Artifact;
 4  
 import org.apache.maven.artifact.handler.ArtifactHandler;
 5  
 
 6  
 /*
 7  
  * Licensed to the Apache Software Foundation (ASF) under one
 8  
  * or more contributor license agreements.  See the NOTICE file
 9  
  * distributed with this work for additional information
 10  
  * regarding copyright ownership.  The ASF licenses this file
 11  
  * to you under the Apache License, Version 2.0 (the
 12  
  * "License"); you may not use this file except in compliance
 13  
  * with the License.  You may obtain a copy of the License at
 14  
  *
 15  
  *   http://www.apache.org/licenses/LICENSE-2.0
 16  
  *
 17  
  * Unless required by applicable law or agreed to in writing,
 18  
  * software distributed under the License is distributed on an
 19  
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 20  
  * KIND, either express or implied.  See the License for the
 21  
  * specific language governing permissions and limitations
 22  
  * under the License.
 23  
  */
 24  
 
 25  
 /**
 26  
  * Capture common manifest configuration.
 27  
  *
 28  
  * @author <a href="mailto:brett@apache.org">Brett Porter</a>
 29  
  * @version $Id: ManifestConfiguration.java 697981 2008-09-22 20:44:40Z jdcasey $
 30  
  * @todo is this general enough to be in Plexus Archiver?
 31  
  */
 32  19
 public class ManifestConfiguration
 33  
 {
 34  
     public static final String CLASSPATH_LAYOUT_TYPE_SIMPLE = "simple";
 35  
 
 36  
     public static final String CLASSPATH_LAYOUT_TYPE_REPOSITORY = "repository";
 37  
 
 38  
     public static final String CLASSPATH_LAYOUT_TYPE_CUSTOM = "custom";
 39  
 
 40  
     private String mainClass;
 41  
 
 42  
     private String packageName;
 43  
 
 44  
     private boolean addClasspath;
 45  
 
 46  
     private boolean addExtensions;
 47  
 
 48  
     /**
 49  
      * This gets prefixed to all classpath entries.
 50  
      */
 51  19
     private String classpathPrefix = "";
 52  
 
 53  
     /**
 54  
      * Add default implementation entries if this is an extension specification.
 55  
      *
 56  
      * @since 2.1
 57  
      */
 58  
     private boolean addDefaultSpecificationEntries;
 59  
 
 60  
     /**
 61  
      * Add default implementation entries if this is an extension.
 62  
      *
 63  
      * @since 2.1
 64  
      */
 65  
     private boolean addDefaultImplementationEntries;
 66  
     
 67  
     /**
 68  
      * The generated Class-Path entry will contains paths that follow the
 69  
      * Maven 2 repository layout:
 70  
      * $groupId[0]/../${groupId[n]/$artifactId/$version/{fileName}
 71  
      * @since 2.3
 72  
      * @deprecated Use {@link ManifestConfiguration#classpathLayoutType} instead.
 73  
      */
 74  19
     private boolean classpathMavenRepositoryLayout = false;
 75  
     
 76  19
     private String classpathLayoutType = CLASSPATH_LAYOUT_TYPE_SIMPLE;
 77  
     
 78  
     private String customClasspathLayout;
 79  
     
 80  19
     private boolean useUniqueVersions = true;
 81  
 
 82  
     public String getMainClass()
 83  
     {
 84  30
         return mainClass;
 85  
     }
 86  
 
 87  
     public String getPackageName()
 88  
     {
 89  30
         return packageName;
 90  
     }
 91  
 
 92  
     public boolean isAddClasspath()
 93  
     {
 94  47
         return addClasspath;
 95  
     }
 96  
 
 97  
     public boolean isAddDefaultImplementationEntries()
 98  
     {
 99  30
         return addDefaultImplementationEntries;
 100  
     }
 101  
 
 102  
     public boolean isAddDefaultSpecificationEntries()
 103  
     {
 104  30
         return addDefaultSpecificationEntries;
 105  
     }
 106  
 
 107  
     public boolean isAddExtensions()
 108  
     {
 109  25
         return addExtensions;
 110  
     }
 111  
 
 112  
     /**
 113  
      * @deprecated Use {@link ManifestConfiguration#getClasspathLayoutType()}, and compare to
 114  
      * CLASSPATH_LAYOUT_TYPE_SIMPLE or CLASSPATH_LAYOUT_TYPE_REPOSITORY, also declared in {@link ManifestConfiguration}.
 115  
      */
 116  
     public boolean isClasspathMavenRepositoryLayout()
 117  
     {
 118  0
         return classpathMavenRepositoryLayout;
 119  
     }
 120  
 
 121  
     public void setAddClasspath( boolean addClasspath )
 122  
     {
 123  9
         this.addClasspath = addClasspath;
 124  9
     }
 125  
 
 126  
     public void setAddDefaultImplementationEntries( boolean addDefaultImplementationEntries )
 127  
     {
 128  12
         this.addDefaultImplementationEntries = addDefaultImplementationEntries;
 129  12
     }
 130  
 
 131  
     public void setAddDefaultSpecificationEntries( boolean addDefaultSpecificationEntries )
 132  
     {
 133  9
         this.addDefaultSpecificationEntries = addDefaultSpecificationEntries;
 134  9
     }
 135  
 
 136  
     public void setAddExtensions( boolean addExtensions )
 137  
     {
 138  2
         this.addExtensions = addExtensions;
 139  2
     }
 140  
 
 141  
     /**
 142  
      * @deprecated Use {@link ManifestConfiguration#setClasspathLayoutType(String)}, and use
 143  
      * CLASSPATH_LAYOUT_TYPE_SIMPLE, CLASSPATH_LAYOUT_TYPE_CUSTOM, or CLASSPATH_LAYOUT_TYPE_REPOSITORY, 
 144  
      * also declared in {@link ManifestConfiguration}.
 145  
      */
 146  
     public void setClasspathMavenRepositoryLayout( boolean classpathMavenRepositoryLayout )
 147  
     {
 148  0
         this.classpathMavenRepositoryLayout = classpathMavenRepositoryLayout;
 149  0
     }
 150  
 
 151  
     public void setClasspathPrefix( String classpathPrefix )
 152  
     {
 153  2
         this.classpathPrefix = classpathPrefix;
 154  2
     }
 155  
 
 156  
     public void setMainClass( String mainClass )
 157  
     {
 158  10
         this.mainClass = mainClass;
 159  10
     }
 160  
 
 161  
     public void setPackageName( String packageName )
 162  
     {
 163  0
         this.packageName = packageName;
 164  0
     }
 165  
 
 166  
     public String getClasspathPrefix()
 167  
     {
 168  15
         String cpp = classpathPrefix.replaceAll( "\\\\", "/" );
 169  
 
 170  15
         if ( cpp.length() != 0 && !cpp.endsWith( "/" ) )
 171  
         {
 172  0
             cpp += "/";
 173  
         }
 174  
 
 175  15
         return cpp;
 176  
     }
 177  
 
 178  
     /**
 179  
      * Return the type of layout to use when formatting classpath entries.
 180  
      * Default is taken from the constant CLASSPATH_LAYOUT_TYPE_SIMPLE, declared 
 181  
      * in this class, which has a value of 'simple'. Other values are: 'repository'
 182  
      * (CLASSPATH_LAYOUT_TYPE_REPOSITORY, or the same as a maven classpath layout),
 183  
      * and 'custom' (CLASSPATH_LAYOUT_TYPE_CUSTOM).
 184  
      * <br/>
 185  
      * <b>NOTE:</b> If you specify a type of 'custom' you MUST set {@link ManifestConfiguration#setCustomClasspathLayout(String)}.
 186  
      */
 187  
     public String getClasspathLayoutType()
 188  
     {
 189  15
         return CLASSPATH_LAYOUT_TYPE_SIMPLE.equals( classpathLayoutType ) && classpathMavenRepositoryLayout ? CLASSPATH_LAYOUT_TYPE_REPOSITORY
 190  
                         : classpathLayoutType;
 191  
     }
 192  
 
 193  
     /**
 194  
      * Set the type of layout to use when formatting classpath entries.
 195  
      * Should be one of: 'simple' (CLASSPATH_LAYOUT_TYPE_SIMPLE), 'repository'
 196  
      * (CLASSPATH_LAYOUT_TYPE_REPOSITORY, or the same as a maven classpath layout),
 197  
      * and 'custom' (CLASSPATH_LAYOUT_TYPE_CUSTOM). The constant names noted here
 198  
      * are defined in the {@link ManifestConfiguration} class.
 199  
      * <br/>
 200  
      * <b>NOTE:</b> If you specify a type of 'custom' you MUST set {@link ManifestConfiguration#setCustomClasspathLayout(String)}.
 201  
      */
 202  
     public void setClasspathLayoutType( String classpathLayoutType )
 203  
     {
 204  5
         this.classpathLayoutType = classpathLayoutType;
 205  5
     }
 206  
 
 207  
     /**
 208  
      * Retrieve the layout expression for use when the layout type set in {@link ManifestConfiguration#setClasspathLayoutType(String)}
 209  
      * has the value 'custom'. <b>The default value is null.</b>
 210  
      * Expressions will be evaluated against the following ordered list of classpath-related objects:
 211  
      * <ol>
 212  
      *   <li>The current {@link Artifact} instance, if one exists.</li>
 213  
      *   <li>The current {@link ArtifactHandler} instance from the artifact above.</li>
 214  
      * </ol>
 215  
      * <br/>
 216  
      * <b>NOTE:</b> If you specify a layout type of 'custom' you MUST set this layout expression.
 217  
      */
 218  
     public String getCustomClasspathLayout()
 219  
     {
 220  15
         return customClasspathLayout;
 221  
     }
 222  
 
 223  
     /**
 224  
      * Set the layout expression for use when the layout type set in {@link ManifestConfiguration#setClasspathLayoutType(String)}
 225  
      * has the value 'custom'. Expressions will be evaluated against the following ordered list of classpath-related objects:
 226  
      * <ol>
 227  
      *   <li>The current {@link Artifact} instance, if one exists.</li>
 228  
      *   <li>The current {@link ArtifactHandler} instance from the artifact above.</li>
 229  
      * </ol>
 230  
      * <br/>
 231  
      * <b>NOTE:</b> If you specify a layout type of 'custom' you MUST set this layout expression.
 232  
      */
 233  
     public void setCustomClasspathLayout( String customClasspathLayout )
 234  
     {
 235  3
         this.customClasspathLayout = customClasspathLayout;
 236  3
     }
 237  
 
 238  
     /**
 239  
      * Retrieve the flag for whether snapshot artifacts should be added to the 
 240  
      * classpath using the timestamp/buildnumber version (the default, when this
 241  
      * flag is true), or using the generic -SNAPSHOT version (when the flag is
 242  
      * false).
 243  
      * <br/>
 244  
      * <b>NOTE:</b> If the snapshot was installed locally, this flag will not 
 245  
      * have an effect on that artifact's inclusion, since it will have the same
 246  
      * version either way (i.e. -SNAPSHOT naming).
 247  
      */
 248  
     public boolean isUseUniqueVersions()
 249  
     {
 250  26
         return useUniqueVersions;
 251  
     }
 252  
 
 253  
     /**
 254  
      * Set the flag for whether snapshot artifacts should be added to the 
 255  
      * classpath using the timestamp/buildnumber version (the default, when this
 256  
      * flag is true), or using the generic -SNAPSHOT version (when the flag is
 257  
      * false).
 258  
      * <br/>
 259  
      * <b>NOTE:</b> If the snapshot was installed locally, this flag will not 
 260  
      * have an effect on that artifact's inclusion, since it will have the same
 261  
      * version either way (i.e. -SNAPSHOT naming).
 262  
      */
 263  
     public void setUseUniqueVersions( boolean useUniqueVersions )
 264  
     {
 265  0
         this.useUniqueVersions = useUniqueVersions;
 266  0
     }
 267  
 }