descriptor if ejbjar has cmpversion="2.0" set PR: 14709 Submitted by: Rob van Oostrum (rvanoo at xs4all dot nl) git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@274637 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -389,6 +389,12 @@ Bugzilla Report 19180. | |||
| * <junit>'s nested <formatter> elements now support if/unless clauses. | |||
| * <ejbjar> | |||
| cmpversion attribute added | |||
| jboss element will look for jbosscmp-jdbc.xml descriptor | |||
| if ejbjar has cmpversion="2.0" set | |||
| Bugzilla Reports 14707 and 14709. | |||
| Changes from Ant 1.5.2 to Ant 1.5.3 | |||
| =================================== | |||
| @@ -19,6 +19,7 @@ | |||
| <li>Conor MacNeill</li> | |||
| <li>Cyrille Morvan (<a href="mailto:cmorvan@ingenosya.com">cmorvan@ingenosya.com</a>)</li> | |||
| <li>Greg Nelson (<a href="mailto:gn@sun.com">gn@sun.com</a>)</li> | |||
| <li>Rob van Oostrum(<a href="mailto:rvanoo@xs4all.nl">rvanoo@xs4all.nl</a>)</li> | |||
| </ul> | |||
| <p>Version @VERSION@<br> | |||
| @@ -716,6 +717,13 @@ the value <code>none</code>.</p> | |||
| deployment elements have been specified).</td> | |||
| <td valign="top" align="center">Yes</td> | |||
| </tr> | |||
| <tr> | |||
| <td valign="top">cmpversion</td> | |||
| <td valign="top">Either <code>1.0</code> or <code>2.0</code>.<br/> | |||
| Default is <code>1.0</code>.<br/> | |||
| A CMP 2.0 implementation exists currently only for JBoss.</td> | |||
| <td valign="top" align="center">No</td> | |||
| </tr> | |||
| <tr> | |||
| <td valign="top">naming</td> | |||
| <td valign="top">Controls the naming convention used to name generated | |||
| @@ -844,8 +852,18 @@ deployment element are detailed here. | |||
| <h3><a name="ejbjar_jboss">Jboss element</a></h3> | |||
| <p>The jboss element searches for the JBoss specific deployment descriptors and adds them | |||
| to the final ejb jar file. JBoss has two deployment descriptors jboss.xml and jaws.xml | |||
| (for container manager persistence only). The JBoss server uses hot deployment and does | |||
| to the final ejb jar file. JBoss has two deployment descriptors: | |||
| <ul><li>jboss.xml</li> | |||
| <li>for container manager persistence:<br/> | |||
| <table border="1"> | |||
| <tr><td><b>CMP version</b></td><td><b>File name</b></td></tr> | |||
| <tr><td>CMP 1.0</td><td>jaws.xml</td></tr> | |||
| <tr><td>CMP 2.0</td><td>jbosscmp-jdbc.xml</td></tr> | |||
| </table> | |||
| </li> | |||
| </ul> | |||
| <br/> | |||
| . The JBoss server uses hot deployment and does | |||
| not require compilation of additional stubs and skeletons.</p> | |||
| <table border="1" cellpadding="2" cellspacing="0"> | |||
| @@ -1,7 +1,7 @@ | |||
| /* | |||
| * The Apache Software License, Version 1.1 | |||
| * | |||
| * Copyright (c) 2000-2002 The Apache Software Foundation. All rights | |||
| * Copyright (c) 2000-2003 The Apache Software Foundation. All rights | |||
| * reserved. | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| @@ -91,7 +91,8 @@ import org.xml.sax.SAXException; | |||
| * | |||
| * @author <a href="mailto:tfennell@sapient.com">Tim Fennell</a> | |||
| * @author Conor MacNeill | |||
| */ | |||
| * @author <a href="mailto:rvanoo@xs4all.nl">Rob van Oostrum</a> | |||
| * */ | |||
| public class EjbJar extends MatchingTask { | |||
| /** | |||
| @@ -201,6 +202,21 @@ public class EjbJar extends MatchingTask { | |||
| } | |||
| } | |||
| /** | |||
| * CMP versions supported | |||
| * valid CMP versions are 1.0 and 2.0 | |||
| * @since ant 1.6 | |||
| */ | |||
| public static class CMPVersion extends EnumeratedAttribute { | |||
| public static final String CMP1_0 = "1.0"; | |||
| public static final String CMP2_0 = "2.0"; | |||
| public String[] getValues() { | |||
| return new String[]{ | |||
| CMP1_0, | |||
| CMP2_0, | |||
| }; | |||
| } | |||
| } | |||
| /** | |||
| * The config which is built by this task and used by the various deployment | |||
| * tools to access the configuration of the ejbjar task | |||
| @@ -219,10 +235,12 @@ public class EjbJar extends MatchingTask { | |||
| /** Instance variable that stores the suffix for the generated jarfile. */ | |||
| private String genericJarSuffix = "-generic.jar"; | |||
| /** Instance variable that stores the CMP version for the jboss jarfile. */ | |||
| private String cmpVersion = CMPVersion.CMP1_0; | |||
| /** The list of deployment tools we are going to run. */ | |||
| private ArrayList deploymentTools = new ArrayList(); | |||
| /** | |||
| * Add a deployment tool to the list of deployment tools that will be | |||
| * processed | |||
| @@ -444,6 +462,15 @@ public class EjbJar extends MatchingTask { | |||
| } | |||
| } | |||
| /** | |||
| * Gets the destination directory. | |||
| * | |||
| * @return destination directory | |||
| * @since ant 1.6 | |||
| */ | |||
| public File getDestdir() { | |||
| return this.destDir; | |||
| } | |||
| /** | |||
| * Set the destination directory. The EJB jar files will be written into | |||
| @@ -459,6 +486,29 @@ public class EjbJar extends MatchingTask { | |||
| this.destDir = inDir; | |||
| } | |||
| /** | |||
| * Gets the CMP version. | |||
| * | |||
| * @return CMP version | |||
| * @since ant 1.6 | |||
| */ | |||
| public String getCmpversion() { | |||
| return this.cmpVersion; | |||
| } | |||
| /** | |||
| * Sets the CMP version. | |||
| * | |||
| * @param version CMP version. | |||
| * Must be either <code>1.0</code> or <code>2.0</code>.<br/> | |||
| * Default is <code>1.0</code>.<br/> | |||
| * Initially, only the JBoss implementation does something specific for CMP 2.0.<br/> | |||
| * @since ant 1.6 | |||
| */ | |||
| public void setCmpversion( CMPVersion version ) { | |||
| this.cmpVersion = version.getValue(); | |||
| } | |||
| /** | |||
| * Set the classpath to use when resolving classes for inclusion in the jar. | |||
| * | |||
| @@ -599,6 +649,7 @@ public class EjbJar extends MatchingTask { | |||
| throw new BuildException(msg, pce); | |||
| } | |||
| } // end of execute() | |||
| } | |||
| @@ -55,6 +55,7 @@ package org.apache.tools.ant.taskdefs.optional.ejb; | |||
| import java.io.File; | |||
| import java.util.Hashtable; | |||
| import org.apache.tools.ant.BuildException; | |||
| import org.apache.tools.ant.Project; | |||
| /** | |||
| @@ -63,12 +64,14 @@ import org.apache.tools.ant.Project; | |||
| * compilation. | |||
| * | |||
| * @author <a href="mailto:p.austin@talk21.com">Paul Austin</a> | |||
| * @author <a href="mailto:rvanoo@xs4all.nl">Rob van Oostrum</a> | |||
| * @version 1.0 | |||
| * @see EjbJar#createJboss | |||
| */ | |||
| public class JbossDeploymentTool extends GenericDeploymentTool { | |||
| protected static final String JBOSS_DD = "jboss.xml"; | |||
| protected static final String JBOSS_CMPD = "jaws.xml"; | |||
| protected static final String JBOSS_CMP10D = "jaws.xml"; | |||
| protected static final String JBOSS_CMP20D = "jbosscmp-jdbc.xml"; | |||
| /** Instance variable that stores the suffix for the jboss jarfile. */ | |||
| private String jarSuffix = ".jar"; | |||
| @@ -93,10 +96,17 @@ public class JbossDeploymentTool extends GenericDeploymentTool { | |||
| log("Unable to locate jboss deployment descriptor. It was expected to be in " + jbossDD.getPath(), Project.MSG_WARN); | |||
| return; | |||
| } | |||
| File jbossCMPD = new File(getConfig().descriptorDir, ddPrefix + JBOSS_CMPD); | |||
| String descriptorFileName = JBOSS_CMP10D; | |||
| if ( EjbJar.CMPVersion.CMP2_0.equals( getParent().getCmpversion() ) ) { | |||
| descriptorFileName = JBOSS_CMP20D; | |||
| } | |||
| File jbossCMPD = new File(getConfig().descriptorDir, ddPrefix + descriptorFileName); | |||
| if (jbossCMPD.exists()) { | |||
| ejbFiles.put(META_DIR + JBOSS_CMPD, jbossCMPD); | |||
| ejbFiles.put(META_DIR + descriptorFileName, jbossCMPD); | |||
| } else { | |||
| log("Unable to locate jboss cmp descriptor. It was expected to be in " + jbossCMPD.getPath(), Project.MSG_WARN); | |||
| return; | |||
| } | |||
| } | |||
| @@ -105,6 +115,20 @@ public class JbossDeploymentTool extends GenericDeploymentTool { | |||
| * of this jar will be checked against the dependent bean classes. | |||
| */ | |||
| File getVendorOutputJarFile(String baseName) { | |||
| return new File(getDestDir(), baseName + jarSuffix); | |||
| return new File( getParent().getDestdir(), baseName + jarSuffix); | |||
| } | |||
| /** | |||
| * Called to validate that the tool parameters have been configured. | |||
| * | |||
| * @throws BuildException If the Deployment Tool's configuration isn't | |||
| * valid | |||
| * @since ant 1.6 | |||
| */ | |||
| public void validateConfigured() throws BuildException { | |||
| } | |||
| private EjbJar getParent() { | |||
| return ( EjbJar ) this.getTask(); | |||
| } | |||
| } | |||