cvs commit: spice/sandbox/repository/componenthaus/src/java/org/componenthaus/ant NotAPublicInterfaceBuildException.java ComponentMetadataTask.java NotAnInterfaceBuildException.java
Mike Hogan <[email protected]> Wed, 05 Nov 2003 11:35:50 -0800
| Newsgroups | gmane.comp.java.spice.cvs |
|---|---|
| Message-ID | <[email protected]> |
hogie 03/11/05 11:35:50
Modified: sandbox/repository/componenthaus/src/java/org/componenthaus/ant
ComponentMetadataTask.java
Added: sandbox/repository/componenthaus/src/java/org/componenthaus/ant
NotAPublicInterfaceBuildException.java
Removed: sandbox/repository/componenthaus/src/java/org/componenthaus/ant
NotAnInterfaceBuildException.java
Log:
* Can have classes as service interfaces
* Can have more than one service interface per submission
Revision Changes Path
1.3 +46 -32 spice/sandbox/repository/componenthaus/src/java/org/componenthaus/ant/ComponentMetadataTask.java
Index: ComponentMetadataTask.java
===================================================================
RCS file: /cvsroot/spice/spice/sandbox/repository/componenthaus/src/java/org/componenthaus/ant/ComponentMetadataTask.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ComponentMetadataTask.java 3 Nov 2003 21:15:29 -0000 1.2
+++ ComponentMetadataTask.java 5 Nov 2003 19:35:50 -0000 1.3
@@ -16,8 +16,10 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.Iterator;
//TODO Accept multiple interface names
+
public class ComponentMetadataTask extends Task {
static final String metadataFilename = "metadata.xml";
@@ -29,7 +31,7 @@
interfaceNames = new ArrayList();
}
- public ComponentMetadataTask(String []interfaceNames, String sourceDirectory, String targetdirectory) {
+ public ComponentMetadataTask(String[] interfaceNames, String sourceDirectory, String targetdirectory) {
this();
this.interfaceNames = Arrays.asList(interfaceNames);
this.sourceDirectory = sourceDirectory;
@@ -37,7 +39,7 @@
}
public ComponentMetadataTask(String interfacename, String sourceDirectory, String targetdirectory) {
- this(new String[]{interfacename},sourceDirectory,targetdirectory);
+ this(new String[]{interfacename}, sourceDirectory, targetdirectory);
}
public InterfaceSpec createInterface() {
@@ -58,26 +60,26 @@
}
private void assertParametersAreOk() {
- if ( interfaceNames.size() == 0 || interfaceNames.get(0) == null) {
+ if (interfaceNames.size() == 0 || interfaceNames.get(0) == null) {
throw new NoInterfacesSpecifiedBuildException();
}
- assertNotNull(sourceDirectory,"sourceDirectory");
- assertNotNull(targetDirectory,"targetDirectory");
+ assertNotNull(sourceDirectory, "sourceDirectory");
+ assertNotNull(targetDirectory, "targetDirectory");
assertDirectoryIsOk(new File(sourceDirectory), sourceDirectory);
assertDirectoryIsOk(new File(targetDirectory), targetDirectory);
}
private void assertNotNull(String property, String propertyName) {
- if ( property == null ) {
+ if (property == null) {
throw new ParameterNotSpecifiedBuildException(propertyName);
}
}
private void assertDirectoryIsOk(File dir, String directoryName) {
- if ( !dir.exists()) {
+ if (!dir.exists()) {
throw new DirectoryDoesNotExistBuildException(directoryName);
}
- if ( ! dir.isDirectory()) {
+ if (!dir.isDirectory()) {
throw new NotADirectoryBuildException(directoryName);
}
}
@@ -85,29 +87,49 @@
private void doExecute() {
JavaDocBuilder builder = new JavaDocBuilder();
builder.addSourceTree(new File(sourceDirectory));
- final String interfaceName = interfaceNames.size() > 0 ? (String) interfaceNames.iterator().next() : null; //Just for now, until I deal properly with many interfaces
+ final ComponentMetadata componentMetadata = new ComponentMetadata();
+ addMetadataForInterfaces(builder, componentMetadata);
+
+ File metadataFile = new File(targetDirectory, metadataFilename);
+ try {
+ metadataFile.createNewFile();
+ } catch (IOException e) {
+ throw new IOBuildException(e);
+ }
+
+ try {
+ FileWriter writer = new FileWriter(metadataFile);
+ writer.write(componentMetadata.toXml());
+ writer.close();
+ } catch (IOException e) {
+ throw new IOBuildException(e);
+ }
+ }
+
+ private void addMetadataForInterfaces(JavaDocBuilder builder, final ComponentMetadata componentMetadata) {
+ for (Iterator i = interfaceNames.iterator(); i.hasNext();) {
+ final String interfaceName = (String) i.next();
+ InterfaceMetadata interfaceMetadata = getInterfaceMetadata(builder, interfaceName);
+ componentMetadata.addInterface(interfaceMetadata);
+ }
+ }
+
+ private InterfaceMetadata getInterfaceMetadata(JavaDocBuilder builder, final String interfaceName) {
final JavaClass interfaceAsClass = builder.getClassByName(interfaceName);
- if ( interfaceAsClass == null ) {
+ if (interfaceAsClass == null) {
throw new NoSuchJavaSourceFileBuildException(interfaceName);
}
final String javadoc = interfaceAsClass.getComment();
- if ( javadoc == null || "".equals(javadoc)) {
+ if (javadoc == null || "".equals(javadoc)) {
throw new NoJavadocBuildException(interfaceName);
}
- if ( ! interfaceAsClass.isInterface() ) {
- throw new NotAnInterfaceBuildException(interfaceName);
- }
-
- File metadataFile = new File(targetDirectory,metadataFilename);
- try {
- metadataFile.createNewFile();
- } catch (IOException e) {
- throw new IOBuildException(e);
+ if (!interfaceAsClass.isPublic()) {
+ throw new NotAPublicInterfaceBuildException(interfaceName);
}
String source = null;
try {
- source = loadFile(new File(sourceDirectory,asDirectory(interfaceName) + ".java"));
+ source = loadFile(new File(sourceDirectory, asDirectory(interfaceName) + ".java"));
} catch (IOException e) {
throw new IOBuildException(e);
}
@@ -116,26 +138,18 @@
interfaceAsClass.getName(),
interfaceAsClass.getComment(),
source);
- ComponentMetadata componentMetadata = new ComponentMetadata();
- componentMetadata.addInterface(interfaceMetadata);
- try {
- FileWriter writer = new FileWriter(metadataFile);
- writer.write(componentMetadata.toXml());
- writer.close();
- } catch (IOException e) {
- throw new IOBuildException(e);
- }
+ return interfaceMetadata;
}
private String asDirectory(String javaPackageName) {
- return javaPackageName.replaceAll("\\.","/"); //File.separator does not work here for some reason
+ return javaPackageName.replaceAll("\\.", "/"); //File.separator does not work here for some reason
}
private String loadFile(File file) throws IOException {
StringWriter writer = new StringWriter();
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = reader.readLine();
- while ( line != null ) {
+ while (line != null) {
writer.write(line + "\n");
line = reader.readLine();
}
1.1 spice/sandbox/repository/componenthaus/src/java/org/componenthaus/ant/NotAPublicInterfaceBuildException.java
Index: NotAPublicInterfaceBuildException.java
===================================================================
package org.componenthaus.ant;
import org.apache.tools.ant.BuildException;
public class NotAPublicInterfaceBuildException extends BuildException {
private final String interfaceName;
public NotAPublicInterfaceBuildException(String interfaceName) {
super("Class file " + interfaceName + " is not a service interface");
this.interfaceName = interfaceName;
}
public String getInterfaceName() {
return interfaceName;
}
}
-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
Does SourceForge.net help you be more productive? Does it
help you create better code? SHARE THE LOVE, and help us help
YOU! Click Here: http://sourceforge.net/donate/