Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/develop' into gh-140-proxy-store
Browse files Browse the repository at this point in the history
  • Loading branch information
p013570 committed Jan 16, 2017
2 parents 18391ea + 4d006e3 commit 358631b
Show file tree
Hide file tree
Showing 6 changed files with 45 additions and 37 deletions.
1 change: 1 addition & 0 deletions Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ for (x in labels) {
sh "${jdk}/bin/java -version"
sh "'${mvnHome}/bin/mvn' clean"
sh "'${mvnHome}/bin/mvn' -Dmaven.test.failure.ignore package"
sh "'${mvnHome}/bin/mvn' test integration-test -Pserialisation-compatibility -Dmaven.test.failure.ignore -pl :serialisation"
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import com.fasterxml.jackson.databind.ObjectWriter;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.ser.BeanPropertyFilter;
import com.fasterxml.jackson.databind.ser.FilterProvider;
import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter;
import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider;
Expand Down Expand Up @@ -71,9 +72,10 @@ public static ObjectMapper createDefaultMapper() {
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
mapper.configure(SerializationFeature.CLOSE_CLOSEABLE, true);
mapper.setFilterProvider(getFilterProvider());
mapper.registerModule(getCloseableIterableDeserialiserModule());

// Use the 'setFilters' method so it is compatible with older versions of jackson
mapper.setFilters(getFilterProvider());
return mapper;
}

Expand All @@ -85,12 +87,13 @@ private static SimpleModule getCloseableIterableDeserialiserModule() {

public static FilterProvider getFilterProvider(final String... fieldsToExclude) {
if (null == fieldsToExclude || fieldsToExclude.length == 0) {
// Use the 'serializeAllExcept' method so it is compatible with older versions of jackson
return new SimpleFilterProvider()
.addFilter(FILTER_FIELDS_BY_NAME, SimpleBeanPropertyFilter.serializeAll());
.addFilter(FILTER_FIELDS_BY_NAME, (BeanPropertyFilter) SimpleBeanPropertyFilter.serializeAllExcept());
}

return new SimpleFilterProvider()
.addFilter(FILTER_FIELDS_BY_NAME, SimpleBeanPropertyFilter.serializeAllExcept(fieldsToExclude));
.addFilter(FILTER_FIELDS_BY_NAME, (BeanPropertyFilter) SimpleBeanPropertyFilter.serializeAllExcept(fieldsToExclude));
}


Expand Down
44 changes: 11 additions & 33 deletions .../serialisation/src/test/java/uk/gov/gchq/gaffer/jsonSerialisation/JSONSerialiserTest.java
100755 → 100644
Original file line number Diff line number Diff line change
Expand Up @@ -18,21 +18,18 @@

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ser.FilterProvider;
import com.fasterxml.jackson.databind.ser.PropertyFilter;
import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter;
import org.junit.Before;
import org.junit.Test;
import uk.gov.gchq.gaffer.commonutil.CommonConstants;
import uk.gov.gchq.gaffer.commonutil.JsonUtil;
import uk.gov.gchq.gaffer.exception.SerialisationException;
import uk.gov.gchq.gaffer.jsonserialisation.JSONSerialiser;
import uk.gov.gchq.gaffer.serialisation.ParameterisedTestObject;
import uk.gov.gchq.gaffer.serialisation.SimpleTestObject;
import java.io.IOException;
import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.Set;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
Expand Down Expand Up @@ -160,45 +157,26 @@ public void testParameterisedDeserialisationOfComplexObjectToIncorrectType() thr
}

@Test
public void shouldGetFilterProviderWithFieldsToExclude() throws Exception {
public void shouldSerialiseObjectWithoutFieldX() throws Exception {
// Given
final String[] fieldsToExclude = {"testField1", "testField2"};
final SimpleTestObject obj = new SimpleTestObject();

// When
final FilterProvider filterProvider = JSONSerialiser.getFilterProvider(fieldsToExclude);
final String json = new String(serialiser.serialise(obj, "x"), CommonConstants.UTF_8);

// Then
final PropertyFilter propertyFilter = filterProvider.findPropertyFilter(
JSONSerialiser.FILTER_FIELDS_BY_NAME, null);
assertTrue(propertyFilter instanceof SimpleBeanPropertyFilter.SerializeExceptFilter);

final Field field = SimpleBeanPropertyFilter.SerializeExceptFilter
.class.getDeclaredField("_propertiesToExclude");
field.setAccessible(true); //required if field is not normally accessible
final Set<String> fieldsExcluded = (Set<String>) field.get(propertyFilter);
assertEquals(fieldsToExclude.length, fieldsExcluded.size());
assertTrue(fieldsExcluded.containsAll(
Arrays.asList(fieldsToExclude)));
assertFalse(json.contains("x"));
}

@Test
public void shouldGetFilterProviderWithNoFieldsToExclude()
throws Exception {
public void shouldSerialiseObjectWithFieldX() throws Exception {
// Given
final String[] fieldsToExclude = {};
final SimpleTestObject obj = new SimpleTestObject();

// When
final FilterProvider filterProvider = JSONSerialiser.getFilterProvider(fieldsToExclude);
final String json = new String(serialiser.serialise(obj), CommonConstants.UTF_8);

// Then
final PropertyFilter propertyFilter = filterProvider.findPropertyFilter(
JSONSerialiser.FILTER_FIELDS_BY_NAME, null);
assertTrue(propertyFilter instanceof SimpleBeanPropertyFilter.SerializeExceptFilter);

final Field field = SimpleBeanPropertyFilter.SerializeExceptFilter
.class.getDeclaredField("_propertiesToExclude");
field.setAccessible(true); //required if field is not normally accessible
final Set<String> fieldsExcluded = (Set<String>) field.get(propertyFilter);
assertEquals(0, fieldsExcluded.size());
assertTrue(json.contains("x"));
}
}
3 changes: 3 additions & 0 deletions core/serialisation/src/test/java/uk/gov/gchq/gaffer/serialisation/SimpleTestObject.java
100755 → 100644
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,11 @@

package uk.gov.gchq.gaffer.serialisation;

import com.fasterxml.jackson.annotation.JsonFilter;
import uk.gov.gchq.gaffer.jsonserialisation.JSONSerialiser;
import java.io.Serializable;

@JsonFilter(JSONSerialiser.FILTER_FIELDS_BY_NAME)
public class SimpleTestObject implements Serializable {

private static final long serialVersionUID = 1L;
Expand Down
15 changes: 15 additions & 0 deletions library/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,19 @@
<module>sketches-library</module>
<module>spark</module>
</modules>

<profiles>
<profile>
<id>serialisation-compatibility</id>
<properties>
<jackson.version>${jackson.min.version}</jackson.version>
</properties>
<!-- Skip spark as requires a newer version of jackson-->
<modules>
<module>core-library</module>
<module>hdfs-library</module>
<module>sketches-library</module>
</modules>
</profile>
</profiles>
</project>
10 changes: 9 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,9 @@
<accumulo.version>1.7.2</accumulo.version>
<avro.version>1.7.7</avro.version>
<hadoop.version>2.6.5</hadoop.version>
<jackson.version>2.6.5</jackson.version>
<jackson.compile.version>2.6.5</jackson.compile.version>
<jackson.min.version>2.3.1</jackson.min.version>
<jackson.version>${jackson.compile.version}</jackson.version>

<clearspring.version>2.7.0</clearspring.version>
<datasketches.version>0.8.3</datasketches.version>
Expand Down Expand Up @@ -920,5 +922,11 @@
</plugins>
</build>
</profile>
<profile>
<id>serialisation-compatibility</id>
<properties>
<jackson.version>${jackson.min.version}</jackson.version>
</properties>
</profile>
</profiles>
</project>

0 comments on commit 358631b

Please sign in to comment.