Example usage for org.springframework.beans.factory.support RootBeanDefinition setFactoryMethodName

List of usage examples for org.springframework.beans.factory.support RootBeanDefinition setFactoryMethodName

Introduction

In this page you can find the example usage for org.springframework.beans.factory.support RootBeanDefinition setFactoryMethodName.

Prototype

@Override
public void setFactoryMethodName(@Nullable String factoryMethodName) 

Source Link

Document

Specify a factory method, if any.

Usage

From source file:marshalsec.gadgets.SpringUtil.java

public static BeanFactory makeMethodTrigger(Object o, String method) throws Exception {
    DefaultListableBeanFactory bf = new DefaultListableBeanFactory();
    RootBeanDefinition caller = new RootBeanDefinition();

    caller.setFactoryBeanName("obj");
    caller.setFactoryMethodName(method);
    Reflections.setFieldValue(caller.getMethodOverrides(), "overrides", new HashSet<>());
    bf.registerBeanDefinition("caller", caller);

    Reflections.getField(DefaultListableBeanFactory.class, "beanClassLoader").set(bf, null);
    Reflections.getField(DefaultListableBeanFactory.class, "alreadyCreated").set(bf, new HashSet<>());
    Reflections.getField(DefaultListableBeanFactory.class, "singletonsCurrentlyInCreation").set(bf,
            new HashSet<>());
    Reflections.getField(DefaultListableBeanFactory.class, "inCreationCheckExclusions").set(bf,
            new HashSet<>());
    Reflections.getField(DefaultListableBeanFactory.class, "logger").set(bf, new NoOpLog());
    Reflections.getField(DefaultListableBeanFactory.class, "prototypesCurrentlyInCreation").set(bf,
            new ThreadLocal<>());

    @SuppressWarnings("unchecked")
    Map<String, Object> objs = (Map<String, Object>) Reflections.getFieldValue(bf, "singletonObjects");
    objs.put("obj", o);
    return bf;/*from  w  ww  .java 2s . co m*/
}

From source file:eap.config.AnnotationDrivenCacheBeanDefinitionParser.java

/**
 * Registers a/*  w  w w .j av  a2 s  .  c  om*/
 * <pre>
 * <bean id="cacheAspect" class="org.springframework.cache.aspectj.AnnotationCacheAspect" factory-method="aspectOf">
 *   <property name="cacheManager" ref="cacheManager"/>
 *   <property name="keyGenerator" ref="keyGenerator"/>
 * </bean>
 *
 * </pre>
 * @param element
 * @param parserContext
 */
private void registerCacheAspect(Element element, ParserContext parserContext) {
    if (!parserContext.getRegistry().containsBeanDefinition(CACHE_ASPECT_BEAN_NAME)) {
        RootBeanDefinition def = new RootBeanDefinition();
        def.setBeanClassName(CACHE_ASPECT_CLASS_NAME);
        def.setFactoryMethodName("aspectOf");
        parseCacheManagerProperty(element, def);
        //         CacheNamespaceHandler.parseKeyGenerator(element, def);
        ReflectUtil.invokeMethod(CacheNamespaceHandler.class, "parseKeyGenerator",
                new Class<?>[] { Element.class, BeanDefinition.class }, new Object[] { element, def });
        parserContext.registerBeanComponent(new BeanComponentDefinition(def, CACHE_ASPECT_BEAN_NAME));
    }
}

From source file:org.zalando.spring.data.businesskey.jpa.config.JpaBusinessKeyRegistrar.java

/**
 * @param  registry,  the {@link BeanDefinitionRegistry} to be used to register the
 *                    {@link AnnotationBeanConfigurerAspect}.
 *///from  w  w  w .  java  2 s .  c  o m
private void registerBeanConfigurerAspectIfNecessary(final BeanDefinitionRegistry registry) {

    if (registry.containsBeanDefinition(BEAN_CONFIGURER_ASPECT_CLASS_NAME)) {
        return;
    }

    if (!ClassUtils.isPresent(BEAN_CONFIGURER_ASPECT_CLASS_NAME, getClass().getClassLoader())) {
        throw new BeanDefinitionStoreException(BEAN_CONFIGURER_ASPECT_CLASS_NAME + " not found. \n"
                + "Could not configure Spring Data JPA auditing-feature because"
                + " spring-aspects.jar is not on the classpath!\n"
                + "If you want to use auditing please add spring-aspects.jar to the classpath.");
    }

    RootBeanDefinition def = new RootBeanDefinition();
    def.setBeanClassName(BEAN_CONFIGURER_ASPECT_CLASS_NAME);
    def.setFactoryMethodName("aspectOf");
    def.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);

    registry.registerBeanDefinition(BEAN_CONFIGURER_ASPECT_BEAN_NAME,
            new BeanComponentDefinition(def, BEAN_CONFIGURER_ASPECT_BEAN_NAME).getBeanDefinition());
}

