Refine search
new BeanDefinitionValueResolver(this.beanFactory, beanName, mbd, converter); int minNrOfArgs = cargs.getArgumentCount(); for (Map.Entry<Integer, ConstructorArgumentValues.ValueHolder> entry : cargs.getIndexedArgumentValues().entrySet()) { int index = entry.getKey(); if (index < 0) { if (valueHolder.isConverted()) { resolvedValues.addIndexedArgumentValue(index, valueHolder); valueResolver.resolveValueIfNecessary("constructor argument", valueHolder.getValue()); ConstructorArgumentValues.ValueHolder resolvedValueHolder = new ConstructorArgumentValues.ValueHolder(resolvedValue, valueHolder.getType(), valueHolder.getName()); resolvedValueHolder.setSource(valueHolder); resolvedValues.addIndexedArgumentValue(index, resolvedValueHolder); for (ConstructorArgumentValues.ValueHolder valueHolder : cargs.getGenericArgumentValues()) { if (valueHolder.isConverted()) { resolvedValues.addGenericArgumentValue(valueHolder); valueResolver.resolveValueIfNecessary("constructor argument", valueHolder.getValue()); ConstructorArgumentValues.ValueHolder resolvedValueHolder = new ConstructorArgumentValues.ValueHolder( resolvedValue, valueHolder.getType(), valueHolder.getName()); resolvedValueHolder.setSource(valueHolder); resolvedValues.addGenericArgumentValue(resolvedValueHolder);
private void updatePostProcessor(BeanDefinitionRegistry registry, Set<String> packagesToScan) { BeanDefinition definition = registry.getBeanDefinition(BEAN_NAME); ValueHolder constructorArguments = definition.getConstructorArgumentValues() .getGenericArgumentValue(Set.class); @SuppressWarnings("unchecked") Set<String> mergedPackages = (Set<String>) constructorArguments.getValue(); mergedPackages.addAll(packagesToScan); constructorArguments.setValue(mergedPackages); }
this.parseState.push(new ConstructorArgumentEntry(index)); Object value = parsePropertyValue(ele, bd, null); ConstructorArgumentValues.ValueHolder valueHolder = new ConstructorArgumentValues.ValueHolder(value); if (StringUtils.hasLength(typeAttr)) { valueHolder.setType(typeAttr); valueHolder.setName(nameAttr); valueHolder.setSource(extractSource(ele)); if (bd.getConstructorArgumentValues().hasIndexedArgumentValue(index)) { error("Ambiguous constructor-arg entries for index " + index, ele); bd.getConstructorArgumentValues().addIndexedArgumentValue(index, valueHolder); this.parseState.push(new ConstructorArgumentEntry()); Object value = parsePropertyValue(ele, bd, null); ConstructorArgumentValues.ValueHolder valueHolder = new ConstructorArgumentValues.ValueHolder(value); if (StringUtils.hasLength(typeAttr)) { valueHolder.setType(typeAttr); valueHolder.setName(nameAttr); valueHolder.setSource(extractSource(ele)); bd.getConstructorArgumentValues().addGenericArgumentValue(valueHolder);
public synchronized List<SpringBeanElement> getBeanElements() { if (beanElements == null) { beanElements = new ArrayList<SpringBeanElement>(); for (String name : getBeanDefinitionNames()) { BeanDefinition def = getBeanDefinition(name); SpringBeanElement beanElement = new SpringBeanElement(name, def.getBeanClassName()); beanElements.add(beanElement); beanElement.setAbstractBean(def.isAbstract()); beanElement.setFactoryBeanAttribute(def.getFactoryBeanName() != null); beanElement.setFactoryMethodAttribute(def.getFactoryMethodName() != null); beanElement.setParentAttribute(def.getParentName() != null); beanElement.setInnerBean(beanElement.getId() == null); ConstructorArgumentValues args = def.getConstructorArgumentValues(); for (Map.Entry<Integer, ValueHolder> e: args.getIndexedArgumentValues().entrySet()) { ValueHolder holder = e.getValue(); SpringConstructorArgElement arg = new SpringConstructorArgElement(holder.getType()); arg.setIndex(e.getKey()); beanElement.addCustructorArgs(arg); } MutablePropertyValues values = def.getPropertyValues(); for (PropertyValue p : values.getPropertyValueList()) { SpringPropertyElement propertyElement = new SpringPropertyElement(p.getName()); Object value = p.getValue(); configurePropertyElement(propertyElement, value); beanElement.getProperties().add(propertyElement); } } } return beanElements; }
if (registry.containsBeanDefinition(channelName)) { BeanDefinition inputChannelDefinition = registry.getBeanDefinition(channelName); if (FixedSubscriberChannel.class.getName().equals(inputChannelDefinition.getBeanClassName())) { ConstructorArgumentValues constructorArgumentValues = inputChannelDefinition .getConstructorArgumentValues(); if (constructorArgumentValues.isEmpty()) { constructorArgumentValues.addGenericArgumentValue(new RuntimeBeanReference(handlerBeanName)); ValueHolder argumentValue = bfppd.getConstructorArgumentValues().getArgumentValue(0, Map.class); if (argumentValue == null) { candidates = new ManagedMap<>(); candidates = (ManagedMap<String, String>) argumentValue.getValue();
private void updateBeanDefinitionRootContainerName(String rootContainerName, BeanDefinition beanDefinition) { Class<?> beanClass = null; try { beanClass = currentThread().getContextClassLoader().loadClass(beanDefinition.getBeanClassName()); } catch (ClassNotFoundException e) { // Nothing to do, spring will break because of this eventually } if (beanClass == null || Component.class.isAssignableFrom(beanClass)) { updateAnnotationValue(ROOT_CONTAINER_NAME_KEY, rootContainerName, beanDefinition); } for (PropertyValue propertyValue : beanDefinition.getPropertyValues().getPropertyValueList()) { Object value = propertyValue.getValue(); processBeanValue(rootContainerName, value); } for (ConstructorArgumentValues.ValueHolder valueHolder : beanDefinition.getConstructorArgumentValues() .getGenericArgumentValues()) { processBeanValue(rootContainerName, valueHolder.getValue()); } }
public void addConstructorArgs(Object value, Class type, BeanDefinition bd) { ConstructorArgumentValues.ValueHolder vHolder = new ConstructorArgumentValues.ValueHolder(value, type.getName()); ConstructorArgumentValues args = bd.getConstructorArgumentValues(); args.addIndexedArgumentValue(args.getArgumentCount(), vHolder); }
@Override protected void postProcessBuilder(BeanDefinitionBuilder builder, Element element) { BeanDefinition templateDefinition = (BeanDefinition) builder.getRawBeanDefinition() .getConstructorArgumentValues() .getIndexedArgumentValues() .values() .iterator() .next() .getValue(); templateDefinition.getPropertyValues() // NOSONAR never null .add("existsMode", FtpRemoteFileTemplate.ExistsMode.NLST); }
@Test public void beanEventReceived() throws Exception { ComponentDefinition componentDefinition1 = this.eventListener.getComponentDefinition("testBean"); assertTrue(componentDefinition1 instanceof BeanComponentDefinition); assertEquals(1, componentDefinition1.getBeanDefinitions().length); BeanDefinition beanDefinition1 = componentDefinition1.getBeanDefinitions()[0]; assertEquals(new TypedStringValue("Rob Harrop"), beanDefinition1.getConstructorArgumentValues().getGenericArgumentValue(String.class).getValue()); assertEquals(1, componentDefinition1.getBeanReferences().length); assertEquals("testBean2", componentDefinition1.getBeanReferences()[0].getBeanName()); assertEquals(1, componentDefinition1.getInnerBeanDefinitions().length); BeanDefinition innerBd1 = componentDefinition1.getInnerBeanDefinitions()[0]; assertEquals(new TypedStringValue("ACME"), innerBd1.getConstructorArgumentValues().getGenericArgumentValue(String.class).getValue()); assertTrue(componentDefinition1.getSource() instanceof Element); ComponentDefinition componentDefinition2 = this.eventListener.getComponentDefinition("testBean2"); assertTrue(componentDefinition2 instanceof BeanComponentDefinition); assertEquals(1, componentDefinition1.getBeanDefinitions().length); BeanDefinition beanDefinition2 = componentDefinition2.getBeanDefinitions()[0]; assertEquals(new TypedStringValue("Juergen Hoeller"), beanDefinition2.getPropertyValues().getPropertyValue("name").getValue()); assertEquals(0, componentDefinition2.getBeanReferences().length); assertEquals(1, componentDefinition2.getInnerBeanDefinitions().length); BeanDefinition innerBd2 = componentDefinition2.getInnerBeanDefinitions()[0]; assertEquals(new TypedStringValue("Eva Schallmeiner"), innerBd2.getPropertyValues().getPropertyValue("name").getValue()); assertTrue(componentDefinition2.getSource() instanceof Element); }
.getArgumentValue(1, RuntimeBeanReference.class).getValue(); accessDecisionMgr.getConstructorArgumentValues().addGenericArgumentValue(voters); accessDecisionMgr.setSource(pc.extractSource(httpElt)); wipe.getConstructorArgumentValues().addGenericArgumentValue( new RuntimeBeanReference(fsiId));
/** * Add an argument value for the given index in the constructor argument list. * @param index the index in the constructor argument list * @param value the argument value */ public void addIndexedArgumentValue(int index, @Nullable Object value) { addIndexedArgumentValue(index, new ValueHolder(value)); }
@Test public void beanDefinitionMerging() { RootBeanDefinition bd = new RootBeanDefinition(TestBean.class); bd.getConstructorArgumentValues().addGenericArgumentValue("test"); bd.getConstructorArgumentValues().addIndexedArgumentValue(1, new Integer(5)); bd.getPropertyValues().add("name", "myName"); bd.getPropertyValues().add("age", "99"); bd.setQualifiedElement(getClass()); GenericBeanDefinition childBd = new GenericBeanDefinition(); childBd.setParentName("bd"); RootBeanDefinition mergedBd = new RootBeanDefinition(bd); mergedBd.overrideFrom(childBd); assertEquals(2, mergedBd.getConstructorArgumentValues().getArgumentCount()); assertEquals(2, mergedBd.getPropertyValues().size()); assertEquals(bd, mergedBd); mergedBd.getConstructorArgumentValues().getArgumentValue(1, null).setValue(new Integer(9)); assertEquals(new Integer(5), bd.getConstructorArgumentValues().getArgumentValue(1, null).getValue()); assertEquals(getClass(), bd.getQualifiedElement()); }
ConstructorArgumentValues caValues = channelRegistry.getConstructorArgumentValues(); ValueHolder vh = caValues.getArgumentValue(0, Collection.class); if (vh == null) { //although it should never happen if it does we can fix it caValues.addIndexedArgumentValue(0, new ManagedSet<String>()); (Collection<String>) caValues.getArgumentValue(0, Collection.class).getValue(); // NOSONAR see comment above
resolvedValues = new ConstructorArgumentValues(); minNrOfArgs = resolveConstructorArguments(beanName, mbd, bw, cargs, resolvedValues); Set<ValueHolder> valueHolders = new LinkedHashSet<>(resolvedValues.getArgumentCount()); valueHolders.addAll(resolvedValues.getIndexedArgumentValues().values()); valueHolders.addAll(resolvedValues.getGenericArgumentValues()); for (ValueHolder value : valueHolders) { String argType = (value.getType() != null ? ClassUtils.getShortName(value.getType()) : (value.getValue() != null ? value.getValue().getClass().getSimpleName() : "null")); argTypes.add(argType);
/** * Register the processor with a {@link BeanDefinitionRegistry}. Not required when * using the Spocks {@link spock.lang.Specification} as registration is automatic. * * @param registry the bean definition registry * @param postProcessor the post processor class to register * @param definitions the initial mock/spy definitions */ @SuppressWarnings("unchecked") static void register(BeanDefinitionRegistry registry, Class<? extends SpockMockPostprocessor> postProcessor, Set<Definition> definitions) { SpyPostProcessor.register(registry); BeanDefinition definition = getOrAddBeanDefinition(registry, postProcessor); ValueHolder constructorArg = definition.getConstructorArgumentValues().getIndexedArgumentValue(0, Set.class); Set<Definition> existing = (Set<Definition>)constructorArg.getValue(); if (definitions != null) { existing.addAll(definitions); } }
@SuppressWarnings({"unchecked"}) public static List<BeanMetadataElement> findFilterChain(ParserContext parserContext, String explicitRef) { String filterChainRef = explicitRef; if (!StringUtils.hasText(filterChainRef)) { filterChainRef = findDefaultFilterChainBeanId(parserContext); } return (List<BeanMetadataElement>) parserContext.getRegistry().getBeanDefinition(filterChainRef).getConstructorArgumentValues().getArgumentValue(1,List.class).getValue(); }
@Override protected void parseNested(Element element, ParserContext parserContext, BeanDefinitionBuilder builder, BeanDefinition bd) { bd.setDependsOn(element.getAttribute( RedissonNamespaceParserSupport.REDISSON_REF_ATTRIBUTE)); List<Element> childElements = DomUtils.getChildElements(element); = builder.getRawBeanDefinition() .getConstructorArgumentValues(); if (args.getArgumentCount() > 0) { ConstructorArgumentValues.ValueHolder value = args.getIndexedArgumentValues().get(0); ManagedList list; if (value.getValue() instanceof ManagedList) { list = (ManagedList) value.getValue(); } else { list = new ManagedList(); list.add(value.getValue()); value.setValue(list); value.setType(ManagedList.class.getName());
@SuppressWarnings("unchecked") public void registerConverter(BeanDefinitionRegistry registry, BeanMetadataElement converterBeanDefinition) { Set<BeanMetadataElement> converters = new ManagedSet<BeanMetadataElement>(); if (!registry.containsBeanDefinition(IntegrationContextUtils.CONVERTER_REGISTRAR_BEAN_NAME)) { BeanDefinitionBuilder converterRegistrarBuilder = BeanDefinitionBuilder.genericBeanDefinition( CONTEXT_PACKAGE + "ConverterRegistrar").addConstructorArgValue(converters); registry.registerBeanDefinition(IntegrationContextUtils.CONVERTER_REGISTRAR_BEAN_NAME, converterRegistrarBuilder.getBeanDefinition()); if (!registry.containsBeanDefinition(IntegrationUtils.INTEGRATION_CONVERSION_SERVICE_BEAN_NAME)) { registry.registerBeanDefinition(IntegrationUtils.INTEGRATION_CONVERSION_SERVICE_BEAN_NAME, new RootBeanDefinition(CONTEXT_PACKAGE + "CustomConversionServiceFactoryBean")); } } else { BeanDefinition converterRegistrarBeanDefinition = registry .getBeanDefinition(IntegrationContextUtils.CONVERTER_REGISTRAR_BEAN_NAME); converters = (Set<BeanMetadataElement>) converterRegistrarBeanDefinition .getConstructorArgumentValues() .getIndexedArgumentValues() .values() .iterator() .next() .getValue(); } converters.add(converterBeanDefinition); // NOSONAR never null } }
resolvedValues = new ConstructorArgumentValues(); minNrOfArgs = resolveConstructorArguments(beanName, mbd, bw, cargs, resolvedValues); boolean hasArgs = (resolvedValues.getArgumentCount() > 0); String argDesc = ""; if (hasArgs) { List<String> argTypes = new ArrayList<String>(); for (ValueHolder value : resolvedValues.getIndexedArgumentValues().values()) { String argType = (value.getType() != null ? ClassUtils.getShortName(value.getType()) : value.getValue().getClass().getSimpleName()); argTypes.add(argType);
Method uniqueCandidate = null; int minNrOfArgs = (mbd.hasConstructorArgumentValues() ? mbd.getConstructorArgumentValues().getArgumentCount() : 0); Method[] candidates = this.factoryMethodCandidateCache.computeIfAbsent( factoryClass, ReflectionUtils::getUniqueDeclaredMethods); Object[] args = new Object[paramTypes.length]; for (int i = 0; i < args.length; i++) { ConstructorArgumentValues.ValueHolder valueHolder = cav.getArgumentValue( i, paramTypes[i], (paramNames != null ? paramNames[i] : null), usedValueHolders); if (valueHolder == null) { valueHolder = cav.getGenericArgumentValue(null, null, usedValueHolders); args[i] = valueHolder.getValue(); usedValueHolders.add(valueHolder);