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()));