From source file:net.sourceforge.safr.core.spring.config.SecurityAnnotationDrivenBeanDefinitionParser.java

@Override
protected AbstractBeanDefinition parseInternal(Element element, ParserContext parserContext) {
    AopNamespaceUtils.registerAutoProxyCreatorIfNecessary(parserContext, element);

    String accessManagerName = element.getAttribute(ACCESS_MANAGER_ATTRIBUTE);
    String cryptoProviderName = element.getAttribute(CRYPTO_PROVIDER_ATTRIBUTE);
    String interceptorOrder = element.getAttribute(INTERCEPTOR_ORDER_ATTRIBUTE);
    String useAspectJ = element.getAttribute(SUPPORT_ASPECTJ_ATTRIBUTE);

    RootBeanDefinition removeFilterFactoryDefinition = new RootBeanDefinition(RemoveFilterFactory.class);
    removeFilterFactoryDefinition.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
    removeFilterFactoryDefinition.setSource(parserContext.extractSource(element));
    setConstructorArgument(removeFilterFactoryDefinition, createAccessManagerValue(accessManagerName));

    RootBeanDefinition copyFilterFactoryDefinition = new RootBeanDefinition(CopyFilterFactory.class);
    copyFilterFactoryDefinition.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
    copyFilterFactoryDefinition.setSource(parserContext.extractSource(element));
    setConstructorArgument(copyFilterFactoryDefinition, createAccessManagerValue(accessManagerName));

    RootBeanDefinition interceptorDefinition = new RootBeanDefinition(SecurityInterceptor.class);
    interceptorDefinition.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
    interceptorDefinition.setSource(parserContext.extractSource(element));
    interceptorDefinition.getPropertyValues().addPropertyValue(REMOVE_FILTER_FACTORY_PROPERTY,
            removeFilterFactoryDefinition);
    interceptorDefinition.getPropertyValues().addPropertyValue(COPY_FILTER_FACTORY_PROPERTY,
            copyFilterFactoryDefinition);
    setPropertyValue(interceptorDefinition, SECURITY_ATTRIBUTE_SOURCE_PROPERTY,
            createSecurityAttributeSourceValue());
    setPropertyValue(interceptorDefinition, ACCESS_MANAGER_PROPERTY,
            createAccessManagerValue(accessManagerName));
    setPropertyValue(interceptorDefinition, CRYPTO_PROVIDER_PROPERTY,
            createCryptoProviderValue(cryptoProviderName));

    RootBeanDefinition advisorDefinition = new RootBeanDefinition(SecurityAttributeSourceAdvisor.class);
    advisorDefinition.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
    advisorDefinition.setSource(parserContext.extractSource(element));
    advisorDefinition.getPropertyValues().addPropertyValue(SECURITY_INTERCEPTOR_PROPERTY,
            interceptorDefinition);/*from  w  ww.  ja v  a 2 s  . c  o m*/
    advisorDefinition.getPropertyValues().addPropertyValue(ORDER_PROPERTY, interceptorOrder);

    if (Boolean.parseBoolean(useAspectJ)) {
        RootBeanDefinition aspectDefinition = new RootBeanDefinition(SecurityAspect.class);
        aspectDefinition.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
        aspectDefinition.setSource(parserContext.extractSource(element));
        aspectDefinition.setFactoryMethodName("aspectOf");
        aspectDefinition.getPropertyValues().addPropertyValue(REMOVE_FILTER_FACTORY_PROPERTY,
                removeFilterFactoryDefinition);
        aspectDefinition.getPropertyValues().addPropertyValue(COPY_FILTER_FACTORY_PROPERTY,
                copyFilterFactoryDefinition);
        setPropertyValue(aspectDefinition, SECURITY_ATTRIBUTE_SOURCE_PROPERTY,
                createSecurityAttributeSourceValue());
        setPropertyValue(aspectDefinition, ACCESS_MANAGER_PROPERTY,
                createAccessManagerValue(accessManagerName));
        setPropertyValue(aspectDefinition, CRYPTO_PROVIDER_PROPERTY,
                createCryptoProviderValue(cryptoProviderName));
        parserContext.getRegistry().registerBeanDefinition(SecurityAspect.class.getName(), aspectDefinition);
    }

    return advisorDefinition;
}

From source file:com.googlecode.ehcache.annotations.config.AnnotationDrivenEhCacheBeanDefinitionParser.java

