Author: aheritier
Date: Thu Nov 29 19:02:08 2007
New Revision: 599684

URL: http://svn.apache.org/viewvc?rev=599684&view=rev
Log:
MECLIPSE-152 : Write .classpath (and related) with ordered dependencies
Submitted by: Holger Hoffstätte

Modified:
    
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseClasspathWriter.java
    
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseManifestWriter.java
    
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseOSGiManifestWriter.java
    
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseProjectWriter.java
    
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseWriterConfig.java
    
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/rad/RadApplicationXMLWriter.java
    
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/rad/RadLibCopier.java
    
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/rad/RadManifestWriter.java
    
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/rad/RadWebSettingsWriter.java
    
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/wtp/AbstractWtpResourceWriter.java
    
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/wtp/EclipseWtpApplicationXMLWriter.java

Modified: 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseClasspathWriter.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseClasspathWriter.java?rev=599684&r1=599683&r2=599684&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseClasspathWriter.java
 (original)
+++ 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseClasspathWriter.java
 Thu Nov 29 19:02:08 2007
@@ -340,9 +340,11 @@
         // The dependencies
         // 
----------------------------------------------------------------------
         Set addedDependencies = new HashSet();
-        for ( int j = 0; j < config.getDeps().length; j++ )
+        // TODO if (..magic property equals orderDependencies..)
+        IdeDependency[] depsToWrite = config.getDepsOrdered();
+        for ( int j = 0; j < depsToWrite.length; j++ )
         {
-            IdeDependency dep = config.getDeps()[j];
+            IdeDependency dep = depsToWrite[j];
 
             if ( dep.isAddedToClasspath() )
             {

Modified: 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseManifestWriter.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseManifestWriter.java?rev=599684&r1=599683&r2=599684&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseManifestWriter.java
 (original)
+++ 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseManifestWriter.java
 Thu Nov 29 19:02:08 2007
@@ -332,7 +332,7 @@
     private String constructManifestClasspath()
     {
         StringBuffer stringBuffer = new StringBuffer();
-        IdeDependency[] deps = this.config.getDeps();
+        IdeDependency[] deps = this.config.getDepsOrdered();
 
         for ( int index = 0; index < deps.length; index++ )
         {

Modified: 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseOSGiManifestWriter.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseOSGiManifestWriter.java?rev=599684&r1=599683&r2=599684&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseOSGiManifestWriter.java
 (original)
+++ 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseOSGiManifestWriter.java
 Thu Nov 29 19:02:08 2007
@@ -241,7 +241,7 @@
         // @todo handle expanded plugins
         bundleClasspathSb.append( " ." );
 
-        IdeDependency[] deps = config.getDeps();
+        IdeDependency[] deps = config.getDepsOrdered();
 
         // since Manifest is supposed to be in SVN, having the order of 
classpath entries shuffled at each run is very
         // annoying. For now just sort them by using groupId/artifactId

Modified: 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseProjectWriter.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseProjectWriter.java?rev=599684&r1=599683&r2=599684&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseProjectWriter.java
 (original)
+++ 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseProjectWriter.java
 Thu Nov 29 19:02:08 2007
@@ -188,9 +188,9 @@
         // referenced projects should not be added for plugins
         if ( !config.isPde() )
         {
-            for ( int j = 0; j < config.getDeps().length; j++ )
+            for ( int j = 0; j < config.getDepsOrdered().length; j++ )
             {
-                IdeDependency dep = config.getDeps()[j];
+                IdeDependency dep = config.getDepsOrdered()[j];
                 if ( dep.isReferencedProject() )
                 {
                     writer.startElement( "project" ); //$NON-NLS-1$
@@ -224,7 +224,7 @@
 
         boolean addLinks = !config.getProjectBaseDir().equals( 
config.getEclipseProjectDirectory() );
 
-        if ( addLinks || ( config.isPde() && config.getDeps().length > 0 ) )
+        if ( addLinks || ( config.isPde() && config.getDepsOrdered().length > 
0 ) )
         {
             writer.startElement( "linkedResources" ); //$NON-NLS-1$
 
@@ -248,9 +248,9 @@
 
             if ( config.isPde() )
             {
-                for ( int j = 0; j < config.getDeps().length; j++ )
+                for ( int j = 0; j < config.getDepsOrdered().length; j++ )
                 {
-                    IdeDependency dep = config.getDeps()[j];
+                    IdeDependency dep = config.getDepsOrdered()[j];
 
                     if ( dep.isAddedToClasspath() && !dep.isProvided() && 
!dep.isReferencedProject() &&
                         !dep.isTestDependency() && !dep.isOsgiBundle() )

Modified: 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseWriterConfig.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseWriterConfig.java?rev=599684&r1=599683&r2=599684&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseWriterConfig.java
 (original)
+++ 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseWriterConfig.java
 Thu Nov 29 19:02:08 2007
@@ -19,6 +19,8 @@
 package org.apache.maven.plugin.eclipse.writers;
 
 import java.io.File;
+import java.util.Arrays;
+import java.util.Comparator;
 import java.util.List;
 import java.util.Map;
 
@@ -62,7 +64,12 @@
     /**
      * List of IDE dependencies.
      */
-    private IdeDependency[] deps;
+    private IdeDependency[] deps = new IdeDependency[0];
+
+    /**
+     * List of IDE dependencies ordered.
+     */
+    private IdeDependency[] orderedDeps = new IdeDependency[0];
 
     /**
      * Source directories.
@@ -155,6 +162,24 @@
     public void setDeps( IdeDependency[] deps )
     {
         this.deps = deps;
+        if ( deps != null )
+        {
+            // TODO get the right comparator depending on 
orderDependencies={name,nearness..};
+            // if none specified it could use a NullComparator to reduce the 
number of
+            // conditions that have to be checked
+            Comparator depsByArtifactId = new Comparator()
+            {
+                public int compare( Object o1, Object o2 )
+                {
+                    return ( (IdeDependency) o1 
).getArtifactId().compareToIgnoreCase(
+                                                                               
        ( (IdeDependency) o2 ).getArtifactId() );
+                }
+            };
+
+            orderedDeps = new IdeDependency[deps.length];
+            System.arraycopy( deps, 0, orderedDeps, 0, deps.length );
+            Arrays.sort( orderedDeps, depsByArtifactId );
+        }
     }
 
     /**
@@ -511,6 +536,14 @@
     public void setWtpVersion( float wtpVersion )
     {
         this.wtpVersion = wtpVersion;
+    }
+
+    /**
+     * @return an ordered list of dependencies
+     */
+    public IdeDependency[] getDepsOrdered()
+    {
+        return orderedDeps;
     }
 
 }

Modified: 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/rad/RadApplicationXMLWriter.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/rad/RadApplicationXMLWriter.java?rev=599684&r1=599683&r2=599684&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/rad/RadApplicationXMLWriter.java
 (original)
+++ 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/rad/RadApplicationXMLWriter.java
 Thu Nov 29 19:02:08 2007
@@ -157,7 +157,7 @@
                 IdeUtils.getPluginConfigurationDom( config.getProject(), 
JeeUtils.ARTIFACT_MAVEN_EAR_PLUGIN,
                                                     new String[] { "modules", 
"webModule" } );
 
-            IdeDependency[] deps = config.getDeps();
+            IdeDependency[] deps = config.getDepsOrdered();
             for ( int index = 0; index < deps.length; index++ )
             {
                 updateApplicationXml( applicationXmlDom, modulemapsXmlDom, 
deps[index] );

Modified: 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/rad/RadLibCopier.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/rad/RadLibCopier.java?rev=599684&r1=599683&r2=599684&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/rad/RadLibCopier.java
 (original)
+++ 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/rad/RadLibCopier.java
 Thu Nov 29 19:02:08 2007
@@ -50,7 +50,7 @@
     public void write()
         throws MojoExecutionException
     {
-        IdeDependency[] deps = config.getDeps();
+        IdeDependency[] deps = config.getDepsOrdered();
 
         String packaging = config.getPackaging();
         if ( Constants.PROJECT_PACKAGING_EAR.equals( packaging ) )

Modified: 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/rad/RadManifestWriter.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/rad/RadManifestWriter.java?rev=599684&r1=599683&r2=599684&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/rad/RadManifestWriter.java
 (original)
+++ 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/rad/RadManifestWriter.java
 Thu Nov 29 19:02:08 2007
@@ -287,7 +287,7 @@
     private String constructManifestClasspath()
     {
         StringBuffer stringBuffer = new StringBuffer();
-        IdeDependency[] deps = config.getDeps();
+        IdeDependency[] deps = config.getDepsOrdered();
 
         for ( int index = 0; index < deps.length; index++ )
         {

Modified: 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/rad/RadWebSettingsWriter.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/rad/RadWebSettingsWriter.java?rev=599684&r1=599683&r2=599684&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/rad/RadWebSettingsWriter.java
 (original)
+++ 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/rad/RadWebSettingsWriter.java
 Thu Nov 29 19:02:08 2007
@@ -170,7 +170,7 @@
         writer.startElement( WEBSETTINGS_LIBMODULES );
 
         // iterate relevant dependencies (non-test, non-provided, project)
-        IdeDependency[] deps = config.getDeps();
+        IdeDependency[] deps = config.getDepsOrdered();
         if ( deps != null )
         {
             for ( int i = 0; i < deps.length; i++ )

Modified: 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/wtp/AbstractWtpResourceWriter.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/wtp/AbstractWtpResourceWriter.java?rev=599684&r1=599683&r2=599684&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/wtp/AbstractWtpResourceWriter.java
 (original)
+++ 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/wtp/AbstractWtpResourceWriter.java
 Thu Nov 29 19:02:08 2007
@@ -260,9 +260,9 @@
             deployDir = "/WEB-INF/lib";
         }
         // dependencies
-        for ( int j = 0; j < config.getDeps().length; j++ )
+        for ( int j = 0; j < config.getDepsOrdered().length; j++ )
         {
-            IdeDependency dep = config.getDeps()[j];
+            IdeDependency dep = config.getDepsOrdered()[j];
             String type = dep.getType();
 
             // NB war is needed for ear projects, we suppose nobody adds a war 
dependency to a war/jar project

Modified: 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/wtp/EclipseWtpApplicationXMLWriter.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/wtp/EclipseWtpApplicationXMLWriter.java?rev=599684&r1=599683&r2=599684&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/wtp/EclipseWtpApplicationXMLWriter.java
 (original)
+++ 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/wtp/EclipseWtpApplicationXMLWriter.java
 Thu Nov 29 19:02:08 2007
@@ -144,7 +144,7 @@
                 IdeUtils.getPluginConfigurationDom( config.getProject(), 
JeeUtils.ARTIFACT_MAVEN_EAR_PLUGIN,
                                                     new String[] { "modules", 
"webModule" } );
 
-            IdeDependency[] deps = this.config.getDeps();
+            IdeDependency[] deps = this.config.getDepsOrdered();
             for ( int index = 0; index < deps.length; index++ )
             {
                 updateApplicationXml( applicationXmlDom, modulemapsXmlDom, 
deps[index] );


Reply via email to