/* * 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 org.apache.openejb.OpenEJBException; import org.apache.openejb.config.sys.Container; import org.apache.openejb.config.sys.JSonConfigReader; import org.apache.openejb.config.sys.Openejb; import org.apache.openejb.config.sys.Resource; import org.apache.openejb.jee.EjbJar; import org.apache.openejb.junit.ApplicationComposer; import org.apache.openejb.resource.jdbc.dbcp.BasicDataSource; import org.apache.openejb.testing.AppResource; import org.apache.openejb.testing.Configuration; import org.apache.openejb.testing.Module; import org.junit.Test; import org.junit.runner.RunWith; import javax.naming.Context; import javax.naming.NamingException; import java.io.IOException; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; @RunWith(ApplicationComposer.class) public class JSonConfigTest { @Configuration public String config() { System.setProperty("JSonConfigTest.foo", "bar"); return "openejb.json"; } @Module public EjbJar jar() { return new EjbJar(); } @AppResource private Context ctx; @Test public void checkDsIsHere() throws NamingException { final BasicDataSource ds = BasicDataSource.class.cast(ctx.lookup("openejb:Resource/json-datasource")); assertNotNull(ds); assertEquals(123, ds.getMaxTotal()); assertEquals("jdbc:hsqldb:mem:json", ds.getJdbcUrl()); } @Test public void checkSystProps() { assertEquals("b", System.getProperty("a")); assertEquals("d", System.getProperty("c")); assertEquals("g", System.getProperty("e.f")); assertEquals("j", System.getProperty("e.h.i")); assertEquals("properties-value", System.getProperty("properties-key")); assertEquals("2", System.getProperty("object.attribute.#1")); } @Test public void checkPlaceHolder() { assertEquals("bar", System.getProperty("JSonConfigTest.foo")); // the real one assertEquals("bar", System.getProperty("placeholder")); // the configured one } @Test public void simpleRead() throws IOException, OpenEJBException { final Openejb openejb = JSonConfigReader.read(Openejb.class, Thread.currentThread().getContextClassLoader().getResource(config()).openStream()); assertEquals(1, openejb.getResource().size()); final Resource resource = openejb.getResource().iterator().next(); assertEquals("json-datasource", resource.getId()); assertTrue("123".equals(resource.getProperties().getProperty("MaxTotal"))); assertTrue("jdbc:hsqldb:mem:json".equals(resource.getProperties().getProperty("JdbcUrl"))); assertEquals(1, openejb.getDeployments().size()); assertEquals("apps", openejb.getDeployments().iterator().next().getDir()); assertEquals(1, openejb.getContainer().size()); final Container container = openejb.getContainer().iterator().next(); assertEquals("STATELESS", container.getType()); assertEquals("10 seconds", container.getProperties().getProperty("AccessTimeout")); } }