blob: e6e3e1dba90d46a94625cfb8ca2bcffe12f01419 [file] [log] [blame]
/*
* 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.ignite.internal.marshaller.optimized;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.ObjectStreamField;
import java.io.Serializable;
import org.apache.ignite.marshaller.GridMarshallerAbstractTest;
import org.apache.ignite.marshaller.Marshaller;
import org.junit.Test;
/**
* Test that Optimized Marshaller works with classes with serialPersistentFields.
*/
public class OptimizedMarshallerSerialPersistentFieldsSelfTest extends GridMarshallerAbstractTest {
/** {@inheritDoc} */
@Override protected Marshaller marshaller() {
return new OptimizedMarshaller(false);
}
/**
* @throws Exception If failed.
*/
@Test
public void testOptimizedMarshaller() throws Exception {
unmarshal(marshal(new TestClass()));
TestClass2 val = unmarshal(marshal(new TestClass2()));
assertNull(val.field3);
}
/**
* Test class with serialPersistentFields fields.
*/
private static class TestClass implements Serializable {
private static final long serialVersionUID = 0L;
/** For serialization compatibility. */
private static final ObjectStreamField[] serialPersistentFields = {
new ObjectStreamField("field1", Integer.TYPE),
new ObjectStreamField("field2", Integer.TYPE)
};
/**
* @param s Object output stream.
*/
private void writeObject(ObjectOutputStream s) throws IOException {
s.putFields().put("field1", 1);
s.putFields().put("field2", 2);
s.writeFields();
s.writeObject(null);
}
/**
* @param s Object input stream.
*/
private void readObject(ObjectInputStream s) throws IOException, ClassNotFoundException {
s.defaultReadObject();
s.readObject();
}
}
/**
* Test class with serialPersistentFields fields.
*/
private static class TestClass2 implements Serializable {
private static final long serialVersionUID = 0L;
/** */
private Integer field3 = 1;
/** For serialization compatibility. */
private static final ObjectStreamField[] serialPersistentFields = {
new ObjectStreamField("field1", Integer.TYPE),
new ObjectStreamField("field2", Integer.TYPE)
};
/**
* @param s Object output stream.
*/
private void writeObject(ObjectOutputStream s) throws IOException {
s.putFields().put("field1", 1);
s.putFields().put("field2", 2);
s.writeFields();
s.writeObject(null);
}
/**
* @param s Object input stream.
*/
private void readObject(ObjectInputStream s) throws IOException, ClassNotFoundException {
s.defaultReadObject();
s.readObject();
}
}
}