cvs commit: spice/sandbox/metaclass/src/java/org/realityforge/metaclass/tools/compiler ClassDescriptorCompiler.java CompilerMonitor.java DefaultCompilerMonitor.java
Peter Donald <[email protected]> Tue, 18 Nov 2003 03:12:35 -0800
| Newsgroups | gmane.comp.java.spice.cvs |
|---|---|
| Message-ID | <[email protected]> |
donaldp 03/11/18 03:12:34
Modified: sandbox/metaclass/src/java/org/realityforge/metaclass/tools/compiler
ClassDescriptorCompiler.java CompilerMonitor.java
DefaultCompilerMonitor.java
Log:
Implement Compacting of ClassDescriptors prior to serialization.
Revision Changes Path
1.13 +50 -2 spice/sandbox/metaclass/src/java/org/realityforge/metaclass/tools/compiler/ClassDescriptorCompiler.java
Index: ClassDescriptorCompiler.java
===================================================================
RCS file: /cvsroot/spice/spice/sandbox/metaclass/src/java/org/realityforge/metaclass/tools/compiler/ClassDescriptorCompiler.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- ClassDescriptorCompiler.java 5 Nov 2003 23:15:36 -0000 1.12
+++ ClassDescriptorCompiler.java 18 Nov 2003 11:12:34 -0000 1.13
@@ -28,13 +28,14 @@
import org.realityforge.metaclass.model.ClassDescriptor;
import org.realityforge.metaclass.tools.qdox.QDoxAttributeInterceptor;
import org.realityforge.metaclass.tools.qdox.QDoxDescriptorParser;
+import org.realityforge.metaclass.tools.packer.ClassDescriptorPacker;
/**
* A bean that can create MetaClass descriptors by processing
* Java Source files with qdox.
*
* @author <a href="mailto:peter at realityforge.org">Peter Donald</a>
- * @version $Revision: 1.12 $ $Date: 2003/11/05 23:15:36 $
+ * @version $Revision: 1.13 $ $Date: 2003/11/18 11:12:34 $
*/
public class ClassDescriptorCompiler
{
@@ -44,6 +45,12 @@
private static final QDoxDescriptorParser c_infoBuilder = new QDoxDescriptorParser();
/**
+ * Flag indicating whether the compacter
+ * should methods with no attributes.
+ */
+ private boolean m_keepEmptyMethods;
+
+ /**
* Destination directory
*/
private File m_destDir;
@@ -79,6 +86,16 @@
private final List m_filters = new ArrayList();
/**
+ * Set flag indicating whether Compacter should keep empty methods.
+ *
+ * @param keepEmptyMethods the flag
+ */
+ public void setKeepEmptyMethods( final boolean keepEmptyMethods )
+ {
+ m_keepEmptyMethods = keepEmptyMethods;
+ }
+
+ /**
* Set the monitor to receive messages about compiler operation.
*
* @param monitor the monitor.
@@ -216,7 +233,12 @@
m_monitor.postFilterJavaClassList( classes );
final Collection descriptors = buildClassDescriptors( filteredClasses );
- writeClassDescriptors( descriptors );
+ m_monitor.postBuildDescriptorsList( descriptors );
+
+ final Set output = compactClassDescriptors( descriptors );
+ m_monitor.postCompactDescriptorsList( descriptors );
+
+ writeClassDescriptors( output );
}
/**
@@ -331,6 +353,32 @@
continue;
}
classes.add( javaClass );
+ }
+ return classes;
+ }
+
+
+ /**
+ * Return the set of ClassDescriptors after cmpaction.
+ *
+ * @param input the list of input ClassDescriptors to compact
+ * @return list of ClassDescriptors to serialize
+ */
+ private Set compactClassDescriptors( final Collection input )
+ {
+ final ClassDescriptorPacker packer =
+ new ClassDescriptorPacker( m_keepEmptyMethods );
+ final Set classes = new HashSet();
+ final Iterator iterator = input.iterator();
+ while( iterator.hasNext() )
+ {
+ final ClassDescriptor candidate = (ClassDescriptor)iterator.next();
+ final ClassDescriptor descriptor = packer.pack( candidate );
+ if( null == descriptor )
+ {
+ continue;
+ }
+ classes.add( descriptor );
}
return classes;
}
1.4 +16 -1 spice/sandbox/metaclass/src/java/org/realityforge/metaclass/tools/compiler/CompilerMonitor.java
Index: CompilerMonitor.java
===================================================================
RCS file: /cvsroot/spice/spice/sandbox/metaclass/src/java/org/realityforge/metaclass/tools/compiler/CompilerMonitor.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- CompilerMonitor.java 16 Oct 2003 06:53:12 -0000 1.3
+++ CompilerMonitor.java 18 Nov 2003 11:12:34 -0000 1.4
@@ -16,7 +16,7 @@
* can monitor events that occur during compilation.
*
* @author <a href="mailto:peter at realityforge.org">Peter Donald</a>
- * @version $Revision: 1.3 $ $Date: 2003/10/16 06:53:12 $
+ * @version $Revision: 1.4 $ $Date: 2003/11/18 11:12:34 $
*/
public interface CompilerMonitor
{
@@ -60,4 +60,19 @@
* @param t the error
*/
void errorGeneratingDescriptor( String classname, Throwable t );
+
+ /**
+ * Called to notify Monitor about the set of ClassDescriptors created.
+ *
+ * @param descriptors the ClassDescriptors compiled.
+ */
+ void postBuildDescriptorsList( Collection descriptors );
+
+ /**
+ * Called to notify Monitor about the set of ClassDescriptors
+ * after compacting.
+ *
+ * @param descriptors the ClassDescriptors post compacting.
+ */
+ void postCompactDescriptorsList( Collection descriptors );
}
1.4 +17 -2 spice/sandbox/metaclass/src/java/org/realityforge/metaclass/tools/compiler/DefaultCompilerMonitor.java
Index: DefaultCompilerMonitor.java
===================================================================
RCS file: /cvsroot/spice/spice/sandbox/metaclass/src/java/org/realityforge/metaclass/tools/compiler/DefaultCompilerMonitor.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- DefaultCompilerMonitor.java 16 Oct 2003 06:53:12 -0000 1.3
+++ DefaultCompilerMonitor.java 18 Nov 2003 11:12:34 -0000 1.4
@@ -15,7 +15,7 @@
* The default no-op implementation of compiler monitor.
*
* @author <a href="mailto:peter at realityforge.org">Peter Donald</a>
- * @version $Revision: 1.3 $ $Date: 2003/10/16 06:53:12 $
+ * @version $Revision: 1.4 $ $Date: 2003/11/18 11:12:34 $
*/
public class DefaultCompilerMonitor
implements CompilerMonitor
@@ -52,7 +52,22 @@
/**
* @see CompilerMonitor#errorGeneratingDescriptor
*/
- public void errorGeneratingDescriptor( String classname, Throwable t )
+ public void errorGeneratingDescriptor( final String classname,
+ final Throwable t )
+ {
+ }
+
+ /**
+ * @see CompilerMonitor#postBuildDescriptorsList
+ */
+ public void postBuildDescriptorsList( final Collection descriptors )
+ {
+ }
+
+ /**
+ * @see CompilerMonitor#postCompactDescriptorsList
+ */
+ public void postCompactDescriptorsList( final Collection descriptors )
{
}
}
-------------------------------------------------------
This SF. Net email is sponsored by: GoToMyPC
GoToMyPC is the fast, easy and secure way to access your computer from
any Web browser or wireless device. Click here to Try it Free!
https://www.gotomypc.com/tr/OSDN/AW/Q4_2003/t/g22lp?Target=mm/g22lp.tmpl