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);