Package org.apache.openejb.jee

Examples of org.apache.openejb.jee.ResourceAdapterBase


        resourceAdapterModuleData.setAttribute("description", connector.getDescription());
        resourceAdapterModuleData.setAttribute("vendorName", connector.getVendorName());
        resourceAdapterModuleData.setAttribute("EISType", connector.getEisType());
        resourceAdapterModuleData.setAttribute("resourceAdapterVersion", connector.getResourceAdapterVersion());

        ResourceAdapterBase resourceAdapter = connector.getResourceAdapter();
        // Create the resource adapter gbean
        if (resourceAdapter.getResourceAdapterClass() != null) {
            GBeanInfoBuilder resourceAdapterInfoBuilder = new GBeanInfoBuilder(ResourceAdapterWrapperGBean.class, new MultiGBeanInfoFactory().getGBeanInfo(ResourceAdapterWrapperGBean.class));
            String resourceAdapterClassName = resourceAdapter.getResourceAdapterClass();
            GBeanData resourceAdapterGBeanData = setUpDynamicGBeanWithProperties(resourceAdapterClassName, resourceAdapterInfoBuilder, resourceAdapter.getConfigProperty(), bundle, Collections.<String>emptySet());

            resourceAdapterGBeanData.setAttribute("resourceAdapterClass", resourceAdapterClassName);

            // Add map from messageListenerInterface to activationSpec class
            Map<String, String> messageListenerToActivationSpecMap = new TreeMap<String, String>();
            if (resourceAdapter.getInboundResourceAdapter() != null && resourceAdapter.getInboundResourceAdapter().getMessageAdapter() != null) {
                for (MessageListener messageListener : resourceAdapter.getInboundResourceAdapter().getMessageAdapter().getMessageListener()) {
                    String messageListenerInterface = messageListener.getMessageListenerType();
                    ActivationSpec activationSpec = messageListener.getActivationSpec();
                    String activationSpecClassName = activationSpec.getActivationSpecClass();
                    messageListenerToActivationSpecMap.put(messageListenerInterface, activationSpecClassName);
                }
                resourceAdapterGBeanData.setAttribute("messageListenerToActivationSpecMap", messageListenerToActivationSpecMap);
                resourceAdapterGBeanData.setReferencePattern("XATerminator", earContext.getTransactionManagerName());
                resourceAdapterGBeanData.setReferencePattern("TransactionManager", earContext.getTransactionManagerName());
                resourceAdapterGBeanData.setReferencePattern("TransactionSynchronizationRegistry", earContext.getTransactionManagerName());
                //This was previously in a separate if block, whether or not resourceAdapterClass was set.  I don't think this makes sense
                Map activationSpecInfoMap = getActivationSpecInfoMap(resourceAdapter.getInboundResourceAdapter().getMessageAdapter().getMessageListener(), bundle);
                resourceAdapterModuleData.setAttribute("activationSpecInfoMap", activationSpecInfoMap);
            }

            resourceAdapterModuleData.setAttribute("resourceAdapterGBeanData", resourceAdapterGBeanData);
        }

        Map adminObjectInfoMap = getAdminObjectInfoMap(resourceAdapter.getAdminObject(), bundle);
        resourceAdapterModuleData.setAttribute("adminObjectInfoMap", adminObjectInfoMap);
        if (resourceAdapter.getOutboundResourceAdapter() != null) {
            Map managedConnectionFactoryInfoMap = getManagedConnectionFactoryInfoMap(resourceAdapter.getOutboundResourceAdapter().getConnectionDefinition(), bundle);
            resourceAdapterModuleData.setAttribute("managedConnectionFactoryInfoMap", managedConnectionFactoryInfoMap);
        }

        try {
            earContext.addGBean(resourceAdapterModuleData);
View Full Code Here


            raClass = resourceAdapterClasses.get(0);
            connector = new ConnectorBase();
//          connector.setDescriptions(ra.description());
            connector.setMetadataComplete(false);
            connector.setVersion("1.6");
            ResourceAdapterBase resourceAdapter = new ResourceAdapterBase();
            connector.setResourceAdapter(resourceAdapter);
            resourceAdapter.setResourceAdapterClass(raClass.getName());
        } else {
            String raClassName = connector.getResourceAdapter().getResourceAdapterClass();
            if (raClassName != null) {
                try {
                    raClass = bundle.loadClass(raClassName).asSubclass(ResourceAdapter.class);
                } catch (ClassNotFoundException e) {
                    throw new DeploymentException("Can not load resource adapter class: " + raClassName, e);
                }
            }
        }
        if (connector.isMetadataComplete() != null && connector.isMetadataComplete()) {
            log.info("Connector is metadata complete");
        } else {
            ResourceAdapterBase resourceAdapter = connector.getResourceAdapter();
            log.info("Reading connector annotations");
            if (raClass != null/*and not metadata complete */) {
                javax.resource.spi.Connector ra = raClass.getAnnotation(javax.resource.spi.Connector.class);
                if (ra != null) {

                    OutboundResourceAdapter outboundResourceAdapter = resourceAdapter.getOutboundResourceAdapter();
                    if (outboundResourceAdapter == null) {
                        outboundResourceAdapter = new OutboundResourceAdapter();
                        resourceAdapter.setOutboundResourceAdapter(outboundResourceAdapter);
                    }
                    if (outboundResourceAdapter.isReauthenticationSupport() == null) {
                        outboundResourceAdapter.setReauthenticationSupport(ra.reauthenticationSupport());
                    }
                    if (outboundResourceAdapter.getTransactionSupport() == null) {
                        outboundResourceAdapter.setTransactionSupport(TransactionSupportType.fromValue(ra.transactionSupport().toString()));
                    }
                    connector.getRequiredWorkContext().addAll(toString(ra.requiredWorkContexts()));
                    setConfigProperties(resourceAdapter.getConfigProperty(), raClass);
                }
            }

            //inbound
            log.info("connector of type: " + connector);
            InboundResource inboundResource = resourceAdapter.getInboundResourceAdapter();
            if (inboundResource == null) {
                inboundResource = new InboundResource();
                inboundResource.setMessageAdapter(new MessageAdapter());
            }
            MessageAdapter messageAdapter = inboundResource.getMessageAdapter();
            List<Class> activationSpecClasses = classFinder.findAnnotatedClasses(Activation.class);

            for (Class<?> asClass : activationSpecClasses) {
                Activation activation = asClass.getAnnotation(Activation.class);
                for (Class messageListenerClass : activation.messageListeners()) {
                    ActivationSpec activationSpec = getActivationSpec(messageAdapter, messageListenerClass);

                    if (activationSpec.getActivationSpecClass() == null) {
                        activationSpec.setActivationSpecClass(asClass.getName());
                    }
                    if (asClass.getName().equals(activationSpec.getActivationSpecClass())) {
                        setConfigProperties(activationSpec.getConfigProperty(), asClass);
                    }
                    //TODO set required config properties from @NotNull annotations
                }
            }
            if (resourceAdapter.getInboundResourceAdapter() == null && inboundResource.getMessageAdapter().getMessageListener().size() > 0) {
                resourceAdapter.setInboundResourceAdapter(inboundResource);
            }

            //admin objects
            for (Class adminObjectClass : classFinder.findAnnotatedClasses(AdministeredObject.class)) {
                AdministeredObject administeredObject = (AdministeredObject) adminObjectClass.getAnnotation(AdministeredObject.class);
                Class[] interfaces = administeredObject.adminObjectInterfaces();
                if (interfaces == null || interfaces.length == 0) {
                    List<Class> allInterfaces = new ArrayList<Class>(Arrays.asList(adminObjectClass.getInterfaces()));
                    allInterfaces.remove(Serializable.class);
                    allInterfaces.remove(Externalizable.class);
                    //TODO check if specified in ra.xml
                    if (allInterfaces.size() != 1) {
                        throw new DeploymentException("Interface for admin object not specified properly: " + allInterfaces);
                    }
                    interfaces = allInterfaces.toArray(new Class[1]);
                }
                for (Class aoInterface : interfaces) {
                    AdminObject adminObject = getAdminObject(resourceAdapter, aoInterface);
                    if (adminObject.getAdminObjectClass() == null) {
                        adminObject.setAdminObjectClass(adminObjectClass.getName());
                    }
                    if (adminObjectClass.getName().equals(adminObject.getAdminObjectClass())) {
                        setConfigProperties(adminObject.getConfigProperty(), adminObjectClass);
                    }
                }
            }

            OutboundResourceAdapter outboundResourceAdapter = resourceAdapter.getOutboundResourceAdapter();
            if (outboundResourceAdapter == null) {
                outboundResourceAdapter = new OutboundResourceAdapter();
            }

            //outbound
            for (Class<? extends ManagedConnectionFactory> mcfClass : classFinder.findAnnotatedClasses(javax.resource.spi.ConnectionDefinition.class)) {
                javax.resource.spi.ConnectionDefinition connectionDefinitionAnnotation = mcfClass.getAnnotation(javax.resource.spi.ConnectionDefinition.class);
                buildConnectionDefinition(mcfClass, connectionDefinitionAnnotation, outboundResourceAdapter);
            }
            for (Class<? extends ManagedConnectionFactory> mcfClass : classFinder.findAnnotatedClasses(ConnectionDefinitions.class)) {
                ConnectionDefinitions connectionDefinitionAnnotations = mcfClass.getAnnotation(ConnectionDefinitions.class);
                for (javax.resource.spi.ConnectionDefinition connectionDefinitionAnnotation : connectionDefinitionAnnotations.value()) {
                    buildConnectionDefinition(mcfClass, connectionDefinitionAnnotation, outboundResourceAdapter);
                }
            }
            if (outboundResourceAdapter.getConnectionDefinition().size() > 0) {
                resourceAdapter.setOutboundResourceAdapter(outboundResourceAdapter);
            }
        }
        return connector;
    }
