hammant 2002/10/20 02:19:29
Modified: src/java/org/apache/avalon/phoenix/tools/metagenerate
XinfoFactory.java XinfoHelper.java
src/test/org/apache/avalon/phoenix/tools/metagenerate/test
IntegrationTestCase.java TestBlock.java
Log:
version="x" for services and deps back.
Revision Changes Path
1.4 +39 -4
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.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- XinfoFactory.java 18 Oct 2002 08:44:07 -0000 1.3
+++ XinfoFactory.java 20 Oct 2002 09:19:29 -0000 1.4
@@ -41,11 +41,11 @@
public void generate() throws IOException
{
File file = new File( m_destDir,
- m_javaClass.getFullyQualifiedName().replace( '.',
File.separatorChar ) + ".xinfo" );
+ m_javaClass.getFullyQualifiedName().replace( '.', File.separatorChar )
+ ".xinfo" );
file.getParentFile().mkdirs();
XinfoHelper xinfo = new XinfoHelper( file );
- xinfo.writeHeader();
+ xinfo.writeHeader(getConfigurationSchema());
// services
@@ -74,7 +74,8 @@
for( int i = 0; i < services.length; i++ )
{
DocletTag service = services[ i ];
- xinfo.writeServiceLines( service.getNamedParameter( "name" ) );
+ xinfo.writeServiceLines( service.getNamedParameter( "name" ),
+ service.getNamedParameter("version") );
}
}
@@ -115,9 +116,43 @@
for( int i = 0; i < dependencies.length; i++ )
{
DocletTag dependency = dependencies[ i ];
- xinfo.writeDependencyLines( dependency.getNamedParameter(
"name" ) );
+ xinfo.writeDependencyLines( dependency.getNamedParameter(
"name" ),
+ dependency.getNamedParameter( "version" ) );
}
}
}
+ }
+
+ /**
+ * Get the configuaation schema type
+ * @return The type.
+ */
+ protected String getConfigurationSchema()
+ {
+ JavaMethod[] methods = m_javaClass.getMethods();
+ for (int j = 0; j < methods.length; j++)
+ {
+ // dependencies
+
+ JavaMethod method = methods[j];
+ if (method.getName().equals("configure")
+ && method.getReturns().equals(new Type("void",0))
+ && method.getParameters().length == 1
+ && method.getParameters()[0].getType().getValue().equals(
+
"org.apache.avalon.framework.configuration.Configuration"))
+ {
+ DocletTag[] dependencies =
method.getTagsByName("phoenix:configuration-schema");
+ for (int i = 0; i < dependencies.length; i++)
+ {
+ DocletTag dependency = dependencies[i];
+ String typeQt = dependency.getNamedParameter("type");
+ if (typeQt.length() > 2)
+ {
+ return typeQt.substring(1,typeQt.length()-1);
+ }
+ }
+ }
+ }
+ return null;
}
}
1.3 +76 -52
jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/tools/metagenerate/XinfoHelper.java
Index: XinfoHelper.java
===================================================================
RCS file:
/home/cvs/jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/tools/metagenerate/XinfoHelper.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- XinfoHelper.java 2 Oct 2002 11:11:58 -0000 1.2
+++ XinfoHelper.java 20 Oct 2002 09:19:29 -0000 1.3
@@ -13,55 +13,61 @@
/**
* A Xinfo Helper.
- * @author Paul Hammant
+ * @author Paul Hammant
*/
public class XinfoHelper extends AbstractHelper
{
private FileWriter m_output;
- private static final String[] HEADER = new String[] {
- "<?xml version=\"1.0\"?>",
- "<!DOCTYPE blockinfo PUBLIC \"-//PHOENIX/Block Info DTD Version 1.0//EN\"",
- "
\"http://jakarta.apache.org/avalon/dtds/phoenix/blockinfo_1_0.dtd\">",
- "",
- "<blockinfo>",
- "",
- " <!-- section to describe block -->",
- " <block>",
- " <version>1.0</version>",
- " </block>",
- "",
- " <!-- services that are offered by this block -->",
- " <services>" };
-
- private static final String[] SERVICE_LINES = new String[] {
- " <service name=\"@SERVICE-CLASS@\"/>" };
-
- private static final String[] END_OF_SERVICES = new String[] {
- " </services>",
- "",
- " <!-- interfaces that may be exported to manange this block -->",
- " <management-access-points>" };
-
- private static final String[] MANAGEMENT_LINE = new String[] {
- " <service name=@INTERFACE-NAME@/>" };
-
- private static final String[] END_OF_MGMT = new String[] {
- " </management-access-points>",
- "",
- " <!-- services that are required by this block -->",
- " <dependencies>" };
-
- private static final String[] DEPENDENCY_SECTION = new String[] {
-
- " <dependency>",
- " <service name=\"@SERVICE-CLASS@\"/>",
- " </dependency>" };
-
- private static final String[] FOOTER = new String[] {
- " </dependencies>",
- "</blockinfo>" };
+ private static final String[] HEADER1 = new String[] {
+ "<?xml version=\"1.0\"?>",
+ "<!DOCTYPE blockinfo PUBLIC \"-//PHOENIX/Block Info DTD Version 1.0//EN\"",
+ "
\"http://jakarta.apache.org/avalon/dtds/phoenix/blockinfo_1_0.dtd\">",
+ "",
+ "<blockinfo>",
+ "",
+ " <!-- section to describe block -->",
+ " <block>",
+ " <version>1.0</version>"};
+
+ private static final String[] HEADER2 = new String[]{
+ " <schema-type>@CONFIG-TYPE@</schema-type>"};
+
+ private static final String[] HEADER3 = new String[]{
+ " </block>",
+ "",
+ " <!-- services that are offered by this block -->",
+ " <services>"};
+
+ private static final String[] SERVICE_LINES = new String[]{
+ " <service name=\"@SERVICE-CLASS@\"@VERSION@/>"};
+
+ private static final String[] END_OF_SERVICES = new String[]{
+ " </services>",
+ "",
+ " <!-- interfaces that may be exported to manange this block -->",
+ " <management-access-points>"};
+
+ private static final String[] MANAGEMENT_LINE = new String[]{
+ " <service name=@INTERFACE-NAME@/>"};
+
+ private static final String[] END_OF_MGMT = new String[]{
+ " </management-access-points>",
+ "",
+ " <!-- services that are required by this block -->",
+ " <dependencies>"};
+
+ private static final String[] DEPENDENCY_SECTION = new String[]{
+
+ " <dependency>",
+ " <service name=\"@SERVICE-CLASS@\"@VERSION@/>",
+ " </dependency>"};
+
+ private static final String[] FOOTER = new String[]{
+ " </dependencies>",
+ "</blockinfo>"};
+
/**
* Construct
@@ -77,11 +83,25 @@
* Write the header
* @throws IOException If a problem writing output
*/
- public void writeHeader() throws IOException
+ public void writeHeader(String configType) throws IOException
{
- for (int i = 0; i < HEADER.length; i++)
+ for (int i = 0; i < HEADER1.length; i++)
+ {
+ m_output.write(HEADER1[i] + "\n");
+ }
+ if (configType != null)
{
- m_output.write(HEADER[i] + "\n");
+ for (int i = 0; i < HEADER2.length; i++)
+ {
+ String line = HEADER2[i];
+ line = replaceString(line, "@CONFIG-TYPE@", configType);
+ m_output.write(line + "\n");
+
+ }
+ }
+ for (int i = 0; i < HEADER3.length; i++)
+ {
+ m_output.write(HEADER3[i] + "\n");
}
}
@@ -90,13 +110,15 @@
* @param service The service name
* @throws IOException If a problem writing output
*/
- public void writeServiceLines(String service) throws IOException
+ public void writeServiceLines(String service, String version) throws IOException
{
+ version = version == null ? "" : " version=" + version;
for (int i = 0; i < SERVICE_LINES.length; i++)
{
- String line = SERVICE_LINES[i];
+ String line = SERVICE_LINES[i];
line = replaceString(line, "\"@SERVICE-CLASS@\"", service);
- m_output.write(line + "\n");
+ line = replaceString(line, "@VERSION@", version);
+ m_output.write(line + "\n");
}
}
@@ -116,7 +138,7 @@
{
for (int i = 0; i < MANAGEMENT_LINE.length; i++)
{
- String line = MANAGEMENT_LINE[i];
+ String line = MANAGEMENT_LINE[i];
line = replaceString(line, "@INTERFACE-NAME@", interfaceName);
m_output.write(line + "\n");
}
@@ -141,12 +163,14 @@
* @param dependency The Dependency
* @throws IOException If a problem writing output
*/
- public void writeDependencyLines(String dependency) throws IOException
+ public void writeDependencyLines(String dependency, String version) throws
IOException
{
+ version = version == null ? "" : " version=" + version;
for (int i = 0; i < DEPENDENCY_SECTION.length; i++)
{
- String line = DEPENDENCY_SECTION[i];
+ String line = DEPENDENCY_SECTION[i];
line = replaceString(line, "\"@SERVICE-CLASS@\"", dependency);
+ line = replaceString(line, "@VERSION@", version);
m_output.write(line + "\n");
}
}
1.3 +3 -2
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.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- IntegrationTestCase.java 2 Oct 2002 11:25:56 -0000 1.2
+++ IntegrationTestCase.java 20 Oct 2002 09:19:29 -0000 1.3
@@ -104,11 +104,12 @@
" <!-- section to describe block -->",
" <block>",
" <version>1.0</version>",
+ " <schema-type>abc</schema-type>",
" </block>",
"",
" <!-- services that are offered by this block -->",
" <services>",
- " <service name=\"blah.BlahService\"/>",
+ " <service name=\"blah.BlahService\" version=\"1.9\"/>",
" </services>",
"",
" <!-- interfaces that may be exported to manange this block -->",
@@ -119,7 +120,7 @@
" <!-- services that are required by this block -->",
" <dependencies>",
" <dependency>",
- " <service name=\"blah.OtherBlahService\"/>",
+ " <service name=\"blah.OtherBlahService\" version=\"1.2\"/>",
" </dependency>",
" </dependencies>",
" </blockinfo>" };
1.2 +12 -3
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.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TestBlock.java 1 Oct 2002 06:43:14 -0000 1.1
+++ TestBlock.java 20 Oct 2002 09:19:29 -0000 1.2
@@ -10,24 +10,33 @@
import org.apache.avalon.framework.service.ServiceException;
import org.apache.avalon.framework.service.ServiceManager;
import org.apache.avalon.framework.service.Serviceable;
+import org.apache.avalon.framework.configuration.Configurable;
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
/**
* Blah!
*
* @phoenix:block
- * @phoenix:service name="blah.BlahService"
+ * @phoenix:service name="blah.BlahService" version="1.9"
* @phoenix:mx name="YeeeHaaa"
*
*/
-public class TestBlock implements Serviceable
+public class TestBlock implements Serviceable, Configurable
{
/**
- * @phoenix:dependency name="blah.OtherBlahService"
+ * @phoenix:dependency name="blah.OtherBlahService" version="1.2"
*/
public void service( final ServiceManager serviceManager )
throws ServiceException
{
+ }
+
+ /**
+ * @phoenix:configuration-schema type="abc"
+ */
+ public void configure(Configuration configuration) throws
ConfigurationException {
}
--
To unsubscribe, e-mail: <mailto:avalon-cvs-unsubscribe@;jakarta.apache.org>
For additional commands, e-mail: <mailto:avalon-cvs-help@;jakarta.apache.org>