consolidate duplicate code
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/weaver/trunk@1744287 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/processor/src/main/java/org/apache/commons/weaver/CleanProcessor.java b/processor/src/main/java/org/apache/commons/weaver/CleanProcessor.java
index d49c5d8..af4004d 100644
--- a/processor/src/main/java/org/apache/commons/weaver/CleanProcessor.java
+++ b/processor/src/main/java/org/apache/commons/weaver/CleanProcessor.java
@@ -19,19 +19,14 @@
package org.apache.commons.weaver;
import java.io.File;
-import java.net.URLClassLoader;
-import java.util.LinkedHashSet;
import java.util.List;
import java.util.Properties;
import java.util.ServiceLoader;
-import java.util.Set;
import java.util.logging.Logger;
import org.apache.commons.weaver.lifecycle.WeaveLifecycle; //NOPMD used in javadoc
import org.apache.commons.weaver.model.WeaveEnvironment;
import org.apache.commons.weaver.spi.Cleaner;
-import org.apache.commons.weaver.utils.URLArray;
-import org.apache.xbean.finder.archive.FileArchive;
/**
* Implements {@link WeaveLifecycle#CLEAN}.
@@ -69,11 +64,6 @@
if (!target.exists()) {
log.warning("Target directory " + target + " does not exist; nothing to do!");
}
- final Set<String> finderClasspath = new LinkedHashSet<String>();
- finderClasspath.add(target.getAbsolutePath());
- finderClasspath.addAll(classpath);
- final ClassLoader classLoader = new URLClassLoader(URLArray.fromPaths(finderClasspath));
- final Finder finder = new Finder(new FileArchive(classLoader, target));
for (final Cleaner cleaner : providers) {
final WeaveEnvironment env = new LocalWeaveEnvironment(target, classLoader, configuration,
Logger.getLogger(cleaner.getClass().getName()));
diff --git a/processor/src/main/java/org/apache/commons/weaver/ProcessorBase.java b/processor/src/main/java/org/apache/commons/weaver/ProcessorBase.java
index 4aeea8f..1248821 100755
--- a/processor/src/main/java/org/apache/commons/weaver/ProcessorBase.java
+++ b/processor/src/main/java/org/apache/commons/weaver/ProcessorBase.java
@@ -19,17 +19,22 @@
package org.apache.commons.weaver;
import java.io.File;
+import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.LinkedHashSet;
import java.util.List;
import java.util.Properties;
import java.util.ServiceLoader;
+import java.util.Set;
import java.util.logging.Logger;
import org.apache.commons.lang3.Validate;
import org.apache.commons.weaver.lifecycle.WeaveLifecycle;
import org.apache.commons.weaver.spi.WeaveLifecycleProvider;
import org.apache.commons.weaver.utils.Providers;
+import org.apache.commons.weaver.utils.URLArray;
+import org.apache.xbean.finder.archive.FileArchive;
/**
* Base implementor of a {@link WeaveLifecycle} stage.
@@ -86,6 +91,16 @@
protected final Iterable<P> providers;
/**
+ * {@link ClassLoader} representing {@link #classpath}.
+ */
+ protected final ClassLoader classLoader;
+
+ /**
+ * {@link Finder} instance using for weaving.
+ */
+ protected final Finder finder;
+
+ /**
* Create a new {@link ProcessorBase} instance.
*
* @param classpath not {@code null}
@@ -100,6 +115,14 @@
Validate.isTrue(!target.exists() || target.isDirectory(), "%s is not a directory", target);
this.configuration = Validate.notNull(configuration, "configuration");
this.providers = Providers.sort(providers);
+ this.classLoader = createClassLoader();
+ this.finder = new Finder(new FileArchive(classLoader, target));
}
+ private ClassLoader createClassLoader() {
+ final Set<String> finderClasspath = new LinkedHashSet<String>();
+ finderClasspath.add(target.getAbsolutePath());
+ finderClasspath.addAll(classpath);
+ return new URLClassLoader(URLArray.fromPaths(finderClasspath));
+ }
}
diff --git a/processor/src/main/java/org/apache/commons/weaver/WeaveProcessor.java b/processor/src/main/java/org/apache/commons/weaver/WeaveProcessor.java
index b118def..d77dd93 100644
--- a/processor/src/main/java/org/apache/commons/weaver/WeaveProcessor.java
+++ b/processor/src/main/java/org/apache/commons/weaver/WeaveProcessor.java
@@ -19,19 +19,14 @@
package org.apache.commons.weaver;
import java.io.File;
-import java.net.URLClassLoader;
-import java.util.LinkedHashSet;
import java.util.List;
import java.util.Properties;
import java.util.ServiceLoader;
-import java.util.Set;
import java.util.logging.Logger;
import org.apache.commons.weaver.lifecycle.WeaveLifecycle; //NOPMD used in javadoc
import org.apache.commons.weaver.model.WeaveEnvironment;
import org.apache.commons.weaver.spi.Weaver;
-import org.apache.commons.weaver.utils.URLArray;
-import org.apache.xbean.finder.archive.FileArchive;
/**
* Implements {@link WeaveLifecycle#WEAVE}.
@@ -69,11 +64,6 @@
if (!target.exists()) {
log.warning("Target directory " + target + " does not exist; nothing to do!");
}
- final Set<String> finderClasspath = new LinkedHashSet<String>();
- finderClasspath.add(target.getAbsolutePath());
- finderClasspath.addAll(classpath);
- final ClassLoader classLoader = new URLClassLoader(URLArray.fromPaths(finderClasspath));
- final Finder finder = new Finder(new FileArchive(classLoader, target));
for (final Weaver weaver : providers) {
final WeaveEnvironment env = new LocalWeaveEnvironment(target, classLoader, configuration,
Logger.getLogger(weaver.getClass().getName()));