o Refactored Code
- introduced some handle methods to get shorter method length.
o Removed System.out.println from test code
git-svn-id: https://svn.apache.org/repos/asf/maven/shared/trunk@1738445 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/maven/archiver/MavenArchiver.java b/src/main/java/org/apache/maven/archiver/MavenArchiver.java
index 6bfeb26..313a1fa 100644
--- a/src/main/java/org/apache/maven/archiver/MavenArchiver.java
+++ b/src/main/java/org/apache/maven/archiver/MavenArchiver.java
@@ -275,32 +275,7 @@
{
List<ValueSource> valueSources = new ArrayList<ValueSource>();
- valueSources.add( new PrefixedObjectValueSource( ARTIFACT_EXPRESSION_PREFIXES, artifact,
- true ) );
- valueSources.add( new PrefixedObjectValueSource( ARTIFACT_EXPRESSION_PREFIXES,
- artifact.getArtifactHandler(), true ) );
-
- Properties extraExpressions = new Properties();
- // FIXME: This query method SHOULD NOT affect the internal
- // state of the artifact version, but it does.
- if ( !artifact.isSnapshot() )
- {
- extraExpressions.setProperty( "baseVersion", artifact.getVersion() );
- }
-
- extraExpressions.setProperty( "groupIdPath", artifact.getGroupId().replace( '.', '/' ) );
- if ( StringUtils.isNotEmpty( artifact.getClassifier() ) )
- {
- extraExpressions.setProperty( "dashClassifier", "-" + artifact.getClassifier() );
- extraExpressions.setProperty( "dashClassifier?", "-" + artifact.getClassifier() );
- }
- else
- {
- extraExpressions.setProperty( "dashClassifier", "" );
- extraExpressions.setProperty( "dashClassifier?", "" );
- }
- valueSources.add( new PrefixedPropertiesValueSource( ARTIFACT_EXPRESSION_PREFIXES,
- extraExpressions, true ) );
+ handleExtraExpression( artifact, valueSources );
for ( ValueSource vs : valueSources )
{
@@ -386,42 +361,12 @@
if ( config.isAddDefaultSpecificationEntries() )
{
- addManifestAttribute( m, entries, "Specification-Title", project.getName() );
-
- try
- {
- ArtifactVersion version = project.getArtifact().getSelectedVersion();
- String specVersion = String.format( "%s.%s", version.getMajorVersion(), version.getMinorVersion() );
- addManifestAttribute( m, entries, "Specification-Version", specVersion );
- }
- catch ( OverConstrainedVersionException e )
- {
- throw new ManifestException( "Failed to get selected artifact version to calculate"
- + " the specification version: " + e.getMessage() );
- }
-
- if ( project.getOrganization() != null )
- {
- addManifestAttribute( m, entries, "Specification-Vendor", project.getOrganization().getName() );
- }
+ handleSpecificationEntries( project, entries, m );
}
if ( config.isAddDefaultImplementationEntries() )
{
- addManifestAttribute( m, entries, "Implementation-Title", project.getName() );
- addManifestAttribute( m, entries, "Implementation-Version", project.getVersion() );
- // MJAR-5
- addManifestAttribute( m, entries, "Implementation-Vendor-Id", project.getGroupId() );
-
- if ( project.getOrganization() != null )
- {
- addManifestAttribute( m, entries, "Implementation-Vendor", project.getOrganization().getName() );
- }
-
- if ( project.getUrl() != null )
- {
- addManifestAttribute( m, entries, "Implementation-URL", project.getUrl() );
- }
+ handleImplementationEntries( project, entries, m );
}
String mainClass = config.getMainClass();
@@ -430,57 +375,134 @@
addManifestAttribute( m, entries, "Main-Class", mainClass );
}
- // Added extensions
if ( config.isAddExtensions() )
{
- // TODO: this is only for applets - should we distinguish them as a packaging?
- StringBuilder extensionsList = new StringBuilder();
- Set<Artifact> artifacts = (Set<Artifact>) project.getArtifacts();
+ handleExtensions( project, entries, m );
+ }
- for ( Artifact artifact : artifacts )
- {
- if ( !Artifact.SCOPE_TEST.equals( artifact.getScope() ) )
- {
- if ( "jar".equals( artifact.getType() ) )
- {
- if ( extensionsList.length() > 0 )
- {
- extensionsList.append( " " );
- }
- extensionsList.append( artifact.getArtifactId() );
- }
- }
- }
+ return m;
+ }
- if ( extensionsList.length() > 0 )
- {
- addManifestAttribute( m, entries, "Extension-List", extensionsList.toString() );
- }
+ private void handleExtraExpression( Artifact artifact, List<ValueSource> valueSources )
+ {
+ valueSources.add( new PrefixedObjectValueSource( ARTIFACT_EXPRESSION_PREFIXES, artifact,
+ true ) );
+ valueSources.add( new PrefixedObjectValueSource( ARTIFACT_EXPRESSION_PREFIXES,
+ artifact.getArtifactHandler(), true ) );
- for ( Object artifact1 : artifacts )
+ Properties extraExpressions = new Properties();
+ // FIXME: This query method SHOULD NOT affect the internal
+ // state of the artifact version, but it does.
+ if ( !artifact.isSnapshot() )
+ {
+ extraExpressions.setProperty( "baseVersion", artifact.getVersion() );
+ }
+
+ extraExpressions.setProperty( "groupIdPath", artifact.getGroupId().replace( '.', '/' ) );
+ if ( StringUtils.isNotEmpty( artifact.getClassifier() ) )
+ {
+ extraExpressions.setProperty( "dashClassifier", "-" + artifact.getClassifier() );
+ extraExpressions.setProperty( "dashClassifier?", "-" + artifact.getClassifier() );
+ }
+ else
+ {
+ extraExpressions.setProperty( "dashClassifier", "" );
+ extraExpressions.setProperty( "dashClassifier?", "" );
+ }
+ valueSources.add( new PrefixedPropertiesValueSource( ARTIFACT_EXPRESSION_PREFIXES,
+ extraExpressions, true ) );
+ }
+
+ private void handleExtensions( MavenProject project, Map<String, String> entries, Manifest m )
+ throws ManifestException
+ {
+ // TODO: this is only for applets - should we distinguish them as a packaging?
+ StringBuilder extensionsList = new StringBuilder();
+ Set<Artifact> artifacts = (Set<Artifact>) project.getArtifacts();
+
+ for ( Artifact artifact : artifacts )
+ {
+ if ( !Artifact.SCOPE_TEST.equals( artifact.getScope() ) )
{
- // TODO: the correct solution here would be to have an extension type, and to read
- // the real extension values either from the artifact's manifest or some part of the POM
- Artifact artifact = (Artifact) artifact1;
if ( "jar".equals( artifact.getType() ) )
{
- String artifactId = artifact.getArtifactId().replace( '.', '_' );
- String ename = artifactId + "-Extension-Name";
- addManifestAttribute( m, entries, ename, artifact.getArtifactId() );
- String iname = artifactId + "-Implementation-Version";
- addManifestAttribute( m, entries, iname, artifact.getVersion() );
-
- if ( artifact.getRepository() != null )
+ if ( extensionsList.length() > 0 )
{
- iname = artifactId + "-Implementation-URL";
- String url = artifact.getRepository().getUrl() + "/" + artifact.toString();
- addManifestAttribute( m, entries, iname, url );
+ extensionsList.append( " " );
}
+ extensionsList.append( artifact.getArtifactId() );
}
}
}
- return m;
+ if ( extensionsList.length() > 0 )
+ {
+ addManifestAttribute( m, entries, "Extension-List", extensionsList.toString() );
+ }
+
+ for ( Object artifact1 : artifacts )
+ {
+ // TODO: the correct solution here would be to have an extension type, and to read
+ // the real extension values either from the artifact's manifest or some part of the POM
+ Artifact artifact = (Artifact) artifact1;
+ if ( "jar".equals( artifact.getType() ) )
+ {
+ String artifactId = artifact.getArtifactId().replace( '.', '_' );
+ String ename = artifactId + "-Extension-Name";
+ addManifestAttribute( m, entries, ename, artifact.getArtifactId() );
+ String iname = artifactId + "-Implementation-Version";
+ addManifestAttribute( m, entries, iname, artifact.getVersion() );
+
+ if ( artifact.getRepository() != null )
+ {
+ iname = artifactId + "-Implementation-URL";
+ String url = artifact.getRepository().getUrl() + "/" + artifact.toString();
+ addManifestAttribute( m, entries, iname, url );
+ }
+ }
+ }
+ }
+
+ private void handleImplementationEntries( MavenProject project, Map<String, String> entries, Manifest m )
+ throws ManifestException
+ {
+ addManifestAttribute( m, entries, "Implementation-Title", project.getName() );
+ addManifestAttribute( m, entries, "Implementation-Version", project.getVersion() );
+ // MJAR-5
+ addManifestAttribute( m, entries, "Implementation-Vendor-Id", project.getGroupId() );
+
+ if ( project.getOrganization() != null )
+ {
+ addManifestAttribute( m, entries, "Implementation-Vendor", project.getOrganization().getName() );
+ }
+
+ if ( project.getUrl() != null )
+ {
+ addManifestAttribute( m, entries, "Implementation-URL", project.getUrl() );
+ }
+ }
+
+ private void handleSpecificationEntries( MavenProject project, Map<String, String> entries, Manifest m )
+ throws ManifestException
+ {
+ addManifestAttribute( m, entries, "Specification-Title", project.getName() );
+
+ try
+ {
+ ArtifactVersion version = project.getArtifact().getSelectedVersion();
+ String specVersion = String.format( "%s.%s", version.getMajorVersion(), version.getMinorVersion() );
+ addManifestAttribute( m, entries, "Specification-Version", specVersion );
+ }
+ catch ( OverConstrainedVersionException e )
+ {
+ throw new ManifestException( "Failed to get selected artifact version to calculate"
+ + " the specification version: " + e.getMessage() );
+ }
+
+ if ( project.getOrganization() != null )
+ {
+ addManifestAttribute( m, entries, "Specification-Vendor", project.getOrganization().getName() );
+ }
}
private void addCustomEntries( Manifest m, Map<String, String> entries, ManifestConfiguration config )
diff --git a/src/test/java/org/apache/maven/archiver/MavenArchiverTest.java b/src/test/java/org/apache/maven/archiver/MavenArchiverTest.java
index db7e4f2..bf1c68b 100644
--- a/src/test/java/org/apache/maven/archiver/MavenArchiverTest.java
+++ b/src/test/java/org/apache/maven/archiver/MavenArchiverTest.java
@@ -111,12 +111,6 @@
assertNotNull( manifest.getMainAttributes() );
- for ( Map.Entry<String, Attributes> entry : manifest.getEntries().entrySet() )
- {
- System.out.println( entry.getKey() + " " + entry.getValue().getValue( "Extension-List" ) );
-
- }
-
assertEquals( null, manifest.getMainAttributes().getValue( "Extension-List" ) );
MockArtifact artifact1 = new MockArtifact();