This is an automated email from the ASF dual-hosted git repository.

reta pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cxf.git

commit 2b3c86fb4f45c63fcca75a08ec0ebb2059fd629b
Author: reta <[email protected]>
AuthorDate: Tue Mar 2 19:36:21 2021 -0500

    [CXF-8361] Finalized support for Jakarta NS. Minor refactorings
---
 .../handler/AnnotationHandlerChainBuilder.java     | 16 ++++-------
 .../cxf/jaxws/handler/BaseHandlerChainBuilder.java |  6 ++--
 .../handler/DelegatingHandlerChainBuilder.java     | 32 ++++++++++++++++++++++
 .../handler/JakartaeeHandlerChainBuilder.java      |  8 ++++--
 .../jaxws/handler/JavaeeHandlerChainBuilder.java   |  9 +++---
 5 files changed, 50 insertions(+), 21 deletions(-)

diff --git 
a/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/AnnotationHandlerChainBuilder.java
 
b/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/AnnotationHandlerChainBuilder.java
index 1e8849e..97e7110 100644
--- 
a/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/AnnotationHandlerChainBuilder.java
+++ 
b/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/AnnotationHandlerChainBuilder.java
@@ -43,15 +43,12 @@ import org.apache.cxf.common.i18n.BundleUtils;
 import org.apache.cxf.common.i18n.Message;
 import org.apache.cxf.common.logging.LogUtils;
 import org.apache.cxf.common.util.StringUtils;
-import org.apache.cxf.jaxws.handler.types.PortComponentHandlerType;
 import org.apache.cxf.staxutils.StaxUtils;
 
