TOMEE-2295 test for <mapping-file> element being ignored
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/bf6a58b1 Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/bf6a58b1 Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/bf6a58b1 Branch: refs/heads/tomee-7.1.x Commit: bf6a58b158c82c9b1c52709d640c3aa3d167ac64 Parents: 8cf808a Author: Jonathan Gallimore <[email protected]> Authored: Wed Nov 28 11:51:18 2018 +0000 Committer: Otavio Santana <[email protected]> Committed: Mon Dec 17 13:55:47 2018 -0200 ---------------------------------------------------------------------- .../src/main/resources/test-orm.xml | 32 +++++++ .../openejb/core/LegacyInterfaceTest.java | 89 ++++++++++++++++++++ 2 files changed, 121 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tomee/blob/bf6a58b1/container/openejb-core/src/main/resources/test-orm.xml ---------------------------------------------------------------------- diff --git a/container/openejb-core/src/main/resources/test-orm.xml b/container/openejb-core/src/main/resources/test-orm.xml new file mode 100644 index 0000000..0646b30 --- /dev/null +++ b/container/openejb-core/src/main/resources/test-orm.xml @@ -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. +--> +<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm" version="1.0"> + <entity class="openejb.org.apache.openejb.core.MyCmpBean" name="MyCmpBean"> + <description>MyCmpBean</description> + <named-query name="MyCmpBean.findByPrimaryKey(java.lang.Integer)"> + <query>SELECT OBJECT(DL) FROM License DL</query> + </named-query> + <attributes> + <id name="id"/> + <basic name="name"> + <column name="wNAME" length="300"/> + </basic> + </attributes> + </entity> +</entity-mappings> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/tomee/blob/bf6a58b1/container/openejb-core/src/test/java/org/apache/openejb/core/LegacyInterfaceTest.java ---------------------------------------------------------------------- diff --git a/container/openejb-core/src/test/java/org/apache/openejb/core/LegacyInterfaceTest.java b/container/openejb-core/src/test/java/org/apache/openejb/core/LegacyInterfaceTest.java index f450f2c..0b4b73f 100644 --- a/container/openejb-core/src/test/java/org/apache/openejb/core/LegacyInterfaceTest.java +++ b/container/openejb-core/src/test/java/org/apache/openejb/core/LegacyInterfaceTest.java @@ -36,6 +36,9 @@ import org.apache.openejb.jee.QueryMethod; import org.apache.openejb.jee.SingletonBean; import org.apache.openejb.jee.TransAttribute; import org.apache.openejb.jee.jpa.*; +import org.apache.openejb.jee.jpa.unit.Persistence; +import org.apache.openejb.jee.jpa.unit.PersistenceUnit; +import org.apache.openejb.jee.jpa.unit.TransactionType; import org.junit.AfterClass; import javax.ejb.CreateException; @@ -216,6 +219,92 @@ public class LegacyInterfaceTest extends TestCase { assertEquals("wNAME", basicList.get(0).getColumn().getName()); } + public void testCustomCmpMappingsWithMappingFileDefinedInPersistenceXml() throws Exception { + + System.setProperty(javax.naming.Context.INITIAL_CONTEXT_FACTORY, InitContextFactory.class.getName()); + + final ConfigurationFactory config = new ConfigurationFactory(); + final Assembler assembler = new Assembler(); + + assembler.createTransactionManager(config.configureService(TransactionServiceInfo.class)); + assembler.createSecurityService(config.configureService(SecurityServiceInfo.class)); + + final EjbJar ejbJar = new EjbJar(); + ejbJar.addEnterpriseBean(new SingletonBean(MySingletonBean.class)); + ejbJar.addEnterpriseBean(new EntityBean(MyBmpBean.class, PersistenceType.BEAN)); + + final EntityBean cmp = ejbJar.addEnterpriseBean(new EntityBean(MyCmpBean.class, PersistenceType.CONTAINER)); + cmp.setPrimKeyClass(Integer.class.getName()); + cmp.setPrimkeyField("id"); + cmp.getCmpField().add(new CmpField("id")); + cmp.getCmpField().add(new CmpField("name")); + final Query query = new Query(); + query.setQueryMethod(new QueryMethod("findByPrimaryKey", Integer.class.getName())); + query.setEjbQl("SELECT OBJECT(DL) FROM License DL"); + cmp.getQuery().add(query); + final List<ContainerTransaction> transactions = ejbJar.getAssemblyDescriptor().getContainerTransaction(); + + transactions.add(new ContainerTransaction(TransAttribute.SUPPORTS, null, "MyBmpBean", "*")); + transactions.add(new ContainerTransaction(TransAttribute.SUPPORTS, null, "MyCmpBean", "*")); + transactions.add(new ContainerTransaction(TransAttribute.SUPPORTS, null, "MySingletonBean", "*")); + + final File f = new File("test").getAbsoluteFile(); + if (!f.exists() && !f.mkdirs()) { + throw new Exception("Failed to create test directory: " + f); + } + + final EntityMappings entityMappings = new EntityMappings(); + + final Entity entity = new Entity(); + entity.setClazz("openejb.org.apache.openejb.core.MyCmpBean"); + entity.setName("MyCmpBean"); + entity.setDescription("MyCmpBean"); + entity.setAttributes(new Attributes()); + + final NamedQuery namedQuery = new NamedQuery(); + namedQuery.setQuery("SELECT OBJECT(DL) FROM License DL"); + entity.getNamedQuery().add(namedQuery); + + final Id id = new Id(); + id.setName("id"); + entity.getAttributes().getId().add(id); + + final Basic basic = new Basic(); + basic.setName("name"); + final Column column = new Column(); + column.setName("wNAME"); + column.setLength(300); + basic.setColumn(column); + entity.getAttributes().getBasic().add(basic); + + entityMappings.getEntity().add(entity); + + final AppModule module = new AppModule(this.getClass().getClassLoader(), f.getAbsolutePath()); + final EjbModule ejbModule = new EjbModule(ejbJar); + + + Persistence persistence = new Persistence(); + PersistenceUnit pu = persistence.addPersistenceUnit("cmp"); + pu.setTransactionType(TransactionType.JTA); + pu.setJtaDataSource("fake"); + pu.setNonJtaDataSource("fake"); + pu.getMappingFile().add("test-orm.xml"); + pu.addClass("openejb.org.apache.openejb.core.MyCmpBean"); + module.addPersistenceModule(new PersistenceModule("pu", persistence)); + + module.getEjbModules().add(ejbModule); + + assertNull(module.getCmpMappings()); + assembler.createApplication(config.configureApplication(module)); + assertNotNull(module.getCmpMappings()); + assertEquals(1, pu.getClazz().size()); + assertEquals("openejb.org.apache.openejb.core.MyCmpBean", pu.getClazz().get(0)); + final List<Basic> basicList = module.getCmpMappings().getEntityMap().get("openejb.org.apache.openejb.core.MyCmpBean").getAttributes().getBasic(); + assertEquals(1, basicList.size()); + assertEquals(300, basicList.get(0).getColumn().getLength().intValue()); + assertEquals("wNAME", basicList.get(0).getColumn().getName()); + } + @LocalHome(MyLocalHome.class) @RemoteHome(MyRemoteHome.class) public static abstract class MyCmpBean implements javax.ejb.EntityBean {
