Author: aheritier
Date: Mon Feb 18 08:09:11 2008
New Revision: 628794

URL: http://svn.apache.org/viewvc?rev=628794&view=rev
Log:
MECLIPSE-379 : When downloading sources and javadocs dependency classifier is 
not respected.

Added:
    
maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/project-45/
    
maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/project-45/expected/
    
maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/project-45/expected/.classpath
   (with props)
    
maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/project-45/expected/.project
   (with props)
    
maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/project-45/pom.xml
   (with props)
Modified:
    
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/ide/AbstractIdeSupportMojo.java
    
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/ide/IdeUtils.java
    
maven/plugins/trunk/maven-eclipse-plugin/src/test/java/org/apache/maven/plugin/eclipse/EclipsePluginTest.java

Modified: 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/ide/AbstractIdeSupportMojo.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/ide/AbstractIdeSupportMojo.java?rev=628794&r1=628793&r2=628794&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/ide/AbstractIdeSupportMojo.java
 (original)
+++ 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/ide/AbstractIdeSupportMojo.java
 Mon Feb 18 08:09:11 2008
@@ -950,7 +950,7 @@
      * artifacts (depending on the <code>classifier</code>) are attached to 
the dependency.
      * 
      * @param deps resolved dependencies
-     * @param classifier the classifier we are looking for (either 
<code>sources</code> or <code>javadoc</code>)
+     * @param inClassifier the classifier we are looking for (either 
<code>sources</code> or <code>javadoc</code>)
      * @param includeRemoteRepositories flag whether we should search remote 
repositories for the artifacts or not
      * @param unavailableArtifactsCache cache of unavailable artifacts
      * @return the list of dependencies for which the required artifact was 
not found
@@ -975,39 +975,38 @@
                 continue;
             }
 
-            // MECLIPSE-151 - if the dependency is a test, get the correct 
classifier for it. (ignore for javadocs)
-            String classifier = inClassifier;
-            if ( "sources".equals( classifier ) && "tests".equals( 
dependency.getClassifier() ) )
-            {
-                classifier = "test-sources";
-            }
-
             if ( getLog().isDebugEnabled() )
             {
                 getLog().debug(
                                 "Searching for sources for " + 
dependency.getId() + ":" + dependency.getClassifier() +
-                                    " at " + dependency.getId() + ":" + 
classifier );
+                                    " at " + dependency.getId() + ":" + 
inClassifier );
             }
