You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by co...@apache.org on 2026/10/15 08:53:42 UTC
(cxf) 02/03: CXF-4586: Look up bean definitions in parent contexts in SpringBeanLocator (#3581)
This is an automated email from the ASF dual-hosted git repository.
coheigea pushed a commit to branch 4.1.x-fixes
in repository https://gitbox.apache.org/repos/asf/cxf.git
commit d3f9f4091982b8dde01468b86a47fdadc6e9f1ab
Author: Colm O hEigeartaigh <co...@users.noreply.github.com>
AuthorDate: Thu Oct 15 09:30:36 2026 +0100
CXF-4586: Look up bean definitions in parent contexts in SpringBeanLocator (#3581)
(cherry picked from commit 4e60057e8ba36a6525cb30e3e80b1cd67d3e67c0)
---
.../apache/cxf/bus/spring/SpringBeanLocator.java | 2 +-
.../cxf/bus/spring/SpringBeanLocatorTest.java | 72 ++++++++++++++++++++++
2 files changed, 73 insertions(+), 1 deletion(-)
diff --git a/core/src/main/java/org/apache/cxf/bus/spring/SpringBeanLocator.java b/core/src/main/java/org/apache/cxf/bus/spring/SpringBeanLocator.java
index 61f5d38f3ff..0c7dd98731d 100644
--- a/core/src/main/java/org/apache/cxf/bus/spring/SpringBeanLocator.java
+++ b/core/src/main/java/org/apache/cxf/bus/spring/SpringBeanLocator.java
@@ -230,7 +230,7 @@ public class SpringBeanLocator implements ConfiguredBeanLocator {
public boolean hasConfiguredPropertyValue(String beanName, String propertyName, String searchValue) {
if (context.containsBean(beanName) && !passThroughs.contains(beanName)) {
ConfigurableApplicationContext ctxt = (ConfigurableApplicationContext)context;
- BeanDefinition def = ctxt.getBeanFactory().getBeanDefinition(beanName);
+ BeanDefinition def = ctxt.getBeanFactory().getMergedBeanDefinition(beanName);
if (!ctxt.getBeanFactory().isSingleton(beanName) || def.isAbstract()) {
return false;
}
diff --git a/core/src/test/java/org/apache/cxf/bus/spring/SpringBeanLocatorTest.java b/core/src/test/java/org/apache/cxf/bus/spring/SpringBeanLocatorTest.java
new file mode 100644
index 00000000000..f2bd0a774d4
--- /dev/null
+++ b/core/src/test/java/org/apache/cxf/bus/spring/SpringBeanLocatorTest.java
@@ -0,0 +1,72 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.cxf.bus.spring;
+
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.cxf.bus.extension.ExtensionManagerBus;
+import org.springframework.beans.factory.support.BeanDefinitionBuilder;
+import org.springframework.context.support.GenericApplicationContext;
+
+import org.junit.Test;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+public class SpringBeanLocatorTest {
+
+ @Test
+ public void testHasConfiguredPropertyValueInParentContext() {
+ GenericApplicationContext parent = new GenericApplicationContext();
+ parent.registerBeanDefinition("parentFactory",
+ BeanDefinitionBuilder.genericBeanDefinition(TestFactory.class)
+ .addPropertyValue("activationNamespaces", Collections.singletonList("urn:test"))
+ .getBeanDefinition());
+ parent.refresh();
+
+ GenericApplicationContext child = new GenericApplicationContext(parent);
+ child.refresh();
+
+ ExtensionManagerBus bus = new ExtensionManagerBus();
+ try {
+ SpringBeanLocator locator = new SpringBeanLocator(child, bus);
+ assertTrue(locator.hasConfiguredPropertyValue("parentFactory",
+ "activationNamespaces", "urn:test"));
+ assertFalse(locator.hasConfiguredPropertyValue("parentFactory",
+ "activationNamespaces", "urn:other"));
+ } finally {
+ bus.shutdown(true);
+ child.close();
+ parent.close();
+ }
+ }
+
+ public static class TestFactory {
+ private List<String> activationNamespaces;
+
+ public List<String> getActivationNamespaces() {
+ return activationNamespaces;
+ }
+
+ public void setActivationNamespaces(List<String> activationNamespaces) {
+ this.activationNamespaces = activationNamespaces;
+ }
+ }
+}