Search in sources :

Example 1 with JBossServiceAttributeConfig

use of org.jboss.as.service.descriptor.JBossServiceAttributeConfig in project wildfly by wildfly.

the class ParsedServiceDeploymentProcessor method addAttributes.

private void addAttributes(final JBossServiceAttributeConfig[] attributeConfigs, final List<ClassReflectionIndex> mBeanClassHierarchy, final MBeanServices mBeanServices, final ClassLoader classLoader) throws DeploymentUnitProcessingException {
    if (attributeConfigs != null) {
        final Service<Object> createDestroyService = mBeanServices.getCreateDestroyService();
        for (final JBossServiceAttributeConfig attributeConfig : attributeConfigs) {
            final String propertyName = attributeConfig.getName();
            final Inject injectConfig = attributeConfig.getInject();
            final ValueFactory valueFactoryConfig = attributeConfig.getValueFactory();
            if (injectConfig != null) {
                final Value<?> value = getValue(injectConfig);
                final Injector<Object> injector = getPropertyInjector(propertyName, mBeanClassHierarchy, createDestroyService, value);
                mBeanServices.addAttribute(injectConfig.getBeanName(), injector);
            } else if (valueFactoryConfig != null) {
                final Value<?> value = getValue(valueFactoryConfig, classLoader);
                final Injector<Object> injector = getPropertyInjector(propertyName, mBeanClassHierarchy, createDestroyService, value);
                mBeanServices.addAttribute(valueFactoryConfig.getBeanName(), injector);
            } else {
                final Value<?> value = getValue(attributeConfig, mBeanClassHierarchy);
                final Injector<Object> injector = getPropertyInjector(propertyName, mBeanClassHierarchy, createDestroyService, Values.injectedValue());
                mBeanServices.addInjectionValue(injector, value);
            }
        }
    }
}
Also used : Inject(org.jboss.as.service.descriptor.JBossServiceAttributeConfig.Inject) MethodInjector(org.jboss.msc.inject.MethodInjector) Injector(org.jboss.msc.inject.Injector) JBossServiceAttributeConfig(org.jboss.as.service.descriptor.JBossServiceAttributeConfig) Value(org.jboss.msc.value.Value) ImmediateValue(org.jboss.msc.value.ImmediateValue) MethodValue(org.jboss.msc.value.MethodValue) ValueFactory(org.jboss.as.service.descriptor.JBossServiceAttributeConfig.ValueFactory)

Example 2 with JBossServiceAttributeConfig

use of org.jboss.as.service.descriptor.JBossServiceAttributeConfig in project wildfly by wildfly.

the class ParsedServiceDeploymentProcessor method addAttributes.

private void addAttributes(final JBossServiceAttributeConfig[] attributeConfigs, final List<ClassReflectionIndex> mBeanClassHierarchy, final MBeanServices mBeanServices, final ClassLoader classLoader, final Object mBeanInstance) throws DeploymentUnitProcessingException {
    if (attributeConfigs != null) {
        for (final JBossServiceAttributeConfig attributeConfig : attributeConfigs) {
            final String propertyName = attributeConfig.getName();
            final Inject injectConfig = attributeConfig.getInject();
            final ValueFactory valueFactoryConfig = attributeConfig.getValueFactory();
            final Method setter = ReflectionUtils.getSetter(mBeanClassHierarchy, propertyName);
            if (injectConfig != null) {
                final DelegatingSupplier propertySupplier = getObjectSupplier(injectConfig);
                mBeanServices.addAttribute(injectConfig.getBeanName(), setter, propertySupplier);
            } else if (valueFactoryConfig != null) {
                final DelegatingSupplier valueFactorySupplier = getObjectSupplier(valueFactoryConfig, classLoader);
                mBeanServices.addAttribute(valueFactoryConfig.getBeanName(), setter, valueFactorySupplier);
            } else {
                final Supplier<Object> value = getObjectSupplier(attributeConfig, mBeanClassHierarchy);
                mBeanServices.addValue(setter, value);
            }
        }
    }
}
Also used : Inject(org.jboss.as.service.descriptor.JBossServiceAttributeConfig.Inject) JBossServiceAttributeConfig(org.jboss.as.service.descriptor.JBossServiceAttributeConfig) Supplier(java.util.function.Supplier) ValueFactory(org.jboss.as.service.descriptor.JBossServiceAttributeConfig.ValueFactory) Method(java.lang.reflect.Method)

Example 3 with JBossServiceAttributeConfig

