You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by jl...@apache.org on 2023/05/22 18:59:32 UTC

[tomee] branch tomee-9.x updated (16944daadc -> cc40ad4471)

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

jlmonteiro pushed a change to branch tomee-9.x
in repository https://gitbox.apache.org/repos/asf/tomee.git


    from 16944daadc TOMEE-4199 - JakartaEE API 9.1.1 to fix jakartaee-api with tomcat classifier has too much in it
     new afe38af9b3 These have no significant changes compared to a stock 3.5.0 so removing
     new cc40ad4471 fix: add other derby jar to default exclude

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../src/main/resources/default.exclusions          |    2 +
 .../java/org/apache/cxf/common/jaxb/JAXBUtils.java | 1180 --------------------
 .../patch/java/org/apache/cxf/helpers/IOUtils.java |  428 -------
 .../AbstractFaultChainInitiatorObserver.java       |  142 ---
 .../apache/cxf/jaxb/JAXBContextInitializer.java    |  569 ----------
 .../org/apache/cxf/jaxb/io/DataWriterImpl.java     |  321 ------
 6 files changed, 2 insertions(+), 2640 deletions(-)
 delete mode 100644 deps/cxf-shade/src/patch/java/org/apache/cxf/common/jaxb/JAXBUtils.java
 delete mode 100644 deps/cxf-shade/src/patch/java/org/apache/cxf/helpers/IOUtils.java
 delete mode 100644 deps/cxf-shade/src/patch/java/org/apache/cxf/interceptor/AbstractFaultChainInitiatorObserver.java
 delete mode 100644 deps/cxf-shade/src/patch/java/org/apache/cxf/jaxb/JAXBContextInitializer.java
 delete mode 100644 deps/cxf-shade/src/patch/java/org/apache/cxf/jaxb/io/DataWriterImpl.java


[tomee] 02/02: fix: add other derby jar to default exclude

Posted by jl...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jlmonteiro pushed a commit to branch tomee-9.x
in repository https://gitbox.apache.org/repos/asf/tomee.git

commit cc40ad44719cad4c0df05fcda1cbaad45795616a
Author: Jean-Louis Monteiro <jl...@tomitribe.com>
AuthorDate: Mon May 22 20:52:24 2023 +0200

    fix: add other derby jar to default exclude
---
 container/openejb-core/src/main/resources/default.exclusions | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/container/openejb-core/src/main/resources/default.exclusions b/container/openejb-core/src/main/resources/default.exclusions
index 5f17b8c88b..62222c9746 100644
--- a/container/openejb-core/src/main/resources/default.exclusions
+++ b/container/openejb-core/src/main/resources/default.exclusions
@@ -71,6 +71,8 @@ deploy.jar
 derby-
 derbyclient-
 derbynet-
+derbyshared-
+derbytools-
 dom4j
 dtd-parser-
 ecj-


[tomee] 01/02: These have no significant changes compared to a stock 3.5.0 so removing

Posted by jl...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jlmonteiro pushed a commit to branch tomee-9.x
in repository https://gitbox.apache.org/repos/asf/tomee.git

commit afe38af9b30aa7f4f62f0b71e36998a63169c0a9
Author: Jean-Louis Monteiro <jl...@tomitribe.com>
AuthorDate: Thu Jan 5 10:08:58 2023 +0100

    These have no significant changes compared to a stock 3.5.0 so removing
---
 .../java/org/apache/cxf/common/jaxb/JAXBUtils.java | 1180 --------------------
 .../patch/java/org/apache/cxf/helpers/IOUtils.java |  428 -------
 .../AbstractFaultChainInitiatorObserver.java       |  142 ---
 .../apache/cxf/jaxb/JAXBContextInitializer.java    |  569 ----------
 .../org/apache/cxf/jaxb/io/DataWriterImpl.java     |  321 ------
 5 files changed, 2640 deletions(-)

