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]