MapLookupFactory need to be Ser/Desr.

This commit is contained in:
Slim Bouguerra 2016-04-06 15:02:18 -05:00
parent f82044bdb6
commit 59eb2490a0
3 changed files with 19 additions and 48 deletions

View File

@ -30,7 +30,9 @@ import java.util.Map;
public class MapLookupExtractorFactory implements LookupExtractorFactory
{
@JsonProperty
private final Map<String, String> map;
@JsonProperty
private final boolean isOneToOne;
private final MapLookupExtractor lookupExtractor;

View File

@ -19,10 +19,15 @@
package io.druid.query.extraction;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.collect.ImmutableMap;
import io.druid.jackson.DefaultObjectMapper;
import io.druid.query.lookup.LookupExtractorFactory;
import org.junit.Assert;
import org.junit.Test;
import java.io.IOException;
public class MapLookupExtractorFactoryTest
{
private static final String KEY = "foo";
@ -46,4 +51,12 @@ public class MapLookupExtractorFactoryTest
Assert.assertTrue(factory.replaces(new MapLookupExtractorFactory(ImmutableMap.of(KEY, VALUE + "1"), true)));
Assert.assertTrue(factory.replaces(null));
}
@Test
public void testSerDeserMapLookupExtractorFactory() throws IOException
{
ObjectMapper mapper = new DefaultObjectMapper();
LookupExtractorFactory lookupExtractorFactory = new MapLookupExtractorFactory(ImmutableMap.of("key", "value"), true);
Assert.assertEquals(lookupExtractorFactory, mapper.reader(LookupExtractorFactory.class).readValue(mapper.writeValueAsString(lookupExtractorFactory)));
}
}

View File

@ -19,13 +19,13 @@
package io.druid.query.lookup;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonTypeName;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
import com.google.common.io.Files;
import com.metamx.common.ISE;
import com.metamx.common.StringUtils;
import io.druid.query.extraction.MapLookupExtractorFactory;
import io.druid.segment.TestHelper;
import org.junit.Assert;
import org.junit.Before;
@ -33,7 +33,6 @@ import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import javax.annotation.Nullable;
import java.io.File;
import java.io.IOException;
import java.util.Collections;
@ -55,9 +54,6 @@ public class LookupSnapshotTakerTest
{
basePersistDirectory = temporaryFolder.newFolder().getAbsolutePath();
lookupSnapshotTaker = new LookupSnapshotTaker(mapper, basePersistDirectory);
mapper.registerSubtypes(LookupFactoryMock.class);
mapper.registerSubtypes(LookupExtractorFactory.class);
mapper.addMixIn(LookupExtractorFactory.class, LookupFactoryMock.class);
}
@Test
@ -66,7 +62,7 @@ public class LookupSnapshotTakerTest
LookupBean lookupBean = new LookupBean();
lookupBean.name = "name";
lookupBean.factory = new LookupFactoryMock();
lookupBean.factory = new MapLookupExtractorFactory(ImmutableMap.of("key", "value"), true);
List<LookupBean> lookupBeanList = Lists.newArrayList(lookupBean);
lookupSnapshotTaker.takeSnapshot(lookupBeanList);
List<LookupBean> actualList = lookupSnapshotTaker.pullExistingSnapshot();
@ -81,7 +77,7 @@ public class LookupSnapshotTakerTest
LookupSnapshotTaker lookupSnapshotTaker = new LookupSnapshotTaker(mapper, directory.getAbsolutePath());
LookupBean lookupBean = new LookupBean();
lookupBean.name = "name";
lookupBean.factory = new LookupFactoryMock();
lookupBean.factory = new MapLookupExtractorFactory(ImmutableMap.of("key", "value"), true);
List<LookupBean> lookupBeanList = Lists.newArrayList(lookupBean);
lookupSnapshotTaker.takeSnapshot(lookupBeanList);
}
@ -113,44 +109,4 @@ public class LookupSnapshotTakerTest
List<LookupBean> actualList = lookupSnapshotTaker.pullExistingSnapshot();
Assert.assertEquals(Collections.EMPTY_LIST, actualList);
}
@JsonTypeName("mock")
private class LookupFactoryMock implements LookupExtractorFactory
{
@JsonCreator
public LookupFactoryMock()
{
}
@Override
public boolean start()
{
return true;
}
@Override
public boolean close()
{
return true;
}
@Override
public boolean replaces(@Nullable LookupExtractorFactory other)
{
return false;
}
@Override
public LookupExtractor get()
{
return null;
}
@Override
public boolean equals(Object obj)
{
return obj instanceof LookupFactoryMock;
}
}
}