Author: mmerz
Date: Tue Mar 1 14:41:58 2005
New Revision: 155834
URL: http://svn.apache.org/viewcvs?view=rev&rev=155834
Log:
Improvements:
- process each web service file only once (used to be twice under certain
circumstances)
- eliminate warnings during processing of web service files
Modified:
incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/jsr181/model/jsr181/Jsr181ObjectModelStore.java
incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/jsr181/processor/apt/WsmAnnotationProcessor.java
Modified:
incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/jsr181/model/jsr181/Jsr181ObjectModelStore.java
URL:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/jsr181/model/jsr181/Jsr181ObjectModelStore.java?view=diff&r1=155833&r2=155834
==============================================================================
---
incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/jsr181/model/jsr181/Jsr181ObjectModelStore.java
(original)
+++
incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/jsr181/model/jsr181/Jsr181ObjectModelStore.java
Tue Mar 1 14:41:58 2005
@@ -26,6 +26,10 @@
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
+import com.sun.mirror.apt.AnnotationProcessorEnvironment;
+import com.sun.mirror.apt.Filer;
+import com.sun.mirror.apt.Messager;
+
import java.net.URL;
import org.apache.beehive.wsm.jsr181.model.BeehiveWsTypeMetadata;
@@ -37,12 +41,19 @@
private final static String EXTENSION = ".ser";
private final static String LOCATOR = ".webservices";
+
+ private static boolean isMarked = false;
+
+ private AnnotationProcessorEnvironment env;
/**
* Constructor.
*/
- private Jsr181ObjectModelStore() {
- // empty
+ public Jsr181ObjectModelStore(AnnotationProcessorEnvironment env) {
+ if (null == env) {
+ throw new IllegalArgumentException("illegal apt environment:
<null>");
+ }
+ this.env = env;
}
/**
@@ -90,10 +101,10 @@
return objectModel;
}
+
/**
* @param os
* @param objectModel
- */
public static void store(OutputStream os, BeehiveWsTypeMetadata
objectModel)
throws IOException
{
@@ -107,6 +118,44 @@
}
oos = new ObjectOutputStream(os);
oos.writeObject(objectModel);
+
+ if (! isMarked) {
+
+ isMarked = true;
+ }
+ }
+ finally {
+ if (null != oos) {
+ oos.flush();
+ oos.close();
+ }
+ }
+ }
+ */
+
+ /**
+ * @param os
+ * @param objectModel
+ */
+ public void store(BeehiveWsTypeMetadata objectModel)
+ throws IOException
+ {
+ OutputStream os =
env.getFiler().createBinaryFile(Filer.Location.CLASS_TREE, "",
getLocation(objectModel.getClassName()));
+ ObjectOutputStream oos = null;
+ try {
+ if (null == os) {
+ throw new IOException("cannot persist object model without
output stream");
+ }
+ if (null == objectModel) {
+ throw new IOException("cannot persist empty object model ");
+ }
+ oos = new ObjectOutputStream(os);
+ oos.writeObject(objectModel);
+
+ if (! isMarked) {
+ env.getFiler().createBinaryFile(Filer.Location.CLASS_TREE, "",
new java.io.File(".webservices"));
+ isMarked = true;
+ }
}
finally {
if (null != oos) {
Modified:
incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/jsr181/processor/apt/WsmAnnotationProcessor.java
URL:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/jsr181/processor/apt/WsmAnnotationProcessor.java?view=diff&r1=155833&r2=155834
==============================================================================
---
incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/jsr181/processor/apt/WsmAnnotationProcessor.java
(original)
+++
incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/jsr181/processor/apt/WsmAnnotationProcessor.java
Tue Mar 1 14:41:58 2005
@@ -49,12 +49,14 @@
public class WsmAnnotationProcessor extends TwoPhaseAnnotationProcessor {
private Set<TypeDeclaration> handledDecls = new HashSet<TypeDeclaration>();
+ private Jsr181ObjectModelStore oms;
/**
* Constructor.
*/
public WsmAnnotationProcessor(Set<AnnotationTypeDeclaration> atds,
AnnotationProcessorEnvironment env) {
super (atds, env);
+ oms = new Jsr181ObjectModelStore(env);
}
/**
@@ -115,13 +117,7 @@
}
// persist object model
-
Jsr181ObjectModelStore.store(_env.getFiler().createBinaryFile(Filer.Location.CLASS_TREE,
"", Jsr181ObjectModelStore.getLocation(classDecl.getQualifiedName())), om);
- // todo: this needs to move into Jsr181ObjectModelStore -- use IoC to
provide context
- try {
- _env.getFiler().createBinaryFile(Filer.Location.CLASS_TREE,
"", new java.io.File(".webservices"));
- }
- catch (Throwable t) { }
- // todo:
+ oms.store(om);
}
// service endpoint interface
@@ -137,7 +133,7 @@
}
// store the object model
-
Jsr181ObjectModelStore.store(_env.getFiler().createBinaryFile(Filer.Location.CLASS_TREE,
"", Jsr181ObjectModelStore.getLocation(interfaceDecl.getQualifiedName())), om);
+ oms.store(om);
}
// @WebService annotation on unknown/unsupported type definition