Author: dkulp
Date: Fri Apr 27 09:13:25 2007
New Revision: 533156

URL: http://svn.apache.org/viewvc?view=rev&rev=533156
Log:
Add ability to have j2w compile the generated wrapper classes

Modified:
    
incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/util/Compiler.java
    
incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/WrapperBeanGenerator.java
    
incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/java2wsdl.xml
    
incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/processor/JavaToProcessor.java
    
incubator/cxf/trunk/tools/wsdlto/databinding/jaxb/src/main/java/org/apache/cxf/tools/wsdlto/databinding/jaxb/TypesCodeWriter.java

Modified: 
incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/util/Compiler.java
URL: 
http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/util/Compiler.java?view=diff&rev=533156&r1=533155&r2=533156
==============================================================================
--- 
incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/util/Compiler.java
 (original)
+++ 
incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/util/Compiler.java
 Fri Apr 27 09:13:25 2007
@@ -23,8 +23,36 @@
 import java.io.FileWriter;
 import java.io.IOException;
 import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
 
 public class Compiler {
+    public boolean compileFiles(String[] files, File outputDir) {
+        List<String> list = new ArrayList<String>();
+        list.add("javac");
+        
+        if (outputDir != null) {
+            list.add("-d");
+            
list.add(outputDir.getAbsolutePath().replace(File.pathSeparatorChar, '/'));
+        }
+        
+        String javaClasspath = System.getProperty("java.class.path");
+        boolean classpathSetted = javaClasspath != null ? true : false;
+        if (!classpathSetted) {
+            list.add("-extdirs");
+            list.add(getClass().getClassLoader().getResource(".").getFile() + 
"../lib/");
+        } else {
+            list.add("-classpath");
+            list.add(javaClasspath);
+        }
+        
+        int idx = list.size();
+        list.addAll(Arrays.asList(files));
+        
+        return internalCompile(list.toArray(new String[list.size()]), idx);
+    }
+    
     public boolean internalCompile(String[] args, int sourceFileIndex) {
         Process p = null;
         String cmdArray[] = null;

Modified: 
incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/WrapperBeanGenerator.java
URL: 
http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/WrapperBeanGenerator.java?view=diff&rev=533156&r1=533155&r2=533156
==============================================================================
--- 
incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/WrapperBeanGenerator.java
 (original)
+++ 
incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/generator/wsdl11/WrapperBeanGenerator.java
 Fri Apr 27 09:13:25 2007
@@ -43,6 +43,7 @@
 import org.apache.cxf.tools.java2wsdl.generator.AbstractGenerator;
 import org.apache.cxf.tools.java2wsdl.processor.internal.jaxws.RequestWrapper;
 import org.apache.cxf.tools.java2wsdl.processor.internal.jaxws.ResponseWrapper;
+import org.apache.cxf.tools.util.Compiler;
 import org.apache.cxf.tools.util.JAXBUtils;
 import org.apache.cxf.tools.wsdlto.databinding.jaxb.JAXBBindErrorListener;
 import org.apache.cxf.tools.wsdlto.databinding.jaxb.TypesCodeWriter;
@@ -51,6 +52,7 @@
 public final class WrapperBeanGenerator extends AbstractGenerator<File> {
 
     private Class<?> serviceClass;
+    private File compileToDir;
     
     public File generate(final File sourcedir) {
         File dir = getOutputBase();
@@ -63,6 +65,10 @@
         generateWrapperBeanClasses(getServiceModel(), dir);
         return sourcedir;
     }
+    
+    public void setCompileToDir(File f) {
+        compileToDir = f;
+    }
 
 
     public Class<?> getServiceClass() {
@@ -152,11 +158,29 @@
         filter.include(wrapperClasses);
         
         try {
+            TypesCodeWriter writer = new TypesCodeWriter(dir, new 
ArrayList<String>());
             createOutputDir(dir);
-            jcodeModel.build(new TypesCodeWriter(dir, new 
ArrayList<String>()));
+            jcodeModel.build(writer);
+            
+            if (compileToDir != null) {
+                //compile the classes
+                Compiler compiler = new Compiler();
+
+                List<String> files = new 
ArrayList<String>(writer.getGeneratedFiles().size());
+                for (File file : writer.getGeneratedFiles()) {
+                    files.add(file.getAbsolutePath());
+                }
+                if (!compiler.compileFiles(files.toArray(new 
String[files.size()]),
+                                           compileToDir)) {
+                    //TODO - compile issue
+                }
+
+            }
+            
         } catch (Exception e) {
             e.printStackTrace();
         }
+        
     }
     
 }

Modified: 
incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/java2wsdl.xml
URL: 
http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/java2wsdl.xml?view=diff&rev=533156&r1=533155&r2=533156
==============================================================================
--- 
incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/java2wsdl.xml
 (original)
+++ 
incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/java2wsdl.xml
 Fri Apr 27 09:13:25 2007
@@ -64,6 +64,14 @@
                                <annotation>source-directory</annotation>
                            </associatedArgument>
                        </option>
+                       <option id="classdir" maxOccurs="1">
+                           <annotation>The directory in which the generated 
sources are compiled into.  If not 
+                           specified, the files are not compiled.</annotation>
+                <switch>classdir</switch>
+                <associatedArgument placement="afterSpace">
+                    <annotation>compile-classes-directory</annotation>
+                </associatedArgument>
+                       </option>
                        
                        <option id="classpath" maxOccurs="1">
                                <annotation>

Modified: 
incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/processor/JavaToProcessor.java
URL: 
http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/processor/JavaToProcessor.java?view=diff&rev=533156&r1=533155&r2=533156
==============================================================================
--- 
incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/processor/JavaToProcessor.java
 (original)
+++ 
incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/processor/JavaToProcessor.java
 Fri Apr 27 09:13:25 2007
@@ -92,6 +92,7 @@
         WrapperBeanGenerator generator = new WrapperBeanGenerator();
         generator.setOutputBase(getSourceDir());
         generator.setServiceClass(getServiceClass());
+        generator.setCompileToDir(getClassesDir());
         return generator;
     }
 
@@ -223,8 +224,15 @@
         return (String) this.context.get(ToolConstants.CFG_SERVICENAME);
     }
 
