Title: [754] trunk/qdox/src/java/com/thoughtworks/qdox/model: Add ModelBuilderFactory

Diff

Modified: trunk/qdox/src/java/com/thoughtworks/qdox/library/AbstractClassLibrary.java (753 => 754)

--- trunk/qdox/src/java/com/thoughtworks/qdox/library/AbstractClassLibrary.java	2010-09-28 20:49:45 UTC (rev 753)
+++ trunk/qdox/src/java/com/thoughtworks/qdox/library/AbstractClassLibrary.java	2010-09-28 22:07:38 UTC (rev 754)
@@ -4,6 +4,14 @@
 import com.thoughtworks.qdox.JavaDocBuilder;
 import com.thoughtworks.qdox.model.JavaClass;
 
+/**
+ * A ClassLibrary can be compared with a java classloader. Its main task is to serve a JavaClass based on a FQN.
+ * This AbstractClassLibrary should be inherited by all ClassLibraries. 
+ * You can refer to a prent library, so these can be chained.
+ * Besides that it contains a context only for this library. It will hold the definitions of JavaClasses and JavaPackages 
+ * 
+ * @author Robert Scholte
+ */
 public abstract class AbstractClassLibrary
     implements ClassLibrary
 {

Modified: trunk/qdox/src/java/com/thoughtworks/qdox/library/OrderedClassLibraryBuilder.java (753 => 754)

--- trunk/qdox/src/java/com/thoughtworks/qdox/library/OrderedClassLibraryBuilder.java	2010-09-28 20:49:45 UTC (rev 753)
+++ trunk/qdox/src/java/com/thoughtworks/qdox/library/OrderedClassLibraryBuilder.java	2010-09-28 22:07:38 UTC (rev 754)
@@ -8,6 +8,8 @@
 import java.net.URL;
 
 import com.thoughtworks.qdox.model.JavaClass;
+import com.thoughtworks.qdox.model.ModelBuilder;
+import com.thoughtworks.qdox.model.ModelBuilderFactory;
 
 /**
  * This library resolves JavaClasses in the order in which class sources are added.
@@ -18,16 +20,32 @@
 {
 
     private ClassLibrary classLibrary;
+    
+    private ModelBuilderFactory modelBuilderFactory;
 
     private boolean debugLexer;
 
     private boolean debugParser;
-
+    
     public OrderedClassLibraryBuilder()
     {
+        modelBuilderFactory = new ModelBuilderFactory()
+        {
+            public ModelBuilder newInstance()
+            {
+                return new ModelBuilder();
+            }
+        };
         classLibrary = new ClassNameLibrary();
     }
 
+    public OrderedClassLibraryBuilder( ModelBuilderFactory modelBuilderFactory )
+    {
+        this.modelBuilderFactory = modelBuilderFactory;
+        classLibrary = new ClassNameLibrary();
+        
+    }
+
     /* (non-Javadoc)
      * @see com.thoughtworks.qdox.library.ClassLibraryBuilder#addClassLoader(java.lang.ClassLoader)
      */
@@ -48,7 +66,7 @@
     {
         if ( !( classLibrary instanceof SourceFolderLibrary ) )
         {
-            classLibrary = new SourceFolderLibrary( classLibrary );
+            classLibrary = new SourceFolderLibrary( modelBuilderFactory, classLibrary );
         }
         SourceFolderLibrary sourceFolderLibrary = (SourceFolderLibrary) classLibrary;
         sourceFolderLibrary.setDebugLexer( debugLexer );
@@ -64,7 +82,7 @@
     {
         if ( !( classLibrary instanceof SourceLibrary ) )
         {
-            classLibrary = new SourceLibrary( classLibrary );
+            classLibrary = new SourceLibrary( modelBuilderFactory, classLibrary );
         }
         SourceLibrary sourceLibrary = (SourceLibrary) classLibrary;
         sourceLibrary.setDebugLexer( debugLexer );
@@ -80,7 +98,7 @@
     {
         if ( !( classLibrary instanceof SourceLibrary ) )
         {
-            classLibrary = new SourceLibrary( classLibrary );
+            classLibrary = new SourceLibrary( modelBuilderFactory, classLibrary );
         }
         SourceLibrary sourceLibrary = (SourceLibrary) classLibrary;
         sourceLibrary.setDebugLexer( debugLexer );
@@ -124,7 +142,7 @@
     {
         if ( !( classLibrary instanceof SourceLibrary ) )
         {
-            classLibrary = new SourceLibrary( classLibrary );
+            classLibrary = new SourceLibrary( modelBuilderFactory, classLibrary );
         }
         SourceLibrary sourceLibrary = (SourceLibrary) classLibrary;
         sourceLibrary.setDebugLexer( debugLexer );
@@ -136,7 +154,7 @@
     {
         if ( !( classLibrary instanceof SourceLibrary ) )
         {
-            classLibrary = new SourceLibrary( classLibrary );
+            classLibrary = new SourceLibrary( modelBuilderFactory, classLibrary );
         }
         SourceLibrary sourceLibrary = (SourceLibrary) classLibrary;
         sourceLibrary.setDebugLexer( debugLexer );

Modified: trunk/qdox/src/java/com/thoughtworks/qdox/library/SortedClassLibraryBuilder.java (753 => 754)

--- trunk/qdox/src/java/com/thoughtworks/qdox/library/SortedClassLibraryBuilder.java	2010-09-28 20:49:45 UTC (rev 753)
+++ trunk/qdox/src/java/com/thoughtworks/qdox/library/SortedClassLibraryBuilder.java	2010-09-28 22:07:38 UTC (rev 754)
@@ -8,6 +8,8 @@
 import java.net.URL;
 
 import com.thoughtworks.qdox.model.JavaClass;
+import com.thoughtworks.qdox.model.ModelBuilder;
+import com.thoughtworks.qdox.model.ModelBuilderFactory;
 
 /**
  * @author Robert Scholte
@@ -27,10 +29,25 @@
     {
         classNameLibrary = new ClassNameLibrary();
         classLoaderLibrary = new ClassLoaderLibrary( classNameLibrary );
-        sourceFolderLibrary = new SourceFolderLibrary( classLoaderLibrary );
-        sourceLibrary = new SourceLibrary( sourceFolderLibrary );
+        ModelBuilderFactory modelBuilderFactory = new ModelBuilderFactory()
+        {
+            public ModelBuilder newInstance()
+            {
+                return new ModelBuilder();
+            }
+        };
+        sourceFolderLibrary = new SourceFolderLibrary( modelBuilderFactory, classLoaderLibrary );
+        sourceLibrary = new SourceLibrary( modelBuilderFactory, sourceFolderLibrary );
     }
 
+    public SortedClassLibraryBuilder( ModelBuilderFactory modelBuilderFactory )
+    {
+        classNameLibrary = new ClassNameLibrary();
+        classLoaderLibrary = new ClassLoaderLibrary( classNameLibrary );
+        sourceFolderLibrary = new SourceFolderLibrary( modelBuilderFactory, classLoaderLibrary );
+        sourceLibrary = new SourceLibrary( modelBuilderFactory, sourceFolderLibrary );
+    }
+
     public ClassLibraryBuilder appendClassLoader( ClassLoader classLoader )
     {
         classLoaderLibrary.addClassLoader( classLoader );

Modified: trunk/qdox/src/java/com/thoughtworks/qdox/library/SourceFolderLibrary.java (753 => 754)

--- trunk/qdox/src/java/com/thoughtworks/qdox/library/SourceFolderLibrary.java	2010-09-28 20:49:45 UTC (rev 753)
+++ trunk/qdox/src/java/com/thoughtworks/qdox/library/SourceFolderLibrary.java	2010-09-28 22:07:38 UTC (rev 754)
@@ -8,26 +8,27 @@
 import java.util.List;
 
 import com.thoughtworks.qdox.model.JavaClass;
+import com.thoughtworks.qdox.model.ModelBuilderFactory;
 
 public class SourceFolderLibrary
     extends SourceLibrary
 {
     private List sourceFolders = new ArrayList(); // <java.io.File>
 
-    public SourceFolderLibrary( ClassLibrary parent )
+    public SourceFolderLibrary( ModelBuilderFactory modelBuilderFactory, ClassLibrary parent  )
     {
-        super( parent );
+        super( modelBuilderFactory, parent );
     }
 
-    public SourceFolderLibrary( File sourceFolder )
+    public SourceFolderLibrary( ModelBuilderFactory modelBuilderFactory, File sourceFolder )
     {
-        super();
+        super( modelBuilderFactory );
         this.sourceFolders.add( sourceFolder );
     }
 
-    public SourceFolderLibrary( File sourceFolder, ClassLibrary parent )
+    public SourceFolderLibrary( ModelBuilderFactory modelBuilderFactory, File sourceFolder, ClassLibrary parent )
     {
-        super( parent );
+        super( modelBuilderFactory, parent );
         this.sourceFolders.add( sourceFolder );
     }
 

Modified: trunk/qdox/src/java/com/thoughtworks/qdox/library/SourceLibrary.java (753 => 754)

--- trunk/qdox/src/java/com/thoughtworks/qdox/library/SourceLibrary.java	2010-09-28 20:49:45 UTC (rev 753)
+++ trunk/qdox/src/java/com/thoughtworks/qdox/library/SourceLibrary.java	2010-09-28 22:07:38 UTC (rev 754)
@@ -7,6 +7,7 @@
 
 import com.thoughtworks.qdox.model.JavaClass;
 import com.thoughtworks.qdox.model.ModelBuilder;
+import com.thoughtworks.qdox.model.ModelBuilderFactory;
 import com.thoughtworks.qdox.parser.Lexer;
 import com.thoughtworks.qdox.parser.ParseException;
 import com.thoughtworks.qdox.parser.impl.JFlexLexer;
@@ -15,6 +16,8 @@
 public class SourceLibrary
     extends AbstractClassLibrary
 {
+    private ModelBuilderFactory modelBuilderFactory;
+    
     // parser and unused javaclasses
     private Map javaClassesMap = new Hashtable(); // <java.lang.String, com.thoughtworks.qdox.model.JavaClass>
 
@@ -22,12 +25,12 @@
 
     private boolean debugParser;
 
-    public SourceLibrary()
+    public SourceLibrary( ModelBuilderFactory modelBuilderFactory )
     {
         super();
     }
 
-    public SourceLibrary( ClassLibrary parent )
+    public SourceLibrary( ModelBuilderFactory modelBuilderFactory, ClassLibrary parent )
     {
         super( parent );
     }
@@ -64,7 +67,7 @@
         throws ParseException
     {
         JavaClass result = null;
-        ModelBuilder builder = new ModelBuilder();
+        ModelBuilder builder = modelBuilderFactory.newInstance();
         Parser parser = new Parser( lexer, builder );
         parser.setDebugLexer( debugLexer );
         parser.setDebugParser( debugParser );

Added: trunk/qdox/src/java/com/thoughtworks/qdox/model/ModelBuilderFactory.java (0 => 754)

--- trunk/qdox/src/java/com/thoughtworks/qdox/model/ModelBuilderFactory.java	                        (rev 0)
+++ trunk/qdox/src/java/com/thoughtworks/qdox/model/ModelBuilderFactory.java	2010-09-28 22:07:38 UTC (rev 754)
@@ -0,0 +1,6 @@
+package com.thoughtworks.qdox.model;
+
+public interface ModelBuilderFactory
+{
+    public ModelBuilder newInstance();
+}
Property changes on: trunk/qdox/src/java/com/thoughtworks/qdox/model/ModelBuilderFactory.java
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native


To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to