private void registerAspect(Element element, ParserContext parserContext) {
    if (!parserContext.getRegistry().containsBeanDefinition(EHCACHE_CACHING_ASPECT_BEAN_NAME)) {
        final Object elementSource = parserContext.extractSource(element);

        final RuntimeBeanReference cacheAttributeSourceReference = this.setupCacheAttributeSource(element,
                parserContext, elementSource);

        RootBeanDefinition def = new RootBeanDefinition();
        def.setBeanClassName(EHCACHE_CACHING_ASPECT_CLASS_NAME);
        def.setFactoryMethodName("aspectOf");
        def.getPropertyValues().add("cacheAttributeSource", cacheAttributeSourceReference);
        //registerTransactionManager(element, def);
        parserContext.registerBeanComponent(new BeanComponentDefinition(def, EHCACHE_CACHING_ASPECT_BEAN_NAME));
    }//from  w  ww  .ja v a  2 s .  co m
}

From source file:org.exoplatform.container.spring.SpringContainer.java

/**
 * {@inheritDoc}//from w w w  .  j av  a2 s  .  c o m
 */
@Override
@SuppressWarnings({ "rawtypes", "unchecked" })
public void start() {
    ConfigurationManager cm = super.getComponentInstanceOfType(ConfigurationManager.class, false);
    // We check if the component has been defined in the configuration of the current container
    // The goal is to enable the SpringContainer only if it is needed
    Component component = cm.getComponent(ApplicationContextProvider.class);
    if (component == null) {
        if (LOG.isDebugEnabled()) {
            LOG.debug(
                    "No ApplicationContextProvider has been defined, thus the SpringContainer will be disabled."
                            + " To enable the Spring Integration please define an ApplicationContextProvider");
        }
    } else {
        DefaultListableBeanFactory bf = new DefaultListableBeanFactory();
        bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver());
        Collection<ComponentAdapter<?>> adapters = delegate.getComponentAdapters();
        for (ComponentAdapter<?> adapter : adapters) {
            Object key = adapter.getComponentKey();
            String name = keyToBeanName(key);
            String factoryName = name + "#factory";
            RootBeanDefinition def = new RootBeanDefinition(adapter.getComponentImplementation(),
                    AbstractBeanDefinition.AUTOWIRE_NO, false);
            def.setScope(BeanDefinition.SCOPE_PROTOTYPE);
            def.setFactoryBeanName(factoryName);
            def.setFactoryMethodName("getInstance");
            def.setLazyInit(true);
            def.setTargetType(adapter.getComponentImplementation());
            if (key instanceof String) {
                def.addQualifier(new AutowireCandidateQualifier(Named.class, key));
            } else if (key instanceof Class<?> && ((Class<?>) key).isAnnotation()) {
                def.addQualifier(new AutowireCandidateQualifier((Class<?>) key));
            } else {
                def.setPrimary(true);
            }
            bf.registerBeanDefinition(name, def);
            bf.registerSingleton(factoryName, new ComponentAdapterFactoryBean(adapter));
        }
        GenericApplicationContext parentContext = new GenericApplicationContext(bf);
        parentContext.refresh();
        ApplicationContextProvider provider = super.getComponentInstanceOfType(ApplicationContextProvider.class,
                false);
        ctx = provider.getApplicationContext(parentContext);
        LOG.info("A SpringContainer has been enabled using the ApplicationContextProvider "
                + provider.getClass());
    }
    super.start();
}

From source file:de.itsvs.cwtrpc.controller.config.CacheControlConfigBeanDefinitionParser.java

protected AbstractBeanDefinition createUriPattern(Element element, ParserContext parserContext) {
    final String value;
    final Object type;
    final RootBeanDefinition beanDefinition;

    value = element.getAttribute(XmlNames.VALUE_ATTR);
    if (!StringUtils.hasText(value)) {
        parserContext.getReaderContext().error("URI value must not be empty",
                parserContext.extractSource(element));
    }//  w  ww . j ava 2  s.c  o m
    if (element.hasAttribute(XmlNames.TYPE_ATTR)) {
        type = element.getAttribute(XmlNames.TYPE_ATTR);
    } else {
        type = CacheControlUriConfig.DEFAULT_PATTERN_TYPE;
    }

    beanDefinition = new RootBeanDefinition(PatternFactory.class);
    beanDefinition.setSource(parserContext.extractSource(element));
    if (parserContext.isDefaultLazyInit()) {
        beanDefinition.setLazyInit(true);
    }
    beanDefinition.setFactoryMethodName("compile");

    beanDefinition.getConstructorArgumentValues().addIndexedArgumentValue(0, type);
    beanDefinition.getConstructorArgumentValues().addIndexedArgumentValue(1, MatcherType.URI);
    beanDefinition.getConstructorArgumentValues().addIndexedArgumentValue(2, value);

    return beanDefinition;
}

