[hibernate-commits] Hibernate SVN: r17609 - in validator/trunk/hibernate-validator/src: main/java/org/hibernate/validator/metadata and 2 other directories.
hibernate-commits at lists.jboss.org
hibernate-commits at lists.jboss.org
Thu Oct 1 12:08:52 EDT 2009
Author: hardy.ferentschik
Date: 2009-10-01 12:08:48 -0400 (Thu, 01 Oct 2009)
New Revision: 17609
Added:
validator/trunk/hibernate-validator/src/test/java/org/hibernate/validator/engine/serialization/
validator/trunk/hibernate-validator/src/test/java/org/hibernate/validator/engine/serialization/ConstraintViolationSerializationTest.java
validator/trunk/hibernate-validator/src/test/java/org/hibernate/validator/engine/serialization/SerializableClass.java
validator/trunk/hibernate-validator/src/test/java/org/hibernate/validator/engine/serialization/UnSerializableClass.java
Modified:
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/engine/ConstraintViolationImpl.java
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/engine/NodeImpl.java
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/engine/PathImpl.java
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/metadata/ConstraintDescriptorImpl.java
Log:
HV-245 Made ConstraintViolationImpl Serializable.
Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/engine/ConstraintViolationImpl.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/engine/ConstraintViolationImpl.java 2009-10-01 14:07:23 UTC (rev 17608)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/engine/ConstraintViolationImpl.java 2009-10-01 16:08:48 UTC (rev 17609)
@@ -26,7 +26,7 @@
* @author Emmanuel Bernard
* @author Hardy Ferentschik
*/
-public class ConstraintViolationImpl<T> implements ConstraintViolation<T> {
+public class ConstraintViolationImpl<T> implements ConstraintViolation<T>, java.io.Serializable {
private final String interpolatedMessage;
private final T rootBean;
private final Object value;
Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/engine/NodeImpl.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/engine/NodeImpl.java 2009-10-01 14:07:23 UTC (rev 17608)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/engine/NodeImpl.java 2009-10-01 16:08:48 UTC (rev 17609)
@@ -17,12 +17,13 @@
*/
package org.hibernate.validator.engine;
+import java.io.Serializable;
import javax.validation.Path;
/**
* @author Hardy Ferentschik
*/
-public class NodeImpl implements Path.Node {
+public class NodeImpl implements Path.Node, Serializable {
private static final String INDEX_OPEN = "[";
private static final String INDEX_CLOSE = "]";
Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/engine/PathImpl.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/engine/PathImpl.java 2009-10-01 14:07:23 UTC (rev 17608)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/engine/PathImpl.java 2009-10-01 16:08:48 UTC (rev 17609)
@@ -22,12 +22,13 @@
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import java.io.Serializable;
import javax.validation.Path;
/**
* @author Hardy Ferentschik
*/
-public class PathImpl implements Path {
+public class PathImpl implements Path, Serializable {
/**
* Regular expression used to split a string path into its elements.
Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/metadata/ConstraintDescriptorImpl.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/metadata/ConstraintDescriptorImpl.java 2009-10-01 14:07:23 UTC (rev 17608)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/metadata/ConstraintDescriptorImpl.java 2009-10-01 16:08:48 UTC (rev 17609)
@@ -17,6 +17,7 @@
*/
package org.hibernate.validator.metadata;
+import java.io.Serializable;
import java.lang.annotation.Annotation;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
@@ -31,9 +32,9 @@
import java.util.Set;
import javax.validation.Constraint;
import javax.validation.ConstraintDefinitionException;
-import javax.validation.Payload;
import javax.validation.ConstraintValidator;
import javax.validation.OverridesAttribute;
+import javax.validation.Payload;
import javax.validation.ReportAsSingleViolation;
import javax.validation.ValidationException;
import javax.validation.groups.Default;
@@ -55,7 +56,7 @@
* @author Emmanuel Bernard
* @author Hardy Ferentschik
*/
-public class ConstraintDescriptorImpl<T extends Annotation> implements ConstraintDescriptor<T> {
+public class ConstraintDescriptorImpl<T extends Annotation> implements ConstraintDescriptor<T>, Serializable {
private static final Logger log = LoggerFactory.make();
private static final int OVERRIDES_PARAMETER_DEFAULT_INDEX = -1;
private static final String GROUPS = "groups";
@@ -98,7 +99,7 @@
/**
* Handle to the built-in constraint implementations.
*/
- private final ConstraintHelper constraintHelper;
+ private transient final ConstraintHelper constraintHelper;
public ConstraintDescriptorImpl(T annotation, ConstraintHelper constraintHelper, Class<?> implicitGroup) {
this.annotation = annotation;
@@ -216,7 +217,7 @@
return groups;
}
- public Set<Class< ? extends Payload>> getPayload() {
+ public Set<Class<? extends Payload>> getPayload() {
return payloads;
}
@@ -418,7 +419,7 @@
// groups get inherited from the parent
annotationDescriptor.setValue( GROUPS, groups.toArray( new Class<?>[groups.size()] ) );
- // HV-183 - payloads are propagated to composing constraints
+ // HV-183 - payloads are propagated to composing constraints
annotationDescriptor.setValue( PAYLOAD, payloads.toArray( new Class<?>[payloads.size()] ) );
U annotationProxy = AnnotationFactory.create( annotationDescriptor );
Copied: validator/trunk/hibernate-validator/src/test/java/org/hibernate/validator/engine/serialization/ConstraintViolationSerializationTest.java (from rev 17597, validator/trunk/hibernate-validator/src/test/java/org/hibernate/validator/engine/ValidatorTest.java)
===================================================================
--- validator/trunk/hibernate-validator/src/test/java/org/hibernate/validator/engine/serialization/ConstraintViolationSerializationTest.java (rev 0)
+++ validator/trunk/hibernate-validator/src/test/java/org/hibernate/validator/engine/serialization/ConstraintViolationSerializationTest.java 2009-10-01 16:08:48 UTC (rev 17609)
@@ -0,0 +1,85 @@
+// $Id$
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2008, Red Hat, Inc. and/or its affiliates, and individual contributors
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* Licensed 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.hibernate.validator.engine.serialization;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutput;
+import java.io.ObjectOutputStream;
+import java.io.NotSerializableException;
+import java.util.Set;
+import javax.validation.ConstraintViolation;
+import javax.validation.Validator;
+
+import org.testng.annotations.Test;
+
+import org.hibernate.validator.util.TestUtil;
+import static org.hibernate.validator.util.TestUtil.assertNumberOfViolations;
+
+/**
+ * @author Hardy Ferentschik
+ */
+public class ConstraintViolationSerializationTest {
+
+ /**
+ * HV-245
+ */
+ @Test
+ public void testSuccessfulSerialization() throws Exception {
+ Validator validator = TestUtil.getValidator();
+ SerializableClass testInstance = new SerializableClass();
+ Set<ConstraintViolation<SerializableClass>> constraintViolations = validator.validate( testInstance );
+
+ byte[] bytes = serialize( constraintViolations );
+ Set<ConstraintViolation<?>> deserializedViolations = deserialize( bytes );
+ assertNumberOfViolations( deserializedViolations, 1 );
+ }
+
+ /**
+ * HV-245
+ */
+ @Test(expectedExceptions = NotSerializableException.class)
+ public void testUnSuccessfulSerialization() throws Exception {
+ Validator validator = TestUtil.getValidator();
+ UnSerializableClass testInstance = new UnSerializableClass();
+ Set<ConstraintViolation<UnSerializableClass>> constraintViolations = validator.validate( testInstance );
+
+ serialize( constraintViolations );
+ }
+
+ private byte[] serialize(Object o) throws Exception {
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+ ObjectOutput out = new ObjectOutputStream( stream );
+ out.writeObject( o );
+ out.close();
+ byte[] serialized = stream.toByteArray();
+ stream.close();
+ return serialized;
+
+ }
+
+ private Set<ConstraintViolation<?>> deserialize(byte[] byteData) throws Exception {
+ ByteArrayInputStream byteIn = new ByteArrayInputStream( byteData );
+ ObjectInputStream in = new ObjectInputStream( byteIn );
+ Set<ConstraintViolation<?>> deserializedViolations = ( Set<ConstraintViolation<?>> ) in.readObject();
+ in.close();
+ byteIn.close();
+ return deserializedViolations;
+ }
+}
\ No newline at end of file
Added: validator/trunk/hibernate-validator/src/test/java/org/hibernate/validator/engine/serialization/SerializableClass.java
===================================================================
--- validator/trunk/hibernate-validator/src/test/java/org/hibernate/validator/engine/serialization/SerializableClass.java (rev 0)
+++ validator/trunk/hibernate-validator/src/test/java/org/hibernate/validator/engine/serialization/SerializableClass.java 2009-10-01 16:08:48 UTC (rev 17609)
@@ -0,0 +1,29 @@
+// $Id:$
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2008, Red Hat Middleware LLC, and individual contributors
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* Licensed 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.hibernate.validator.engine.serialization;
+
+import java.io.Serializable;
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author Hardy Ferentschik
+ */
+public class SerializableClass implements Serializable {
+ @NotNull
+ private String foo;
+}
Added: validator/trunk/hibernate-validator/src/test/java/org/hibernate/validator/engine/serialization/UnSerializableClass.java
===================================================================
--- validator/trunk/hibernate-validator/src/test/java/org/hibernate/validator/engine/serialization/UnSerializableClass.java (rev 0)
+++ validator/trunk/hibernate-validator/src/test/java/org/hibernate/validator/engine/serialization/UnSerializableClass.java 2009-10-01 16:08:48 UTC (rev 17609)
@@ -0,0 +1,28 @@
+// $Id:$
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2008, Red Hat Middleware LLC, and individual contributors
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* Licensed 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.hibernate.validator.engine.serialization;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author Hardy Ferentschik
+ */
+public class UnSerializableClass {
+ @NotNull
+ private String foo;
+}
\ No newline at end of file
More information about the hibernate-commits
mailing list