From a1748aff294705ca2485e387ec5caff439840497 Mon Sep 17 00:00:00 2001 From: Paul Ferraro Date: Mon, 8 Jan 2018 09:37:51 -0500 Subject: [PATCH] WFLY-9613 Reduce lambda usage in clustering api externalizers/formats --- ...ternalizer.java => LocalNodeResolver.java} | 34 +++++++++++-------- ...rnalizer.java => ServiceNameResolver.java} | 32 ++++++++++------- ...se.java => LocalNodeResolverTestCase.java} | 12 +++++-- ....java => ServiceNameResolverTestCase.java} | 12 +++++-- 4 files changed, 57 insertions(+), 33 deletions(-) rename clustering/server/src/main/java/org/wildfly/clustering/server/group/{LocalNodeExternalizer.java => LocalNodeResolver.java} (62%) rename clustering/server/src/main/java/org/wildfly/clustering/server/singleton/{ServiceNameExternalizer.java => ServiceNameResolver.java} (63%) rename clustering/server/src/test/java/org/wildfly/clustering/server/group/{LocalNodeExternalizerTestCase.java => LocalNodeResolverTestCase.java} (75%) rename clustering/server/src/test/java/org/wildfly/clustering/server/singleton/{ServiceNameExternalizerTestCase.java => ServiceNameResolverTestCase.java} (74%) diff --git a/clustering/server/src/main/java/org/wildfly/clustering/server/group/LocalNodeExternalizer.java b/clustering/server/src/main/java/org/wildfly/clustering/server/group/LocalNodeResolver.java similarity index 62% rename from clustering/server/src/main/java/org/wildfly/clustering/server/group/LocalNodeExternalizer.java rename to clustering/server/src/main/java/org/wildfly/clustering/server/group/LocalNodeResolver.java index 45036705d19d..e3aa9c7b4461 100644 --- a/clustering/server/src/main/java/org/wildfly/clustering/server/group/LocalNodeExternalizer.java +++ b/clustering/server/src/main/java/org/wildfly/clustering/server/group/LocalNodeResolver.java @@ -22,33 +22,39 @@ package org.wildfly.clustering.server.group; -import java.io.IOException; -import java.io.ObjectInput; -import java.io.ObjectOutput; +import java.util.function.Function; import org.kohsuke.MetaInfServices; import org.wildfly.clustering.infinispan.spi.persistence.KeyFormat; import org.wildfly.clustering.infinispan.spi.persistence.SimpleKeyFormat; import org.wildfly.clustering.marshalling.Externalizer; +import org.wildfly.clustering.marshalling.spi.StringExternalizer; /** - * Marshalling externalizer for a {@link LocalNode}. + * Resolver for a {@link LocalNode}. * @author Paul Ferraro */ -@MetaInfServices({ Externalizer.class, KeyFormat.class }) -public class LocalNodeExternalizer extends SimpleKeyFormat implements Externalizer { +public enum LocalNodeResolver implements Function { + INSTANCE; - public LocalNodeExternalizer() { - super(LocalNode.class, LocalNode::new, LocalNode::getName); + @Override + public LocalNode apply(String name) { + return new LocalNode(name); } - @Override - public void writeObject(ObjectOutput output, LocalNode node) throws IOException { - output.writeUTF(node.getName()); + static final Function PARSER = LocalNode::getName; + + @MetaInfServices(Externalizer.class) + public static class LocalNodeExternalizer extends StringExternalizer { + public LocalNodeExternalizer() { + super(LocalNode.class, INSTANCE, PARSER); + } } - @Override - public LocalNode readObject(ObjectInput input) throws IOException { - return new LocalNode(input.readUTF()); + @MetaInfServices(KeyFormat.class) + public static class LocalNodeKeyFormat extends SimpleKeyFormat { + public LocalNodeKeyFormat() { + super(LocalNode.class, INSTANCE, PARSER); + } } } diff --git a/clustering/server/src/main/java/org/wildfly/clustering/server/singleton/ServiceNameExternalizer.java b/clustering/server/src/main/java/org/wildfly/clustering/server/singleton/ServiceNameResolver.java similarity index 63% rename from clustering/server/src/main/java/org/wildfly/clustering/server/singleton/ServiceNameExternalizer.java rename to clustering/server/src/main/java/org/wildfly/clustering/server/singleton/ServiceNameResolver.java index 536d8f5b7b7b..dd10b935e171 100644 --- a/clustering/server/src/main/java/org/wildfly/clustering/server/singleton/ServiceNameExternalizer.java +++ b/clustering/server/src/main/java/org/wildfly/clustering/server/singleton/ServiceNameResolver.java @@ -21,34 +21,40 @@ */ package org.wildfly.clustering.server.singleton; -import java.io.IOException; -import java.io.ObjectInput; -import java.io.ObjectOutput; +import java.util.function.Function; import org.jboss.msc.service.ServiceName; import org.kohsuke.MetaInfServices; import org.wildfly.clustering.infinispan.spi.persistence.KeyFormat; import org.wildfly.clustering.infinispan.spi.persistence.SimpleKeyFormat; import org.wildfly.clustering.marshalling.Externalizer; +import org.wildfly.clustering.marshalling.spi.StringExternalizer; /** * {@link Externalizer} for a {@link ServiceName}. * @author Paul Ferraro */ -@MetaInfServices({ Externalizer.class, KeyFormat.class }) -public class ServiceNameExternalizer extends SimpleKeyFormat implements Externalizer { +public enum ServiceNameResolver implements Function { + RESOLVER; - public ServiceNameExternalizer() { - super(ServiceName.class, ServiceName::parse, ServiceName::getCanonicalName); + @Override + public ServiceName apply(String name) { + return ServiceName.parse(name); } - @Override - public void writeObject(ObjectOutput output, ServiceName name) throws IOException { - output.writeUTF(name.getCanonicalName()); + static final Function PARSER = ServiceName::getCanonicalName; + + @MetaInfServices(Externalizer.class) + public static class ServiceNameExternalizer extends StringExternalizer { + public ServiceNameExternalizer() { + super(ServiceName.class, RESOLVER, PARSER); + } } - @Override - public ServiceName readObject(ObjectInput input) throws IOException { - return ServiceName.parse(input.readUTF()); + @MetaInfServices(KeyFormat.class) + public static class ServiceNameKeyFormat extends SimpleKeyFormat { + public ServiceNameKeyFormat() { + super(ServiceName.class, RESOLVER, PARSER); + } } } diff --git a/clustering/server/src/test/java/org/wildfly/clustering/server/group/LocalNodeExternalizerTestCase.java b/clustering/server/src/test/java/org/wildfly/clustering/server/group/LocalNodeResolverTestCase.java similarity index 75% rename from clustering/server/src/test/java/org/wildfly/clustering/server/group/LocalNodeExternalizerTestCase.java rename to clustering/server/src/test/java/org/wildfly/clustering/server/group/LocalNodeResolverTestCase.java index af87734f7f44..e226339bfb40 100644 --- a/clustering/server/src/test/java/org/wildfly/clustering/server/group/LocalNodeExternalizerTestCase.java +++ b/clustering/server/src/test/java/org/wildfly/clustering/server/group/LocalNodeResolverTestCase.java @@ -25,16 +25,22 @@ import java.io.IOException; import org.junit.Test; +import org.wildfly.clustering.infinispan.spi.persistence.KeyFormatTester; import org.wildfly.clustering.marshalling.ExternalizerTester; +import org.wildfly.clustering.server.group.LocalNodeResolver.LocalNodeExternalizer; +import org.wildfly.clustering.server.group.LocalNodeResolver.LocalNodeKeyFormat; /** - * Unit test for {@link LocalNodeExternalizer}. + * Unit test for {@link LocalNodeResolver}. * @author Paul Ferraro */ -public class LocalNodeExternalizerTestCase { +public class LocalNodeResolverTestCase { @Test public void test() throws ClassNotFoundException, IOException { - new ExternalizerTester<>(new LocalNodeExternalizer()).test(new LocalNode("name")); + LocalNode node = new LocalNode("name"); + + new ExternalizerTester<>(new LocalNodeExternalizer()).test(node); + new KeyFormatTester<>(new LocalNodeKeyFormat()).test(node); } } diff --git a/clustering/server/src/test/java/org/wildfly/clustering/server/singleton/ServiceNameExternalizerTestCase.java b/clustering/server/src/test/java/org/wildfly/clustering/server/singleton/ServiceNameResolverTestCase.java similarity index 74% rename from clustering/server/src/test/java/org/wildfly/clustering/server/singleton/ServiceNameExternalizerTestCase.java rename to clustering/server/src/test/java/org/wildfly/clustering/server/singleton/ServiceNameResolverTestCase.java index 82a84cef0e23..27a9c5597a03 100644 --- a/clustering/server/src/test/java/org/wildfly/clustering/server/singleton/ServiceNameExternalizerTestCase.java +++ b/clustering/server/src/test/java/org/wildfly/clustering/server/singleton/ServiceNameResolverTestCase.java @@ -26,16 +26,22 @@ import org.jboss.msc.service.ServiceName; import org.junit.Test; +import org.wildfly.clustering.infinispan.spi.persistence.KeyFormatTester; import org.wildfly.clustering.marshalling.ExternalizerTester; +import org.wildfly.clustering.server.singleton.ServiceNameResolver.ServiceNameExternalizer; +import org.wildfly.clustering.server.singleton.ServiceNameResolver.ServiceNameKeyFormat; /** - * Unit test for {@link ServiceNameExternalizer}. + * Unit test for {@link ServiceNameResolver}. * @author Paul Ferraro */ -public class ServiceNameExternalizerTestCase { +public class ServiceNameResolverTestCase { @Test public void test() throws ClassNotFoundException, IOException { - new ExternalizerTester<>(new ServiceNameExternalizer()).test(ServiceName.JBOSS.append("service")); + ServiceName name = ServiceName.JBOSS.append("service"); + + new ExternalizerTester<>(new ServiceNameExternalizer()).test(name); + new KeyFormatTester<>(new ServiceNameKeyFormat()).test(name); } }