hammant 2002/10/20 03:25:51
Modified: src/java/org/apache/avalon/phoenix/tools/metagenerate
MetaGenerateQdoxTask.java XinfoFactory.java
src/test/org/apache/avalon/phoenix/tools/metagenerate/test
IntegrationTestCase.java TestBlock.java
Log:
Start of inheritance work. Though there issome bug in qdox I think.
Revision Changes Path
1.3 +11 -1
jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/tools/metagenerate/MetaGenerateQdoxTask.java
Index: MetaGenerateQdoxTask.java
===================================================================
RCS file:
/home/cvs/jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/tools/metagenerate/MetaGenerateQdoxTask.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- MetaGenerateQdoxTask.java 2 Oct 2002 11:11:58 -0000 1.2
+++ MetaGenerateQdoxTask.java 20 Oct 2002 10:25:50 -0000 1.3
@@ -22,6 +22,7 @@
{
private File m_destDir;
+ private boolean m_inheritance = true;
/**
* Execute
@@ -51,6 +52,15 @@
}
/**
+ * Inheritence : should parent classes of blocks be queried too?
+ * @param inheritance
+ */
+ public void setInheritance(boolean inheritance)
+ {
+ m_inheritance = inheritance;
+ }
+
+ /**
* Output the classes
* @throws IOException If a problem writing output
*/
@@ -63,7 +73,7 @@
DocletTag block = javaClass.getTagByName("phoenix:block");
if (block != null)
{
- XinfoFactory factory = new XinfoFactory(m_destDir, javaClass);
+ XinfoFactory factory = new XinfoFactory(m_destDir, javaClass,
m_inheritance);
factory.generate();
}
DocletTag topic = javaClass.getTagByName("phoenix:mx-topic");
1.5 +53 -7
jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/tools/metagenerate/XinfoFactory.java
Index: XinfoFactory.java
===================================================================
RCS file:
/home/cvs/jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/tools/metagenerate/XinfoFactory.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- XinfoFactory.java 20 Oct 2002 09:19:29 -0000 1.4
+++ XinfoFactory.java 20 Oct 2002 10:25:51 -0000 1.5
@@ -13,6 +13,8 @@
import com.thoughtworks.qdox.model.Type;
import java.io.File;
import java.io.IOException;
+import java.util.HashMap;
+import java.util.Iterator;
/**
* A Xinfo Factory
@@ -22,16 +24,21 @@
{
private JavaClass m_javaClass;
private File m_destDir;
+ private HashMap m_services = new HashMap();
+ private HashMap m_dependencies = new HashMap();
+ private boolean m_inheritance;
+
/**
* Construct a factory for a class.
* @param destDir
* @param javaClass
*/
- public XinfoFactory( File destDir, JavaClass javaClass )
+ public XinfoFactory( File destDir, JavaClass javaClass, boolean inheritance )
{
m_javaClass = javaClass;
m_destDir = destDir;
+ m_inheritance = inheritance;
}
/**
@@ -49,7 +56,7 @@
// services
- processServiceInterfaces( xinfo );
+ processServiceInterfaces( xinfo, m_inheritance );
xinfo.writeEndOfServicesSection();
@@ -68,15 +75,54 @@
* @param xinfo the xinfo helper
* @throws IOException If a problem
*/
- private void processServiceInterfaces( XinfoHelper xinfo ) throws IOException
+ private void processServiceInterfaces( XinfoHelper xinfo, boolean inheritance )
+ throws IOException
{
- DocletTag[] services = m_javaClass.getTagsByName( "phoenix:service" );
- for( int i = 0; i < services.length; i++ )
+ JavaClass javaClass = m_javaClass;
+ while (m_javaClass == javaClass || (javaClass != null && inheritance))
{
- DocletTag service = services[ i ];
- xinfo.writeServiceLines( service.getNamedParameter( "name" ),
+ DocletTag[] services = javaClass.getTagsByName( "phoenix:service" );
+ for( int i = 0; i < services.length; i++ )
+ {
+ DocletTag service = services[ i ];
+ String serviceName = service.getNamedParameter( "name" );
+ m_services.put( serviceName, service );
+ }
+ //javaClass = getParentClass(javaClass); // Bug in QDox?
+ javaClass = null;
+ }
+
+
+
+ Iterator it = m_services.keySet().iterator();
+ while (it.hasNext())
+ {
+ String serviceName = (String) it.next();
+ DocletTag service = (DocletTag) m_services.get( serviceName );
+ xinfo.writeServiceLines( serviceName,
service.getNamedParameter("version") );
+
+ }
+
+ }
+
+ private JavaClass getParentClass(JavaClass javaClass)
+ {
+ String parentClassName = javaClass.getSuperClass().getValue();
+ System.out.println("--> p " + parentClassName);
+ JavaClass[] parentSourceClasses = javaClass.getParentSource().getClasses();
+ javaClass = null;
+ for (int i = 0; i < parentSourceClasses.length; i++)
+ {
+ JavaClass parentClass = parentSourceClasses[i];
+ System.out.println("--> p2 " + parentClass.getFullyQualifiedName());
+ if (parentClassName.equals(parentClass.getFullyQualifiedName()))
+ {
+ javaClass = parentClass;
+ }
+
}
+ return javaClass;
}
/**
1.4 +1 -0
jakarta-avalon-phoenix/src/test/org/apache/avalon/phoenix/tools/metagenerate/test/IntegrationTestCase.java
Index: IntegrationTestCase.java
===================================================================
RCS file:
/home/cvs/jakarta-avalon-phoenix/src/test/org/apache/avalon/phoenix/tools/metagenerate/test/IntegrationTestCase.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- IntegrationTestCase.java 20 Oct 2002 09:19:29 -0000 1.3
+++ IntegrationTestCase.java 20 Oct 2002 10:25:51 -0000 1.4
@@ -110,6 +110,7 @@
" <!-- services that are offered by this block -->",
" <services>",
" <service name=\"blah.BlahService\" version=\"1.9\"/>",
+ // " <service name=\"blah.FooService\"/>",
" </services>",
"",
" <!-- interfaces that may be exported to manange this block -->",
1.3 +2 -2
jakarta-avalon-phoenix/src/test/org/apache/avalon/phoenix/tools/metagenerate/test/TestBlock.java
Index: TestBlock.java
===================================================================
RCS file:
/home/cvs/jakarta-avalon-phoenix/src/test/org/apache/avalon/phoenix/tools/metagenerate/test/TestBlock.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- TestBlock.java 20 Oct 2002 09:19:29 -0000 1.2
+++ TestBlock.java 20 Oct 2002 10:25:51 -0000 1.3
@@ -22,7 +22,7 @@
* @phoenix:mx name="YeeeHaaa"
*
*/
-public class TestBlock implements Serviceable, Configurable
+public class TestBlock extends TestParentBlock implements Serviceable, Configurable
{
/**
* @phoenix:dependency name="blah.OtherBlahService" version="1.2"
@@ -30,7 +30,7 @@
public void service( final ServiceManager serviceManager )
throws ServiceException
{
-
+ super.service(serviceManager);
}
/**
--
To unsubscribe, e-mail: <mailto:avalon-cvs-unsubscribe@;jakarta.apache.org>
For additional commands, e-mail: <mailto:avalon-cvs-help@;jakarta.apache.org>