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 2013/11/19 18:48:30 UTC

svn commit: r1543519 - in /cxf/trunk: rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/io/ rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/io/ rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/resources/ systests/databinding/src/test/jav...

Author: dkulp
Date: Tue Nov 19 17:48:29 2013
New Revision: 1543519

URL: http://svn.apache.org/r1543519
Log:
[CXF-5392] Ability to set validation handlers on the writers
Modified patch from Joe Wertz applied

Added:
    cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/io/MyCustomHandler.java   (with props)
    cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/resources/SetPropertyValidationFailureReq.xml   (with props)
    cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/jaxb/validators/
    cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/jaxb/validators/CustomValidatorJAXBTest.java   (with props)
    cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/jaxb/validators/HelloWorld.java   (with props)
    cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/jaxb/validators/HelloWorldImpl.java   (with props)
    cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/jaxb/validators/MyCustomHandler.java   (with props)
    cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/jaxb/validators/PassedObject.java   (with props)
    cxf/trunk/systests/databinding/src/test/resources/jaxbCustomValidators.xml   (with props)
Modified:
    cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/io/DataReaderImpl.java
    cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/io/DataWriterImpl.java
    cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/io/XMLStreamDataReaderTest.java
    cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/io/XMLStreamDataWriterTest.java

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=1543519&r1=1543518&r2=1543519&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 Tue Nov 19 17:48:29 2013
@@ -85,7 +85,10 @@ public class DataReaderImpl<T> extends J
             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");
+            veventHandler = (ValidationEventHandler)m.getContextualProperty("jaxb-reader-validation-event-handler");
+            if (veventHandler == null) {
+                veventHandler = (ValidationEventHandler)m.getContextualProperty("jaxb-validation-event-handler");
+            }
             if (veventHandler == null) {
                 veventHandler = databinding.getValidationEventHandler();
             }

Modified: cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/io/DataWriterImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/io/DataWriterImpl.java?rev=1543519&r1=1543518&r2=1543519&view=diff
==============================================================================
--- cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/io/DataWriterImpl.java (original)
+++ cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/io/DataWriterImpl.java Tue Nov 19 17:48:29 2013
@@ -46,12 +46,15 @@ import org.apache.cxf.jaxb.JAXBDataBase;
 import org.apache.cxf.jaxb.JAXBDataBinding;
 import org.apache.cxf.jaxb.JAXBEncoderDecoder;
 import org.apache.cxf.jaxb.attachment.JAXBAttachmentMarshaller;
