| /** |
| * 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. |
| */ |
| package org.apache.openejb.config; |
| |
| import junit.framework.TestCase; |
| import org.apache.openejb.assembler.classic.AppInfo; |
| import org.apache.openejb.assembler.classic.Assembler; |
| import org.apache.openejb.assembler.classic.EjbJarInfo; |
| import org.apache.openejb.assembler.classic.PersistenceUnitInfo; |
| import org.apache.openejb.loader.SystemInstance; |
| import org.apache.openejb.util.URLs; |
| |
| import javax.interceptor.AroundInvoke; |
| import javax.interceptor.InvocationContext; |
| import java.io.File; |
| import java.net.URL; |
| |
| /** |
| * @version $Rev: 1173147 $ $Date: 2011-09-20 16:48:48 +0300 (Tue, 20 Sep 2011) $ |
| */ |
| public class AltDDPrefixTest extends TestCase { |
| |
| /** |
| * This module has only a "test.ejb-jar.xml" file and no equivalent |
| * non-test ejb-jar.xml file. It should still get discovered even though |
| * there is not an ejb-jar.xml file and only a test.ejb-jar.xml file |
| * |
| * @throws Exception |
| */ |
| public void testTestOnlyModule() throws Exception { |
| System.out.println("*** testTestOnlyModule ***"); |
| Assembler assmbler = new Assembler(); |
| SystemInstance.get().setProperty("openejb.altdd.prefix", "test"); |
| ConfigurationFactory factory = new ConfigurationFactory(); |
| |
| URL resource = AltDDPrefixTest.class.getClassLoader().getResource("altddapp1"); |
| File file = URLs.toFile(resource); |
| AppInfo appInfo = factory.configureApplication(file); |
| assertNotNull(appInfo); |
| assertEquals(1, appInfo.ejbJars.size()); |
| } |
| |
| public void testMultitplePrefixes() throws Exception { |
| System.out.println("*** testMultitplePrefixes ***"); |
| Assembler assmbler = new Assembler(); |
| SystemInstance.get().setProperty("openejb.altdd.prefix", "footest, test"); |
| ConfigurationFactory factory = new ConfigurationFactory(); |
| |
| URL resource = AltDDPrefixTest.class.getClassLoader().getResource("altddapp2"); |
| File file = URLs.toFile(resource); |
| AppInfo appInfo = factory.configureApplication(file); |
| assertNotNull(appInfo); |
| assertEquals(1, appInfo.ejbJars.size()); |
| |
| EjbJarInfo ejbJar = appInfo.ejbJars.get(0); |
| |
| // was the footest.ejb-jar.xml picked up |
| assertEquals("EjbJar.enterpriseBeans", 1, ejbJar.enterpriseBeans.size()); |
| assertEquals("EjbJar.interceptors.size()", 1, ejbJar.interceptors.size()); |
| |
| // was the test.env-entries.properties picked up |
| // 4 + ComponentName |
| assertEquals("EjbJar.enterpriseBeans.get(0).jndiEnc.envEntries.size()", 5, ejbJar.enterpriseBeans.get(0).jndiEnc.envEntries.size()); |
| |
| |
| } |
| |
| /** |
| * OPENEJB-1059: altdd does not work with a persistence.xml when no embedded |
| * in EjbModule/Client module. |
| * |
| * @throws Exception if something wrong happen |
| */ |
| public void testPersistenceUnit() throws Exception { |
| System.out.println("*** testPersistenceUnit ***"); |
| Assembler assmbler = new Assembler(); |
| SystemInstance.get().setProperty("openejb.altdd.prefix", "footest, test"); |
| ConfigurationFactory factory = new ConfigurationFactory(); |
| |
| URL resource = AltDDPrefixTest.class.getClassLoader().getResource("altddPU1"); |
| File file = URLs.toFile(resource); |
| AppInfo appInfo = factory.configureApplication(file); |
| assertNotNull(appInfo); |
| assertEquals(0, appInfo.ejbJars.size()); |
| assertEquals(1, appInfo.persistenceUnits.size()); |
| |
| PersistenceUnitInfo info = appInfo.persistenceUnits.get(0); |
| assertTrue(info.id.startsWith("footest-unit ")); // a space must be present before hashcode |
| |
| // appInfo = factory.configureApplication(file); |
| } |
| |
| /** |
| * OPENEJB-1059: altdd does not work with a persistence.xml when no embedded |
| * in EjbModule/Client module. |
| * |
| * @throws Exception if something wrong happen |
| */ |
| public void testPersistenceUnitWithAllDD() throws Exception { |
| System.out.println("*** testPersistenceUnitWithAllDD ***"); |
| Assembler assmbler = new Assembler(); |
| // TODO should be better to add a remove property method |
| SystemInstance.get().getProperties().remove("openejb.altdd.prefix"); |
| ConfigurationFactory factory = new ConfigurationFactory(); |
| |
| URL resource = AltDDPrefixTest.class.getClassLoader().getResource("altddPU1"); |
| File file = URLs.toFile(resource); |
| AppInfo appInfo = factory.configureApplication(file); |
| assertNotNull(appInfo); |
| assertEquals(0, appInfo.ejbJars.size()); |
| assertEquals(1, appInfo.persistenceUnits.size()); |
| |
| PersistenceUnitInfo info = appInfo.persistenceUnits.get(0); |
| assertTrue(info.id.startsWith("unit ")); // a space must be present before hashcode |
| } |
| |
| public class OrangeBean implements OrangeLocal { |
| |
| public int echo(int i) { |
| return i; |
| } |
| } |
| |
| public interface OrangeLocal { |
| int echo(int i); |
| } |
| |
| public static class FooTestInterceptor { |
| @AroundInvoke |
| public Object invoke(InvocationContext context) throws Exception { |
| return context.proceed(); |
| } |
| } |
| } |