You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2015/07/09 18:20:34 UTC
[1/9] cxf git commit: [CXF-6217] More updates to use secure processing
Repository: cxf
Updated Branches:
refs/heads/3.0.x-fixes c780d3a6a -> 2d6414108
[CXF-6217] More updates to use secure processing
# Conflicts:
# rt/rs/security/sso/saml/src/main/java/org/apache/cxf/rs/security/saml/sso/MetadataWriter.java
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/70591bf2
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/70591bf2
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/70591bf2
Branch: refs/heads/3.0.x-fixes
Commit: 70591bf2091e0406346f8afecb2f10f0e9168566
Parents: 8c898d6
Author: Daniel Kulp <dk...@apache.org>
Authored: Wed Jul 1 12:44:55 2015 -0400
Committer: Daniel Kulp <dk...@apache.org>
Committed: Thu Jul 9 12:20:26 2015 -0400
----------------------------------------------------------------------
.../jaxrs/provider/atom/AtomPojoProvider.java | 4 +-
.../org/apache/cxf/wsn/jms/JmsPullPoint.java | 7 ++-
.../org/apache/cxf/wsn/jms/JmsSubscription.java | 12 ++--
.../common/dom/ExtendedDocumentBuilder.java | 43 +++++++------
.../cxf/tools/common/toolspec/ToolSpec.java | 6 +-
.../toolspec/parser/CommandLineParserTest.java | 8 ++-
.../validator/internal/SchemaValidator.java | 5 +-
.../tools/validator/internal/ValidatorUtil.java | 2 +
.../cxf/tools/wsdlto/core/PluginLoader.java | 25 ++++++--
.../databinding/jaxb/NamespaceContextImpl.java | 65 --------------------
10 files changed, 75 insertions(+), 102 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/70591bf2/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/atom/AtomPojoProvider.java
----------------------------------------------------------------------
diff --git a/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/atom/AtomPojoProvider.java b/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/atom/AtomPojoProvider.java
index c1c7237..0a31633 100644
--- a/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/atom/AtomPojoProvider.java
+++ b/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/atom/AtomPojoProvider.java
@@ -670,9 +670,7 @@ public class AtomPojoProvider extends AbstractConfigurableProvider
reportError("Object of type " + cls.getName() + " can not be deserialized from Entry", ex, 400);
} finally {
try {
- if (xreader != null) {
- StaxUtils.close(xreader);
- }
+ StaxUtils.close(xreader);
} catch (XMLStreamException e) {
//ignore
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/70591bf2/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/jms/JmsPullPoint.java
----------------------------------------------------------------------
diff --git a/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/jms/JmsPullPoint.java b/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/jms/JmsPullPoint.java
index 1ac5c00..92d50ae 100644
--- a/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/jms/JmsPullPoint.java
+++ b/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/jms/JmsPullPoint.java
@@ -35,6 +35,7 @@ import javax.jms.Session;
import javax.jms.TextMessage;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
+import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
import org.apache.cxf.common.logging.LogUtils;
@@ -124,7 +125,11 @@ public class JmsPullPoint extends AbstractPullPoint {
StringReader reader = new StringReader(txtMsg.getText());
XMLStreamReader xreader = StaxUtils.createXMLStreamReader(reader);
Notify notify = (Notify) jaxbContext.createUnmarshaller().unmarshal(xreader);
- reader.close();
+ try {
+ xreader.close();
+ } catch (XMLStreamException e) {
+ //ignoreable
+ }
messages.addAll(notify.getNotificationMessage());
}
return messages;
http://git-wip-us.apache.org/repos/asf/cxf/blob/70591bf2/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/jms/JmsSubscription.java
----------------------------------------------------------------------
diff --git a/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/jms/JmsSubscription.java b/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/jms/JmsSubscription.java
index a7e539e..6420400 100644
--- a/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/jms/JmsSubscription.java
+++ b/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/jms/JmsSubscription.java
@@ -31,10 +31,10 @@ import javax.jms.MessageListener;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;
+import javax.xml.XMLConstants;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.datatype.XMLGregorianCalendar;
-import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.stream.XMLStreamReader;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
@@ -46,6 +46,7 @@ import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.helpers.DOMUtils;
import org.apache.cxf.staxutils.StaxUtils;
import org.apache.cxf.wsn.AbstractSubscription;
import org.oasis_open.docs.wsn.b_2.InvalidTopicExpressionFaultType;
@@ -200,9 +201,7 @@ public abstract class JmsSubscription extends AbstractSubscription implements Me
NotificationMessageHolderType h = ith.next();
Object content = h.getMessage().getAny();
if (!(content instanceof Element)) {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- Document doc = factory.newDocumentBuilder().newDocument();
+ Document doc = DOMUtils.createDocument();
jaxbContext.createMarshaller().marshal(content, doc);
content = doc.getDocumentElement();
}
@@ -228,6 +227,11 @@ public abstract class JmsSubscription extends AbstractSubscription implements Me
}
try {
XPathFactory xpfactory = XPathFactory.newInstance();
+ try {
+ xpfactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, Boolean.TRUE);
+ } catch (Throwable t) {
+ //possibly old version, though doesn't really matter as content is already parsed as an Element
+ }
XPath xpath = xpfactory.newXPath();
XPathExpression exp = xpath.compile(contentFilter.getContent().get(0).toString());
Boolean ret = (Boolean) exp.evaluate(content, XPathConstants.BOOLEAN);
http://git-wip-us.apache.org/repos/asf/cxf/blob/70591bf2/tools/common/src/main/java/org/apache/cxf/tools/common/dom/ExtendedDocumentBuilder.java
----------------------------------------------------------------------
diff --git a/tools/common/src/main/java/org/apache/cxf/tools/common/dom/ExtendedDocumentBuilder.java b/tools/common/src/main/java/org/apache/cxf/tools/common/dom/ExtendedDocumentBuilder.java
index c3017b1..8551225 100644
--- a/tools/common/src/main/java/org/apache/cxf/tools/common/dom/ExtendedDocumentBuilder.java
+++ b/tools/common/src/main/java/org/apache/cxf/tools/common/dom/ExtendedDocumentBuilder.java
@@ -25,16 +25,22 @@ import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.XMLConstants;
-import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.stream.XMLStreamException;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
+
+
+
import org.w3c.dom.Document;
+
import org.xml.sax.SAXException;
import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.staxutils.StaxUtils;
/**
* (not thread safe)
@@ -44,15 +50,11 @@ public class ExtendedDocumentBuilder {
private static final Logger LOG = LogUtils.getL7dLogger(ExtendedDocumentBuilder.class);
- private final DocumentBuilderFactory parserFactory;
- private DocumentBuilder parser;
-
+ private DocumentBuilderFactory parserFactory;
private SchemaFactory schemaFactory;
private Schema schema;
public ExtendedDocumentBuilder() {
- parserFactory = DocumentBuilderFactory.newInstance();
- parserFactory.setNamespaceAware(true);
}
private InputStream getSchemaLocation() {
@@ -69,30 +71,33 @@ public class ExtendedDocumentBuilder {
LOG.log(Level.SEVERE, "SCHEMA_FACTORY_EXCEPTION_MSG");
}
try {
- this.parserFactory.setSchema(this.schema);
+ parserFactory = DocumentBuilderFactory.newInstance();
+ try {
+ parserFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, Boolean.TRUE);
+ } catch (ParserConfigurationException e) {
+ //old version, not supported.
+ }
+ parserFactory.setNamespaceAware(true);
+ parserFactory.setSchema(this.schema);
} catch (UnsupportedOperationException e) {
LOG.log(Level.WARNING, "DOC_PARSER_NOT_SUPPORTED", e);
}
}
}
-
- private DocumentBuilder getParser() {
- if (parser == null) {
+ public Document parse(InputStream in) throws SAXException, IOException, XMLStreamException {
+ if (in == null && LOG.isLoggable(Level.FINE)) {
+ LOG.fine("ExtendedDocumentBuilder trying to parse a null inputstream");
+ }
+ if (parserFactory != null) {
+ //validating, so need to use the validating parser factory
try {
- parser = parserFactory.newDocumentBuilder();
+ return parserFactory.newDocumentBuilder().parse(in);
} catch (javax.xml.parsers.ParserConfigurationException e) {
LOG.log(Level.SEVERE, "NEW_DOCUMENT_BUILDER_EXCEPTION_MSG");
}
}
- return parser;
- }
-
- public Document parse(InputStream in) throws SAXException, IOException {
- if (in == null && LOG.isLoggable(Level.FINE)) {
- LOG.fine("ExtendedDocumentBuilder trying to parse a null inputstream");
- }
- return getParser().parse(in);
+ return StaxUtils.read(in);
}
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/70591bf2/tools/common/src/main/java/org/apache/cxf/tools/common/toolspec/ToolSpec.java
----------------------------------------------------------------------
diff --git a/tools/common/src/main/java/org/apache/cxf/tools/common/toolspec/ToolSpec.java b/tools/common/src/main/java/org/apache/cxf/tools/common/toolspec/ToolSpec.java
index 710e5cc..8bd9457 100644
--- a/tools/common/src/main/java/org/apache/cxf/tools/common/toolspec/ToolSpec.java
+++ b/tools/common/src/main/java/org/apache/cxf/tools/common/toolspec/ToolSpec.java
@@ -27,6 +27,8 @@ import java.util.HashMap;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
+
+import javax.xml.XMLConstants;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
@@ -210,7 +212,9 @@ public class ToolSpec {
}
public void transform(InputStream stylesheet, OutputStream out) throws TransformerException {
- Transformer trans = TransformerFactory.newInstance().newTransformer(new StreamSource(stylesheet));
+ TransformerFactory factory = TransformerFactory.newInstance();
+ factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, Boolean.TRUE);
+ Transformer trans = factory.newTransformer(new StreamSource(stylesheet));
trans.transform(new DOMSource(doc), new StreamResult(out));
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/70591bf2/tools/common/src/test/java/org/apache/cxf/tools/common/toolspec/parser/CommandLineParserTest.java
----------------------------------------------------------------------
diff --git a/tools/common/src/test/java/org/apache/cxf/tools/common/toolspec/parser/CommandLineParserTest.java b/tools/common/src/test/java/org/apache/cxf/tools/common/toolspec/parser/CommandLineParserTest.java
index 93253d0..9ca2489 100644
--- a/tools/common/src/test/java/org/apache/cxf/tools/common/toolspec/parser/CommandLineParserTest.java
+++ b/tools/common/src/test/java/org/apache/cxf/tools/common/toolspec/parser/CommandLineParserTest.java
@@ -247,8 +247,12 @@ public class CommandLineParserTest extends Assert {
Class<?> c = Class.forName("org.apache.xerces.impl.Version");
Object o = c.newInstance();
String v = (String) c.getMethod("getVersion").invoke(o);
- float vn = Float.parseFloat(StringUtils.getFirstFound(v, "(\\d+.\\d+)"));
- return vn >= 2.7;
+ v = StringUtils.getFirstFound(v, "(\\d+.\\d+)").trim();
+ if (v.charAt(0) >= '3') {
+ return true;
+ }
+ v = v.substring(2);
+ return Integer.parseInt(v) >= 7;
} catch (Exception e) {
// ignore
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/70591bf2/tools/validator/src/main/java/org/apache/cxf/tools/validator/internal/SchemaValidator.java
----------------------------------------------------------------------
diff --git a/tools/validator/src/main/java/org/apache/cxf/tools/validator/internal/SchemaValidator.java b/tools/validator/src/main/java/org/apache/cxf/tools/validator/internal/SchemaValidator.java
index 09f65f0..8fde0b6 100644
--- a/tools/validator/src/main/java/org/apache/cxf/tools/validator/internal/SchemaValidator.java
+++ b/tools/validator/src/main/java/org/apache/cxf/tools/validator/internal/SchemaValidator.java
@@ -107,6 +107,7 @@ public class SchemaValidator extends AbstractDefinitionValidator {
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
try {
docFactory.setNamespaceAware(true);
+ docFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, Boolean.TRUE);
docBuilder = docFactory.newDocumentBuilder();
} catch (ParserConfigurationException e) {
throw new ToolException(e);
@@ -124,7 +125,7 @@ public class SchemaValidator extends AbstractDefinitionValidator {
throws SAXException, IOException {
SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
-
+ sf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, Boolean.TRUE);
SchemaResourceResolver resourceResolver = new SchemaResourceResolver();
sf.setResourceResolver(resourceResolver);
@@ -156,6 +157,7 @@ public class SchemaValidator extends AbstractDefinitionValidator {
private Schema createSchema(String[] schemas) throws SAXException, IOException {
SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
+ sf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, Boolean.TRUE);
SchemaResourceResolver resourceResolver = new SchemaResourceResolver();
@@ -181,6 +183,7 @@ public class SchemaValidator extends AbstractDefinitionValidator {
try {
SAXParserFactory saxFactory = SAXParserFactory.newInstance();
saxFactory.setFeature("http://xml.org/sax/features/namespaces", true);
+ saxFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, Boolean.TRUE);
saxParser = saxFactory.newSAXParser();
if (defaultSchemas != null) {
http://git-wip-us.apache.org/repos/asf/cxf/blob/70591bf2/tools/validator/src/main/java/org/apache/cxf/tools/validator/internal/ValidatorUtil.java
----------------------------------------------------------------------
diff --git a/tools/validator/src/main/java/org/apache/cxf/tools/validator/internal/ValidatorUtil.java b/tools/validator/src/main/java/org/apache/cxf/tools/validator/internal/ValidatorUtil.java
index 305d370..bab3289 100644
--- a/tools/validator/src/main/java/org/apache/cxf/tools/validator/internal/ValidatorUtil.java
+++ b/tools/validator/src/main/java/org/apache/cxf/tools/validator/internal/ValidatorUtil.java
@@ -32,6 +32,7 @@ import java.util.logging.Level;
import java.util.logging.Logger;
import javax.wsdl.Definition;
+import javax.xml.XMLConstants;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
@@ -148,6 +149,7 @@ public final class ValidatorUtil {
try {
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
docFactory.setNamespaceAware(true);
+ docFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, Boolean.TRUE);
docBuilder = docFactory.newDocumentBuilder();
} catch (ParserConfigurationException e) {
throw new ToolException(e);
http://git-wip-us.apache.org/repos/asf/cxf/blob/70591bf2/tools/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/core/PluginLoader.java
----------------------------------------------------------------------
diff --git a/tools/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/core/PluginLoader.java b/tools/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/core/PluginLoader.java
index 8c36cb0..3a90451 100644
--- a/tools/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/core/PluginLoader.java
+++ b/tools/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/core/PluginLoader.java
@@ -35,14 +35,17 @@ import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
-import javax.xml.bind.Unmarshaller;
+import javax.xml.stream.XMLStreamException;
+
+import org.w3c.dom.Document;
import org.apache.cxf.common.classloader.ClassLoaderUtils;
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.StringUtils;
+import org.apache.cxf.staxutils.StaxUtils;
import org.apache.cxf.tools.common.FrontEndGenerator;
import org.apache.cxf.tools.common.Processor;
import org.apache.cxf.tools.common.ToolException;
@@ -64,7 +67,7 @@ public final class PluginLoader {
private Map<String, DataBinding> databindings = new TreeMap<String, DataBinding>();
- private Unmarshaller unmarshaller;
+ private JAXBContext jaxbContext;
private PluginLoader() {
init();
@@ -72,8 +75,7 @@ public final class PluginLoader {
private void init() {
try {
- JAXBContext jc = JAXBContext.newInstance("org.apache.cxf.tools.plugin");
- unmarshaller = jc.createUnmarshaller();
+ jaxbContext = JAXBContext.newInstance("org.apache.cxf.tools.plugin");
loadPlugins(ClassLoaderUtils.getResources(PLUGIN_FILE_NAME, getClass()));
} catch (JAXBException e) {
Message msg = new Message("JAXB_CONTEXT_INIT_FAIL", LOG);
@@ -230,7 +232,18 @@ public final class PluginLoader {
}
private Plugin getPlugin(InputStream is) throws JAXBException {
- return (Plugin) ((JAXBElement<?>)unmarshaller.unmarshal(is)).getValue();
+ try {
+ Document doc = StaxUtils.read(is);
+ return JAXBUtils.unmarshall(jaxbContext, doc.getDocumentElement(), Plugin.class).getValue();
+ } catch (XMLStreamException xse) {
+ throw new JAXBException(xse);
+ } finally {
+ try {
+ is.close();
+ } catch (IOException e) {
+ //ignore
+ }
+ }
}
public FrontEnd getFrontEnd(String name) {
http://git-wip-us.apache.org/repos/asf/cxf/blob/70591bf2/tools/wsdlto/databinding/jaxb/src/main/java/org/apache/cxf/tools/wsdlto/databinding/jaxb/NamespaceContextImpl.java
----------------------------------------------------------------------
diff --git a/tools/wsdlto/databinding/jaxb/src/main/java/org/apache/cxf/tools/wsdlto/databinding/jaxb/NamespaceContextImpl.java b/tools/wsdlto/databinding/jaxb/src/main/java/org/apache/cxf/tools/wsdlto/databinding/jaxb/NamespaceContextImpl.java
deleted file mode 100644
index eff5759..0000000
--- a/tools/wsdlto/databinding/jaxb/src/main/java/org/apache/cxf/tools/wsdlto/databinding/jaxb/NamespaceContextImpl.java
+++ /dev/null
@@ -1,65 +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.tools.wsdlto.databinding.jaxb;
-import java.io.File;
-import java.io.IOException;
-import java.util.Iterator;
-
-import javax.xml.namespace.NamespaceContext;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-
-import org.xml.sax.SAXException;
-
-public class NamespaceContextImpl implements NamespaceContext {
- private Element element;
-
- public NamespaceContextImpl(File file) {
- Document document = null;
- DocumentBuilderFactory docFact = DocumentBuilderFactory.newInstance();
- docFact.setNamespaceAware(true);
- try {
- document = docFact.newDocumentBuilder().parse(file);
- element = document.getDocumentElement();
- } catch (SAXException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (ParserConfigurationException e) {
- e.printStackTrace();
- }
- }
-
- public String getNamespaceURI(String prefix) {
- return element.lookupNamespaceURI(prefix);
-
- }
-
- public String getPrefix(String namespaceURI) {
- return element.lookupPrefix(namespaceURI);
- }
-
- public Iterator<?> getPrefixes(String namespaceURI) {
- return null;
- }
-
-}
[4/9] cxf git commit: [CXF-6458] Start work on trying to "close" the
Unmarshallers that implement closeable.
Posted by dk...@apache.org.
[CXF-6458] Start work on trying to "close" the Unmarshallers that implement closeable.
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/37d49fb3
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/37d49fb3
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/37d49fb3
Branch: refs/heads/3.0.x-fixes
Commit: 37d49fb307cc83c72d2c06b9711b0d523c921d5a
Parents: c780d3a
Author: Daniel Kulp <dk...@apache.org>
Authored: Fri Jun 19 15:21:20 2015 -0400
Committer: Daniel Kulp <dk...@apache.org>
Committed: Thu Jul 9 12:20:26 2015 -0400
----------------------------------------------------------------------
.../org/apache/cxf/common/jaxb/JAXBUtils.java | 50 ++++++++++++++++++++
.../AbstractBPBeanDefinitionParser.java | 7 ++-
.../jsse/TLSClientParametersConfig.java | 4 +-
.../spring/AbstractBeanDefinitionParser.java | 10 +++-
.../configuration/spring/JAXBBeanFactory.java | 4 +-
.../cxf/ws/addressing/VersionTransformer.java | 18 +++++--
.../org/apache/cxf/jaxb/io/DataReaderImpl.java | 31 ++++++++----
.../org/apache/cxf/jaxrs/ext/xml/XMLSource.java | 13 +++--
.../cxf/jaxrs/provider/JAXBElementProvider.java | 4 +-
.../org/apache/cxf/jaxrs/utils/JAXBUtils.java | 16 ++++++-
.../handler/AnnotationHandlerChainBuilder.java | 4 +-
.../handler/logical/LogicalMessageImpl.java | 5 +-
.../handler/soap/SOAPMessageContextImpl.java | 5 +-
.../org/apache/cxf/jaxws/spi/ProviderImpl.java | 18 +++++--
.../cxf/jaxrs/provider/json/JSONProvider.java | 4 +-
.../apache/cxf/ws/addressing/soap/MAPCodec.java | 5 +-
...ndpointReferenceDomainExpressionBuilder.java | 38 ++++++---------
.../builder/jaxb/JaxbAssertionBuilder.java | 5 +-
.../apache/cxf/wsdl/JAXBExtensionHelper.java | 4 +-
.../internal/WSDiscoveryServiceImpl.java | 3 +-
20 files changed, 182 insertions(+), 66 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/37d49fb3/core/src/main/java/org/apache/cxf/common/jaxb/JAXBUtils.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/cxf/common/jaxb/JAXBUtils.java b/core/src/main/java/org/apache/cxf/common/jaxb/JAXBUtils.java
index d4b900e..fe3d2ed 100644
--- a/core/src/main/java/org/apache/cxf/common/jaxb/JAXBUtils.java
+++ b/core/src/main/java/org/apache/cxf/common/jaxb/JAXBUtils.java
@@ -21,6 +21,7 @@ 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;
@@ -48,10 +49,12 @@ import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.PropertyException;
import javax.xml.bind.SchemaOutputResolver;
+import javax.xml.bind.Unmarshaller;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.attachment.AttachmentMarshaller;
import javax.xml.bind.attachment.AttachmentUnmarshaller;
@@ -59,6 +62,7 @@ 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;
@@ -164,6 +168,52 @@ public final class JAXBUtils {
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 {
+ 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 {
+ return u.unmarshal(e, cls);
+ } finally {
+ closeUnmarshaller(u);
+ }
+ }
+ public static Object unmarshall(JAXBContext c, Source s) throws JAXBException {
+ Unmarshaller u = c.createUnmarshaller();
+ try {
+ 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 {
+ return u.unmarshal(reader, cls);
+ } finally {
+ closeUnmarshaller(u);
+ }
+ }
+
public static String builtInTypeToJavaType(String type) {
return BUILTIN_DATATYPES_MAP.get(type);
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/37d49fb3/core/src/main/java/org/apache/cxf/configuration/blueprint/AbstractBPBeanDefinitionParser.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/cxf/configuration/blueprint/AbstractBPBeanDefinitionParser.java b/core/src/main/java/org/apache/cxf/configuration/blueprint/AbstractBPBeanDefinitionParser.java
index c71601c..c211c8c 100644
--- a/core/src/main/java/org/apache/cxf/configuration/blueprint/AbstractBPBeanDefinitionParser.java
+++ b/core/src/main/java/org/apache/cxf/configuration/blueprint/AbstractBPBeanDefinitionParser.java
@@ -48,6 +48,7 @@ import org.apache.aries.blueprint.mutable.MutableValueMetadata;
import org.apache.cxf.bus.blueprint.BlueprintBus;
import org.apache.cxf.common.jaxb.JAXBContextCache;
import org.apache.cxf.common.jaxb.JAXBContextCache.CachedContextAndSchemas;
+import org.apache.cxf.common.jaxb.JAXBUtils;
import org.apache.cxf.common.util.PackageUtils;
import org.apache.cxf.common.util.StringUtils;
import org.apache.cxf.helpers.DOMUtils;
@@ -335,7 +336,7 @@ public abstract class AbstractBPBeanDefinitionParser {
public Object createJAXBBean(String v) {
XMLStreamReader reader = StaxUtils.createXMLStreamReader(new StringReader(v));
try {
- Object o = ctx.createUnmarshaller().unmarshal(reader, cls);
+ Object o = JAXBUtils.unmarshall(ctx, reader, cls);
if (o instanceof JAXBElement<?>) {
JAXBElement<?> el = (JAXBElement<?>)o;
o = el.getValue();
@@ -360,6 +361,7 @@ public abstract class AbstractBPBeanDefinitionParser {
Class<?> c) {
try {
XMLStreamWriter xmlWriter = null;
+ Unmarshaller u = null;
try {
StringWriter writer = new StringWriter();
xmlWriter = StaxUtils.createXMLStreamWriter(writer);
@@ -375,7 +377,7 @@ public abstract class AbstractBPBeanDefinitionParser {
bean.addProperty(propertyName, factory);
} catch (Exception ex) {
- Unmarshaller u = getContext(c).createUnmarshaller();
+ u = getContext(c).createUnmarshaller();
Object obj;
if (c != null) {
obj = u.unmarshal(data, c);
@@ -393,6 +395,7 @@ public abstract class AbstractBPBeanDefinitionParser {
}
} finally {
StaxUtils.close(xmlWriter);
+ JAXBUtils.closeUnmarshaller(u);
}
} catch (JAXBException e) {
throw new RuntimeException("Could not parse configuration.", e);
http://git-wip-us.apache.org/repos/asf/cxf/blob/37d49fb3/core/src/main/java/org/apache/cxf/configuration/jsse/TLSClientParametersConfig.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/cxf/configuration/jsse/TLSClientParametersConfig.java b/core/src/main/java/org/apache/cxf/configuration/jsse/TLSClientParametersConfig.java
index 5677b9b..7df3e05 100644
--- a/core/src/main/java/org/apache/cxf/configuration/jsse/TLSClientParametersConfig.java
+++ b/core/src/main/java/org/apache/cxf/configuration/jsse/TLSClientParametersConfig.java
@@ -36,6 +36,7 @@ import javax.xml.stream.XMLStreamReader;
import org.apache.cxf.common.injection.NoJSR250Annotations;
import org.apache.cxf.common.jaxb.JAXBContextCache;
import org.apache.cxf.common.jaxb.JAXBContextCache.CachedContextAndSchemas;
+import org.apache.cxf.common.jaxb.JAXBUtils;
import org.apache.cxf.common.util.PackageUtils;
import org.apache.cxf.configuration.security.TLSClientParametersType;
import org.apache.cxf.staxutils.StaxUtils;
@@ -140,7 +141,7 @@ public final class TLSClientParametersConfig {
StringReader reader = new StringReader(s);
XMLStreamReader data = StaxUtils.createXMLStreamReader(reader);
- Unmarshaller u;
+ Unmarshaller u = null;
try {
u = getContext().createUnmarshaller();
JAXBElement<TLSClientParametersType> type = u.unmarshal(data, TLSClientParametersType.class);
@@ -156,6 +157,7 @@ public final class TLSClientParametersConfig {
} catch (XMLStreamException ex) {
throw new RuntimeException(ex);
}
+ JAXBUtils.closeUnmarshaller(u);
}
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/37d49fb3/core/src/main/java/org/apache/cxf/configuration/spring/AbstractBeanDefinitionParser.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/cxf/configuration/spring/AbstractBeanDefinitionParser.java b/core/src/main/java/org/apache/cxf/configuration/spring/AbstractBeanDefinitionParser.java
index 7fcc99f..d28cbfb 100644
--- a/core/src/main/java/org/apache/cxf/configuration/spring/AbstractBeanDefinitionParser.java
+++ b/core/src/main/java/org/apache/cxf/configuration/spring/AbstractBeanDefinitionParser.java
@@ -38,8 +38,10 @@ import org.w3c.dom.Attr;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
+
import org.apache.cxf.common.jaxb.JAXBContextCache;
import org.apache.cxf.common.jaxb.JAXBContextCache.CachedContextAndSchemas;
+import org.apache.cxf.common.jaxb.JAXBUtils;
import org.apache.cxf.common.logging.LogUtils;
import org.apache.cxf.common.util.StringUtils;
import org.apache.cxf.helpers.DOMUtils;
@@ -334,6 +336,7 @@ public abstract class AbstractBeanDefinitionParser
Class<?> c) {
try {
XMLStreamWriter xmlWriter = null;
+ Unmarshaller u = null;
try {
StringWriter writer = new StringWriter();
xmlWriter = StaxUtils.createXMLStreamWriter(writer);
@@ -348,7 +351,7 @@ public abstract class AbstractBeanDefinitionParser
jaxbbean.addConstructorArgValue(c);
bean.addPropertyValue(propertyName, jaxbbean.getBeanDefinition());
} catch (Exception ex) {
- Unmarshaller u = getContext(c).createUnmarshaller();
+ u = getContext(c).createUnmarshaller();
Object obj;
if (c != null) {
obj = u.unmarshal(data, c);
@@ -364,6 +367,7 @@ public abstract class AbstractBeanDefinitionParser
}
} finally {
StaxUtils.close(xmlWriter);
+ JAXBUtils.closeUnmarshaller(u);
}
} catch (JAXBException e) {
throw new RuntimeException("Could not parse configuration.", e);
@@ -426,8 +430,9 @@ public abstract class AbstractBeanDefinitionParser
protected static <T> T unmarshalFactoryString(String s, JAXBContext ctx, Class<T> cls) {
StringReader reader = new StringReader(s);
XMLStreamReader data = StaxUtils.createXMLStreamReader(reader);
+ Unmarshaller u = null;
try {
- Unmarshaller u = ctx.createUnmarshaller();
+ u = ctx.createUnmarshaller();
JAXBElement<?> obj = u.unmarshal(data, cls);
return cls.cast(obj.getValue());
} catch (RuntimeException e) {
@@ -440,6 +445,7 @@ public abstract class AbstractBeanDefinitionParser
} catch (XMLStreamException ex) {
throw new RuntimeException(ex);
}
+ JAXBUtils.closeUnmarshaller(u);
}
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/37d49fb3/core/src/main/java/org/apache/cxf/configuration/spring/JAXBBeanFactory.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/cxf/configuration/spring/JAXBBeanFactory.java b/core/src/main/java/org/apache/cxf/configuration/spring/JAXBBeanFactory.java
index c542482..9e4efc9 100644
--- a/core/src/main/java/org/apache/cxf/configuration/spring/JAXBBeanFactory.java
+++ b/core/src/main/java/org/apache/cxf/configuration/spring/JAXBBeanFactory.java
@@ -28,6 +28,7 @@ import javax.xml.bind.Unmarshaller;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
+import org.apache.cxf.common.jaxb.JAXBUtils;
import org.apache.cxf.staxutils.StaxUtils;
/**
@@ -44,7 +45,7 @@ public final class JAXBBeanFactory {
StringReader reader = new StringReader(s);
XMLStreamReader data = StaxUtils.createXMLStreamReader(reader);
- Unmarshaller u;
+ Unmarshaller u = null;
try {
Object obj;
u = context.createUnmarshaller();
@@ -67,6 +68,7 @@ public final class JAXBBeanFactory {
} catch (XMLStreamException ex) {
throw new RuntimeException(ex);
}
+ JAXBUtils.closeUnmarshaller(u);
}
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/37d49fb3/core/src/main/java/org/apache/cxf/ws/addressing/VersionTransformer.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/cxf/ws/addressing/VersionTransformer.java b/core/src/main/java/org/apache/cxf/ws/addressing/VersionTransformer.java
index 588c83f..dec36de 100644
--- a/core/src/main/java/org/apache/cxf/ws/addressing/VersionTransformer.java
+++ b/core/src/main/java/org/apache/cxf/ws/addressing/VersionTransformer.java
@@ -26,12 +26,16 @@ import java.util.Map;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
+import javax.xml.bind.Unmarshaller;
import javax.xml.namespace.QName;
//import javax.xml.ws.EndpointReference;
//import javax.xml.ws.wsaddressing.W3CEndpointReference;
+
+
import org.w3c.dom.Element;
+import org.apache.cxf.common.jaxb.JAXBUtils;
// importation convention: if the same class name is used for
// 2005/08 and 2004/08, then the former version is imported
// and the latter is fully qualified when used
@@ -436,12 +440,16 @@ public class VersionTransformer {
return null;
}
JAXBContext ctx = getExposedJAXBContext(tns);
- JAXBElement<?> o = ctx.createUnmarshaller().unmarshal(ref, getExposedReferenceType(tns));
- if (o != null) {
- return convertToNative(o.getValue());
+ Unmarshaller um = ctx.createUnmarshaller();
+ try {
+ JAXBElement<?> o = um.unmarshal(ref, getExposedReferenceType(tns));
+ if (o != null) {
+ return convertToNative(o.getValue());
+ }
+ return convertToNative(null);
+ } finally {
+ JAXBUtils.closeUnmarshaller(um);
}
- return convertToNative(null);
-
}
/**
* Converts a version specific EndpointReferenceType to the native version
http://git-wip-us.apache.org/repos/asf/cxf/blob/37d49fb3/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/io/DataReaderImpl.java
----------------------------------------------------------------------
diff --git a/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/io/DataReaderImpl.java b/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/io/DataReaderImpl.java
index de13029..374736f 100644
--- a/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/io/DataReaderImpl.java
+++ b/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/io/DataReaderImpl.java
@@ -34,6 +34,7 @@ import javax.xml.bind.annotation.adapters.XmlAdapter;
import javax.xml.namespace.QName;
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.databinding.DataReader;
import org.apache.cxf.interceptor.Fault;
@@ -173,20 +174,32 @@ public class DataReaderImpl<T> extends JAXBDataBase implements DataReader<T> {
}
}
- Object obj = JAXBEncoderDecoder.unmarshall(createUnmarshaller(), reader, part,
- unwrapJAXBElement);
- onCompleteUnmarshalling();
-
- return obj;
+ Unmarshaller um = createUnmarshaller();
+ try {
+ Object obj = JAXBEncoderDecoder.unmarshall(um, reader, part,
+ unwrapJAXBElement);
+ onCompleteUnmarshalling();
+
+ return obj;
+ } finally {
+ JAXBUtils.closeUnmarshaller(um);
+ }
}
public Object read(QName name, T input, Class<?> type) {
- Object obj = JAXBEncoderDecoder.unmarshall(createUnmarshaller(), input,
+ Unmarshaller um = createUnmarshaller();
+
+ try {
+ Object obj = JAXBEncoderDecoder.unmarshall(um, input,
name, type,
unwrapJAXBElement);
- onCompleteUnmarshalling();
-
- return obj;
+ onCompleteUnmarshalling();
+
+ return obj;
+ } finally {
+ JAXBUtils.closeUnmarshaller(um);
+ }
+
}
private void onCompleteUnmarshalling() {
http://git-wip-us.apache.org/repos/asf/cxf/blob/37d49fb3/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/xml/XMLSource.java
----------------------------------------------------------------------
diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/xml/XMLSource.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/xml/XMLSource.java
index c1272a6..062338d 100644
--- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/xml/XMLSource.java
+++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/xml/XMLSource.java
@@ -47,6 +47,7 @@ import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
+import org.apache.cxf.common.jaxb.JAXBUtils;
import org.apache.cxf.helpers.CastUtils;
import org.apache.cxf.jaxrs.provider.JAXBElementProvider;
import org.apache.cxf.jaxrs.utils.InjectionUtils;
@@ -358,10 +359,14 @@ public class XMLSource {
c = provider.getClassContext(cls);
}
Unmarshaller u = c.createUnmarshaller();
- if (cls.getAnnotation(XmlRootElement.class) != null) {
- return cls.cast(u.unmarshal(s));
- } else {
- return u.unmarshal(s, cls).getValue();
+ try {
+ if (cls.getAnnotation(XmlRootElement.class) != null) {
+ return cls.cast(u.unmarshal(s));
+ } else {
+ return u.unmarshal(s, cls).getValue();
+ }
+ } finally {
+ JAXBUtils.closeUnmarshaller(u);
}
} catch (Exception ex) {
throw new RuntimeException(ex);
http://git-wip-us.apache.org/repos/asf/cxf/blob/37d49fb3/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java
----------------------------------------------------------------------
diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java
index f17c93b..4c61df9 100644
--- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java
+++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java
@@ -168,13 +168,14 @@ public class JAXBElementProvider<T> extends AbstractJAXBProvider<T> {
}
XMLStreamReader reader = null;
+ Unmarshaller unmarshaller = null;
try {
boolean isCollection = InjectionUtils.isSupportedCollectionOrArray(type);
Class<?> theGenericType = isCollection ? InjectionUtils.getActualType(genericType) : type;
Class<?> theType = getActualType(theGenericType, genericType, anns);
- Unmarshaller unmarshaller = createUnmarshaller(theType, genericType, isCollection);
+ unmarshaller = createUnmarshaller(theType, genericType, isCollection);
addAttachmentUnmarshaller(unmarshaller);
Object response = null;
if (JAXBElement.class.isAssignableFrom(type)
@@ -217,6 +218,7 @@ public class JAXBElementProvider<T> extends AbstractJAXBProvider<T> {
} catch (XMLStreamException e) {
// Ignore
}
+ JAXBUtils.closeUnmarshaller(unmarshaller);
}
// unreachable
return null;
http://git-wip-us.apache.org/repos/asf/cxf/blob/37d49fb3/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXBUtils.java
----------------------------------------------------------------------
diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXBUtils.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXBUtils.java
index 27ed25a..aba95d2 100644
--- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXBUtils.java
+++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXBUtils.java
@@ -18,9 +18,12 @@
*/
package org.apache.cxf.jaxrs.utils;
+import java.io.Closeable;
+import java.io.IOException;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
+import javax.xml.bind.Unmarshaller;
import javax.xml.bind.annotation.adapters.XmlAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
@@ -28,7 +31,18 @@ public final class JAXBUtils {
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 convertWithAdapter(Object obj,
Class<?> adapterClass,
Annotation[] anns) {
http://git-wip-us.apache.org/repos/asf/cxf/blob/37d49fb3/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/AnnotationHandlerChainBuilder.java
----------------------------------------------------------------------
diff --git a/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/AnnotationHandlerChainBuilder.java b/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/AnnotationHandlerChainBuilder.java
index 914db9e..d8d62f4 100644
--- a/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/AnnotationHandlerChainBuilder.java
+++ b/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/AnnotationHandlerChainBuilder.java
@@ -44,6 +44,7 @@ import org.apache.cxf.Bus;
import org.apache.cxf.common.classloader.ClassLoaderUtils;
import org.apache.cxf.common.i18n.BundleUtils;
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.StringUtils;
import org.apache.cxf.jaxws.handler.types.PortComponentHandlerType;
@@ -265,8 +266,7 @@ public class AnnotationHandlerChainBuilder extends HandlerChainBuilder {
private void processHandlerElement(Element el, List<Handler> chain) {
try {
JAXBContext ctx = getContextForPortComponentHandlerType();
- PortComponentHandlerType pt = ctx.createUnmarshaller()
- .unmarshal(el, PortComponentHandlerType.class).getValue();
+ PortComponentHandlerType pt = JAXBUtils.unmarshall(ctx, el, PortComponentHandlerType.class).getValue();
chain.addAll(buildHandlerChain(pt, classLoader));
} catch (JAXBException e) {
// TODO Auto-generated catch block
http://git-wip-us.apache.org/repos/asf/cxf/blob/37d49fb3/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalMessageImpl.java
----------------------------------------------------------------------
diff --git a/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalMessageImpl.java b/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalMessageImpl.java
index dfe6ad0..835289a 100644
--- a/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalMessageImpl.java
+++ b/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalMessageImpl.java
@@ -47,6 +47,7 @@ import org.w3c.dom.Node;
import org.apache.cxf.binding.soap.SoapMessage;
import org.apache.cxf.binding.soap.saaj.SAAJFactoryResolver;
import org.apache.cxf.binding.soap.saaj.SAAJUtils;
+import org.apache.cxf.common.jaxb.JAXBUtils;
import org.apache.cxf.common.logging.LogUtils;
import org.apache.cxf.helpers.DOMUtils;
import org.apache.cxf.interceptor.Fault;
@@ -241,14 +242,14 @@ public class LogicalMessageImpl implements LogicalMessage {
parent.removeChild(ds.getNode());
}
try {
- return arg0.createUnmarshaller().unmarshal(ds);
+ return JAXBUtils.unmarshall(arg0, ds);
} finally {
if (parent instanceof DocumentFragment) {
parent.insertBefore(ds.getNode(), next);
}
}
}
- return arg0.createUnmarshaller().unmarshal(getPayload());
+ return JAXBUtils.unmarshall(arg0, getPayload());
} catch (JAXBException e) {
throw new WebServiceException(e);
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/37d49fb3/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/SOAPMessageContextImpl.java
----------------------------------------------------------------------
diff --git a/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/SOAPMessageContextImpl.java b/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/SOAPMessageContextImpl.java
index ffcf1ce..6dc8af0 100644
--- a/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/SOAPMessageContextImpl.java
+++ b/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/SOAPMessageContextImpl.java
@@ -40,6 +40,7 @@ import javax.xml.ws.handler.soap.SOAPMessageContext;
import org.apache.cxf.binding.soap.SoapMessage;
import org.apache.cxf.binding.soap.saaj.SAAJInInterceptor;
+import org.apache.cxf.common.jaxb.JAXBUtils;
import org.apache.cxf.helpers.CastUtils;
import org.apache.cxf.jaxws.context.WrappedMessageContext;
import org.apache.cxf.message.Message;
@@ -97,9 +98,7 @@ public class SOAPMessageContextImpl extends WrappedMessageContext implements SOA
if ((allRoles
|| roles.contains(she.getActor()))
&& name.equals(she.getElementQName())) {
-
- ret.add(context.createUnmarshaller().unmarshal(she));
-
+ ret.add(JAXBUtils.unmarshall(context, she));
}
}
return ret.toArray(new Object[ret.size()]);
http://git-wip-us.apache.org/repos/asf/cxf/blob/37d49fb3/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/spi/ProviderImpl.java
----------------------------------------------------------------------
diff --git a/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/spi/ProviderImpl.java b/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/spi/ProviderImpl.java
index bc890fa..58714a5 100644
--- a/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/spi/ProviderImpl.java
+++ b/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/spi/ProviderImpl.java
@@ -50,6 +50,7 @@ import org.apache.cxf.Bus;
import org.apache.cxf.BusFactory;
import org.apache.cxf.common.classloader.ClassLoaderUtils;
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.feature.Feature;
import org.apache.cxf.helpers.DOMUtils;
@@ -182,7 +183,7 @@ public class ProviderImpl extends javax.xml.ws.spi.Provider {
public static EndpointReferenceType convertToInternal(EndpointReference external) {
if (external instanceof W3CEndpointReference) {
-
+ Unmarshaller um = null;
try {
Document doc = DOMUtils.newDocument();
DOMResult result = new DOMResult(doc);
@@ -194,13 +195,16 @@ public class ProviderImpl extends javax.xml.ws.spi.Provider {
//jaxContext = ContextUtils.getJAXBContext();
JAXBContext context = JAXBContext
.newInstance(new Class[] {org.apache.cxf.ws.addressing.ObjectFactory.class});
- EndpointReferenceType internal = context.createUnmarshaller()
+ um = context.createUnmarshaller();
+ EndpointReferenceType internal = um
.unmarshal(reader, EndpointReferenceType.class)
.getValue();
return internal;
} catch (JAXBException e) {
// TODO Auto-generated catch block
e.printStackTrace();
+ } finally {
+ JAXBUtils.closeUnmarshaller(um);
}
return null;
} else {
@@ -362,7 +366,11 @@ public class ProviderImpl extends javax.xml.ws.spi.Provider {
return AccessController.doPrivileged(new PrivilegedExceptionAction<W3CEndpointReference>() {
public W3CEndpointReference run() throws Exception {
Unmarshaller unmarshaller = getJAXBContext().createUnmarshaller();
- return (W3CEndpointReference)unmarshaller.unmarshal(writer.getDocument());
+ try {
+ return (W3CEndpointReference)unmarshaller.unmarshal(writer.getDocument());
+ } finally {
+ JAXBUtils.closeUnmarshaller(unmarshaller);
+ }
}
});
} catch (PrivilegedActionException pae) {
@@ -391,8 +399,9 @@ public class ProviderImpl extends javax.xml.ws.spi.Provider {
final XMLStreamReader reader = StaxUtils.createXMLStreamReader(eprInfoset);
return AccessController.doPrivileged(new PrivilegedExceptionAction<EndpointReference>() {
public EndpointReference run() throws Exception {
+ Unmarshaller unmarshaller = null;
try {
- Unmarshaller unmarshaller = getJAXBContext().createUnmarshaller();
+ unmarshaller = getJAXBContext().createUnmarshaller();
return (EndpointReference)unmarshaller.unmarshal(reader);
} finally {
try {
@@ -400,6 +409,7 @@ public class ProviderImpl extends javax.xml.ws.spi.Provider {
} catch (XMLStreamException e) {
// Ignore
}
+ JAXBUtils.closeUnmarshaller(unmarshaller);
}
}
});
http://git-wip-us.apache.org/repos/asf/cxf/blob/37d49fb3/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/JSONProvider.java
----------------------------------------------------------------------
diff --git a/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/JSONProvider.java b/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/JSONProvider.java
index ab90546..2a53be9 100644
--- a/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/JSONProvider.java
+++ b/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/JSONProvider.java
@@ -217,6 +217,7 @@ public class JSONProvider<T> extends AbstractJAXBProvider<T> {
XMLStreamReader reader = null;
String enc = HttpUtils.getEncoding(mt, "UTF-8");
+ Unmarshaller unmarshaller = null;
try {
InputStream realStream = getInputStream(type, genericType, is);
if (Document.class.isAssignableFrom(type)) {
@@ -229,7 +230,7 @@ public class JSONProvider<T> extends AbstractJAXBProvider<T> {
Class<?> theGenericType = isCollection ? InjectionUtils.getActualType(genericType) : type;
Class<?> theType = getActualType(theGenericType, genericType, anns);
- Unmarshaller unmarshaller = createUnmarshaller(theType, genericType, isCollection);
+ unmarshaller = createUnmarshaller(theType, genericType, isCollection);
XMLStreamReader xsr = createReader(type, realStream, isCollection, enc);
Object response = null;
@@ -270,6 +271,7 @@ public class JSONProvider<T> extends AbstractJAXBProvider<T> {
} catch (XMLStreamException e) {
throw ExceptionUtils.toBadRequestException(e, null);
}
+ JAXBUtils.closeUnmarshaller(unmarshaller);
}
// unreachable
return null;
http://git-wip-us.apache.org/repos/asf/cxf/blob/37d49fb3/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java
----------------------------------------------------------------------
diff --git a/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java b/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java
index e0a5bf6..75e20d4 100644
--- a/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java
+++ b/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java
@@ -46,6 +46,7 @@ import org.apache.cxf.binding.soap.SoapMessage;
import org.apache.cxf.binding.soap.SoapVersion;
import org.apache.cxf.binding.soap.interceptor.AbstractSoapInterceptor;
import org.apache.cxf.binding.soap.interceptor.SoapActionInInterceptor;
+import org.apache.cxf.common.jaxb.JAXBUtils;
import org.apache.cxf.common.logging.LogUtils;
import org.apache.cxf.common.util.StringUtils;
import org.apache.cxf.headers.Header;
@@ -470,11 +471,11 @@ public class MAPCodec extends AbstractSoapInterceptor {
// REVISIT generate MessageAddressingHeaderRequired fault if an
// expected header is missing
AddressingProperties maps = null;
+ Unmarshaller unmarshaller = null;
try {
List<Header> header = message.getHeaders();
if (header != null) {
LOG.log(Level.FINE, "Inbound WS-Addressing headers");
- Unmarshaller unmarshaller = null;
Set<Element> referenceParameterHeaders = null;
QName invalidCardinalityQName = null;
Iterator<Header> iter = header.iterator();
@@ -588,6 +589,8 @@ public class MAPCodec extends AbstractSoapInterceptor {
}
} catch (JAXBException je) {
LOG.log(Level.WARNING, "SOAP_HEADER_DECODE_FAILURE_MSG", je);
+ } finally {
+ JAXBUtils.closeUnmarshaller(unmarshaller);
}
return maps;
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/37d49fb3/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/attachment/external/EndpointReferenceDomainExpressionBuilder.java
----------------------------------------------------------------------
diff --git a/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/attachment/external/EndpointReferenceDomainExpressionBuilder.java b/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/attachment/external/EndpointReferenceDomainExpressionBuilder.java
index 62b24ea..6d77493 100644
--- a/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/attachment/external/EndpointReferenceDomainExpressionBuilder.java
+++ b/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/attachment/external/EndpointReferenceDomainExpressionBuilder.java
@@ -26,13 +26,13 @@ import java.util.ResourceBundle;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
-import javax.xml.bind.Unmarshaller;
import javax.xml.namespace.QName;
import org.w3c.dom.Element;
import org.apache.cxf.common.i18n.BundleUtils;
import org.apache.cxf.common.i18n.Message;
+import org.apache.cxf.common.jaxb.JAXBUtils;
import org.apache.cxf.common.util.PackageUtils;
import org.apache.cxf.ws.addressing.EndpointReferenceType;
import org.apache.cxf.ws.policy.PolicyException;
@@ -48,7 +48,7 @@ public class EndpointReferenceDomainExpressionBuilder implements DomainExpressio
private static final Collection<QName> SUPPORTED_TYPES = Collections.singletonList(
new QName("http://www.w3.org/2005/08/addressing", "EndpointReference"));
- private Unmarshaller unmarshaller;
+ private JAXBContext context;
public EndpointReferenceDomainExpressionBuilder() {
@@ -61,7 +61,7 @@ public class EndpointReferenceDomainExpressionBuilder implements DomainExpressio
public DomainExpression build(Element e) {
Object obj = null;
try {
- obj = getUnmarshaller().unmarshal(e);
+ obj = JAXBUtils.unmarshall(createJAXBContext(), e);
} catch (JAXBException ex) {
throw new PolicyException(new Message("EPR_DOMAIN_EXPRESSION_BUILD_EXC", BUNDLE,
(Object[])null), ex);
@@ -75,28 +75,18 @@ public class EndpointReferenceDomainExpressionBuilder implements DomainExpressio
eprde.setEndpointReference((EndpointReferenceType)obj);
return eprde;
}
-
- protected Unmarshaller getUnmarshaller() {
- if (unmarshaller == null) {
- createUnmarshaller();
- }
-
- return unmarshaller;
- }
- protected synchronized void createUnmarshaller() {
- if (unmarshaller != null) {
- return;
- }
-
- try {
- Class<?> clz = EndpointReferenceType.class;
- String pkg = PackageUtils.getPackageName(clz);
- JAXBContext context = JAXBContext.newInstance(pkg, clz.getClassLoader());
- unmarshaller = context.createUnmarshaller();
- } catch (JAXBException ex) {
- throw new PolicyException(new Message("EPR_DOMAIN_EXPRESSION_BUILDER_INIT_EXC", BUNDLE,
- (Object[])null), ex);
+ protected synchronized JAXBContext createJAXBContext() {
+ if (context == null) {
+ try {
+ Class<?> clz = EndpointReferenceType.class;
+ String pkg = PackageUtils.getPackageName(clz);
+ context = JAXBContext.newInstance(pkg, clz.getClassLoader());
+ } catch (JAXBException ex) {
+ throw new PolicyException(new Message("EPR_DOMAIN_EXPRESSION_BUILDER_INIT_EXC", BUNDLE,
+ (Object[])null), ex);
+ }
}
+ return context;
}
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/37d49fb3/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/builder/jaxb/JaxbAssertionBuilder.java
----------------------------------------------------------------------
diff --git a/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/builder/jaxb/JaxbAssertionBuilder.java b/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/builder/jaxb/JaxbAssertionBuilder.java
index 22c9bd5..17966b4 100644
--- a/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/builder/jaxb/JaxbAssertionBuilder.java
+++ b/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/builder/jaxb/JaxbAssertionBuilder.java
@@ -138,10 +138,13 @@ public class JaxbAssertionBuilder<T> implements AssertionBuilder<Element> {
@SuppressWarnings("unchecked")
protected T getData(Element element) {
Object obj = null;
+ Unmarshaller um = getUnmarshaller();
try {
- obj = getUnmarshaller().unmarshal(element);
+ obj = um.unmarshal(element);
} catch (JAXBException ex) {
LogUtils.log(LOG, Level.SEVERE, "UNMARSHAL_ELEMENT_EXC", ex);
+ } finally {
+ JAXBUtils.closeUnmarshaller(um);
}
if (obj instanceof JAXBElement<?>) {
JAXBElement<?> el = (JAXBElement<?>)obj;
http://git-wip-us.apache.org/repos/asf/cxf/blob/37d49fb3/rt/wsdl/src/main/java/org/apache/cxf/wsdl/JAXBExtensionHelper.java
----------------------------------------------------------------------
diff --git a/rt/wsdl/src/main/java/org/apache/cxf/wsdl/JAXBExtensionHelper.java b/rt/wsdl/src/main/java/org/apache/cxf/wsdl/JAXBExtensionHelper.java
index abe0bcc..f5bae66 100644
--- a/rt/wsdl/src/main/java/org/apache/cxf/wsdl/JAXBExtensionHelper.java
+++ b/rt/wsdl/src/main/java/org/apache/cxf/wsdl/JAXBExtensionHelper.java
@@ -346,8 +346,9 @@ public class JAXBExtensionHelper implements ExtensionSerializer, ExtensionDeseri
QName qname, Element element, Definition wsdl,
ExtensionRegistry registry) throws WSDLException {
XMLStreamReader reader = null;
+ Unmarshaller u = null;
try {
- Unmarshaller u = createUnmarshaller();
+ u = createUnmarshaller();
Object o = null;
if (namespace == null) {
@@ -376,6 +377,7 @@ public class JAXBExtensionHelper implements ExtensionSerializer, ExtensionDeseri
} catch (XMLStreamException ex) {
throw new WSDLException(WSDLException.PARSER_ERROR, ex.getMessage(), ex);
}
+ JAXBUtils.closeUnmarshaller(u);
}
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/37d49fb3/services/ws-discovery/ws-discovery-api/src/main/java/org/apache/cxf/ws/discovery/internal/WSDiscoveryServiceImpl.java
----------------------------------------------------------------------
diff --git a/services/ws-discovery/ws-discovery-api/src/main/java/org/apache/cxf/ws/discovery/internal/WSDiscoveryServiceImpl.java b/services/ws-discovery/ws-discovery-api/src/main/java/org/apache/cxf/ws/discovery/internal/WSDiscoveryServiceImpl.java
index de8a0e6..0ddf0c2 100644
--- a/services/ws-discovery/ws-discovery-api/src/main/java/org/apache/cxf/ws/discovery/internal/WSDiscoveryServiceImpl.java
+++ b/services/ws-discovery/ws-discovery-api/src/main/java/org/apache/cxf/ws/discovery/internal/WSDiscoveryServiceImpl.java
@@ -56,6 +56,7 @@ import org.w3c.dom.Document;
import org.apache.cxf.Bus;
import org.apache.cxf.BusFactory;
import org.apache.cxf.common.jaxb.JAXBContextCache;
+import org.apache.cxf.common.jaxb.JAXBUtils;
import org.apache.cxf.common.logging.LogUtils;
import org.apache.cxf.common.util.StringUtils;
import org.apache.cxf.endpoint.Server;
@@ -498,7 +499,7 @@ public class WSDiscoveryServiceImpl implements WSDiscoveryService {
return null;
}
- Object obj = context.createUnmarshaller().unmarshal(doc.getDocumentElement());
+ Object obj = JAXBUtils.unmarshall(context, doc.getDocumentElement());
if (obj instanceof JAXBElement) {
obj = ((JAXBElement)obj).getValue();
}
[5/9] cxf git commit: [CXF-6217] Use faster method for parsing the
strings from blueprint. (use StringReader instead of ByteArrayInputStream and
use StaxUtils)
Posted by dk...@apache.org.
[CXF-6217] Use faster method for parsing the strings from blueprint. (use StringReader instead of ByteArrayInputStream and use StaxUtils)
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/8c898d66
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/8c898d66
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/8c898d66
Branch: refs/heads/3.0.x-fixes
Commit: 8c898d665163ed6710067893ce999ecbe2416249
Parents: 19e3be7
Author: Daniel Kulp <dk...@apache.org>
Authored: Wed Jul 1 10:12:06 2015 -0400
Committer: Daniel Kulp <dk...@apache.org>
Committed: Thu Jul 9 12:20:26 2015 -0400
----------------------------------------------------------------------
.../blueprint/JettyHTTPServerEngineFactoryHolder.java | 13 ++++---------
.../blueprint/NettyHttpServerEngineFactoryHolder.java | 13 +++++--------
2 files changed, 9 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/8c898d66/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/blueprint/JettyHTTPServerEngineFactoryHolder.java
----------------------------------------------------------------------
diff --git a/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/blueprint/JettyHTTPServerEngineFactoryHolder.java b/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/blueprint/JettyHTTPServerEngineFactoryHolder.java
index 4f0d415..d54cc2f 100644
--- a/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/blueprint/JettyHTTPServerEngineFactoryHolder.java
+++ b/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/blueprint/JettyHTTPServerEngineFactoryHolder.java
@@ -18,7 +18,7 @@
*/
package org.apache.cxf.transport.http_jetty.blueprint;
-import java.io.ByteArrayInputStream;
+import java.io.StringReader;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
@@ -31,7 +31,6 @@ import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
-import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Element;
@@ -41,6 +40,7 @@ import org.apache.cxf.common.util.PackageUtils;
import org.apache.cxf.common.util.StringUtils;
import org.apache.cxf.configuration.jsse.TLSServerParameters;
import org.apache.cxf.configuration.jsse.TLSServerParametersConfig;
+import org.apache.cxf.staxutils.StaxUtils;
import org.apache.cxf.transport.http_jetty.JettyHTTPServerEngine;
import org.apache.cxf.transport.http_jetty.JettyHTTPServerEngineFactory;
import org.apache.cxf.transport.http_jetty.ThreadingParameters;
@@ -71,13 +71,8 @@ public class JettyHTTPServerEngineFactoryHolder {
public void init() {
try {
-
- DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
- docFactory.setNamespaceAware(true);
-
- Element element = docFactory.newDocumentBuilder()
- .parse(new ByteArrayInputStream(parsedElement.getBytes())).getDocumentElement();
-
+ Element element = StaxUtils.read(new StringReader(parsedElement)).getDocumentElement();
+
JettyHTTPServerEngineFactoryConfigType config
= (JettyHTTPServerEngineFactoryConfigType) getJaxbObject(element,
JettyHTTPServerEngineFactoryConfigType.class);
http://git-wip-us.apache.org/repos/asf/cxf/blob/8c898d66/rt/transports/http-netty/netty-server/src/main/java/org/apache/cxf/transport/http/netty/server/blueprint/NettyHttpServerEngineFactoryHolder.java
----------------------------------------------------------------------
diff --git a/rt/transports/http-netty/netty-server/src/main/java/org/apache/cxf/transport/http/netty/server/blueprint/NettyHttpServerEngineFactoryHolder.java b/rt/transports/http-netty/netty-server/src/main/java/org/apache/cxf/transport/http/netty/server/blueprint/NettyHttpServerEngineFactoryHolder.java
index 00786db..7700949 100644
--- a/rt/transports/http-netty/netty-server/src/main/java/org/apache/cxf/transport/http/netty/server/blueprint/NettyHttpServerEngineFactoryHolder.java
+++ b/rt/transports/http-netty/netty-server/src/main/java/org/apache/cxf/transport/http/netty/server/blueprint/NettyHttpServerEngineFactoryHolder.java
@@ -18,7 +18,7 @@
*/
package org.apache.cxf.transport.http.netty.server.blueprint;
-import java.io.ByteArrayInputStream;
+import java.io.StringReader;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
@@ -26,11 +26,12 @@ import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.logging.Logger;
+
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
-import javax.xml.parsers.DocumentBuilderFactory;
+
import org.w3c.dom.Element;
import org.apache.cxf.common.jaxb.JAXBContextCache;
@@ -39,6 +40,7 @@ import org.apache.cxf.common.util.PackageUtils;
import org.apache.cxf.common.util.StringUtils;
import org.apache.cxf.configuration.jsse.TLSServerParameters;
import org.apache.cxf.configuration.jsse.TLSServerParametersConfig;
+import org.apache.cxf.staxutils.StaxUtils;
import org.apache.cxf.transport.http.netty.server.NettyHttpServerEngine;
import org.apache.cxf.transport.http.netty.server.NettyHttpServerEngineFactory;
import org.apache.cxf.transport.http.netty.server.ThreadingParameters;
@@ -63,12 +65,7 @@ public class NettyHttpServerEngineFactoryHolder {
public void init() {
try {
-
- DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
- docFactory.setNamespaceAware(true);
-
- Element element = docFactory.newDocumentBuilder()
- .parse(new ByteArrayInputStream(parsedElement.getBytes())).getDocumentElement();
+ Element element = StaxUtils.read(new StringReader(parsedElement)).getDocumentElement();
NettyHttpServerEngineFactoryConfigType config
= (NettyHttpServerEngineFactoryConfigType) getJaxbObject(element,
[3/9] cxf git commit: [CXF-6217] Fix a couple of the secure
processing thigns
Posted by dk...@apache.org.
[CXF-6217] Fix a couple of the secure processing thigns
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/34359c95
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/34359c95
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/34359c95
Branch: refs/heads/3.0.x-fixes
Commit: 34359c952209dd5b66ede5255f83bcdd729b53de
Parents: e439993
Author: Daniel Kulp <dk...@apache.org>
Authored: Wed Jul 1 10:04:31 2015 -0400
Committer: Daniel Kulp <dk...@apache.org>
Committed: Thu Jul 9 12:20:26 2015 -0400
----------------------------------------------------------------------
.../org/apache/cxf/jaxrs/ext/xml/XMLSource.java | 29 ++++++++++++++++----
.../cxf/jaxrs/provider/XSLTJaxbProvider.java | 2 ++
.../bootstrapping/SimpleXMLSettingsStorage.java | 9 +++++-
3 files changed, 34 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/34359c95/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/xml/XMLSource.java
----------------------------------------------------------------------
diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/xml/XMLSource.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/xml/XMLSource.java
index 062338d..f1816d6 100644
--- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/xml/XMLSource.java
+++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/xml/XMLSource.java
@@ -26,6 +26,7 @@ import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
+import javax.xml.XMLConstants;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
import javax.xml.bind.annotation.XmlRootElement;
@@ -39,6 +40,7 @@ import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
+import javax.xml.xpath.XPathFactoryConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
@@ -283,16 +285,33 @@ public class XMLSource {
private Object evaluate(String expression, Map<String, String> namespaces, QName type) {
- XPath xpath = XPathFactory.newInstance().newXPath();
+ XPathFactory factory = XPathFactory.newInstance();
+ try {
+ factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, Boolean.TRUE);
+ } catch (XPathFactoryConfigurationException e) {
+ throw new RuntimeException(e);
+ }
+ XPath xpath = factory.newXPath();
xpath.setNamespaceContext(new NamespaceContextImpl(namespaces));
+ boolean releaseDoc = false;
try {
- if (stream == null) {
- return xpath.compile(expression).evaluate(doc, type);
- } else {
- return xpath.compile(expression).evaluate(new InputSource(stream), type);
+ if (stream != null) {
+ //xalan xpath evaluate parses to a DOM via a DocumentBuilderFactory, but doesn't
+ //set the SecureProcessing on that. Since a DOM is always created, might as well
+ //do it via stax and avoid the service factory performance hits that the
+ //DocumentBuilderFactory will entail as well as get the extra security
+ //that woodstox provides
+ setBuffering();
+ releaseDoc = true;
}
+ return xpath.compile(expression).evaluate(doc, type);
} catch (XPathExpressionException ex) {
throw new IllegalArgumentException("Illegal XPath expression '" + expression + "'", ex);
+ } finally {
+ if (releaseDoc) {
+ //don't need to maintain the doc
+ doc = null;
+ }
}
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/34359c95/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/XSLTJaxbProvider.java
----------------------------------------------------------------------
diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/XSLTJaxbProvider.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/XSLTJaxbProvider.java
index 528ad80..bf1e13e 100644
--- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/XSLTJaxbProvider.java
+++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/XSLTJaxbProvider.java
@@ -41,6 +41,7 @@ import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.PathSegment;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.ext.Provider;
+import javax.xml.XMLConstants;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
@@ -519,6 +520,7 @@ public class XSLTJaxbProvider<T> extends JAXBElementProvider<T> {
source.setSystemId(urlStream.toExternalForm());
if (factory == null) {
factory = (SAXTransformerFactory)TransformerFactory.newInstance();
+ factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, Boolean.TRUE);
if (uriResolver != null) {
factory.setURIResolver(uriResolver);
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/34359c95/rt/management-web/src/main/java/org/apache/cxf/management/web/browser/bootstrapping/SimpleXMLSettingsStorage.java
----------------------------------------------------------------------
diff --git a/rt/management-web/src/main/java/org/apache/cxf/management/web/browser/bootstrapping/SimpleXMLSettingsStorage.java b/rt/management-web/src/main/java/org/apache/cxf/management/web/browser/bootstrapping/SimpleXMLSettingsStorage.java
index ceecd31..7142564 100644
--- a/rt/management-web/src/main/java/org/apache/cxf/management/web/browser/bootstrapping/SimpleXMLSettingsStorage.java
+++ b/rt/management-web/src/main/java/org/apache/cxf/management/web/browser/bootstrapping/SimpleXMLSettingsStorage.java
@@ -20,12 +20,14 @@
package org.apache.cxf.management.web.browser.bootstrapping;
import java.io.File;
+import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.GregorianCalendar;
import java.util.List;
+
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
@@ -37,8 +39,10 @@ import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
+import javax.xml.stream.XMLStreamReader;
import org.apache.commons.lang.Validate;
+import org.apache.cxf.staxutils.StaxUtils;
public class SimpleXMLSettingsStorage implements SettingsStorage {
private static final String DEFAULT_FILENAME = "logbrowser-settings.xml";
@@ -68,12 +72,15 @@ public class SimpleXMLSettingsStorage implements SettingsStorage {
File file = new File(filename);
if (file.exists()) {
Unmarshaller unmarshaller = context.createUnmarshaller();
- entries = (Entries) unmarshaller.unmarshal(file);
+ XMLStreamReader reader = StaxUtils.createXMLStreamReader(new FileInputStream(file));
+ entries = (Entries) unmarshaller.unmarshal(reader);
}
if (entries == null) {
entries = new Entries();
}
+ } catch (FileNotFoundException e) {
+ throw new RuntimeException(e);
} catch (JAXBException e) {
throw new RuntimeException(e);
}
[8/9] cxf git commit: Recording .gitmergeinfo Changes
Posted by dk...@apache.org.
Recording .gitmergeinfo Changes
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/b6907af1
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/b6907af1
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/b6907af1
Branch: refs/heads/3.0.x-fixes
Commit: b6907af15937c50e894d784c509bd4b9ca895f47
Parents: e6a3d86
Author: Daniel Kulp <dk...@apache.org>
Authored: Thu Jul 9 08:59:57 2015 -0400
Committer: Daniel Kulp <dk...@apache.org>
Committed: Thu Jul 9 12:20:27 2015 -0400
----------------------------------------------------------------------
.gitmergeinfo | 6 ++++++
1 file changed, 6 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/b6907af1/.gitmergeinfo
----------------------------------------------------------------------
diff --git a/.gitmergeinfo b/.gitmergeinfo
index 271380d..de597be 100644
--- a/.gitmergeinfo
+++ b/.gitmergeinfo
@@ -126,8 +126,10 @@ B 5743d5e9bf547bcd0066b2369adadcbb5a8bacbd
B 577ccc51c269c66e7810eb4aad9f93cb23c78f8e
B 578a51c1ba7f12b35730b0d66ac6b4ab880fb94c
B 5891c0d23b776d41be02e74a3b98a3881970d08f
+B 58d5200bdc0f666615e99f1c624c53299120518a
B 593525139909e081ae809278d301688c0ba03697
B 59b7fd7072a71498aecb1b5da6ec51ea89f7381b
+B 5a1dd7723e3c21267e12d1562f4a2425049bc7ad
B 5aa98c1c2391ba9ce86797119a972ae56a4a9fd0
B 5b26ab08f19f6c55a45c0f1f7ddccd09b0a2ed23
B 5bac26a132e7999bf0bd108d4cffb674873a56ca
@@ -234,6 +236,7 @@ B 9dd4194ce6af00377b0e1bdc6b15744fe03e29c9
B 9de88cce894ca9ea746abf27943635467e23c153
B 9dfb278c7739b9f4621f43b8146d057e21fafb64
B 9ea935fcbf3869f5fa4fd1e75a0a2309cc780415
+B 9fc26998d89a9f7d04d3a57a97b4c09c745b076b
B 9fce658c4611f790983a3d5cef7312eec8771461
B 9fe4c04a1c875b3e8f402268cd9dfe18431b5cc9
B a04a1e06f7fffc5f145e33c6832f31b04782516b
@@ -390,6 +393,7 @@ M 10b043faa0652a6a06f5f020173162edef7fb0ca
M 12d070f4392316cdfff03eb41abe22531ed64ee9
M 16ffa0f10dac874cd5727d312ac56a78b13e5ca9
M 1701e6c8d4e794f25d69781e3f69357723ad7fcf
+M 174bd11dcfeae47998723757542abe56c792cc76
M 18a3d43cb0044fcb84d3cc89f138fd9e7110dd04
M 1946e323a0df6e5f9748af82106cff39d7b5d01f
M 19e912e8d4b6d3f3a4c2b88b1d53e691496d7dc0
@@ -464,6 +468,7 @@ M 7b31a2afca1ec599100511ce1f7428160618f389
M 7b4cb818cb6276dfd3a7432c796e67e98c8c941e
M 7bf10fc3fb018d533409cc444c2d7b75144b9e23
M 816e1a5ef4c0992a7d084a0529e42d9ad6a4a3c6
+M 81f0b461d662eccd23ac5ade7349eecdc0316ddf
M 824234e627f6205129b7f97e2fde7f1cf1f17093
M 865eb64d44fd4e904f166cb03b0d15ca8b5f0ba5
M 88a7cd850f0471d6e51f9045bf01f775a905cbf2
@@ -501,6 +506,7 @@ M bd1d31f195caab56fbe565fbfb63d9170a0c9406
M bd7babd656fc06f3e5839bf11e186ec12fdeb6fa
M bee82ba7d1766b555d965a75b3846ead4686239e
M c1c75b039df7bd1ca9f11ff21f16593fed0c8c16
+M c322ba957e09c58ccef0fe25b382497b031fdc06
M c34bf7ad6bc55b6584dfd009f49a3f4eb8ececc9
M c55664128b1223667dedacc2011ccd5945d9c8b9
M c5dbb84ac4e5bf73555e85ae1e65a5065393c602
[6/9] cxf git commit: Eliminate eclipse warnings
Posted by dk...@apache.org.
Eliminate eclipse warnings
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/e4399939
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/e4399939
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/e4399939
Branch: refs/heads/3.0.x-fixes
Commit: e439993929afec2bf416b7a24596f52bd947f1f1
Parents: 37d49fb
Author: Daniel Kulp <dk...@apache.org>
Authored: Wed Jul 1 08:43:17 2015 -0400
Committer: Daniel Kulp <dk...@apache.org>
Committed: Thu Jul 9 12:20:26 2015 -0400
----------------------------------------------------------------------
core/src/main/java/org/apache/cxf/common/security/SimpleGroup.java | 1 +
.../apache/cxf/jaxrs/security/KerberosAuthenticationFilter.java | 1 +
.../apache/cxf/rs/security/jose/jaxrs/JwtAuthenticationFilter.java | 1 +
.../cxf/rs/security/saml/authorization/SubjectPrincipal.java | 2 ++
4 files changed, 5 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/e4399939/core/src/main/java/org/apache/cxf/common/security/SimpleGroup.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/cxf/common/security/SimpleGroup.java b/core/src/main/java/org/apache/cxf/common/security/SimpleGroup.java
index eb5e957..1d39a5e 100644
--- a/core/src/main/java/org/apache/cxf/common/security/SimpleGroup.java
+++ b/core/src/main/java/org/apache/cxf/common/security/SimpleGroup.java
@@ -31,6 +31,7 @@ import java.util.Set;
*/
public class SimpleGroup extends SimplePrincipal implements Group {
+ private static final long serialVersionUID = 1L;
private Set<Principal> members = new HashSet<Principal>();
public SimpleGroup(String groupName) {
http://git-wip-us.apache.org/repos/asf/cxf/blob/e4399939/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/security/KerberosAuthenticationFilter.java
----------------------------------------------------------------------
diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/security/KerberosAuthenticationFilter.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/security/KerberosAuthenticationFilter.java
index c23739b..b5994d6 100644
--- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/security/KerberosAuthenticationFilter.java
+++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/security/KerberosAuthenticationFilter.java
@@ -218,6 +218,7 @@ public class KerberosAuthenticationFilter implements ContainerRequestFilter {
}
public static class KerberosPrincipal extends SimplePrincipal {
+ private static final long serialVersionUID = 1L;
private String complexName;
public KerberosPrincipal(String simpleName, String complexName) {
super(simpleName);
http://git-wip-us.apache.org/repos/asf/cxf/blob/e4399939/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwtAuthenticationFilter.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwtAuthenticationFilter.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwtAuthenticationFilter.java
index 0c32f55..7146679 100644
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwtAuthenticationFilter.java
+++ b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwtAuthenticationFilter.java
@@ -61,6 +61,7 @@ public class JwtAuthenticationFilter extends AbstractJoseJwtConsumer implements
this.jweOnly = jweOnly;
}
public static class JwtPrincipal extends SimplePrincipal {
+ private static final long serialVersionUID = 1L;
private JwtToken jwt;
public JwtPrincipal(JwtToken jwt) {
super(jwt.getClaims().getSubject());
http://git-wip-us.apache.org/repos/asf/cxf/blob/e4399939/rt/rs/security/xml/src/main/java/org/apache/cxf/rs/security/saml/authorization/SubjectPrincipal.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/xml/src/main/java/org/apache/cxf/rs/security/saml/authorization/SubjectPrincipal.java b/rt/rs/security/xml/src/main/java/org/apache/cxf/rs/security/saml/authorization/SubjectPrincipal.java
index 8ed3a90..cbeecf5 100644
--- a/rt/rs/security/xml/src/main/java/org/apache/cxf/rs/security/saml/authorization/SubjectPrincipal.java
+++ b/rt/rs/security/xml/src/main/java/org/apache/cxf/rs/security/saml/authorization/SubjectPrincipal.java
@@ -22,6 +22,8 @@ import org.apache.cxf.common.security.SimplePrincipal;
import org.apache.cxf.rs.security.saml.assertion.Subject;
public class SubjectPrincipal extends SimplePrincipal {
+ private static final long serialVersionUID = 1L;
+
private Subject subject;
public SubjectPrincipal(String principalName, Subject subject) {
super(principalName);
[2/9] cxf git commit: Fix checkstyle
Posted by dk...@apache.org.
Fix checkstyle
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/19e3be79
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/19e3be79
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/19e3be79
Branch: refs/heads/3.0.x-fixes
Commit: 19e3be79a2c508666985014dcecb8dfa64c10e9b
Parents: 34359c9
Author: Daniel Kulp <dk...@apache.org>
Authored: Wed Jul 1 10:08:57 2015 -0400
Committer: Daniel Kulp <dk...@apache.org>
Committed: Thu Jul 9 12:20:26 2015 -0400
----------------------------------------------------------------------
.../src/main/java/org/apache/cxf/jaxrs/ext/xml/XMLSource.java | 2 --
1 file changed, 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/19e3be79/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/xml/XMLSource.java
----------------------------------------------------------------------
diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/xml/XMLSource.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/xml/XMLSource.java
index f1816d6..b5bf725 100644
--- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/xml/XMLSource.java
+++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/xml/XMLSource.java
@@ -47,8 +47,6 @@ import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
-import org.xml.sax.InputSource;
-
import org.apache.cxf.common.jaxb.JAXBUtils;
import org.apache.cxf.helpers.CastUtils;
import org.apache.cxf.jaxrs.provider.JAXBElementProvider;
[7/9] cxf git commit: [CXF-6481] Update to use latest snapshot
version of bug986 xjc plugins Set the eventHandler for the unmarshallers to
null so we get a proper error if something isn't working as expected
Posted by dk...@apache.org.
[CXF-6481] Update to use latest snapshot version of bug986 xjc plugins
Set the eventHandler for the unmarshallers to null so we get a proper error if something isn't working as expected
# Conflicts:
# pom.xml
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/e6a3d860
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/e6a3d860
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/e6a3d860
Branch: refs/heads/3.0.x-fixes
Commit: e6a3d860f7b80c9a0b3563eb29509693bd817f85
Parents: 70591bf
Author: Daniel Kulp <dk...@apache.org>
Authored: Wed Jul 8 15:59:33 2015 -0400
Committer: Daniel Kulp <dk...@apache.org>
Committed: Thu Jul 9 12:20:27 2015 -0400
----------------------------------------------------------------------
.../org/apache/cxf/common/jaxb/JAXBUtils.java | 17 ++++++++++++-
.../AbstractBPBeanDefinitionParser.java | 1 +
.../jsse/TLSClientParametersConfig.java | 8 +++---
.../spring/AbstractBeanDefinitionParser.java | 1 +
.../configuration/spring/JAXBBeanFactory.java | 26 +++++++++-----------
.../cxf/ws/addressing/VersionTransformer.java | 1 +
pom.xml | 2 +-
rt/transports/http-jetty/pom.xml | 6 +++++
.../JettyHTTPServerEngineFactoryHolder.java | 8 +++---
.../apache/cxf/ws/addressing/soap/MAPCodec.java | 1 +
.../builder/jaxb/JaxbAssertionBuilder.java | 4 ++-
11 files changed, 48 insertions(+), 27 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/e6a3d860/core/src/main/java/org/apache/cxf/common/jaxb/JAXBUtils.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/cxf/common/jaxb/JAXBUtils.java b/core/src/main/java/org/apache/cxf/common/jaxb/JAXBUtils.java
index fe3d2ed..f4e4b54 100644
--- a/core/src/main/java/org/apache/cxf/common/jaxb/JAXBUtils.java
+++ b/core/src/main/java/org/apache/cxf/common/jaxb/JAXBUtils.java
@@ -183,6 +183,7 @@ public final class JAXBUtils {
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);
@@ -191,6 +192,7 @@ public final class JAXBUtils {
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);
@@ -199,20 +201,33 @@ public final class JAXBUtils {
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,
+ 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);
http://git-wip-us.apache.org/repos/asf/cxf/blob/e6a3d860/core/src/main/java/org/apache/cxf/configuration/blueprint/AbstractBPBeanDefinitionParser.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/cxf/configuration/blueprint/AbstractBPBeanDefinitionParser.java b/core/src/main/java/org/apache/cxf/configuration/blueprint/AbstractBPBeanDefinitionParser.java
index c211c8c..1e34cf0 100644
--- a/core/src/main/java/org/apache/cxf/configuration/blueprint/AbstractBPBeanDefinitionParser.java
+++ b/core/src/main/java/org/apache/cxf/configuration/blueprint/AbstractBPBeanDefinitionParser.java
@@ -378,6 +378,7 @@ public abstract class AbstractBPBeanDefinitionParser {
} catch (Exception ex) {
u = getContext(c).createUnmarshaller();
+ u.setEventHandler(null);
Object obj;
if (c != null) {
obj = u.unmarshal(data, c);
http://git-wip-us.apache.org/repos/asf/cxf/blob/e6a3d860/core/src/main/java/org/apache/cxf/configuration/jsse/TLSClientParametersConfig.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/cxf/configuration/jsse/TLSClientParametersConfig.java b/core/src/main/java/org/apache/cxf/configuration/jsse/TLSClientParametersConfig.java
index 7df3e05..e67571b 100644
--- a/core/src/main/java/org/apache/cxf/configuration/jsse/TLSClientParametersConfig.java
+++ b/core/src/main/java/org/apache/cxf/configuration/jsse/TLSClientParametersConfig.java
@@ -29,7 +29,6 @@ import javax.net.ssl.TrustManager;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
-import javax.xml.bind.Unmarshaller;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
@@ -141,10 +140,10 @@ public final class TLSClientParametersConfig {
StringReader reader = new StringReader(s);
XMLStreamReader data = StaxUtils.createXMLStreamReader(reader);
- Unmarshaller u = null;
try {
- u = getContext().createUnmarshaller();
- JAXBElement<TLSClientParametersType> type = u.unmarshal(data, TLSClientParametersType.class);
+ JAXBElement<TLSClientParametersType> type = JAXBUtils.unmarshall(getContext(),
+ data,
+ TLSClientParametersType.class);
TLSClientParametersType cpt = type.getValue();
return createTLSClientParametersFromType(cpt);
} catch (RuntimeException e) {
@@ -157,7 +156,6 @@ public final class TLSClientParametersConfig {
} catch (XMLStreamException ex) {
throw new RuntimeException(ex);
}
- JAXBUtils.closeUnmarshaller(u);
}
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/e6a3d860/core/src/main/java/org/apache/cxf/configuration/spring/AbstractBeanDefinitionParser.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/cxf/configuration/spring/AbstractBeanDefinitionParser.java b/core/src/main/java/org/apache/cxf/configuration/spring/AbstractBeanDefinitionParser.java
index d28cbfb..3ad3e23 100644
--- a/core/src/main/java/org/apache/cxf/configuration/spring/AbstractBeanDefinitionParser.java
+++ b/core/src/main/java/org/apache/cxf/configuration/spring/AbstractBeanDefinitionParser.java
@@ -352,6 +352,7 @@ public abstract class AbstractBeanDefinitionParser
bean.addPropertyValue(propertyName, jaxbbean.getBeanDefinition());
} catch (Exception ex) {
u = getContext(c).createUnmarshaller();
+ u.setEventHandler(null);
Object obj;
if (c != null) {
obj = u.unmarshal(data, c);
http://git-wip-us.apache.org/repos/asf/cxf/blob/e6a3d860/core/src/main/java/org/apache/cxf/configuration/spring/JAXBBeanFactory.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/cxf/configuration/spring/JAXBBeanFactory.java b/core/src/main/java/org/apache/cxf/configuration/spring/JAXBBeanFactory.java
index 9e4efc9..9c606df 100644
--- a/core/src/main/java/org/apache/cxf/configuration/spring/JAXBBeanFactory.java
+++ b/core/src/main/java/org/apache/cxf/configuration/spring/JAXBBeanFactory.java
@@ -24,7 +24,6 @@ import java.io.StringReader;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
-import javax.xml.bind.Unmarshaller;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
@@ -39,25 +38,25 @@ public final class JAXBBeanFactory {
//nothing
}
- public static Object createJAXBBean(JAXBContext context,
+ public static <T> T createJAXBBean(JAXBContext context,
String s,
- Class<?> c) {
+ Class<T> c) {
StringReader reader = new StringReader(s);
XMLStreamReader data = StaxUtils.createXMLStreamReader(reader);
- Unmarshaller u = null;
try {
- Object obj;
- u = context.createUnmarshaller();
+
+ T obj = null;
if (c != null) {
- obj = u.unmarshal(data, c);
+ obj = JAXBUtils.unmarshall(context, data, c).getValue();
} else {
- obj = u.unmarshal(data);
- }
- if (obj instanceof JAXBElement<?>) {
- JAXBElement<?> el = (JAXBElement<?>)obj;
- obj = el.getValue();
-
+ Object o = JAXBUtils.unmarshall(context, data);
+ if (o instanceof JAXBElement<?>) {
+ JAXBElement<?> el = (JAXBElement<?>)o;
+ @SuppressWarnings("unchecked")
+ T ot = (T)el.getValue();
+ obj = ot;
+ }
}
return obj;
} catch (JAXBException e) {
@@ -68,7 +67,6 @@ public final class JAXBBeanFactory {
} catch (XMLStreamException ex) {
throw new RuntimeException(ex);
}
- JAXBUtils.closeUnmarshaller(u);
}
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/e6a3d860/core/src/main/java/org/apache/cxf/ws/addressing/VersionTransformer.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/cxf/ws/addressing/VersionTransformer.java b/core/src/main/java/org/apache/cxf/ws/addressing/VersionTransformer.java
index dec36de..d113d3b 100644
--- a/core/src/main/java/org/apache/cxf/ws/addressing/VersionTransformer.java
+++ b/core/src/main/java/org/apache/cxf/ws/addressing/VersionTransformer.java
@@ -441,6 +441,7 @@ public class VersionTransformer {
}
JAXBContext ctx = getExposedJAXBContext(tns);
Unmarshaller um = ctx.createUnmarshaller();
+ um.setEventHandler(null);
try {
JAXBElement<?> o = um.unmarshal(ref, getExposedReferenceType(tns));
if (o != null) {
http://git-wip-us.apache.org/repos/asf/cxf/blob/e6a3d860/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 1b95e09..5fdcfe8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -43,7 +43,7 @@
<properties>
<cxf.compiler.fork>false</cxf.compiler.fork>
<cxf.build-utils.version>3.0.0</cxf.build-utils.version>
- <cxf.xjc-utils.version>3.0.3</cxf.xjc-utils.version>
+ <cxf.xjc-utils.version>3.0.4-SNAPSHOT</cxf.xjc-utils.version>
<cxf.jdk.version>1.6</cxf.jdk.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<site.deploy.url>scp://people.apache.org/www/cxf.apache.org/maven-site</site.deploy.url>
http://git-wip-us.apache.org/repos/asf/cxf/blob/e6a3d860/rt/transports/http-jetty/pom.xml
----------------------------------------------------------------------
diff --git a/rt/transports/http-jetty/pom.xml b/rt/transports/http-jetty/pom.xml
index 27e2dcc..fc441fa 100644
--- a/rt/transports/http-jetty/pom.xml
+++ b/rt/transports/http-jetty/pom.xml
@@ -162,9 +162,15 @@
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
+ <extensions>
+ <extension>org.apache.cxf.xjcplugins:cxf-xjc-bug986:${cxf.xjc-utils.version}</extension>
+ </extensions>
<sourceRoot>${basedir}/target/generated/src/main/java</sourceRoot>
<xsdOptions>
<xsdOption>
+ <extensionArgs>
+ <arg>-Xbug986</arg>
+ </extensionArgs>
<xsd>${basedir}/src/main/resources/schemas/configuration/http-jetty.xsd</xsd>
<catalog>${basedir}/src/main/build-resources/catalog.cat</catalog>
<deleteDirs>
http://git-wip-us.apache.org/repos/asf/cxf/blob/e6a3d860/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/blueprint/JettyHTTPServerEngineFactoryHolder.java
----------------------------------------------------------------------
diff --git a/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/blueprint/JettyHTTPServerEngineFactoryHolder.java b/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/blueprint/JettyHTTPServerEngineFactoryHolder.java
index d54cc2f..fdf40d3 100644
--- a/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/blueprint/JettyHTTPServerEngineFactoryHolder.java
+++ b/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/blueprint/JettyHTTPServerEngineFactoryHolder.java
@@ -30,11 +30,11 @@ import java.util.logging.Logger;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
-import javax.xml.bind.Unmarshaller;
import org.w3c.dom.Element;
import org.apache.cxf.common.jaxb.JAXBContextCache;
+import org.apache.cxf.common.jaxb.JAXBUtils;
import org.apache.cxf.common.logging.LogUtils;
import org.apache.cxf.common.util.PackageUtils;
import org.apache.cxf.common.util.StringUtils;
@@ -210,12 +210,10 @@ public class JettyHTTPServerEngineFactoryHolder {
this.handlersMap = handlersMap;
}
- protected Object getJaxbObject(Element parent, Class<?> c) {
+ protected <T> T getJaxbObject(Element parent, Class<T> c) {
try {
- Unmarshaller umr = getContext(c).createUnmarshaller();
- JAXBElement<?> ele = (JAXBElement<?>) umr.unmarshal(parent);
-
+ JAXBElement<T> ele = JAXBUtils.unmarshall(getContext(c), parent, c);
return ele.getValue();
} catch (JAXBException e) {
LOG.warning("Unable to parse property due to " + e);
http://git-wip-us.apache.org/repos/asf/cxf/blob/e6a3d860/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java
----------------------------------------------------------------------
diff --git a/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java b/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java
index 75e20d4..a324593 100644
--- a/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java
+++ b/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java
@@ -493,6 +493,7 @@ public class MAPCodec extends AbstractSoapInterceptor {
VersionTransformer.getExposedJAXBContext(headerURI);
unmarshaller =
jaxbContext.createUnmarshaller();
+ unmarshaller.setEventHandler(null);
}
if (maps == null) {
maps = new AddressingProperties();
http://git-wip-us.apache.org/repos/asf/cxf/blob/e6a3d860/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/builder/jaxb/JaxbAssertionBuilder.java
----------------------------------------------------------------------
diff --git a/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/builder/jaxb/JaxbAssertionBuilder.java b/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/builder/jaxb/JaxbAssertionBuilder.java
index 17966b4..c00c8b2 100644
--- a/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/builder/jaxb/JaxbAssertionBuilder.java
+++ b/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/builder/jaxb/JaxbAssertionBuilder.java
@@ -99,7 +99,9 @@ public class JaxbAssertionBuilder<T> implements AssertionBuilder<Element> {
protected Unmarshaller getUnmarshaller() {
try {
- return getContext().createUnmarshaller();
+ Unmarshaller um = getContext().createUnmarshaller();
+ um.setEventHandler(null);
+ return um;
} catch (JAXBException e) {
throw new RuntimeException(e);
}
[9/9] cxf git commit: Fix X509TokenValidator with latest changes in
wss4j
Posted by dk...@apache.org.
Fix X509TokenValidator with latest changes in wss4j
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/2d641410
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/2d641410
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/2d641410
Branch: refs/heads/3.0.x-fixes
Commit: 2d6414108cac3ec6208e9f961d24d0d1d49289c7
Parents: b6907af
Author: Daniel Kulp <dk...@apache.org>
Authored: Wed Jul 8 16:39:07 2015 -0400
Committer: Daniel Kulp <dk...@apache.org>
Committed: Thu Jul 9 12:20:27 2015 -0400
----------------------------------------------------------------------
.../org/apache/cxf/sts/token/validator/X509TokenValidator.java | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/2d641410/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/validator/X509TokenValidator.java
----------------------------------------------------------------------
diff --git a/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/validator/X509TokenValidator.java b/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/validator/X509TokenValidator.java
index 4c68c44..1cf2ee7 100644
--- a/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/validator/X509TokenValidator.java
+++ b/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/validator/X509TokenValidator.java
@@ -28,7 +28,9 @@ import javax.security.auth.callback.CallbackHandler;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
+import org.w3c.dom.Node;
import org.w3c.dom.Text;
+
import org.apache.cxf.common.logging.LogUtils;
import org.apache.cxf.helpers.DOMUtils;
import org.apache.cxf.sts.STSPropertiesMBean;
@@ -146,7 +148,9 @@ public class X509TokenValidator implements TokenValidator {
binarySecurity.setEncodingType(encodingType);
binarySecurity.setValueType(binarySecurityType.getValueType());
String data = binarySecurityType.getValue();
- ((Text)binarySecurity.getElement().getFirstChild()).setData(data);
+
+ Node textNode = doc.createTextNode(data);
+ binarySecurity.getElement().appendChild(textNode);
} else if (validateTarget.isDOMElement()) {
try {
Document doc = DOMUtils.createDocument();