Skip to content

Commit

Permalink
added test case and fixed javadoc
Browse files Browse the repository at this point in the history
  • Loading branch information
prasanthj committed Dec 9, 2015
1 parent 481ddf4 commit 1ada47d
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 10 deletions.
6 changes: 4 additions & 2 deletions src/com/esotericsoftware/kryo/Kryo.java
Expand Up @@ -1048,8 +1048,10 @@ public void setCopyReferences (boolean copyReferences) {
}

/**
* If true, when {@link #copy(Object)} is called all transient fields that are accessible will be ignored from
* being copied. Default is true.
* If false, when {@link #copy(Object)} is called all transient fields that are accessible will be ignored from
* being copied. This has to be set before registering classes with kryo for it to be used by all field
* serializers. If transient fields has to be copied for specific classes then use {@link FieldSerializer#setCopyTransient(boolean)}.
* Default is true.
*/
public void setCopyTransient(boolean copyTransient) {
this.copyTransient = copyTransient;
Expand Down
Expand Up @@ -173,6 +173,7 @@ public FieldSerializer (Kryo kryo, Class type, Class[] generics) {
this.genericsUtil = new FieldSerializerGenericsUtil(this);
this.unsafeUtil = FieldSerializerUnsafeUtil.Factory.getInstance(this);
this.annotationsUtil = new FieldSerializerAnnotationsUtil(this);
this.copyTransient = kryo.getCopyTransient();
rebuildCachedFields();
}

Expand Down
32 changes: 24 additions & 8 deletions test/com/esotericsoftware/kryo/FieldSerializerTest.java
Expand Up @@ -15,8 +15,8 @@
* SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */

* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */

package com.esotericsoftware.kryo;

import java.util.ArrayList;
Expand All @@ -26,22 +26,19 @@
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import org.objenesis.strategy.StdInstantiatorStrategy;

import com.esotericsoftware.kryo.io.Input;
import com.esotericsoftware.kryo.io.Output;
import com.esotericsoftware.kryo.serializers.CollectionSerializer;
import com.esotericsoftware.kryo.serializers.CollectionSerializer.BindCollection;
import com.esotericsoftware.kryo.serializers.DefaultArraySerializers.IntArraySerializer;
import com.esotericsoftware.kryo.serializers.DefaultArraySerializers.LongArraySerializer;
import com.esotericsoftware.kryo.serializers.DefaultArraySerializers.ObjectArraySerializer;
import com.esotericsoftware.kryo.serializers.DefaultSerializers.StringSerializer;
import com.esotericsoftware.kryo.serializers.FieldSerializer;
import com.esotericsoftware.kryo.serializers.FieldSerializer.Bind;
import com.esotericsoftware.kryo.serializers.FieldSerializer.Optional;
import com.esotericsoftware.kryo.serializers.MapSerializer;
import com.esotericsoftware.kryo.serializers.CollectionSerializer;
import com.esotericsoftware.kryo.serializers.MapSerializer.BindMap;

/** @author Nathan Sweet <misc@n4te.com> */
Expand Down Expand Up @@ -462,7 +459,26 @@ public void testTransients () {
HasTransients objectWithTransients2 = kryo.copy(objectWithTransients1);
assertEquals("Objects should be equal if copy includes transient fields", objectWithTransients2, objectWithTransients1);
}


public void testTransientsUsingGlobalConfig () {
kryo.setCopyTransient(false);
kryo.register(HasTransients.class);
HasTransients objectWithTransients1 = new HasTransients();
objectWithTransients1.transientField1 = "Test";
objectWithTransients1.anotherField2 = 5;
objectWithTransients1.anotherField3 = "Field2";

FieldSerializer<HasTransients> ser = (FieldSerializer<HasTransients>)kryo.getSerializer(HasTransients.class);
HasTransients objectWithTransients3 = kryo.copy(objectWithTransients1);
assertTrue("Objects should be different if copy does not include transient fields",
!objectWithTransients3.equals(objectWithTransients1));
assertEquals("transient fields should be null", objectWithTransients3.transientField1, null);

ser.setCopyTransient(true);
HasTransients objectWithTransients2 = kryo.copy(objectWithTransients1);
assertEquals("Objects should be equal if copy includes transient fields", objectWithTransients2, objectWithTransients1);
}

public void testCorrectlyAnnotatedFields () {
kryo.register(int[].class);
kryo.register(long[].class);
Expand Down Expand Up @@ -1043,4 +1059,4 @@ public boolean equals(Object o) {
return true;
}
}
}
}

0 comments on commit 1ada47d

Please sign in to comment.