-
 @SuppressWarnings("rawtypes")
 public class AnnotationHandlerChainBuilder extends HandlerChainBuilder {
     private static final Logger LOG = 
LogUtils.getL7dLogger(AnnotationHandlerChainBuilder.class);
     private static final ResourceBundle BUNDLE = LOG.getResourceBundle();
-    private ClassLoader classLoader;
 
     public AnnotationHandlerChainBuilder() {
     }
@@ -68,7 +65,7 @@ public class AnnotationHandlerChainBuilder extends 
HandlerChainBuilder {
     public List<Handler> buildHandlerChainFromClass(Class<?> clz, 
List<Handler> existingHandlers,
                                                     QName portQName, QName 
serviceQName, String bindingID) {
         LOG.fine("building handler chain");
-        classLoader = getClassLoader(clz);
+        
         HandlerChainAnnotation hcAnn = findHandlerChainAnnotation(clz, true);
         List<Handler> chain = null;
         if (hcAnn == null) {
@@ -97,11 +94,14 @@ public class AnnotationHandlerChainBuilder extends 
HandlerChainBuilder {
                                                        "NOT_VALID_NAMESPACE",
                                                        el.getNamespaceURI()));
                 }
+                
+                final ClassLoader classLoader = getClassLoader(clz);
+                final DelegatingHandlerChainBuilder delegate = ht -> 
buildHandlerChain(ht, classLoader);
                 if (isJavaEENamespace) {
-                    chain = new JavaeeHandlerChainBuilder(BUNDLE, 
handlerFileURL, this)
+                    chain = new JavaeeHandlerChainBuilder(BUNDLE, 
handlerFileURL, delegate)
                             .build(el, portQName, serviceQName, bindingID);
                 } else {
-                    chain = new JakartaeeHandlerChainBuilder(BUNDLE, 
handlerFileURL, this)
+                    chain = new JakartaeeHandlerChainBuilder(BUNDLE, 
handlerFileURL, delegate)
                             .build(el, portQName, serviceQName, bindingID);
                 }
             } catch (WebServiceException e) {
@@ -129,10 +129,6 @@ public class AnnotationHandlerChainBuilder extends 
HandlerChainBuilder {
         return clazz.getClassLoader();
     }
 
-    List<Handler> buildHandlerChain(PortComponentHandlerType ht) {
-        return buildHandlerChain(ht, classLoader);
-    }
-
     public List<Handler> buildHandlerChainFromClass(Class<?> clz, QName 
portQName, QName serviceQName,
                                                     String bindingID) {
         return buildHandlerChainFromClass(clz, null, portQName, serviceQName, 
bindingID);
diff --git 
a/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/BaseHandlerChainBuilder.java
 
b/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/BaseHandlerChainBuilder.java
index 279eb4b..61f943a 100644
--- 
a/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/BaseHandlerChainBuilder.java
+++ 
b/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/BaseHandlerChainBuilder.java
@@ -36,18 +36,16 @@ import org.w3c.dom.Node;
 import org.apache.cxf.common.i18n.BundleUtils;
 import org.apache.cxf.staxutils.StaxUtils;
 
+@SuppressWarnings("rawtypes")
 abstract class BaseHandlerChainBuilder {
     private static final String HANDLER_CHAINS_E = "handler-chains";
     private static final String HANDLER_CHAIN_E = "handler-chain";
-    final AnnotationHandlerChainBuilder delegate;
     private final ResourceBundle bundle;
     private final URL handlerFileURL;
 
-    protected BaseHandlerChainBuilder(ResourceBundle bundle, URL 
handlerFileURL,
-                                      AnnotationHandlerChainBuilder delegate) {
+    protected BaseHandlerChainBuilder(ResourceBundle bundle, URL 
handlerFileURL) {
         this.bundle = bundle;
         this.handlerFileURL = handlerFileURL;
-        this.delegate = delegate;
     }
 
     protected List<Handler> build(String namespace, Element el, QName 
portQName, QName serviceQName, String bindingID) {
diff --git 
a/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/DelegatingHandlerChainBuilder.java
 
b/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/DelegatingHandlerChainBuilder.java
new file mode 100644
index 0000000..f08f58a
--- /dev/null
+++ 
b/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/DelegatingHandlerChainBuilder.java
@@ -0,0 +1,32 @@
+/**
+ * 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.jaxws.handler;
+
+import java.util.List;
+
+import javax.xml.ws.handler.Handler;
+
+import org.apache.cxf.jaxws.handler.types.PortComponentHandlerType;
+
+@SuppressWarnings("rawtypes")
+@FunctionalInterface
+interface DelegatingHandlerChainBuilder {
+    List<Handler> buildHandlerChain(PortComponentHandlerType ht);
+}
diff --git 
a/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/JakartaeeHandlerChainBuilder.java
 
b/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/JakartaeeHandlerChainBuilder.java
index 9022796..f2f9de5 100644
--- 
a/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/JakartaeeHandlerChainBuilder.java
+++ 
b/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/JakartaeeHandlerChainBuilder.java
@@ -33,13 +33,15 @@ import org.w3c.dom.Element;
 import org.apache.cxf.common.jaxb.JAXBUtils;
 import org.apache.cxf.jaxws.handler.jakartaee.PortComponentHandlerType;
 
+@SuppressWarnings("rawtypes")
 final class JakartaeeHandlerChainBuilder extends BaseHandlerChainBuilder {
     static final String JAKARTAEE_NS = "https://jakarta.ee/xml/ns/jakartaee";;
     private static JAXBContext context;
+    private final DelegatingHandlerChainBuilder delegate;
 
-    JakartaeeHandlerChainBuilder(ResourceBundle bundle, URL handlerFileURL,
-                                 AnnotationHandlerChainBuilder delegate) {
-        super(bundle, handlerFileURL, delegate);
+    JakartaeeHandlerChainBuilder(ResourceBundle bundle, URL handlerFileURL, 
DelegatingHandlerChainBuilder delegate) {
+        super(bundle, handlerFileURL);
+        this.delegate = delegate;
     }
 
     public List<Handler> build(Element el, QName portQName, QName 
serviceQName, String bindingID) {
diff --git 
a/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/JavaeeHandlerChainBuilder.java
 
b/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/JavaeeHandlerChainBuilder.java
index 2f122a8..23952b8 100644
--- 
a/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/JavaeeHandlerChainBuilder.java
+++ 
b/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/JavaeeHandlerChainBuilder.java
@@ -33,14 +33,15 @@ import org.w3c.dom.Element;
 import org.apache.cxf.common.jaxb.JAXBUtils;
 import org.apache.cxf.jaxws.handler.types.PortComponentHandlerType;
 
-
+@SuppressWarnings("rawtypes")
 final class JavaeeHandlerChainBuilder extends BaseHandlerChainBuilder {
     static final String JAVAEE_NS = "http://java.sun.com/xml/ns/javaee";;
     private static JAXBContext context;
+    private final DelegatingHandlerChainBuilder delegate;
 
-    JavaeeHandlerChainBuilder(ResourceBundle bundle, URL handlerFileURL,
-                                     AnnotationHandlerChainBuilder delegate) {
-        super(bundle, handlerFileURL, delegate);
+    JavaeeHandlerChainBuilder(ResourceBundle bundle, URL handlerFileURL, 
DelegatingHandlerChainBuilder delegate) {
+        super(bundle, handlerFileURL);
+        this.delegate = delegate;
     }
 
     public List<Handler> build(Element el, QName portQName, QName 
serviceQName, String bindingID) {

Reply via email to