Author: snicoll Date: Thu Jul 12 13:59:45 2007 New Revision: 555758 URL: http://svn.apache.org/viewvc?view=rev&rev=555758 Log: MEAR-72: Added JBoss module-order element (JBoss 4.2 only) Submitted by: Sairam Rekapalli Reviewed by: Stephane Nicoll
Added: maven/plugins/trunk/maven-ear-plugin/src/test/resources/projects/project-041/ maven/plugins/trunk/maven-ear-plugin/src/test/resources/projects/project-041/expected-META-INF/ maven/plugins/trunk/maven-ear-plugin/src/test/resources/projects/project-041/expected-META-INF/application.xml maven/plugins/trunk/maven-ear-plugin/src/test/resources/projects/project-041/expected-META-INF/jboss-app.xml maven/plugins/trunk/maven-ear-plugin/src/test/resources/projects/project-041/pom.xml Modified: maven/plugins/trunk/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/AbstractEarMojo.java maven/plugins/trunk/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/JbossAppXmlWriter.java maven/plugins/trunk/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/JbossConfiguration.java maven/plugins/trunk/maven-ear-plugin/src/site/apt/tests.apt maven/plugins/trunk/maven-ear-plugin/src/site/apt/usage.apt maven/plugins/trunk/maven-ear-plugin/src/test/java/org/apache/maven/plugin/ear/EarMojoTest.java Modified: maven/plugins/trunk/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/AbstractEarMojo.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/AbstractEarMojo.java?view=diff&rev=555758&r1=555757&r2=555758 ============================================================================== --- maven/plugins/trunk/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/AbstractEarMojo.java (original) +++ maven/plugins/trunk/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/AbstractEarMojo.java Thu Jul 12 13:59:45 2007 @@ -160,7 +160,8 @@ } getLog().debug( "Initializing ear execution context" ); - EarExecutionContext.getInstance().initialize( project, mainArtifactId, defaultLibBundleDir, jbossConfiguration, fileNameMapping ); + EarExecutionContext.getInstance().initialize( project, mainArtifactId, defaultLibBundleDir, jbossConfiguration, + fileNameMapping ); getLog().debug( "Resolving ear modules ..." ); allModules = new ArrayList(); @@ -291,9 +292,9 @@ jboss.getChild( JbossConfiguration.UNAUHTHENTICTED_PRINCIPAL ).getValue(); final String loaderRepository = jboss.getChild( JbossConfiguration.LOADER_REPOSITORY ).getValue(); final String jmxName = jboss.getChild( JbossConfiguration.JMX_NAME ).getValue(); - - jbossConfiguration = - new JbossConfiguration( version, securityDomain, unauthenticatedPrincipal, jmxName, loaderRepository ); + final String moduleOrder = jboss.getChild( JbossConfiguration.MODULE_ORDER ).getValue(); + jbossConfiguration = new JbossConfiguration( version, securityDomain, unauthenticatedPrincipal, jmxName, + loaderRepository, moduleOrder ); } catch ( PlexusConfigurationException e ) { Modified: maven/plugins/trunk/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/JbossAppXmlWriter.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/JbossAppXmlWriter.java?view=diff&rev=555758&r1=555757&r2=555758 ============================================================================== --- maven/plugins/trunk/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/JbossAppXmlWriter.java (original) +++ maven/plugins/trunk/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/JbossAppXmlWriter.java Thu Jul 12 13:59:45 2007 @@ -43,9 +43,10 @@ public static final String DOCTYPE_4 = "jboss-app PUBLIC\n" + "\t\"-//JBoss//DTD J2EE Application 1.4//EN\"\n" + "\t\"http://www.jboss.org/j2ee/dtd/jboss-app_4_0.dtd\""; - private static final String JBOSS_APP_ELEMENT = "jboss-app"; + public static final String DOCTYPE_4_2 = "jboss-app PUBLIC\n" + "\t\"-//JBoss//DTD J2EE Application 1.4//EN\"\n" + + "\t\"http://www.jboss.org/j2ee/dtd/jboss-app_4_2.dtd\""; - private static final String MODULE_ELEMENT = "module"; + private static final String JBOSS_APP_ELEMENT = "jboss-app"; JbossAppXmlWriter( String encoding ) { @@ -57,19 +58,35 @@ { final Writer w = initializeWriter( destinationFile ); - XMLWriter writer = null; + XMLWriter writer; if ( jbossConfiguration.isJbossThreeDotTwo() ) { writer = initializeXmlWriter( w, DOCTYPE_3_2 ); } - else + else if ( jbossConfiguration.isJbossFour() ) { writer = initializeXmlWriter( w, DOCTYPE_4 ); } + else + { + writer = initializeXmlWriter( w, DOCTYPE_4_2 ); + } writer.startElement( JBOSS_APP_ELEMENT ); + // If JBoss 4.2, write the jboss4.2 specific stuff + if ( jbossConfiguration.isJbossFourDotTwo() ) + { + // module-order + if ( jbossConfiguration.getModuleOrder() != null ) + { + writer.startElement( JbossConfiguration.MODULE_ORDER ); + writer.writeText( jbossConfiguration.getModuleOrder() ); + writer.endElement(); + } + } + // If JBoss 4, write the jboss4 specific stuff - if ( jbossConfiguration.isJbossFour() ) + if ( jbossConfiguration.isJbossFour() || jbossConfiguration.isJbossFourDotTwo() ) { if ( jbossConfiguration.getSecurityDomain() != null ) { Modified: maven/plugins/trunk/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/JbossConfiguration.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/JbossConfiguration.java?view=diff&rev=555758&r1=555757&r2=555758 ============================================================================== --- maven/plugins/trunk/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/JbossConfiguration.java (original) +++ maven/plugins/trunk/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/JbossConfiguration.java Thu Jul 12 13:59:45 2007 @@ -33,6 +33,8 @@ static final String VERSION_4 = "4"; + static final String VERSION_4_2 = "4.2"; + static final String VERSION = "version"; static final String SECURITY_DOMAIN = "security-domain"; @@ -43,6 +45,8 @@ static final String LOADER_REPOSITORY = "loader-repository"; + static final String MODULE_ORDER = "module-order"; + private final String version; @@ -50,6 +54,8 @@ private boolean jbossFour; + private boolean jbossFourDotTwo; + private final String securityDomain; private final String unauthenticatedPrincipal; @@ -58,9 +64,11 @@ private final String loaderRepository; + private final String moduleOrder; + public JbossConfiguration( String version, String securityDomain, String unauthenticatedPrincipal, String jmxName, - String loaderRepository ) + String loaderRepository, String moduleOrder ) throws EarPluginException { if ( version == null ) @@ -78,6 +86,10 @@ { this.jbossFour = true; } + else if ( version.equals( JbossConfiguration.VERSION_4_2 ) ) + { + this.jbossFourDotTwo = true; + } else { throw new EarPluginException( @@ -87,6 +99,7 @@ this.unauthenticatedPrincipal = unauthenticatedPrincipal; this.jmxName = jmxName; this.loaderRepository = loaderRepository; + this.moduleOrder = moduleOrder; } } @@ -120,6 +133,17 @@ return jbossFour; } + + /** + * Returns true if the targeted JBoss version is 4.2. + * + * @return if the targeted version is 4.2 + */ + public boolean isJbossFourDotTwo() + { + return jbossFourDotTwo; + } + /** * The security-domain element specifies the JNDI name of the security * manager that implements the EJBSecurityManager and RealmMapping for @@ -180,4 +204,29 @@ { return loaderRepository; } + + /** + * The module-order specifies the order in which the modules specified + * in the application.xml file gets loaded. Allowed values are: + * <p/> + * <module-order>strict</module-order> + * The strict value indicates that the deployments of the modules will + * be done in the order that would be specified in the application.xml + * and jboss-app.xml file. + * <p/> + * <module-order>implicit</module-order> + * The implicit value indicates the deployment would follow the order + * which would be specified in the DeploymentSorter. + * <p/> + * Returns <tt>null</tt> if no module order is set. + * <p/> + * Only available as from JBoss 4.2. + * + * @return the module order + */ + public String getModuleOrder() + { + return moduleOrder; + } + } Modified: maven/plugins/trunk/maven-ear-plugin/src/site/apt/tests.apt URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-ear-plugin/src/site/apt/tests.apt?view=diff&rev=555758&r1=555757&r2=555758 ============================================================================== --- maven/plugins/trunk/maven-ear-plugin/src/site/apt/tests.apt (original) +++ maven/plugins/trunk/maven-ear-plugin/src/site/apt/tests.apt Thu Jul 12 13:59:45 2007 @@ -110,4 +110,6 @@ * project-040: builds an EAR with deployment descriptor configuration for Java EE 5 and an alternative deployment descriptor + * project-041: builds an EAR with a Jboss 4.2 configuration specifying the module order to use + Modified: maven/plugins/trunk/maven-ear-plugin/src/site/apt/usage.apt URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-ear-plugin/src/site/apt/usage.apt?view=diff&rev=555758&r1=555757&r2=555758 ============================================================================== --- maven/plugins/trunk/maven-ear-plugin/src/site/apt/usage.apt (original) +++ maven/plugins/trunk/maven-ear-plugin/src/site/apt/usage.apt Thu Jul 12 13:59:45 2007 @@ -116,7 +116,7 @@ The EAR plugin can generate the jboss-app.xml automatically. To do so, the 'jboss' element must be configured and takes the following child elements: - * <<version>>: the targeted JBoss version to use (3.2 or 4 which is the default). + * <<version>>: the targeted JBoss version to use, 3.2, 4 or 4.2 (the default is 4). * <<security-domain>>: the JNDI name of the security manager (JBoss 4 only) @@ -125,6 +125,9 @@ * <<loader-repository>>: the name of the UnifiedLoaderRepository MBean to use for the ear to provide ear level scoping of classes deployed in the ear * <<jmx-name>>: the object name of the ear mbean. + + * <<module-order>>: specify the order in which the modules specified in the application.xml file gets loaded (JBoss 4.2 only) + Hibernate archives (HAR) and Service archives (SAR) will be recognized automatically Modified: maven/plugins/trunk/maven-ear-plugin/src/test/java/org/apache/maven/plugin/ear/EarMojoTest.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-ear-plugin/src/test/java/org/apache/maven/plugin/ear/EarMojoTest.java?view=diff&rev=555758&r1=555757&r2=555758 ============================================================================== --- maven/plugins/trunk/maven-ear-plugin/src/test/java/org/apache/maven/plugin/ear/EarMojoTest.java (original) +++ maven/plugins/trunk/maven-ear-plugin/src/test/java/org/apache/maven/plugin/ear/EarMojoTest.java Thu Jul 12 13:59:45 2007 @@ -431,4 +431,13 @@ doTestProject( "project-040", new String[]{"ejb-sample-one-1.0.jar"} ); } + /** + * Builds an EAR with a Jboss 4.2 configuration specifying the module order to use. + */ + public void testProject041() + throws Exception + { + doTestProject( "project-041", new String[]{"ejb-sample-one-1.0.jar", "ejb-sample-two-1.0.jar"} ); + } + } Added: maven/plugins/trunk/maven-ear-plugin/src/test/resources/projects/project-041/expected-META-INF/application.xml URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-ear-plugin/src/test/resources/projects/project-041/expected-META-INF/application.xml?view=auto&rev=555758 ============================================================================== --- maven/plugins/trunk/maven-ear-plugin/src/test/resources/projects/project-041/expected-META-INF/application.xml (added) +++ maven/plugins/trunk/maven-ear-plugin/src/test/resources/projects/project-041/expected-META-INF/application.xml Thu Jul 12 13:59:45 2007 @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you 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. +--> + +<!DOCTYPE application PUBLIC + "-//Sun Microsystems, Inc.//DTD J2EE Application 1.3//EN" + "http://java.sun.com/dtd/application_1_3.dtd"> +<application> + <display-name>maven-ear-plugin-test-project-041</display-name> + <module> + <ejb>ejb-sample-two-1.0.jar</ejb> + </module> + <module> + <ejb>ejb-sample-one-1.0.jar</ejb> + </module> +</application> Added: maven/plugins/trunk/maven-ear-plugin/src/test/resources/projects/project-041/expected-META-INF/jboss-app.xml URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-ear-plugin/src/test/resources/projects/project-041/expected-META-INF/jboss-app.xml?view=auto&rev=555758 ============================================================================== --- maven/plugins/trunk/maven-ear-plugin/src/test/resources/projects/project-041/expected-META-INF/jboss-app.xml (added) +++ maven/plugins/trunk/maven-ear-plugin/src/test/resources/projects/project-041/expected-META-INF/jboss-app.xml Thu Jul 12 13:59:45 2007 @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you 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. +--> + +<!DOCTYPE jboss-app PUBLIC + "-//JBoss//DTD J2EE Application 1.4//EN" + "http://www.jboss.org/j2ee/dtd/jboss-app_4_2.dtd"> +<jboss-app> + <module-order>strict</module-order> +</jboss-app> \ No newline at end of file Added: maven/plugins/trunk/maven-ear-plugin/src/test/resources/projects/project-041/pom.xml URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-ear-plugin/src/test/resources/projects/project-041/pom.xml?view=auto&rev=555758 ============================================================================== --- maven/plugins/trunk/maven-ear-plugin/src/test/resources/projects/project-041/pom.xml (added) +++ maven/plugins/trunk/maven-ear-plugin/src/test/resources/projects/project-041/pom.xml Thu Jul 12 13:59:45 2007 @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you 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. +--> + +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <groupId>ear</groupId> + <artifactId>maven-ear-plugin-test-project-041</artifactId> + <version>99.0</version> + <name>Maven</name> + <packaging>ear</packaging> + <dependencies> + <dependency> + <groupId>eartest</groupId> + <artifactId>ejb-sample-one</artifactId> + <version>1.0</version> + <type>ejb</type> + </dependency> + <dependency> + <groupId>eartest</groupId> + <artifactId>ejb-sample-two</artifactId> + <version>1.0</version> + <type>ejb</type> + </dependency> + </dependencies> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-ear-plugin</artifactId> + <configuration> + <jboss> + <version>4.2</version> + <module-order>strict</module-order> + </jboss> + </configuration> + </plugin> + </plugins> + </build> +</project>