Example usage for org.springframework.beans.factory.support DefaultListableBeanFactory getBeanDefinition

List of usage examples for org.springframework.beans.factory.support DefaultListableBeanFactory getBeanDefinition

Introduction

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

Prototype

@Override
    public BeanDefinition getBeanDefinition(String beanName) throws NoSuchBeanDefinitionException 

Source Link

Usage

From source file:com.mtgi.analytics.aop.config.v11.BtManagerBeanDefinitionParser.java

/** 
 * called by nested tags to push inner beans into the enclosing {@link BehaviorTrackingManagerImpl}.
 * @return <span>true if the inner bean was added to an enclosing {@link BehaviorTrackingManagerImpl}.  Otherwise, the bean definition
 * is not nested inside a &lt;bt:manager&gt; tag and therefore will have to be registered as a global bean in the application
 * context.</span>//from  w ww .ja v  a  2s .c  o m
 */
protected static boolean registerNestedBean(BeanDefinitionHolder nested, String parentProperty,
        ParserContext parserContext) {
    //add parsed inner bean element to containing manager definition; e.g. persister or SessionContext impls.
    CompositeComponentDefinition parent = parserContext.getContainingComponent();
    if (parent instanceof ManagerComponentDefinition) {
        //we are nested; add to enclosing bean def.
        ManagerComponentDefinition mcd = (ManagerComponentDefinition) parent;
        BeanDefinition managerDef = parserContext.getContainingBeanDefinition();

        MutablePropertyValues props = managerDef.getPropertyValues();
        PropertyValue current = props.getPropertyValue(parentProperty);
        boolean innerBean = true;

        if (current != null) {
            //if the original value is a reference, replace it with an alias to the nested bean definition.
            //this means the nested bean takes the place of the default definition
            //in other places where it might be referenced, as well as during mbean export
            Object value = current.getValue();
            DefaultListableBeanFactory factory = mcd.getTemplateFactory();
            if (value instanceof RuntimeBeanReference) {
                String ref = ((RuntimeBeanReference) value).getBeanName();

                if (factory.getBeanDefinition(ref) == nested.getBeanDefinition()) {
                    //the nested definition is the same as the default definition
                    //by reference, so we don't need to make it an inner bean definition.
                    innerBean = false;
                }
            }
        }
        if (innerBean)
            props.addPropertyValue(parentProperty, nested);
        mcd.addNestedProperty(parentProperty);
        return true;
    }
    //bean is not nested inside bt:manager
    return false;
}

From source file:com.helpinput.spring.BeanRegister.java

public static boolean removeBean(DefaultListableBeanFactory dlbf, BeanInfo beanInfo, String beanName) {
    BeanDefinition bd = null;//from w w w .j a v  a 2  s .c  o m
    if (!Utils.hasLength(beanName))
        if (beanInfo != null)
            beanName = beanInfo.beanName;
    if (!Utils.hasLength(beanName))
        return false;

    try {
        bd = dlbf.getBeanDefinition(beanName);
        if (bd != null) {
            //?bean? relativePath?, ??
            //               BeanRegister.runOnUnregisger(beanName, dlbf);
            String scope = bd.getScope();
            /**
             * bean?application,singletonbeansession?view? flash?
             * requestbean,
             * session,view,flash,requestbeanapplicationbean
             * application,singletonbean
             * scopebeanbeanbean
             */
            if (application_scope.equals(scope))
                dlbf.destroyScopedBean(beanName);
            else if (singleton_scope.equals(scope))
                dlbf.destroySingleton(beanName);

            dlbf.removeBeanDefinition(beanName);
            if (beanInfo != null && beanInfo.beanClass != null
                    && PropertyEditor.class.isAssignableFrom(beanInfo.beanClass)) {
                ContextHolder.refreshers.remover(beanName);
            }

            List<BeanRegistInterceptor> interceptors = ContextHolder.beanRegistIntercpterHolder.getList();
            if (Utils.hasLength(interceptors)) {
                for (BeanRegistInterceptor beanRegistInterceptor : interceptors) {
                    if (beanRegistInterceptor.afterRemove(beanInfo.beanClass, beanName, scope, dlbf))
                        break;
                }
            }

            logRegist(Info.Removed, (String) bd.getAttribute(relativePath), beanInfo.beanName, scope);
            return true;
        }
    } catch (NoSuchBeanDefinitionException e) {
        //? BeanDefinition,????beanInfo,
        return true;
    }
    return false;
}

From source file:de.contentreich.instrumentation.SpringBeansHelper.java

