Package org.apache.openejb.config

Source Code of org.apache.openejb.config.InjectionTest$RemoteWidget

/**
*
* 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 java.util.concurrent.TimeUnit;

import javax.annotation.Resource;
import javax.ejb.EJBContext;
import javax.ejb.SessionContext;
import javax.ejb.Stateless;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import junit.framework.TestCase;

import org.apache.openejb.assembler.classic.Assembler;
import org.apache.openejb.assembler.classic.ProxyFactoryInfo;
import org.apache.openejb.assembler.classic.SecurityServiceInfo;
import org.apache.openejb.assembler.classic.StatelessSessionContainerInfo;
import org.apache.openejb.assembler.classic.TransactionServiceInfo;
import org.apache.openejb.core.ivm.naming.InitContextFactory;
import org.apache.openejb.jee.EjbJar;
import org.apache.openejb.jee.EnvEntry;
import org.apache.openejb.jee.InjectionTarget;
import org.apache.openejb.jee.ResourceEnvRef;
import org.apache.openejb.jee.StatelessBean;

/**
* @version $Revision: 986788 $ $Date: 2010-08-18 10:03:19 -0700 (Wed, 18 Aug 2010) $
*/
public class InjectionTest extends TestCase {

    public void testInjections() throws Exception {      
        InitialContext ctx = new InitialContext();

        Object object = ctx.lookup("WidgetBeanLocal");

        assertTrue("instanceof widget", object instanceof Widget);

        Widget widget = (Widget) object;

        // injected via annotations
        assertEquals("2", widget.getString());
        assertEquals(3.0D, widget.getDouble());
        assertEquals(new Long(4), widget.getLong());
        assertEquals(new Float(5f), widget.getFloat());
        assertEquals(new Integer(6), widget.getInteger());
        assertEquals(new Short((short)7), widget.getShort());
        assertEquals(Boolean.FALSE, widget.getBoolean());
        assertEquals(new Character('9'), widget.getCharacter());
        assertEquals(Widget.class, widget.getMyClass());
        assertEquals(TimeUnit.HOURS, widget.getTimeUnit());
               
        // injected via DD
        assertEquals(true, widget.getInjectedBoolean());
        assertEquals(true, widget.lookup("injectedBoolean"));
        assertNotNull(widget.getInjectedContext());
    }

    protected void setUp() throws Exception {
        super.setUp();

        System.setProperty(javax.naming.Context.INITIAL_CONTEXT_FACTORY, InitContextFactory.class.getName());

        ConfigurationFactory config = new ConfigurationFactory();
        Assembler assembler = new Assembler();

        assembler.createProxyFactory(config.configureService(ProxyFactoryInfo.class));
        assembler.createTransactionManager(config.configureService(TransactionServiceInfo.class));
        assembler.createSecurityService(config.configureService(SecurityServiceInfo.class));

        // containers
        StatelessSessionContainerInfo statelessContainerInfo = config.configureService(StatelessSessionContainerInfo.class);
        statelessContainerInfo.properties.setProperty("TimeOut", "10");
        statelessContainerInfo.properties.setProperty("MaxSize", "0");
        statelessContainerInfo.properties.setProperty("StrictPooling", "false");
        assembler.createContainer(statelessContainerInfo);

        // Setup the descriptor information

        StatelessBean bean = new StatelessBean(WidgetBean.class);
        bean.addBusinessLocal(Widget.class.getName());
        bean.addBusinessRemote(RemoteWidget.class.getName());

        EjbJar ejbJar = new EjbJar();
        ejbJar.addEnterpriseBean(bean);
       
        bean.getEnvEntry().add(new EnvEntry(name("myString"), "java.lang.String", "2"));
        bean.getEnvEntry().add(new EnvEntry(name("myDouble"), "java.lang.Double", "3.0"));
        bean.getEnvEntry().add(new EnvEntry(name("myLong"), "java.lang.Long", "4"));
        bean.getEnvEntry().add(new EnvEntry(name("myFloat"), "java.lang.Float", "5"));
        bean.getEnvEntry().add(new EnvEntry(name("myInteger"), "java.lang.Integer", "6"));
        bean.getEnvEntry().add(new EnvEntry(name("myShort"), "java.lang.Short", "7"));
        bean.getEnvEntry().add(new EnvEntry(name("myBoolean"), "java.lang.Boolean", "false"));
        bean.getEnvEntry().add(new EnvEntry(name("myByte"), "java.lang.Byte", "8"));
        bean.getEnvEntry().add(new EnvEntry(name("myCharacter"), "java.lang.Character", "9"));
        bean.getEnvEntry().add(new EnvEntry(name("myClass"), "java.lang.Class", Widget.class.getName()));
        bean.getEnvEntry().add(new EnvEntry(name("myTimeUnit"), TimeUnit.class.getName(), "HOURS"));
       
        EnvEntry entry = new EnvEntry("injectedBoolean", (String) null, "true");
        entry.getInjectionTarget().add((new InjectionTarget(WidgetBean.class.getName(), "injectedBoolean")));
        bean.getEnvEntry().add(entry);
       
        ResourceEnvRef resourceEnvRef = new ResourceEnvRef("injectedContext", (String) null);
        resourceEnvRef.getInjectionTarget().add((new InjectionTarget(WidgetBean.class.getName(), "injectedContext")));
        bean.getResourceEnvRef().add(resourceEnvRef);

        assembler.createApplication(config.configureApplication(ejbJar));
    }