diff --git a/deps/cxf-shade/src/patch/java/org/apache/cxf/common/jaxb/JAXBUtils.java b/deps/cxf-shade/src/patch/java/org/apache/cxf/common/jaxb/JAXBUtils.java
deleted file mode 100644
index d538a030af..0000000000
--- a/deps/cxf-shade/src/patch/java/org/apache/cxf/common/jaxb/JAXBUtils.java
+++ /dev/null
@@ -1,1180 +0,0 @@
-/**
- * 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.common.jaxb;
-
-
-import java.io.BufferedReader;
-import java.io.Closeable;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.lang.annotation.Annotation;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Target;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-import java.lang.reflect.Proxy;
-import java.lang.reflect.Type;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.nio.charset.StandardCharsets;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Set;
-import java.util.StringTokenizer;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import jakarta.xml.bind.JAXBContext;
-import jakarta.xml.bind.JAXBElement;
-import jakarta.xml.bind.JAXBException;
-import jakarta.xml.bind.Marshaller;
-import jakarta.xml.bind.PropertyException;
-import jakarta.xml.bind.SchemaOutputResolver;
-import jakarta.xml.bind.Unmarshaller;
-import jakarta.xml.bind.annotation.XmlElement;
-import jakarta.xml.bind.attachment.AttachmentMarshaller;
-import jakarta.xml.bind.attachment.AttachmentUnmarshaller;
-import javax.xml.namespace.QName;
-import javax.xml.stream.XMLStreamReader;
-import javax.xml.stream.XMLStreamWriter;
-import javax.xml.transform.Result;
-import javax.xml.transform.Source;
-import javax.xml.transform.dom.DOMResult;
-import javax.xml.transform.stream.StreamResult;
-
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-import org.xml.sax.EntityResolver;
-import org.xml.sax.InputSource;
-
-import org.apache.cxf.Bus;
-import org.apache.cxf.common.classloader.ClassLoaderUtils;
-import org.apache.cxf.common.logging.LogUtils;
-import org.apache.cxf.common.spi.ClassLoaderService;
-import org.apache.cxf.common.util.CachedClass;
-import org.apache.cxf.common.util.PackageUtils;
-import org.apache.cxf.common.util.ProxyHelper;
-import org.apache.cxf.common.util.ReflectionInvokationHandler;
-import org.apache.cxf.common.util.ReflectionInvokationHandler.WrapReturn;
-import org.apache.cxf.common.util.ReflectionUtil;
-import org.apache.cxf.common.util.StringUtils;
-import org.apache.cxf.common.util.SystemPropertyAction;
-import org.apache.cxf.common.xmlschema.SchemaCollection;
-import org.apache.cxf.helpers.JavaUtils;
-
-public final class JAXBUtils {
-    public static final String JAXB_URI = "http://java.sun.com/xml/ns/jaxb";
-
-    private static final Logger LOG = LogUtils.getL7dLogger(JAXBUtils.class);
-
-    public enum IdentifierType {
-        CLASS,
-        INTERFACE,
-        GETTER,
-        SETTER,
-        VARIABLE,
-        CONSTANT
-    };
-
-    private static final char[] XML_NAME_PUNCTUATION_CHARS = new char[] {
-        /* hyphen                       */ '\u002D',
-        /* period                       */ '\u002E',
-        /* colon                        */'\u003A',
-        /* dot                          */ '\u00B7',
-        /* greek ano teleia             */ '\u0387',
-        /* arabic end of ayah           */ '\u06DD',
-        /* arabic start of rub el hizb  */'\u06DE',
-        /* underscore                   */ '\u005F',
-    };
-
-    private static final String XML_NAME_PUNCTUATION_STRING = new String(XML_NAME_PUNCTUATION_CHARS);
-
-    private static final Map<String, String> BUILTIN_DATATYPES_MAP;
-    private static final Map<String, Class<?>> HOLDER_TYPES_MAP;
-    private static ClassLoader jaxbXjcLoader;
-    private static volatile Optional<Object> jaxbMinimumEscapeHandler;
-    private static volatile Optional<Object> jaxbNoEscapeHandler;
-    
-    static {
-        BUILTIN_DATATYPES_MAP = new HashMap<>();
-        BUILTIN_DATATYPES_MAP.put("string", "java.lang.String");
-        BUILTIN_DATATYPES_MAP.put("integer", "java.math.BigInteger");
-        BUILTIN_DATATYPES_MAP.put("int", "int");
-        BUILTIN_DATATYPES_MAP.put("long", "long");
-        BUILTIN_DATATYPES_MAP.put("short", "short");
-        BUILTIN_DATATYPES_MAP.put("decimal", "java.math.BigDecimal");
-        BUILTIN_DATATYPES_MAP.put("float", "float");
-        BUILTIN_DATATYPES_MAP.put("double", "double");
-        BUILTIN_DATATYPES_MAP.put("boolean", "boolean");
-        BUILTIN_DATATYPES_MAP.put("byte", "byte");
-        BUILTIN_DATATYPES_MAP.put("QName", "javax.xml.namespace.QName");
-        BUILTIN_DATATYPES_MAP.put("dateTime", "javax.xml.datatype.XMLGregorianCalendar");
-        BUILTIN_DATATYPES_MAP.put("base64Binary", "byte[]");
-        BUILTIN_DATATYPES_MAP.put("hexBinary", "byte[]");
-        BUILTIN_DATATYPES_MAP.put("unsignedInt", "long");
-        BUILTIN_DATATYPES_MAP.put("unsignedShort", "short");
-        BUILTIN_DATATYPES_MAP.put("unsignedByte", "byte");
-        BUILTIN_DATATYPES_MAP.put("time", "javax.xml.datatype.XMLGregorianCalendar");
-        BUILTIN_DATATYPES_MAP.put("date", "javax.xml.datatype.XMLGregorianCalendar");
-        BUILTIN_DATATYPES_MAP.put("gYear", "javax.xml.datatype.XMLGregorianCalendar");
-        BUILTIN_DATATYPES_MAP.put("gYearMonth", "javax.xml.datatype.XMLGregorianCalendar");
-        BUILTIN_DATATYPES_MAP.put("gMonth", "javax.xml.datatype.XMLGregorianCalendar");
-        BUILTIN_DATATYPES_MAP.put("gMonthDay", "javax.xml.datatype.XMLGregorianCalendar");
-        BUILTIN_DATATYPES_MAP.put("gDay", "javax.xml.datatype.XMLGregorianCalendar");
-        BUILTIN_DATATYPES_MAP.put("duration", "javax.xml.datatype.Duration");
-        BUILTIN_DATATYPES_MAP.put("NOTATION", "javax.xml.namespace.QName");
-
-        HOLDER_TYPES_MAP = new HashMap<>();
-        HOLDER_TYPES_MAP.put("int", java.lang.Integer.class);
-        HOLDER_TYPES_MAP.put("long", java.lang.Long.class);
-        HOLDER_TYPES_MAP.put("short", java.lang.Short.class);
-        HOLDER_TYPES_MAP.put("float", java.lang.Float.class);
-        HOLDER_TYPES_MAP.put("double", java.lang.Double.class);
-        HOLDER_TYPES_MAP.put("boolean", java.lang.Boolean.class);
-        HOLDER_TYPES_MAP.put("byte", java.lang.Byte.class);
-    }
-
-
-    /**
-     * prevents instantiation
-     *
-     */
-    private JAXBUtils() {
-    }
-
-    public static void closeUnmarshaller(Unmarshaller u) {
-        if (u instanceof Closeable) {
-            //need to do this to clear the ThreadLocal cache
-            //see https://java.net/jira/browse/JAXB-1000
-
-            try {
-                ((Closeable)u).close();
-            } catch (IOException e) {
-                //ignore
-            }
-        }
-    }
-    public static Object unmarshall(JAXBContext c, Element e) throws JAXBException {
-        Unmarshaller u = c.createUnmarshaller();
-        try {
-            u.setEventHandler(null);
-            return u.unmarshal(e);
-        } finally {
-            closeUnmarshaller(u);
-        }
-    }
-    public static <T> JAXBElement<T> unmarshall(JAXBContext c, Element e, Class<T> cls) throws JAXBException {
-        Unmarshaller u = c.createUnmarshaller();
-        try {
-            u.setEventHandler(null);
-            return u.unmarshal(e, cls);
-        } finally {
-            closeUnmarshaller(u);
-        }
-    }
-    public static Object unmarshall(JAXBContext c, Source s) throws JAXBException {
-        Unmarshaller u = c.createUnmarshaller();
-        try {
-            u.setEventHandler(null);
-            return u.unmarshal(s);
-        } finally {
-            closeUnmarshaller(u);
-        }
-    }
-    public static <T> JAXBElement<T> unmarshall(JAXBContext c,
-                                                XMLStreamReader reader,
-                                                Class<T> cls) throws JAXBException {
-        Unmarshaller u = c.createUnmarshaller();
-        try {
-            u.setEventHandler(null);
-            return u.unmarshal(reader, cls);
-        } finally {
-            closeUnmarshaller(u);
-        }
-    }
-    public static Object unmarshall(JAXBContext c,
-                                    XMLStreamReader reader) throws JAXBException {
-        Unmarshaller u = c.createUnmarshaller();
-        try {
-            u.setEventHandler(null);
-            return u.unmarshal(reader);
-        } finally {
-            closeUnmarshaller(u);
-        }
-    }
-
-    public static String builtInTypeToJavaType(String type) {
-        return BUILTIN_DATATYPES_MAP.get(type);
-    }
-
-    public static Class<?> holderClass(String type) {
-        return HOLDER_TYPES_MAP.get(type);
-    }
-
-    /**
-     * Checks if the specified word is a Java keyword (as defined in JavaUtils).
-     *
-     * @param word the word to check.
-     * @return true if the word is a keyword.
-     * @see org.apache.cxf.helpers.JavaUtils
-     */
-    protected static boolean isJavaKeyword(String word) {
-        return JavaUtils.isJavaKeyword(word);
-    }
-
-    /**
-     * Generates a Java package name from a URI according to the
-     * algorithm outlined in JAXB 2.0.
-     *
-     * @param namespaceURI the namespace URI.
-     * @return the package name.
-     */
-    public static String namespaceURIToPackage(String namespaceURI) {
-        try {
-            return nameSpaceURIToPackage(new URI(namespaceURI));
-        } catch (URISyntaxException ex) {
-            return null;
-        }
-    }
-
-    /**
-     * Generates a Java package name from a URI according to the
-     * algorithm outlined in Appendix D of JAXB (2.0+).
-     *
-     * @param uri the namespace URI.
-     * @return the package name.
-     */
-    public static String nameSpaceURIToPackage(URI uri) {
-
-        StringBuilder packageName = new StringBuilder();
-        String authority = uri.getAuthority();
-        String scheme = uri.getScheme();
-        if (authority == null && "urn".equals(scheme)) {
-            authority = uri.getSchemeSpecificPart();
-        }
-
-        if (null != authority && !"".equals(authority)) {
-            if ("urn".equals(scheme)) {
-                packageName.append(authority);
-                /* JAXB 2.2 D.5.1, Rule #5 */
-                for (int i = 0; i < packageName.length(); i++) {
-                    if (packageName.charAt(i) == '-') {
-                        packageName.setCharAt(i, '.');
-                    }
-                }
-                authority = packageName.toString();
-                packageName.setLength(0);
-
-                StringTokenizer st = new StringTokenizer(authority, ":");
-                while (st.hasMoreTokens()) {
-                    String token = st.nextToken();
-                    if (packageName.length() > 0) {
-                        packageName.insert(0, '.');
-                        packageName.insert(0, normalizePackageNamePart(token));
-                    } else {
-                        packageName.insert(0, token);
-                    }
-                }
-                authority = packageName.toString();
-                packageName.setLength(0);
-
-            }
-
-            StringTokenizer st = new StringTokenizer(authority, ".");
-            if (st.hasMoreTokens()) {
-                while (st.hasMoreTokens()) {
-                    String token = st.nextToken();
-                    if (packageName.length() == 0) {
-                        if ("www".equals(token)) {
-                            continue;
-                        }
-                    } else {
-                        packageName.insert(0, '.');
-                    }
-                    packageName.insert(0, normalizePackageNamePart(token));
-                }
-            }
-
-            if (!("http".equalsIgnoreCase(scheme) || "urn".equalsIgnoreCase(scheme))) {
-                packageName.insert(0, '.');
-                packageName.insert(0, normalizePackageNamePart(scheme));
-            }
-
-        }
-
-        String path = uri.getPath();
-        if (path == null) {
-            path = "";
-        }
-        /* JAXB 2.2 D.5.1 Rule 2 - remove trailing .??, .???, or .html only. */
-        int index = path.lastIndexOf('.');
-        if (index < 0) {
-            index = path.length();
-        } else {
-            String ending = path.substring(index + 1);
-            if (ending.length() < 2 || (ending.length() > 3
-                && !"html".equalsIgnoreCase(ending))) {
-                index = path.length();
-            }
-        }
-        StringTokenizer st = new StringTokenizer(path.substring(0, index), "/");
-        while (st.hasMoreTokens()) {
-            String token = st.nextToken();
-            if (packageName.length() > 0) {
-                packageName.append('.');
-            }
-            packageName.append(normalizePackageNamePart(token));
-        }
-        return packageName.toString();
-    }
-
-    private static String normalizePackageNamePart(String name) {
-        StringBuilder sname = new StringBuilder(name.toLowerCase());
-
-        for (int i = 0; i < sname.length(); i++) {
-            sname.setCharAt(i, Character.toLowerCase(sname.charAt(i)));
-        }
-
-        for (int i = 0; i < sname.length(); i++) {
-            if (!Character.isJavaIdentifierPart(sname.charAt(i))) {
-                sname.setCharAt(i, '_');
-            }
-        }
-
-        if (isJavaKeyword(sname.toString())) {
-            sname.insert(0, '_');
-        }
-
-        if (!Character.isJavaIdentifierStart(sname.charAt(0))) {
-            sname.insert(0, '_');
-        }
-
-        return sname.toString();
-    }
-
-
-    /**
-     * Converts an XML name to a Java identifier according to the mapping
-     * algorithm outlined in the JAXB specification
-     *
-     * @param name the XML name
-     * @return the Java identifier
-     */
-    public static String nameToIdentifier(String name, IdentifierType type) {
-
-        if (null == name || name.length() == 0) {
-            return name;
-        }
-
-        // algorithm will not change an XML name that is already a legal and
-        // conventional (!) Java class, method, or constant identifier
-
-        StringBuilder buf = new StringBuilder(name);
-        boolean hasUnderscore = false;
-        boolean legalIdentifier = Character.isJavaIdentifierStart(buf.charAt(0));
-
-        for (int i = 1; i < name.length() && legalIdentifier; i++) {
-            legalIdentifier &= Character.isJavaIdentifierPart(buf.charAt(i));
-            hasUnderscore |= '_' == buf.charAt(i);
-        }
-
-        boolean conventionalIdentifier = isConventionalIdentifier(buf, type);
-        if (legalIdentifier && conventionalIdentifier) {
-            if (JAXBUtils.isJavaKeyword(name) && type == IdentifierType.VARIABLE) {
-                name = normalizePackageNamePart(name);
-            }
-            if (!hasUnderscore || IdentifierType.CLASS != type) {
-                return name;
-            }
-        }
-
-        // split into words
-
-        List<String> words = new ArrayList<>();
-
-        StringTokenizer st = new StringTokenizer(name, XML_NAME_PUNCTUATION_STRING);
-        while (st.hasMoreTokens()) {
-            words.add(st.nextToken());
-        }
-
-        for (int i = 0; i < words.size(); i++) {
-            splitWord(words, i);
-        }
-
-        return makeConventionalIdentifier(words, type);
-    }
-
-    private static void splitWord(List<String> words, int listIndex) {
-        String word = words.get(listIndex);
-        if (word.length() <= 1) {
-            return;
-        }
-        int index = listIndex + 1;
-        StringBuilder sword = new StringBuilder(word);
-        int first = 0;
-        char firstChar = sword.charAt(first);
-        if (Character.isLowerCase(firstChar)) {
-            sword.setCharAt(first, Character.toUpperCase(firstChar));
-        }
-        int i = 1;
-
-        while (i < sword.length()) {
-            if (Character.isDigit(firstChar)) {
-                while (i < sword.length() && Character.isDigit(sword.charAt(i))) {
-                    i++;
-                }
-            } else if (isCasedLetter(firstChar)) {
-                boolean previousIsLower = Character.isLowerCase(firstChar);
-                while (i < sword.length() && isCasedLetter(sword.charAt(i))) {
-                    if (Character.isUpperCase(sword.charAt(i)) && previousIsLower) {
-                        break;
-                    }
-                    previousIsLower = Character.isLowerCase(sword.charAt(i));
-                    i++;
-                }
-            } else {
-                // first must be a mark or an uncased letter
-                while (i < sword.length() && (isMark(sword.charAt(i)) || !isCasedLetter(sword.charAt(i)))) {
-                    i++;
-                }
-            }
-
-            // characters from first to i are all either
-            // * digits
-            // * upper or lower case letters, with only the first one an upper
-            // * uncased letters or marks
-
-
-            String newWord = sword.substring(first, i);
-            words.add(index, newWord);
-            index++;
-            if (i >= sword.length()) {
-                break;
-            }
-            first = i;
-            firstChar = sword.charAt(first);
-        }
-
-        if (index > (listIndex + 1)) {
-            words.remove(listIndex);
-        }
-    }
-
-    private static boolean isMark(char c) {
-        return Character.isJavaIdentifierPart(c) && !Character.isLetter(c) && !Character.isDigit(c);
-    }
-
-    private static boolean isCasedLetter(char c) {
-        return Character.isUpperCase(c) || Character.isLowerCase(c);
-    }
-
-    private static boolean isConventionalIdentifier(StringBuilder buf, IdentifierType type) {
-        if (null == buf || buf.length() == 0) {
-            return false;
-        }
-        final boolean result;
-        if (IdentifierType.CONSTANT == type) {
-            for (int i = 0; i < buf.length(); i++) {
-                if (Character.isLowerCase(buf.charAt(i))) {
-                    return false;
-                }
-            }
-            result = true;
-        } else if (IdentifierType.VARIABLE == type) {
-            result = Character.isLowerCase(buf.charAt(0));
-        } else {
-            int pos = 3;
-            if (IdentifierType.GETTER == type
-                && !(buf.length() >= pos
-                    && "get".equals(buf.subSequence(0, 3)))) {
-                return false;
-            } else if (IdentifierType.SETTER == type
-                && !(buf.length() >= pos && "set".equals(buf.subSequence(0, 3)))) {
-                return false;
-            } else {
-                pos = 0;
-            }
-            result = Character.isUpperCase(buf.charAt(pos));
-        }
-        return result;
-    }
-
-    private static String makeConventionalIdentifier(List<String> words, IdentifierType type) {
-        StringBuilder buf = new StringBuilder();
-        boolean firstWord = true;
-        if (IdentifierType.GETTER == type) {
-            buf.append("get");
-        } else if (IdentifierType.SETTER == type) {
-            buf.append("set");
-        }
-        for (String w : words) {
-            int l = buf.length();
-            if (l > 0 && IdentifierType.CONSTANT == type) {
-                buf.append('_');
-                l++;
-            }
-            buf.append(w);
-            if (IdentifierType.CONSTANT == type) {
-                for (int i = l; i < buf.length(); i++) {
-                    if (Character.isLowerCase(buf.charAt(i))) {
-                        buf.setCharAt(i, Character.toUpperCase(buf.charAt(i)));
-                    }
-                }
-            } else if (IdentifierType.VARIABLE == type) {
-                if (firstWord && Character.isUpperCase(buf.charAt(l))) {
-                    buf.setCharAt(l, Character.toLowerCase(buf.charAt(l)));
-                }
-            } else {
-                if (firstWord && Character.isLowerCase(buf.charAt(l))) {
-                    buf.setCharAt(l, Character.toUpperCase(buf.charAt(l)));
-                }
-            }
-            firstWord = false;
-        }
-        return buf.toString();
-    }
-
-    public static Class<?> getValidClass(Class<?> cls) {
-        if (cls.isEnum() || cls.isArray()) {
-            return cls;
-        }
-
-        if (cls == Object.class || cls == String.class || cls.isPrimitive() || cls.isAnnotation()
-            || "jakarta.xml.ws.Holder".equals(cls.getName())) {
-            return null;
-        } else if (cls.isInterface()
-            || "jakarta.xml.ws.wsaddressing.W3CEndpointReference".equals(cls.getName())) {
-            return cls;
-        }
-
-        Constructor<?> cons = ReflectionUtil.getDeclaredConstructor(cls);
-        if (cons == null) {
-            cons = ReflectionUtil.getConstructor(cls);
-            if (cons == null) {
-                return null;
-            }
-        }
-        return cls;
-    }
-
-    private static synchronized ClassLoader getXJCClassLoader() {
-        if (jaxbXjcLoader == null) {
-            try {
-                Class.forName("com.sun.tools.internal.xjc.api.XJC");
-                jaxbXjcLoader = ClassLoader.getSystemClassLoader();
-            } catch (Exception t2) {
-                //couldn't find either, probably cause tools.jar isn't on
-                //the classpath.   Let's see if we can find the tools jar
-                String s = SystemPropertyAction.getProperty("java.home");
-                if (!StringUtils.isEmpty(s)) {
-                    File home = new File(s);
-                    File jar = new File(home, "lib/tools.jar");
-                    if (!jar.exists()) {
-                        jar = new File(home, "../lib/tools.jar");
-                    }
-                    if (jar.exists()) {
-                        try {
-                            jaxbXjcLoader = new URLClassLoader(new URL[] {jar.toURI().toURL()});
-                            Class.forName("com.sun.tools.internal.xjc.api.XJC", false, jaxbXjcLoader);
-                        } catch (Exception e) {
-                            jaxbXjcLoader = null;
-                        }
-                    }
-                }
-            }
-        }
-        return jaxbXjcLoader;
-    }
-
-    public static Object setNamespaceMapper(Bus bus, final Map<String, String> nspref,
-                                            Marshaller marshaller) throws PropertyException {
-        ClassLoaderService classLoaderService = bus.getExtension(ClassLoaderService.class);
-        Object mapper = classLoaderService.createNamespaceWrapperInstance(marshaller.getClass(), nspref);
-        if (mapper != null) {
-            if (marshaller.getClass().getName().contains(".internal.")) {
-                marshaller.setProperty("com.sun.xml.internal.bind.namespacePrefixMapper",
-                                       mapper);
-            } else if (marshaller.getClass().getName().contains("com.sun")) {
-                marshaller.setProperty("com.sun.xml.bind.namespacePrefixMapper",
-                                       mapper);
-            } else if (marshaller.getClass().getName().contains("eclipse")) {
-                marshaller.setProperty("eclipselink.namespace-prefix-mapper",
-                                       mapper);
-            }
-        }
-        return mapper;
-    }
-    public static BridgeWrapper createBridge(Set<Class<?>> ctxClasses,
-                                      QName qname,
-                                      Class<?> refcls,
-                                      Annotation[] anns) throws JAXBException {
-        try {
-            Class<?> cls;
-            Class<?> refClass;
-            String pkg = "com.sun.xml.bind.";
-            try {
-                cls = Class.forName("com.sun.xml.bind.api.JAXBRIContext");
-                refClass = Class.forName(pkg + "api.TypeReference");
-            } catch (ClassNotFoundException e) {
-                cls = Class.forName("com.sun.xml.internal.bind.api.JAXBRIContext", true, getXJCClassLoader());
-                pkg = "com.sun.xml.internal.bind.";
-                refClass = Class.forName(pkg + "api.TypeReference", true, getXJCClassLoader());
-            }
-            Object ref = refClass.getConstructor(QName.class,
-                                                 Type.class,
-                                                 anns.getClass()).newInstance(qname, refcls, anns);
-            List<Object> typeRefs = new ArrayList<>();
-            typeRefs.add(ref);
-            List<Class<?>> clses = new ArrayList<>(ctxClasses);
-            clses.add(refClass.getField("type").get(ref).getClass());
-            if (!refcls.isInterface()) {
-                clses.add(refcls);
-            }
-
-            Object ctx = null;
-            for (Method m : cls.getDeclaredMethods()) {
-                if ("newInstance".equals(m.getName())
-                    && m.getParameterTypes().length == 6) {
-                    ctx = m.invoke(null, clses.toArray(new Class<?>[0]),
-                                         typeRefs, null, null, true, null);
-
-                }
-            }
-
-            if (ctx == null) {
-                throw new JAXBException("No ctx found");
-            }
-
-            Object bridge = ctx.getClass().getMethod("createBridge", refClass).invoke(ctx, ref);
-            return ReflectionInvokationHandler.createProxyWrapper(bridge,
-                                                                  BridgeWrapper.class);
-        } catch (Exception ex) {
-            throw new JAXBException(ex);
-        }
-    }
-    public interface BridgeWrapper {
-
-        Object unmarshal(XMLStreamReader source, AttachmentUnmarshaller am) throws JAXBException;
-
-        Object unmarshal(InputStream source) throws JAXBException;
-
-        Object unmarshal(Node source, AttachmentUnmarshaller am) throws JAXBException;
-
-        void marshal(Object elValue, XMLStreamWriter source, AttachmentMarshaller m) throws JAXBException;
-
-        void marshal(Object elValue, StreamResult s1) throws JAXBException;
-
-        void marshal(Object elValue, Node source, AttachmentMarshaller am) throws JAXBException;
-    }
-
-
-    public static SchemaCompiler createSchemaCompiler() throws JAXBException {
-        try {
-            Class<?> cls;
-            Object sc;
-            try {
-                cls = Class.forName("com.sun.tools.xjc.api.XJC");
-                sc = cls.getMethod("createSchemaCompiler").invoke(null);
-            } catch (Throwable e) {
-                cls = Class.forName("com.sun.tools.internal.xjc.api.XJC", true, getXJCClassLoader());
-                sc = cls.getMethod("createSchemaCompiler").invoke(null);
-            }
-
-            return ReflectionInvokationHandler.createProxyWrapper(sc,
-                                                                  SchemaCompiler.class);
-        } catch (Exception ex) {
-            throw new JAXBException(ex);
-        }
-    }
-
-    public static SchemaCompiler createSchemaCompilerWithDefaultAllocator(Set<String> allocatorSet) {
-
-        try {
-            SchemaCompiler compiler = JAXBUtils.createSchemaCompiler();
-            Object allocator = ReflectionInvokationHandler
-                .createProxyWrapper(new DefaultClassNameAllocator(allocatorSet),
-                                JAXBUtils.getParamClass(compiler, "setClassNameAllocator"));
-
-            compiler.setClassNameAllocator(allocator);
-            return compiler;
-        } catch (JAXBException e1) {
-            throw new IllegalStateException("Unable to create schema compiler", e1);
-        }
-
-    }
-
-    public static void logGeneratedClassNames(Logger logger, JCodeModel codeModel) {
-        if (!logger.isLoggable(Level.FINE)) {
-            return;
-        }
-
-        StringBuilder sb = new StringBuilder();
-        boolean first = true;
-        for (Iterator<JPackage> itr = codeModel.packages(); itr.hasNext();) {
-            JPackage package1 = itr.next();
-
-            for (Iterator<JDefinedClass> citr = package1.classes(); citr.hasNext();) {
-                if (!first) {
-                    sb.append(", ");
-                } else {
-                    first = false;
-                }
-                sb.append(citr.next().fullName());
-            }
-        }
-
-        logger.log(Level.FINE, "Created classes: " + sb.toString());
-    }
-
-    public static List<String> getGeneratedClassNames(JCodeModel codeModel) {
-        List<String> classes = new ArrayList<>();
-        for (Iterator<JPackage> itr = codeModel.packages(); itr.hasNext();) {
-            JPackage package1 = itr.next();
-
-            for (Iterator<JDefinedClass> citr = package1.classes(); citr.hasNext();) {
-                classes.add(citr.next().fullName());
-            }
-        }
-        return classes;
-    }
-    public static Object createFileCodeWriter(File f) throws JAXBException {
-        return createFileCodeWriter(f, StandardCharsets.UTF_8.name());
-    }
-    public static Object createFileCodeWriter(File f, String encoding) throws JAXBException {
-        try {
-            Class<?> cls;
-            try {
-                cls = Class.forName("com.sun.codemodel.writer.FileCodeWriter");
-            } catch (ClassNotFoundException e) {
-                cls = Class.forName("com.sun.codemodel.internal.writer.FileCodeWriter",
-                                    true, getXJCClassLoader());
-            }
-            if (encoding != null) {
-                try {
-                    return cls.getConstructor(File.class, String.class)
-                              .newInstance(f, encoding);
-                } catch (Exception ex) {
-                    // try a single argument constructor
-                }
-            }
-            return cls.getConstructor(File.class).newInstance(f);
-        } catch (Exception ex) {
-            throw new JAXBException(ex);
-        }
-    }
-
-    public static Class<?> getParamClass(SchemaCompiler sc, String method) {
-        Object o = ((ReflectionInvokationHandler)Proxy.getInvocationHandler(sc)).getTarget();
-        for (Method m : o.getClass().getMethods()) {
-            if (m.getName().equals(method) && m.getParameterTypes().length == 1) {
-                return m.getParameterTypes()[0];
-            }
-        }
-        return null;
-    }
-
-
-    public static List<DOMResult> generateJaxbSchemas(
-        JAXBContext context, final Map<String, DOMResult> builtIns) throws IOException {
-        final List<DOMResult> results = new ArrayList<>();
-
-        context.generateSchema(new SchemaOutputResolver() {
-            @Override
-            public Result createOutput(String ns, String file) throws IOException {
-                DOMResult result = new DOMResult();
-
-                if (builtIns.containsKey(ns)) {
-                    DOMResult dr = builtIns.get(ns);
-                    result.setSystemId(dr.getSystemId());
-                    results.add(dr);
-                    return result;
-                }
-                result.setSystemId(file);
-                results.add(result);
-                return result;
-            }
-        });
-        return results;
-    }
-
-    public static String getPackageNamespace(Class<?> cls) {
-        Package p = cls.getPackage();
-        if (p != null) {
-            jakarta.xml.bind.annotation.XmlSchema schemaAnn =
-                p.getAnnotation(jakarta.xml.bind.annotation.XmlSchema.class);
-            if (schemaAnn != null) {
-                return schemaAnn.namespace();
-            }
-        }
-        return null;
-    }
-
-    public static void scanPackages(Set<Class<?>> classes,
-                                    Map<Package, CachedClass> objectFactoryCache) {
-        scanPackages(classes, null, objectFactoryCache);
-    }
-    public static void scanPackages(Set<Class<?>> classes,
-                                    Class<?>[] extraClass,
-                                    Map<Package, CachedClass> objectFactoryCache) {
-
-        // add user extra class into jaxb context
-        if (extraClass != null && extraClass.length > 0) {
-            for (Class<?> clz : extraClass) {
-                classes.add(clz);
-            }
-        }
-
-        // try and read any jaxb.index files that are with the other classes.
-        // This should
-        // allow loading of extra classes (such as subclasses for inheritance
-        // reasons)
-        // that are in the same package. Also check for ObjectFactory classes
-        Map<String, InputStream> packages = new HashMap<>();
-        Map<String, ClassLoader> packageLoaders = new HashMap<>();
-        Set<Class<?>> objectFactories = new HashSet<>();
-        for (Class<?> jcls : classes) {
-            String pkgName = PackageUtils.getPackageName(jcls);
-            if (!packages.containsKey(pkgName)) {
-                Package pkg = jcls.getPackage();
-
-                packages.put(pkgName, jcls.getResourceAsStream("jaxb.index"));
-                packageLoaders.put(pkgName, getClassLoader(jcls));
-                String objectFactoryClassName = pkgName + "." + "ObjectFactory";
-                Class<?> ofactory = null;
-                CachedClass cachedFactory = null;
-                if (pkg != null && objectFactoryCache != null) {
-                    synchronized (objectFactoryCache) {
-                        cachedFactory = objectFactoryCache.get(pkg);
-                    }
-                }
-                if (cachedFactory != null) {
-                    ofactory = cachedFactory.getCachedClass();
-                }
-                if (ofactory == null) {
-                    try {
-                        ofactory = Class.forName(objectFactoryClassName, false, getClassLoader(jcls));
-                        objectFactories.add(ofactory);
-                        addToObjectFactoryCache(pkg, ofactory, objectFactoryCache);
-                    } catch (ClassNotFoundException e) {
-                        addToObjectFactoryCache(pkg, null, objectFactoryCache);
-                    }
-                } else {
-                    objectFactories.add(ofactory);
-                }
-            }
-        }
-        for (Map.Entry<String, InputStream> entry : packages.entrySet()) {
-            if (entry.getValue() != null) {
-                try (BufferedReader reader = new BufferedReader(
-                        new InputStreamReader(entry.getValue(), StandardCharsets.UTF_8))) {
-                    String pkg = entry.getKey();
-                    ClassLoader loader = packageLoaders.get(pkg);
-                    if (!StringUtils.isEmpty(pkg)) {
-                        pkg += ".";
-                    }
-
-                    String line = reader.readLine();
-                    while (line != null) {
-                        line = line.trim();
-                        if (line.indexOf('#') != -1) {
-                            line = line.substring(0, line.indexOf('#'));
-                        }
-                        if (!StringUtils.isEmpty(line)) {
-                            try {
-                                Class<?> ncls = Class.forName(pkg + line, false, loader);
-                                classes.add(ncls);
-                            } catch (Exception e) {
-                                // ignore
-                            }
-                        }
-                        line = reader.readLine();
-                    }
-                } catch (IOException e) {
-                    // ignore
-                } finally {
-                    try {
-                        entry.getValue().close();
-                    } catch (IOException e) {
-                        // ignore
-                    }
-                }
-            }
-        }
-        classes.addAll(objectFactories);
-    }
-
-    private static ClassLoader getClassLoader(final Class<?> clazz) {
-        final SecurityManager sm = System.getSecurityManager();
-        if (sm != null) {
-            return AccessController.doPrivileged(new PrivilegedAction<ClassLoader>() {
-                @Override
-                public ClassLoader run() {
-                    return clazz.getClassLoader();
-                }
-            });
-        }
-        return clazz.getClassLoader();
-    }
-       
-    private static void addToObjectFactoryCache(Package objectFactoryPkg, 
-                                         Class<?> ofactory,
-                                         Map<Package, CachedClass> objectFactoryCache) {
-        if (objectFactoryPkg == null || objectFactoryCache == null) {
-            return;
-        }
-        synchronized (objectFactoryCache) {
-            objectFactoryCache.put(objectFactoryPkg,
-                                     new CachedClass(ofactory));
-        }
-    }
-
-    public static class DefaultClassNameAllocator {
-        private final Set<String> typesClassNames;
-
-        public DefaultClassNameAllocator() {
-            this(new HashSet<>());
-        }
-
-        public DefaultClassNameAllocator(Set<String> set) {
-            typesClassNames = set;
-        }
-
-        public String assignClassName(String packageName, String className) {
-            String fullClassName = className;
-            String fullPckClass = packageName + "." + fullClassName;
-            int cnt = 0;
-            while (typesClassNames.contains(fullPckClass)) {
-                cnt++;
-                fullClassName = className + cnt;
-                fullPckClass = packageName + "." + fullClassName;
-            }
-            typesClassNames.add(fullPckClass);
-            return fullClassName;
-        }
-
-    }
-
-    public interface SchemaCompiler {
-        void setEntityResolver(EntityResolver entityResolver);
-
-        void setErrorListener(Object elForRun);
-
-        void setClassNameAllocator(Object allocator);
-
-        @WrapReturn(S2JJAXBModel.class)
-        S2JJAXBModel bind();
-
-        void parseSchema(InputSource source);
-
-        void parseSchema(String key, Element el);
-        void parseSchema(String key, XMLStreamReader el);
-
-        @WrapReturn(Options.class)
-        Options getOptions();
-    }
-    public interface S2JJAXBModel {
-
-        @WrapReturn(JCodeModel.class)
-        JCodeModel generateCode(Object object, Object elForRun);
-
-        @WrapReturn(Mapping.class)
-        Mapping get(QName qn);
-
-        @WrapReturn(TypeAndAnnotation.class)
-        TypeAndAnnotation getJavaType(QName typeQName);
-    }
-    public interface Mapping {
-        @WrapReturn(TypeAndAnnotation.class)
-        TypeAndAnnotation getType();
-    }
-    public interface TypeAndAnnotation {
-        @WrapReturn(JType.class)
-        JType getTypeClass();
-    }
-    public interface JType {
-        boolean isArray();
-
-        @WrapReturn(JType.class)
-        JType elementType();
-
-        boolean isPrimitive();
-
-        String binaryName();
-
-        String fullName();
-
-        String name();
-
-        @WrapReturn(value = JType.class, iterator = true)
-        Iterator<JType> classes();
-    }
-    public interface Options {
-
-        void addGrammar(InputSource is);
-
-        void addBindFile(InputSource is);
-
-        void parseArguments(String[] args);
-
-        String getBuildID();
-    }
-    public interface JCodeModel {
-
-        void build(Object writer) throws IOException;
-
-        @WrapReturn(value = JPackage.class, iterator = true)
-        Iterator<JPackage> packages();
-    }
-    public interface JPackage {
-
-        String name();
-
-        @WrapReturn(value = JDefinedClass.class, iterator = true)
-        Iterator<JDefinedClass> classes();
-    }
-    public interface JDefinedClass {
-        String name();
-
-        String fullName();
-    }
-
-    public static boolean isJAXB22() {
-        Target t = XmlElement.class.getAnnotation(Target.class);
-        //JAXB 2.2 allows XmlElement on params.
-        for (ElementType et : t.value()) {
-            if (et == ElementType.PARAMETER) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    public static JAXBContextProxy createJAXBContextProxy(final JAXBContext ctx) {
-        return createJAXBContextProxy(ctx, null, null);
-    }
-    public static JAXBContextProxy createJAXBContextProxy(final JAXBContext ctx,
-                                                          final SchemaCollection collection,
-                                                          final String defaultNs) {
-        if (ctx.getClass().getName().contains("com.sun.")
-            || collection == null) {
-            return ReflectionInvokationHandler.createProxyWrapper(ctx, JAXBContextProxy.class);
-        }
-        return new SchemaCollectionContextProxy(ctx, collection, defaultNs);
-    }
-    public static JAXBBeanInfo getBeanInfo(JAXBContextProxy context, Class<?> cls) {
-        Object o = context.getBeanInfo(cls);
-        if (o == null) {
-            return null;
-        }
-        if (o instanceof JAXBBeanInfo) {
-            return (JAXBBeanInfo)o;
-        }
-        return ReflectionInvokationHandler.createProxyWrapper(o, JAXBBeanInfo.class);
-    }
-
-    private static String getPostfix(Class<?> cls) {
-        String className = cls.getName();
-        if (className.contains("com.sun.xml.internal")
-            || className.contains("eclipse")) {
-            //eclipse moxy accepts sun package CharacterEscapeHandler 
-            return ".internal";
-        } else if (className.contains("com.sun.xml.bind")
-            || className.startsWith("com.ibm.xml")) {
-            return "";
-        }
-        return null;
-    }
-
-    public static void setMinimumEscapeHandler(Marshaller marshaller) {
-        if (jaxbMinimumEscapeHandler == null) {
-            jaxbMinimumEscapeHandler = Optional.ofNullable(createMininumEscapeHandler(marshaller.getClass()));
-        }
-        jaxbMinimumEscapeHandler.ifPresent(p -> setEscapeHandler(marshaller, p));
-    }
-
-    public static void setNoEscapeHandler(final Marshaller marshaller) {
-        if (jaxbNoEscapeHandler == null) {
-            jaxbNoEscapeHandler = Optional.ofNullable(createNoEscapeHandler(marshaller.getClass()));
-        }
-        jaxbNoEscapeHandler.ifPresent(p -> setEscapeHandler(marshaller, p));
-    }
-    
-    public static void setEscapeHandler(Marshaller marshaller, Object escapeHandler) {
-        try {
-            String postFix = getPostfix(marshaller.getClass());
-            if (postFix != null && escapeHandler != null) {
-                marshaller.setProperty("com.sun.xml" + postFix + ".bind.characterEscapeHandler", escapeHandler);
-            }
-        } catch (PropertyException e) {
-            LOG.log(Level.INFO, "Failed to set MinumEscapeHandler to jaxb marshaller", e);
-        }
-    }
-    
-    public static Object createMininumEscapeHandler(Class<?> cls) {
-        return createEscapeHandler(cls, "MinimumEscapeHandler");
-    }
-    
-    public static Object createNoEscapeHandler(Class<?> cls) {
-        return createEscapeHandler(cls, "NoEscapeHandler");
-    }
-    
-    private static Object createEscapeHandler(Class<?> cls, String simpleClassName) {
-        try {
-            String postFix = getPostfix(cls);
-            if (postFix == null) {
-                LOG.log(Level.WARNING, "Failed to create" + simpleClassName + " for unknown jaxb class:"
-                    + cls);
-                return null;
-            }
-            Class<?> handlerClass = ClassLoaderUtils.loadClass("com.sun.xml" + postFix
-                                                                   + ".bind.marshaller." + simpleClassName,
-                                                               cls);
-            Class<?> handlerInterface = ClassLoaderUtils
-                .loadClass("com.sun.xml" + postFix + ".bind.marshaller.CharacterEscapeHandler",
-                           cls);
-            Object targetHandler = ReflectionUtil.getDeclaredField(handlerClass, "theInstance").get(null);
-            return ProxyHelper.getProxy(cls.getClassLoader(),
-                                        new Class[] {handlerInterface},
-                                        new EscapeHandlerInvocationHandler(targetHandler));
-        } catch (Exception e) {
-            if ("NoEscapeHandler".equals(simpleClassName)) {
-                //this class doesn't exist in JAXB 2.2 so expected
-                LOG.log(Level.FINER, "Failed to create " + simpleClassName);
-            } else {
-                LOG.log(Level.INFO, "Failed to create " + simpleClassName);
-            }
-        }
-        return null;
-    }
-    
-
-}
diff --git a/deps/cxf-shade/src/patch/java/org/apache/cxf/helpers/IOUtils.java b/deps/cxf-shade/src/patch/java/org/apache/cxf/helpers/IOUtils.java
deleted file mode 100644
index 74af28d838..0000000000
--- a/deps/cxf-shade/src/patch/java/org/apache/cxf/helpers/IOUtils.java
+++ /dev/null
@@ -1,428 +0,0 @@
-/**
- * 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.helpers;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.io.PushbackInputStream;
-import java.io.Reader;
-import java.io.UnsupportedEncodingException;
-import java.io.Writer;
-import java.nio.charset.Charset;
-import java.nio.file.Files;
-
-import org.apache.cxf.io.CopyingOutputStream;
-import org.apache.cxf.io.Transferable;
-
-public final class IOUtils {
-    public static final Charset UTF8_CHARSET = java.nio.charset.StandardCharsets.UTF_8;
-    public static final int DEFAULT_BUFFER_SIZE = 1024 * 4;
-
-    private IOUtils() {
-
-    }
-    
-    /**
-     * Checks if input stream is empty. If the standard InputStream means do not provide
-     * such details, the stream might be wrapped into PushbackInputStream and is going
-     * to be returned instead of original one.
-     * @param is input stream to check
-     * @return "null" if original input stream is empty, otherwise original stream or 
-     * original stream wrapped into PushbackInputStream.
-     * @throws IOException
-     */
-    public static InputStream nullOrNotEmptyStream(InputStream is) throws IOException {
-        if (isEmpty(is)) {
-            return null;
-        } else if (!(is instanceof PushbackInputStream)) {
-            final byte[] bytes = new byte[1];
-            
-            final PushbackInputStream pbStream = new PushbackInputStream(is);
-            boolean isEmpty = isEof(pbStream.read(bytes));
-            
-            if (!isEmpty) {
-                pbStream.unread(bytes);
-                return pbStream;
-            }
-            
-            return null;
-        }
-        
-        return is;
-    }
-
-    public static boolean isEmpty(InputStream is) throws IOException {
-        if (is == null) {
-            return true;
-        }
-        try {
-            // if available is 0 it does not mean it is empty
-            if (is.available() > 0) {
-                return false;
-            }
-        } catch (IOException ioe) {
-            //Do nothing
-        }
-        final byte[] bytes = new byte[1];
-        if (is.markSupported()) {
-            is.mark(1);
-            try {
-                return isEof(is.read(bytes));
-            } finally {
-                is.reset();
-            }
-        }
-        
-        if (!(is instanceof PushbackInputStream)) {
-            return false;
-        }
-        
-        // it may be an attachment stream
-        PushbackInputStream pbStream = (PushbackInputStream)is;
-        boolean isEmpty = isEof(pbStream.read(bytes));
-        if (!isEmpty) {
-            pbStream.unread(bytes);
-        }
-        
-        return isEmpty;
-    }
-    private static boolean isEof(int result) {
-        return result == -1;
-    }
-    /**
-     * Use this function instead of new String(byte[], String) to avoid surprises from
-     * non-standard default encodings.
-     * @param bytes
-     * @param charsetName
-     */
-    public static String newStringFromBytes(byte[] bytes, String charsetName) {
-        try {
-            return new String(bytes, charsetName);
-        } catch (UnsupportedEncodingException e) {
-            throw
-                new RuntimeException("Impossible failure: Charset.forName(\""
-                                     + charsetName + "\") returns invalid name.");
-
-        }
-    }
-
-
-    /**
-     * Use this function instead of new String(byte[]) to avoid surprises from non-standard default encodings.
-     * @param bytes
-     */
-    public static String newStringFromBytes(byte[] bytes) {
-        return newStringFromBytes(bytes, UTF8_CHARSET.name());
-    }
-
-    /**
-     * Use this function instead of new String(byte[], int, int, String)
-     * to avoid surprises from non-standard default encodings.
-     * @param bytes
-     * @param charsetName
-     * @param start
-     * @param length
-     */
-    public static String newStringFromBytes(byte[] bytes, String charsetName, int start, int length) {
-        try {
-            return new String(bytes, start, length, charsetName);
-        } catch (UnsupportedEncodingException e) {
-            throw
-                new RuntimeException("Impossible failure: Charset.forName(\""
-                                     + charsetName + "\") returns invalid name.");
-
-        }
-    }
-
-    /**
-     * Use this function instead of new String(byte[], int, int)
-     * to avoid surprises from non-standard default encodings.
-     * @param bytes
-     * @param start
-     * @param length
-     */
-    public static String newStringFromBytes(byte[] bytes, int start, int length) {
-        return newStringFromBytes(bytes, UTF8_CHARSET.name(), start, length);
-    }
-
-    public static int copy(final InputStream input, final OutputStream output)
-        throws IOException {
-        if (input == null) {
-            return 0;
-        }
-        if (output instanceof CopyingOutputStream) {
-            return ((CopyingOutputStream)output).copyFrom(input);
-        }
-        return copy(input, output, DEFAULT_BUFFER_SIZE);
-    }
-
-    public static int copyAndCloseInput(final InputStream input,
-            final OutputStream output) throws IOException {
-        try (InputStream in = input) {
-            return copy(in, output);
-        }
-    }
-
-    public static int copyAndCloseInput(final InputStream input,
-            final OutputStream output, int bufferSize) throws IOException {
-        try (InputStream in = input) {
-            return copy(in, output, bufferSize);
-        }
-    }
-
-    public static void copyAndCloseInput(final Reader input,
-                                        final Writer output) throws IOException {
-        try (Reader r = input) {
-            copy(r, output, DEFAULT_BUFFER_SIZE);
-        }
-    }
-
-    public static void copyAndCloseInput(final Reader input,
-            final Writer output, int bufferSize) throws IOException {
-        try (Reader r = input) {
-            copy(r, output, bufferSize);
-        }
-    }
-
-    public static int copy(final InputStream input, final OutputStream output,
-            int bufferSize) throws IOException {
-        int avail = input.available();
-        if (avail > 262144) {
-            avail = 262144;
-        }
-        if (avail > bufferSize) {
-            bufferSize = avail;
-        }
-        final byte[] buffer = new byte[bufferSize];
-        int n = input.read(buffer);
-        int total = 0;
-        while (-1 != n) {
-            if (n == 0) {
-                throw new IOException("0 bytes read in violation of InputStream.read(byte[])");
-            }
-            output.write(buffer, 0, n);
-            total += n;
-            n = input.read(buffer);
-        }
-        return total;
-    }
-
-    /**
-     * Copy at least the specified number of bytes from the input to the output
-     * or until the inputstream is finished.
-     * @param input
-     * @param output
-     * @param atLeast
-     * @throws IOException
-     */
-    public static void copyAtLeast(final InputStream input,
-                               final OutputStream output,
-                               int atLeast) throws IOException {
-        final byte[] buffer = new byte[4096];
-        int n = atLeast > buffer.length ? buffer.length : atLeast;
-        n = input.read(buffer, 0, n);
-        while (-1 != n) {
-            if (n == 0) {
-                throw new IOException("0 bytes read in violation of InputStream.read(byte[])");
-            }
-            output.write(buffer, 0, n);
-            atLeast -= n;
-            if (atLeast <= 0) {
-                return;
-            }
-            n = atLeast > buffer.length ? buffer.length : atLeast;
-            n = input.read(buffer, 0, n);
-        }
-    }
-
-    public static void copyAtLeast(final Reader input,
-                                   final Writer output,
-                                   int atLeast) throws IOException {
-        final char[] buffer = new char[4096];
-        int n = atLeast > buffer.length ? buffer.length : atLeast;
-        n = input.read(buffer, 0, n);
-        while (-1 != n) {
-            if (n == 0) {
-                throw new IOException("0 bytes read in violation of Reader.read(char[])");
-            }
-            output.write(buffer, 0, n);
-            atLeast -= n;
-            if (atLeast <= 0) {
-                return;
-            }
-            n = atLeast > buffer.length ? buffer.length : atLeast;
-            n = input.read(buffer, 0, n);
-        }
-    }
-
-
-    public static void copy(final Reader input, final Writer output,
-            final int bufferSize) throws IOException {
-        final char[] buffer = new char[bufferSize];
-        int n = input.read(buffer);
-        while (-1 != n) {
-            output.write(buffer, 0, n);
-            n = input.read(buffer);
-        }
-    }
-
-    public static void transferTo(InputStream inputStream, File destinationFile) throws IOException {
-        if (Transferable.class.isAssignableFrom(inputStream.getClass())) {
-            ((Transferable)inputStream).transferTo(destinationFile);
-        } else {
-            try (OutputStream out = Files.newOutputStream(destinationFile.toPath())) {
-                copyAndCloseInput(inputStream, out);
-            }
-        }
-    }
-
-
-    public static String toString(final InputStream input) throws IOException {
-        return toString(input, DEFAULT_BUFFER_SIZE);
-    }
-    public static String toString(final InputStream input, String charset) throws IOException {
-        return toString(input, DEFAULT_BUFFER_SIZE, charset);
-    }
-    public static String toString(final InputStream input, int bufferSize)
-        throws IOException {
-        return toString(input, bufferSize, null);
-    }
-    public static String toString(final InputStream input, int bufferSize, String charset)
-        throws IOException {
-
-
-        int avail = input.available();
-        if (avail > bufferSize) {
-            bufferSize = avail;
-        }
-        Reader reader = charset == null ? new InputStreamReader(input, UTF8_CHARSET)
-            : new InputStreamReader(input, charset);
-        return toString(reader, bufferSize);
-    }
-
-    public static String toString(final Reader input) throws IOException {
-        return toString(input, DEFAULT_BUFFER_SIZE);
-    }
-    public static String toString(final Reader input, int bufSize) throws IOException {
-
-        StringBuilder buf = new StringBuilder();
-        final char[] buffer = new char[bufSize];
-        try (Reader r = input) {
-            int n = r.read(buffer);
-            while (-1 != n) {
-                if (n == 0) {
-                    throw new IOException("0 bytes read in violation of InputStream.read(byte[])");
-                }
-                buf.append(buffer, 0, n);
-                n = r.read(buffer);
-            }
-            return buf.toString();
-        }
-    }
-
-    public static String readStringFromStream(InputStream in)
-        throws IOException {
-        return toString(in);
-    }
-
-    /**
-     * Load the InputStream into memory and return a ByteArrayInputStream that
-     * represents it. Closes the in stream.
-     *
-     * @param in
-     * @throws IOException
-     */
-    public static ByteArrayInputStream loadIntoBAIS(InputStream in)
-        throws IOException {
-        int i = in.available();
-        if (i < DEFAULT_BUFFER_SIZE) {
-            i = DEFAULT_BUFFER_SIZE;
-        }
-        LoadingByteArrayOutputStream bout = new LoadingByteArrayOutputStream(i);
-        copy(in, bout);
-        in.close();
-        return bout.createInputStream();
-    }
-
-    public static void consume(InputStream in) throws IOException {
-        int i = in.available();
-        if (i == 0) {
-            //if i is 0, then we MAY have already hit the end of the stream
-            //so try a read and return rather than allocate a buffer and such
-            int i2 = in.read();
-            if (i2 == -1) {
-                return;
-            }
-            //reading the byte may have caused a buffer to fill
-            i = in.available();
-        }
-        if (i < DEFAULT_BUFFER_SIZE) {
-            i = DEFAULT_BUFFER_SIZE;
-        }
-        if (i > 65536) {
-            i = 65536;
-        }
-        byte[] bytes = new byte[i];
-        while (in.read(bytes) != -1) {
-            //nothing - just discarding
-        }
-    }
-
-    /**
-     * Consumes at least the given number of bytes from the input stream
-     * @param input
-     * @param atLeast
-     * @throws IOException
-     */
-    public static void consume(final InputStream input,
-                               int atLeast) throws IOException {
-        final byte[] buffer = new byte[4096];
-        int n = atLeast > buffer.length ? buffer.length : atLeast;
-        n = input.read(buffer, 0, n);
-        while (-1 != n) {
-            if (n == 0) {
-                throw new IOException("0 bytes read in violation of InputStream.read(byte[])");
-            }
-            atLeast -= n;
-            if (atLeast <= 0) {
-                return;
-            }
-            n = atLeast > buffer.length ? buffer.length : atLeast;
-            n = input.read(buffer, 0, n);
-        }
-    }
-
-    public static byte[] readBytesFromStream(InputStream in) throws IOException {
-        int i = in.available();
-        if (i < DEFAULT_BUFFER_SIZE) {
-            i = DEFAULT_BUFFER_SIZE;
-        }
-        try (InputStream input = in; ByteArrayOutputStream bos = new ByteArrayOutputStream(i)) {
-            copy(input, bos);
-            return bos.toByteArray();
-        }
-    }
-
-}
diff --git a/deps/cxf-shade/src/patch/java/org/apache/cxf/interceptor/AbstractFaultChainInitiatorObserver.java b/deps/cxf-shade/src/patch/java/org/apache/cxf/interceptor/AbstractFaultChainInitiatorObserver.java
deleted file mode 100644
index 58c591b627..0000000000
--- a/deps/cxf-shade/src/patch/java/org/apache/cxf/interceptor/AbstractFaultChainInitiatorObserver.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/**
- * 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.interceptor;
-
-import java.util.SortedSet;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import org.apache.cxf.Bus;
-import org.apache.cxf.BusFactory;
-import org.apache.cxf.common.classloader.ClassLoaderUtils;
-import org.apache.cxf.common.classloader.ClassLoaderUtils.ClassLoaderHolder;
-import org.apache.cxf.common.logging.LogUtils;
-import org.apache.cxf.message.Exchange;
-import org.apache.cxf.message.FaultMode;
-import org.apache.cxf.message.Message;
-import org.apache.cxf.message.MessageImpl;
-import org.apache.cxf.phase.Phase;
-import org.apache.cxf.phase.PhaseInterceptorChain;
-import org.apache.cxf.service.model.BindingFaultInfo;
-import org.apache.cxf.transport.MessageObserver;
-
-public abstract class AbstractFaultChainInitiatorObserver implements MessageObserver {
-
-    private static final Logger LOG = LogUtils.getL7dLogger(AbstractFaultChainInitiatorObserver.class);
-
-    private Bus bus;
-    private ClassLoader loader;
-
-    public AbstractFaultChainInitiatorObserver(Bus bus) {
-        this.bus = bus;
-        if (bus != null) {
-            loader = bus.getExtension(ClassLoader.class);
-        }
-    }
-
-    public void onMessage(Message message) {
-
-        assert null != message;
-
-        Bus origBus = BusFactory.getAndSetThreadDefaultBus(bus);
-        ClassLoaderHolder origLoader = null;
-        try {
-            if (loader != null) {
-                origLoader = ClassLoaderUtils.setThreadContextClassloader(loader);
-            }
-
-            Exchange exchange = message.getExchange();
-
-            Message faultMessage;
-
-            // now that we have switched over to the fault chain,
-            // prevent any further operations on the in/out message
-
-            if (isOutboundObserver()) {
-                Exception ex = message.getContent(Exception.class);
-                if (!(ex instanceof Fault)) {
-                    ex = new Fault(ex);
-                }
-                FaultMode mode = message.get(FaultMode.class);
-
-                faultMessage = exchange.getOutMessage();
-                if (null == faultMessage) {
-                    faultMessage = new MessageImpl();
-                    faultMessage.setExchange(exchange);
-                    faultMessage = exchange.getEndpoint().getBinding().createMessage(faultMessage);
-                }
-                faultMessage.setContent(Exception.class, ex);
-                if (null != mode) {
-                    faultMessage.put(FaultMode.class, mode);
-                }
-                //CXF-3981
-                if (message.get("jakarta.xml.ws.addressing.context.inbound") != null) {
-                    faultMessage.put("jakarta.xml.ws.addressing.context.inbound",
-                                     message.get("jakarta.xml.ws.addressing.context.inbound"));
-                }
-                exchange.setOutMessage(null);
-                exchange.setOutFaultMessage(faultMessage);
-                if (message.get(BindingFaultInfo.class) != null) {
-                    faultMessage.put(BindingFaultInfo.class, message.get(BindingFaultInfo.class));
-                }
-            } else {
-                faultMessage = message;
-                exchange.setInMessage(null);
-                exchange.setInFaultMessage(faultMessage);
-            }
-
-
-            // setup chain
-            PhaseInterceptorChain chain = new PhaseInterceptorChain(getPhases());
-            initializeInterceptors(faultMessage.getExchange(), chain);
-
-            faultMessage.setInterceptorChain(chain);
-            try {
-                chain.doIntercept(faultMessage);
-            } catch (RuntimeException exc) {
-                LOG.log(Level.SEVERE, "ERROR_DURING_ERROR_PROCESSING", exc);
-                throw exc;
-            } catch (Exception exc) {
-                LOG.log(Level.SEVERE, "ERROR_DURING_ERROR_PROCESSING", exc);
-                throw new RuntimeException(exc);
-            }
-        } finally {
-            if (origBus != bus) {
-                BusFactory.setThreadDefaultBus(origBus);
-            }
-            if (origLoader != null) {
-                origLoader.reset();
-            }
-        }
-    }
-
-    protected abstract boolean isOutboundObserver();
-
-    protected abstract SortedSet<Phase> getPhases();
-
-    protected void initializeInterceptors(Exchange ex, PhaseInterceptorChain chain) {
-
-    }
-
-    public Bus getBus() {
-        return bus;
-    }
-
-}
diff --git a/deps/cxf-shade/src/patch/java/org/apache/cxf/jaxb/JAXBContextInitializer.java b/deps/cxf-shade/src/patch/java/org/apache/cxf/jaxb/JAXBContextInitializer.java
deleted file mode 100644
index 0c8a161f14..0000000000
--- a/deps/cxf-shade/src/patch/java/org/apache/cxf/jaxb/JAXBContextInitializer.java
+++ /dev/null
@@ -1,569 +0,0 @@
-/**
- * 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.jaxb;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Array;
-import java.lang.reflect.Field;
-import java.lang.reflect.GenericArrayType;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
-import java.lang.reflect.TypeVariable;
-import java.lang.reflect.WildcardType;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import jakarta.xml.bind.annotation.XmlAccessType;
-import jakarta.xml.bind.annotation.XmlAttribute;
-import jakarta.xml.bind.annotation.XmlElement;
-import jakarta.xml.bind.annotation.XmlRootElement;
-import jakarta.xml.bind.annotation.XmlSeeAlso;
-import jakarta.xml.bind.annotation.XmlTransient;
-import jakarta.xml.bind.annotation.XmlType;
-import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
-import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapters;
-import javax.xml.namespace.QName;
-
-import org.apache.cxf.Bus;
-import org.apache.cxf.common.classloader.ClassLoaderUtils;
-import org.apache.cxf.common.jaxb.JAXBUtils;
-import org.apache.cxf.common.logging.LogUtils;
-import org.apache.cxf.common.util.ReflectionUtil;
-import org.apache.cxf.common.util.StringUtils;
-import org.apache.cxf.service.ServiceModelVisitor;
-import org.apache.cxf.service.model.MessageInfo;
-import org.apache.cxf.service.model.MessagePartInfo;
-import org.apache.cxf.service.model.OperationInfo;
-import org.apache.cxf.service.model.ServiceInfo;
-import org.apache.cxf.service.model.UnwrappedOperationInfo;
-
-/**
- * Walks the service model and sets up the classes for the context.
- */
-class JAXBContextInitializer extends ServiceModelVisitor {
-    private static final Logger LOG = LogUtils.getL7dLogger(JAXBContextInitializer.class);
-    private Set<Class<?>> classes;
-    private Collection<Object> typeReferences;
-    private Set<Class<?>> globalAdapters = new HashSet<>();
-    private Map<String, Object> unmarshallerProperties;
-    private Bus bus;
-
-    JAXBContextInitializer(Bus bus, ServiceInfo serviceInfo,
-                           Set<Class<?>> classes,
-                           Collection<Object> typeReferences,
-                           Map<String, Object> unmarshallerProperties) {
-        super(serviceInfo);
-        this.classes = classes;
-        this.typeReferences = typeReferences;
-        this.unmarshallerProperties = unmarshallerProperties;
-        this.bus = bus;
-    }
-
-    @Override
-    public void begin(MessagePartInfo part) {
-        Class<?> clazz = part.getTypeClass();
-        if (clazz == null) {
-            return;
-        }
-
-        if (Exception.class.isAssignableFrom(clazz)) {
-            //exceptions are handled special, make sure we mark it
-            part.setProperty(JAXBDataBinding.class.getName() + ".CUSTOM_EXCEPTION",
-                             Boolean.TRUE);
-        }
-        boolean isFromWrapper = part.getMessageInfo().getOperation().isUnwrapped();
-        if (isFromWrapper
-            && !Boolean.TRUE.equals(part.getProperty("messagepart.isheader"))) {
-            UnwrappedOperationInfo uop = (UnwrappedOperationInfo)part.getMessageInfo().getOperation();
-            OperationInfo op = uop.getWrappedOperation();
-            MessageInfo inf = null;
-            if (uop.getInput() == part.getMessageInfo()) {
-                inf = op.getInput();
-            } else if (uop.getOutput() == part.getMessageInfo()) {
-                inf = op.getOutput();
-            }
-            if (inf != null
-                && inf.getFirstMessagePart().getTypeClass() != null) {
-                //if the wrapper has a type class, we don't need to do anything
-                //as everything would have been discovered when walking the
-                //wrapper type (unless it's a header which wouldn't be in the wrapper)
-                return;
-            }
-        }
-        if (isFromWrapper
-            && clazz.isArray()
-            && !Byte.TYPE.equals(clazz.getComponentType())) {
-            clazz = clazz.getComponentType();
-        }
-
-        Annotation[] a = (Annotation[])part.getProperty("parameter.annotations");
-        checkForAdapter(clazz, a);
-
-        Type genericType = (Type) part.getProperty("generic.type");
-        if (genericType != null) {
-            boolean isList = Collection.class.isAssignableFrom(clazz);
-            if (isFromWrapper) {
-                if (genericType instanceof Class
-                    && ((Class<?>)genericType).isArray()) {
-                    Class<?> cl2 = (Class<?>)genericType;
-                    if (cl2.isArray()
-                        && !Byte.TYPE.equals(cl2.getComponentType())) {
-                        genericType = cl2.getComponentType();
-                    }
-                    addType(genericType);
-                } else if (!isList) {
-                    addType(genericType);
-                }
-            } else {
-                addType(genericType, true);
-            }
-
-            if (isList
-                && genericType instanceof ParameterizedType) {
-                ParameterizedType pt = (ParameterizedType) genericType;
-                if (pt.getActualTypeArguments().length > 0
-                    && pt.getActualTypeArguments()[0] instanceof Class) {
-
-                    Class<? extends Object> arrayCls =
-                        Array.newInstance((Class<?>) pt.getActualTypeArguments()[0], 0).getClass();
-                    clazz = arrayCls;
-                    part.setTypeClass(clazz);
-                    if (isFromWrapper) {
-                        addType(clazz.getComponentType(), true);
-                    }
-                } else if (pt.getActualTypeArguments().length > 0
-                    && pt.getActualTypeArguments()[0] instanceof GenericArrayType) {
-                    GenericArrayType gat = (GenericArrayType)pt.getActualTypeArguments()[0];
-                    gat.getGenericComponentType();
-                    Class<? extends Object> arrayCls =
-                        Array.newInstance((Class<?>) gat.getGenericComponentType(), 0).getClass();
-                    clazz = Array.newInstance(arrayCls, 0).getClass();
-                    part.setTypeClass(clazz);
-                    if (isFromWrapper) {
-                        addType(clazz.getComponentType(), true);
-                    }
-                }
-            }
-            if (isFromWrapper && isList) {
-                clazz = null;
-            }
-        }
-        if (clazz != null) {
-            if (!isFromWrapper
-                && clazz.getAnnotation(XmlRootElement.class) == null
-                && clazz.getAnnotation(XmlType.class) != null
-                && StringUtils.isEmpty(clazz.getAnnotation(XmlType.class).name())) {
-                Object ref = createTypeReference(part.getName(), clazz);
-                if (ref != null) {
-                    typeReferences.add(ref);
-                }
-            }
-
-            addClass(clazz);
-        }
-    }
-
-    private void checkForAdapter(Class<?> clazz, Annotation[] anns) {
-        if (anns != null) {
-            for (Annotation a : anns) {
-                if (XmlJavaTypeAdapter.class.isAssignableFrom(a.annotationType())) {
-                    Type t = Utils.getTypeFromXmlAdapter((XmlJavaTypeAdapter)a);
-                    if (t != null) {
-                        addType(t);
-                    }
-                }
-            }
-        }
-        XmlJavaTypeAdapter xjta = clazz.getAnnotation(XmlJavaTypeAdapter.class);
-        if (xjta != null) {
-            Type t = Utils.getTypeFromXmlAdapter(xjta);
-            if (t != null) {
-                addType(t);
-            }
-        }
-        if (clazz.getPackage() != null) {
-            XmlJavaTypeAdapters adapt = clazz.getPackage().getAnnotation(XmlJavaTypeAdapters.class);
-            if (adapt != null) {
-                for (XmlJavaTypeAdapter a : adapt.value()) {
-                    globalAdapters.add(a.type());
-                }
-                for (XmlJavaTypeAdapter a : adapt.value()) {
-                    Type t = Utils.getTypeFromXmlAdapter(a);
-                    if (t != null) {
-                        addType(t);
-                    }
-                }
-            }
-        }
-    }
-
-    private void addType(Type cls) {
-        addType(cls, false);
-    }
-    private void addType(Type cls, boolean allowArray) {
-        if (cls instanceof Class) {
-            if (globalAdapters.contains(cls)) {
-                return;
-            }
-            if (((Class<?>)cls).isArray() && !allowArray) {
-                addClass(((Class<?>)cls).getComponentType());
-            } else {
-                addClass((Class<?>)cls);
-            }
-        } else if (cls instanceof ParameterizedType) {
-            final ParameterizedType parameterizedType = (ParameterizedType)cls;
-            addType(parameterizedType.getRawType());
-            if (!parameterizedType.getRawType().equals(Enum.class)) {
-                for (Type t2 : parameterizedType.getActualTypeArguments()) {
-                    if (shouldTypeBeAdded(t2, parameterizedType)) {
-                        addType(t2);
-                    }
-                }
-            }
-        } else if (cls instanceof GenericArrayType) {
-            Class<?> ct;
-            GenericArrayType gt = (GenericArrayType)cls;
-            Type componentType = gt.getGenericComponentType();
-            if (componentType instanceof Class) {
-                ct = (Class<?>)componentType;
-            } else if (componentType instanceof ParameterizedType) {
-                final ParameterizedType parameterizedType = (ParameterizedType)componentType;
-                final Type rawType = parameterizedType.getRawType();
-                if (rawType instanceof Class) {
-                    ct = (Class<?>)rawType;
-                } else {
-                    throw new IllegalArgumentException("Unable to determine type for " + rawType);
-                }
-                if (!parameterizedType.getRawType().equals(Enum.class)) {
-                    for (Type t2 : parameterizedType.getActualTypeArguments()) {
-                        if (shouldTypeBeAdded(t2, parameterizedType)) {
-                            addType(t2);
-                        }
-                    }
-                }
-            } else {
-                TypeVariable<?> tv = (TypeVariable<?>)componentType;
-                Type[] bounds = tv.getBounds();
-                if (bounds != null && bounds.length == 1) {
-                    if (bounds[0] instanceof Class) {
-                        ct = (Class<?>)bounds[0];
-                    } else {
-                        throw new IllegalArgumentException("Unable to determine type for: " + tv);
-                    }
-                } else {
-                    throw new IllegalArgumentException("Unable to determine type for: " + tv);
-                }
-            }
-            ct = Array.newInstance(ct, 0).getClass();
-
-            addClass(ct);
-        } else if (cls instanceof WildcardType) {
-            for (Type t : ((WildcardType)cls).getUpperBounds()) {
-                addType(t);
-            }
-            for (Type t : ((WildcardType)cls).getLowerBounds()) {
-                addType(t);
-            }
-        } else if (cls instanceof TypeVariable) {
-            for (Type t : ((TypeVariable<?>)cls).getBounds()) {
-                addType(t);
-            }
-        }
-    }
-
-    private boolean shouldTypeBeAdded(final Type t2, final ParameterizedType parameterizedType) {
-        if (!(t2 instanceof TypeVariable)) {
-            return true;
-        }
-        TypeVariable<?> typeVariable = (TypeVariable<?>) t2;
-        final Type[] bounds = typeVariable.getBounds();
-        for (Type bound : bounds) {
-            if (bound instanceof ParameterizedType && bound.equals(parameterizedType)) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    void addClass(Class<?> claz) {
-        if (Throwable.class.isAssignableFrom(claz)) {
-            if (!Throwable.class.equals(claz)
-                && !Exception.class.equals(claz)) {
-                walkReferences(claz);
-            }
-            addClass(String.class);
-        } else if (claz.getName().startsWith("java.")
-            || claz.getName().startsWith("jakarta.") || claz.getName().startsWith("javax.")) {
-            return;
-        } else {
-            Class<?> cls = JAXBUtils.getValidClass(claz);
-            if (cls == null
-                && ReflectionUtil.getDeclaredConstructors(claz).length > 0
-                && !Modifier.isAbstract(claz.getModifiers())) {
-                if (LOG.isLoggable(Level.INFO)) {
-                    LOG.info("Class " + claz.getName() + " does not have a default constructor which JAXB requires.");
-                }
-                Object factory = createFactory(claz);
-                unmarshallerProperties.put("com.sun.xml.bind.ObjectFactory", factory);
-                cls = claz;
-            }
-            if (null != cls) {
-                if (classes.contains(cls)) {
-                    return;
-                }
-
-                if (!cls.isInterface()) {
-                    classes.add(cls);
-                }
-
-                XmlSeeAlso xsa = cls.getAnnotation(XmlSeeAlso.class);
-                if (xsa != null) {
-                    for (Class<?> c : xsa.value()) {
-                        addClass(c);
-                    }
-                }
-                XmlJavaTypeAdapter xjta = cls.getAnnotation(XmlJavaTypeAdapter.class);
-                if (xjta != null) {
-                    //has an adapter.   We need to inspect the adapter and then
-                    //return as the adapter will handle the superclass
-                    //and interfaces and such
-                    Type t = Utils.getTypeFromXmlAdapter(xjta);
-                    if (t != null) {
-                        addType(t);
-                    }
-                    return;
-                }
-
-                if (cls.getSuperclass() != null) {
-                    //JAXB should do this, but it doesn't always.
-                    //in particular, older versions of jaxb don't
-                    addClass(cls.getSuperclass());
-                }
-
-                if (!cls.isInterface()) {
-                    walkReferences(cls);
-                }
-            }
-        }
-    }
-
-    private void walkReferences(Class<?> cls) {
-        if (cls == null) {
-            return;
-        }
-        if (cls.getName().startsWith("java.")
-            || cls.getName().startsWith("jakarta.") || cls.getName().startsWith("javax.")) {
-            return;
-        }
-        //walk the public fields/methods to try and find all the classes. JAXB will only load the
-        //EXACT classes in the fields/methods if they are in a different package. Thus,
-        //subclasses won't be found and the xsi:type stuff won't work at all.
-        //We'll grab the public field/method types and then add the ObjectFactory stuff
-        //as well as look for jaxb.index files in those packages.
-
-        XmlAccessType accessType = Utils.getXmlAccessType(cls);
-
-        if (accessType != XmlAccessType.PROPERTY) {   // only look for fields if we are instructed to
-            //fields are accessible even if not public, must look at the declared fields
-            //then walk to parents declared fields, etc...
-            Field[] fields = ReflectionUtil.getDeclaredFields(cls);
-            for (Field f : fields) {
-                if (isFieldAccepted(f, accessType)) {
-                    XmlJavaTypeAdapter xjta = Utils.getFieldXJTA(f);
-                    if (xjta != null) {
-                        Type t = Utils.getTypeFromXmlAdapter(xjta);
-                        if (t != null) {
-                            addType(t);
-                            continue;
-                        }
-                    }
-                    addType(f.getGenericType());
-                }
-            }
-            walkReferences(cls.getSuperclass());
-        }
-
-        if (accessType != XmlAccessType.FIELD) {   // only look for methods if we are instructed to
-            Method[] methods = ReflectionUtil.getDeclaredMethods(cls);
-            for (Method m : methods) {
-                if (isMethodAccepted(m, accessType)) {
-                    XmlJavaTypeAdapter xjta = Utils.getMethodXJTA(m);
-                    if (xjta != null) {
-                        Type t = Utils.getTypeFromXmlAdapter(xjta);
-                        if (t != null) {
-                            addType(t);
-                            continue;
-                        }
-                    }
-                    addType(m.getGenericReturnType());
-                    for (Type t : m.getGenericParameterTypes()) {
-                        addType(t);
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * Checks if the field is accepted as a JAXB property.
-     */
-    static boolean isFieldAccepted(Field field, XmlAccessType accessType) {
-        // We only accept non static fields which are not marked @XmlTransient or has transient modifier
-        if (field.isAnnotationPresent(XmlTransient.class)
-            || Modifier.isTransient(field.getModifiers())) {
-            return false;
-        }
-        if (Modifier.isStatic(field.getModifiers())) {
-            return field.isAnnotationPresent(XmlAttribute.class);
-        }
-        if (accessType == XmlAccessType.PUBLIC_MEMBER
-            && !Modifier.isPublic(field.getModifiers())) {
-            return false;
-        }
-        if (accessType == XmlAccessType.NONE
-            || accessType == XmlAccessType.PROPERTY) {
-            return checkJaxbAnnotation(field.getAnnotations());
-        }
-        return true;
-    }
-
-    /**
-     * Checks if the method is accepted as a JAXB property getter.
-     */
-    static boolean isMethodAccepted(Method method, XmlAccessType accessType) {
-        // We only accept non static property getters which are not marked @XmlTransient
-        if (Modifier.isStatic(method.getModifiers())
-                || method.isAnnotationPresent(XmlTransient.class)
-                || !Modifier.isPublic(method.getModifiers())
-                || "getClass".equals(method.getName())) {
-            return false;
-        }
-
-        // must not have parameters and return type must not be void
-        if (method.getReturnType() == Void.class || method.getReturnType() == Void.TYPE
-            || method.getParameterTypes().length != 0
-            || (method.getDeclaringClass().equals(Throwable.class)
-            && !("getMessage".equals(method.getName())))
-            || !(method.getName().startsWith("get")
-                    || method.getName().startsWith("is"))) {
-            return false;
-        }
-        int beginIndex = 3;
-        if (method.getName().startsWith("is")) {
-            beginIndex = 2;
-        }
-
-        Method setter = null;
-        try {
-            setter = method.getDeclaringClass()
-                .getMethod("set" + method.getName().substring(beginIndex),
-                           new Class[] {method.getReturnType()});
-        } catch (Exception e) {
-            //getter, but no setter
-        }
-        if (setter != null) {
-            if (setter.isAnnotationPresent(XmlTransient.class)
-                || !Modifier.isPublic(setter.getModifiers())) {
-                return false;
-            }
-        } else if (!Collection.class.isAssignableFrom(method.getReturnType())
-            && !Throwable.class.isAssignableFrom(method.getDeclaringClass())) {
-            //no setter, it's not a collection (thus getter().add(...)), and
-            //not an Exception,
-            return false;
-        }
-
-        if (accessType == XmlAccessType.NONE
-            || accessType == XmlAccessType.FIELD) {
-            return checkJaxbAnnotation(method.getAnnotations());
-        }
-        return true;
-    }
-
-    /**
-     * Checks if there are JAXB annotations among the annotations of the class member.
-     * @param annotations the array of annotations from the class member
-     * @return true if JAXB annotations are present, false otherwise
-     */
-    static boolean checkJaxbAnnotation(Annotation[] annotations) {
-        // must check if there are any jaxb annotations
-        Package jaxbAnnotationsPackage = XmlElement.class.getPackage();
-        for (Annotation annotation : annotations) {
-            if (annotation.annotationType().getPackage() == jaxbAnnotationsPackage) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * The TypeReference class is a sun specific class that is found in two different
-     * locations depending on environment. In IBM JDK the class is not available at all.
-     * So we have to load it at runtime.
-     *
-     * @param n
-     * @param cls
-     * @return initiated TypeReference
-     */
-    private static Object createTypeReference(QName n, Class<?> cls) {
-        Class<?> refClass = null;
-        try {
-            refClass = ClassLoaderUtils.loadClass("com.sun.xml.bind.api.TypeReference",
-                                                  JAXBContextInitializer.class);
-        } catch (Throwable ex) {
-            try {
-                refClass = ClassLoaderUtils.loadClass("com.sun.xml.internal.bind.api.TypeReference",
-                                                      JAXBContextInitializer.class);
-            } catch (Throwable ex2) {
-                //ignore
-            }
-        }
-        if (refClass != null) {
-            try {
-                return refClass.getConstructor(QName.class, Type.class, new Annotation[0].getClass()) //NOPMD
-                    .newInstance(n, cls, new Annotation[0]);
-            } catch (Throwable e) {
-                //ignore
-            }
-        }
-        return null;
-    }
-
-    @SuppressWarnings("unused")
-    private Object createFactory(Class<?> cls) {
-        FactoryClassCreator creator = bus.getExtension(FactoryClassCreator.class);
-
-        Class<?> factoryClass = creator.createFactory(cls);
-        try {
-            return factoryClass.getDeclaredConstructor().newInstance();
-        } catch (Exception e) {
-           //ignore
-        }
-        return null;
-    }
-
-
-}
diff --git a/deps/cxf-shade/src/patch/java/org/apache/cxf/jaxb/io/DataWriterImpl.java b/deps/cxf-shade/src/patch/java/org/apache/cxf/jaxb/io/DataWriterImpl.java
deleted file mode 100644
index 446c6b7d76..0000000000
--- a/deps/cxf-shade/src/patch/java/org/apache/cxf/jaxb/io/DataWriterImpl.java
+++ /dev/null
@@ -1,321 +0,0 @@
-/**
- * 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.jaxb.io;
-
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Method;
-import java.nio.charset.StandardCharsets;
-import java.util.Collection;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import jakarta.xml.bind.JAXBException;
-import jakarta.xml.bind.MarshalException;
-import jakarta.xml.bind.Marshaller;
-import jakarta.xml.bind.PropertyException;
-import jakarta.xml.bind.ValidationEvent;
-import jakarta.xml.bind.ValidationEventHandler;
-import jakarta.xml.bind.annotation.adapters.XmlAdapter;
-import jakarta.xml.bind.attachment.AttachmentMarshaller;
-
-import org.apache.cxf.Bus;
-import org.apache.cxf.common.i18n.Message;
-import org.apache.cxf.common.jaxb.JAXBUtils;
-import org.apache.cxf.common.logging.LogUtils;
-import org.apache.cxf.common.util.ReflectionUtil;
-import org.apache.cxf.databinding.DataWriter;
-import org.apache.cxf.interceptor.Fault;
-import org.apache.cxf.jaxb.JAXBDataBase;
-import org.apache.cxf.jaxb.JAXBDataBinding;
-import org.apache.cxf.jaxb.JAXBEncoderDecoder;
-import org.apache.cxf.jaxb.MarshallerEventHandler;
-import org.apache.cxf.jaxb.attachment.JAXBAttachmentMarshaller;
-import org.apache.cxf.message.MessageUtils;
-import org.apache.cxf.service.model.MessagePartInfo;
-import org.apache.ws.commons.schema.XmlSchemaElement;
-
-public class DataWriterImpl<T> extends JAXBDataBase implements DataWriter<T> {
-    private static final Logger LOG = LogUtils.getLogger(JAXBDataBinding.class);
-
-    ValidationEventHandler veventHandler;
-    boolean setEventHandler = true;
-    boolean noEscape;
-    private JAXBDataBinding databinding;
-    private Bus bus;
-
-    public DataWriterImpl(Bus bus, JAXBDataBinding binding) {
-        this(bus, binding, false);
-    }
-    public DataWriterImpl(Bus bus, JAXBDataBinding binding, boolean noEsc) {
-        super(binding.getContext());
-        databinding = binding;
-        noEscape = noEsc;
-        this.bus = bus;
-    }
-
-    public void write(Object obj, T output) {
-        write(obj, null, output);
-    }
-
-    public void setProperty(String prop, Object value) {
-        if (prop.equals(org.apache.cxf.message.Message.class.getName())) {
-            org.apache.cxf.message.Message m = (org.apache.cxf.message.Message)value;
-            veventHandler = getValidationEventHandler(m, JAXBDataBinding.WRITER_VALIDATION_EVENT_HANDLER);
-            if (veventHandler == null) {
-                veventHandler = databinding.getValidationEventHandler();
-            }
-            setEventHandler = MessageUtils.getContextualBoolean(m,
-                    JAXBDataBinding.SET_VALIDATION_EVENT_HANDLER, true);
-        }
-    }
-
-    private static class MtomValidationHandler implements ValidationEventHandler {
-        ValidationEventHandler origHandler;
-        JAXBAttachmentMarshaller marshaller;
-        MtomValidationHandler(ValidationEventHandler v,
-                                     JAXBAttachmentMarshaller m) {
-            origHandler = v;
-            marshaller = m;
-        }
-
-        public boolean handleEvent(ValidationEvent event) {
-            // CXF-1194/CXF-7438 this hack is specific to MTOM, so pretty safe to leave in
-            // here before calling the origHandler.
-            String msg = event.getMessage();
-            if ((msg.startsWith("cvc-type.3.1.2") || msg.startsWith("cvc-complex-type.2.2"))
-                && msg.contains(marshaller.getLastMTOMElementName().getLocalPart())) {
-                return true;
-            }
-
-            if (origHandler != null) {
-                return origHandler.handleEvent(event);
-            }
-            return false;
-        }
-
-    }
-
-    public Marshaller createMarshaller(Object elValue, MessagePartInfo part) {
-        //Class<?> cls = null;
-        //if (part != null) {
-        //    cls = part.getTypeClass();
-        //}
-        //
-        //if (cls == null) {
-        //    cls = null != elValue ? elValue.getClass() : null;
-        //}
-        //
-        //if (cls != null && cls.isArray() && elValue instanceof Collection) {
-        //    Collection<?> col = (Collection<?>)elValue;
-        //    elValue = col.toArray((Object[])Array.newInstance(cls.getComponentType(), col.size()));
-        //}
-        Marshaller marshaller;
-        try {
-
-            marshaller = context.createMarshaller();
-            marshaller.setProperty(Marshaller.JAXB_ENCODING, StandardCharsets.UTF_8.name());
-            marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
-            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.FALSE);
-            marshaller.setListener(databinding.getMarshallerListener());
-            databinding.applyEscapeHandler(!noEscape, eh -> JAXBUtils.setEscapeHandler(marshaller, eh));
-
-            if (setEventHandler) {
-                ValidationEventHandler h = veventHandler;
-                if (veventHandler == null) {
-                    h = new ValidationEventHandler() {
-                        public boolean handleEvent(ValidationEvent event) {
-                            //continue on warnings only
-                            return event.getSeverity() == ValidationEvent.WARNING;
-                        }
-                    };
-                }
-                marshaller.setEventHandler(h);
-            }
-
-            final Map<String, String> nspref = databinding.getDeclaredNamespaceMappings();
-            final Map<String, String> nsctxt = databinding.getContextualNamespaceMap();
-            // set the prefix mapper if either of the prefix map is configured
-            if (nspref != null || nsctxt != null) {
-                Object mapper = JAXBUtils.setNamespaceMapper(bus, nspref != null ? nspref : nsctxt, marshaller);
-                if (nsctxt != null) {
-                    setContextualNamespaceDecls(mapper, nsctxt);
-                }
-            }
-            if (databinding.getMarshallerProperties() != null) {
-                for (Map.Entry<String, Object> propEntry
-                    : databinding.getMarshallerProperties().entrySet()) {
-                    try {
-                        marshaller.setProperty(propEntry.getKey(), propEntry.getValue());
-                    } catch (PropertyException pe) {
-                        LOG.log(Level.INFO, "PropertyException setting Marshaller properties", pe);
-                    }
-                }
-            }
-
-            marshaller.setSchema(schema);
-            AttachmentMarshaller atmarsh = getAttachmentMarshaller();
-            marshaller.setAttachmentMarshaller(atmarsh);
-
-            if (schema != null
-                && atmarsh instanceof JAXBAttachmentMarshaller) {
-                //we need a special even handler for XOP attachments
-                marshaller.setEventHandler(new MtomValidationHandler(marshaller.getEventHandler(),
-                                                            (JAXBAttachmentMarshaller)atmarsh));
-            }
-        } catch (jakarta.xml.bind.MarshalException ex) {
-            Message faultMessage = new Message("MARSHAL_ERROR", LOG, ex.getLinkedException()
-                .getMessage());
-            throw new Fault(faultMessage, ex);
-        } catch (JAXBException ex) {
-            throw new Fault(new Message("MARSHAL_ERROR", LOG, ex.getMessage()), ex);
-        }
-        for (XmlAdapter<?, ?> adapter : databinding.getConfiguredXmlAdapters()) {
-            marshaller.setAdapter(adapter);
-        }
-        return marshaller;
-    }
-
-    //REVISIT should this go into JAXBUtils?
-    private static void setContextualNamespaceDecls(Object mapper, Map<String, String> nsctxt) {
-        try {
-            Method m = ReflectionUtil.getDeclaredMethod(mapper.getClass(),
-                                                        "setContextualNamespaceDecls", new Class<?>[]{String[].class});
-            String[] args = new String[nsctxt.size() * 2];
-            int ai = 0;
-            for (Entry<String, String> nsp : nsctxt.entrySet()) {
-                args[ai++] = nsp.getValue();
-                args[ai++] = nsp.getKey();
-            }
-            m.invoke(mapper, new Object[]{args});
-        } catch (Exception e) {
-            // ignore
-            LOG.log(Level.WARNING, "Failed to set the contextual namespace map", e);
-        }
-
-    }
-
-    public void write(Object obj, MessagePartInfo part, T output) {
-        boolean honorJaxbAnnotation = honorJAXBAnnotations(part);
-        if (part != null && !part.isElement() && part.getTypeClass() != null) {
-            honorJaxbAnnotation = true;
-        }
-        checkPart(part, obj);
-
-        if (obj != null
-            || !(part.getXmlSchema() instanceof XmlSchemaElement)) {
-
-            if (obj instanceof Exception
-                && part != null
-                && Boolean.TRUE.equals(part.getProperty(JAXBDataBinding.class.getName()
-                                                        + ".CUSTOM_EXCEPTION"))) {
-                JAXBEncoderDecoder.marshallException(createMarshaller(obj, part),
-                                                     (Exception)obj,
-                                                     part,
-                                                     output);
-                onCompleteMarshalling();
-            } else {
-                Annotation[] anns = getJAXBAnnotation(part);
-                if (!honorJaxbAnnotation || anns.length == 0) {
-                    JAXBEncoderDecoder.marshall(createMarshaller(obj, part), obj, part, output);
-                    onCompleteMarshalling();
-                } else if (honorJaxbAnnotation && anns.length > 0) {
-                    //RpcLit will use the JAXB Bridge to marshall part message when it is
-                    //annotated with @XmlList,@XmlAttachmentRef,@XmlJavaTypeAdapter
-                    //TODO:Cache the JAXBRIContext
-
-                    JAXBEncoderDecoder.marshalWithBridge(part.getConcreteName(),
-                                                         part.getTypeClass(),
-                                                         anns,
-                                                         databinding.getContextClasses(),
-                                                         obj,
-                                                         output,
-                                                         getAttachmentMarshaller());
-                }
-            }
-        } else if (needToRender(part)) {
-            JAXBEncoderDecoder.marshallNullElement(createMarshaller(null, part),
-                                                   output, part);
-
-            onCompleteMarshalling();
-        }
-    }
-
-    private void checkPart(MessagePartInfo part, Object object) {
-        if (part == null || part.getTypeClass() == null || object == null) {
-            return;
-        }
-        Class<?> typeClass = part.getTypeClass();
-        if (typeClass == null) {
-            return;
-        }
-        if (typeClass.isPrimitive()) {
-            if (typeClass == Long.TYPE) {
-                typeClass = Long.class;
-            } else if (typeClass == Integer.TYPE) {
-                typeClass = Integer.class;
-            } else if (typeClass == Short.TYPE) {
-                typeClass = Short.class;
-            } else if (typeClass == Byte.TYPE) {
-                typeClass = Byte.class;
-            } else if (typeClass == Character.TYPE) {
-                typeClass = Character.class;
-            } else if (typeClass == Double.TYPE) {
-                typeClass = Double.class;
-            } else if (typeClass == Float.TYPE) {
-                typeClass = Float.class;
-            } else if (typeClass == Boolean.TYPE) {
-                typeClass = Boolean.class;
-            }
-        } else if (typeClass.isArray() && object instanceof Collection) {
-            //JAXB allows a pseudo [] <--> List equivalence
-            return;
-        }
-        if (!typeClass.isInstance(object)) {
-            throw new IllegalArgumentException("Part " + part.getName() + " should be of type "
-                + typeClass.getName() + ", not "
-                + object.getClass().getName());
-        }
-    }
-
-    private boolean needToRender(MessagePartInfo part) {
-        if (part != null && part.getXmlSchema() instanceof XmlSchemaElement) {
-            XmlSchemaElement element = (XmlSchemaElement)part.getXmlSchema();
-            return element.isNillable() && element.getMinOccurs() > 0;
-        }
-        return false;
-    }
-
-    private void onCompleteMarshalling() {
-        if (setEventHandler && veventHandler instanceof MarshallerEventHandler) {
-            try {
-                ((MarshallerEventHandler) veventHandler).onMarshalComplete();
-            } catch (MarshalException e) {
-                if (e.getLinkedException() != null) {
-                    throw new Fault(new Message("MARSHAL_ERROR", LOG,
-                            e.getLinkedException().getMessage()), e);
-                }
-                throw new Fault(new Message("MARSHAL_ERROR", LOG, e.getMessage()), e);
-            }
-        }
-    }
-}