Package org.apache.openejb.config.sys

Examples of org.apache.openejb.config.sys.ServiceProvider


    @Override
    public ServiceProvider load(ID id) {
        id.validate();

        { // Already loaded and waiting?
            final ServiceProvider provider = loaded.remove(id);
            if (provider != null) return provider;
        }

        final String namespace = id.getNamespace();
View Full Code Here


    public static ServiceProvider getServiceProvider(String idString) throws OpenEJBException {
        final ID id = ID.parse(idString, currentDefaultProviderUrl(DEFAULT_PROVIDER_URL));

        {
            final ServiceProvider provider = getManager().get(id.getNamespace(), id.getName());
            if (provider != null) return provider;
        }

        throw new NoSuchProviderException(messages.format("conf.4901", id.getName(), id.getNamespace()));
    }
View Full Code Here

    public static String getServiceProviderId(String type) throws OpenEJBException {
        return getServiceProviderId(type, null);
    }

    public static String getServiceProviderId(String type, Properties required) throws OpenEJBException {
        ServiceProvider provider = getServiceProviderByType(type, required);

        return provider != null? provider.getId(): null;
    }
View Full Code Here

            final ResourceAdapter resourceAdapter = connector.getResourceAdapter();
            if (resourceAdapter.getResourceAdapterClass() != null) {
                final String id = this.getId(connectorModule);
                final String className = resourceAdapter.getResourceAdapterClass();

                final ServiceProvider provider = new ServiceProvider(className, id, "Resource");
                provider.getTypes().add(className);

                ServiceUtils.registerServiceProvider(appId, provider);

                final Resource resource = new Resource(id, className, appId + "#" + id);

                for (final ConfigProperty property : resourceAdapter.getConfigProperty()) {
                    final String name = property.getConfigPropertyName();
                    final String value = property.getConfigPropertyValue();
                    if (value != null) {
                        resource.getProperties().setProperty(name, value);
                    }
                }
                connectorInfo.resourceAdapter = this.configFactory.configureService(resource, ResourceInfo.class);
            }

            final OutboundResourceAdapter outbound = resourceAdapter.getOutboundResourceAdapter();
            if (outbound != null) {
                String transactionSupport = "none";
                switch (outbound.getTransactionSupport()) {
                    case LOCAL_TRANSACTION:
                        transactionSupport = "local";
                        break;
                    case NO_TRANSACTION:
                        transactionSupport = "none";
                        break;
                    case XA_TRANSACTION:
                        transactionSupport = "xa";
                        break;
                }
                for (final ConnectionDefinition connection : outbound.getConnectionDefinition()) {

                    final String id = this.getId(connection, outbound, connectorModule);
                    final String className = connection.getManagedConnectionFactoryClass();
                    final String type = connection.getConnectionFactoryInterface();

                    final ServiceProvider provider = new ServiceProvider(className, id, "Resource");
                    provider.getTypes().add(type);

                    ServiceUtils.registerServiceProvider(appId, provider);

                    final Resource resource = new Resource(id, type, appId + "#" + id);
                    final Properties properties = resource.getProperties();
                    for (final ConfigProperty property : connection.getConfigProperty()) {
                        final String name = property.getConfigPropertyName();
                        final String value = property.getConfigPropertyValue();
                        if (value != null) {
                            properties.setProperty(name, value);
                        }
                    }
                    properties.setProperty("TransactionSupport", transactionSupport);
                    if (connectorInfo.resourceAdapter != null) {
                      properties.setProperty("ResourceAdapter", connectorInfo.resourceAdapter.id);
                    }

                    final ResourceInfo resourceInfo = this.configFactory.configureService(resource, ResourceInfo.class);
                    connectorInfo.outbound.add(resourceInfo);
                }
            }

            final InboundResourceadapter inbound = resourceAdapter.getInboundResourceAdapter();
            if (inbound != null) {
                for (final MessageListener messageListener : inbound.getMessageAdapter().getMessageListener()) {
                    final String id = this.getId(messageListener, inbound, connectorModule);

                    final Container container = new Container(id, "MESSAGE", null);

                    final Properties properties = container.getProperties();
                    properties.setProperty("ResourceAdapter", connectorInfo.resourceAdapter.id);
                    properties.setProperty("MessageListenerInterface", messageListener.getMessageListenerType());
                    properties.setProperty("ActivationSpecClass", messageListener.getActivationSpec().getActivationSpecClass());

                    final MdbContainerInfo mdbContainerInfo = this.configFactory.configureService(container, MdbContainerInfo.class);
                    connectorInfo.inbound.add(mdbContainerInfo);
                }
            }

            for (final AdminObject adminObject : resourceAdapter.getAdminObject()) {

                final String id = this.getId(adminObject, resourceAdapter, connectorModule);
                final String className = adminObject.getAdminObjectClass();
                final String type = adminObject.getAdminObjectInterface();

                final ServiceProvider provider = new ServiceProvider(className, id, "Resource");
                provider.getTypes().add(type);

                ServiceUtils.registerServiceProvider(appId, provider);

                final Resource resource = new Resource(id, type, appId + "#" + id);
                final Properties properties = resource.getProperties();
View Full Code Here

        final ProviderManager manager = new ProviderManager(new ProviderLoader() {
            @Override
            public ServiceProvider load(ID id) {
                if ("color".equalsIgnoreCase(id.getName())) {
                    final ServiceProvider color = new ServiceProvider(Color.class, "Color", "Resource");
                    color.getProperties().setProperty("red", "0");
                    color.getProperties().setProperty("green", "0");
                    color.getProperties().setProperty("blue", "0");
                    return color;
                }

                if ("red".equalsIgnoreCase(id.getName())) {
                    final ServiceProvider red = new ServiceProvider();
                    red.setId("Red");
                    red.setParent("Color");
                    red.getProperties().setProperty("red", "255");
                    return red;
                }

                if ("orange".equalsIgnoreCase(id.getName())) {
                    final ServiceProvider orange = new ServiceProvider();
                    orange.setId("Orange");
                    orange.setParent("Red");
                    orange.getProperties().setProperty("green", "200");
                    return orange;
                }

                throw new IllegalStateException(id.toString());
            }

            @Override
            public List<ServiceProvider> load(String namespace) {
                List<ServiceProvider> list = new ArrayList<ServiceProvider>();
                list.add(load(new ID(namespace, "color")));
                list.add(load(new ID(namespace, "red")));
                list.add(load(new ID(namespace, "orange")));
                return list;
            }
        });

        assertEquals(0, manager.getAll().size());

        manager.get("default", "Color");

        assertEquals(1, manager.getAll().size());

        manager.load("default");

        assertEquals(3, manager.getAll().size());

        { // Assert Orange

            // Should have inherited from Red

            final ServiceProvider provider = manager.get("dEFAUlT", "orAngE");
            assertNotNull(provider);
            assertEquals(Color.class.getName(), provider.getClassName());
            assertEquals("255", provider.getProperties().getProperty("reD"));
            assertEquals("200", provider.getProperties().get("grEeN"));
            assertEquals("0", provider.getProperties().get("bLue"));
        }

        { // Assert Red

            // Should have inherited green and blue values from Color

            final ServiceProvider provider = manager.get("dEFaulT", "REd");
            assertNotNull(provider);
            assertEquals(Color.class.getName(), provider.getClassName());
            assertEquals("255", provider.getProperties().getProperty("rED"));
            assertEquals("0", provider.getProperties().get("grEEN"));
            assertEquals("0", provider.getProperties().get("bLUe"));
        }

        { // Assert Color
            // Must be able to retrieve provider and properties in a case-insensitive manner

            final ServiceProvider provider = manager.get("DeFaulT", "CoLoR");
            assertNotNull(provider);
            assertEquals(Color.class.getName(), provider.getClassName());
            assertEquals("0", provider.getProperties().getProperty("rEd"));
            assertEquals("0", provider.getProperties().get("grEEn"));
            assertEquals("0", provider.getProperties().get("blUE"));
        }

        assertEquals(3, manager.getAll().size());
    }
View Full Code Here

        final ProviderManager manager = new ProviderManager(new ProviderLoader() {
            @Override
            public ServiceProvider load(ID id) {
                if ("color".equalsIgnoreCase(id.getName())) {
                    final ServiceProvider color = new ServiceProvider(Color.class, "Color", "Resource");
                    color.setParent("Orange");
                    color.getProperties().setProperty("red", "0");
                    color.getProperties().setProperty("green", "0");
                    color.getProperties().setProperty("blue", "0");
                    return color;
                }

                if ("red".equalsIgnoreCase(id.getName())) {
                    final ServiceProvider red = new ServiceProvider();
                    red.setId("Red");
                    red.setParent("Color");
                    red.getProperties().setProperty("red", "255");
                    return red;
                }

                if ("orange".equalsIgnoreCase(id.getName())) {
                    final ServiceProvider orange = new ServiceProvider();
                    orange.setId("Orange");
                    orange.setParent("Red");
                    orange.getProperties().setProperty("green", "200");
                    return orange;
                }

                throw new IllegalStateException(id.toString());
            }
View Full Code Here

        final ProviderManager manager = new ProviderManager(new ProviderLoader() {
            @Override
            public ServiceProvider load(ID id) {
                if ("color".equalsIgnoreCase(id.getName())) {
                    final ServiceProvider color = new ServiceProvider();
                    color.setClassName(Color.class.getName());
                    color.setFactoryName("fooFactory");
                    color.setId("Color");
                    color.setService("Resource");
                    color.setConstructor("one, two, three");
                    color.setDescription("the description");
                    color.setDisplayName("the display name");
                    color.getProperties().setProperty("red", "0");
                    color.getProperties().setProperty("green", "0");
                    color.getProperties().setProperty("blue", "0");
                    color.getTypes().add(Color.class.getName());
                    return color;
                }

                if ("red".equalsIgnoreCase(id.getName())) {
                    final ServiceProvider red = new ServiceProvider();
                    red.setId("Red");
                    red.setParent("Color");
                    red.getProperties().setProperty("red", "255");
                    return red;
                }

                if ("orange".equalsIgnoreCase(id.getName())) {
                    final ServiceProvider orange = new ServiceProvider();
                    orange.setId("Orange");
                    orange.setParent("Red");
                    orange.getProperties().setProperty("green", "200");
                    return orange;
                }

                throw new IllegalStateException(id.toString());
            }

            @Override
            public List<ServiceProvider> load(String namespace) {
                List<ServiceProvider> list = new ArrayList<ServiceProvider>();
                list.add(load(new ID(namespace, "color")));
                list.add(load(new ID(namespace, "red")));
                list.add(load(new ID(namespace, "orange")));
                return list;
            }
        });

        { // Assert Orange

            // Should have inherited from Red

            final ServiceProvider provider = manager.get("dEFAUlT", "orAngE");
            assertNotNull(provider);
            assertEquals(Color.class.getName(), provider.getClassName());
            assertEquals("Resource", provider.getService());
            assertEquals("one, two, three", provider.getConstructor());
            assertEquals("the description", provider.getDescription());
            assertEquals("the display name", provider.getDisplayName());
            assertEquals("fooFactory", provider.getFactoryName());
            assertEquals("255", provider.getProperties().getProperty("reD"));
            assertEquals("200", provider.getProperties().get("grEeN"));
            assertEquals("0", provider.getProperties().get("bLue"));
            assertEquals(1, provider.getTypes().size());
        }

        { // Assert Red

            // Should have inherited green and blue values from Color

            final ServiceProvider provider = manager.get("dEFaulT", "REd");
            assertNotNull(provider);
            assertEquals(Color.class.getName(), provider.getClassName());
            assertEquals("Resource", provider.getService());
            assertEquals("one, two, three", provider.getConstructor());
            assertEquals("the description", provider.getDescription());
            assertEquals("the display name", provider.getDisplayName());
            assertEquals("fooFactory", provider.getFactoryName());
            assertEquals("255", provider.getProperties().getProperty("rED"));
            assertEquals("0", provider.getProperties().get("grEEN"));
            assertEquals("0", provider.getProperties().get("bLUe"));
        }

        { // Assert Color
            // Must be able to retrieve provider and properties in a case-insensitive manner

            final ServiceProvider provider = manager.get("DeFaulT", "CoLoR");
            assertNotNull(provider);
            assertEquals(Color.class.getName(), provider.getClassName());
            assertEquals("Resource", provider.getService());
            assertEquals("one, two, three", provider.getConstructor());
            assertEquals("the description", provider.getDescription());
            assertEquals("the display name", provider.getDisplayName());
            assertEquals("fooFactory", provider.getFactoryName());
            assertEquals("0", provider.getProperties().getProperty("rEd"));
            assertEquals("0", provider.getProperties().get("grEEn"));
            assertEquals("0", provider.getProperties().get("blUE"));
        }

        assertEquals(3, manager.getAll().size());
    }
View Full Code Here

                return null;
            }
        });

        { // Add Color
            final ServiceProvider color = new ServiceProvider(Color.class, "Color", "Resource");
            color.getProperties().setProperty("red", "0");
            color.getProperties().setProperty("green", "0");
            color.getProperties().setProperty("blue", "0");
            manager.register("default", color);
        }

        { // Assert Color
            // Must be able to retrieve provider and properties in a case-insensitive manner
            final ServiceProvider provider = manager.get("DeFaulT", "CoLoR");
            assertNotNull(provider);
            assertEquals(Color.class.getName(), provider.getClassName());
            assertEquals("0", provider.getProperties().getProperty("rEd"));
            assertEquals("0", provider.getProperties().get("grEEn"));
            assertEquals("0", provider.getProperties().get("blUE"));
        }

        { // Add Red
            final ServiceProvider red = new ServiceProvider();
            red.setId("Red");
            red.setParent("Color");
            red.getProperties().setProperty("red", "255");
            manager.register("default", red);
        }

        { // Assert Red

            // Should have inherited green and blue values from Color

            final ServiceProvider provider = manager.get("dEFaulT", "REd");
            assertNotNull(provider);
            assertEquals(Color.class.getName(), provider.getClassName());
            assertEquals("255", provider.getProperties().getProperty("rED"));
            assertEquals("0", provider.getProperties().get("grEEN"));
            assertEquals("0", provider.getProperties().get("bLUe"));
        }


        { // Add Orange
            final ServiceProvider orange = new ServiceProvider();
            orange.setId("Orange");
            orange.setParent("Red");
            orange.getProperties().setProperty("green", "200");
            manager.register("default", orange);
        }

        { // Assert Orange

            // Should have inherited from Red

            final ServiceProvider provider = manager.get("dEFAUlT", "orAngE");
            assertNotNull(provider);
            assertEquals(Color.class.getName(), provider.getClassName());
            assertEquals("255", provider.getProperties().getProperty("reD"));
            assertEquals("200", provider.getProperties().get("grEeN"));
            assertEquals("0", provider.getProperties().get("bLue"));
        }
    }
