Author: simoneg
Date: Sat Aug 29 14:56:28 2009
New Revision: 809140

URL: http://svn.apache.org/viewvc?rev=809140&view=rev
Log:
LABS-423 : always override output location of source folders

Modified:
    
labs/magma/trunk/magma-eclipse/src/org/apache/magma/tools/magmaeclipse/basics/MagmaPDEUtils.java

Modified: 
labs/magma/trunk/magma-eclipse/src/org/apache/magma/tools/magmaeclipse/basics/MagmaPDEUtils.java
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/magma-eclipse/src/org/apache/magma/tools/magmaeclipse/basics/MagmaPDEUtils.java?rev=809140&r1=809139&r2=809140&view=diff
==============================================================================
--- 
labs/magma/trunk/magma-eclipse/src/org/apache/magma/tools/magmaeclipse/basics/MagmaPDEUtils.java
 (original)
+++ 
labs/magma/trunk/magma-eclipse/src/org/apache/magma/tools/magmaeclipse/basics/MagmaPDEUtils.java
 Sat Aug 29 14:56:28 2009
@@ -464,28 +464,38 @@
                // Create src/main/java and src/test/java
                try {
                        IClasspathEntry[] nrc = null;
+                       IClasspathEntry nse = null;
+
+                       // src/test/java
                        IFolder srctestjavafld = 
project.getFolder("src/test/java");
                        if (!srctestjavafld.exists()) {
                                MFileUtils.createEntire(srctestjavafld, true, 
true, null);
                        }
-                       if (!isOnClasspath(prj, "src/test/java")) {
-                               IClasspathEntry nse = JavaCore
-                                       .newSourceEntry(
-                                                       
srctestjavafld.getFullPath(),
-                                                       new IPath[] {},
-                                                       outtest.getFullPath());
-                               nrc = addToClasspath(prj, nrc, nse);
+                       
+                       if ((nse = isOnClasspath(prj, "src/test/java")) != 
null) {
+                               nrc = removeFromClasspath(prj, nrc, nse);
                        }
+                       nse = JavaCore
+                               .newSourceEntry(
+                                               srctestjavafld.getFullPath(),
+                                               new IPath[] {},
+                                               outtest.getFullPath());
+                       nrc = addToClasspath(prj, nrc, nse);
 
+                       // src/main/java                        
                        IFolder srcmainjavafld = 
project.getFolder("src/main/java");
                        if (!srcmainjavafld.exists()) {
                                MFileUtils.createEntire(srcmainjavafld, true, 
true, null);
                        }
-                       if (!isOnClasspath(prj, "src/main/java")) {
-                               IClasspathEntry nse = 
JavaCore.newSourceEntry(srcmainjavafld
-                                               .getFullPath());
-                               nrc = addToClasspath(prj, nrc, nse);
+                       
+                       if ((nse = isOnClasspath(prj, "src/main/java")) != 
null) {
+                               nrc = removeFromClasspath(prj, nrc, nse);
                        }
+                       nse = JavaCore.newSourceEntry(srcmainjavafld
+                                       .getFullPath());
+                       nrc = addToClasspath(prj, nrc, nse);
+                       
+                       // sort it
                        if (nrc != null) {
                                sortClasspath(nrc);
                                prj.setRawClasspath(nrc, mon);
@@ -615,7 +625,7 @@
                                                        
linkfolder.setResourceAttributes(attrs);
                                                }
                                                // If it is not on classpath 
(just created, or was removed before) readd it
-                                               if (!isOnClasspath(prj, 
"magmalnk-" + depname)) {
+                                               if (isOnClasspath(prj, 
"magmalnk-" + depname) == null) {
                                                        IClasspathEntry ent = 
JavaCore.newSourceEntry(
                                                                        
linkfolder.getFullPath(), new IPath[] {},
                                                                        new 
IPath[] {}, linkoutfld.getFullPath());
@@ -711,6 +721,31 @@
        }
 
        /**
+        * Removes a single entry from a classpath array.
+        * @param prj The project
+        * @param rawClasspath The existing classpath, if null it will be taken 
from the project.
+        * @param nse The entry to remove
+        * @return The modified classpath
+        * @throws JavaModelException
+        */
+       private static IClasspathEntry[] removeFromClasspath(IJavaProject prj,
+                       IClasspathEntry[] rawClasspath, IClasspathEntry nse)
+                       throws JavaModelException {
+               if (rawClasspath == null) {
+                       rawClasspath = prj.getRawClasspath();
+               }
+               IClasspathEntry[] nrawClasspath = new 
IClasspathEntry[rawClasspath.length - 1];
+               int j = 0;
+               for (int i = 0; i < rawClasspath.length; i++) {
+                       if (rawClasspath[i] != nse) {
+                               nrawClasspath[j++] = rawClasspath[i];
+                       }
+               }
+               return nrawClasspath;
+       }
+
+       
+       /**
         * Checks if a classpath entry containing the given string in its path
         * is present on the project.
         * @param prj The project
@@ -718,15 +753,15 @@
         * @return true if found.
         * @throws JavaModelException
         */
-       private static boolean isOnClasspath(IJavaProject prj, String part)
+       private static IClasspathEntry isOnClasspath(IJavaProject prj, String 
part)
                        throws JavaModelException {
                IClasspathEntry[] rawClasspath = prj.getRawClasspath();
                for (int i = 0; i < rawClasspath.length; i++) {
                        if (rawClasspath[i].getPath().toString().indexOf(part) 
!= -1) {
-                               return true;
+                               return rawClasspath[i];
                        }
                }
-               return false;
+               return null;
        }
        
        /**



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to