use of org.jboss.as.service.descriptor.JBossServiceAttributeConfig in project wildfly by wildfly.

the class ParsedServiceDeploymentProcessor method addServices.

private void addServices(final ServiceTarget target, final JBossServiceConfig mBeanConfig, final ClassLoader classLoader, final DeploymentReflectionIndex index, ServiceComponentInstantiator componentInstantiator, final DeploymentPhaseContext phaseContext) throws DeploymentUnitProcessingException {
    final String mBeanClassName = mBeanConfig.getCode();
    final List<ClassReflectionIndex> mBeanClassHierarchy = getClassHierarchy(mBeanClassName, index, classLoader);
    final Object mBeanInstance = newInstance(mBeanConfig, mBeanClassHierarchy, classLoader);
    final String mBeanName = mBeanConfig.getName();
    final DeploymentUnit deploymentUnit = phaseContext.getDeploymentUnit();
    final MBeanServices mBeanServices = new MBeanServices(mBeanName, mBeanInstance, mBeanClassHierarchy, target, componentInstantiator, deploymentUnit.getAttachmentList(org.jboss.as.ee.component.Attachments.WEB_SETUP_ACTIONS), classLoader, mbeanServerServiceName);
    final JBossServiceDependencyConfig[] dependencyConfigs = mBeanConfig.getDependencyConfigs();
    addDependencies(dependencyConfigs, mBeanClassHierarchy, mBeanServices, mBeanInstance);
    final JBossServiceDependencyListConfig[] dependencyListConfigs = mBeanConfig.getDependencyConfigLists();
    addDependencyLists(dependencyListConfigs, mBeanClassHierarchy, mBeanServices, mBeanInstance);
    final JBossServiceAttributeConfig[] attributeConfigs = mBeanConfig.getAttributeConfigs();
    addAttributes(attributeConfigs, mBeanClassHierarchy, mBeanServices, classLoader, mBeanInstance);
    // register all mBean related services
    mBeanServices.install();
}
Also used : JBossServiceDependencyListConfig(org.jboss.as.service.descriptor.JBossServiceDependencyListConfig) ClassReflectionIndex(org.jboss.as.server.deployment.reflect.ClassReflectionIndex) JBossServiceAttributeConfig(org.jboss.as.service.descriptor.JBossServiceAttributeConfig) JBossServiceDependencyConfig(org.jboss.as.service.descriptor.JBossServiceDependencyConfig) DeploymentUnit(org.jboss.as.server.deployment.DeploymentUnit)

Example 4 with JBossServiceAttributeConfig

use of org.jboss.as.service.descriptor.JBossServiceAttributeConfig in project wildfly by wildfly.

the class JBossServiceXmlDescriptorParserTestCase method testParse.

