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 2017/03/24 14:46:37 UTC

[1/5] cxf git commit: [CXF-6598] Fix problem of inout headers when unwrapped causing IndexOutOfBoundsException

Repository: cxf
Updated Branches:
  refs/heads/master a42362e39 -> a3fecd220


[CXF-6598] Fix problem of inout headers when unwrapped causing IndexOutOfBoundsException


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/a3fecd22
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/a3fecd22
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/a3fecd22

Branch: refs/heads/master
Commit: a3fecd22039dc4773b43227dd9f2cebfee7ac533
Parents: 8049b4c
Author: Daniel Kulp <dk...@apache.org>
Authored: Fri Mar 24 10:02:24 2017 -0400
Committer: Daniel Kulp <dk...@apache.org>
Committed: Fri Mar 24 10:03:08 2017 -0400

----------------------------------------------------------------------
 .../factory/ReflectionServiceFactoryBean.java   | 54 ++++++++++++++++----
 1 file changed, 43 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/a3fecd22/rt/wsdl/src/main/java/org/apache/cxf/wsdl/service/factory/ReflectionServiceFactoryBean.java
----------------------------------------------------------------------
diff --git a/rt/wsdl/src/main/java/org/apache/cxf/wsdl/service/factory/ReflectionServiceFactoryBean.java b/rt/wsdl/src/main/java/org/apache/cxf/wsdl/service/factory/ReflectionServiceFactoryBean.java
index e1d8660..398477d 100644
--- a/rt/wsdl/src/main/java/org/apache/cxf/wsdl/service/factory/ReflectionServiceFactoryBean.java
+++ b/rt/wsdl/src/main/java/org/apache/cxf/wsdl/service/factory/ReflectionServiceFactoryBean.java
@@ -126,6 +126,7 @@ import org.apache.ws.commons.schema.utils.NamespaceMap;
  * will be filled in from the service class. If no WSDL URL is specified, the
  * Service will be constructed directly from the class structure.
  */
+//CHECKSTYLE:OFF:NCSS    -   This class is just huge and complex
 public class ReflectionServiceFactoryBean extends org.apache.cxf.service.factory.AbstractServiceFactoryBean {
 
     public static final String ENDPOINT_CLASS = "endpoint.class";
@@ -752,6 +753,15 @@ public class ReflectionServiceFactoryBean extends org.apache.cxf.service.factory
         }
         o.setProperty(METHOD_PARAM_ANNOTATIONS, method.getParameterAnnotations());
         o.setProperty(METHOD_ANNOTATIONS, method.getAnnotations());
+        //Set all out of band indexes to MAX_VALUE, anything left at MAX_VALUE after this is unmapped
+        for (MessagePartInfo mpi : o.getInput().getOutOfBandParts()) {
+            mpi.setIndex(Integer.MAX_VALUE);
+        }
+        if (o.hasOutput()) {
+            for (MessagePartInfo mpi : o.getOutput().getOutOfBandParts()) {
+                mpi.setIndex(Integer.MAX_VALUE);
+            }
+        }
         Class<?>[] paramTypes = method.getParameterTypes();
         Type[] genericTypes = method.getGenericParameterTypes();
         for (int i = 0; i < paramTypes.length; i++) {
@@ -764,12 +774,16 @@ public class ReflectionServiceFactoryBean extends org.apache.cxf.service.factory
                 return false;
             }
         }
+        setIndexes(o.getInput());
         sendEvent(Event.OPERATIONINFO_IN_MESSAGE_SET, origOp, method, origOp.getInput());
         // Initialize return type
         if (o.hasOutput()
             && !initializeParameter(o, method, -1, method.getReturnType(), method.getGenericReturnType())) {
             return false;
         }
+        if (o.hasOutput()) {
+            setIndexes(o.getOutput());
+        }
         if (origOp.hasOutput()) {
             sendEvent(Event.OPERATIONINFO_OUT_MESSAGE_SET, origOp, method, origOp.getOutput());
         }
