Author: veithen
Date: Sat May 19 10:38:37 2012
New Revision: 1340410
URL: http://svn.apache.org/viewvc?rev=1340410&view=rev
Log:
Generate and compile stubs using Maven instead of doing it programmatically in
the unit test.
Modified:
axis/axis2/java/core/trunk/modules/jibx/pom.xml
axis/axis2/java/core/trunk/modules/jibx/test/org/apache/axis2/jibx/Test.java
Modified: axis/axis2/java/core/trunk/modules/jibx/pom.xml
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jibx/pom.xml?rev=1340410&r1=1340409&r2=1340410&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/jibx/pom.xml (original)
+++ axis/axis2/java/core/trunk/modules/jibx/pom.xml Sat May 19 10:38:37 2012
@@ -114,6 +114,29 @@
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
+ <id>wsdl2java</id>
+ <phase>generate-test-sources</phase>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ <configuration>
+ <tasks unless="maven.test.skip">
+ <java
classname="org.apache.axis2.wsdl.WSDL2Java" fork="true">
+ <classpath refid="maven.test.classpath" />
+ <arg line="-uri
test-resources/wsdl/library.wsdl -o ${project.build.directory}/gen -d jibx -uw
-Ebindingfile test-resources/binding/library-binding.xml -ns2p
http://ws.sosnoski.com/library/wsdl=org.apache.axis2.jibx.library.unwrapped" />
+ </java>
+ <java
classname="org.apache.axis2.wsdl.WSDL2Java" fork="true">
+ <classpath refid="maven.test.classpath" />
+ <arg line="-uri
test-resources/wsdl/library.wsdl -o ${project.build.directory}/gen -d jibx
-Ebindingfile test-resources/binding/library-binding.xml -ns2p
http://ws.sosnoski.com/library/wsdl=org.apache.axis2.jibx.library.wrapped" />
+ </java>
+ <java
classname="org.apache.axis2.wsdl.WSDL2Java" fork="true">
+ <classpath refid="maven.test.classpath" />
+ <arg line="-uri
test-resources/wsdl/customer-echo.wsdl -o ${project.build.directory}/gen -d
jibx -Ebindingfile test-resources/binding/customer-binding.xml -ns2p
http://ws.apache.org/axis2/jibx/customer/wsdl=org.apache.axis2.jibx.customer" />
+ </java>
+ </tasks>
+ </configuration>
+ </execution>
+ <execution>
<id>compile</id>
<phase>test-compile</phase>
<configuration>
@@ -131,18 +154,22 @@
<goal>run</goal>
</goals>
</execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <executions>
<execution>
- <id>gen-cp</id>
<phase>generate-test-sources</phase>
- <configuration>
- <tasks unless="maven.test.skip">
- <property name="cp"
refid="maven.runtime.classpath" />
- <echo message="${cp}" file="target/cp.txt" />
- </tasks>
- </configuration>
<goals>
- <goal>run</goal>
+ <goal>add-test-source</goal>
</goals>
+ <configuration>
+ <sources>
+
<source>${project.build.directory}/gen/src</source>
+ </sources>
+ </configuration>
</execution>
</executions>
</plugin>
Modified:
axis/axis2/java/core/trunk/modules/jibx/test/org/apache/axis2/jibx/Test.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jibx/test/org/apache/axis2/jibx/Test.java?rev=1340410&r1=1340409&r2=1340410&view=diff
==============================================================================
---
axis/axis2/java/core/trunk/modules/jibx/test/org/apache/axis2/jibx/Test.java
(original)
+++
axis/axis2/java/core/trunk/modules/jibx/test/org/apache/axis2/jibx/Test.java
Sat May 19 10:38:37 2012
@@ -21,73 +21,24 @@ package org.apache.axis2.jibx;
import junit.framework.TestCase;
import org.apache.axis2.description.AxisService;
-import org.apache.axis2.util.CommandLineOption;
-import org.apache.axis2.util.CommandLineOptionConstants;
-import org.apache.axis2.util.CommandLineOptionParser;
+import org.apache.axis2.jibx.customer.EchoCustomerServiceStub;
import org.apache.axis2.util.Utils;
-import org.apache.axis2.wsdl.codegen.CodeGenerationEngine;
-import org.apache.axis2.wsdl.codegen.CodeGenerationException;
-import org.apache.axis2.wsdl.codegen.extension.JiBXExtension;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Target;
-import org.apache.tools.ant.taskdefs.Javac;
-import org.apache.tools.ant.types.Path;
import javax.xml.namespace.QName;
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.HashMap;
-import java.util.Map;
/**
* Full code generation and runtime test for JiBX data binding extension. This
is based on the
* XMLBeans test code.
*/
public class Test extends TestCase {
- private static final String TEST_CLASSES_DIR =
- System.getProperty("basedir", ".") + "/target/test-classes";
- private static final String OUTPUT_LOCATION_BASE =
- System.getProperty("basedir", ".") + "/target/gen";
- private static final String OUTPUT_LOCATION_PREFIX = "/test";
- private static final String WSDL_BASE_DIR =
- System.getProperty("basedir", ".") + "/test-resources/wsdl/";
- private static final String BINDING_BASE_DIR =
- System.getProperty("basedir", ".") + "/test-resources/binding/";
private static final String REPOSITORY_DIR =
System.getProperty("basedir", ".") + "/test-resources/repo/";
- private static final String CLASSES_DIR =
- System.getProperty("basedir", ".") + "/target/classes/";
- private static final String[] moduleNames = { "kernel", "core" };
- private static final String MODULE_PATH_PREFIX = "../modules/";
- private static final String COMPILE_TARGET_NAME = "compile";
- private static final String STUB_CLASS =
- "org.apache.ws.axis2.jibx.customer.wsdl.EchoCustomerServiceStub";
public static final QName serviceName = new QName("EchoCustomerService");
public static final QName operationName = new QName("echo");
private AxisService service;
- /**
- * Make the root output directory
- *
- * @throws Exception
- */
- protected void setUp() throws Exception {
- File outputFile = new File(OUTPUT_LOCATION_BASE);
- if (outputFile.exists() && outputFile.isDirectory()) {
- deleteDir(outputFile);
- outputFile.mkdir();
- } else {
- outputFile.mkdir();
- }
- }
-
private void startServer() throws Exception {
service = Utils.createSimpleService(serviceName,
Echo.class.getName(),
operationName);
@@ -95,25 +46,6 @@ public class Test extends TestCase {
UtilServer.deployService(service);
}
- /**
- * Deletes all files and subdirectories under dir. Returns true if all
deletions were
- * successful. If a deletion fails, the method stops attempting to delete
and returns false.
- */
- private boolean deleteDir(File dir) {
- if (dir.isDirectory()) {
- String[] children = dir.list();
- for (int i = 0; i < children.length; i++) {
- boolean success = deleteDir(new File(dir, children[i]));
- if (!success) {
- return false;
- }
- }
- }
-
- // The directory is now empty so delete it
- return dir.delete();
- }
-
private void stopServer() throws Exception {
UtilServer.unDeployService(serviceName);
UtilServer.stop();
@@ -123,178 +55,19 @@ public class Test extends TestCase {
} */
}
- /**
- * Handle linkage code generation.
- *
- * @param wsdl
- * @param binding
- * @param outdir
- * @param unwrap
- * @throws CodeGenerationException
- */
- private void codeGenerate(String wsdl, String binding, String outdir,
- boolean unwrap) throws CodeGenerationException {
-
- // create the option map
- Map optionMap = new HashMap();
-
optionMap.put(CommandLineOptionConstants.WSDL2JavaConstants.WSDL_LOCATION_URI_OPTION,
- new CommandLineOption(
-
CommandLineOptionConstants.WSDL2JavaConstants.WSDL_LOCATION_URI_OPTION,
- new String[] { wsdl }));
-
- //use default sync option - No option is given
- //use default async option - No option is given
- //use default language option - No option is given
-
- // output location
-
optionMap.put(CommandLineOptionConstants.WSDL2JavaConstants.OUTPUT_LOCATION_OPTION,
- new CommandLineOption(
-
CommandLineOptionConstants.WSDL2JavaConstants.OUTPUT_LOCATION_OPTION,
- new String[] { outdir }));
-
- // db is JiBX
-
optionMap.put(CommandLineOptionConstants.WSDL2JavaConstants.DATA_BINDING_TYPE_OPTION,
- new CommandLineOption(
-
CommandLineOptionConstants.WSDL2JavaConstants.DATA_BINDING_TYPE_OPTION,
- new String[] { "jibx" }));
-
- // unwrap if requested
- if (unwrap) {
-
optionMap.put(CommandLineOptionConstants.WSDL2JavaConstants.UNWRAP_PARAMETERS,
- new CommandLineOption(
-
CommandLineOptionConstants.WSDL2JavaConstants.UNWRAP_PARAMETERS,
- new String[0]));
- }
-
- // binding definition is supplied
- String option =
CommandLineOptionConstants.WSDL2JavaConstants.EXTRA_OPTIONTYPE_PREFIX +
- JiBXExtension.BINDING_PATH_OPTION;
- optionMap.put(option, new CommandLineOption(option, new String[] {
binding }));
-
- //TODO: Make this work
- //test case option is on
-// optionMap.put(
-// CommandLineOptionConstants.GENERATE_TEST_CASE_OPTION,
-// new CommandLineOption(
-// CommandLineOptionConstants.GENERATE_TEST_CASE_OPTION,
-// new String[0]));
- CommandLineOptionParser parser = new
CommandLineOptionParser(optionMap);
- new CodeGenerationEngine(parser).generate();
- }
-
- /**
- * Compile generated code.
- *
- * @param outdir
- */
- private void compile(String outdir) throws Exception {
- String cp = null;
- try {
- BufferedReader br = new BufferedReader(
- new FileReader(System.getProperty("basedir", ".") +
"/target/cp.txt"));
- cp = br.readLine();
- } catch (Exception e) {
- // Don't care
- }
- if (cp == null) {
- cp = "";
- }
-
- //using the ant javac task for compilation
- Javac javaCompiler = new Javac();
- Project codeGenProject = new Project();
- Target compileTarget = new Target();
-
- compileTarget.setName(COMPILE_TARGET_NAME);
- compileTarget.addTask(javaCompiler);
- codeGenProject.addTarget(compileTarget);
- codeGenProject.setSystemProperties();
- javaCompiler.setProject(codeGenProject);
- javaCompiler.setIncludejavaruntime(true);
- javaCompiler.setIncludeantruntime(true);
-
- /*
- This harmless looking setFork is actually very important. unless the
compiler is
- forked it wont work!
- */
- javaCompiler.setFork(true);
-
- //Create classpath - The generated output directories also become part
of the classpath
- //reason for this is that some codegenerators(XMLBeans) produce
compiled classes as part of
- //generated artifacts
- String classdir = outdir + "/classes";
- File outputLocationFile = new File(classdir);
- outputLocationFile.mkdir();
- Path classPath = new Path(codeGenProject, classdir);
- classPath.add(new Path(codeGenProject, TEST_CLASSES_DIR));
- classPath.addExisting(classPath.concatSystemClasspath(), false);
- for (int i = 0; i < moduleNames.length; i++) {
- classPath.add(new Path(codeGenProject,
- MODULE_PATH_PREFIX + moduleNames[i] +
CLASSES_DIR));
- }
- classPath.add(new Path(codeGenProject, cp));
-
- javaCompiler.setClasspath(classPath);
-
- //set sourcePath - The generated output directories also become part
of the sourcepath
- Path sourcePath = new Path(codeGenProject, outdir);
- sourcePath.setLocation(outputLocationFile);
- javaCompiler.setSrcdir(sourcePath);
-
- //output the classes into the output dir as well
- javaCompiler.setDestdir(outputLocationFile);
- javaCompiler.setDebug(true);
- javaCompiler.setVerbose(true);
- javaCompiler.execute();
-// codeGenProject.executeTarget(COMPILE_TARGET_NAME);
- }
-
public void testBuildAndRun() throws Exception {
startServer();
- // start by generating and compiling the Axis2 interface code
- String outdir =
- OUTPUT_LOCATION_BASE + OUTPUT_LOCATION_PREFIX;
- codeGenerate(WSDL_BASE_DIR + "customer-echo.wsdl",
- BINDING_BASE_DIR + "customer-binding.xml", outdir, false);
- compile(outdir);
-
// finish by testing a roundtrip call to the echo server
- File classesdir = new File(outdir + "/classes/");
- URLClassLoader loader = new URLClassLoader(new URL[] {
classesdir.toURL() },
-
this.getClass().getClassLoader());
- Class stub = loader.loadClass(STUB_CLASS);
Person person = new Person(42, "John", "Smith");
Customer customer = new Customer("Redmond", person, "+14258858080",
"WA", "14619 NE 80th Pl.", new
Integer(98052));
- Constructor constructor = stub.getConstructor(new Class[] {
-
"http://127.0.0.1:5555/axis2/services/EchoCustomerService/echo".getClass() });
- Object inst = constructor.newInstance(
- new Object[] {
"http://127.0.0.1:5555/axis2/services/EchoCustomerService/echo" });
- Method method = stub.getMethod("echo", new Class[] { Customer.class });
- Object result = method.invoke(inst, new Object[] { customer });
+ EchoCustomerServiceStub stub = new EchoCustomerServiceStub(
+
"http://127.0.0.1:5555/axis2/services/EchoCustomerService/echo");
+ Customer result = stub.echo(customer);
stopServer();
assertEquals("Result object does not match request object",
customer, result);
}
-
- public void testCompileWrapped() throws Exception {
-
- // generate and compile the Axis2 interface code
- String outdir = OUTPUT_LOCATION_BASE + OUTPUT_LOCATION_PREFIX;
- codeGenerate(WSDL_BASE_DIR + "library.wsdl",
- BINDING_BASE_DIR + "library-binding.xml", outdir, false);
- compile(outdir);
- }
-
- public void testCompileUnwrapped() throws Exception {
-
- // generate and compile the Axis2 interface code
- String outdir = OUTPUT_LOCATION_BASE + OUTPUT_LOCATION_PREFIX;
- codeGenerate(WSDL_BASE_DIR + "library.wsdl",
- BINDING_BASE_DIR + "library-binding.xml", outdir, true);
- compile(outdir);
- }
-
}