View Full Code Here

        final ProviderManager manager = new ProviderManager(new ProviderLoader() {
            @Override
            public ServiceProvider load(ID id) {
                if ("color".equalsIgnoreCase(id.getName())) {
                    final ServiceProvider color = new ServiceProvider(Color.class, "Color", "Resource");
                    color.getProperties().setProperty("red", "0");
                    color.getProperties().setProperty("green", "0");
                    color.getProperties().setProperty("blue", "0");
                    return color;
                }

                if ("red".equalsIgnoreCase(id.getName())) {
                    final ServiceProvider red = new ServiceProvider();
                    red.setId("Red");
                    red.setParent("Color");
                    red.getProperties().setProperty("red", "255");
                    return red;
                }

                if ("orange".equalsIgnoreCase(id.getName())) {
                    final ServiceProvider orange = new ServiceProvider();
                    orange.setId("Orange");
                    orange.setParent("Red");
                    orange.getProperties().setProperty("green", "200");
                    return orange;
                }

                throw new IllegalStateException(id.toString());
            }

            @Override
            public List<ServiceProvider> load(String namespace) {
                return null;
            }
        });

        assertEquals(0, manager.getAll().size());

        { // Assert Orange

            // Should have inherited from Red

            final ServiceProvider provider = manager.get("dEFAUlT", "orAngE");
            assertNotNull(provider);
            assertEquals(Color.class.getName(), provider.getClassName());
            assertEquals("255", provider.getProperties().getProperty("reD"));
            assertEquals("200", provider.getProperties().get("grEeN"));
            assertEquals("0", provider.getProperties().get("bLue"));
        }

        { // Assert Red

            // Should have inherited green and blue values from Color

            final ServiceProvider provider = manager.get("dEFaulT", "REd");
            assertNotNull(provider);
            assertEquals(Color.class.getName(), provider.getClassName());
            assertEquals("255", provider.getProperties().getProperty("rED"));
            assertEquals("0", provider.getProperties().get("grEEN"));
            assertEquals("0", provider.getProperties().get("bLUe"));
        }

        { // Assert Color
            // Must be able to retrieve provider and properties in a case-insensitive manner

            final ServiceProvider provider = manager.get("DeFaulT", "CoLoR");
            assertNotNull(provider);
            assertEquals(Color.class.getName(), provider.getClassName());
            assertEquals("0", provider.getProperties().getProperty("rEd"));
            assertEquals("0", provider.getProperties().get("grEEn"));
            assertEquals("0", provider.getProperties().get("blUE"));
        }

        assertEquals(3, manager.getAll().size());
    }
