List of usage examples for org.springframework.beans.factory.config RuntimeBeanReference RuntimeBeanReference
public RuntimeBeanReference(Class<?> beanType, boolean toParent)
From source file:grails.plugin.cache.CacheBeanPostProcessor.java
public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) { log.info("postProcessBeanDefinitionRegistry start"); AbstractBeanDefinition beanDef = findBeanDefinition(registry); if (beanDef == null) { log.error("Unable to find the AnnotationCacheOperationSource bean definition"); return;/*ww w .ja v a 2 s. c om*/ } // change the class to the plugin's subclass beanDef.setBeanClass(GrailsAnnotationCacheOperationSource.class); // wire in the dependency for the grailsApplication MutablePropertyValues props = beanDef.getPropertyValues(); if (props == null) { props = new MutablePropertyValues(); beanDef.setPropertyValues(props); } props.addPropertyValue("grailsApplication", new RuntimeBeanReference("grailsApplication", true)); log.debug("updated {}", beanDef); }
From source file:hudson.util.spring.BeanBuilder.java
public RuntimeBeanReference ref(String refName, boolean parentRef) { return new RuntimeBeanReference(refName, parentRef); }
From source file:grails.spring.BeanBuilder.java
/** * Overrides method invocation to create beans for each method name that takes a class argument. *///w ww. j ava 2 s . com @Override public Object invokeMethod(String name, Object arg) { Object[] args = (Object[]) arg; if (CREATE_APPCTX.equals(name)) { return createApplicationContext(); } if (REGISTER_BEANS.equals(name) && args.length == 1 && args[0] instanceof GenericApplicationContext) { registerBeans((GenericApplicationContext) args[0]); return null; } if (BEANS.equals(name) && args.length == 1 && args[0] instanceof Closure) { return beans((Closure<?>) args[0]); } if (REF.equals(name)) { String refName; Assert.notNull(args[0], "Argument to ref() is not a valid bean or was not found"); if (args[0] instanceof RuntimeBeanReference) { refName = ((RuntimeBeanReference) args[0]).getBeanName(); } else { refName = args[0].toString(); } boolean parentRef = false; if (args.length > 1) { if (args[1] instanceof Boolean) { parentRef = (Boolean) args[1]; } } return new RuntimeBeanReference(refName, parentRef); } if (namespaceHandlers.containsKey(name) && args.length > 0 && (args[0] instanceof Closure)) { createDynamicElementReader(name, true).invokeMethod("doCall", args); return this; } if (args.length > 0 && args[0] instanceof Closure) { // abstract bean definition return invokeBeanDefiningMethod(name, args); } if (args.length > 0 && args[0] instanceof Class || args.length > 0 && args[0] instanceof RuntimeBeanReference || args.length > 0 && args[0] instanceof Map) { return invokeBeanDefiningMethod(name, args); } if (args.length > 1 && args[args.length - 1] instanceof Closure) { return invokeBeanDefiningMethod(name, args); } ApplicationContext ctx = springConfig.getUnrefreshedApplicationContext(); MetaClass mc = DefaultGroovyMethods.getMetaClass(ctx); if (!mc.respondsTo(ctx, name, args).isEmpty()) { return mc.invokeMethod(ctx, name, args); } return this; }
From source file:hudson.util.spring.BeanBuilder.java
/** * This method overrides property retrieval in the scope of the BeanBuilder to either: * * a) Retrieve a variable from the bean builder's binding if it exits * b) Retrieve a RuntimeBeanReference for a specific bean if it exists * c) Otherwise just delegate to super.getProperty which will resolve properties from the BeanBuilder itself *///ww w . ja v a 2s.c o m public Object getProperty(String name) { if (binding.containsKey(name)) { return binding.get(name); } else { if (springConfig.containsBean(name)) { BeanConfiguration beanConfig = springConfig.getBeanConfig(name); if (beanConfig != null) { return new ConfigurableRuntimeBeanReference(name, springConfig.getBeanConfig(name), false); } else return new RuntimeBeanReference(name, false); } // this is to deal with the case where the property setter is the last // statement in a closure (hence the return value) else if (currentBeanConfig != null) { if (currentBeanConfig.hasProperty(name)) return currentBeanConfig.getPropertyValue(name); else { DeferredProperty dp = deferredProperties.get(currentBeanConfig.getName() + name); if (dp != null) { return dp.value; } else { return super.getProperty(name); } } } else { return super.getProperty(name); } } }
From source file:grails.spring.BeanBuilder.java
/** * Overrides property retrieval in the scope of the BeanBuilder to either: * * a) Retrieve a variable from the bean builder's binding if it exists * b) Retrieve a RuntimeBeanReference for a specific bean if it exists * c) Otherwise just delegate to super.getProperty which will resolve properties from the BeanBuilder itself *//*from www . j a v a 2 s .co m*/ @Override public Object getProperty(String name) { if (binding.containsKey(name)) { return binding.get(name); } if (namespaceHandlers.containsKey(name)) { return createDynamicElementReader(name, currentBeanConfig != null); } if (springConfig.containsBean(name)) { BeanConfiguration beanConfig = springConfig.getBeanConfig(name); if (beanConfig != null) { return new ConfigurableRuntimeBeanReference(name, springConfig.getBeanConfig(name), false); } return new RuntimeBeanReference(name, false); } // this is to deal with the case where the property setter is the last // statement in a closure (hence the return value) if (currentBeanConfig != null) { if (currentBeanConfig.hasProperty(name)) { return currentBeanConfig.getPropertyValue(name); } DeferredProperty dp = deferredProperties.get(currentBeanConfig.getName() + name); if (dp != null) { return dp.value; } return super.getProperty(name); } return super.getProperty(name); }
From source file:org.springframework.beans.factory.groovy.GroovyBeanDefinitionReader.java
/** * This method overrides method invocation to create beans for each method name that * takes a class argument.//from w ww . j av a 2 s . com */ public Object invokeMethod(String name, Object arg) { Object[] args = (Object[]) arg; if ("beans".equals(name) && args.length == 1 && args[0] instanceof Closure) { return beans((Closure) args[0]); } else if ("ref".equals(name)) { String refName; if (args[0] == null) throw new IllegalArgumentException("Argument to ref() is not a valid bean or was not found"); if (args[0] instanceof RuntimeBeanReference) { refName = ((RuntimeBeanReference) args[0]).getBeanName(); } else { refName = args[0].toString(); } boolean parentRef = false; if (args.length > 1) { if (args[1] instanceof Boolean) { parentRef = (Boolean) args[1]; } } return new RuntimeBeanReference(refName, parentRef); } else if (this.namespaces.containsKey(name) && args.length > 0 && args[0] instanceof Closure) { GroovyDynamicElementReader reader = createDynamicElementReader(name); reader.invokeMethod("doCall", args); } else if (args.length > 0 && args[0] instanceof Closure) { // abstract bean definition return invokeBeanDefiningMethod(name, args); } else if (args.length > 0 && (args[0] instanceof Class || args[0] instanceof RuntimeBeanReference || args[0] instanceof Map)) { return invokeBeanDefiningMethod(name, args); } else if (args.length > 1 && args[args.length - 1] instanceof Closure) { return invokeBeanDefiningMethod(name, args); } MetaClass mc = DefaultGroovyMethods.getMetaClass(getRegistry()); if (!mc.respondsTo(getRegistry(), name, args).isEmpty()) { return mc.invokeMethod(getRegistry(), name, args); } return this; }
From source file:org.springframework.beans.factory.groovy.GroovyBeanDefinitionReader.java
/** * This method overrides property retrieval in the scope of the * {@code GroovyBeanDefinitionReader} to either: * <ul>//from w w w .java2s . c o m * <li>Retrieve a variable from the bean builder's binding if it exists * <li>Retrieve a RuntimeBeanReference for a specific bean if it exists * <li>Otherwise just delegate to MetaClass.getProperty which will resolve * properties from the {@code GroovyBeanDefinitionReader} itself * </ul> */ public Object getProperty(String name) { Binding binding = getBinding(); if (binding != null && binding.hasVariable(name)) { return binding.getVariable(name); } else { if (this.namespaces.containsKey(name)) { return createDynamicElementReader(name); } if (getRegistry().containsBeanDefinition(name)) { GroovyBeanDefinitionWrapper beanDefinition = (GroovyBeanDefinitionWrapper) getRegistry() .getBeanDefinition(name).getAttribute(GroovyBeanDefinitionWrapper.class.getName()); if (beanDefinition != null) { return new GroovyRuntimeBeanReference(name, beanDefinition, false); } else { return new RuntimeBeanReference(name, false); } } // This is to deal with the case where the property setter is the last // statement in a closure (hence the return value) else if (this.currentBeanDefinition != null) { MutablePropertyValues pvs = this.currentBeanDefinition.getBeanDefinition().getPropertyValues(); if (pvs.contains(name)) { return pvs.get(name); } else { DeferredProperty dp = this.deferredProperties .get(this.currentBeanDefinition.getBeanName() + name); if (dp != null) { return dp.value; } else { return getMetaClass().getProperty(this, name); } } } else { return getMetaClass().getProperty(this, name); } } }
From source file:org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.java
/** * Parse a value, ref or collection sub-element of a property or * constructor-arg element./*from w ww.j ava 2s . com*/ * @param ele subelement of property element; we don't know which yet * @param defaultValueType the default type (class name) for any * {@code <value>} tag that might be created */ @Nullable public Object parsePropertySubElement(Element ele, @Nullable BeanDefinition bd, @Nullable String defaultValueType) { if (!isDefaultNamespace(ele)) { return parseNestedCustomElement(ele, bd); } else if (nodeNameEquals(ele, BEAN_ELEMENT)) { BeanDefinitionHolder nestedBd = parseBeanDefinitionElement(ele, bd); if (nestedBd != null) { nestedBd = decorateBeanDefinitionIfRequired(ele, nestedBd, bd); } return nestedBd; } else if (nodeNameEquals(ele, REF_ELEMENT)) { // A generic reference to any name of any bean. String refName = ele.getAttribute(BEAN_REF_ATTRIBUTE); boolean toParent = false; if (!StringUtils.hasLength(refName)) { // A reference to the id of another bean in a parent context. refName = ele.getAttribute(PARENT_REF_ATTRIBUTE); toParent = true; if (!StringUtils.hasLength(refName)) { error("'bean' or 'parent' is required for <ref> element", ele); return null; } } if (!StringUtils.hasText(refName)) { error("<ref> element contains empty target attribute", ele); return null; } RuntimeBeanReference ref = new RuntimeBeanReference(refName, toParent); ref.setSource(extractSource(ele)); return ref; } else if (nodeNameEquals(ele, IDREF_ELEMENT)) { return parseIdRefElement(ele); } else if (nodeNameEquals(ele, VALUE_ELEMENT)) { return parseValueElement(ele, defaultValueType); } else if (nodeNameEquals(ele, NULL_ELEMENT)) { // It's a distinguished null value. Let's wrap it in a TypedStringValue // object in order to preserve the source location. TypedStringValue nullHolder = new TypedStringValue(null); nullHolder.setSource(extractSource(ele)); return nullHolder; } else if (nodeNameEquals(ele, ARRAY_ELEMENT)) { return parseArrayElement(ele, bd); } else if (nodeNameEquals(ele, LIST_ELEMENT)) { return parseListElement(ele, bd); } else if (nodeNameEquals(ele, SET_ELEMENT)) { return parseSetElement(ele, bd); } else if (nodeNameEquals(ele, MAP_ELEMENT)) { return parseMapElement(ele, bd); } else if (nodeNameEquals(ele, PROPS_ELEMENT)) { return parsePropsElement(ele); } else { error("Unknown property sub-element: [" + ele.getNodeName() + "]", ele); return null; } }
From source file:org.springframework.beans.factory.xml.DefaultXmlBeanDefinitionParser.java
/** * Parse a value, ref or collection sub-element of a property or * constructor-arg element./*from ww w . j a v a 2 s.c om*/ * @param ele subelement of property element; we don't know which yet */ protected Object parsePropertySubElement(Element ele, String beanName) throws BeanDefinitionStoreException { if (ele.getTagName().equals(BEAN_ELEMENT)) { try { return parseBeanDefinitionElement(ele, true); } catch (BeanDefinitionStoreException ex) { throw new BeanDefinitionStoreException(getResource(), beanName, "Could not parse inner bean definition", ex); } } else if (ele.getTagName().equals(REF_ELEMENT)) { // A generic reference to any name of any bean. String refName = ele.getAttribute(BEAN_REF_ATTRIBUTE); boolean toParent = false; if (!StringUtils.hasLength(refName)) { // A reference to the id of another bean in the same XML file. refName = ele.getAttribute(LOCAL_REF_ATTRIBUTE); if (!StringUtils.hasLength(refName)) { // A reference to the id of another bean in a parent context. refName = ele.getAttribute(PARENT_REF_ATTRIBUTE); toParent = true; if (!StringUtils.hasLength(refName)) { throw new BeanDefinitionStoreException(getResource(), beanName, "'bean', 'local' or 'parent' is required for <ref> element"); } } } if (!StringUtils.hasText(refName)) { throw new BeanDefinitionStoreException(getResource(), beanName, "<ref> element contains empty target attribute"); } return new RuntimeBeanReference(refName, toParent); } else if (ele.getTagName().equals(IDREF_ELEMENT)) { // A generic reference to any name of any bean. String beanRef = ele.getAttribute(BEAN_REF_ATTRIBUTE); if (!StringUtils.hasLength(beanRef)) { // A reference to the id of another bean in the same XML file. beanRef = ele.getAttribute(LOCAL_REF_ATTRIBUTE); if (!StringUtils.hasLength(beanRef)) { throw new BeanDefinitionStoreException(getResource(), beanName, "Either 'bean' or 'local' is required for <idref> element"); } } return beanRef; } else if (ele.getTagName().equals(VALUE_ELEMENT)) { // It's a literal value. String value = DomUtils.getTextValue(ele); if (ele.hasAttribute(TYPE_ATTRIBUTE)) { String typeClassName = ele.getAttribute(TYPE_ATTRIBUTE); try { Class typeClass = ClassUtils.forName(typeClassName, this.beanDefinitionReader.getBeanClassLoader()); return new TypedStringValue(value, typeClass); } catch (ClassNotFoundException ex) { throw new BeanDefinitionStoreException(getResource(), beanName, "Type class [" + typeClassName + "] not found for <value> element", ex); } } return value; } else if (ele.getTagName().equals(NULL_ELEMENT)) { // It's a distinguished null value. return null; } else if (ele.getTagName().equals(LIST_ELEMENT)) { return parseListElement(ele, beanName); } else if (ele.getTagName().equals(SET_ELEMENT)) { return parseSetElement(ele, beanName); } else if (ele.getTagName().equals(MAP_ELEMENT)) { return parseMapElement(ele, beanName); } else if (ele.getTagName().equals(PROPS_ELEMENT)) { return parsePropsElement(ele, beanName); } throw new BeanDefinitionStoreException(getResource(), beanName, "Unknown property sub-element: <" + ele.getTagName() + ">"); }
From source file:org.springframework.context.groovy.GroovyBeanDefinitionReader.java
/** * This method overrides method invocation to create beans for each method name that * takes a class argument// w w w . j ava2s . co m */ public Object invokeMethod(String name, Object arg) { Object[] args = (Object[]) arg; if (CREATE_APPCTX.equals(name)) { return createApplicationContext(); } else if (REGISTER_BEANS.equals(name) && args.length == 1 && args[0] instanceof GenericApplicationContext) { registerBeans((GenericApplicationContext) args[0]); return null; } else if (BEANS.equals(name) && args.length == 1 && args[0] instanceof Closure) { return beans((Closure) args[0]); } else if (REF.equals(name)) { String refName; if (args[0] == null) throw new IllegalArgumentException("Argument to ref() is not a valid bean or was not found"); if (args[0] instanceof RuntimeBeanReference) { refName = ((RuntimeBeanReference) args[0]).getBeanName(); } else { refName = args[0].toString(); } boolean parentRef = false; if (args.length > 1) { if (args[1] instanceof Boolean) { parentRef = (Boolean) args[1]; } } return new RuntimeBeanReference(refName, parentRef); } else if (namespaceHandlers.containsKey(name) && args.length > 0 && (args[0] instanceof Closure)) { DynamicElementReader reader = createDynamicElementReader(name, true); reader.invokeMethod("doCall", args); } else if (args.length > 0 && args[0] instanceof Closure) { // abstract bean definition return invokeBeanDefiningMethod(name, args); } else if (args.length > 0 && args[0] instanceof Class || args.length > 0 && args[0] instanceof RuntimeBeanReference || args.length > 0 && args[0] instanceof Map) { return invokeBeanDefiningMethod(name, args); } else if (args.length > 1 && args[args.length - 1] instanceof Closure) { return invokeBeanDefiningMethod(name, args); } ApplicationContext ctx = springConfig.getUnrefreshedApplicationContext(); MetaClass mc = DefaultGroovyMethods.getMetaClass(ctx); if (!mc.respondsTo(ctx, name, args).isEmpty()) { return mc.invokeMethod(ctx, name, args); } return this; }