Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,14 @@ public class JBossAppMetaData extends EarMetaData {
*/
private boolean limitAppclientModules;

/**
* Creates a new JBossAppMetaData with the default EAR version.
* <p>
* If you need a specific version, use {@link #JBossAppMetaData(EarVersion)} constructor instead.
* </p>
*/
public JBossAppMetaData() {
super(EarVersion.APP_10_0);
super(EarVersion.APP_11_0);
}

public JBossAppMetaData(EarVersion earVersion) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ public static void merge(final JBossAppMetaData dest, final JBossAppMetaData ove
} else {
dest.setEarEnvironmentRefsGroup(new EarEnvironmentRefsGroupMetaData());
}

if (original != null) {
dest.setInitializeInOrder(original.getInitializeInOrder());
}
Expand Down Expand Up @@ -56,10 +55,12 @@ public static void merge(final JBossAppMetaData dest, final JBossAppMetaData ove
}

if (override != null) {
if (override.getSecurityDomain() != null)
if (override.getSecurityDomain() != null) {
dest.setSecurityDomain(override.getSecurityDomain());
if (override.getUnauthenticatedPrincipal() != null)
}
if (override.getUnauthenticatedPrincipal() != null) {
dest.setUnauthenticatedPrincipal(override.getUnauthenticatedPrincipal());
}
dest.setLimitAppclientModules(override.isLimitAppclientModules());
}

Expand All @@ -69,20 +70,25 @@ public static void merge(final JBossAppMetaData dest, final JBossAppMetaData ove

ModulesMetaData overrideModules = null;
ModulesMetaData originalModules = null;
if (override != null)
if (override != null) {
overrideModules = override.getModules();
if (original != null)
}
if (original != null) {
originalModules = original.getModules();
}
ModulesMetaDataMerger.merge(dest.getModules(), overrideModules, originalModules);

SecurityRolesMetaData securityRolesMetaData = null;
SecurityRolesMetaData overrideSecurityRolesMetaData = null;
if (original != null)
if (original != null) {
securityRolesMetaData = original.getSecurityRoles();
if (override != null)
}
if (override != null) {
overrideSecurityRolesMetaData = override.getSecurityRoles();
if (dest.getSecurityRoles() == null)
}
if (dest.getSecurityRoles() == null) {
dest.setSecurityRoles(new SecurityRolesMetaData());
}
SecurityRolesMetaDataMerger.merge(dest.getSecurityRoles(), overrideSecurityRolesMetaData, securityRolesMetaData);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,12 @@ public enum Version {
APP_4_0("https://www.jboss.org/j2ee/dtd/jboss-app_4_0.dtd", "4.0"),
APP_4_2("https://www.jboss.org/j2ee/dtd/jboss-app_4_2.dtd", "4.2"),
APP_5_0("https://www.jboss.org/j2ee/dtd/jboss-app_5_0.dtd", "5.0"),
APP_7_0("https://www.jboss.org/j2ee/schema/jboss-app_7_1.xsd", "7.0");
APP_7_0("https://www.jboss.org/j2ee/schema/jboss-app_7_1.xsd", "7.0"),
APP_8_0("https://www.jboss.org/j2ee/schema/jboss-app_8_0.xsd", "8.0"),
APP_9_0("https://www.jboss.org/j2ee/schema/jboss-app_9_0.xsd", "9.0"),
APP_10_0("https://www.jboss.org/j2ee/schema/jboss-app_10_0.xsd", "10.0"),
APP_11_0("https://www.jboss.org/j2ee/schema/jboss-app_11_0.xsd", "11.0"),
APP_11_0_1("https://www.jboss.org/j2ee/schema/jboss-app_11_0_1.xsd", "11.0.1");

private static final Map<String, Version> bindings = new HashMap<String, Version>();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,15 @@
import org.jboss.metadata.parser.util.MetaDataElementParser;
import org.jboss.metadata.property.PropertyReplacer;
import org.jboss.metadata.property.PropertyReplacers;
import org.jboss.logging.Logger;

/**
* @author John Bailey
*/
public class EarMetaDataParser extends MetaDataElementParser {

private static final Logger logger = Logger.getLogger(EarMetaDataParser.class);

public static final EarMetaDataParser INSTANCE = new EarMetaDataParser();

public EarMetaData parse(final XMLStreamReader reader) throws XMLStreamException {
Expand Down Expand Up @@ -65,20 +68,37 @@ public EarMetaData parse(final XMLStreamReader reader, final PropertyReplacer pr
versionString = reader.getAttributeValue(i);
}
}
if ("1.4".equals(versionString)) {
version = EarVersion.APP_1_4;
} else if ("5".equals(versionString)) {
version = EarVersion.APP_5_0;
} else if ("6".equals(versionString)) {
version = EarVersion.APP_6_0;
} else if ("7".equals(versionString)) {
version = EarVersion.APP_7_0;
} else if ("8".equals(versionString)) {
version = EarVersion.APP_8_0;
} else if ("9".equals(versionString)) {
version = EarVersion.APP_9_0;
} else if ("10".equals(versionString)) {
version = EarVersion.APP_10_0;
// Parse version string if present
if (versionString != null) {
switch (versionString) {
case "1.4":
version = EarVersion.APP_1_4;
break;
case "5":
version = EarVersion.APP_5_0;
break;
case "6":
version = EarVersion.APP_6_0;
break;
case "7":
version = EarVersion.APP_7_0;
break;
case "8":
version = EarVersion.APP_8_0;
break;
case "9":
version = EarVersion.APP_9_0;
break;
case "10":
version = EarVersion.APP_10_0;
break;
case "11":
version = EarVersion.APP_11_0;
break;
default:
logger.warnf("Unsupported or unknown EAR version '%s' specified in descriptor. Defaulting to version 6.0", versionString);
break;
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
import org.jboss.test.metadata.javaee.AbstractJavaEEEverythingTest;

/**
* Ear10x tests.
* Ear11x tests.
*
* @author Brian Stansberry
*/
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,167 @@
/*
* Copyright The JBoss Metadata Authors
* SPDX-License-Identifier: Apache-2.0
*/
package org.jboss.test.metadata.ear;

import static junit.framework.TestCase.assertEquals;

import org.jboss.metadata.ear.jboss.JBossAppMetaData;
import org.jboss.metadata.ear.jboss.ServiceModuleMetaData;
import org.jboss.metadata.ear.merge.JBossAppMetaDataMerger;
import org.jboss.metadata.ear.parser.jboss.JBossAppMetaDataParser;
import org.jboss.metadata.ear.parser.spec.EarMetaDataParser;
import org.jboss.metadata.ear.spec.ConnectorModuleMetaData;
import org.jboss.metadata.ear.spec.EarMetaData;
import org.jboss.metadata.ear.spec.EarVersion;
import org.jboss.metadata.ear.spec.EjbModuleMetaData;
import org.jboss.metadata.ear.spec.JavaModuleMetaData;
import org.jboss.metadata.ear.spec.ModuleMetaData;
import org.jboss.metadata.ear.spec.ModulesMetaData;
import org.jboss.metadata.ear.spec.WebModuleMetaData;
import org.jboss.metadata.javaee.spec.SecurityRoleMetaData;
import org.jboss.metadata.javaee.spec.SecurityRolesMetaData;
import org.jboss.test.metadata.javaee.AbstractJavaEEMetaDataTest;
import org.junit.Test;

/**
* Test jboss-app.xml which uses jboss-app_11_0.xsd
*/
public class JBossApp10EverythingUnitTestCase extends AbstractJavaEEMetaDataTest {

private boolean hasJBossAppOverride = false;

protected JBossAppMetaData unmarshal() throws Exception {
return JBossAppMetaDataParser.INSTANCE.parse(getReader());
}

@Test
public void testOverride() throws Exception {
EarMetaData spec = EarMetaDataParser.INSTANCE.parse(getReader("Ear10xEverything_testEverything.xml"));
JBossAppMetaData jbossAppMD = new JBossAppMetaData(EarVersion.APP_10_0);
JBossAppMetaDataMerger.merge(jbossAppMD, null, spec);
assertEquals(EarVersion.APP_10_0, jbossAppMD.getEarVersion());
hasJBossAppOverride = false;
assertEveryting(jbossAppMD);
}

@Test
public void testEverything()
throws Exception {
//enableTrace("org.jboss.xb");
EarMetaData spec = EarMetaDataParser.INSTANCE.parse(getReader("Ear10xEverything_testEverything.xml"));
JBossAppMetaData jbossAppXml = unmarshal();
assertEquals("Unexpected distinct-name", "foo", jbossAppXml.getDistinctName());
JBossAppMetaData jbossAppMD = new JBossAppMetaData(EarVersion.APP_10_0);
JBossAppMetaDataMerger.merge(jbossAppMD, jbossAppXml, spec);
hasJBossAppOverride = true;
assertEquals(EarVersion.APP_10_0, jbossAppMD.getEarVersion());
assertEveryting(jbossAppMD);
assertEquals("jboss-app-id", jbossAppMD.getId());
assertEveryting(jbossAppMD);
}

protected void assertEveryting(JBossAppMetaData ear) throws Exception {
assertSecurityRoles(ear);
assertLibraryDirectory(ear);
assertModules(ear);
}

protected void assertSecurityRoles(JBossAppMetaData ear) {
SecurityRolesMetaData roles = ear.getSecurityRoles();
assertEquals("There are 2 roles " + roles, 2, roles.size());
SecurityRoleMetaData role0 = roles.get("securityRoleRef1RoleLink");
SecurityRoleMetaData role1 = roles.get("securityRoleRef2RoleLink");
if (hasJBossAppOverride) {
assertEquals("security-role0", role0.getId());
assertEquals("securityRoleRef1RoleLink", role0.getName());
assertEquals("en-securityRole1-desc", role0.getDescriptions().value()[0].value());

assertEquals("security-role1", role1.getId());
assertEquals("securityRoleRef2RoleLink", role1.getName());
assertEquals("en-securityRole2-desc", role1.getDescriptions().value()[0].value());

assertTrue("1 principal in role0", role0.getPrincipals().size() == 1);
assertEquals("principal0", role0.getPrincipals().toArray()[0]);
assertEquals("principal1", role1.getPrincipals().toArray()[0]);
} else {
assertEquals("securityRole1-id", role0.getId());
assertEquals("securityRoleRef1RoleLink", role0.getName());
assertEquals("en-securityRole1-desc", role0.getDescriptions().value()[0].value());

assertEquals("securityRole2-id", role1.getId());
assertEquals("securityRoleRef2RoleLink", role1.getName());
assertEquals("en-securityRole2-desc", role1.getDescriptions().value()[0].value());
}
}

protected void assertLibraryDirectory(JBossAppMetaData ear) {
if (hasJBossAppOverride) {
assertEquals("jboss-app-lib0", ear.getLibraryDirectory());
} else {
assertEquals("lib0", ear.getLibraryDirectory());
}
}

protected void assertModules(JBossAppMetaData ear) {
ModulesMetaData modules = ear.getModules();
if (hasJBossAppOverride) {
assertEquals(9, modules.size());
} else {
assertEquals(6, modules.size());
}
ModuleMetaData connector = modules.get(0);
assertEquals("connector0", connector.getId());
ConnectorModuleMetaData connectorMD = (ConnectorModuleMetaData) connector.getValue();
assertEquals("rar0.rar", connectorMD.getConnector());
ModuleMetaData java = modules.get(1);
assertEquals("java0", java.getId());
JavaModuleMetaData javaMD = (JavaModuleMetaData) java.getValue();
assertEquals("client0.jar", javaMD.getClientJar());
ModuleMetaData ejb0 = modules.get(2);
assertEquals("ejb0", ejb0.getId());
EjbModuleMetaData ejb0MD = (EjbModuleMetaData) ejb0.getValue();
assertEquals("ejb-jar0.jar", ejb0MD.getEjbJar());
ModuleMetaData ejb1 = modules.get(3);
assertEquals("ejb1", ejb1.getId());
EjbModuleMetaData ejb1MD = (EjbModuleMetaData) ejb1.getValue();
assertEquals("ejb-jar1.jar", ejb1MD.getEjbJar());
ModuleMetaData web0 = modules.get(4);
assertEquals("web0", web0.getId());
WebModuleMetaData web0MD = (WebModuleMetaData) web0.getValue();
assertEquals("/web0", web0MD.getContextRoot());
assertEquals("web-app0.war", web0MD.getWebURI());
ModuleMetaData web1 = modules.get(5);
assertEquals("web1", web1.getId());
WebModuleMetaData web1MD = (WebModuleMetaData) web1.getValue();
if (hasJBossAppOverride) {
assertEquals("/web1-override", web1MD.getContextRoot());
} else {
assertEquals("/web1", web1MD.getContextRoot());
}
assertEquals("web-app1.war", web1MD.getWebURI());
if (hasJBossAppOverride) {
// Validate the sar, web2, har added in jboss-app.xml
ModuleMetaData sar = modules.get(6);
assertEquals("sar0", sar.getId());
ServiceModuleMetaData sarMD = (ServiceModuleMetaData) sar.getValue();
assertEquals("sar0.sar", sarMD.getSar());
ModuleMetaData web2 = modules.get(7);
assertEquals("web2", web2.getId());
WebModuleMetaData web2MD = (WebModuleMetaData) web2.getValue();
assertEquals("/web2", web2MD.getContextRoot());
assertEquals("web-app2.war", web2MD.getWebURI());
ModuleMetaData har = modules.get(8);
assertEquals("har0", har.getId());
ServiceModuleMetaData harMD = (ServiceModuleMetaData) har.getValue();
assertEquals("har0.har", harMD.getSar());
}
// Validate lookup by module file name
ModuleMetaData mmd = modules.get("rar0.rar");
assertEquals(connector, mmd);
mmd = modules.get("ejb-jar1.jar");
assertEquals(ejb1, mmd);
mmd = modules.get("web-app0.war");
assertEquals(web0, mmd);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,16 @@
*/
package org.jboss.test.metadata.ear;

import static junit.framework.TestCase.assertEquals;

import org.jboss.metadata.ear.jboss.JBossAppMetaData;
import org.jboss.metadata.ear.jboss.ServiceModuleMetaData;
import org.jboss.metadata.ear.merge.JBossAppMetaDataMerger;
import org.jboss.metadata.ear.parser.jboss.JBossAppMetaDataParser;
import org.jboss.metadata.ear.parser.spec.EarMetaDataParser;
import org.jboss.metadata.ear.spec.ConnectorModuleMetaData;
import org.jboss.metadata.ear.spec.EarMetaData;
import org.jboss.metadata.ear.spec.EarVersion;
import org.jboss.metadata.ear.spec.EjbModuleMetaData;
import org.jboss.metadata.ear.spec.JavaModuleMetaData;
import org.jboss.metadata.ear.spec.ModuleMetaData;
Expand All @@ -21,6 +24,9 @@
import org.jboss.test.metadata.javaee.AbstractJavaEEMetaDataTest;
import org.junit.Test;

/**
* Test jboss-app.xml which uses jboss-app_11_0.xsd
*/
public class JBossApp110EverythingUnitTestCase extends AbstractJavaEEMetaDataTest {

private boolean hasJBossAppOverride = false;
Expand All @@ -34,6 +40,7 @@ public void testOverride() throws Exception {
EarMetaData spec = EarMetaDataParser.INSTANCE.parse(getReader("Ear11xEverything_testEverything.xml"));
JBossAppMetaData jbossAppMD = new JBossAppMetaData();
JBossAppMetaDataMerger.merge(jbossAppMD, null, spec);
assertEquals(EarVersion.APP_11_0, jbossAppMD.getEarVersion());
hasJBossAppOverride = false;
assertEveryting(jbossAppMD);
}
Expand All @@ -44,10 +51,12 @@ public void testEverything()
//enableTrace("org.jboss.xb");
EarMetaData spec = EarMetaDataParser.INSTANCE.parse(getReader("Ear11xEverything_testEverything.xml"));
JBossAppMetaData jbossAppXml = unmarshal();
assertEquals(EarVersion.APP_11_0, jbossAppXml.getEarVersion());
assertEquals("Unexpected distinct-name", "foo", jbossAppXml.getDistinctName());
JBossAppMetaData jbossAppMD = new JBossAppMetaData();
JBossAppMetaDataMerger.merge(jbossAppMD, jbossAppXml, spec);
hasJBossAppOverride = true;
assertEquals(EarVersion.APP_11_0, jbossAppMD.getEarVersion());
assertEveryting(jbossAppMD);
assertEquals("jboss-app-id", jbossAppMD.getId());
assertEveryting(jbossAppMD);
Expand Down
Loading
Loading