Skip to content

Commit

Permalink
Use LocalModeAddress to represent address for a non-clustered cache m…
Browse files Browse the repository at this point in the history
…anager.
  • Loading branch information
pferraro committed Apr 9, 2018
1 parent 410e100 commit 0c17a7d
Show file tree
Hide file tree
Showing 3 changed files with 135 additions and 0 deletions.
Expand Up @@ -22,13 +22,17 @@

package org.jboss.as.clustering.infinispan;

import java.util.Collections;
import java.util.EnumSet;
import java.util.List;

import org.infinispan.Cache;
import org.infinispan.configuration.cache.Configuration;
import org.infinispan.manager.EmbeddedCacheManager;
import org.infinispan.manager.EmbeddedCacheManagerAdmin;
import org.infinispan.manager.impl.AbstractDelegatingEmbeddedCacheManager;
import org.infinispan.remoting.transport.Address;
import org.infinispan.remoting.transport.LocalModeAddress;
import org.wildfly.clustering.infinispan.spi.CacheContainer;

/**
Expand All @@ -44,6 +48,24 @@ public DefaultCacheContainer(EmbeddedCacheManager container, BatcherFactory batc
this.batcherFactory = batcherFactory;
}

@Override
public Address getAddress() {
Address address = super.getAddress();
return (address != null) ? address : LocalModeAddress.INSTANCE;
}

@Override
public Address getCoordinator() {
Address coordinator = super.getCoordinator();
return (coordinator != null) ? coordinator : LocalModeAddress.INSTANCE;
}

@Override
public List<Address> getMembers() {
List<Address> members = super.getMembers();
return (members != null) ? members : Collections.singletonList(LocalModeAddress.INSTANCE);
}

@Override
public void start() {
// No-op. Lifecycle is managed by container
Expand Down
@@ -0,0 +1,69 @@
/*
* 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.server.group;

import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;

import org.infinispan.remoting.transport.Address;
import org.infinispan.remoting.transport.LocalModeAddress;
import org.kohsuke.MetaInfServices;
import org.wildfly.clustering.infinispan.spi.persistence.BinaryKeyFormat;
import org.wildfly.clustering.infinispan.spi.persistence.KeyFormat;
import org.wildfly.clustering.marshalling.Externalizer;
import org.wildfly.clustering.marshalling.spi.Serializer;
import org.wildfly.clustering.marshalling.spi.SerializerExternalizer;

/**
* Serializer for a local {@link Address}.
* @author Paul Ferraro
*/
public enum LocalAddressSerializer implements Serializer<Address> {
INSTANCE;

@Override
public void write(DataOutput output, Address value) throws IOException {
}

@Override
public Address read(DataInput input) throws IOException {
return LocalModeAddress.INSTANCE;
}

@MetaInfServices(Externalizer.class)
public static class LocalAddressExternalizer extends SerializerExternalizer<Address> {
@SuppressWarnings("unchecked")
public LocalAddressExternalizer() {
super((Class<Address>) (Class<?>) LocalModeAddress.class, INSTANCE);
}
}

@MetaInfServices(KeyFormat.class)
public static class LocalAddressKeyFormat extends BinaryKeyFormat<Address> {
@SuppressWarnings("unchecked")
public LocalAddressKeyFormat() {
super((Class<Address>) (Class<?>) LocalModeAddress.class, INSTANCE);
}
}
}
@@ -0,0 +1,44 @@
/*
* 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.server.group;

import java.io.IOException;

import org.infinispan.remoting.transport.LocalModeAddress;
import org.junit.Test;
import org.wildfly.clustering.infinispan.spi.persistence.KeyFormatTester;
import org.wildfly.clustering.marshalling.ExternalizerTester;
import org.wildfly.clustering.server.group.LocalAddressSerializer.LocalAddressExternalizer;
import org.wildfly.clustering.server.group.LocalAddressSerializer.LocalAddressKeyFormat;

/**
* @author Paul Ferraro
*/
public class LocalAddressSerializerTestCase {

@Test
public void test() throws ClassNotFoundException, IOException {
new ExternalizerTester<>(new LocalAddressExternalizer()).test(LocalModeAddress.INSTANCE);
new KeyFormatTester<>(new LocalAddressKeyFormat()).test(LocalModeAddress.INSTANCE);
}
}

0 comments on commit 0c17a7d

Please sign in to comment.