View Full Code Here

    public String getSchemaNamespace() {
        return GERCONNECTOR_NAMESPACE;
    }

    private void addConnectorGBeans(EARContext earContext, AbstractName jcaResourceName, GBeanData resourceAdapterModuleData, ConnectorBase connector, GerConnectorType geronimoConnector, Bundle bundle) throws DeploymentException {
        ResourceAdapterBase resourceAdapter = connector.getResourceAdapter();

        GerResourceadapterType[] geronimoResourceAdapters = geronimoConnector.getResourceadapterArray();
        for (GerResourceadapterType geronimoResourceAdapter : geronimoResourceAdapters) {
            // Resource Adapter
            AbstractName resourceAdapterAbstractName = null;
            if (resourceAdapter.getResourceAdapterClass() != null) {
                GBeanData resourceAdapterGBeanData = locateResourceAdapterGBeanData(resourceAdapterModuleData);
                GBeanData resourceAdapterInstanceGBeanData = new GBeanData(resourceAdapterGBeanData);

                String resourceAdapterName;
                AbstractNameQuery workManagerName;
                if (geronimoResourceAdapter.isSetResourceadapterInstance()) {
                    GerResourceadapterInstanceType resourceAdapterInstance = geronimoResourceAdapter.getResourceadapterInstance();
                    setDynamicGBeanDataAttributes(resourceAdapterInstanceGBeanData, resourceAdapterInstance.getConfigPropertySettingArray(), bundle);
                    workManagerName = ENCConfigBuilder.getGBeanQuery(NameFactory.JCA_WORK_MANAGER, resourceAdapterInstance.getWorkmanager());
                    resourceAdapterName = resourceAdapterInstance.getResourceadapterName();
                } else {
                    workManagerName = ENCConfigBuilder.buildAbstractNameQuery(null, null, defaultWorkManagerName, NameFactory.JCA_WORK_MANAGER, null);
                    resourceAdapterName = "ResourceAdapterInstance-" + System.currentTimeMillis();
                    log.warn("Resource adapter instance information was not specified in Geronimo plan. Using defaults.");
                }

                // set the work manager name
                resourceAdapterInstanceGBeanData.setReferencePattern("WorkManager", workManagerName);

                // set the xa terminator name which is the same as our transaction manager
                resourceAdapterInstanceGBeanData.setReferencePattern("XATerminator", earContext.getTransactionManagerName());

                resourceAdapterAbstractName = earContext.getNaming().createChildName(jcaResourceName, resourceAdapterName, NameFactory.JCA_RESOURCE_ADAPTER);
                resourceAdapterInstanceGBeanData.setAbstractName(resourceAdapterAbstractName);
                try {
                    earContext.addGBean(resourceAdapterInstanceGBeanData);
                } catch (GBeanAlreadyExistsException e) {
                    throw new DeploymentException("Could not add resource adapter instance gbean to context", e);
                }
            }

            // Outbound Managed Connection Factories (think JDBC data source or JMS connection factory)

            // ManagedConnectionFactory setup
            if (geronimoResourceAdapter.isSetOutboundResourceadapter()) {
                if (resourceAdapter.getOutboundResourceAdapter() == null) {
                    throw new DeploymentException("Geronimo plan configures an outbound resource adapter but ra.xml does not describe any");
                }
                String transactionSupport = resourceAdapter.getOutboundResourceAdapter().getTransactionSupport().value();
                for (GerConnectionDefinitionType geronimoConnectionDefinition : geronimoResourceAdapter.getOutboundResourceadapter().getConnectionDefinitionArray()) {
                    assert geronimoConnectionDefinition != null : "Null GeronimoConnectionDefinition";

                    String connectionFactoryInterfaceName = geronimoConnectionDefinition.getConnectionfactoryInterface().trim();
                    GBeanData connectionFactoryGBeanData = locateConnectionFactoryInfo(resourceAdapterModuleData, connectionFactoryInterfaceName);
View Full Code Here

TOP

Related Classes of org.apache.openejb.jee.ResourceAdapterBase

Copyright © 2018 www.massapicom. 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.