package org.codehaus.mojo.weblogic; /* * Copyright 2006 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import org.apache.maven.plugin.MojoExecutionException; import org.codehaus.mojo.weblogic.util.WeblogicMojoUtilities; import weblogic.webservice.tools.clientgen.ClientGen; import java.io.File; /** * Runs Client Gen on a given WSDL. * * @author <a href="mailto:scott@theryansplace.com">Scott Ryan</a> * @author <a href="mailto:josborn@belltracy.com">Jon Osborn</a> * @version $Id$ * @description This mojo will run client gen on a given WSDL. * @goal clientgen * @requiresDependencyResolution compile */ public class ClientGenMojo extends AbstractWeblogicMojo { /** * The wsdl to client gen from. * * @parameter default-value="http://localhost:7001" */ private String inputWSDL; /** * The directory to output the geneated code to. * * @parameter default-value="${basedir}/src/main/java" */ private String outputDir; /** * The package name of the output code. * * @parameter default-value="com.test.webservice" */ private String packageName; /** * The name of the service. * * @parameter default-value="test" */ private String serviceName; /** * The ear dependency flag. Use this in concert with the {@link #warName} parameter * to locate a wsdl inside of the webservice war file. * * @parameter default-value="false" */ private boolean useEarDependency; /** * The war name inside of the ear within which to find the wsdl file name. * * @parameter expression="${pom.artifactId}-${pom.version}.war" */ private String warName; /** * Set to true if the client gen should copy .class files from the classpath into the * target jar file. * * @parameter default-value="false" */ private boolean useServerTypes; /** * This method will run client gen on the given WSDL. * * @throws MojoExecutionException Thrown if we fail to obtain the WSDL. */ public void execute() throws MojoExecutionException { if ( getLog().isInfoEnabled() ) { getLog().info( "Weblogic client gen beginning " ); } if ( getLog().isDebugEnabled() ) { getLog().debug( "Plugin dependencies: " + this.getPluginArtifacts() ); } try { final ClientGen clientGen = new ClientGen(); if ( this.useEarDependency ) { clientGen.setEar( WeblogicMojoUtilities .getEarFileName( this.getArtifacts() ) ); clientGen.setWarName( this.warName ); if ( getLog().isInfoEnabled() ) { getLog().info( "Weblogic client gen using ear " + WeblogicMojoUtilities .getEarFileName( this.getArtifacts() ) + " with warName " + this.warName ); } } else { clientGen.setWSDL( this.inputWSDL ); } clientGen.setClientJar( new File( this.outputDir ) ); clientGen.setClientPackageName( this.packageName ); clientGen.setServiceName( this.serviceName ); clientGen.setUseServerTypes( this.useServerTypes ); // Set the classpath clientGen.setClasspath( WeblogicMojoUtilities.getDependencies( this.getArtifacts(), this.getPluginArtifacts() ) ); clientGen.generateClientJar(); } catch ( Exception ex ) { getLog().error( "Exception encountered during client gen ", ex ); throw new MojoExecutionException( "Exception encountered during listapps", ex ); } finally { WeblogicMojoUtilities.unsetWeblogicProtocolHandler(); } if ( getLog().isInfoEnabled() ) { getLog().info( "Weblogic client gen successful " ); } } /** * Getter for property input WSDL. * * @return The value of input WSDL. */ public String getInputWSDL() { return this.inputWSDL; } /** * Setter for the input WSDL. * * @param inInputWSDL The value of input WSDL. */ public void setInputWSDL( final String inInputWSDL ) { this.inputWSDL = inInputWSDL; } /** * Getter for property output dir. * * @return The value of output dir. */ public String getOutputDir() { return this.outputDir; } /** * Setter for the output dir. * * @param inOutputDir The value of output dir. */ public void setOutputDir( final String inOutputDir ) { this.outputDir = inOutputDir; } /** * Getter for property package name. * * @return The value of package name. */ public String getPackageName() { return this.packageName; } /** * Setter for the package name. * * @param inPackageName The value of package name. */ public void setPackageName( String inPackageName ) { this.packageName = inPackageName; } /** * Getter for property service name. * * @return The value of service name. */ public String getServiceName() { return this.serviceName; } /** * Setter for the service name. * * @param inServiceName The value of service name. */ public void setServiceName( final String inServiceName ) { this.serviceName = inServiceName; } /** * Getter for the ear dependency flag * * @return true if the mojo should look in the ear for the wsdl */ public boolean isUseEarDependency() { return useEarDependency; } /** * Setter for the ear dependency. * * @param useEarDependency true if the mojo should look in the ear for the wsdl */ public void setUseEarDependency( boolean useEarDependency ) { this.useEarDependency = useEarDependency; } /** * Getter for the name of the war to look inside for the wsdl file * * @return the war name inside of the ear */ public String getWarName() { return warName; } /** * The setter for the war name. Use this in conjuction with the {@link #useEarDependency} flag. * * @param warName the war name to look inside */ public void setWarName( String warName ) { this.warName = warName; } /** * Getter for the {@link #useServerTypes} parameter. Returns true if the client gen * should copy .class files from the class path instead of creating .java and compiling them. * * @return true if server types should be copied */ public boolean isUseServerTypes() { return useServerTypes; } /** * Setter for the {@link #useServerTypes} parameter. * * @param useServerTypes true if the server types should be used */ public void setUseServerTypes( boolean useServerTypes ) { this.useServerTypes = useServerTypes; } /** * toString method: creates a String representation of the object * * @return the String representation */ public String toString() { return "ClientGenMojo{" + "inputWSDL='" + inputWSDL + '\'' + ", outputDir='" + outputDir + '\'' + ", packageName='" + packageName + '\'' + ", serviceName='" + serviceName + '\'' + ", useEarDependency=" + useEarDependency + ", warName='" + warName + '\'' + ", useServerTypes=" + useServerTypes + '}'; } }