diff --git a/clustering/web/infinispan/src/main/java/org/wildfly/clustering/web/infinispan/SessionIdentifierSerializer.java b/clustering/web/infinispan/src/main/java/org/wildfly/clustering/web/infinispan/SessionIdentifierSerializer.java new file mode 100644 index 000000000000..662b66e5fefa --- /dev/null +++ b/clustering/web/infinispan/src/main/java/org/wildfly/clustering/web/infinispan/SessionIdentifierSerializer.java @@ -0,0 +1,57 @@ +/* + * JBoss, Home of Professional Open Source. + * Copyright 2018, Red Hat, Inc., and individual contributors + * as indicated by the @author tags. See the copyright.txt file in the + * distribution for a full listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ + +package org.wildfly.clustering.web.infinispan; + +import java.io.DataInput; +import java.io.DataOutput; +import java.io.IOException; +import java.util.ServiceLoader; + +import org.wildfly.clustering.marshalling.spi.Serializer; +import org.wildfly.clustering.web.IdentifierSerializerProvider; + +/** + * @author Paul Ferraro + */ +public enum SessionIdentifierSerializer implements Serializer { + INSTANCE; + + private final Serializer serializer = load(IdentifierSerializerProvider.class.getClassLoader()); + + private static final Serializer load(ClassLoader loader) { + for (IdentifierSerializerProvider provider : ServiceLoader.load(IdentifierSerializerProvider.class, loader)) { + return provider.getSerializer(); + } + throw new IllegalStateException(); + } + + @Override + public void write(DataOutput output, String value) throws IOException { + this.serializer.write(output, value); + } + + @Override + public String read(DataInput input) throws IOException { + return this.serializer.read(input); + } +} diff --git a/clustering/web/infinispan/src/main/java/org/wildfly/clustering/web/infinispan/SessionKeyExternalizer.java b/clustering/web/infinispan/src/main/java/org/wildfly/clustering/web/infinispan/SessionKeyExternalizer.java index 572d1c6c9c58..d6d42e22e2a8 100644 --- a/clustering/web/infinispan/src/main/java/org/wildfly/clustering/web/infinispan/SessionKeyExternalizer.java +++ b/clustering/web/infinispan/src/main/java/org/wildfly/clustering/web/infinispan/SessionKeyExternalizer.java @@ -25,13 +25,10 @@ import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectOutput; -import java.util.ServiceLoader; import java.util.function.Function; import org.wildfly.clustering.infinispan.spi.distribution.Key; import org.wildfly.clustering.marshalling.Externalizer; -import org.wildfly.clustering.marshalling.spi.Serializer; -import org.wildfly.clustering.web.IdentifierSerializerProvider; /** * Base externalizer for cache keys containing session identifiers. @@ -39,15 +36,6 @@ */ public class SessionKeyExternalizer> implements Externalizer { - static final Serializer SESSION_ID_SERIALIZER = loadIdentifierSerializer(IdentifierSerializerProvider.class.getClassLoader()); - - private static Serializer loadIdentifierSerializer(ClassLoader loader) { - for (IdentifierSerializerProvider provider : ServiceLoader.load(IdentifierSerializerProvider.class, loader)) { - return provider.getSerializer(); - } - throw new IllegalStateException(); - } - private final Class targetClass; private final Function resolver; @@ -58,12 +46,12 @@ protected SessionKeyExternalizer(Class targetClass, Function resol @Override public void writeObject(ObjectOutput output, K key) throws IOException { - SESSION_ID_SERIALIZER.write(output, key.getValue()); + SessionIdentifierSerializer.INSTANCE.write(output, key.getValue()); } @Override public K readObject(ObjectInput input) throws IOException { - return this.resolver.apply(SESSION_ID_SERIALIZER.read(input)); + return this.resolver.apply(SessionIdentifierSerializer.INSTANCE.read(input)); } @Override