From 672488d8cf8ff5238b69b32f23a8ed652039b993 Mon Sep 17 00:00:00 2001 From: Yuta HIGUCHI Date: Tue, 7 Oct 2014 09:23:43 -0700 Subject: [PATCH] KryoSerializationService -> Serializer - no longer a shared OSGi service. Change-Id: Ie2b2320e92685cd515b30ffc472e3a02149a5bbd --- .../impl/DistributedDeviceManagerTest.java | 13 ++----------- .../cluster/impl/DistributedClusterStore.java | 2 +- .../impl/DistributedMastershipStore.java | 2 +- .../store/common/AbstractHazelcastStore.java | 13 +++++++------ .../store/common/OptionalCacheLoader.java | 14 +++++++------- .../device/impl/DistributedDeviceStore.java | 4 ++-- .../store/link/impl/DistributedLinkStore.java | 2 +- .../impl/DistributedDeviceStoreTest.java | 15 ++------------- .../link/impl/DistributedLinkStoreTest.java | 14 ++------------ ...zationManager.java => KryoSerializer.java} | 19 +++---------------- ...ializationService.java => Serializer.java} | 14 +++++--------- features/features.xml | 2 ++ .../org/onlab/netty/MessagingService.java | 1 + 13 files changed, 36 insertions(+), 79 deletions(-) rename core/store/serializers/src/main/java/org/onlab/onos/store/serializers/{KryoSerializationManager.java => KryoSerializer.java} (68%) rename core/store/serializers/src/main/java/org/onlab/onos/store/serializers/{KryoSerializationService.java => Serializer.java} (64%) diff --git a/core/net/src/test/java/org/onlab/onos/net/device/impl/DistributedDeviceManagerTest.java b/core/net/src/test/java/org/onlab/onos/net/device/impl/DistributedDeviceManagerTest.java index 10e9b39038..3f8c0a8f85 100644 --- a/core/net/src/test/java/org/onlab/onos/net/device/impl/DistributedDeviceManagerTest.java +++ b/core/net/src/test/java/org/onlab/onos/net/device/impl/DistributedDeviceManagerTest.java @@ -36,8 +36,6 @@ import org.onlab.onos.store.common.StoreManager; import org.onlab.onos.store.common.StoreService; import org.onlab.onos.store.common.TestStoreManager; import org.onlab.onos.store.device.impl.DistributedDeviceStore; -import org.onlab.onos.store.serializers.KryoSerializationManager; -import org.onlab.onos.store.serializers.KryoSerializationService; import org.onlab.packet.IpPrefix; import java.util.ArrayList; @@ -95,7 +93,6 @@ public class DistributedDeviceManagerTest { private DistributedDeviceStore dstore; private TestMastershipManager masterManager; private EventDeliveryService eventService; - private KryoSerializationManager serializationMgr; @Before public void setUp() { @@ -111,10 +108,7 @@ public class DistributedDeviceManagerTest { storeManager = new TestStoreManager(Hazelcast.newHazelcastInstance(config)); storeManager.activate(); - serializationMgr = new KryoSerializationManager(); - serializationMgr.activate(); - - dstore = new TestDistributedDeviceStore(storeManager, serializationMgr); + dstore = new TestDistributedDeviceStore(storeManager); dstore.activate(); mgr.store = dstore; @@ -140,7 +134,6 @@ public class DistributedDeviceManagerTest { mgr.deactivate(); dstore.deactivate(); - serializationMgr.deactivate(); storeManager.deactivate(); } @@ -306,10 +299,8 @@ public class DistributedDeviceManagerTest { private class TestDistributedDeviceStore extends DistributedDeviceStore { - public TestDistributedDeviceStore(StoreService storeService, - KryoSerializationService kryoSerializationService) { + public TestDistributedDeviceStore(StoreService storeService) { this.storeService = storeService; - this.kryoSerializationService = kryoSerializationService; } } diff --git a/core/store/hz/cluster/src/main/java/org/onlab/onos/store/cluster/impl/DistributedClusterStore.java b/core/store/hz/cluster/src/main/java/org/onlab/onos/store/cluster/impl/DistributedClusterStore.java index f83ac59e2a..61a7374a9e 100644 --- a/core/store/hz/cluster/src/main/java/org/onlab/onos/store/cluster/impl/DistributedClusterStore.java +++ b/core/store/hz/cluster/src/main/java/org/onlab/onos/store/cluster/impl/DistributedClusterStore.java @@ -57,7 +57,7 @@ public class DistributedClusterStore rawNodes = theInstance.getMap("nodes"); OptionalCacheLoader nodeLoader - = new OptionalCacheLoader<>(kryoSerializationService, rawNodes); + = new OptionalCacheLoader<>(serializer, rawNodes); nodes = new AbsentInvalidatingLoadingCache<>(newBuilder().build(nodeLoader)); rawNodes.addEntryListener(new RemoteCacheEventHandler<>(nodes), true); diff --git a/core/store/hz/cluster/src/main/java/org/onlab/onos/store/cluster/impl/DistributedMastershipStore.java b/core/store/hz/cluster/src/main/java/org/onlab/onos/store/cluster/impl/DistributedMastershipStore.java index 18e6e96eab..aafbe4b4e9 100644 --- a/core/store/hz/cluster/src/main/java/org/onlab/onos/store/cluster/impl/DistributedMastershipStore.java +++ b/core/store/hz/cluster/src/main/java/org/onlab/onos/store/cluster/impl/DistributedMastershipStore.java @@ -52,7 +52,7 @@ implements MastershipStore { rawMasters = theInstance.getMap("masters"); OptionalCacheLoader nodeLoader - = new OptionalCacheLoader<>(kryoSerializationService, rawMasters); + = new OptionalCacheLoader<>(serializer, rawMasters); masters = new AbsentInvalidatingLoadingCache<>(newBuilder().build(nodeLoader)); rawMasters.addEntryListener(new RemoteMasterShipEventHandler(masters), true); diff --git a/core/store/hz/common/src/main/java/org/onlab/onos/store/common/AbstractHazelcastStore.java b/core/store/hz/common/src/main/java/org/onlab/onos/store/common/AbstractHazelcastStore.java index 29af33a3fa..ff9f43a533 100644 --- a/core/store/hz/common/src/main/java/org/onlab/onos/store/common/AbstractHazelcastStore.java +++ b/core/store/hz/common/src/main/java/org/onlab/onos/store/common/AbstractHazelcastStore.java @@ -15,7 +15,8 @@ import org.apache.felix.scr.annotations.ReferenceCardinality; import org.onlab.onos.event.Event; import org.onlab.onos.store.AbstractStore; import org.onlab.onos.store.StoreDelegate; -import org.onlab.onos.store.serializers.KryoSerializationService; +import org.onlab.onos.store.serializers.KryoSerializer; +import org.onlab.onos.store.serializers.Serializer; import org.slf4j.Logger; import static com.google.common.base.Preconditions.checkNotNull; @@ -24,7 +25,7 @@ import static org.slf4j.LoggerFactory.getLogger; /** * Abstraction of a distributed store based on Hazelcast. */ -@Component(componentAbstract = true) +@Component public abstract class AbstractHazelcastStore> extends AbstractStore { @@ -33,13 +34,13 @@ public abstract class AbstractHazelcastStore T deserialize(byte[] bytes) { - return kryoSerializationService.decode(bytes); + return serializer.decode(bytes); } diff --git a/core/store/hz/common/src/main/java/org/onlab/onos/store/common/OptionalCacheLoader.java b/core/store/hz/common/src/main/java/org/onlab/onos/store/common/OptionalCacheLoader.java index 2629e2d474..663159441c 100644 --- a/core/store/hz/common/src/main/java/org/onlab/onos/store/common/OptionalCacheLoader.java +++ b/core/store/hz/common/src/main/java/org/onlab/onos/store/common/OptionalCacheLoader.java @@ -2,7 +2,7 @@ package org.onlab.onos.store.common; import static com.google.common.base.Preconditions.checkNotNull; -import org.onlab.onos.store.serializers.KryoSerializationService; +import org.onlab.onos.store.serializers.Serializer; import com.google.common.base.Optional; import com.google.common.cache.CacheLoader; @@ -18,28 +18,28 @@ import com.hazelcast.core.IMap; public final class OptionalCacheLoader extends CacheLoader> { - private final KryoSerializationService kryoSerializationService; + private final Serializer serializer; private IMap rawMap; /** * Constructor. * - * @param kryoSerializationService to use for serialization + * @param serializer to use for serialization * @param rawMap underlying IMap */ - public OptionalCacheLoader(KryoSerializationService kryoSerializationService, IMap rawMap) { - this.kryoSerializationService = checkNotNull(kryoSerializationService); + public OptionalCacheLoader(Serializer serializer, IMap rawMap) { + this.serializer = checkNotNull(serializer); this.rawMap = checkNotNull(rawMap); } @Override public Optional load(K key) throws Exception { - byte[] keyBytes = kryoSerializationService.encode(key); + byte[] keyBytes = serializer.encode(key); byte[] valBytes = rawMap.get(keyBytes); if (valBytes == null) { return Optional.absent(); } - V dev = kryoSerializationService.decode(valBytes); + V dev = serializer.decode(valBytes); return Optional.of(dev); } } diff --git a/core/store/hz/net/src/main/java/org/onlab/onos/store/device/impl/DistributedDeviceStore.java b/core/store/hz/net/src/main/java/org/onlab/onos/store/device/impl/DistributedDeviceStore.java index 2ecd52566c..0016939074 100644 --- a/core/store/hz/net/src/main/java/org/onlab/onos/store/device/impl/DistributedDeviceStore.java +++ b/core/store/hz/net/src/main/java/org/onlab/onos/store/device/impl/DistributedDeviceStore.java @@ -88,7 +88,7 @@ public class DistributedDeviceStore // TODO decide on Map name scheme to avoid collision rawDevices = theInstance.getMap("devices"); final OptionalCacheLoader deviceLoader - = new OptionalCacheLoader<>(kryoSerializationService, rawDevices); + = new OptionalCacheLoader<>(serializer, rawDevices); devices = new AbsentInvalidatingLoadingCache<>(newBuilder().build(deviceLoader)); // refresh/populate cache based on notification from other instance devicesListener = rawDevices.addEntryListener(new RemoteDeviceEventHandler(devices), includeValue); @@ -98,7 +98,7 @@ public class DistributedDeviceStore rawDevicePorts = theInstance.getMap("devicePorts"); final OptionalCacheLoader> devicePortLoader - = new OptionalCacheLoader<>(kryoSerializationService, rawDevicePorts); + = new OptionalCacheLoader<>(serializer, rawDevicePorts); devicePorts = new AbsentInvalidatingLoadingCache<>(newBuilder().build(devicePortLoader)); // refresh/populate cache based on notification from other instance portsListener = rawDevicePorts.addEntryListener(new RemotePortEventHandler(devicePorts), includeValue); diff --git a/core/store/hz/net/src/main/java/org/onlab/onos/store/link/impl/DistributedLinkStore.java b/core/store/hz/net/src/main/java/org/onlab/onos/store/link/impl/DistributedLinkStore.java index 5f5184fdae..3dd42a3be4 100644 --- a/core/store/hz/net/src/main/java/org/onlab/onos/store/link/impl/DistributedLinkStore.java +++ b/core/store/hz/net/src/main/java/org/onlab/onos/store/link/impl/DistributedLinkStore.java @@ -71,7 +71,7 @@ public class DistributedLinkStore // TODO decide on Map name scheme to avoid collision rawLinks = theInstance.getMap("links"); final OptionalCacheLoader linkLoader - = new OptionalCacheLoader<>(kryoSerializationService, rawLinks); + = new OptionalCacheLoader<>(serializer, rawLinks); links = new AbsentInvalidatingLoadingCache<>(newBuilder().build(linkLoader)); // refresh/populate cache based on notification from other instance linksListener = rawLinks.addEntryListener(new RemoteLinkEventHandler(links), includeValue); diff --git a/core/store/hz/net/src/test/java/org/onlab/onos/store/device/impl/DistributedDeviceStoreTest.java b/core/store/hz/net/src/test/java/org/onlab/onos/store/device/impl/DistributedDeviceStoreTest.java index 80c9464b6f..7e2924b05f 100644 --- a/core/store/hz/net/src/test/java/org/onlab/onos/store/device/impl/DistributedDeviceStoreTest.java +++ b/core/store/hz/net/src/test/java/org/onlab/onos/store/device/impl/DistributedDeviceStoreTest.java @@ -36,9 +36,6 @@ import org.onlab.onos.net.provider.ProviderId; import org.onlab.onos.store.common.StoreManager; import org.onlab.onos.store.common.StoreService; import org.onlab.onos.store.common.TestStoreManager; -import org.onlab.onos.store.serializers.KryoSerializationManager; -import org.onlab.onos.store.serializers.KryoSerializationService; - import com.google.common.collect.Iterables; import com.google.common.collect.Sets; import com.hazelcast.config.Config; @@ -63,7 +60,6 @@ public class DistributedDeviceStoreTest { private static final PortNumber P3 = PortNumber.portNumber(3); private DistributedDeviceStore deviceStore; - private KryoSerializationManager serializationMgr; private StoreManager storeManager; @@ -85,10 +81,7 @@ public class DistributedDeviceStoreTest { storeManager = new TestStoreManager(Hazelcast.newHazelcastInstance(config)); storeManager.activate(); - serializationMgr = new KryoSerializationManager(); - serializationMgr.activate(); - - deviceStore = new TestDistributedDeviceStore(storeManager, serializationMgr); + deviceStore = new TestDistributedDeviceStore(storeManager); deviceStore.activate(); } @@ -96,8 +89,6 @@ public class DistributedDeviceStoreTest { public void tearDown() throws Exception { deviceStore.deactivate(); - serializationMgr.deactivate(); - storeManager.deactivate(); } @@ -392,10 +383,8 @@ public class DistributedDeviceStoreTest { } private class TestDistributedDeviceStore extends DistributedDeviceStore { - public TestDistributedDeviceStore(StoreService storeService, - KryoSerializationService kryoSerializationService) { + public TestDistributedDeviceStore(StoreService storeService) { this.storeService = storeService; - this.kryoSerializationService = kryoSerializationService; } } } diff --git a/core/store/hz/net/src/test/java/org/onlab/onos/store/link/impl/DistributedLinkStoreTest.java b/core/store/hz/net/src/test/java/org/onlab/onos/store/link/impl/DistributedLinkStoreTest.java index a76e901ef7..dd959b5866 100644 --- a/core/store/hz/net/src/test/java/org/onlab/onos/store/link/impl/DistributedLinkStoreTest.java +++ b/core/store/hz/net/src/test/java/org/onlab/onos/store/link/impl/DistributedLinkStoreTest.java @@ -30,9 +30,6 @@ import org.onlab.onos.net.provider.ProviderId; import org.onlab.onos.store.common.StoreManager; import org.onlab.onos.store.common.StoreService; import org.onlab.onos.store.common.TestStoreManager; -import org.onlab.onos.store.serializers.KryoSerializationManager; -import org.onlab.onos.store.serializers.KryoSerializationService; - import com.google.common.collect.Iterables; import com.hazelcast.config.Config; import com.hazelcast.core.Hazelcast; @@ -51,7 +48,6 @@ public class DistributedLinkStoreTest { private static final PortNumber P3 = PortNumber.portNumber(3); private StoreManager storeManager; - private KryoSerializationManager serializationMgr; private DistributedLinkStore linkStore; @@ -71,17 +67,13 @@ public class DistributedLinkStoreTest { storeManager = new TestStoreManager(Hazelcast.newHazelcastInstance(config)); storeManager.activate(); - serializationMgr = new KryoSerializationManager(); - serializationMgr.activate(); - - linkStore = new TestDistributedLinkStore(storeManager, serializationMgr); + linkStore = new TestDistributedLinkStore(storeManager); linkStore.activate(); } @After public void tearDown() throws Exception { linkStore.deactivate(); - serializationMgr.deactivate(); storeManager.deactivate(); } @@ -361,10 +353,8 @@ public class DistributedLinkStoreTest { class TestDistributedLinkStore extends DistributedLinkStore { - TestDistributedLinkStore(StoreService storeService, - KryoSerializationService kryoSerializationService) { + TestDistributedLinkStore(StoreService storeService) { this.storeService = storeService; - this.kryoSerializationService = kryoSerializationService; } } } diff --git a/core/store/serializers/src/main/java/org/onlab/onos/store/serializers/KryoSerializationManager.java b/core/store/serializers/src/main/java/org/onlab/onos/store/serializers/KryoSerializer.java similarity index 68% rename from core/store/serializers/src/main/java/org/onlab/onos/store/serializers/KryoSerializationManager.java rename to core/store/serializers/src/main/java/org/onlab/onos/store/serializers/KryoSerializer.java index 4f756f616c..19517f3c4a 100644 --- a/core/store/serializers/src/main/java/org/onlab/onos/store/serializers/KryoSerializationManager.java +++ b/core/store/serializers/src/main/java/org/onlab/onos/store/serializers/KryoSerializer.java @@ -1,9 +1,5 @@ package org.onlab.onos.store.serializers; -import org.apache.felix.scr.annotations.Activate; -import org.apache.felix.scr.annotations.Component; -import org.apache.felix.scr.annotations.Deactivate; -import org.apache.felix.scr.annotations.Service; import org.onlab.util.KryoPool; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -11,25 +7,16 @@ import org.slf4j.LoggerFactory; import java.nio.ByteBuffer; /** - * Serialization service using Kryo. + * Serializer implementation using Kryo. */ -@Component(immediate = true) -@Service -public class KryoSerializationManager implements KryoSerializationService { +public class KryoSerializer implements Serializer { private final Logger log = LoggerFactory.getLogger(getClass()); private KryoPool serializerPool; - @Activate - public void activate() { + public KryoSerializer() { setupKryoPool(); - log.info("Started"); - } - - @Deactivate - public void deactivate() { - log.info("Stopped"); } /** diff --git a/core/store/serializers/src/main/java/org/onlab/onos/store/serializers/KryoSerializationService.java b/core/store/serializers/src/main/java/org/onlab/onos/store/serializers/Serializer.java similarity index 64% rename from core/store/serializers/src/main/java/org/onlab/onos/store/serializers/KryoSerializationService.java rename to core/store/serializers/src/main/java/org/onlab/onos/store/serializers/Serializer.java index 8a98ccf149..12cf3bc245 100644 --- a/core/store/serializers/src/main/java/org/onlab/onos/store/serializers/KryoSerializationService.java +++ b/core/store/serializers/src/main/java/org/onlab/onos/store/serializers/Serializer.java @@ -6,11 +6,10 @@ import java.nio.ByteBuffer; /** * Service to serialize Objects into byte array. */ -public interface KryoSerializationService { +public interface Serializer { /** - * Serializes the specified object into bytes using one of the - * pre-registered serializers. + * Serializes the specified object into bytes. * * @param obj object to be serialized * @return serialized bytes @@ -18,8 +17,7 @@ public interface KryoSerializationService { public byte[] encode(final Object obj); /** - * Serializes the specified object into bytes using one of the - * pre-registered serializers. + * Serializes the specified object into bytes. * * @param obj object to be serialized * @param buffer to write serialized bytes @@ -27,8 +25,7 @@ public interface KryoSerializationService { public void encode(final Object obj, ByteBuffer buffer); /** - * Deserializes the specified bytes into an object using one of the - * pre-registered serializers. + * Deserializes the specified bytes into an object. * * @param bytes bytes to be deserialized * @return deserialized object @@ -36,8 +33,7 @@ public interface KryoSerializationService { public T decode(final byte[] bytes); /** - * Deserializes the specified bytes into an object using one of the - * pre-registered serializers. + * Deserializes the specified bytes into an object. * * @param buffer bytes to be deserialized * @return deserialized object diff --git a/features/features.xml b/features/features.xml index 44606eb10d..491d46b81c 100644 --- a/features/features.xml +++ b/features/features.xml @@ -53,6 +53,8 @@ onos-api mvn:org.onlab.onos/onos-core-net/1.0.0-SNAPSHOT mvn:org.onlab.onos/onos-core-dist/1.0.0-SNAPSHOT + mvn:org.onlab.onos/onos-core-serializers/1.0.0-SNAPSHOT + mvn:org.onlab.onos/onlab-netty/1.0.0-SNAPSHOT