Skip to content

Commit

Permalink
WFLY-5091 User supplied externalizers are ignored by web/ejb clusteri…
Browse files Browse the repository at this point in the history
…ng code
  • Loading branch information
pferraro committed Aug 25, 2015
1 parent a2147d2 commit 15cf00f
Show file tree
Hide file tree
Showing 115 changed files with 1,926 additions and 726 deletions.
6 changes: 5 additions & 1 deletion clustering/ejb/infinispan/pom.xml
Expand Up @@ -48,7 +48,7 @@
</dependency>
<dependency>
<groupId>org.wildfly</groupId>
<artifactId>wildfly-clustering-spi</artifactId>
<artifactId>wildfly-clustering-marshalling-jboss</artifactId>
</dependency>
<dependency>
<groupId>org.wildfly</groupId>
Expand All @@ -58,6 +58,10 @@
<groupId>org.wildfly</groupId>
<artifactId>wildfly-clustering-infinispan-spi</artifactId>
</dependency>
<dependency>
<groupId>org.wildfly</groupId>
<artifactId>wildfly-clustering-spi</artifactId>
</dependency>
<dependency>
<groupId>org.wildfly.core</groupId>
<artifactId>wildfly-server</artifactId>
Expand Down
@@ -1,6 +1,6 @@
/*
* JBoss, Home of Professional Open Source.
* Copyright 2012, Red Hat, Inc., and individual contributors
* Copyright 2015, 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.
*
Expand All @@ -19,14 +19,17 @@
* 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.infinispan.spi.io;

import org.infinispan.commons.marshall.AdvancedExternalizer;
package org.wildfly.clustering.ejb.infinispan;

import org.jboss.ejb.client.BasicSessionID;

/**
* This is mostly a marker interface for dynamic loading of externalizers via ServiceLoader.
* @author Paul Ferraro
*/
public interface SimpleExternalizer<T> extends AdvancedExternalizer<T> {
Class<T> getTargetClass();
public class BasicSessionIDExternalizer extends SessionIDExternalizer {

public BasicSessionIDExternalizer() {
super(BasicSessionID.class);
}
}
Expand Up @@ -23,8 +23,8 @@

import java.util.Map;

import org.wildfly.clustering.marshalling.MarshalledValue;
import org.wildfly.clustering.marshalling.MarshallingContext;
import org.wildfly.clustering.marshalling.jboss.MarshalledValue;
import org.wildfly.clustering.marshalling.jboss.MarshallingContext;

/**
* The cache entry for a bean group
Expand Down
Expand Up @@ -27,17 +27,12 @@
import java.net.InetAddress;

import org.jboss.as.network.ClientMapping;
import org.wildfly.clustering.infinispan.spi.io.AbstractSimpleExternalizer;
import org.wildfly.clustering.marshalling.Externalizer;

/**
* @author Paul Ferraro
*/
public class ClientMappingExternalizer extends AbstractSimpleExternalizer<ClientMapping> {
private static final long serialVersionUID = -826335918075494339L;

public ClientMappingExternalizer() {
super(ClientMapping.class);
}
public class ClientMappingExternalizer implements Externalizer<ClientMapping> {

@Override
public void writeObject(ObjectOutput output, ClientMapping mapping) throws IOException {
Expand All @@ -58,4 +53,9 @@ public ClientMapping readObject(ObjectInput input) throws IOException {
int destPort = input.readInt();
return new ClientMapping(InetAddress.getByAddress(sourceAddress), sourcePort, destAddress, destPort);
}

@Override
public Class<ClientMapping> getTargetClass() {
return ClientMapping.class;
}
}
Expand Up @@ -42,10 +42,10 @@
import org.wildfly.clustering.ejb.infinispan.group.InfinispanBeanGroupFactory;
import org.wildfly.clustering.group.NodeFactory;
import org.wildfly.clustering.infinispan.spi.affinity.KeyAffinityServiceFactory;
import org.wildfly.clustering.marshalling.MarshalledValueFactory;
import org.wildfly.clustering.marshalling.MarshallingContext;
import org.wildfly.clustering.marshalling.SimpleMarshalledValueFactory;
import org.wildfly.clustering.marshalling.SimpleMarshallingContextFactory;
import org.wildfly.clustering.marshalling.jboss.MarshalledValueFactory;
import org.wildfly.clustering.marshalling.jboss.MarshallingContext;
import org.wildfly.clustering.marshalling.jboss.SimpleMarshalledValueFactory;
import org.wildfly.clustering.marshalling.jboss.SimpleMarshallingContextFactory;
import org.wildfly.clustering.registry.Registry;

/**
Expand All @@ -67,7 +67,7 @@ public InfinispanBeanManagerFactory(InfinispanBeanManagerFactoryConfiguration co

@Override
public BeanManager<G, I, T, TransactionBatch> createBeanManager(final IdentifierFactory<G> groupIdentifierFactory, final IdentifierFactory<I> beanIdentifierFactory, final PassivationListener<T> passivationListener, final RemoveListener<T> removeListener) {
MarshallingContext context = new SimpleMarshallingContextFactory().createMarshallingContext(this.configuration.getMarshallingConfiguration(), this.configuration.getBeanContext().getClassLoader());
MarshallingContext context = new SimpleMarshallingContextFactory().createMarshallingContext(this.configuration.getMarshallingConfigurationRepository(), this.configuration.getBeanContext().getClassLoader());
MarshalledValueFactory<MarshallingContext> factory = new SimpleMarshalledValueFactory(context);
Cache<G, BeanGroupEntry<I, T>> groupCache = this.configuration.getCache();
org.infinispan.configuration.cache.Configuration config = groupCache.getCacheConfiguration();
Expand Down
Expand Up @@ -44,7 +44,7 @@
import org.wildfly.clustering.infinispan.spi.affinity.KeyAffinityServiceFactory;
import org.wildfly.clustering.infinispan.spi.service.CacheContainerServiceName;
import org.wildfly.clustering.infinispan.spi.service.CacheServiceName;
import org.wildfly.clustering.marshalling.VersionedMarshallingConfiguration;
import org.wildfly.clustering.marshalling.jboss.MarshallingConfigurationRepository;
import org.wildfly.clustering.registry.Registry;
import org.wildfly.clustering.service.Builder;
import org.wildfly.clustering.spi.CacheGroupServiceName;
Expand All @@ -62,7 +62,7 @@ public class InfinispanBeanManagerFactoryBuilder<G, I, T> implements Builder<Bea
@SuppressWarnings("rawtypes")
private final InjectedValue<Cache> cache = new InjectedValue<>();
private final InjectedValue<KeyAffinityServiceFactory> affinityFactory = new InjectedValue<>();
private final InjectedValue<VersionedMarshallingConfiguration> marshallingConfiguration = new InjectedValue<>();
private final InjectedValue<MarshallingConfigurationRepository> repository = new InjectedValue<>();
private final InjectedValue<ScheduledExecutorService> scheduler = new InjectedValue<>();
private final InjectedValue<Executor> executor = new InjectedValue<>();
@SuppressWarnings("rawtypes")
Expand All @@ -89,7 +89,7 @@ public ServiceBuilder<BeanManagerFactory<G, I, T, TransactionBatch>> build(Servi
return target.addService(this.getServiceName(), new ValueService<>(this))
.addDependency(CacheServiceName.CACHE.getServiceName(containerName, InfinispanBeanManagerFactoryBuilderFactory.getCacheName(deploymentUnitServiceName)), Cache.class, this.cache)
.addDependency(CacheContainerServiceName.AFFINITY.getServiceName(containerName), KeyAffinityServiceFactory.class, this.affinityFactory)
.addDependency(deploymentUnitServiceName.append("marshalling"), VersionedMarshallingConfiguration.class, this.marshallingConfiguration)
.addDependency(deploymentUnitServiceName.append("marshalling"), MarshallingConfigurationRepository.class, this.repository)
.addDependency(deploymentUnitServiceName.append(this.name, "expiration"), ScheduledExecutorService.class, this.scheduler)
.addDependency(deploymentUnitServiceName.append(this.name, "eviction"), Executor.class, this.executor)
.addDependency(GroupServiceName.COMMAND_DISPATCHER.getServiceName(containerName), CommandDispatcherFactory.class, this.dispatcherFactory)
Expand Down Expand Up @@ -120,8 +120,8 @@ public KeyAffinityServiceFactory getKeyAffinityServiceFactory() {
}

@Override
public VersionedMarshallingConfiguration getMarshallingConfiguration() {
return this.marshallingConfiguration.getValue();
public MarshallingConfigurationRepository getMarshallingConfigurationRepository() {
return this.repository.getValue();
}

@Override
Expand Down
Expand Up @@ -32,7 +32,7 @@
import org.wildfly.clustering.ejb.BeanPassivationConfiguration;
import org.wildfly.clustering.group.NodeFactory;
import org.wildfly.clustering.infinispan.spi.affinity.KeyAffinityServiceFactory;
import org.wildfly.clustering.marshalling.VersionedMarshallingConfiguration;
import org.wildfly.clustering.marshalling.jboss.MarshallingConfigurationRepository;
import org.wildfly.clustering.registry.Registry;

/**
Expand All @@ -42,7 +42,7 @@ public interface InfinispanBeanManagerFactoryConfiguration {
BeanContext getBeanContext();
<K, V> Cache<K, V> getCache();
KeyAffinityServiceFactory getKeyAffinityServiceFactory();
VersionedMarshallingConfiguration getMarshallingConfiguration();
MarshallingConfigurationRepository getMarshallingConfigurationRepository();
ScheduledExecutorService getScheduler();
Executor getExecutor();
BeanPassivationConfiguration getPassivationConfiguration();
Expand Down
Expand Up @@ -24,28 +24,19 @@
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

import org.jboss.ejb.client.BasicSessionID;
import org.jboss.ejb.client.SessionID;
import org.jboss.ejb.client.UnknownSessionID;
import org.wildfly.clustering.infinispan.spi.io.AbstractSimpleExternalizer;
import org.wildfly.clustering.marshalling.Externalizer;

/**
* @author Paul Ferraro
*/
public class SessionIDExternalizer extends AbstractSimpleExternalizer<SessionID> {
private static final long serialVersionUID = -760242454303210714L;
public class SessionIDExternalizer implements Externalizer<SessionID> {

public SessionIDExternalizer() {
super(SessionID.class);
}
private final Class<? extends SessionID> targetClass;

@Override
public Set<Class<? extends SessionID>> getTypeClasses() {
return new HashSet<>(Arrays.asList(BasicSessionID.class, UnknownSessionID.class));
SessionIDExternalizer(Class<? extends SessionID> targetClass) {
this.targetClass = targetClass;
}

@Override
Expand All @@ -61,4 +52,9 @@ public SessionID readObject(ObjectInput input) throws IOException {
input.readFully(encoded);
return SessionID.createSessionID(encoded);
}

@Override
public Class<? extends SessionID> getTargetClass() {
return this.targetClass;
}
}
@@ -1,6 +1,6 @@
/*
* JBoss, Home of Professional Open Source.
* Copyright 2012, Red Hat, Inc., and individual contributors
* Copyright 2015, 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.
*
Expand All @@ -19,18 +19,17 @@
* 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.infinispan.spi.io;

import org.wildfly.clustering.marshalling.SimpleMarshalledValue;
package org.wildfly.clustering.ejb.infinispan;

import org.jboss.ejb.client.UnknownSessionID;

/**
* @author Paul Ferraro
*/
@SuppressWarnings({ "rawtypes" })
public class SimpleMarshalledValueExternalizer extends ExternalizableExternalizer<SimpleMarshalledValue> {
private static final long serialVersionUID = -6027536540791428501L;
public class UnknownSessionIDExternalizer extends SessionIDExternalizer {

public SimpleMarshalledValueExternalizer() {
super(SimpleMarshalledValue.class);
public UnknownSessionIDExternalizer() {
super(UnknownSessionID.class);
}
}
Expand Up @@ -26,39 +26,34 @@
import java.io.ObjectOutput;
import java.util.Date;

import org.wildfly.clustering.infinispan.spi.io.AbstractSimpleExternalizer;
import org.wildfly.clustering.marshalling.Externalizer;

/**
* @author Paul Ferraro
*/
public class InfinispanBeanEntryExternalizer<G> extends AbstractSimpleExternalizer<InfinispanBeanEntry<G>> {
private static final long serialVersionUID = -3454159495935772508L;

public InfinispanBeanEntryExternalizer() {
this(InfinispanBeanEntry.class);
}

@SuppressWarnings({ "rawtypes", "unchecked" })
private InfinispanBeanEntryExternalizer(Class targetClass) {
super(targetClass);
}
public class InfinispanBeanEntryExternalizer implements Externalizer<InfinispanBeanEntry<Object>> {

@Override
public void writeObject(ObjectOutput output, InfinispanBeanEntry<G> entry) throws IOException {
public void writeObject(ObjectOutput output, InfinispanBeanEntry<Object> entry) throws IOException {
output.writeObject(entry.getGroupId());
Date lastAccessedTime = entry.getLastAccessedTime();
output.writeLong((lastAccessedTime != null) ? lastAccessedTime.getTime() : 0);
}

@Override
public InfinispanBeanEntry<G> readObject(ObjectInput input) throws IOException, ClassNotFoundException {
@SuppressWarnings("unchecked")
G groupId = (G) input.readObject();
InfinispanBeanEntry<G> entry = new InfinispanBeanEntry<>(groupId);
public InfinispanBeanEntry<Object> readObject(ObjectInput input) throws IOException, ClassNotFoundException {
InfinispanBeanEntry<Object> entry = new InfinispanBeanEntry<>(input.readObject());
long time = input.readLong();
if (time > 0) {
entry.setLastAccessedTime(new Date(time));
}
return entry;
}

@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
public Class<InfinispanBeanEntry<Object>> getTargetClass() {
Class targetClass = InfinispanBeanEntry.class;
return targetClass;
}
}
Expand Up @@ -25,27 +25,16 @@
import java.io.ObjectInput;
import java.io.ObjectOutput;

import org.infinispan.commons.marshall.Externalizer;
import org.jboss.ejb.client.SessionID;
import org.wildfly.clustering.ejb.infinispan.SessionIDExternalizer;
import org.wildfly.clustering.infinispan.spi.io.AbstractSimpleExternalizer;
import org.wildfly.clustering.ejb.infinispan.BasicSessionIDExternalizer;
import org.wildfly.clustering.marshalling.Externalizer;

/**
* @author Paul Ferraro
*/
public class InfinispanBeanKeyExternalizer extends AbstractSimpleExternalizer<InfinispanBeanKey<SessionID>> {
private static final long serialVersionUID = -7421324153578768415L;
public class InfinispanBeanKeyExternalizer implements Externalizer<InfinispanBeanKey<SessionID>> {

private final Externalizer<SessionID> externalizer = new SessionIDExternalizer();

public InfinispanBeanKeyExternalizer() {
this(InfinispanBeanKey.class);
}

@SuppressWarnings({ "rawtypes", "unchecked" })
private InfinispanBeanKeyExternalizer(Class targetClass) {
super(targetClass);
}
private final Externalizer<SessionID> externalizer = new BasicSessionIDExternalizer();

@Override
public void writeObject(ObjectOutput output, InfinispanBeanKey<SessionID> key) throws IOException {
Expand All @@ -59,4 +48,11 @@ public InfinispanBeanKey<SessionID> readObject(ObjectInput input) throws IOExcep
SessionID id = this.externalizer.readObject(input);
return new InfinispanBeanKey<>(beanName, id);
}

@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
public Class<InfinispanBeanKey<SessionID>> getTargetClass() {
Class targetClass = InfinispanBeanKey.class;
return targetClass;
}
}
Expand Up @@ -31,7 +31,7 @@
import org.wildfly.clustering.ejb.infinispan.BeanGroup;
import org.wildfly.clustering.ejb.infinispan.BeanGroupEntry;
import org.wildfly.clustering.ejb.infinispan.logging.InfinispanEjbLogger;
import org.wildfly.clustering.marshalling.MarshallingContext;
import org.wildfly.clustering.marshalling.jboss.MarshallingContext;

/**
* A {@link org.wildfly.clustering.ejb.infinispan.BeanGroup} implementation backed by an infinispan cache.
Expand Down
Expand Up @@ -27,8 +27,8 @@
import java.util.concurrent.atomic.AtomicInteger;

import org.wildfly.clustering.ejb.infinispan.BeanGroupEntry;
import org.wildfly.clustering.marshalling.MarshalledValue;
import org.wildfly.clustering.marshalling.MarshallingContext;
import org.wildfly.clustering.marshalling.jboss.MarshalledValue;
import org.wildfly.clustering.marshalling.jboss.MarshallingContext;

/**
* The cache entry of a bean group.
Expand Down

0 comments on commit 15cf00f

Please sign in to comment.