Author: seanoc
Date: Thu Dec 18 02:44:17 2008
New Revision: 727692
URL: http://svn.apache.org/viewvc?rev=727692&view=rev
Log:
Removed thread unsafe NodeLists.
Modified:
cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/ReadHeaderInterceptorTest.java
cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/saaj/SAAJInInterceptorTest.java
cxf/trunk/rt/core/src/test/java/org/apache/cxf/wsdl11/WSDLServiceBuilderTest.java
cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/spring/JAXBHelper.java
cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/spring/JettyHTTPServerEngineBeanDefinitionParser.java
Modified:
cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/ReadHeaderInterceptorTest.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/ReadHeaderInterceptorTest.java?rev=727692&r1=727691&r2=727692&view=diff
==============================================================================
---
cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/ReadHeaderInterceptorTest.java
(original)
+++
cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/ReadHeaderInterceptorTest.java
Thu Dec 18 02:44:17 2008
@@ -98,13 +98,6 @@
headerChilds.add((Element) hdr.getObject());
}
}
-// for (int i = 0; i < eleHeaders.getChildNodes().getLength(); i++) {
-// if (eleHeaders.getChildNodes().item(i) instanceof Element) {
-// Element element =
(Element)eleHeaders.getChildNodes().item(i);
-// headerChilds.add(element);
-// }
-// }
-
assertEquals(2, headerChilds.size());
for (int i = 0; i < headerChilds.size(); i++) {
Element ele = headerChilds.get(i);
Modified:
cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/saaj/SAAJInInterceptorTest.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/saaj/SAAJInInterceptorTest.java?rev=727692&r1=727691&r2=727692&view=diff
==============================================================================
---
cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/saaj/SAAJInInterceptorTest.java
(original)
+++
cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/saaj/SAAJInInterceptorTest.java
Thu Dec 18 02:44:17 2008
@@ -90,13 +90,7 @@
headerChilds.add((Element) hdr.getObject());
}
}
-// for (int i = 0; i < eleHeaders.getChildNodes().getLength(); i++) {
-// if (eleHeaders.getChildNodes().item(i) instanceof Element) {
-// Element element =
(Element)eleHeaders.getChildNodes().item(i);
-// headerChilds.add(element);
-// }
-// }
-
+
assertEquals(2, headerChilds.size());
}
Modified:
cxf/trunk/rt/core/src/test/java/org/apache/cxf/wsdl11/WSDLServiceBuilderTest.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/test/java/org/apache/cxf/wsdl11/WSDLServiceBuilderTest.java?rev=727692&r1=727691&r2=727692&view=diff
==============================================================================
---
cxf/trunk/rt/core/src/test/java/org/apache/cxf/wsdl11/WSDLServiceBuilderTest.java
(original)
+++
cxf/trunk/rt/core/src/test/java/org/apache/cxf/wsdl11/WSDLServiceBuilderTest.java
Thu Dec 18 02:44:17 2008
@@ -41,6 +41,7 @@
import org.w3c.dom.Document;
import org.w3c.dom.Element;
+import org.w3c.dom.Node;
import org.apache.cxf.Bus;
import org.apache.cxf.binding.BindingFactoryManager;
@@ -48,6 +49,7 @@
import org.apache.cxf.common.logging.LogUtils;
import org.apache.cxf.common.xmlschema.SchemaCollection;
import org.apache.cxf.helpers.CastUtils;
+import org.apache.cxf.helpers.DOMUtils;
import org.apache.cxf.helpers.XMLUtils;
import org.apache.cxf.service.model.BindingFaultInfo;
import org.apache.cxf.service.model.BindingInfo;
@@ -426,18 +428,15 @@
DocumentBuilder db =
DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc =
db.parse(this.getClass().getResourceAsStream("./s1/s2/schema2.xsd"));
Element schemaImport = null;
- for (int i = 0; i < doc.getChildNodes().getLength(); i++) {
- if (doc.getChildNodes().item(i) instanceof Element) {
- Element schema = (Element) doc.getChildNodes().item(i);
- for (int j = 0; j < schema.getChildNodes().getLength(); j++) {
- if (schema.getChildNodes().item(j) instanceof Element) {
- schemaImport = (Element)
schema.getChildNodes().item(j);
- break;
- }
- }
- break;
+
+ Node node = doc.getFirstChild();
+ while (node != null) {
+ if (node instanceof Element) {
+ schemaImport = DOMUtils.getFirstElement(node);
}
+ node = node.getNextSibling();
}
+
if (schemaImport == null) {
fail("Can't find import element");
}
Modified:
cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/spring/JAXBHelper.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/spring/JAXBHelper.java?rev=727692&r1=727691&r2=727692&view=diff
==============================================================================
---
cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/spring/JAXBHelper.java
(original)
+++
cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/spring/JAXBHelper.java
Thu Dec 18 02:44:17 2008
@@ -27,10 +27,8 @@
import javax.xml.bind.Unmarshaller;
import javax.xml.namespace.QName;
-
import org.w3c.dom.Element;
import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
public final class JAXBHelper {
@@ -44,7 +42,6 @@
QName name,
Class<?> c) throws JAXBException {
List<V> list = new ArrayList<V>();
- NodeList nl = parent.getChildNodes();
Node data = null;
JAXBContext context = null;
@@ -55,18 +52,18 @@
} else {
context = JAXBContext.newInstance(pkg);
}
-
-
- for (int i = 0; i < nl.getLength(); i++) {
- Node n = nl.item(i);
- if (n.getNodeType() == Node.ELEMENT_NODE &&
name.getLocalPart().equals(n.getLocalName())
- && name.getNamespaceURI().equals(n.getNamespaceURI())) {
- data = n;
+
+ Node node = parent.getFirstChild();
+ while (node != null) {
+ if (node.getNodeType() == Node.ELEMENT_NODE &&
name.getLocalPart().equals(node.getLocalName())
+ && name.getNamespaceURI().equals(node.getNamespaceURI())) {
+ data = node;
Object obj = unmarshal(context, data, c);
if (obj != null) {
list.add((V) obj);
}
}
+ node = node.getNextSibling();
}
return list;
}
Modified:
cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/spring/JettyHTTPServerEngineBeanDefinitionParser.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/spring/JettyHTTPServerEngineBeanDefinitionParser.java?rev=727692&r1=727691&r2=727692&view=diff
==============================================================================
---
cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/spring/JettyHTTPServerEngineBeanDefinitionParser.java
(original)
+++
cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/spring/JettyHTTPServerEngineBeanDefinitionParser.java
Thu Dec 18 02:44:17 2008
@@ -18,13 +18,12 @@
*/
package org.apache.cxf.transport.http_jetty.spring;
+
+
import java.util.List;
import java.util.Map;
import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
import org.apache.cxf.Bus;
import org.apache.cxf.BusFactory;
@@ -34,6 +33,7 @@
import org.apache.cxf.configuration.security.TLSServerParametersType;
import org.apache.cxf.configuration.spring.AbstractBeanDefinitionParser;
import org.apache.cxf.configuration.spring.BusWiringType;
+import org.apache.cxf.helpers.DOMUtils;
import org.apache.cxf.transport.http_jetty.JettyHTTPServerEngine;
import org.apache.cxf.transport.http_jetty.JettyHTTPServerEngineFactory;
import org.apache.cxf.transport.http_jetty.ThreadingParameters;
@@ -48,6 +48,10 @@
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
+
+
+
+
public class JettyHTTPServerEngineBeanDefinitionParser extends
AbstractBeanDefinitionParser {
@@ -65,7 +69,64 @@
MutablePropertyValues engineFactoryProperties =
ctx.getContainingBeanDefinition().getPropertyValues();
PropertyValue busValue =
engineFactoryProperties.getPropertyValue("bus");
- // get the property value from paranets
+ // get the property value from parents
+
+ try {
+ Element elem = DOMUtils.getFirstElement(element);
+ while (elem != null) {
+ String name = elem.getLocalName();
+ if ("tlsServerParameters".equals(name)) {
+
+ TLSServerParametersType parametersType =
+ JAXBHelper.parseElement(elem, bean,
TLSServerParametersType.class);
+
+ TLSServerParametersConfig param =
+ new TLSServerParametersConfig(parametersType);
+
+ bean.addPropertyValue("tlsServerParameters", param);
+
+ } else if ("tlsServerParametersRef".equals(name)) {
+
+ TLSServerParametersIdentifiedType parameterTypeRef =
+ JAXBHelper.parseElement(elem, bean,
+
TLSServerParametersIdentifiedType.class);
+
+ TLSServerParameters param =
+ getTlsServerParameters(engineFactoryProperties,
parameterTypeRef.getId());
+ bean.addPropertyValue("tlsServerParameters", param);
+
+ } else if ("threadingParameters".equals(name)) {
+ ThreadingParametersType parametersType =
+ JAXBHelper.parseElement(elem, bean,
ThreadingParametersType.class);
+
+ ThreadingParameters param =
toThreadingParameters(parametersType);
+ bean.addPropertyValue("threadingParameters", param);
+
+ } else if ("threadingParametersRef".equals(name)) {
+ ThreadingParametersIdentifiedType parametersTypeRef =
+ JAXBHelper.parseElement(elem, bean,
+
ThreadingParametersIdentifiedType.class);
+ ThreadingParameters param =
+ getThreadingParameters(engineFactoryProperties,
parametersTypeRef.getId());
+ bean.addPropertyValue("threadingParameters", param);
+
+ } else if ("connector".equals(name)) {
+ // only deal with the one connector here
+ List list =
+ ctx.getDelegate().parseListElement(elem,
bean.getBeanDefinition());
+ bean.addPropertyValue("connector", list.get(0));
+ } else if ("handlers".equals(name)) {
+ List handlers =
+ ctx.getDelegate().parseListElement(elem,
bean.getBeanDefinition());
+ bean.addPropertyValue("handlers", handlers);
+ } else if ("sessionSupport".equals(name) ||
"reuseAddress".equals(name)) {
+ String text = elem.getTextContent();
+ bean.addPropertyValue(name, Boolean.valueOf(text));
+ }
+
+ elem = org.apache.cxf.helpers.DOMUtils.getNextElement(elem);
+ }
+ /*
try {
NodeList children = element.getChildNodes();
@@ -123,6 +184,7 @@
}
}
}
+ */
} catch (Exception e) {
throw new RuntimeException("Could not process configuration.", e);
}