Author: dkulp
Date: Fri Oct  2 01:57:04 2009
New Revision: 820865

URL: http://svn.apache.org/viewvc?rev=820865&view=rev
Log:
[CXF-2455] Add some flags/properties to turn off the JAXB
ValidationEventHandler

Modified:
    cxf/trunk/api/src/main/java/org/apache/cxf/message/MessageUtils.java
    
cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractInDatabindingInterceptor.java
    
cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/io/DataReaderImpl.java

Modified: cxf/trunk/api/src/main/java/org/apache/cxf/message/MessageUtils.java
URL: 
http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/message/MessageUtils.java?rev=820865&r1=820864&r2=820865&view=diff
==============================================================================
--- cxf/trunk/api/src/main/java/org/apache/cxf/message/MessageUtils.java 
(original)
+++ cxf/trunk/api/src/main/java/org/apache/cxf/message/MessageUtils.java Fri 
Oct  2 01:57:04 2009
@@ -117,6 +117,15 @@
         return false;
     }
     
+    
+    public static boolean getContextualBoolean(Message m, String key, boolean 
defaultValue) {
+        Object o = m.getContextualProperty(key);
+        if (o != null) {
+            return isTrue(o);
+        }
+        return defaultValue;
+    }
+    
     /**
      * Returns true if the underlying content format is a W3C DOM or a SAAJ 
message.
      */

Modified: 
cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractInDatabindingInterceptor.java
URL: 
http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractInDatabindingInterceptor.java?rev=820865&r1=820864&r2=820865&view=diff
==============================================================================
--- 
cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractInDatabindingInterceptor.java
 (original)
+++ 
cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractInDatabindingInterceptor.java
 Fri Oct  2 01:57:04 2009
@@ -36,6 +36,7 @@
 import org.apache.cxf.endpoint.Endpoint;
 import org.apache.cxf.message.Exchange;
 import org.apache.cxf.message.Message;
+import org.apache.cxf.message.MessageUtils;
 import org.apache.cxf.phase.AbstractPhaseInterceptor;
 import org.apache.cxf.service.Service;
 import org.apache.cxf.service.model.BindingMessageInfo;
@@ -88,6 +89,7 @@
         }
         dataReader.setAttachments(message.getAttachments());
         dataReader.setProperty(DataReader.ENDPOINT, 
message.getExchange().get(Endpoint.class));
+        dataReader.setProperty(Message.class.getName(), message);
         setSchemaInMessage(service, message, dataReader);   
         return dataReader;
     }
@@ -101,8 +103,7 @@
     }
 
     private void setSchemaInMessage(Service service, Message message, 
DataReader<?> reader) {
-        Object en = 
message.getContextualProperty(Message.SCHEMA_VALIDATION_ENABLED);
-        if (Boolean.TRUE.equals(en) || "true".equals(en)) {
+        if (MessageUtils.getContextualBoolean(message, 
Message.SCHEMA_VALIDATION_ENABLED, Boolean.FALSE)) {
             //all serviceInfos have the same schemas
             Schema schema = 
EndpointReferenceUtils.getSchema(service.getServiceInfos().get(0));
             reader.setSchema(schema);

Modified: 
cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/io/DataReaderImpl.java
URL: 
http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/io/DataReaderImpl.java?rev=820865&r1=820864&r2=820865&view=diff
==============================================================================
--- 
cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/io/DataReaderImpl.java
 (original)
+++ 
cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/io/DataReaderImpl.java
 Fri Oct  2 01:57:04 2009
@@ -27,6 +27,7 @@
 import javax.xml.bind.JAXBException;
 import javax.xml.bind.PropertyException;
 import javax.xml.bind.Unmarshaller;
+import javax.xml.bind.ValidationEventHandler;
 import javax.xml.namespace.QName;
 
 import org.apache.cxf.common.i18n.Message;
@@ -36,12 +37,15 @@
 import org.apache.cxf.jaxb.JAXBDataBase;
 import org.apache.cxf.jaxb.JAXBDataBinding;
 import org.apache.cxf.jaxb.JAXBEncoderDecoder;
+import org.apache.cxf.message.MessageUtils;
 import org.apache.cxf.service.model.MessagePartInfo;
 
 public class DataReaderImpl<T> extends JAXBDataBase implements DataReader<T> {
     private static final Logger LOG = 
LogUtils.getLogger(JAXBDataBinding.class);
     JAXBDataBinding databinding;
     boolean unwrapJAXBElement = true;
+    ValidationEventHandler veventHandler;
+    boolean setEventHandler = true;
     
     public DataReaderImpl(JAXBDataBinding binding, boolean unwrap) {
         super(binding.getContext());
@@ -55,6 +59,13 @@
     public void setProperty(String prop, Object value) {
         if (prop.equals(JAXBDataBinding.UNWRAP_JAXB_ELEMENT)) {
             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("jaxb-validation-event-handler");
+            if (veventHandler == null) {
+                veventHandler = databinding.getValidationEventHandler();
+            }
+            setEventHandler = MessageUtils.getContextualBoolean(m, 
"set-jaxb-validation-event-handler", true);
         }
     }
     private Unmarshaller createUnmarshaller() {
@@ -64,10 +75,8 @@
             if (databinding.getUnmarshallerListener() != null) {
                 um.setListener(databinding.getUnmarshallerListener());
             }
-            if (databinding.getValidationEventHandler() != null) {
-                um.setEventHandler(databinding.getValidationEventHandler());
-            } else {
-                um.setEventHandler(null);
+            if (setEventHandler) {
+                um.setEventHandler(veventHandler);
             }
             if (databinding.getUnmarshallerProperties() != null) {
                 for (Map.Entry<String, Object> propEntry 


Reply via email to