private Class getBeanClass(String beanName, DefaultListableBeanFactory beanFactory) {
    Class clazz = null;//from ww  w.  j a va 2s.  c om
    if (beanFactory != null) {
        BeanDefinition definition = beanFactory.getBeanDefinition(beanName);
        if (!definition.isAbstract()) {
            clazz = beanFactory.getType(beanName);
        }
    }
    return clazz;
}

From source file:com.longio.spring.LioBootstrap.java

private void bootEndpoints(DefaultListableBeanFactory bf, String name) {
    RootBeanDefinition bd = (RootBeanDefinition) bf.getBeanDefinition(name);
    String fbMethod = bd.getFactoryMethodName();
    String fbName = bd.getFactoryBeanName();
    Object fb = bf.getBean(fbName);

    if (!bf.containsBeanDefinition("longio.connector")) {
        GenericBeanDefinition bdd = new GenericBeanDefinition();
        bdd.setBeanClass(NettyConnector.class);
        bf.registerBeanDefinition("longio.connector", bdd);
    }//from  w w  w.j  a  v  a 2s . c o m

    Connector connector = bf.getBean("longio.connector", Connector.class);

    Class<?> fbCls = fb.getClass().getSuperclass();
    Method m;
    try {
        m = fbCls.getDeclaredMethod(fbMethod);
        Boots boots = m.getAnnotation(Boots.class);
        if (boots == null) {
            MethodDispatcher dispatcher = new MethodDispatcher();
            Boot b = m.getAnnotation(Boot.class);
            connector.start(b.port(), dispatcher, b.tt(), b.pt(), b.pkg());
            logger.info("connector start at port [" + b.port() + "] with tt = " + b.tt() + " and pt = " + b.pt()
                    + " for pkg = " + b.pkg());
        } else {
            for (Boot b : boots.value()) {
                MethodDispatcher dispatcher = new MethodDispatcher();
                connector.start(b.port(), dispatcher, b.tt(), b.pt(), b.pkg());
                logger.info("connector start at port [" + b.port() + "] with tt = " + b.tt() + " and pt = "
                        + b.pt() + " for pkg = " + b.pkg());
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

From source file:com.wavemaker.runtime.data.cloudfoundry.CloudFoundryDataServiceBeanFactoryPostProcessor.java

private BeanDefinition getBeanDefinition(DefaultListableBeanFactory beanFactory, String beanName) {
    if (beanName.startsWith(BeanFactory.FACTORY_BEAN_PREFIX)) {
        beanName = beanName.substring(BeanFactory.FACTORY_BEAN_PREFIX.length());
    }/* w  w w  .j a  va 2  s.  c  om*/
    return beanFactory.getBeanDefinition(beanName);
}

From source file:com.longio.spring.LioBootstrap.java

private void resolveLservice(ApplicationContext app, DefaultListableBeanFactory bf) {
    for (String name : bf.getBeanDefinitionNames()) {
        AbstractBeanDefinition bd = (AbstractBeanDefinition) bf.getBeanDefinition(name);

        if (!bd.hasBeanClass()) {
            continue;
        }// ww w.  j a  v  a 2 s.  c o m

        if (!name.endsWith("Service")) {
            continue;
        }

        Class<?> cls = bd.getBeanClass();
        if (cls != LioFactoryBean.class) {
            continue;
        }

        Object obj = app.getBean(name);
        app.getAutowireCapableBeanFactory().autowireBean(obj);
        Lservice ls = obj.getClass().getAnnotation(Lservice.class);
        if (ls != null) {
            String pkg = ls.path();
            Connector connector = getConnector(bf);
            for (Dispatcher d : connector.getDispatcheres(pkg)) {
                MethodRefFactory mrf = new DefaultMethodRefFactory(cmdLookup);
                d.registerMethodRefs(mrf.createMethodRefs(obj));
            }
            logger.info("load longio [" + pkg + "] service");
        }
        LsAutowired lsa = obj.getClass().getAnnotation(LsAutowired.class);
        if (lsa != null) {
            String pkg = lsa.path();
            logger.info("load longio  client [" + pkg + "] service");
        }

    }

}

From source file:org.jnap.core.persistence.factory.DaoFactoryBkp.java

private boolean isDaoDefinedForEntity(DefaultListableBeanFactory beanFactory,
        Class<? extends PersistentModel> entityClass) {
    if (alreadyDefinedDaos == null) {
        alreadyDefinedDaos = new HashSet<Class<? extends PersistentModel>>();
        for (String beanName : beanFactory.getBeanNamesForType(Dao.class, true, false)) {
            BeanDefinition beanDefinition = beanFactory.getBeanDefinition(beanName);
            final Class<?> daoType = ClassUtils.resolveClassName(beanDefinition.getBeanClassName(),
                    DaoFactory.class.getClassLoader());
            Class daoEntityClass = GenericTypeResolver.resolveTypeArgument(daoType, Dao.class);
            alreadyDefinedDaos.add(daoEntityClass);
            daoNameCache.put(daoEntityClass, beanName);
        }/*w  ww.ja va2  s.c  om*/
    }
    return alreadyDefinedDaos.contains(entityClass);
}

From source file:com.longio.spring.LioBootstrap.java

private void resolveLfilters(ApplicationContext app, DefaultListableBeanFactory bf) {

    List<MessageFilter> filters = new ArrayList<MessageFilter>();
    for (String name : bf.getBeanDefinitionNames()) {
        AbstractBeanDefinition bd = (AbstractBeanDefinition) bf.getBeanDefinition(name);
        //System.out.println("+++++++++++++++" + name);
        if (!bd.hasBeanClass()) {
            continue;
        }/*from w w w . j  a v  a  2s.co  m*/

        if (!name.endsWith("Filter")) {
            continue;
        }

        Class<?> cls = bd.getBeanClass();
        if (cls != LioFactoryBean.class) {
            continue;
        }

        Object obj = app.getBean(name);
        app.getAutowireCapableBeanFactory().autowireBean(obj);
        LsFilter lf = obj.getClass().getAnnotation(LsFilter.class);
        if (lf != null) {
            filters.add((MessageFilter) obj);
        }
    }

    Connector connector = getConnector(bf);
    for (Dispatcher d : connector.getDispatcheres("*")) {
        d.registerMessageFilters(filters);
        for (MessageFilter filter : filters) {
            logger.info("load longio [" + filter.getClass().getCanonicalName() + "] message filter");
        }

    }

}

From source file:com.helpinput.spring.registinerceptor.ProxybeanRegistInterceptor.java

@Override
public BeanDefinition beforeRegist(Class<?> clz, String beanName, String scope, DefaultListableBeanFactory dlbf,
        BeanDefinitionBuilder builder) {
    BeanDefinition bd = null;/*www . j a  v a  2s  .  c  om*/

    if (getCondition(clz)) {
        Parent ann = clz.getAnnotation(Parent.class);
        String parentName = ann.value();
        String property = ann.property();
        if (Utils.hasLength(parentName) && Utils.hasLength(property)) {

            BeanDefinition parent = (GenericBeanDefinition) dlbf.getBeanDefinition(parentName);
            if (parent != null) {
                String baseBeanName = beanName + "$$$$";
                BeanRegister.removeBean(dlbf, null, baseBeanName);
                BeanDefinition basebd = builder.getBeanDefinition();
                basebd.setScope(scope);
                dlbf.registerBeanDefinition(baseBeanName, basebd);

                bd = new GenericBeanDefinition();

                bd.setParentName(parentName);
                List<PropertyValue> propertyValueList = bd.getPropertyValues().getPropertyValueList();
                RuntimeBeanReference reference = new RuntimeBeanReference(baseBeanName);
                PropertyValue pValue = new PropertyValue(property, reference);
                propertyValueList.add(pValue);

                //dlbf.getBean(baseBeanName);
                return bd;
            }
        }
    }
    return null;
}

From source file:de.contentreich.instrumentation.SpringBeansHelper.java

public List<String[]> getSpringBeans(ApplicationContext appContext, String parentId) {
    logger.debug("Get spring beans for context " + parentId);
    ArrayList<String[]> beans = new ArrayList<String[]>();
    String[] names = appContext.getBeanDefinitionNames();
    for (int i = 0; i < names.length; i++) {
        String beanName = names[i];
        DefaultListableBeanFactory beanFactory = getBeanFactory(appContext);
        Class clazz = getBeanClass(beanName, beanFactory);
        // DefaultListableBeanFactory beanFactory = (appContext instanceof DefaultListableBeanFactory) ? (DefaultListableBeanFactory) appContext : null;
        if (clazz != null && beanFactory != null) { // Not abstract
            BeanDefinition def = beanFactory.getBeanDefinition(beanName);
            if (!(def.isPrototype() || def.isLazyInit())) {
                Object bean = appContext.getBean(beanName);
                if (holdsChildApplicationContext(bean)) {
                    // Semantically not perfect but ok ;)
                    clazz = getApplicationContext(bean).getClass();
                }/*from w ww .  j a va  2s. c o m*/
            }
            String[] beanEntry = new String[] { beanName, clazz.getName(), parentId };
            beans.add(beanEntry);
        }
    }
    Collections.sort(beans, new Comparator() {
        @Override
        public int compare(Object o1, Object o2) {
            String s1 = ((String[]) o1)[0];
            String s2 = ((String[]) o2)[0];
            return s1.compareTo(s2);
        }

    });
    logger.debug("Got " + beans.size() + " spring beans");
    return beans;
}