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


Reply via email to