Package org.apache.geronimo.naming.deployment

Source Code of org.apache.geronimo.naming.deployment.MessageDestinationTest$MockNamingContext

/**
*
* Copyright 2005 The Apache Software Foundation
*
*  Licensed 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.geronimo.naming.deployment;

import java.net.URI;
import java.util.Map;
import java.util.List;
import java.util.Set;
import javax.naming.Reference;
import javax.management.ObjectName;
import javax.xml.namespace.QName;

import junit.framework.TestCase;
import org.apache.geronimo.j2ee.deployment.RefContext;
import org.apache.geronimo.j2ee.deployment.EJBReferenceBuilder;
import org.apache.geronimo.j2ee.deployment.NamingContext;
import org.apache.geronimo.j2ee.deployment.ResourceReferenceBuilder;
import org.apache.geronimo.j2ee.deployment.ServiceReferenceBuilder;
import org.apache.geronimo.j2ee.deployment.Module;
import org.apache.geronimo.j2ee.j2eeobjectnames.J2eeContext;
import org.apache.geronimo.j2ee.j2eeobjectnames.J2eeContextImpl;
import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
import org.apache.geronimo.gbean.GBeanData;
import org.apache.geronimo.common.DeploymentException;
import org.apache.geronimo.deployment.DeploymentContext;
import org.apache.geronimo.deployment.GBeanDataRegistry;
import org.apache.geronimo.kernel.Kernel;
import org.apache.geronimo.kernel.GBeanNotFoundException;
import org.apache.geronimo.xbeans.j2ee.MessageDestinationType;
import org.apache.geronimo.xbeans.j2ee.MessageDestinationRefType;
import org.apache.geronimo.xbeans.geronimo.naming.GerMessageDestinationType;
import org.apache.geronimo.naming.deployment.ENCConfigBuilder;
import org.apache.geronimo.naming.java.ComponentContextBuilder;

/**
* @version $Rev:  $ $Date:  $
*/
public class MessageDestinationTest extends TestCase {
    private Kernel kernel = null;
    private RefContext refContext =  new RefContext(new EJBReferenceBuilder() {
            public Reference createEJBLocalReference(String objectName, GBeanData gbeanData, boolean isSession, String localHome, String local) throws DeploymentException {
                return null;
            }

            public Reference createEJBRemoteReference(String objectName, GBeanData gbeanData, boolean isSession, String home, String remote) throws DeploymentException {
                return null;
            }

            public Reference createCORBAReference(URI corbaURL, String objectName, ObjectName containerName, String home) throws DeploymentException {
                return null;
            }

            public Object createHandleDelegateReference() throws DeploymentException {
                return null;
            }

            public Reference getImplicitEJBRemoteRef(URI module, String refName, boolean isSession, String home, String remote, NamingContext context) throws DeploymentException {
                return null;
            }

            public Reference getImplicitEJBLocalRef(URI module, String refName, boolean isSession, String localHome, String local, NamingContext context) throws DeploymentException {
                return null;
            }
        }, new ResourceReferenceBuilder() {
            public Reference createResourceRef(String containerId, Class iface) throws DeploymentException {
                return null;
            }

            public Reference createAdminObjectRef(String containerId, Class iface) throws DeploymentException {
                return null;
            }

            public GBeanData locateActivationSpecInfo(GBeanData resourceAdapterModuleData, String messageListenerInterface) throws DeploymentException {
                return null;
            }

            public GBeanData locateResourceAdapterGBeanData(GBeanData resourceAdapterModuleData) throws DeploymentException {
                return null;
            }

            public GBeanData locateAdminObjectInfo(GBeanData resourceAdapterModuleData, String adminObjectInterfaceName) throws DeploymentException {
                return null;
            }

            public GBeanData locateConnectionFactoryInfo(GBeanData resourceAdapterModuleData, String connectionFactoryInterfaceName) throws DeploymentException {
                return null;
            }
        }, new ServiceReferenceBuilder() {
            //it could return a Service or a Reference, we don't care
            public Object createService(Class serviceInterface, URI wsdlURI, URI jaxrpcMappingURI, QName serviceQName, Map portComponentRefMap, List handlerInfos, Object serviceRefType, DeploymentContext deploymentContext, Module module, ClassLoader classLoader) throws DeploymentException {
                return null;
            }
        }, kernel

                );
    J2eeContext j2eeContext = new J2eeContextImpl("domain", "server", "app", NameFactory.JCA_RESOURCE, "module1", null, null);
    NamingContext namingContext = new MockNamingContext(j2eeContext);

    ComponentContextBuilder builder = new ComponentContextBuilder();