@@ -777,6 +791,20 @@ public class ReflectionServiceFactoryBean extends org.apache.cxf.service.factory
         setFaultClassInfo(o, method);
         return true;
     }
+    private void setIndexes(MessageInfo m) {
+        int max = -1;
+        for (MessagePartInfo mpi : m.getMessageParts()) {
+            if (mpi.getIndex() > max && mpi.getIndex() != Integer.MAX_VALUE) {
+                max = mpi.getIndex();
+            }
+        }
+        for (MessagePartInfo mpi : m.getMessageParts()) {
+            if (mpi.getIndex() == Integer.MAX_VALUE) {
+                max++;
+                mpi.setIndex(max);
+            }
+        }
+    }
     private boolean initializeParameter(OperationInfo o, Method method, int i,
                                      Class<?> paramType, Type genericType) {
         boolean isIn = isInParam(method, i);
@@ -799,26 +827,33 @@ public class ReflectionServiceFactoryBean extends org.apache.cxf.service.factory
             }
             if (part == null && isHeader && o.isUnwrapped()) {
                 part = ((UnwrappedOperationInfo)o).getWrappedOperation().getInput().getMessagePart(name);
+                boolean add = true;
                 if (part == null) {
                     QName name2 = this.getInParameterName(o, method, i);
                     part = o.getInput().getMessagePart(name2);
                     if (part != null) {
+                        add = false;
                         name = name2;
                     }
                 }
                 if (part != null) {
                     //header part in wsdl, need to get this mapped in to the unwrapped form
-                    MessagePartInfo inf = o.getInput().addMessagePart(part.getName());
-                    inf.setTypeQName(part.getTypeQName());
-                    inf.setElement(part.isElement());
-                    inf.setElementQName(part.getElementQName());
-                    inf.setConcreteName(part.getConcreteName());
-                    inf.setXmlSchema(part.getXmlSchema());
                     if (paraAnnos != null) {
                         part.setProperty(PARAM_ANNOTATION, paraAnnos);
                     }
-                    part = inf;
-                    inf.setProperty(HEADER, Boolean.TRUE);
+                    if (add) {
+                        MessagePartInfo inf = o.getInput().addMessagePart(part.getName());
+                        inf.setTypeQName(part.getTypeQName());
+                        inf.setElement(part.isElement());
+                        inf.setElementQName(part.getElementQName());
+                        inf.setConcreteName(part.getConcreteName());
+                        inf.setXmlSchema(part.getXmlSchema());
+                        part = inf;
+                        if (paraAnnos != null) {
+                            part.setProperty(PARAM_ANNOTATION, paraAnnos);
+                        }
+                    }
+                    part.setProperty(HEADER, Boolean.TRUE);
                 }
             }
             if (part == null) {
@@ -1497,7 +1532,6 @@ public class ReflectionServiceFactoryBean extends org.apache.cxf.service.factory
         MessageInfo inMsg = op.createMessage(this.getInputMessageName(op, method), MessageInfo.Type.INPUT);
         op.setInput(inMsg.getName().getLocalPart(), inMsg);
         final Annotation[][] parAnnotations = method.getParameterAnnotations();
-    // CHECKSTYLE:ON
         final Type[] genParTypes = method.getGenericParameterTypes();
         for (int j = 0; j < paramClasses.length; j++) {
             if (Exchange.class.equals(paramClasses[j])) {
@@ -1518,9 +1552,7 @@ public class ReflectionServiceFactoryBean extends org.apache.cxf.service.factory
                     LOG.log(Level.WARNING, "INVALID_WEBPARAM_MODE", getServiceClass().getName() + "."
                                                                     + method.getName());
                 }
-                // CHECKSTYLE:ON
                 initializeParameter(part, paramClasses[j], genParTypes[j]);
-                //TODO:remove method param annotations
                 part.setProperty(METHOD_PARAM_ANNOTATIONS, parAnnotations);
                 part.setProperty(PARAM_ANNOTATION, parAnnotations[j]);
                 if (getJaxbAnnoMap(part).size() > 0) {


[5/5] cxf git commit: Update moxy version

Posted by dk...@apache.org.
Update moxy version


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/6e01fcff
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/6e01fcff
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/6e01fcff

Branch: refs/heads/master
Commit: 6e01fcffa1e64f38b69a7cae9b2a7236d7ec330d
Parents: bee6f22
Author: Daniel Kulp <dk...@apache.org>
Authored: Thu Mar 23 14:00:07 2017 -0400
Committer: Daniel Kulp <dk...@apache.org>
Committed: Fri Mar 24 10:03:08 2017 -0400

----------------------------------------------------------------------
 parent/pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/6e01fcff/parent/pom.xml
----------------------------------------------------------------------
diff --git a/parent/pom.xml b/parent/pom.xml
index 98fc58d..e9c3eb7 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -2056,7 +2056,7 @@
                 <dependency>
                     <groupId>org.eclipse.persistence</groupId>
                     <artifactId>org.eclipse.persistence.moxy</artifactId>
-                    <version>2.5.2</version>
+                    <version>2.6.4</version>
                     <scope>provided</scope>
                     <optional>true</optional>
                 </dependency>


[4/5] cxf git commit: [CXF-6672] Catch trhowable instead of exception to grab errors as well

Posted by dk...@apache.org.
[CXF-6672] Catch trhowable instead of exception to grab errors as well


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/8049b4c2
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/8049b4c2
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/8049b4c2

Branch: refs/heads/master
Commit: 8049b4c2df7690b493462997c37168622a11324c
Parents: 307cc3d
Author: Daniel Kulp <dk...@apache.org>
Authored: Thu Mar 23 14:12:29 2017 -0400
Committer: Daniel Kulp <dk...@apache.org>
Committed: Fri Mar 24 10:03:08 2017 -0400

----------------------------------------------------------------------
 .../transport/jms/util/PollingMessageListenerContainer.java    | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/8049b4c2/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/util/PollingMessageListenerContainer.java
----------------------------------------------------------------------
diff --git a/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/util/PollingMessageListenerContainer.java b/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/util/PollingMessageListenerContainer.java
index 8096eb3..c4276eb 100644
--- a/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/util/PollingMessageListenerContainer.java
+++ b/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/util/PollingMessageListenerContainer.java
@@ -65,12 +65,12 @@ public class PollingMessageListenerContainer extends AbstractMessageListenerCont
                             if (session.getTransacted()) {
                                 session.commit();
                             }
-                        } catch (Exception e) {
+                        } catch (Throwable e) {
                             LOG.log(Level.WARNING, "Exception while processing jms message in cxf. Rolling back", e);
                             safeRollBack(session);
                         }
                     }
-                } catch (Exception e) {
+                } catch (Throwable e) {
                     catchUnexpectedExceptionDuringPolling(null, e);
                 }
             }