+import org.apache.cxf.message.MessageUtils;
 import org.apache.cxf.service.model.MessagePartInfo;
 import org.apache.ws.commons.schema.XmlSchemaElement;
 
 public class DataWriterImpl<T> extends JAXBDataBase implements DataWriter<T> {
     private static final Logger LOG = LogUtils.getLogger(JAXBDataBinding.class);
 
+    ValidationEventHandler veventHandler;
+    boolean setEventHandler = true;
     private JAXBDataBinding databinding;
     
     public DataWriterImpl(JAXBDataBinding binding) {
@@ -62,6 +65,23 @@ public class DataWriterImpl<T> extends J
     public void write(Object obj, T output) {
         write(obj, null, output);
     }
+    
+    public void setProperty(String prop, Object value) {
+        if (prop.equals(org.apache.cxf.message.Message.class.getName())) {
+            org.apache.cxf.message.Message m = (org.apache.cxf.message.Message)value;
+            veventHandler = (ValidationEventHandler)m.getContextualProperty(
+                    "jaxb-writer-validation-event-handler");
+            if (veventHandler == null) {
+                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 static class MtomValidationHandler implements ValidationEventHandler {
         ValidationEventHandler origHandler;
         JAXBAttachmentMarshaller marshaller;
@@ -106,8 +126,8 @@ public class DataWriterImpl<T> extends J
             marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
             marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.FALSE);
             marshaller.setListener(databinding.getMarshallerListener());
-            if (databinding.getValidationEventHandler() != null) {
-                marshaller.setEventHandler(databinding.getValidationEventHandler());
+            if (setEventHandler) {
+                marshaller.setEventHandler(veventHandler);
             }
             
             final Map<String, String> nspref = databinding.getDeclaredNamespaceMappings();

Added: cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/io/MyCustomHandler.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/io/MyCustomHandler.java?rev=1543519&view=auto
==============================================================================
--- cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/io/MyCustomHandler.java (added)
+++ cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/io/MyCustomHandler.java Tue Nov 19 17:48:29 2013
@@ -0,0 +1,37 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.cxf.jaxb.io;
+
+import javax.xml.bind.ValidationEvent;
+import javax.xml.bind.ValidationEventHandler;
+
+public class MyCustomHandler implements ValidationEventHandler {
+
+    private boolean used;
+    public boolean getUsed() {
+        return used;
+    }
+    
+    public boolean handleEvent(ValidationEvent event) {
+        used = true;
+        return true;
+    }
+
+}
\ No newline at end of file

Propchange: cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/io/MyCustomHandler.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/io/XMLStreamDataReaderTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/io/XMLStreamDataReaderTest.java?rev=1543519&r1=1543518&r2=1543519&view=diff
==============================================================================
--- cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/io/XMLStreamDataReaderTest.java (original)
+++ cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/io/XMLStreamDataReaderTest.java Tue Nov 19 17:48:29 2013
@@ -57,6 +57,32 @@ public class XMLStreamDataReaderTest ext
     }
 
     @Test
+    public void testSetProperty() throws Exception {
+        JAXBDataBinding db = getDataBinding(GreetMe.class);
+    
+        reader = getTestReader("../resources/SetPropertyValidationFailureReq.xml");
+        assertNotNull(reader);
+        
+        DataReaderImpl<XMLStreamReader> dr = (DataReaderImpl)db.createReader(XMLStreamReader.class);
+        assertNotNull(dr);
+        
+        // Build message to set custom event handler
+        org.apache.cxf.message.Message message = new org.apache.cxf.message.MessageImpl();
+        message.put("jaxb-validation-event-handler", new MyCustomHandler());
+        message.put("unwrap.jaxb.element", true);
+    
+        dr.setProperty("org.apache.cxf.message.Message", message);        
+        
+        // Should fail if custom handler doesn't skip formatting error
+        Object val = dr.read(reader);
+        assertTrue(val instanceof GreetMe);
+        assertEquals("TestSOAPInputPMessage", ((GreetMe)val).getRequestType());
+        
+        // Check handler used
+        assertTrue(((MyCustomHandler)dr.veventHandler).getUsed());
+    }
+    
+    @Test
     public void testReadWrapper() throws Exception {
         JAXBDataBinding db = getDataBinding(GreetMe.class);
         

Modified: cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/io/XMLStreamDataWriterTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/io/XMLStreamDataWriterTest.java?rev=1543519&r1=1543518&r2=1543519&view=diff
==============================================================================
--- cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/io/XMLStreamDataWriterTest.java (original)
+++ cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/io/XMLStreamDataWriterTest.java Tue Nov 19 17:48:29 2013
@@ -66,6 +66,35 @@ public class XMLStreamDataWriterTest ext
     public void tearDown() throws Exception {
         baos.close();
     }
+    
+    @Test
+    public void testSetProperty() throws Exception {
+        JAXBDataBinding db = getTestWriterFactory();
+               
+        DataWriterImpl<XMLStreamWriter> dw = (DataWriterImpl)db.createWriter(XMLStreamWriter.class);
+        assertNotNull(dw);
+        
+        // Build message to set custom event handler
+        org.apache.cxf.message.Message message = new org.apache.cxf.message.MessageImpl();
+        message.put("jaxb-writer-validation-event-handler", new MyCustomHandler());
+    
+        dw.setProperty("org.apache.cxf.message.Message", message);     
+        
+        // Write Stuff
+        TradePriceData val = new TradePriceData();
+        val.setTickerSymbol("This is a symbol");
+        val.setTickerPrice(1.0f);
+        
+        QName elName = new QName("http://apache.org/hello_world_doc_lit_bare/types", "inout");
+        MessagePartInfo part = new MessagePartInfo(elName, null);
+        part.setElement(true);
+        part.setElementQName(elName);
+        dw.write(val, part, streamWriter);
+        streamWriter.flush();
+        
+        // Test MyCustomHandler
+        assertTrue(((MyCustomHandler)dw.veventHandler).getUsed());       
+    }
 
     @Test
     public void testWriteRPCLit1() throws Exception {

Added: cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/resources/SetPropertyValidationFailureReq.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/resources/SetPropertyValidationFailureReq.xml?rev=1543519&view=auto
==============================================================================
--- cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/resources/SetPropertyValidationFailureReq.xml (added)
+++ cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/resources/SetPropertyValidationFailureReq.xml Tue Nov 19 17:48:29 2013
@@ -0,0 +1,22 @@
+<!--
+  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.
+-->
+<ns4:greetMe xmlns:ns4="http://apache.org/hello_world_soap_http/types">
+    <ns4:requestType>TestSOAPInputPMessage</ns4:requestType>
+    <ns4:somethingElse>bla bla bla</ns4:somethingElse>
+</ns4:greetMe>

Propchange: cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/resources/SetPropertyValidationFailureReq.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/resources/SetPropertyValidationFailureReq.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/jaxb/validators/CustomValidatorJAXBTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/jaxb/validators/CustomValidatorJAXBTest.java?rev=1543519&view=auto
==============================================================================
--- cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/jaxb/validators/CustomValidatorJAXBTest.java (added)
+++ cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/jaxb/validators/CustomValidatorJAXBTest.java Tue Nov 19 17:48:29 2013
@@ -0,0 +1,67 @@
+/**
+ * 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.systest.jaxb.validators;
+
+import org.apache.cxf.testutil.common.TestUtil;
+import org.junit.Assert;
+import org.junit.Test;
+
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
+/**
+ * 
+ */
+@ContextConfiguration(locations = { "classpath:jaxbCustomValidators.xml" })
+public class CustomValidatorJAXBTest extends AbstractJUnit4SpringContextTests {
+    static final String PORT = TestUtil.getPortNumber(CustomValidatorJAXBTest.class);
+   
+    @Test
+    public void cleanTest() {
+        HelloWorld client = (HelloWorld)applicationContext
+                .getBean("testClient", HelloWorld.class);
+        
+        PassedObject hi = client.sayHi(new PassedObject("John", "Doe"));
+        Assert.assertTrue("Expected: 'Hello John Doe' Actual: " + hi.getName(),
+                "Hello John Doe".equals(hi.getName()));
+        
+    }
+    
+    @Test
+    public void sendNullTest() {
+        HelloWorld client = (HelloWorld)applicationContext
+                .getBean("testClient", HelloWorld.class);
+        
+        PassedObject hi = client.sayHi(new PassedObject());
+        Assert.assertTrue("Expected: 'Hello null null' Actual: '" + hi.getName() + "'",
+                "Hello null null".equals(hi.getName()));
+        
+    }
+    
+    @Test
+    public void returnNullTest() {
+        HelloWorld client = (HelloWorld)applicationContext
+                .getBean("testClient", HelloWorld.class);
+        
+        PassedObject hi = client.returnNull(new PassedObject("John", "Doe"));
+        Assert.assertTrue("Expected: 'Hello null' Actual: '" + hi.getName() + "'",
+                "Hello null".equals(hi.getName()));
+        
+    }
+}

Propchange: cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/jaxb/validators/CustomValidatorJAXBTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/jaxb/validators/HelloWorld.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/jaxb/validators/HelloWorld.java?rev=1543519&view=auto
==============================================================================
--- cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/jaxb/validators/HelloWorld.java (added)
+++ cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/jaxb/validators/HelloWorld.java Tue Nov 19 17:48:29 2013
@@ -0,0 +1,33 @@
+/**
+ * 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.systest.jaxb.validators;
+
+import javax.jws.WebMethod;
+import javax.jws.WebParam;
+
+@javax.jws.WebService(targetNamespace = "aNamespace")
+public interface HelloWorld {
+    
+    @WebMethod(operationName = "sayHi")
+    PassedObject sayHi(@WebParam(name = "text") PassedObject name);
+
+    @WebMethod(operationName = "returnNull")
+    PassedObject returnNull(@WebParam(name = "text") PassedObject name);
+}
+

Propchange: cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/jaxb/validators/HelloWorld.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/jaxb/validators/HelloWorldImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/jaxb/validators/HelloWorldImpl.java?rev=1543519&view=auto
==============================================================================
--- cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/jaxb/validators/HelloWorldImpl.java (added)
+++ cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/jaxb/validators/HelloWorldImpl.java Tue Nov 19 17:48:29 2013
@@ -0,0 +1,33 @@
+/**
+ * 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.systest.jaxb.validators;
+
+@javax.jws.WebService(endpointInterface = "org.apache.cxf.systest.jaxb.validators.HelloWorld")
+public class HelloWorldImpl implements HelloWorld {
+
+    public PassedObject sayHi(PassedObject name) {
+        return new PassedObject("Hello", name.getName());
+    }
+    
+    public PassedObject returnNull(PassedObject name) {
+        return new PassedObject("Hello", null);
+    }
+    
+}
+

Propchange: cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/jaxb/validators/HelloWorldImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/jaxb/validators/MyCustomHandler.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/jaxb/validators/MyCustomHandler.java?rev=1543519&view=auto
==============================================================================
--- cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/jaxb/validators/MyCustomHandler.java (added)
+++ cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/jaxb/validators/MyCustomHandler.java Tue Nov 19 17:48:29 2013
@@ -0,0 +1,37 @@
+/**
+ * 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.systest.jaxb.validators;
+
+import javax.xml.bind.ValidationEvent;
+import javax.xml.bind.ValidationEventHandler;
+
+public class MyCustomHandler implements ValidationEventHandler {
+
+    private boolean used;
+    public boolean getUsed() {
+        return used;
+    }
+    
+    public boolean handleEvent(ValidationEvent event) {
+        used = true;
+        return true;
+    }
+
+}
\ No newline at end of file

Propchange: cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/jaxb/validators/MyCustomHandler.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/jaxb/validators/PassedObject.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/jaxb/validators/PassedObject.java?rev=1543519&view=auto
==============================================================================
--- cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/jaxb/validators/PassedObject.java (added)
+++ cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/jaxb/validators/PassedObject.java Tue Nov 19 17:48:29 2013
@@ -0,0 +1,55 @@
+/**
+ * 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.systest.jaxb.validators;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+@XmlType(name = "UserType", propOrder = { "firstName", "lastName" })
+@XmlAccessorType(XmlAccessType.FIELD)
+public class PassedObject {
+
+    @XmlElement(required = true, nillable = false)
+    private String firstName;
+
+    @XmlElement(required = true, nillable = false)
+    private String lastName;
+
+    public PassedObject() { }
+
+    public PassedObject(String firstName, String lastName) {
+        this.firstName = firstName;
+        this.lastName = lastName;
+    }
+
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public String getName() {
+        return firstName + " " + lastName;
+    }
+
+}

Propchange: cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/jaxb/validators/PassedObject.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: cxf/trunk/systests/databinding/src/test/resources/jaxbCustomValidators.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/databinding/src/test/resources/jaxbCustomValidators.xml?rev=1543519&view=auto
==============================================================================
--- cxf/trunk/systests/databinding/src/test/resources/jaxbCustomValidators.xml (added)
+++ cxf/trunk/systests/databinding/src/test/resources/jaxbCustomValidators.xml Tue Nov 19 17:48:29 2013
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+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.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:jaxws="http://cxf.apache.org/jaxws"
+	xmlns:http="http://cxf.apache.org/transports/http/configuration"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+						http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+						http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd">
+
+	<!-- Services -->
+	<jaxws:server 
+		id="testServer" 
+		serviceClass="org.apache.cxf.systest.jaxb.validators.HelloWorld"
+		address="http://localhost:9000/Hello">
+		<jaxws:serviceBean>
+			<bean class="org.apache.cxf.systest.jaxb.validators.HelloWorldImpl"/>
+		</jaxws:serviceBean>
+		<jaxws:properties>
+            <entry key="schema-validation-enabled" value="true" />
+            <entry key="jaxb-validation-event-handler">
+                <bean class="org.apache.cxf.systest.jaxb.validators.MyCustomHandler"></bean>
+            </entry>
+            <entry key="jaxb-writer-validation-event-handler">
+                <bean class="org.apache.cxf.systest.jaxb.validators.MyCustomHandler"></bean>
+            </entry>
+        </jaxws:properties>
+	</jaxws:server>
+	
+	<!-- Client Proxy -->
+	<jaxws:client 
+		id="testClient" 
+		serviceClass="org.apache.cxf.systest.jaxb.validators.HelloWorld"
+		address="http://localhost:9000/Hello">
+	</jaxws:client>
+	
+				
+</beans>

Propchange: cxf/trunk/systests/databinding/src/test/resources/jaxbCustomValidators.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cxf/trunk/systests/databinding/src/test/resources/jaxbCustomValidators.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml