Author: hibou
Date: Wed Feb 25 14:32:38 2009
New Revision: 747796

URL: http://svn.apache.org/viewvc?rev=747796&view=rev
Log:
IVYDE-35:
 - add an optional dependency on xerces
 - make the ivy resolve process thread have an IvyDE class loader in its 
context, so in Ivy the SaxParserFactory will find xerces

Modified:
    ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/META-INF/MANIFEST.MF
    
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyResolveJob.java

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=747796&r1=747795&r2=747796&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 Wed Feb 
25 14:32:38 2009
@@ -19,7 +19,8 @@
  org.apache.ivyde.eclipse.ui.preferences,
  org.apache.ivyde.eclipse.ui.views,
  org.apache.ivyde.eclipse.ui.wizards
-Require-Bundle: org.eclipse.ui,
+Require-Bundle: org.apache.xerces;resolution:=optional,
+ org.eclipse.ui,
  org.eclipse.core.runtime,
  org.eclipse.jface.text,
  org.eclipse.ui.editors,

Modified: 
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyResolveJob.java
URL: 
http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyResolveJob.java?rev=747796&r1=747795&r2=747796&view=diff
==============================================================================
--- 
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyResolveJob.java
 (original)
+++ 
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyResolveJob.java
 Wed Feb 25 14:32:38 2009
@@ -187,6 +187,10 @@
         final IStatus[] status = new IStatus[1];
         final IClasspathEntry[][] classpathEntries = new IClasspathEntry[1][];
 
+        // Ivy use the SaxParserFactory, and we want it to instanciate the 
xerces parser which is in
+        // the dependencies of IvyDE, so accessible via the current classloader
+        ClassLoader old = Thread.currentThread().getContextClassLoader();
+        
Thread.currentThread().setContextClassLoader(IvyResolveJob.class.getClassLoader());
         try {
             this.ivy = conf.getIvy();
             this.md = conf.getModuleDescriptor();
@@ -195,6 +199,8 @@
         } catch (Throwable e) {
             return new Status(IStatus.ERROR, IvyPlugin.ID, IStatus.ERROR, 
"Unexpected error ["
                     + e.getClass().getCanonicalName() + "]: " + 
e.getMessage(), e);
+        } finally {
+            Thread.currentThread().setContextClassLoader(old);
         }
 
         Thread resolver = new Thread() {
@@ -211,15 +217,17 @@
                     List problemMessages;
 
                     // context Classloader hook for commonlogging used by 
httpclient
+                    // It will also be used by the SaxParserFactory in Ivy
                     ClassLoader old = 
Thread.currentThread().getContextClassLoader();
                     Thread.currentThread().setContextClassLoader(
                         IvyResolveJob.class.getClassLoader());
                     try {
-                        Map/*<ModuleRevisionId, IvyNode>*/ dependencies = 
Collections.EMPTY_MAP;
+                        Map/* <ModuleRevisionId, IvyNode> */dependencies = 
Collections.EMPTY_MAP;
                         Set configurations = new HashSet();
                         configurations.addAll(conf.getConfs());
                         if (conf.getInheritedDoRetrieve()) {
-                            
configurations.addAll(Arrays.asList(conf.getInheritedRetrieveConfs().split(",")));
+                            
configurations.addAll(Arrays.asList(conf.getInheritedRetrieveConfs()
+                                    .split(",")));
                         }
 
                         if (configurations.contains("*")) {


Reply via email to