You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by me...@apache.org on 2006/10/07 23:19:51 UTC
svn commit: r454023 - in /incubator/tuscany/java/sca/services/maven/src:
main/java/org/apache/tuscany/services/maven/MavenHelper.java
test/java/org/apache/tuscany/services/maven/MavenArtifactRepositoryTestCase.java
Author: meerajk
Date: Sat Oct 7 14:19:50 2006
New Revision: 454023
URL: http://svn.apache.org/viewvc?view=rev&rev=454023
Log:
Evil hack for working around Tomcat classloader issue and classworlds.
Modified:
incubator/tuscany/java/sca/services/maven/src/main/java/org/apache/tuscany/services/maven/MavenHelper.java
incubator/tuscany/java/sca/services/maven/src/test/java/org/apache/tuscany/services/maven/MavenArtifactRepositoryTestCase.java
Modified: incubator/tuscany/java/sca/services/maven/src/main/java/org/apache/tuscany/services/maven/MavenHelper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/maven/src/main/java/org/apache/tuscany/services/maven/MavenHelper.java?view=diff&rev=454023&r1=454022&r2=454023
==============================================================================
--- incubator/tuscany/java/sca/services/maven/src/main/java/org/apache/tuscany/services/maven/MavenHelper.java (original)
+++ incubator/tuscany/java/sca/services/maven/src/main/java/org/apache/tuscany/services/maven/MavenHelper.java Sat Oct 7 14:19:50 2006
@@ -19,10 +19,13 @@
package org.apache.tuscany.services.maven;
import java.io.File;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
import java.net.MalformedURLException;
-import java.net.URL;
import java.util.LinkedList;
import java.util.List;
+import java.util.Map;
import org.apache.maven.artifact.factory.ArtifactFactory;
import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
@@ -38,6 +41,7 @@
import org.apache.maven.artifact.resolver.ArtifactResolver;
import org.apache.tuscany.spi.services.artifact.Artifact;
import org.codehaus.classworlds.ClassWorld;
+import org.codehaus.classworlds.DefaultClassRealm;
import org.codehaus.classworlds.DuplicateRealmException;
import org.codehaus.plexus.PlexusContainerException;
import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
@@ -95,8 +99,25 @@
Embedder embedder = new Embedder();
ClassWorld classWorld = new ClassWorld();
+
classWorld.newRealm("plexus.core", getClass().getClassLoader());
-
+
+ // Evil hack for Tomcat classloader issue - starts
+ Field realmsField = ClassWorld.class.getDeclaredField("realms");
+ realmsField.setAccessible(true);
+ Map realms = (Map)realmsField.get(classWorld);
+ DefaultClassRealm realm = (DefaultClassRealm) realms.get("plexus.core");
+
+ Class clazz = Class.forName("org.codehaus.classworlds.RealmClassLoader");
+ Constructor ctr = clazz.getDeclaredConstructor(new Class[] {DefaultClassRealm.class, ClassLoader.class});
+ ctr.setAccessible(true);
+ Object realmClassLoader = ctr.newInstance(realm, getClass().getClassLoader());
+
+ Field realmClassLoaderField = DefaultClassRealm.class.getDeclaredField("classLoader");
+ realmClassLoaderField.setAccessible(true);
+ realmClassLoaderField.set(realm, realmClassLoader);
+ // Evil hack for Tomcat classloader issue - ends
+
embedder.start(classWorld);
metadataSource = (ArtifactMetadataSource) embedder.lookup(ArtifactMetadataSource.ROLE);
@@ -113,6 +134,18 @@
throw new TuscanyDependencyException(ex);
} catch (ComponentLookupException ex) {
throw new TuscanyDependencyException(ex);
+ } catch (NoSuchFieldException ex) {
+ throw new TuscanyDependencyException(ex);
+ } catch (IllegalAccessException ex) {
+ throw new TuscanyDependencyException(ex);
+ } catch (ClassNotFoundException ex) {
+ throw new TuscanyDependencyException(ex);
+ } catch (NoSuchMethodException ex) {
+ throw new TuscanyDependencyException(ex);
+ } catch (InstantiationException ex) {
+ throw new TuscanyDependencyException(ex);
+ } catch (InvocationTargetException ex) {
+ throw new TuscanyDependencyException(ex);
}
}
@@ -161,6 +194,7 @@
* Resolves the artifact.
*/
private boolean resolve(org.apache.maven.artifact.Artifact mavenRootArtifact) {
+
try {
artifactResolver.resolve(mavenRootArtifact, remoteRepositories, localRepository);
return true;
@@ -169,6 +203,7 @@
} catch (ArtifactNotFoundException ex) {
return false;
}
+
}
/*
Modified: incubator/tuscany/java/sca/services/maven/src/test/java/org/apache/tuscany/services/maven/MavenArtifactRepositoryTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/maven/src/test/java/org/apache/tuscany/services/maven/MavenArtifactRepositoryTestCase.java?view=diff&rev=454023&r1=454022&r2=454023
==============================================================================
--- incubator/tuscany/java/sca/services/maven/src/test/java/org/apache/tuscany/services/maven/MavenArtifactRepositoryTestCase.java (original)
+++ incubator/tuscany/java/sca/services/maven/src/test/java/org/apache/tuscany/services/maven/MavenArtifactRepositoryTestCase.java Sat Oct 7 14:19:50 2006
@@ -49,6 +49,8 @@
* Test method for 'org.apache.tuscany.services.maven.MavenArtifactRepository.resolve(Artifact)'
*/
public void testResolveArtifact() throws Exception {
+
+ System.err.println(getClass().getClassLoader().getResource("META-INF/maven/plugin.xml"));
final URL BASE_URL = new File(System.getProperty("user.home") + File.separator + ".m2").toURL();
String remoteRepoUrl = "http://repo1.maven.org/maven2/";
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org