View Full Code Here

                }
            }

            final String providerType = getProviderType(service);

            final ServiceProvider provider = resolveServiceProvider(service, infoType);

            if (provider == null) {
                final List<ServiceProvider> providers = ServiceUtils.getServiceProvidersByServiceType(providerType);
                final StringBuilder sb = new StringBuilder();
                final List<String> types = new ArrayList<String>();
                for (final ServiceProvider p : providers) {
                    for (final String type : p.getTypes()) {
                        if (types.contains(type)) {
                            continue;
                        }
                        types.add(type);
                        sb.append(System.getProperty("line.separator"));
                        sb.append("  <").append(p.getService());
                        sb.append(" id=\"").append(service.getId()).append('"');
                        sb.append(" type=\"").append(type).append("\"/>");
                    }
                }
                final String noProviderMessage = messages.format("configureService.noProviderForService", providerType, service.getId(), service.getType(), service.getProvider(), sb.toString());
                throw new NoSuchProviderException(noProviderMessage);
            }

            if (service.getId() == null) {
                service.setId(provider.getId());
            }

            final Properties overrides = trim(getSystemProperties(overrideKey(service), provider.getService()));

            final Properties serviceProperties = service.getProperties();

            trim(serviceProperties);

            trim(provider.getProperties());

            logger.info("configureService.configuring", service.getId(), provider.getService(), provider.getId());

            if (logger.isDebugEnabled()) {
                for (final Map.Entry<Object, Object> entry : serviceProperties.entrySet()) {
                    final Object key = entry.getKey();
                    Object value = entry.getValue();

                    if (key instanceof String && "password".equalsIgnoreCase((String) key)) {
                        value = "<hidden>";
                    }

                    logger.debug("[" + key + "=" + value + "]");
                }

                for (final Map.Entry<Object, Object> entry : overrides.entrySet()) {
                    final Object key = entry.getKey();
                    Object value = entry.getValue();

                    if (key instanceof String && "password".equalsIgnoreCase((String) key)) {
                        value = "<hidden>";
                    }

                    logger.debug("Override [" + key + "=" + value + "]");
                }
            }

            final Properties props = new SuperProperties().caseInsensitive(true);

            // weird hack but sometimes we don't want default values when we want null for instance
            if (serviceProperties == null || "false".equals(serviceProperties.getProperty(IGNORE_DEFAULT_VALUES_PROP, "false"))) {
                props.putAll(provider.getProperties());
            }

            props.putAll(serviceProperties);
            props.putAll(overrides);

            // force user properties last
            if (service.getPropertiesProvider() != null) {
                // don't trim them, user wants to handle it himself, let him do it
                final ObjectRecipe recipe = new ObjectRecipe(service.getPropertiesProvider());
                recipe.allow(Option.CASE_INSENSITIVE_PROPERTIES);
                recipe.allow(Option.PRIVATE_PROPERTIES);
                recipe.allow(Option.FIELD_INJECTION);
                recipe.allow(Option.NAMED_PARAMETERS);
                recipe.allow(Option.IGNORE_MISSING_PROPERTIES);
                recipe.setFactoryMethod("provides");
                recipe.setProperties(props);
                recipe.setProperty("properties", props); // let user get all config
                final Properties p = Properties.class.cast(recipe.create());

                props.putAll(p);
            }

            props.remove(IGNORE_DEFAULT_VALUES_PROP);

            if (providerType != null && !provider.getService().equals(providerType)) {
                throw new OpenEJBException(messages.format("configureService.wrongProviderType", service.getId(), providerType));
            }

            final T info;
            try {
                info = infoType.newInstance();
            } catch (final Exception e) {
                throw new OpenEJBException(messages.format("configureService.cannotInstantiateClass", infoType.getName()), e);
            }

            info.service = provider.getService();
            info.types.addAll(provider.getTypes());
            info.description = provider.getDescription();
            info.displayName = provider.getDisplayName();
            info.className = provider.getClassName();
            info.factoryMethod = provider.getFactoryName();
            info.id = service.getId();
            info.properties = props;
            info.constructorArgs.addAll(parseConstructorArgs(provider));
            if (info instanceof ResourceInfo && service instanceof Resource) {
                ((ResourceInfo) info).jndiName = ((Resource) service).getJndi();
View Full Code Here

TOP

Related Classes of org.apache.openejb.config.sys.ServiceProvider

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.