Register non-anonymous, named Instantiators for GemFireSession and GemFireSessionAttributes (#594)

Fixes gh-594 & gh-595
This commit is contained in:
John Blum
2016-08-17 17:24:30 -07:00
parent 70fc4c1ede
commit 617bd340d0

View File

@@ -208,21 +208,11 @@ public abstract class AbstractGemFireOperationsSessionRepository extends CacheLi
Region<Object, ExpiringSession> region = ((GemfireAccessor) template).getRegion();
this.fullyQualifiedRegionName = region.getFullPath();
region.getAttributesMutator().addCacheListener(this);
Instantiator.register(new Instantiator(GemFireSession.class, 800813552) {
@Override
public DataSerializable newInstance() {
return new GemFireSession();
}
});
Instantiator.register(new Instantiator(GemFireSessionAttributes.class, 800828008) {
@Override
public DataSerializable newInstance() {
return new GemFireSessionAttributes();
}
});
Instantiator.register(GemFireSessionInstantiator.create());
Instantiator.register(GemFireSessionAttributesInstantiator.create());
}
/* (non-Javadoc) */
@@ -635,6 +625,27 @@ public abstract class AbstractGemFireOperationsSessionRepository extends CacheLi
}
}
/**
* GemFireSessionInstantiator is a GemFire {@link Instantiator} use to instantiate instances
* of the {@link GemFireSession} object used in GemFire's data serialization framework when
* persisting Session state in GemFire.
*/
public static class GemFireSessionInstantiator extends Instantiator {
public static GemFireSessionInstantiator create() {
return new GemFireSessionInstantiator(GemFireSession.class, 800813552);
}
public GemFireSessionInstantiator(Class<? extends DataSerializable> type, int id) {
super(type, id);
}
@Override
public DataSerializable newInstance() {
return new GemFireSession();
}
}
/**
* The GemFireSessionAttributes class is a container for Session attributes implementing
* both the {@link DataSerializable} and {@link Delta} GemFire interfaces for efficient
@@ -831,4 +842,25 @@ public abstract class AbstractGemFireOperationsSessionRepository extends CacheLi
return this.sessionAttributes.toString();
}
}
/**
* GemFireSessionAttributesInstantiator is a GemFire {@link Instantiator} use to instantiate instances
* of the {@link GemFireSessionAttributes} object used in GemFire's data serialization framework when
* persisting Session attributes state in GemFire.
*/
public static class GemFireSessionAttributesInstantiator extends Instantiator {
public static GemFireSessionAttributesInstantiator create() {
return new GemFireSessionAttributesInstantiator(GemFireSessionAttributes.class, 800828008);
}
public GemFireSessionAttributesInstantiator(Class<? extends DataSerializable> type, int id) {
super(type, id);
}
@Override
public DataSerializable newInstance() {
return new GemFireSessionAttributes();
}
}
}