From source file:org.springframework.beans.factory.DefaultListableBeanFactoryTests.java

@Test
public void testStaticFactoryMethodFoundByNonEagerTypeMatching() {
    DefaultListableBeanFactory lbf = new DefaultListableBeanFactory();
    RootBeanDefinition rbd = new RootBeanDefinition(TestBeanFactory.class);
    rbd.setFactoryMethodName("createTestBean");
    lbf.registerBeanDefinition("x1", rbd);

    TestBeanFactory.initialized = false;
    String[] beanNames = lbf.getBeanNamesForType(TestBean.class, true, false);
    assertEquals(1, beanNames.length);//www  . ja v a2  s .c  o  m
    assertEquals("x1", beanNames[0]);
    assertFalse(lbf.containsSingleton("x1"));
    assertTrue(lbf.containsBean("x1"));
    assertFalse(lbf.containsBean("&x1"));
    assertTrue(lbf.isSingleton("x1"));
    assertFalse(lbf.isSingleton("&x1"));
    assertFalse(lbf.isPrototype("x1"));
    assertFalse(lbf.isPrototype("&x1"));
    assertTrue(lbf.isTypeMatch("x1", TestBean.class));
    assertFalse(lbf.isTypeMatch("&x1", TestBean.class));
    assertEquals(TestBean.class, lbf.getType("x1"));
    assertEquals(null, lbf.getType("&x1"));
    assertFalse(TestBeanFactory.initialized);
}

From source file:org.springframework.beans.factory.DefaultListableBeanFactoryTests.java

@Test
public void testStaticPrototypeFactoryMethodFoundByNonEagerTypeMatching() {
    DefaultListableBeanFactory lbf = new DefaultListableBeanFactory();
    RootBeanDefinition rbd = new RootBeanDefinition(TestBeanFactory.class);
    rbd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE);
    rbd.setFactoryMethodName("createTestBean");
    lbf.registerBeanDefinition("x1", rbd);

    TestBeanFactory.initialized = false;
    String[] beanNames = lbf.getBeanNamesForType(TestBean.class, true, false);
    assertEquals(1, beanNames.length);//w  ww .j a v  a 2  s .  c  o m
    assertEquals("x1", beanNames[0]);
    assertFalse(lbf.containsSingleton("x1"));
    assertTrue(lbf.containsBean("x1"));
    assertFalse(lbf.containsBean("&x1"));
    assertFalse(lbf.isSingleton("x1"));
    assertFalse(lbf.isSingleton("&x1"));
    assertTrue(lbf.isPrototype("x1"));
    assertFalse(lbf.isPrototype("&x1"));
    assertTrue(lbf.isTypeMatch("x1", TestBean.class));
    assertFalse(lbf.isTypeMatch("&x1", TestBean.class));
    assertEquals(TestBean.class, lbf.getType("x1"));
    assertEquals(null, lbf.getType("&x1"));
    assertFalse(TestBeanFactory.initialized);
}

From source file:org.springframework.beans.factory.DefaultListableBeanFactoryTests.java

@Test
public void testNonStaticFactoryMethodFoundByNonEagerTypeMatching() {
    DefaultListableBeanFactory lbf = new DefaultListableBeanFactory();
    RootBeanDefinition factoryBd = new RootBeanDefinition(TestBeanFactory.class);
    lbf.registerBeanDefinition("factory", factoryBd);
    RootBeanDefinition rbd = new RootBeanDefinition(TestBeanFactory.class);
    rbd.setFactoryBeanName("factory");
    rbd.setFactoryMethodName("createTestBeanNonStatic");
    lbf.registerBeanDefinition("x1", rbd);

    TestBeanFactory.initialized = false;
    String[] beanNames = lbf.getBeanNamesForType(TestBean.class, true, false);
    assertEquals(1, beanNames.length);/*  w  w w.  j  a v  a 2  s .  co  m*/
    assertEquals("x1", beanNames[0]);
    assertFalse(lbf.containsSingleton("x1"));
    assertTrue(lbf.containsBean("x1"));
    assertFalse(lbf.containsBean("&x1"));
    assertTrue(lbf.isSingleton("x1"));
    assertFalse(lbf.isSingleton("&x1"));
    assertFalse(lbf.isPrototype("x1"));
    assertFalse(lbf.isPrototype("&x1"));
    assertTrue(lbf.isTypeMatch("x1", TestBean.class));
    assertFalse(lbf.isTypeMatch("&x1", TestBean.class));
    assertEquals(TestBean.class, lbf.getType("x1"));
    assertEquals(null, lbf.getType("&x1"));
    assertFalse(TestBeanFactory.initialized);
}