-            if ( !unavailableArtifactsCache.containsKey( dependency.getId() + 
":" + classifier ) )
+
+            String key =
+                dependency.getClassifier() == null ? dependency.getId() + ":" 
+ inClassifier : dependency.getId() +
+                    ":" + inClassifier + ":" + dependency.getClassifier();
+
+            if ( !unavailableArtifactsCache.containsKey( key ) )
             {
                 Artifact artifact =
                     IdeUtils.resolveArtifactWithClassifier( 
dependency.getGroupId(), dependency.getArtifactId(),
-                                                            
dependency.getVersion(), classifier, localRepository,
-                                                            artifactResolver, 
artifactFactory, remoteRepos, getLog() );
+                                                            
dependency.getVersion(), dependency.getClassifier(),
+                                                            inClassifier, 
localRepository, artifactResolver,
+                                                            artifactFactory, 
remoteRepos, getLog() );
                 if ( artifact.isResolved() )
                 {
-                    if ( "sources".equals( classifier ) || 
"test-sources".equals( classifier ) )
+                    if ( "sources".equals( inClassifier ) )
                     {
                         dependency.setSourceAttachment( artifact.getFile() );
                     }
-                    else if ( "javadoc".equals( classifier ) )
+                    else if ( "javadoc".equals( inClassifier ) )
                     {
                         dependency.setJavadocAttachment( artifact.getFile() );
                     }
                 }
                 else
                 {
-                    unavailableArtifactsCache.put( dependency.getId() + ":" + 
classifier, Boolean.TRUE.toString() );
+                    unavailableArtifactsCache.put( key, 
Boolean.TRUE.toString() );
                     // add the dependencies to the list
                     // of those lacking the required
                     // artifact

Modified: 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/ide/IdeUtils.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/ide/IdeUtils.java?rev=628794&r1=628793&r2=628794&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/ide/IdeUtils.java
 (original)
+++ 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/ide/IdeUtils.java
 Mon Feb 18 08:09:11 2008
@@ -304,21 +304,41 @@
     }
 
     public static Artifact resolveArtifactWithClassifier( String groupId, 
String artifactId, String version,
-                                                          String classifier, 
ArtifactRepository localRepository,
+                                                          String 
depClassifier, String inClassifier,
+                                                          ArtifactRepository 
localRepository,
                                                           ArtifactResolver 
artifactResolver,
                                                           ArtifactFactory 
artifactFactory, List remoteRepos, Log log )
 
     {
-        String type = classifier;
+        String type = null;
 
         // the "sources" classifier maps to the "java-source" type
-        if ( "sources".equals( type ) || "test-sources".equals( type ) ) 
//$NON-NLS-1$
+        if ( "sources".equals( inClassifier ) )
         {
-            type = "java-source"; //$NON-NLS-1$
+            type = "java-source";
+        }
+        else
+        {
+            type = inClassifier;
+        }
+
+        String finalClassifier = null;
+        if ( depClassifier == null )
+        {
+            finalClassifier = inClassifier;
+        }
+        else if ( "sources".equals( inClassifier ) && "tests".equals( 
depClassifier ) )
+        {
+            // MECLIPSE-151 - if the dependency is a test, get the correct 
classifier for it. (ignore for javadocs)
+            finalClassifier = "test-sources";
+        }
+        else
+        {
+            finalClassifier = depClassifier + "-" + inClassifier;
         }
 
         Artifact resolvedArtifact =
-            artifactFactory.createArtifactWithClassifier( groupId, artifactId, 
version, type, classifier );
+            artifactFactory.createArtifactWithClassifier( groupId, artifactId, 
version, type, finalClassifier );
 
         try
         {
@@ -330,8 +350,9 @@
         }
         catch ( ArtifactResolutionException e )
         {
-            String message = Messages.getString( "errorresolving", new 
Object[] { //$NON-NLS-1$
-                                                 classifier, 
resolvedArtifact.getId(), e.getMessage() } );
+            String message =
+                Messages.getString( "errorresolving", new Object[] { 
finalClassifier, resolvedArtifact.getId(),
+                    e.getMessage() } );
 
             log.warn( message );
         }
@@ -347,11 +368,11 @@
             version = IdeUtils.getCompilerSourceVersion( project );
         }
 
-        if ( "1.5".equals( version ) ) //$NON-NLS-1$ //$NON-NLS-2$
+        if ( "1.5".equals( version ) ) //$NON-NLS-1$ 
         {
-            version = IdeUtils.JAVA_5_0;// see MECLIPSE-47 eclipse only accept 
5.0 as a valid version //$NON-NLS-1$
+            version = IdeUtils.JAVA_5_0;// see MECLIPSE-47 eclipse only accept 
5.0 as a valid version
         }
-        else if ( "1.6".equals( version ) ) //$NON-NLS-1$ //$NON-NLS-2$
+        else if ( "1.6".equals( version ) ) //$NON-NLS-1$ 
         {
             version = IdeUtils.JAVA_6_0;
         }
@@ -360,7 +381,7 @@
             version = version + ".0";// 5->5.0 6->6.0 7->7.0 //$NON-NLS-1$
         }
 
-        return version == null ? IdeUtils.JAVA_1_4 : version; //$NON-NLS-1$
+        return version == null ? IdeUtils.JAVA_1_4 : version;
     }
 
     public static String toRelativeAndFixSeparator( File basedir, File 
fileToAdd, boolean replaceSlashesWithDashes )

Modified: 
maven/plugins/trunk/maven-eclipse-plugin/src/test/java/org/apache/maven/plugin/eclipse/EclipsePluginTest.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-eclipse-plugin/src/test/java/org/apache/maven/plugin/eclipse/EclipsePluginTest.java?rev=628794&r1=628793&r2=628794&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-eclipse-plugin/src/test/java/org/apache/maven/plugin/eclipse/EclipsePluginTest.java
 (original)
+++ 
maven/plugins/trunk/maven-eclipse-plugin/src/test/java/org/apache/maven/plugin/eclipse/EclipsePluginTest.java
 Mon Feb 18 08:09:11 2008
@@ -522,6 +522,18 @@
         testProject( "project-44" );
     }
 
