com.proofpoint.event.collector.TestFilteringMapSerializer.java Source code

Java tutorial

Introduction

Here is the source code for com.proofpoint.event.collector.TestFilteringMapSerializer.java

Source

/*
 * Copyright 2011-2014 Proofpoint, Inc.
 *
 * 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 com.proofpoint.event.collector;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.Version;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.proofpoint.event.collector.FilteringMapSerializer.DefinedPropertiesSelectionPolicy;
import com.proofpoint.json.JsonCodec;
import com.proofpoint.json.ObjectMapperProvider;
import org.joda.time.DateTime;
import org.testng.annotations.Test;

import java.util.List;
import java.util.UUID;

import static org.testng.Assert.assertEquals;

public class TestFilteringMapSerializer {
    private final JsonCodec<Event> eventCodec = JsonCodec.jsonCodec(Event.class);
    private final String uuid = UUID.randomUUID().toString();
    private final DateTime now = DateTime.now();

    @Test
    public void testSimpleFiltering() throws JsonProcessingException {
        ObjectMapper mapper = getMapper(new FilteringMapSerializer(
                ImmutableList.of(new DefinedPropertiesSelectionPolicy("data", ImmutableSet.of("key1", "key2")))));
        Event event = new Event("TestEvent", uuid, "localhost", now,
                ImmutableMap.of("key1", "value1", "key2", "value2", "key3", ImmutableMap.of("subkey1", "subvalue2"),
                        "key4", ImmutableList.of("listElement1", "listElement2")));
        Event filteredEvent1 = new Event("TestEvent", uuid, "localhost", now,
                ImmutableMap.of("key1", "value1", "key2", "value2"));

        String fromMyObjectMapper = mapper.writeValueAsString(event);

        Event eventFromFilteredString = eventCodec.fromJson(fromMyObjectMapper);
        assertEquals(eventFromFilteredString, filteredEvent1);
    }

    @Test
    public void testExtraInapplicableFilters() throws JsonProcessingException {
        ObjectMapper mapper = getMapper(new FilteringMapSerializer(ImmutableList
                .of(new DefinedPropertiesSelectionPolicy("data", ImmutableSet.of("key1", "key2", "key15")))));
        Event event = new Event("TestEvent", uuid, "localhost", now,
                ImmutableMap.of("key1", "value1", "key2", "value2", "key3", ImmutableMap.of("subkey1", "subvalue2"),
                        "key4", ImmutableList.of("listElement1", "listElement2")));
        Event filteredEvent1 = new Event("TestEvent", uuid, "localhost", now,
                ImmutableMap.of("key1", "value1", "key2", "value2"));

        String fromMyObjectMapper = mapper.writeValueAsString(event);

        Event eventFromFilteredString = eventCodec.fromJson(fromMyObjectMapper);
        assertEquals(eventFromFilteredString, filteredEvent1);
    }

    @Test
    public void testNoFilters() throws JsonProcessingException {
        ObjectMapper mapper = getMapper(
                new FilteringMapSerializer(ImmutableList.<DefinedPropertiesSelectionPolicy>of()));
        Event event = new Event("TestEvent", uuid, "localhost", now,
                ImmutableMap.of("key1", "value1", "key2", "value2", "key3", ImmutableMap.of("subkey1", "subvalue2"),
                        "key4", ImmutableList.of("listElement1", "listElement2")));

        String fromMyObjectMapper = mapper.writeValueAsString(event);

        Event eventFromFilteredString = eventCodec.fromJson(fromMyObjectMapper);
        assertEquals(eventFromFilteredString, event);
    }

    @Test
    public void testSubstructuresAreNotFiltered() throws JsonProcessingException {
        ObjectMapper mapper = getMapper(
                new FilteringMapSerializer(ImmutableList.of(new DefinedPropertiesSelectionPolicy("data",
                        ImmutableSet.of("key3", "key4", "subkey1", "listElement1")))));
        Event event = new Event("TestEvent", uuid, "localhost", now,
                ImmutableMap.of("key1", "value1", "key2", "value2", "key3", ImmutableMap.of("subkey1", "subvalue2"),
                        "key4", ImmutableList.of("listElement1", "listElement2")));
        Event filteredEvent1 = new Event("TestEvent", uuid, "localhost", now, ImmutableMap.of("key3",
                ImmutableMap.of("subkey1", "subvalue2"), "key4", ImmutableList.of("listElement1", "listElement2")));

        String fromMyObjectMapper = mapper.writeValueAsString(event);

        Event eventFromFilteredString = eventCodec.fromJson(fromMyObjectMapper);
        assertEquals(eventFromFilteredString, filteredEvent1);
    }

    @Test
    public void testFiltersListOfEvents() throws JsonProcessingException {
        ObjectMapper mapper = getMapper(
                new FilteringMapSerializer(ImmutableList.of(new DefinedPropertiesSelectionPolicy("data",
                        ImmutableSet.of("key3", "key4", "subkey1", "listElement1")))));
        Event event = new Event("TestEvent", uuid, "localhost", now,
                ImmutableMap.of("key1", "value1", "key2", "value2", "key3", ImmutableMap.of("subkey1", "subvalue2"),
                        "key4", ImmutableList.of("listElement1", "listElement2")));
        Event event2 = new Event("TestEvent", uuid, "localhost", now,
                ImmutableMap.of("key1", "value1a", "key2", "value2a", "key3",
                        ImmutableMap.of("subkey1a", "subvalue2a"), "key4",
                        ImmutableList.of("listElement1a", "listElement2a")));

        Event filteredEvent1 = new Event("TestEvent", uuid, "localhost", now, ImmutableMap.of("key3",
                ImmutableMap.of("subkey1", "subvalue2"), "key4", ImmutableList.of("listElement1", "listElement2")));
        Event filteredEvent2 = new Event("TestEvent", uuid, "localhost", now,
                ImmutableMap.of("key3", ImmutableMap.of("subkey1a", "subvalue2a"), "key4",
                        ImmutableList.of("listElement1a", "listElement2a")));

        String fromMyObjectMapper = mapper.writeValueAsString(ImmutableList.of(event, event2));

        List<Event> eventsFromFilteredString = JsonCodec.listJsonCodec(Event.class).fromJson(fromMyObjectMapper);
        assertEquals(eventsFromFilteredString, ImmutableList.of(filteredEvent1, filteredEvent2));
    }

    private ObjectMapper getMapper(FilteringMapSerializer filteringMapSerializer) {
        SimpleModule testModule = new SimpleModule("FilteringEventModule", Version.unknownVersion());
        testModule.addSerializer(filteringMapSerializer);
        ObjectMapper mapper = new ObjectMapperProvider().get();
        mapper.registerModule(testModule);
        return mapper;
    }
}