You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by hi...@apache.org on 2009/09/15 15:05:35 UTC
svn commit: r815310 - in /ant/ivy/ivyde/trunk: CHANGES.txt
org.apache.ivyde.eclipse/META-INF/MANIFEST.MF
org.apache.ivyde.eclipse/plugin.xml
org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/FixedRuntimeClasspathEntryResolver.java
Author: hibou
Date: Tue Sep 15 13:05:35 2009
New Revision: 815310
URL: http://svn.apache.org/viewvc?rev=815310&view=rev
Log:
IVYDE-193 : add the workaround the Eclipse bug into IvyDE
Added:
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/FixedRuntimeClasspathEntryResolver.java (with props)
Modified:
ant/ivy/ivyde/trunk/CHANGES.txt
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/META-INF/MANIFEST.MF
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/plugin.xml
Modified: ant/ivy/ivyde/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/CHANGES.txt?rev=815310&r1=815309&r2=815310&view=diff
==============================================================================
--- ant/ivy/ivyde/trunk/CHANGES.txt (original)
+++ ant/ivy/ivyde/trunk/CHANGES.txt Tue Sep 15 13:05:35 2009
@@ -13,6 +13,7 @@
- FIX: Resolve in Workspace fails to find projects under certain conditions (IVYDE-186) (thanks to Adam Karl)
- FIX: The gui wizard crash when adding a IvyDE Managed Dependencies library to a .launch file's classpath (IVYDE-200)
- FIX: Ivy Library removed from the list of Java EE Module Dependencies after changing its properties (IVYDE-178)
+- FIX: Ivy Classpath Contributed to Dependent Projects When not Exported (IVYDE-193)
version 2.0.0 final
==========================
Modified: ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/META-INF/MANIFEST.MF
URL: http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/META-INF/MANIFEST.MF?rev=815310&r1=815309&r2=815310&view=diff
==============================================================================
--- ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/META-INF/MANIFEST.MF (original)
+++ ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/META-INF/MANIFEST.MF Tue Sep 15 13:05:35 2009
@@ -33,6 +33,8 @@
org.eclipse.ui.console,
org.apache.ivy,
org.eclipse.help,
- org.eclipse.wst.xml.core
+ org.eclipse.wst.xml.core,
+ org.eclipse.debug.core,
+ org.eclipse.jdt.launching
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: J2SE-1.4
Modified: ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/plugin.xml
URL: http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/plugin.xml?rev=815310&r1=815309&r2=815310&view=diff
==============================================================================
--- ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/plugin.xml (original)
+++ ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/plugin.xml Tue Sep 15 13:05:35 2009
@@ -284,6 +284,15 @@
uri="platform:/plugin/org.apache.ivyde.eclipse/xsd/ivy.xsd"/>
</catalogContribution>
</extension>
+ <extension
+ point="org.eclipse.jdt.launching.runtimeClasspathEntryResolvers">
+ <runtimeClasspathEntryResolver
+ class="org.apache.ivyde.eclipse.FixedRuntimeClasspathEntryResolver"
+ container="org.apache.ivyde.eclipse.cpcontainer.IVYDE_CONTAINER"
+ id="org.apache.ivyde.eclipse.runtimeClasspathEntryResolver"
+ variable="org.apache.ivyde.eclipse.cpcontainer.IVYDE_CONTAINER">
+ </runtimeClasspathEntryResolver>
+ </extension>
<!--
Added: ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/FixedRuntimeClasspathEntryResolver.java
URL: http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/FixedRuntimeClasspathEntryResolver.java?rev=815310&view=auto
==============================================================================
--- ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/FixedRuntimeClasspathEntryResolver.java (added)
+++ ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/FixedRuntimeClasspathEntryResolver.java Tue Sep 15 13:05:35 2009
@@ -0,0 +1,135 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.ivyde.eclipse;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.jdt.core.IClasspathContainer;
+import org.eclipse.jdt.core.IClasspathEntry;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.launching.IJavaLaunchConfigurationConstants;
+import org.eclipse.jdt.launching.IRuntimeClasspathEntry;
+import org.eclipse.jdt.launching.IRuntimeClasspathEntry2;
+import org.eclipse.jdt.launching.IRuntimeClasspathEntryResolver;
+import org.eclipse.jdt.launching.IVMInstall;
+import org.eclipse.jdt.launching.JavaRuntime;
+
+public class FixedRuntimeClasspathEntryResolver implements IRuntimeClasspathEntryResolver {
+
+ public IRuntimeClasspathEntry[] resolveRuntimeClasspathEntry(IRuntimeClasspathEntry entry,
+ ILaunchConfiguration configuration) throws CoreException {
+ IJavaProject project = entry.getJavaProject();
+ if (project == null) {
+ project = JavaRuntime.getJavaProject(configuration);
+ }
+ return computeDefaultContainerEntries(entry, project);
+ }
+
+ private static IRuntimeClasspathEntry[] computeDefaultContainerEntries(
+ IRuntimeClasspathEntry entry, IJavaProject project) throws CoreException {
+ if (project == null || entry == null) {
+ // cannot resolve without entry or project context
+ return new IRuntimeClasspathEntry[0];
+ }
+ IClasspathContainer container = JavaCore.getClasspathContainer(entry.getPath(), project);
+ if (container == null) {
+ String message = "Could not resolve classpath container: " + entry.getPath().toString();
+ throw new CoreException(new Status(IStatus.ERROR, IvyPlugin.ID,
+ IJavaLaunchConfigurationConstants.ERR_INTERNAL_ERROR, message, null));
+ // execution will not reach here - exception will be thrown
+ }
+ IClasspathEntry[] cpes = container.getClasspathEntries();
+ int property = -1;
+ switch (container.getKind()) {
+ case IClasspathContainer.K_APPLICATION:
+ property = IRuntimeClasspathEntry.USER_CLASSES;
+ break;
+ case IClasspathContainer.K_DEFAULT_SYSTEM:
+ property = IRuntimeClasspathEntry.STANDARD_CLASSES;
+ break;
+ case IClasspathContainer.K_SYSTEM:
+ property = IRuntimeClasspathEntry.BOOTSTRAP_CLASSES;
+ break;
+ }
+ List resolved = new ArrayList(cpes.length);
+ List projects = new ArrayList();
+ for (int i = 0; i < cpes.length; i++) {
+ IClasspathEntry cpe = cpes[i];
+ if (cpe.getEntryKind() == IClasspathEntry.CPE_PROJECT) {
+ IProject p = ResourcesPlugin.getWorkspace().getRoot().getProject(
+ cpe.getPath().segment(0));
+ IJavaProject jp = JavaCore.create(p);
+ if (!projects.contains(jp)) {
+ projects.add(jp);
+ IRuntimeClasspathEntry classpath = JavaRuntime
+ .newProjectRuntimeClasspathEntry(jp);
+ IRuntimeClasspathEntry[] entries = JavaRuntime.resolveRuntimeClasspathEntry(
+ classpath, jp);
+ for (int j = 0; j < entries.length; j++) {
+ IRuntimeClasspathEntry e = entries[j];
+ if (!resolved.contains(e)) {
+ resolved.add(entries[j]);
+ }
+ }
+ }
+ } else if (cpe.getEntryKind() == IClasspathEntry.CPE_LIBRARY) {
+ IRuntimeClasspathEntry e = JavaRuntime.newArchiveRuntimeClasspathEntry(cpe
+ .getPath());
+ if (!resolved.contains(e)) {
+ resolved.add(e);
+ }
+ }
+ }
+ // set classpath property
+ IRuntimeClasspathEntry[] result = new IRuntimeClasspathEntry[resolved.size()];
+ for (int i = 0; i < result.length; i++) {
+ result[i] = (IRuntimeClasspathEntry) resolved.get(i);
+ result[i].setClasspathProperty(property);
+ }
+ return result;
+ }
+
+ public IRuntimeClasspathEntry[] resolveRuntimeClasspathEntry(IRuntimeClasspathEntry entry,
+ IJavaProject project) throws CoreException {
+ IRuntimeClasspathEntry2 entry2 = (IRuntimeClasspathEntry2) entry;
+ IRuntimeClasspathEntry[] entries = entry2.getRuntimeClasspathEntries(null);
+ List resolved = new ArrayList();
+ for (int i = 0; i < entries.length; i++) {
+ IRuntimeClasspathEntry[] temp = JavaRuntime.resolveRuntimeClasspathEntry(entries[i],
+ project);
+ for (int j = 0; j < temp.length; j++) {
+ resolved.add(temp[j]);
+ }
+ }
+ return (IRuntimeClasspathEntry[]) resolved.toArray(new IRuntimeClasspathEntry[resolved
+ .size()]);
+ }
+
+ public IVMInstall resolveVMInstall(IClasspathEntry entry) throws CoreException {
+ return null;
+ }
+
+}
Propchange: ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/FixedRuntimeClasspathEntryResolver.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/FixedRuntimeClasspathEntryResolver.java
------------------------------------------------------------------------------
svn:keywords = Date Revision Author HeadURL Id
Propchange: ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/FixedRuntimeClasspathEntryResolver.java
------------------------------------------------------------------------------
svn:mime-type = text/plain