-    public File getSourceDir() {
+    File getSourceDir() {
         String dir = (String) this.context.get(ToolConstants.CFG_SOURCEDIR);
+        if (StringUtils.isEmpty(dir)) {
+            return null;
+        }
+        return new File(dir);
+    }
+    File getClassesDir() {
+        String dir = (String) this.context.get(ToolConstants.CFG_CLASSDIR);
         if (StringUtils.isEmpty(dir)) {
             return null;
         }

Modified: 
incubator/cxf/trunk/tools/wsdlto/databinding/jaxb/src/main/java/org/apache/cxf/tools/wsdlto/databinding/jaxb/TypesCodeWriter.java
URL: 
http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/wsdlto/databinding/jaxb/src/main/java/org/apache/cxf/tools/wsdlto/databinding/jaxb/TypesCodeWriter.java?view=diff&rev=533156&r1=533155&r2=533156
==============================================================================
--- 
incubator/cxf/trunk/tools/wsdlto/databinding/jaxb/src/main/java/org/apache/cxf/tools/wsdlto/databinding/jaxb/TypesCodeWriter.java
 (original)
+++ 
incubator/cxf/trunk/tools/wsdlto/databinding/jaxb/src/main/java/org/apache/cxf/tools/wsdlto/databinding/jaxb/TypesCodeWriter.java
 Fri Apr 27 09:13:25 2007
@@ -36,6 +36,8 @@
     
     private List<String> excludeFileList = new ArrayList<String>();
     private List<String> excludePkgList;
+    
+    private List<File> generatedFiles = new ArrayList<File>();
 
     public TypesCodeWriter(File ftarget, List<String> excludePkgs) throws 
IOException {
         target = ftarget;
@@ -43,9 +45,15 @@
     }
 
     public OutputStream openBinary(JPackage pkg, String fileName) throws 
IOException {
+        File f = getFile(pkg, fileName);
+        generatedFiles.add(f);
         return new FileOutputStream(getFile(pkg, fileName));
     }
 
+    public List<File> getGeneratedFiles() {
+        return generatedFiles;
+    }
+    
     protected File getFile(JPackage pkg, String fileName) throws IOException {
         String dirName = pkg.name().replace('.', File.separatorChar);
         File dir = pkg.isUnnamed() ? target : new File(target, dirName);


Reply via email to