/** * Validate and prepare the method overrides defined for this bean. * Checks for existence of a method with the specified name. * @throws BeanDefinitionValidationException in case of validation failure */ public void prepareMethodOverrides() throws BeanDefinitionValidationException { // Check that lookup methods exists. if (hasMethodOverrides()) { Set<MethodOverride> overrides = getMethodOverrides().getOverrides(); synchronized (overrides) { for (MethodOverride mo : overrides) { prepareMethodOverride(mo); } } } }
/** * Validate and prepare the method overrides defined for this bean. * Checks for existence of a method with the specified name. * @throws BeanDefinitionValidationException in case of validation failure */ public void prepareMethodOverrides() throws BeanDefinitionValidationException { // Check that lookup methods exists. if (hasMethodOverrides()) { Set<MethodOverride> overrides = getMethodOverrides().getOverrides(); synchronized (overrides) { for (MethodOverride mo : overrides) { prepareMethodOverride(mo); } } } }
/** * @since 3.2.8 * @see <a href="https://jira.spring.io/browse/SPR-11420">SPR-11420</a> */ @Test public void rootBeanDefinitionAndMethodOverridesWithDifferentOverloadedValues() { RootBeanDefinition master = new RootBeanDefinition(TestBean.class); RootBeanDefinition equal = new RootBeanDefinition(TestBean.class); setBaseProperties(master); setBaseProperties(equal); // Simulate AbstractBeanDefinition.validate() which delegates to // AbstractBeanDefinition.prepareMethodOverrides(): master.getMethodOverrides().getOverrides().iterator().next().setOverloaded(false); // But do not simulate validation of the 'equal' bean. As a consequence, a method // override in 'equal' will be marked as overloaded, but the corresponding // override in 'master' will not. But... the bean definitions should still be // considered equal. assertEquals("Should be equal", master, equal); assertEquals("Hash code for equal instances must match", master.hashCode(), equal.hashCode()); }
/** * Copy all given method overrides into this object. */ public void addOverrides(MethodOverrides other) { if (other != null) { this.overrides.addAll(other.getOverrides()); } }
/** * Validate and prepare the method overrides defined for this bean. * Checks for existence of a method with the specified name. * @throws BeanDefinitionValidationException in case of validation failure */ public void prepareMethodOverrides() throws BeanDefinitionValidationException { // Check that lookup methods exists. MethodOverrides methodOverrides = getMethodOverrides(); if (!methodOverrides.isEmpty()) { for (MethodOverride mo : methodOverrides.getOverrides()) { prepareMethodOverride(mo); } } }
/** * Copy all given method overrides into this object. */ public void addOverrides(MethodOverrides other) { if (other != null) { this.overrides.addAll(other.getOverrides()); } }
private void methodOverrides() { @SuppressWarnings("unchecked") Set<MethodOverride> overrides = bd.getMethodOverrides().getOverrides(); for (MethodOverride override : overrides) { if (override instanceof LookupOverride) { Element lookupMethodElement = beanElement.newSubElement("lookup-method"); String bean = ((LookupOverride) override).getBeanName(); String name = override.getMethodName(); if (bean != null) { lookupMethodElement.addAttribute("bean", new RefValue(bean)); } if (name != null) { lookupMethodElement.addAttribute("name", name); } continue; } if (override instanceof ReplaceOverride) { Element replacedMethodElement = beanElement.newSubElement("replaced-method"); String bean = ((ReplaceOverride) override).getMethodReplacerBeanName(); String name = override.getMethodName(); if (bean != null) { replacedMethodElement.addAttribute("replacer", new RefValue(bean)); } if (name != null) { replacedMethodElement.addAttribute("name", name); } continue; } } }
private void methodOverrides() { @SuppressWarnings("unchecked") Set<MethodOverride> overrides = bd.getMethodOverrides().getOverrides(); for (MethodOverride override : overrides) { if (override instanceof LookupOverride) { Element lookupMethodElement = beanElement.newSubElement("lookup-method"); String bean = ((LookupOverride) override).getBeanName(); String name = override.getMethodName(); if (bean != null) { lookupMethodElement.addAttribute("bean", new RefValue(bean)); } if (name != null) { lookupMethodElement.addAttribute("name", name); } continue; } if (override instanceof ReplaceOverride) { Element replacedMethodElement = beanElement.newSubElement("replaced-method"); String bean = ((ReplaceOverride) override).getMethodReplacerBeanName(); String name = override.getMethodName(); if (bean != null) { replacedMethodElement.addAttribute("replacer", new RefValue(bean)); } if (name != null) { replacedMethodElement.addAttribute("name", name); } continue; } } }
/** * Validate and prepare the method overrides defined for this bean. * Checks for existence of a method with the specified name. * @throws BeanDefinitionValidationException in case of validation failure */ public void prepareMethodOverrides() throws BeanDefinitionValidationException { // Check that lookup methods exists. MethodOverrides methodOverrides = getMethodOverrides(); if (!methodOverrides.isEmpty()) { Set<MethodOverride> overrides = methodOverrides.getOverrides(); synchronized (overrides) { for (MethodOverride mo : overrides) { prepareMethodOverride(mo); } } } }
/** * Generates lookup methods for given bean definition. */ private void generateLookupMethods(final BeanDefinition beanDefinition, final ElementBuilder builder) { if (beanDefinition instanceof AbstractBeanDefinition) { AbstractBeanDefinition def = (AbstractBeanDefinition) beanDefinition; MethodOverrides overrides = def.getMethodOverrides(); @SuppressWarnings({"unchecked"}) Set<MethodOverride> overridesSet = overrides.getOverrides(); for (MethodOverride override : overridesSet) { generateMethodOverride(override, builder); } } }
/** * Generates lookup methods for given bean definition. */ private void generateLookupMethods(final BeanDefinition beanDefinition, final ElementBuilder builder) { if (beanDefinition instanceof AbstractBeanDefinition) { AbstractBeanDefinition def = (AbstractBeanDefinition) beanDefinition; MethodOverrides overrides = def.getMethodOverrides(); @SuppressWarnings({"unchecked"}) Set<MethodOverride> overridesSet = overrides.getOverrides(); for (MethodOverride override : overridesSet) { generateMethodOverride(override, builder); } } }
/** * Validate this bean definition. * @throws BeanDefinitionValidationException in case of validation failure */ public void validate() throws BeanDefinitionValidationException { if (this.lazyInit && !this.singleton) { throw new BeanDefinitionValidationException( "Lazy initialization is only applicable to singleton beans"); } if (!getMethodOverrides().isEmpty() && getFactoryMethodName() != null) { throw new BeanDefinitionValidationException( "Cannot combine static factory method with method overrides: " + "the static factory method must create the instance"); } if (hasBeanClass()) { // Check that lookup methods exists for (Iterator it = getMethodOverrides().getOverrides().iterator(); it.hasNext(); ) { MethodOverride mo = (MethodOverride) it.next(); validateMethodOverride(mo); } } }
private void methodOverrides() { @SuppressWarnings("unchecked") Set<MethodOverride> overrides = bd.getMethodOverrides().getOverrides(); for (MethodOverride override : overrides) { if (override instanceof LookupOverride) { Element lookupMethodElement = beanElement.newSubElement("lookup-method"); String bean = ((LookupOverride) override).getBeanName(); String name = override.getMethodName(); if (bean != null) { lookupMethodElement.addAttribute("bean", new RefValue(bean)); } if (name != null) { lookupMethodElement.addAttribute("name", name); } continue; } if (override instanceof ReplaceOverride) { Element replacedMethodElement = beanElement.newSubElement("replaced-method"); String bean = ((ReplaceOverride) override).getMethodReplacerBeanName(); String name = override.getMethodName(); if (bean != null) { replacedMethodElement.addAttribute("replacer", new RefValue(bean)); } if (name != null) { replacedMethodElement.addAttribute("name", name); } continue; } } }