@Test
public void testParse() throws Exception {
    final File testXmlFile = getResourceFile(JBossServiceXmlDescriptorParserTestCase.class, "/test/serviceXmlDeployment.jar/META-INF/jboss-service.xml");
    final ParseResult<JBossServiceXmlDescriptor> jBossServiceXmlDescriptorParseResult = new ParseResult<JBossServiceXmlDescriptor>();
    InputStream inputStream = null;
    try {
        inputStream = new FileInputStream(testXmlFile);
        final XMLStreamReader reader = inputFactory.createXMLStreamReader(inputStream);
        xmlMapper.parseDocument(jBossServiceXmlDescriptorParseResult, reader);
    } finally {
        if (inputStream != null)
            inputStream.close();
    }
    final JBossServiceXmlDescriptor xmlDescriptor = jBossServiceXmlDescriptorParseResult.getResult();
    assertNotNull(xmlDescriptor);
    final List<JBossServiceConfig> serviceConfigs = xmlDescriptor.getServiceConfigs();
    assertEquals(3, serviceConfigs.size());
    for (JBossServiceConfig jBossServiceConfig : serviceConfigs) {
        assertEquals("org.jboss.as.service.LegacyService", jBossServiceConfig.getCode());
        if (jBossServiceConfig.getName().equals("jboss.test.service")) {
            final JBossServiceConstructorConfig constructorConfig = jBossServiceConfig.getConstructorConfig();
            assertNotNull(constructorConfig);
            final JBossServiceConstructorConfig.Argument[] arguments = constructorConfig.getArguments();
            assertEquals(1, arguments.length);
            assertEquals(String.class.getName(), arguments[0].getType());
            assertEquals("Test Value", arguments[0].getValue());
        } else if (jBossServiceConfig.getName().equals("jboss.test.service.second")) {
            assertNull(jBossServiceConfig.getConstructorConfig());
            final JBossServiceDependencyConfig[] dependencyConfigs = jBossServiceConfig.getDependencyConfigs();
            assertEquals(1, dependencyConfigs.length);
            assertEquals("jboss.test.service", dependencyConfigs[0].getDependencyName());
            assertEquals("other", dependencyConfigs[0].getOptionalAttributeName());
            final JBossServiceAttributeConfig[] attributeConfigs = jBossServiceConfig.getAttributeConfigs();
            assertEquals(1, attributeConfigs.length);
            assertEquals("somethingElse", attributeConfigs[0].getName());
            assertNull(attributeConfigs[0].getInject());
            final JBossServiceAttributeConfig.ValueFactory valueFactory = attributeConfigs[0].getValueFactory();
            assertNotNull(valueFactory);
            assertEquals("jboss.test.service", valueFactory.getBeanName());
            assertEquals("appendSomethingElse", valueFactory.getMethodName());
            final JBossServiceAttributeConfig.ValueFactoryParameter[] parameters = valueFactory.getParameters();
            assertEquals(1, parameters.length);
            assertEquals("java.lang.String", parameters[0].getType());
            assertEquals("more value", parameters[0].getValue());
        } else if (jBossServiceConfig.getName().equals("jboss.test.service.third")) {
            assertNull(jBossServiceConfig.getConstructorConfig());
            final JBossServiceAttributeConfig[] attributeConfigs = jBossServiceConfig.getAttributeConfigs();
            assertEquals(2, attributeConfigs.length);
            assertEquals("other", attributeConfigs[0].getName());
            assertNull(attributeConfigs[0].getValueFactory());
            final JBossServiceAttributeConfig.Inject inject = attributeConfigs[0].getInject();
            assertNotNull(inject);
            assertEquals("jboss.test.service.second", inject.getBeanName());
            assertEquals("other", inject.getPropertyName());
            assertEquals("somethingElse", attributeConfigs[1].getName());
            assertNull(attributeConfigs[1].getValueFactory());
            assertNull(attributeConfigs[1].getInject());
            assertEquals("Another test value", attributeConfigs[1].getValue());
        }
    }
}
Also used : JBossServiceXmlDescriptor(org.jboss.as.service.descriptor.JBossServiceXmlDescriptor) XMLStreamReader(javax.xml.stream.XMLStreamReader) JBossServiceConstructorConfig(org.jboss.as.service.descriptor.JBossServiceConstructorConfig) ParseResult(org.jboss.as.model.ParseResult) FileInputStream(java.io.FileInputStream) InputStream(java.io.InputStream) JBossServiceAttributeConfig(org.jboss.as.service.descriptor.JBossServiceAttributeConfig) JBossServiceConfig(org.jboss.as.service.descriptor.JBossServiceConfig) FileInputStream(java.io.FileInputStream) File(java.io.File) Test(org.junit.Test)

Aggregations

JBossServiceAttributeConfig (org.jboss.as.service.descriptor.JBossServiceAttributeConfig)4 Inject (org.jboss.as.service.descriptor.JBossServiceAttributeConfig.Inject)2 ValueFactory (org.jboss.as.service.descriptor.JBossServiceAttributeConfig.ValueFactory)2 File (java.io.File)1 FileInputStream (java.io.FileInputStream)1 InputStream (java.io.InputStream)1 Method (java.lang.reflect.Method)1 Supplier (java.util.function.Supplier)1 XMLStreamReader (javax.xml.stream.XMLStreamReader)1 ParseResult (org.jboss.as.model.ParseResult)1 DeploymentUnit (org.jboss.as.server.deployment.DeploymentUnit)1 ClassReflectionIndex (org.jboss.as.server.deployment.reflect.ClassReflectionIndex)1 JBossServiceConfig (org.jboss.as.service.descriptor.JBossServiceConfig)1 JBossServiceConstructorConfig (org.jboss.as.service.descriptor.JBossServiceConstructorConfig)1 JBossServiceDependencyConfig (org.jboss.as.service.descriptor.JBossServiceDependencyConfig)1 JBossServiceDependencyListConfig (org.jboss.as.service.descriptor.JBossServiceDependencyListConfig)1 JBossServiceXmlDescriptor (org.jboss.as.service.descriptor.JBossServiceXmlDescriptor)1 Injector (org.jboss.msc.inject.Injector)1 MethodInjector (org.jboss.msc.inject.MethodInjector)1 ImmediateValue (org.jboss.msc.value.ImmediateValue)1