    public void testMessageDestinations() throws Exception {
        MessageDestinationType[] specdests = new MessageDestinationType[] {makeMD("d1"), makeMD("d2")};
        GerMessageDestinationType[] gerdests = new GerMessageDestinationType[] {makeGerMD("d1", "l1"), makeGerMD("d2", "l2")};
        MessageDestinationRefType[] destRefs = new MessageDestinationRefType[] {makeMDR("n1", "d1"), makeMDR("n2", "d2")};
        ENCConfigBuilder.registerMessageDestinations(refContext, "module1", specdests, gerdests);
        ObjectName n1 = NameFactory.getComponentName(null, null, null, null, null, "l1", NameFactory.JCA_ADMIN_OBJECT, j2eeContext);
        ObjectName n2 = NameFactory.getComponentName(null, null, null, null, null, "l2", NameFactory.JCA_ADMIN_OBJECT, j2eeContext);
        namingContext.addGBean(new GBeanData(n1, null));
        namingContext.addGBean(new GBeanData(n2, null));
        ENCConfigBuilder.addMessageDestinationRefs(refContext, namingContext, destRefs, this.getClass().getClassLoader(), builder);
        Map context = builder.getContext();
        assertEquals(2, context.size());
    }

    public void testMessageDestinationsWithModule() throws Exception {
        MessageDestinationType[] specdests = new MessageDestinationType[] {makeMD("d1"), makeMD("d2")};
        GerMessageDestinationType[] gerdests = new GerMessageDestinationType[] {makeGerMD("d1", "module1", "l1"), makeGerMD("d2", "module1", "l2")};
        MessageDestinationRefType[] destRefs = new MessageDestinationRefType[] {makeMDR("n1", "d1"), makeMDR("n2", "d2")};
        ENCConfigBuilder.registerMessageDestinations(refContext, "module1", specdests, gerdests);
        ObjectName n1 = NameFactory.getComponentName(null, null, null, null, null, "l1", NameFactory.JCA_ADMIN_OBJECT, j2eeContext);
        ObjectName n2 = NameFactory.getComponentName(null, null, null, null, null, "l2", NameFactory.JCA_ADMIN_OBJECT, j2eeContext);
        namingContext.addGBean(new GBeanData(n1, null));
        namingContext.addGBean(new GBeanData(n2, null));
        ENCConfigBuilder.addMessageDestinationRefs(refContext, namingContext, destRefs, this.getClass().getClassLoader(), builder);
        Map context = builder.getContext();
        assertEquals(2, context.size());
    }

    public void testMessageDestinationsMatch() throws Exception {
        MessageDestinationType[] specdests = new MessageDestinationType[] {makeMD("d1")};
        GerMessageDestinationType[] gerdests = new GerMessageDestinationType[] {makeGerMD("d1", "l1"), makeGerMD("d2", "l2")};
        try {
            ENCConfigBuilder.registerMessageDestinations(refContext, "module1", specdests, gerdests);
            fail("tried to register a GerMessageDestination witout a MessageDestination and it succeeded");
        } catch (DeploymentException e) {

        }
    }

    private MessageDestinationRefType makeMDR(String name, String link) {
        MessageDestinationRefType mdr = MessageDestinationRefType.Factory.newInstance();
        mdr.addNewMessageDestinationRefName().setStringValue(name);
        mdr.addNewMessageDestinationType().setStringValue(Object.class.getName());
        mdr.addNewMessageDestinationLink().setStringValue(link);
        return mdr;
    }

    private MessageDestinationType makeMD(String name) {
        MessageDestinationType d1 = MessageDestinationType.Factory.newInstance();
        d1.addNewMessageDestinationName().setStringValue(name);
        return d1;
    }

    private GerMessageDestinationType makeGerMD(String name, String link) {
        GerMessageDestinationType d1 = GerMessageDestinationType.Factory.newInstance();
        d1.setMessageDestinationName(name);
        d1.setAdminObjectLink(link);
        return d1;
    }

    private GerMessageDestinationType makeGerMD(String name, String module, String link) {
        GerMessageDestinationType d1 = makeGerMD(name, link);
        d1.setAdminObjectModule(module);
        return d1;
    }
    class MockNamingContext implements NamingContext {

        private final GBeanDataRegistry gbeans = new GBeanDataRegistry();
        private final J2eeContext j2eeContext;

        public MockNamingContext(J2eeContext j2eeContext) {
            this.j2eeContext = j2eeContext;
        }

        public J2eeContext getJ2eeContext() {
            return j2eeContext;
        }

        public void addGBean(GBeanData gbean) {
            gbeans.register(gbean);
        }

        public Set getGBeanNames() {
            return gbeans.getGBeanNames();
        }

        public Set listGBeans(ObjectName pattern) {
            return gbeans.listGBeans(pattern);
        }

        public GBeanData getGBeanInstance(ObjectName name) throws GBeanNotFoundException {
            return gbeans.getGBeanInstance(name);
        }

        public URI getConfigID() {
            return URI.create("MockNamingContextID");
        }
    }


}
TOP

Related Classes of org.apache.geronimo.naming.deployment.MessageDestinationTest$MockNamingContext

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.