+    /**
+     * [MECLIPSE-379] When downloading sources and javadocs dependency 
classifier is not respected.
+     * 
+     * @since 2.5
+     * @throws Exception
+     */
+    public void testProject45()
+        throws Exception
+    {
+        testProject( "project-45" );
+    }
+
     public void testJeeSimple()
         throws Exception
     {

Added: 
maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/project-45/expected/.classpath
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/project-45/expected/.classpath?rev=628794&view=auto
==============================================================================
--- 
maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/project-45/expected/.classpath
 (added)
+++ 
maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/project-45/expected/.classpath
 Mon Feb 18 08:09:11 2008
@@ -0,0 +1,10 @@
+<classpath>
+  <classpathentry kind="output" path="target/classes"/>
+  <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+  <classpathentry kind="var" 
path="M2_REPO/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar"
 
sourcepath="M2_REPO/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0-sources.jar"/>
+  <classpathentry kind="var" 
path="M2_REPO/commons-collections/commons-collections/3.2/commons-collections-3.2.jar"
 
sourcepath="M2_REPO/commons-collections/commons-collections/3.2/commons-collections-3.2-sources.jar"/>
+  <classpathentry kind="var" 
path="M2_REPO/commons-lang/commons-lang/2.3/commons-lang-2.3.jar" 
sourcepath="M2_REPO/commons-lang/commons-lang/2.3/commons-lang-2.3-sources.jar"/>
+  <classpathentry kind="var" 
path="M2_REPO/commons-logging/commons-logging/1.1/commons-logging-1.1.jar" 
sourcepath="M2_REPO/commons-logging/commons-logging/1.1/commons-logging-1.1-sources.jar"/>
+  <classpathentry kind="var" 
path="M2_REPO/net/sf/ezmorph/ezmorph/1.0.4/ezmorph-1.0.4.jar" 
sourcepath="M2_REPO/net/sf/ezmorph/ezmorph/1.0.4/ezmorph-1.0.4-sources.jar"/>
+  <classpathentry kind="var" 
path="M2_REPO/net/sf/json-lib/json-lib/2.2/json-lib-2.2-jdk15.jar" 
sourcepath="M2_REPO/net/sf/json-lib/json-lib/2.2/json-lib-2.2-jdk15-sources.jar"/>
+</classpath>
\ No newline at end of file

Propchange: 
maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/project-45/expected/.classpath
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/project-45/expected/.classpath
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: 
maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/project-45/expected/.project
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/project-45/expected/.project?rev=628794&view=auto
==============================================================================
--- 
maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/project-45/expected/.project
 (added)
+++ 
maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/project-45/expected/.project
 Mon Feb 18 08:09:11 2008
@@ -0,0 +1,13 @@
+<projectDescription>
+  <name>maven-eclipse-plugin-test-project-45</name>
+  <comment/>
+  <projects/>
+  <buildSpec>
+    <buildCommand>
+      <name>org.eclipse.jdt.core.javabuilder</name>
+    </buildCommand>
+  </buildSpec>
+  <natures>
+    <nature>org.eclipse.jdt.core.javanature</nature>
+  </natures>
+</projectDescription>
\ No newline at end of file

Propchange: 
maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/project-45/expected/.project
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/project-45/expected/.project
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: 
maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/project-45/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/project-45/pom.xml?rev=628794&view=auto
==============================================================================
--- 
maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/project-45/pom.xml
 (added)
+++ 
maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/project-45/pom.xml
 Mon Feb 18 08:09:11 2008
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>eclipse</groupId>
+  <artifactId>maven-eclipse-plugin-test-project-45</artifactId>
+  <version>88.0</version>
+  <name>Maven</name>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-eclipse-plugin</artifactId>
+        <version>test</version>
+        <configuration>
+          <downloadSources>true</downloadSources>
+          <!-- We cannot test with javadocs because it creates absolute paths 
to be compatible with oldest eclipse releases -->
+          <downloadJavadocs>false</downloadJavadocs>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+  <dependencies>
+    <dependency>
+      <groupId>net.sf.json-lib</groupId>
+      <artifactId>json-lib</artifactId>
+      <version>2.2</version>
+      <classifier>jdk15</classifier>
+    </dependency>
+  </dependencies>
+</project>

Propchange: 
maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/project-45/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/project-45/pom.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"


Reply via email to