@@ -83,7 +83,7 @@ public class PollingMessageListenerContainer extends AbstractMessageListenerCont
                 if (session != null && session.getTransacted()) {
                     session.rollback();
                 }
-            } catch (Exception e1) {
+            } catch (Throwable e1) {
                 LOG.log(Level.WARNING, "Rollback of Local transaction failed", e1);
             }
         }


[2/5] cxf git commit: [CXF-6907] Cache the EPR for performance

Posted by dk...@apache.org.
[CXF-6907] Cache the EPR for performance


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/307cc3d7
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/307cc3d7
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/307cc3d7

Branch: refs/heads/master
Commit: 307cc3d77312a832cad963ffa7079388b21bd859
Parents: 6e01fcf
Author: Daniel Kulp <dk...@apache.org>
Authored: Thu Mar 23 14:10:54 2017 -0400
Committer: Daniel Kulp <dk...@apache.org>
Committed: Fri Mar 24 10:03:08 2017 -0400

----------------------------------------------------------------------
 .../java/org/apache/cxf/wsn/AbstractEndpoint.java    | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/307cc3d7/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/AbstractEndpoint.java
----------------------------------------------------------------------
diff --git a/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/AbstractEndpoint.java b/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/AbstractEndpoint.java
index a613355..beb3a7f 100644
--- a/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/AbstractEndpoint.java
+++ b/services/wsn/wsn-core/src/main/java/org/apache/cxf/wsn/AbstractEndpoint.java
@@ -35,6 +35,8 @@ public abstract class AbstractEndpoint implements EndpointMBean {
     protected EndpointManager manager;
 
     protected Endpoint endpoint;
+    
+    protected W3CEndpointReference endpointEpr;
 
     public AbstractEndpoint(String name) {
         this.name = name;
@@ -59,19 +61,24 @@ public abstract class AbstractEndpoint implements EndpointMBean {
     public final URL getWSDLLocation() {
         return CreatePullPoint.class.getClassLoader().getResource("org/apache/cxf/wsn/wsdl/wsn.wsdl");
     }
-    public void register() throws EndpointRegistrationException {
+    public synchronized void register() throws EndpointRegistrationException {
         endpoint = manager.register(getAddress(), this, getWSDLLocation());
+        endpointEpr = null;
     }
 
-    public void unregister() throws EndpointRegistrationException {
+    public synchronized void unregister() throws EndpointRegistrationException {
         if (endpoint != null) {
             manager.unregister(endpoint, this);
+            endpointEpr = null;
         }
     }
 
-    public W3CEndpointReference getEpr() {
+    public synchronized W3CEndpointReference getEpr() {
         if (endpoint != null) {
-            return manager.getEpr(endpoint);
+            if (endpointEpr == null) {
+                endpointEpr = manager.getEpr(endpoint);
+            }
+            return endpointEpr;
         }
         return null;
     }


[3/5] cxf git commit: [CXF-5770] If vlidation-event-handler is a string, load it as a class

Posted by dk...@apache.org.
[CXF-5770] If vlidation-event-handler is a string, load it as a class


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/bee6f221
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/bee6f221
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/bee6f221

Branch: refs/heads/master
Commit: bee6f221450179d4e680bc8abc1e7dd39347bea7
Parents: a42362e
Author: Daniel Kulp <dk...@apache.org>
Authored: Thu Mar 23 13:43:53 2017 -0400
Committer: Daniel Kulp <dk...@apache.org>
Committed: Fri Mar 24 10:03:08 2017 -0400

----------------------------------------------------------------------
 .../java/org/apache/cxf/jaxb/JAXBDataBase.java  | 35 ++++++++++++++++++++
 .../org/apache/cxf/jaxb/io/DataReaderImpl.java  |  7 +---
 .../org/apache/cxf/jaxb/io/DataWriterImpl.java  |  8 +----
 3 files changed, 37 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/bee6f221/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBase.java
----------------------------------------------------------------------
diff --git a/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBase.java b/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBase.java
index 2501ea4..404fe15 100644
--- a/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBase.java
+++ b/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBase.java
@@ -23,8 +23,11 @@ import java.lang.annotation.Annotation;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
 import javax.xml.bind.JAXBContext;
+import javax.xml.bind.ValidationEventHandler;
 import javax.xml.bind.annotation.XmlAttachmentRef;
 import javax.xml.bind.annotation.XmlList;
 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
@@ -32,9 +35,12 @@ import javax.xml.bind.attachment.AttachmentMarshaller;
 import javax.xml.bind.attachment.AttachmentUnmarshaller;
 import javax.xml.validation.Schema;
 
+import org.apache.cxf.common.classloader.ClassLoaderUtils;
+import org.apache.cxf.common.logging.LogUtils;
 import org.apache.cxf.jaxb.attachment.JAXBAttachmentMarshaller;
 import org.apache.cxf.jaxb.attachment.JAXBAttachmentUnmarshaller;
 import org.apache.cxf.message.Attachment;
+import org.apache.cxf.message.Message;
 import org.apache.cxf.service.model.AbstractMessageContainer;
 import org.apache.cxf.service.model.MessageInfo;
 import org.apache.cxf.service.model.MessagePartInfo;
@@ -44,6 +50,7 @@ import org.apache.cxf.service.model.OperationInfo;
  *
  */
 public abstract class JAXBDataBase {
+    static final Logger LOG = LogUtils.getL7dLogger(JAXBDataBase.class);
 
     protected JAXBContext context;
     protected Schema schema;
@@ -152,6 +159,34 @@ public abstract class JAXBDataBase {
         Boolean b = (Boolean)part.getProperty("honor.jaxb.annotations");
         return b == null ? false : b;
     }
+    
+    protected ValidationEventHandler getValidationEventHandler(String cn) {
+        try {
+            return (ValidationEventHandler)ClassLoaderUtils.loadClass(cn, getClass()).newInstance();
+        } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
+            LOG.log(Level.INFO, "Could not create validation event handler", e);
+        }
+        return null;
+    }
+    
+    protected ValidationEventHandler getValidationEventHandler(Message m, String property) {
+        Object value = m.getContextualProperty(property);
+        ValidationEventHandler veventHandler = null;
+        if (value instanceof String) {
+            veventHandler = getValidationEventHandler((String)value);
+        } else {
+            veventHandler = (ValidationEventHandler)value;
+        }
+        if (veventHandler == null) {
+            value = m.getContextualProperty(JAXBDataBinding.VALIDATION_EVENT_HANDLER);
+            if (value instanceof String) {
+                veventHandler = getValidationEventHandler((String)value);
+            } else {
+                veventHandler = (ValidationEventHandler)value;
+            }
+        }
+        return veventHandler;
+    }
 
 
 }

http://git-wip-us.apache.org/repos/asf/cxf/blob/bee6f221/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 10da669..38e9174 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
@@ -91,12 +91,7 @@ public class DataReaderImpl<T> extends JAXBDataBase implements DataReader<T> {
             unwrapJAXBElement = Boolean.TRUE.equals(value);
         } else if (prop.equals(org.apache.cxf.message.Message.class.getName())) {
             org.apache.cxf.message.Message m = (org.apache.cxf.message.Message)value;
-            veventHandler = (ValidationEventHandler)m.getContextualProperty(
-                    JAXBDataBinding.READER_VALIDATION_EVENT_HANDLER);
-            if (veventHandler == null) {
-                veventHandler = (ValidationEventHandler)m.getContextualProperty(
-                        JAXBDataBinding.VALIDATION_EVENT_HANDLER);
-            }
+            veventHandler = getValidationEventHandler(m, JAXBDataBinding.READER_VALIDATION_EVENT_HANDLER);
             if (veventHandler == null) {
                 veventHandler = databinding.getValidationEventHandler();
             }

http://git-wip-us.apache.org/repos/asf/cxf/blob/bee6f221/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/io/DataWriterImpl.java
----------------------------------------------------------------------
diff --git a/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/io/DataWriterImpl.java b/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/io/DataWriterImpl.java
index a2de176..ebc78ec 100644
--- a/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/io/DataWriterImpl.java
+++ b/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/io/DataWriterImpl.java
@@ -73,13 +73,7 @@ public class DataWriterImpl<T> extends JAXBDataBase implements DataWriter<T> {
     public void setProperty(String prop, Object value) {
         if (prop.equals(org.apache.cxf.message.Message.class.getName())) {
             org.apache.cxf.message.Message m = (org.apache.cxf.message.Message)value;
-            veventHandler = (ValidationEventHandler)m.getContextualProperty(
-                    JAXBDataBinding.WRITER_VALIDATION_EVENT_HANDLER);
-
-            if (veventHandler == null) {
-                veventHandler = (ValidationEventHandler)m.getContextualProperty(
-                    "jaxb-validation-event-handler");
-            }
+            veventHandler = getValidationEventHandler(m, JAXBDataBinding.WRITER_VALIDATION_EVENT_HANDLER);
             if (veventHandler == null) {
                 veventHandler = databinding.getValidationEventHandler();
             }