You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by dj...@apache.org on 2009/04/22 20:52:45 UTC
svn commit: r767617 [1/2] - in /geronimo/sandbox/djencks/framework:
buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/
buildsupport/car-maven-plugin/src/test/java/org/apache/geronimo/mavenplugins/car/
configs/jee-specs/ m...
Author: djencks
Date: Wed Apr 22 18:52:43 2009
New Revision: 767617
URL: http://svn.apache.org/viewvc?rev=767617&view=rev
Log:
Better error reporting, lots of fixes. One-classloader-per-jar works enough to start the server (with appropriate patches on non-framework)
Modified:
geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/AbstractCarMojo.java
geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/ArchiveCarMojo.java
geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/Dependency.java
geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/DependencyChangeMojo.java
geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/InstallModulesMojo.java
geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/PackageMojo.java
geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/PlanProcessorMojo.java
geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/PluginMetadataGeneratorMojo.java
geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/test/java/org/apache/geronimo/mavenplugins/car/DependencyTest.java
geronimo/sandbox/djencks/framework/configs/jee-specs/pom.xml
geronimo/sandbox/djencks/framework/modules/geronimo-config-groovy-transformer/src/main/groovy/org/apache/geronimo/kernel/config/transformer/ConfigurationDataBuilder.groovy
geronimo/sandbox/djencks/framework/modules/geronimo-config-groovy-transformer/src/test/groovy/org/apache/geronimo/kernel/config/transformer/ConfigurationDataBuilderTest.groovy
geronimo/sandbox/djencks/framework/modules/geronimo-core/pom.xml
geronimo/sandbox/djencks/framework/modules/geronimo-deploy-jsr88/pom.xml
geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/gbean/GBeanInfoBuilder.java
geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/gbean/MultiGBeanInfoFactory.java
geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/gbean/annotation/AnnotationGBeanInfoBuilder.java
geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/gbean/annotation/GBeanAnnotationException.java
geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/config/ChildrenConfigurationClassLoader.java
geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/config/ClassLoaderHolder.java
geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/config/JarFileClassLoaderFactory.java
geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/config/MultiParentClassLoader.java
geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/config/classloading/BasicGlobalClassLoaderRegister.java
geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/config/classloading/ConfigurationClassLoaderExtension.java
geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/config/classloading/DependencySAXHandler.java
geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/config/classloading/GlobalClassLoader.java
geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/config/classloading/GlobalClassLoaderDependencyResolver.java
geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/config/classloading/GlobalClassLoaderRegister.java
geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/config/classloading/MavenDependencyResolver.java
geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/config/classloading/MultiParentClassLoader2.java
geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/config/classloading/OneClassLoaderPerJarClassLoaderBuilder.java
geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/test/java/org/apache/geronimo/kernel/config/classloading/DependencyResolverTest.java
geronimo/sandbox/djencks/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/sharedlib/SharedLib.java
Modified: geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/AbstractCarMojo.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/AbstractCarMojo.java?rev=767617&r1=767616&r2=767617&view=diff
==============================================================================
--- geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/AbstractCarMojo.java (original)
+++ geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/AbstractCarMojo.java Wed Apr 22 18:52:43 2009
@@ -23,7 +23,6 @@
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
-import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedHashSet;
@@ -90,7 +89,7 @@
* @readonly
*/
protected MavenProjectHelper projectHelper;
-
+
/**
* The basedir of the project.
*
@@ -100,7 +99,7 @@
*/
protected File basedir;
- protected Set<Artifact> dependencies;
+ protected Set<Artifact> dependencyArtifacts;
protected Map<Artifact, Set<Artifact>> localDependencies;
@@ -316,7 +315,7 @@
project.getRemoteArtifactRepositories(), artifactMetadataSource, null,
Collections.singletonList(listener));
- dependencies = result.getArtifacts();
+ this.dependencyArtifacts = result.getArtifacts();
rootNode = listener.getRootNode();
}
catch (ArtifactResolutionException exception) {
@@ -358,9 +357,9 @@
return new org.apache.geronimo.kernel.repository.Artifact(groupId, artifactId, version, type);
}
- protected LinkedHashSet<DependencyType> toDependencies(Collection<Dependency> listedDependencies, UseMavenDependencies useMavenDependencies, boolean includeImport) throws InvalidDependencyVersionException, ArtifactResolutionException, ProjectBuildingException, MojoExecutionException {
+ protected LinkedHashSet<DependencyType> toDependencies(List<Dependency> explicitDependencies, UseMavenDependencies useMavenDependencies, boolean includeImport) throws InvalidDependencyVersionException, ArtifactResolutionException, ProjectBuildingException, MojoExecutionException {
List<DependencyType> dependencyTypes = new ArrayList<DependencyType>();
- for (Dependency dependency: listedDependencies) {
+ for (Dependency dependency : explicitDependencies) {
dependencyTypes.add(dependency.toDependencyType());
}
LinkedHashSet<DependencyType> dependencies = new LinkedHashSet<DependencyType>();
@@ -378,9 +377,9 @@
for (Map.Entry<Artifact, Set<Artifact>> entry : localDependencies.entrySet()) {
Artifact artifact = entry.getKey();
DependencyType explicitDependency = explicitDependencyMap.get(getKey(artifact));
- DependencyType dependency = toDependency(artifact, useMavenDependencies.isIncludeVersion(), explicitDependency, includeImport);
- for (Artifact parent: entry.getValue()) {
- dependency.getDependency().add(toDependency(parent, true, null, false));
+ DependencyType dependency = toDependencyType(artifact, useMavenDependencies.isIncludeVersion(), explicitDependency, includeImport);
+ for (Artifact parent : entry.getValue()) {
+ dependency.getDependency().add(toDependencyType(parent, true, null, false));
}
dependencies.add(dependency);
}
@@ -389,7 +388,7 @@
return dependencies;
}
- private DependencyType toDependency(Artifact artifact, boolean includeVersion, DependencyType explicitDependency, boolean includeImport) {
+ DependencyType toDependencyType(Artifact artifact, boolean includeVersion, DependencyType explicitDependency, boolean includeImport) {
DependencyType dependency = new DependencyType();
dependency.setGroupId(artifact.getGroupId());
dependency.setArtifactId(artifact.getArtifactId());
@@ -404,15 +403,16 @@
}
if (explicitDependency != null) {
dependency.setStart(explicitDependency.isStart());
+ dependency.getDependency().addAll(explicitDependency.getDependency());
}
return dependency;
}
- private String getKey(DependencyType dependency) {
+ private static String getKey(DependencyType dependency) {
return dependency.getGroupId() + "/" + dependency.getArtifactId() + "/" + dependency.getType();
}
- private String getKey(Artifact dependency) {
+ private static String getKey(Artifact dependency) {
return dependency.getGroupId() + "/" + dependency.getArtifactId() + "/" + dependency.getType();
}
@@ -571,7 +571,7 @@
}
protected Artifact resolveArtifact(String groupId, String artifactId, String type) {
- for (Artifact artifact : dependencies) {
+ for (Artifact artifact : dependencyArtifacts) {
if (matches(groupId, artifactId, type, artifact)) {
return artifact;
}
Modified: geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/ArchiveCarMojo.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/ArchiveCarMojo.java?rev=767617&r1=767616&r2=767617&view=diff
==============================================================================
--- geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/ArchiveCarMojo.java (original)
+++ geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/ArchiveCarMojo.java Wed Apr 22 18:52:43 2009
@@ -20,17 +20,12 @@
package org.apache.geronimo.mavenplugins.car;
import java.io.File;
-import java.util.LinkedHashSet;
-import java.util.List;
import org.apache.maven.archiver.MavenArchiveConfiguration;
import org.apache.maven.archiver.MavenArchiver;
import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.resolver.ArtifactResolutionException;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.project.artifact.InvalidDependencyVersionException;
-import org.apache.maven.project.ProjectBuildingException;
import org.codehaus.plexus.archiver.jar.JarArchiver;
/**
Modified: geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/Dependency.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/Dependency.java?rev=767617&r1=767616&r2=767617&view=diff
==============================================================================
--- geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/Dependency.java (original)
+++ geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/Dependency.java Wed Apr 22 18:52:43 2009
@@ -20,8 +20,12 @@
package org.apache.geronimo.mavenplugins.car;
+import java.util.List;
+import java.util.ArrayList;
+
import org.apache.geronimo.kernel.repository.ImportType;
import org.apache.geronimo.system.plugin.model.DependencyType;
+import org.apache.geronimo.system.plugin.model.ArtifactType;
/**
* @version $Rev$ $Date$
@@ -33,6 +37,10 @@
*/
private Boolean start;
+ /**
+ * @parameter
+ */
+ private List<Dependency> dependencies = new ArrayList<Dependency>();
public Boolean isStart() {
if (start == null) {
@@ -45,6 +53,14 @@
this.start = start;
}
+ public List<Dependency> getDependencies() {
+ return dependencies;
+ }
+
+ public void setDependencies(List<Dependency> dependencies) {
+ this.dependencies = dependencies;
+ }
+
public DependencyType toDependencyType() {
DependencyType dependency = new DependencyType();
dependency.setGroupId(groupId);
@@ -54,9 +70,22 @@
dependency.setStart(start);
dependency.setImport(getImport() == null? org.apache.geronimo.system.plugin.model.ImportType.ALL:
org.apache.geronimo.system.plugin.model.ImportType.fromValue(getImport()));
+
+ for (Dependency artifact: this.dependencies) {
+ dependency.getDependency().add(artifact.toArtifact());
+ }
return dependency;
}
+ private ArtifactType toArtifact() {
+ ArtifactType artifactType = new ArtifactType();
+ artifactType.setGroupId(groupId);
+ artifactType.setArtifactId(artifactId);
+ artifactType.setVersion(version);
+ artifactType.setType(type);
+ return artifactType;
+ }
+
public org.apache.geronimo.kernel.repository.Dependency toKernelDependency() {
org.apache.geronimo.kernel.repository.Artifact artifact = new org.apache.geronimo.kernel.repository.Artifact(groupId, artifactId, version, type);
ImportType importType = getImport() == null? ImportType.ALL: ImportType.getByName(getImport());
@@ -82,18 +111,9 @@
Dependency that = (Dependency) o;
if (!super.equals(that)) return false;
- return isStart().equals(that.isStart());
+ if (!isStart().equals(that.isStart())) return false;
+ return getDependencies().equals(that.getDependencies());
}
//rely on super.hashcode();
- public static Dependency newDependency(DependencyType dependencyType) {
- Dependency dependency = new Dependency();
- dependency.setGroupId(dependencyType.getGroupId());
- dependency.setArtifactId(dependencyType.getArtifactId());
- dependency.setVersion(dependencyType.getVersion());
- dependency.setType(dependencyType.getType());
- dependency.setStart(dependencyType.isStart());
- dependency.setImport(ImportType.ALL.toString());
- return dependency;
- }
}
Modified: geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/DependencyChangeMojo.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/DependencyChangeMojo.java?rev=767617&r1=767616&r2=767617&view=diff
==============================================================================
--- geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/DependencyChangeMojo.java (original)
+++ geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/DependencyChangeMojo.java Wed Apr 22 18:52:43 2009
@@ -32,7 +32,6 @@
import java.util.Collection;
import java.util.Collections;
import java.util.List;
-import java.util.ArrayList;
import java.util.LinkedHashSet;
import javax.xml.bind.JAXBException;
Modified: geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/InstallModulesMojo.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/InstallModulesMojo.java?rev=767617&r1=767616&r2=767617&view=diff
==============================================================================
--- geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/InstallModulesMojo.java (original)
+++ geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/InstallModulesMojo.java Wed Apr 22 18:52:43 2009
@@ -24,8 +24,6 @@
import java.util.List;
import java.util.Set;
import java.util.Collections;
-import java.net.URL;
-import java.net.URI;
import org.apache.geronimo.kernel.Kernel;
import org.apache.geronimo.kernel.basic.BasicKernel;
@@ -148,7 +146,7 @@
public void execute() throws MojoExecutionException, MojoFailureException {
getDependencies(project, false);
Maven2RepositoryAdapter.ArtifactLookup lookup = new ArtifactLookupImpl();
- SourceRepository sourceRepo = new Maven2RepositoryAdapter(dependencies, lookup);
+ SourceRepository sourceRepo = new Maven2RepositoryAdapter(dependencyArtifacts, lookup);
PluginListType pluginList = new PluginListType();
String localRepo = sourceRepository.getUrl();
if ("file".equals(sourceRepository.getProtocol())) {
Modified: geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/PackageMojo.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/PackageMojo.java?rev=767617&r1=767616&r2=767617&view=diff
==============================================================================
--- geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/PackageMojo.java (original)
+++ geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/PackageMojo.java Wed Apr 22 18:52:43 2009
@@ -214,7 +214,7 @@
}
- generateExplicitVersionProperties(explicitResolutionProperties, dependencies);
+ generateExplicitVersionProperties(explicitResolutionProperties, dependencyArtifacts);
//
// NOTE: Install a local lookup, so that the cached kernel can resolve based on the current project
@@ -260,7 +260,7 @@
File targetFile = new File(targetDir.toURI().resolve(pluginMetadataFileName));
URL artifactURL = targetFile.toURL();
- new MavenDependencyResolver().resolve(artifactURL, OneClassLoaderPerJarClassLoaderBuilder.GLOBAL_CL_REGISTER);
+ new MavenDependencyResolver().resolve(artifactURL, OneClassLoaderPerJarClassLoaderBuilder.GLOBAL_CL_REGISTER, mavenToGeronimoArtifact(getProject().getArtifact()));
boot.bootstrap();
}
@@ -342,7 +342,7 @@
if (kernel != null) {
return kernel;
}
-
+ OneClassLoaderPerJarClassLoaderBuilder.GLOBAL_CL_REGISTER.cleanClassLoaderRegistry();
getLog().debug("Creating kernel...");
// check the registry in case someone else created one
@@ -397,7 +397,7 @@
}
};
repoGBean.setAttribute("lookup", lookup);
- repoGBean.setAttribute("dependencies", dependencies);
+ repoGBean.setAttribute("dependencies", dependencyArtifacts);
repoNames.add(repoGBean.getAbstractName());
// Target repo
@@ -447,7 +447,7 @@
File targetFile = new File(targetDir.toURI().resolve(pluginMetadataFileName));
URL artifactURL = targetFile.toURL();
- new MavenDependencyResolver().resolve(artifactURL, OneClassLoaderPerJarClassLoaderBuilder.GLOBAL_CL_REGISTER);
+ new MavenDependencyResolver().resolve(artifactURL, OneClassLoaderPerJarClassLoaderBuilder.GLOBAL_CL_REGISTER, mavenToGeronimoArtifact(getProject().getArtifact()));
}
Modified: geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/PlanProcessorMojo.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/PlanProcessorMojo.java?rev=767617&r1=767616&r2=767617&view=diff
==============================================================================
--- geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/PlanProcessorMojo.java (original)
+++ geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/PlanProcessorMojo.java Wed Apr 22 18:52:43 2009
@@ -116,7 +116,7 @@
XmlObject doc = XmlObject.Factory.parse(filteredPlanFile);
XmlCursor xmlCursor = doc.newCursor();
- LinkedHashSet<org.apache.geronimo.kernel.repository.Dependency> dependencies = toKernelDependencies(this.dependencies, useMavenDependencies);
+ LinkedHashSet<org.apache.geronimo.kernel.repository.Dependency> dependencies = toKernelDependencies(useMavenDependencies);
Artifact configId = new Artifact(project.getGroupId(), project.getArtifactId(), project.getVersion(), "car");
try {
@@ -223,9 +223,9 @@
}
}
- protected LinkedHashSet<org.apache.geronimo.kernel.repository.Dependency> toKernelDependencies(List<Dependency> listedDependencies, UseMavenDependencies useMavenDependencies) throws InvalidDependencyVersionException, ArtifactResolutionException, ProjectBuildingException, MojoExecutionException {
+ protected LinkedHashSet<org.apache.geronimo.kernel.repository.Dependency> toKernelDependencies(UseMavenDependencies useMavenDependencies) throws InvalidDependencyVersionException, ArtifactResolutionException, ProjectBuildingException, MojoExecutionException {
LinkedHashSet<org.apache.geronimo.kernel.repository.Dependency> kernelDependencies = new LinkedHashSet<org.apache.geronimo.kernel.repository.Dependency>();
- LinkedHashSet<DependencyType> dependencies = toDependencies(listedDependencies, useMavenDependencies, true);
+ LinkedHashSet<DependencyType> dependencies = toDependencies(this.dependencies, useMavenDependencies, true);
for (DependencyType dependency: dependencies) {
kernelDependencies.add(Dependency.toKernelDependency(dependency));
}
Modified: geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/PluginMetadataGeneratorMojo.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/PluginMetadataGeneratorMojo.java?rev=767617&r1=767616&r2=767617&view=diff
==============================================================================
--- geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/PluginMetadataGeneratorMojo.java (original)
+++ geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/car/PluginMetadataGeneratorMojo.java Wed Apr 22 18:52:43 2009
@@ -27,11 +27,9 @@
import java.util.Collections;
import java.util.List;
import java.util.LinkedHashSet;
-import java.util.ArrayList;
import org.apache.geronimo.kernel.config.InvalidConfigException;
import org.apache.geronimo.kernel.config.NoSuchConfigException;
-import org.apache.geronimo.kernel.repository.Maven2Repository;
import org.apache.geronimo.system.plugin.PluginXmlUtil;
import org.apache.geronimo.system.plugin.model.ArtifactType;
import org.apache.geronimo.system.plugin.model.LicenseType;
Modified: geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/test/java/org/apache/geronimo/mavenplugins/car/DependencyTest.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/test/java/org/apache/geronimo/mavenplugins/car/DependencyTest.java?rev=767617&r1=767616&r2=767617&view=diff
==============================================================================
--- geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/test/java/org/apache/geronimo/mavenplugins/car/DependencyTest.java (original)
+++ geronimo/sandbox/djencks/framework/buildsupport/car-maven-plugin/src/test/java/org/apache/geronimo/mavenplugins/car/DependencyTest.java Wed Apr 22 18:52:43 2009
@@ -24,6 +24,7 @@
import junit.framework.TestCase;
import org.apache.geronimo.system.plugin.model.DependencyType;
+import org.apache.geronimo.kernel.repository.ImportType;
/**
* @version $Rev$ $Date$
@@ -77,7 +78,7 @@
public void testDependencyTypeConversion() throws Exception {
Dependency d1 = newDependency(null);
DependencyType td = d1.toDependencyType();
- Dependency d2 = Dependency.newDependency(td);
+ Dependency d2 = newDependencyFromType(td);
assertTrue(d1.equals(d2));
}
@@ -94,4 +95,16 @@
d.setImport("all");
return d;
}
+
+ public static Dependency newDependencyFromType(DependencyType dependencyType) {
+ Dependency dependency = new Dependency();
+ dependency.setGroupId(dependencyType.getGroupId());
+ dependency.setArtifactId(dependencyType.getArtifactId());
+ dependency.setVersion(dependencyType.getVersion());
+ dependency.setType(dependencyType.getType());
+ dependency.setStart(dependencyType.isStart());
+ dependency.setImport(ImportType.ALL.toString());
+ return dependency;
+ }
+
}
Modified: geronimo/sandbox/djencks/framework/configs/jee-specs/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/sandbox/djencks/framework/configs/jee-specs/pom.xml?rev=767617&r1=767616&r2=767617&view=diff
==============================================================================
--- geronimo/sandbox/djencks/framework/configs/jee-specs/pom.xml (original)
+++ geronimo/sandbox/djencks/framework/configs/jee-specs/pom.xml Wed Apr 22 18:52:43 2009
@@ -40,8 +40,8 @@
<!-- activation is needed in root cl to run jaxb -->
<!--<dependency>-->
- <!--<groupId>org.apache.geronimo.specs</groupId>-->
- <!--<artifactId>geronimo-activation_1.1_spec</artifactId>-->
+ <!--<groupId>org.apache.geronimo.specs</groupId>-->
+ <!--<artifactId>geronimo-activation_1.1_spec</artifactId>-->
<!--</dependency>-->
<dependency>
@@ -53,10 +53,10 @@
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-ejb_3.0_spec</artifactId>
</dependency>
-
- <dependency>
- <groupId>org.apache.openejb</groupId>
- <artifactId>ejb31-api-experimental</artifactId>
+
+ <dependency>
+ <groupId>org.apache.openejb</groupId>
+ <artifactId>ejb31-api-experimental</artifactId>
</dependency>
<dependency>
@@ -84,7 +84,7 @@
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-jacc_1.1_spec</artifactId>
</dependency>
-
+
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-jaspi_1.0_spec</artifactId>
@@ -197,7 +197,7 @@
<version>${version}</version>
<type>car</type>
</dependency>
-
+
<!-- build order hint -->
<dependency>
<groupId>org.apache.geronimo.framework</groupId>
@@ -227,6 +227,100 @@
<type>car</type>
<import>classes</import>
</dependency>
+
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-jacc_1.1_spec</artifactId>
+ <type>jar</type>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>${servletSpec}</artifactId>
+ <version>1.2</version>
+ <type>jar</type>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-ejb_3.0_spec</artifactId>
+ <version>1.0.1</version>
+ <type>jar</type>
+ </dependency>
+ </dependencies>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-jsp_2.1_spec</artifactId>
+ <type>jar</type>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>${servletSpec}</artifactId>
+ <version>1.2</version>
+ <type>jar</type>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-el_1.0_spec</artifactId>
+ <version>1.0.1</version>
+ <type>jar</type>
+ </dependency>
+ </dependencies>
+ </dependency>
+
+ <dependency>
+ <groupId>jstl</groupId>
+ <artifactId>jstl</artifactId>
+ <type>jar</type>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-jsp_2.1_spec</artifactId>
+ <version>1.0.1</version>
+ <type>jar</type>
+ </dependency>
+ </dependencies>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-j2ee-management_1.1_spec</artifactId>
+ <type>jar</type>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-ejb_3.0_spec</artifactId>
+ <version>1.0.1</version>
+ <type>jar</type>
+ </dependency>
+ </dependencies>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.openejb</groupId>
+ <artifactId>ejb31-api-experimental</artifactId>
+ <type>jar</type>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-ejb_3.0_spec</artifactId>
+ <version>1.0.1</version>
+ <type>jar</type>
+ </dependency>
+ </dependencies>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.myfaces.core</groupId>
+ <artifactId>myfaces-api</artifactId>
+ <type>jar</type>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>${servletSpec}</artifactId>
+ <version>1.2</version>
+ <type>jar</type>
+ </dependency>
+ </dependencies>
+ </dependency>
+
</dependencies>
</configuration>
Modified: geronimo/sandbox/djencks/framework/modules/geronimo-config-groovy-transformer/src/main/groovy/org/apache/geronimo/kernel/config/transformer/ConfigurationDataBuilder.groovy
URL: http://svn.apache.org/viewvc/geronimo/sandbox/djencks/framework/modules/geronimo-config-groovy-transformer/src/main/groovy/org/apache/geronimo/kernel/config/transformer/ConfigurationDataBuilder.groovy?rev=767617&r1=767616&r2=767617&view=diff
==============================================================================
--- geronimo/sandbox/djencks/framework/modules/geronimo-config-groovy-transformer/src/main/groovy/org/apache/geronimo/kernel/config/transformer/ConfigurationDataBuilder.groovy (original)
+++ geronimo/sandbox/djencks/framework/modules/geronimo-config-groovy-transformer/src/main/groovy/org/apache/geronimo/kernel/config/transformer/ConfigurationDataBuilder.groovy Wed Apr 22 18:52:43 2009
@@ -1,13 +1,99 @@
-/*
* 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.geronimo.kernel.config.transformer
import org.apache.geronimo.kernel.Jsr77Naming
import org.apache.geronimo.gbean.GBeanInfo
import org.apache.geronimo.gbean.GBe
anData
import org.apache.geronimo.gbean.GBeanData
import org.apache.geronimo.kernel.repository.Version
import org.apache.geronimo.kernel.config.ConfigurationData
import org.apache.geronimo.kernel.repository.ImportType
import org.apache.geronimo.kernel.repository.Artifact
import org.apache.geronimo.kernel.repository.Dependency
-
/**
*
* @version $Rev:$ $Date:$
*/
class ConfigurationDataBuilder {
+/*
+ * 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.geronimo.kernel.config.transformer
+
+import org.apache.geronimo.kernel.Jsr77Naming
+import org.apache.geronimo.gbean.GBeanInfo
+import org.apache.geronimo.gbean.GBeanData
+import org.apache.geronimo.gbean.GBeanData
+import org.apache.geronimo.kernel.repository.Version
+import org.apache.geronimo.kernel.config.ConfigurationData
+import org.apache.geronimo.kernel.repository.ImportType
+import org.apache.geronimo.kernel.repository.Artifact
+import org.apache.geronimo.kernel.repository.Dependency
+
+/**
+ *
+ * @version $Rev:$ $Date:$
+ */
+class ConfigurationDataBuilder {
private final ConfigurationData configurationData
ConfigurationDataBuilder(ConfigurationData configurationData) {
assert null != configurationData : 'configurationData is required'
this.configurationData = configurationData
- }
def configure (Closure closure) {
closure.delegate = this
closure()
}
+ }
+
+ def configure (Closure closure) {
+ closure.delegate = this
+ closure()
+ }
+
+ def addDependency(Map dependencyDeclaration) throws GroovyScriptException {
+ def throwUsage = {
+ throw new GroovyScriptException('addDependency usage: addDependency(groupId: group, artifactId: artifact, version: X, type: type, importType: ImportType.X)')
+ }
- def addDependency(Map dependencyDeclaration) throws GroovyScriptException {
def throwUsage = {
throw new GroovyScriptException('addDependency usage: addDependency(groupId: group, artifactId: artifact, version: X, type: type, importType: ImportType.X)')
}
ensureNotNull(dependencyDeclaration.groupId, throwUsage)
ensureNotNull(dependencyDeclaration.artifactId, throwUsage)
if (!dependencyDeclaration.type) {
dependencyDeclaration.type = 'jar'
}
def artifact = buildArtifact(dependencyDeclaration)
def importType = dependencyDeclaration.importType
if (!importType) {
importType = ImportType.ALL
}
configurationData.environment.addDependency(artifact, importType)
}
-
def removeDependency(Map dependencyFilter) throws GroovyScriptException {
def throwUsage = {
throw new GroovyScriptException('removeDependency usage: removeDependency(groupId: group, artifactId: artifact, version: X, type: type)')
}
def filteredArtifact = buildArtifact(dependencyFilter)
def filteredDependencies = configurationData.environment.dependencies.findAll { dependency ->
!filteredArtifact.matches(dependency.artifact)
}
configurationData.environment.dependencies = filteredDependencies
}
-
protected def buildArtifact(dependencyDeclaration) throws GroovyScriptException {
def groupId = dependencyDeclaration.groupId
def artifactId = dependencyDeclaration.artifactId
def version = dependencyDeclaration.version
def type = dependencyDeclaration.type
new Artifact(groupId, artifactId, (String) version, type)
}
protected def ensureNotNull(value, throwUsage) throws GroovyScriptException {
if (!value) {
throwUsage()
}
}
+ ensureNotNull(dependencyDeclaration.groupId, throwUsage)
+ ensureNotNull(dependencyDeclaration.artifactId, throwUsage)
+
+ if (!dependencyDeclaration.type) {
+ dependencyDeclaration.type = 'jar'
+ }
+
+ def artifact = buildArtifact(dependencyDeclaration)
+
+ def importType = dependencyDeclaration.importType
+ if (!importType) {
+ importType = ImportType.ALL
+ }
+
+ configurationData.environment.addDependency(artifact, importType)
+ }
+
+ def removeDependency(Map dependencyFilter) throws GroovyScriptException {
+ def throwUsage = {
+ throw new GroovyScriptException('removeDependency usage: removeDependency(groupId: group, artifactId: artifact, version: X, type: type)')
+ }
+
+ def filteredArtifact = buildArtifact(dependencyFilter)
+ def filteredDependencies = configurationData.environment.dependencies.findAll { dependency ->
+ !filteredArtifact.matches(dependency.artifact)
+ }
+
+ configurationData.environment.dependencies = filteredDependencies
+ }
+
+ protected def buildArtifact(dependencyDeclaration) throws GroovyScriptException {
+ def groupId = dependencyDeclaration.groupId
+ def artifactId = dependencyDeclaration.artifactId
+ def version = dependencyDeclaration.version
+ def type = dependencyDeclaration.type
+
+ new Artifact(groupId, artifactId, (String) version, type)
+ }
+
+ protected def ensureNotNull(value, throwUsage) throws GroovyScriptException {
+ if (!value) {
+ throwUsage()
+ }
+ }
+
}
\ No newline at end of file
Modified: geronimo/sandbox/djencks/framework/modules/geronimo-config-groovy-transformer/src/test/groovy/org/apache/geronimo/kernel/config/transformer/ConfigurationDataBuilderTest.groovy
URL: http://svn.apache.org/viewvc/geronimo/sandbox/djencks/framework/modules/geronimo-config-groovy-transformer/src/test/groovy/org/apache/geronimo/kernel/config/transformer/ConfigurationDataBuilderTest.groovy?rev=767617&r1=767616&r2=767617&view=diff
==============================================================================
--- geronimo/sandbox/djencks/framework/modules/geronimo-config-groovy-transformer/src/test/groovy/org/apache/geronimo/kernel/config/transformer/ConfigurationDataBuilderTest.groovy (original)
+++ geronimo/sandbox/djencks/framework/modules/geronimo-config-groovy-transformer/src/test/groovy/org/apache/geronimo/kernel/config/transformer/ConfigurationDataBuilderTest.groovy Wed Apr 22 18:52:43 2009
@@ -19,8 +19,14 @@
package org.apache.geronimo.kernel.config.transformer
-import org.apache.geronimo.kernel.config.transformer.ConfigurationDataBuilder
import org.apache.geronimo.kernel.repository.ImportType
-import org.apache.geronimo.kernel.config.ConfigurationData
import org.apache.geronimo.kernel.Jsr77Naming
import org.apache.geronimo.kernel.repository.Artifact
import org.apache.geronimo.kernel.config.transformer.GroovyScriptException
/**
+import org.apache.geronimo.kernel.config.transformer.ConfigurationDataBuilder
+import org.apache.geronimo.kernel.repository.ImportType
+import org.apache.geronimo.kernel.config.ConfigurationData
+import org.apache.geronimo.kernel.Jsr77Naming
+import org.apache.geronimo.kernel.repository.Artifact
+import org.apache.geronimo.kernel.config.transformer.GroovyScriptException
+
+/**
*
* @version $Rev:$ $Date:$
*/
Modified: geronimo/sandbox/djencks/framework/modules/geronimo-core/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/sandbox/djencks/framework/modules/geronimo-core/pom.xml?rev=767617&r1=767616&r2=767617&view=diff
==============================================================================
--- geronimo/sandbox/djencks/framework/modules/geronimo-core/pom.xml (original)
+++ geronimo/sandbox/djencks/framework/modules/geronimo-core/pom.xml Wed Apr 22 18:52:43 2009
@@ -53,6 +53,10 @@
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-j2ee-management_1.1_spec</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </dependency>
</dependencies>
</project>
Modified: geronimo/sandbox/djencks/framework/modules/geronimo-deploy-jsr88/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/sandbox/djencks/framework/modules/geronimo-deploy-jsr88/pom.xml?rev=767617&r1=767616&r2=767617&view=diff
==============================================================================
--- geronimo/sandbox/djencks/framework/modules/geronimo-deploy-jsr88/pom.xml (original)
+++ geronimo/sandbox/djencks/framework/modules/geronimo-deploy-jsr88/pom.xml Wed Apr 22 18:52:43 2009
@@ -30,20 +30,20 @@
<artifactId>geronimo-deploy-jsr88</artifactId>
<name>Geronimo Framework, Modules :: Deploy JSR-88</name>
-
+
<dependencies>
<dependency>
<groupId>org.apache.geronimo.framework</groupId>
<artifactId>geronimo-system</artifactId>
<version>${version}</version>
</dependency>
-
+
<dependency>
<groupId>org.apache.geronimo.framework</groupId>
<artifactId>geronimo-common</artifactId>
<version>${version}</version>
</dependency>
-
+
<dependency>
<groupId>org.apache.geronimo.framework</groupId>
<artifactId>geronimo-plugin</artifactId>
@@ -55,6 +55,24 @@
<artifactId>geronimo-deploy-config</artifactId>
<version>${version}</version>
</dependency>
+ <dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-archiver</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-javaee-deployment_1.1MR3_spec</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.geronimo.framework</groupId>
+ <artifactId>geronimo-kernel</artifactId>
+ <version>${version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.geronimo.framework</groupId>
+ <artifactId>geronimo-crypto</artifactId>
+ <version>${version}</version>
+ </dependency>
</dependencies>
</project>
Modified: geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/gbean/GBeanInfoBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/gbean/GBeanInfoBuilder.java?rev=767617&r1=767616&r2=767617&view=diff
==============================================================================
--- geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/gbean/GBeanInfoBuilder.java (original)
+++ geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/gbean/GBeanInfoBuilder.java Wed Apr 22 18:52:43 2009
@@ -296,7 +296,7 @@
try {
methods = intf.getMethods();
} catch (NoClassDefFoundError e) {
- throw (NoClassDefFoundError)new NoClassDefFoundError("could not get methods from interface: " + intf.getName() + " loaded in classLoader: " + intf.getClassLoader()).initCause(e);
+ throw (NoClassDefFoundError)new NoClassDefFoundError("could not get methods from interface: " + intf.getName() + " due to: " + e.getMessage() + " loaded in classLoader: " + intf.getClassLoader()).initCause(e);
}
for (int i = 0; i < methods.length; i++) {
Method method = methods[i];
Modified: geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/gbean/MultiGBeanInfoFactory.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/gbean/MultiGBeanInfoFactory.java?rev=767617&r1=767616&r2=767617&view=diff
==============================================================================
--- geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/gbean/MultiGBeanInfoFactory.java (original)
+++ geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/gbean/MultiGBeanInfoFactory.java Wed Apr 22 18:52:43 2009
@@ -20,6 +20,8 @@
package org.apache.geronimo.gbean;
import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.ArrayList;
+import java.util.List;
import org.apache.geronimo.gbean.annotation.AnnotationGBeanInfoFactory;
@@ -45,23 +47,27 @@
}
public GBeanInfo getGBeanInfo(Class clazz) throws GBeanInfoFactoryException {
+ List<GBeanInfoFactoryException> errors = new ArrayList<GBeanInfoFactoryException>(2);
for (GBeanInfoFactory factory : FACTORIES) {
try {
return factory.getGBeanInfo(clazz);
} catch (GBeanInfoFactoryException e) {
+ errors.add(e);
}
}
- throw new GBeanInfoFactoryException("Cannot create a GBeanInfo for [" + clazz + "]");
+ throw new GBeanInfoFactoryException("Cannot create a GBeanInfo for [" + clazz + "], errors: " + errors);
}
public GBeanInfo getGBeanInfo(String className, ClassLoader classLoader) throws GBeanInfoFactoryException {
+ List<GBeanInfoFactoryException> errors = new ArrayList<GBeanInfoFactoryException>(2);
for (GBeanInfoFactory factory : FACTORIES) {
try {
return factory.getGBeanInfo(className, classLoader);
} catch (GBeanInfoFactoryException e) {
+ errors.add(e);
}
}
- throw new GBeanInfoFactoryException("Cannot create a GBeanInfo for [" + className + "]");
+ throw new GBeanInfoFactoryException("Cannot create a GBeanInfo for [" + className + "], errors: " + errors);
}
}
\ No newline at end of file
Modified: geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/gbean/annotation/AnnotationGBeanInfoBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/gbean/annotation/AnnotationGBeanInfoBuilder.java?rev=767617&r1=767616&r2=767617&view=diff
==============================================================================
--- geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/gbean/annotation/AnnotationGBeanInfoBuilder.java (original)
+++ geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/gbean/annotation/AnnotationGBeanInfoBuilder.java Wed Apr 22 18:52:43 2009
@@ -53,16 +53,20 @@
}
public GBeanInfo buildGBeanInfo() throws GBeanAnnotationException {
- String name = getName();
- String j2eeType = getJ2eeyType();
- GBeanInfoBuilder infoBuilder = GBeanInfoBuilder.createStatic(name, gbeanClass, j2eeType);
-
- setPriority(infoBuilder);
- setConstructor(infoBuilder);
- markPersistent(infoBuilder);
- addReferences(infoBuilder);
-
- return infoBuilder.getBeanInfo();
+ try {
+ String name = getName();
+ String j2eeType = getJ2eeyType();
+ GBeanInfoBuilder infoBuilder = GBeanInfoBuilder.createStatic(name, gbeanClass, j2eeType);
+
+ setPriority(infoBuilder);
+ setConstructor(infoBuilder);
+ markPersistent(infoBuilder);
+ addReferences(infoBuilder);
+
+ return infoBuilder.getBeanInfo();
+ } catch (NoClassDefFoundError e) {
+ throw new GBeanAnnotationException("Could not fully load class: " + gbeanClass.getName() + "\n due to: " + e.getMessage() + "\n in classloader \n" + gbeanClass.getClassLoader(), e);
+ }
}
protected void setPriority(GBeanInfoBuilder infoBuilder) {
Modified: geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/gbean/annotation/GBeanAnnotationException.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/gbean/annotation/GBeanAnnotationException.java?rev=767617&r1=767616&r2=767617&view=diff
==============================================================================
--- geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/gbean/annotation/GBeanAnnotationException.java (original)
+++ geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/gbean/annotation/GBeanAnnotationException.java Wed Apr 22 18:52:43 2009
@@ -33,4 +33,7 @@
super(message);
}
+ public GBeanAnnotationException(String s, Throwable throwable) {
+ super(s, throwable);
+ }
}
Modified: geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/config/ChildrenConfigurationClassLoader.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/config/ChildrenConfigurationClassLoader.java?rev=767617&r1=767616&r2=767617&view=diff
==============================================================================
--- geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/config/ChildrenConfigurationClassLoader.java (original)
+++ geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/config/ChildrenConfigurationClassLoader.java Wed Apr 22 18:52:43 2009
@@ -30,6 +30,7 @@
import org.apache.geronimo.kernel.config.classloading.ConfigurationClassLoaderExtension;
import org.apache.geronimo.kernel.repository.ClassLoadingRule;
import org.apache.geronimo.kernel.repository.ClassLoadingRules;
+import org.apache.geronimo.kernel.repository.Artifact;
import sun.misc.CompoundEnumeration;
@@ -37,7 +38,7 @@
*
* @version $Rev:$ $Date:$
*/
-public class ChildrenConfigurationClassLoader extends SecureClassLoader {
+public class ChildrenConfigurationClassLoader extends SecureClassLoader implements ConfigurationClassLoaderExtension{
private final ClassLoadingRules rules;
@@ -49,15 +50,20 @@
this.rules = rules;
}
- public Class<?> loadClass(String name, List<ClassLoader> visitedClassLoaders) throws ClassNotFoundException {
- return loadClass(name, false, visitedClassLoaders);
+ public Class<?> loadClass(String name, List<ConfigurationClassLoaderExtension> visitedClassLoaders) throws ClassNotFoundException {
+ return loadClassInternal(name, false, visitedClassLoaders);
}
protected synchronized Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException {
- return loadClass(name, resolve, Collections.EMPTY_LIST);
+ return loadClassInternal(name, resolve, Collections.EMPTY_LIST);
}
- protected synchronized Class<?> loadClass(String name, boolean resolve, List<ClassLoader> visitedClassLoaders)
+ public void addURL(URL url) {
+ throw new RuntimeException("Don't call this");
+ }
+
+ //TODO use inheritance to make protected??
+ public synchronized Class<?> loadClassInternal(String name, boolean resolve, List<ConfigurationClassLoaderExtension> visitedClassLoaders)
throws ClassNotFoundException {
ClassLoadingRule privateRule = rules.getPrivateRule();
ClassLoader parent = getParent();
@@ -73,7 +79,24 @@
}
return super.loadClass(name, resolve);
}
-
+
+ public void destroy() {
+ }
+
+ //TODO????
+ public URL findResource(String name) {
+ return super.findResource(name);
+ }
+
+ //TODO????
+ public Enumeration<URL> findResources(String name) throws IOException {
+ return super.findResources(name);
+ }
+
+ public Artifact getId() {
+ return ((ConfigurationClassLoaderExtension)getParent()).getId();
+ }
+
public URL getResource(String name) {
ClassLoadingRule privateRule = rules.getPrivateRule();
if (privateRule.isFilteredResource(name)) {
@@ -90,4 +113,8 @@
return super.getResources(name);
}
+ @Override
+ public String toString() {
+ return "ChildrenConfigurationClassLoader: " + getId();
+ }
}
Modified: geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/config/ClassLoaderHolder.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/config/ClassLoaderHolder.java?rev=767617&r1=767616&r2=767617&view=diff
==============================================================================
--- geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/config/ClassLoaderHolder.java (original)
+++ geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/config/ClassLoaderHolder.java Wed Apr 22 18:52:43 2009
@@ -21,6 +21,7 @@
package org.apache.geronimo.kernel.config;
import org.apache.geronimo.kernel.config.classloading.ConfigurationClassLoaderExtension;
+import org.apache.geronimo.kernel.config.classloading.OneClassLoaderPerJarClassLoaderBuilder;
/**
* @version $Rev$ $Date$
@@ -45,6 +46,8 @@
public void destroy() {
if (internalClassLoader instanceof ConfigurationClassLoaderExtension) {
+ //TODO this sucks
+ OneClassLoaderPerJarClassLoaderBuilder.unregister((ConfigurationClassLoaderExtension) externalClassLoader);
((ConfigurationClassLoaderExtension)internalClassLoader).destroy();
}
}
Modified: geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/config/JarFileClassLoaderFactory.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/config/JarFileClassLoaderFactory.java?rev=767617&r1=767616&r2=767617&view=diff
==============================================================================
--- geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/config/JarFileClassLoaderFactory.java (original)
+++ geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/config/JarFileClassLoaderFactory.java Wed Apr 22 18:52:43 2009
@@ -72,7 +72,7 @@
Artifact id = configuration.getId();
parentsById.put(id, configuration);
}
- //TODO why the complexigy? why not just use parents passed in?
+ //TODO why the complexigt? why not just use parents passed in?
for (Dependency dependency : transitiveDependencies) {
Artifact artifact = dependency.getArtifact();
if (parentsById.containsKey(artifact)) {
@@ -87,21 +87,13 @@
}
}
- //
- // Build the configuration class loader
- //
- ClassLoader configurationClassLoader = createConfigurationClasssLoader(parents, environment, classPath, classParents, dependencies, configurationResolver);
-
- ClassLoadingRules rules = environment.getClassLoadingRules();
- ClassLoader childrenConfigurationClassLoader = new ChildrenConfigurationClassLoader(configurationClassLoader, rules);
-
- return new ClassLoaderHolder(configurationClassLoader, childrenConfigurationClassLoader);
+ //
+ // Build the configuration class loader
+ //
+ return createConfigurationClasssLoader(parents, environment, classPath, classParents, dependencies, configurationResolver);
}
- private ClassLoader createConfigurationClasssLoader(Collection<Configuration> parents, Environment environment, LinkedHashSet<String> classPath, Collection<Configuration> classParents, LinkedHashSet<Artifact> dependencies, ConfigurationResolver configurationResolver) throws MalformedURLException, MissingDependencyException, NoSuchConfigException {
- // create the URL list
- LinkedHashMap<Artifact, URL[]> artifactToURL = buildClassPath(dependencies, classPath, configurationResolver, environment);
-
+ private ClassLoaderHolder createConfigurationClasssLoader(Collection<Configuration> parents, Environment environment, LinkedHashSet<String> classPath, Collection<Configuration> classParents, LinkedHashSet<Artifact> dependencies, ConfigurationResolver configurationResolver) throws MalformedURLException, MissingDependencyException, NoSuchConfigException {
// parents
List<ClassLoader> parentClassLoaders;
if (parents.size() == 0 && classParents.size() == 0) {
@@ -126,87 +118,85 @@
nonOverrideableRule.merge(parentNonOverrideableRule);
}
+ // create the URL list
+ LinkedHashMap<Artifact, URL[]> dependencyUrls = buildDependenciesClassPath(dependencies, configurationResolver);
+ URL[] resolvedClassPath = buildClassPath(classPath, configurationResolver);
+
if (log.isDebugEnabled()) {
StringBuffer buf = new StringBuffer("ClassLoader structure for configuration ").append(environment.getConfigId()).append("\n");
buf.append("Parent configurations:\n");
for (Configuration configuration : classParents) {
buf.append(" ").append(configuration.getId()).append("\n");
}
- buf.append("ClassPath:\n");
- for (URL[] urls : artifactToURL.values()) {
- for (URL url : urls) {
+ buf.append("dependencies:\n");
+ for (Map.Entry<Artifact, URL[]> dep : dependencyUrls.entrySet()) {
+ buf.append(" ").append(dep.getKey()).append("\n");
+ for (URL url : dep.getValue()) {
buf.append(" ").append(url).append("\n");
}
}
log.debug(buf.toString());
}
- if (true || Boolean.getBoolean("Xorg.apache.geronimo.OneClassLoaderPerJar")) {
- OneClassLoaderPerJarClassLoaderBuilder classLoaderBuilder = new OneClassLoaderPerJarClassLoaderBuilder();
- return classLoaderBuilder.build(environment, parentClassLoaders, classLoadingRules, artifactToURL, configurationResolver);
- }
+ OneClassLoaderPerJarClassLoaderBuilder classLoaderBuilder = new OneClassLoaderPerJarClassLoaderBuilder();
+ return classLoaderBuilder.build(environment, parentClassLoaders, classLoadingRules, dependencyUrls, resolvedClassPath, configurationResolver);
- URL[] urls = flattenedURLs(artifactToURL);
-
- // The JarFileClassLoader was created to address a locking problem seen only on Windows platforms.
- // It carries with it a slight performance penalty that needs to be addressed. Rather than make
- // *nix OSes carry this burden we'll engage the JarFileClassLoader for Windows or if the user
- // specifically requests it. We'll look more at this issue in the future.
- boolean useJarFileClassLoader;
- if (System.getProperty("Xorg.apache.geronimo.JarFileClassLoader") == null) {
- useJarFileClassLoader = System.getProperty("os.name").startsWith("Windows");
- } else {
- useJarFileClassLoader = Boolean.getBoolean("Xorg.apache.geronimo.JarFileClassLoader");
- }
- if (useJarFileClassLoader) {
- return new JarFileClassLoader(environment.getConfigId(),
- urls,
- parentClassLoaders,
- classLoadingRules);
- } else {
- return new MultiParentClassLoader(environment.getConfigId(),
- urls,
- parentClassLoaders,
- classLoadingRules);
- }
+// URL[] urls = flattenedURLs(artifactToURL);
+//
+// // The JarFileClassLoader was created to address a locking problem seen only on Windows platforms.
+// // It carries with it a slight performance penalty that needs to be addressed. Rather than make
+// // *nix OSes carry this burden we'll engage the JarFileClassLoader for Windows or if the user
+// // specifically requests it. We'll look more at this issue in the future.
+// boolean useJarFileClassLoader;
+// if (System.getProperty("Xorg.apache.geronimo.JarFileClassLoader") == null) {
+// useJarFileClassLoader = System.getProperty("os.name").startsWith("Windows");
+// } else {
+// useJarFileClassLoader = Boolean.getBoolean("Xorg.apache.geronimo.JarFileClassLoader");
+// }
+// if (useJarFileClassLoader) {
+// return new JarFileClassLoader(environment.getConfigId(),
+// urls,
+// parentClassLoaders,
+// classLoadingRules);
+// } else {
+// return new MultiParentClassLoader(environment.getConfigId(),
+// urls,
+// parentClassLoaders,
+// classLoadingRules);
+// }
}
- protected URL[] flattenedURLs(LinkedHashMap<Artifact, URL[]> artifactToURL) {
- Collection<URL[]> urlsCollection = artifactToURL.values();
- Set<URL> flattenedURLs = new HashSet<URL>();
- for (URL[] urls : urlsCollection) {
- for (URL url : urls) {
- flattenedURLs.add(url);
- }
- }
- return flattenedURLs.toArray(new URL[flattenedURLs.size()]);
- }
-
- private LinkedHashMap<Artifact, URL[]> buildClassPath(LinkedHashSet<Artifact> dependencies,
- LinkedHashSet<String> classPath,
- ConfigurationResolver configurationResolver,
- Environment environment) throws MalformedURLException, MissingDependencyException, NoSuchConfigException {
+// protected URL[] flattenedURLs(LinkedHashMap<Artifact, URL[]> artifactToURL) {
+// Collection<URL[]> urlsCollection = artifactToURL.values();
+// Set<URL> flattenedURLs = new HashSet<URL>();
+// for (URL[] urls : urlsCollection) {
+// for (URL url : urls) {
+// flattenedURLs.add(url);
+// }
+// }
+// return flattenedURLs.toArray(new URL[flattenedURLs.size()]);
+// }
+
+ private LinkedHashMap<Artifact, URL[]> buildDependenciesClassPath(LinkedHashSet<Artifact> dependencies,
+ ConfigurationResolver configurationResolver) throws MalformedURLException, MissingDependencyException, NoSuchConfigException {
LinkedHashMap<Artifact, URL[]> artifactToURL = new LinkedHashMap<Artifact, URL[]>();
for (Artifact artifact : dependencies) {
File file = configurationResolver.resolve(artifact);
- artifactToURL.put(artifact, new URL[] {file.toURL()});
+ artifactToURL.put(artifact, new URL[]{file.toURL()});
}
+ return artifactToURL;
+ }
+
+ private URL[] buildClassPath(LinkedHashSet<String> classPath,
+ ConfigurationResolver configurationResolver) throws MalformedURLException, MissingDependencyException, NoSuchConfigException {
+ Set<URL> allMatches = new HashSet<URL>();
if (classPath != null) {
- Set<URL> allMatches = new HashSet<URL>();
for (String pattern : classPath) {
Set<URL> matches = configurationResolver.resolve(pattern);
allMatches.addAll(matches);
}
- if (!allMatches.isEmpty()) {
- Artifact configId = environment.getConfigId();
- Artifact artifact = new Artifact(configId.getGroupId(),
- configId.getArtifactId() + "-classPath",
- configId.getVersion(),
- configId.getType());
- artifactToURL.put(artifact, allMatches.toArray(new URL[allMatches.size()]));
- }
}
- return artifactToURL;
+ return allMatches.toArray(new URL[allMatches.size()]);
}
}
Modified: geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/config/MultiParentClassLoader.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/config/MultiParentClassLoader.java?rev=767617&r1=767616&r2=767617&view=diff
==============================================================================
--- geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/config/MultiParentClassLoader.java (original)
+++ geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/config/MultiParentClassLoader.java Wed Apr 22 18:52:43 2009
@@ -53,8 +53,7 @@
*
* @version $Rev$ $Date$
*/
-public class MultiParentClassLoader extends URLClassLoader implements ConfigurationClassLoaderExtension
-{
+public class MultiParentClassLoader extends URLClassLoader implements ConfigurationClassLoaderExtension {
private static final Logger log = LoggerFactory.getLogger(MultiParentClassLoader.class);
private final Artifact id;
@@ -70,26 +69,26 @@
private final static int OPTIMIZED_SEARCH = 2;
private final static boolean LONG_CLASSLOADER_TO_STRING = false;
-
+
static {
- // Extract the classLoaderSearchMode if specified. If not, default to "safe".
- String mode = System.getProperty("Xorg.apache.geronimo.kernel.config.MPCLSearchOption");
- int runtimeMode = OPTIMIZED_SEARCH; // Default to optimized
- String runtimeModeMessage = "Original Classloading";
- if (mode != null) {
- if (mode.equals("safe")) {
+ // Extract the classLoaderSearchMode if specified. If not, default to "safe".
+ String mode = System.getProperty("Xorg.apache.geronimo.kernel.config.MPCLSearchOption");
+ int runtimeMode = OPTIMIZED_SEARCH; // Default to optimized
+ String runtimeModeMessage = "Original Classloading";
+ if (mode != null) {
+ if (mode.equals("safe")) {
runtimeMode = ORIGINAL_SEARCH;
runtimeModeMessage = "Safe ClassLoading";
- } else if (mode.equals("optimized"))
- runtimeMode = OPTIMIZED_SEARCH;
- }
-
- classLoaderSearchMode = runtimeMode;
- LoggerFactory.getLogger(MultiParentClassLoader.class).info(
- "ClassLoading behaviour has changed. The "+runtimeModeMessage+" mode is in effect. If you are experiencing a problem\n"+
- "you can change the behaviour by specifying -DXorg.apache.geronimo.kernel.config.MPCLSearchOption= property. Specify \n"+
- "=\"safe\" to revert to the original behaviour. This is a temporary change until we decide whether or not to make it\n"+
- "permanent for the 2.0 release");
+ } else if (mode.equals("optimized"))
+ runtimeMode = OPTIMIZED_SEARCH;
+ }
+
+ classLoaderSearchMode = runtimeMode;
+ LoggerFactory.getLogger(MultiParentClassLoader.class).info(
+ "ClassLoading behaviour has changed. The " + runtimeModeMessage + " mode is in effect. If you are experiencing a problem\n" +
+ "you can change the behaviour by specifying -DXorg.apache.geronimo.kernel.config.MPCLSearchOption= property. Specify \n" +
+ "=\"safe\" to revert to the original behaviour. This is a temporary change until we decide whether or not to make it\n" +
+ "permanent for the 2.0 release");
}
/**
@@ -101,7 +100,7 @@
public MultiParentClassLoader(Artifact id, URL[] urls) {
super(urls);
this.id = id;
-
+
parents = new ArrayList<ClassLoader>(Collections.singleton(ClassLoader.getSystemClassLoader()));
classLoadingRules = new ClassLoadingRules();
ClassLoaderRegistry.add(this);
@@ -191,7 +190,7 @@
super(urls, null, factory);
this.id = id;
this.parents = new ArrayList<ClassLoader>(parents);
-
+
classLoadingRules = new ClassLoadingRules();
ClassLoaderRegistry.add(this);
}
@@ -234,19 +233,19 @@
}
/**
- * TODO This method should be removed and replaced with the best classLoading option. Its intent is to
+ * TODO This method should be removed and replaced with the best classLoading option. Its intent is to
* provide a way for folks to switch back to the old classLoader if this fix breaks something.
*/
protected synchronized Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException {
- if (classLoaderSearchMode == ORIGINAL_SEARCH)
- return loadSafeClass(name, resolve);
- else
- return loadOptimizedClass(name, resolve);
+ if (classLoaderSearchMode == ORIGINAL_SEARCH)
+ return loadSafeClass(name, resolve);
+ else
+ return loadOptimizedClass(name, resolve);
}
-
+
/**
* This method executes the old class loading behaviour before optimization.
- *
+ *
* @param name
* @param resolve
* @return
@@ -317,22 +316,20 @@
}
throw new ClassNotFoundException(name + " in classloader " + id);
- }
-
+ }
+
/**
- *
* Optimized classloading.
- *
- * This method is the normal way to resolve class loads. This method recursively calls its parents to resolve
+ * <p/>
+ * This method is the normal way to resolve class loads. This method recursively calls its parents to resolve
* classloading requests. Here is the sequence of operations:
- *
- * 1. Call findLoadedClass to see if we already have this class loaded.
- * 2. If this class is a java.* or data primitive class, call the SystemClassLoader.
- * 3. If inverse loading and class is not in the non-overridable list, check the local ClassLoader.
- * 4. If the class is not a hidden class, search our parents, recursively. Keeping track of which parents have already been called.
- * Since MultiParentClassLoaders can appear more than once we do not search an already searched ClassLoader.
- * 5. Finally, search this ClassLoader.
- *
+ * <p/>
+ * 1. Call findLoadedClass to see if we already have this class loaded.
+ * 2. If this class is a java.* or data primitive class, call the SystemClassLoader.
+ * 3. If inverse loading and class is not in the non-overridable list, check the local ClassLoader.
+ * 4. If the class is not a hidden class, search our parents, recursively. Keeping track of which parents have already been called.
+ * Since MultiParentClassLoaders can appear more than once we do not search an already searched ClassLoader.
+ * 5. Finally, search this ClassLoader.
*/
protected synchronized Class<?> loadOptimizedClass(String name, boolean resolve) throws ClassNotFoundException {
@@ -355,7 +352,7 @@
name.equals("double") ||
name.equals("long")) {
try {
- return resolveClass(findSystemClass(name), resolve);
+ return resolveClass(findSystemClass(name), resolve);
} catch (ClassNotFoundException cnfe) {
// ignore...just being a good citizen.
}
@@ -371,18 +368,18 @@
} catch (ClassNotFoundException ignored) {
}
}
-
+
//
// Check parent class loaders
//
if (!isHiddenClass(name)) {
- try {
- LinkedList<ClassLoader> visitedClassLoaders = new LinkedList<ClassLoader>();
+ try {
+ LinkedList<ConfigurationClassLoaderExtension> visitedClassLoaders = new LinkedList<ConfigurationClassLoaderExtension>();
Class clazz = checkParents(name, resolve, visitedClassLoaders);
if (clazz != null) return resolveClass(clazz, resolve);
- } catch (ClassNotFoundException cnfe) {
- // ignore
- }
+ } catch (ClassNotFoundException cnfe) {
+ // ignore
+ }
}
//
@@ -401,19 +398,19 @@
throw new ClassNotFoundException(name + " in classloader " + id);
}
-
+
/**
* This method is an internal hook that allows us to be performant on Class lookups when multiparent
* classloaders are involved. We can bypass certain lookups that have already occurred in the initiating
* classloader. Also, we track the classLoaders that are visited by adding them to an already vistied list.
* In this way, we can bypass redundant checks for the same class.
- *
+ *
* @param name
* @param visitedClassLoaders
* @return
* @throws ClassNotFoundException
*/
- public synchronized Class<?> loadClassInternal(String name, boolean resolve, List<ClassLoader> visitedClassLoaders) throws ClassNotFoundException, MalformedURLException {
+ public synchronized Class<?> loadClassInternal(String name, boolean resolve, List<ConfigurationClassLoaderExtension> visitedClassLoaders) throws ClassNotFoundException, MalformedURLException {
//
// Check if class is in the loaded classes cache
//
@@ -427,13 +424,13 @@
//
if (!isHiddenClass(name)) {
try {
- Class clazz = checkParents(name, resolve, visitedClassLoaders);
- if (clazz != null) return resolveClass(clazz,resolve);
+ Class clazz = checkParents(name, resolve, visitedClassLoaders);
+ if (clazz != null) return resolveClass(clazz, resolve);
} catch (ClassNotFoundException cnfe) {
- // ignore
+ // ignore
}
}
-
+
//
// if we are not using inverse class loading, check local urls now
//
@@ -441,7 +438,7 @@
// have alredy checked he parent and the parent didn't have the
// class, so we can override now
if (!isDestroyed()) {
- Class clazz = findClass(name);
+ Class clazz = findClass(name);
return resolveClass(clazz, resolve);
}
@@ -449,40 +446,43 @@
}
/**
- * In order to optimize the classLoading process and visit a directed set of
- * classloaders this internal method for Geronimo MultiParentClassLoaders
+ * In order to optimize the classLoading process and visit a directed set of
+ * classloaders this internal method for Geronimo MultiParentClassLoaders
* is used. Effectively, as each classloader is visited it is passed a linked
* list of classloaders that have already been visited and can safely be skipped.
* This method assumes the context of an MPCL and is not for use external to this class.
- *
+ *
* @param name
* @param visitedClassLoaders
* @return
* @throws ClassNotFoundException
*/
- private synchronized Class<?> checkParents(String name, boolean resolve, List<ClassLoader> visitedClassLoaders) throws ClassNotFoundException {
+ private synchronized Class<?> checkParents(String name, boolean resolve, List<ConfigurationClassLoaderExtension> visitedClassLoaders) throws ClassNotFoundException {
for (ClassLoader parent : parents) {
if (!visitedClassLoaders.contains(parent)) {
- visitedClassLoaders.add(parent); // Track that we've been here before
+ //TODO inefficient
+ if (parent instanceof ConfigurationClassLoaderExtension) {
+ visitedClassLoaders.add((ConfigurationClassLoaderExtension) parent); // Track that we've been here before
+ }
try {
- if (parent instanceof MultiParentClassLoader) {
- Class clazz = ((MultiParentClassLoader) parent).loadClassInternal(name, resolve, visitedClassLoaders);
- if (clazz != null) return resolveClass(clazz, resolve);
- } else if (parent instanceof ChildrenConfigurationClassLoader) {
+ if (parent instanceof MultiParentClassLoader) {
+ Class clazz = ((MultiParentClassLoader) parent).loadClassInternal(name, resolve, visitedClassLoaders);
+ if (clazz != null) return resolveClass(clazz, resolve);
+ } else if (parent instanceof ChildrenConfigurationClassLoader) {
Class clazz = ((ChildrenConfigurationClassLoader) parent).loadClass(name, visitedClassLoaders);
if (clazz != null) return resolveClass(clazz, resolve);
- } else {
- return parent.loadClass(name);
- }
- } catch (ClassNotFoundException cnfe) {
+ } else {
+ return parent.loadClass(name);
+ }
+ } catch (ClassNotFoundException cnfe) {
// ignore
} catch (MalformedURLException me) {
log.debug("Failed findClass for {}", name, me);
}
}
- }
- // To avoid yet another CNFE we'll simply return null and let the caller handle appropriately.
- return null;
+ }
+ // To avoid yet another CNFE we'll simply return null and let the caller handle appropriately.
+ return null;
}
private boolean isNonOverridableClass(String name) {
@@ -619,7 +619,7 @@
return;
}
if (childClassLoader instanceof MultiParentClassLoader) {
- for (ClassLoader cl: ((MultiParentClassLoader)childClassLoader).parents) {
+ for (ClassLoader cl : ((MultiParentClassLoader) childClassLoader).parents) {
ancestors.add(cl);
getAncestorsInternal(ancestors, cl);
}
@@ -629,7 +629,7 @@
getAncestorsInternal(ancestors, cl);
}
}
-
+
public String toString() {
StringBuilder b = new StringBuilder();
if (LONG_CLASSLOADER_TO_STRING) {
@@ -644,14 +644,14 @@
b.append(indent).append("[").append(getClass().getName()).append(" id=").append(id).append("]\n");
b.append(indent).append("urls:\n");
String newIndent = indent + " ";
- for (URL url: getURLs()) {
+ for (URL url : getURLs()) {
b.append(newIndent).append(url).append("\n");
}
b.append(indent).append("parents:\n");
- for (ClassLoader cl: parents) {
+ for (ClassLoader cl : parents) {
if (cl instanceof MultiParentClassLoader) {
- ((MultiParentClassLoader)cl).toBuilder(b, newIndent);
+ ((MultiParentClassLoader) cl).toBuilder(b, newIndent);
} else {
b.append(newIndent).append(cl.toString()).append("\n");
}
@@ -710,5 +710,5 @@
ClassLoaderRegistry.remove(this);
super.finalize();
}
-
+
}
Modified: geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/config/classloading/BasicGlobalClassLoaderRegister.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/config/classloading/BasicGlobalClassLoaderRegister.java?rev=767617&r1=767616&r2=767617&view=diff
==============================================================================
--- geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/config/classloading/BasicGlobalClassLoaderRegister.java (original)
+++ geronimo/sandbox/djencks/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/config/classloading/BasicGlobalClassLoaderRegister.java Wed Apr 22 18:52:43 2009
@@ -32,29 +32,39 @@
public class BasicGlobalClassLoaderRegister implements GlobalClassLoaderRegister {
final Map<Artifact, Set<Artifact>> graph = new HashMap<Artifact, Set<Artifact>>();
- final Map<Artifact, GlobalClassLoader> register;
- final Map<Artifact, GlobalClassLoader> noVersionRegister;
+ final Map<Artifact, ConfigurationClassLoaderExtension> register;
+ final Map<Artifact, ConfigurationClassLoaderExtension> noVersionRegister;
+ private final Map<Artifact, Set<Artifact>> artifactToSourceDoc = new HashMap<Artifact, Set<Artifact>>();
public BasicGlobalClassLoaderRegister() {
- register = new HashMap<Artifact, GlobalClassLoader>();
- noVersionRegister = new HashMap<Artifact, GlobalClassLoader>();
+ register = new HashMap<Artifact, ConfigurationClassLoaderExtension>();
+ noVersionRegister = new HashMap<Artifact, ConfigurationClassLoaderExtension>();
}
- public void register(Artifact child, Set<Artifact> parents) {
+ public void register(Artifact child, Set<Artifact> parents, Artifact docSourceArtifact) {
if (child == null) throw new NullPointerException("child required");
if (parents == null) throw new NullPointerException("parents required");
+ Set<Artifact> oldSource = artifactToSourceDoc.get(child);
+ if (oldSource == null) {
+ oldSource = new HashSet<Artifact>();
+ artifactToSourceDoc.put(child, oldSource);
+ }
+ if (oldSource.contains(docSourceArtifact)) return; //hack to help with deployment by car-maven-plugin
Set<Artifact> old = graph.put(child, parents);
if (old != null && !old.equals(parents)) {
HashSet<Artifact> removed = new HashSet<Artifact>(old);
removed.removeAll(parents);
HashSet<Artifact> added = new HashSet<Artifact>(parents);
- added.removeAll(parents);
+ added.removeAll(old);
throw new IllegalArgumentException("parents of artifact: " + child +
- " changed:\nold: " + old +
- "\nnew: " + parents +
- "\nremoved: " + removed +
- "\n added: " + added);
+ " changed:\n old: " + old +
+ "\n new: " + parents +
+ "\n removed: " + removed +
+ "\n added: " + added +
+ "\n previously from sources: " + oldSource +
+ "\n now: " + docSourceArtifact);
}
+ oldSource.add(docSourceArtifact);
}
public void unregister(Artifact artifact) {
@@ -67,23 +77,28 @@
return parents;
}
- public void register(GlobalClassLoader classLoader) {
+ public void cleanClassLoaderRegistry() {
+ register.clear();
+ noVersionRegister.clear();
+ }
+
+ public void register(ConfigurationClassLoaderExtension classLoader) {
synchronized (register) {
- register.put(classLoader.getArtifact(), classLoader);
- noVersionRegister.put(strip(classLoader.getArtifact()), classLoader);
+ register.put(classLoader.getId(), classLoader);
+ noVersionRegister.put(strip(classLoader.getId()), classLoader);
}
}
- public void unregister(GlobalClassLoader classLoader) {
+ public void unregister(ConfigurationClassLoaderExtension classLoader) {
synchronized (register) {
- register.remove(classLoader.getArtifact());
- register.remove(strip(classLoader.getArtifact()));
+ register.remove(classLoader.getId());
+ register.remove(strip(classLoader.getId()));
}
}
- public GlobalClassLoader retrieve(Artifact artifact) {
+ public ConfigurationClassLoaderExtension retrieve(Artifact artifact) {
synchronized (register) {
- GlobalClassLoader cl = register.get(artifact);
+ ConfigurationClassLoaderExtension cl = register.get(artifact);
if (cl == null) {
cl = noVersionRegister.get(strip(artifact));
}