    private String name(String name) {
      return "java:comp/env/" + WidgetBean.class.getName() + "/" + name;
    }
   
    public static interface Widget {
        String getString();
        Double getDouble();
        Long getLong();
        Float getFloat();
        Short getShort();
        Integer getInteger();
        Boolean getBoolean();
        Character getCharacter();
        Byte getByte();
        Class getMyClass();
        TimeUnit getTimeUnit();
       
        Object lookup(String name) throws NamingException;
       
        boolean getInjectedBoolean();
        EJBContext getInjectedContext();
    }

    public static interface RemoteWidget extends Widget {
    }

    @Stateless
    public static class WidgetBean implements Widget, RemoteWidget {

        private SessionContext sessionContext;
       
        @Resource
        private String myString = "1";

        @Resource
        private Double myDouble = 1.0D;

        @Resource
        private Long myLong = 1L;

        @Resource
        private Float myFloat = 1.0F;

        @Resource
        private Integer myInteger = 1;

        @Resource
        private Short myShort = (short) 1;

        @Resource
        private Boolean myBoolean = true;

        @Resource
        private Byte myByte = (byte) 1;

        @Resource
        private Character myCharacter = '1';
       
        @Resource
        private Class myClass = Object.class;
       
        @Resource
        private TimeUnit myTimeUnit = TimeUnit.DAYS;

        // injected via DD
        private boolean injectedBoolean = false;
       
        // injected via DD
        private EJBContext injectedContext;
       
        public WidgetBean() {          
        }

        @Resource
        public void setSessionContext(SessionContext sessionContext) {
            this.sessionContext = sessionContext;
        }

        public Object lookup(String name) throws NamingException {
            return sessionContext.lookup(name);
        }
       
        public Boolean getBoolean() {
            return myBoolean;
        }

        public Byte getByte() {
            return myByte;
        }

        public Character getCharacter() {
            return myCharacter;
        }

        public Double getDouble() {
            return myDouble;
        }

        public Float getFloat() {
            return myFloat;
        }

        public Integer getInteger() {
            return myInteger;
        }

        public Long getLong() {
            return myLong;
        }

        public Class getMyClass() {
            return myClass;
        }

        public Short getShort() {
            return myShort;
        }

        public String getString() {
            return myString;
        }

        public TimeUnit getTimeUnit() {
            return myTimeUnit;
        }

        public boolean getInjectedBoolean() {
            return injectedBoolean;
        }
       
        public EJBContext getInjectedContext() {
            return injectedContext;
        }
    }
}
TOP

Related Classes of org.apache.openejb.config.InjectionTest$RemoteWidget

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.
create', 'UA-20639858-1', 'auto'); ga('send', 'pageview');