
org.wildfly.clustering.session.cache.CompositeSessionFactory Maven / Gradle / Ivy
/*
* Copyright The WildFly Authors
* SPDX-License-Identifier: Apache-2.0
*/
package org.wildfly.clustering.session.cache;
import java.util.Map;
import java.util.function.Supplier;
import org.wildfly.clustering.cache.CacheProperties;
import org.wildfly.clustering.session.Session;
import org.wildfly.clustering.session.cache.attributes.SessionAttributes;
import org.wildfly.clustering.session.cache.attributes.SessionAttributesFactory;
import org.wildfly.clustering.session.cache.metadata.InvalidatableSessionMetaData;
import org.wildfly.clustering.session.cache.metadata.SessionMetaDataFactory;
/**
* @param the session manager context type
* @param the session metadata type
* @param the session attributes type
* @param the session context type
* @author Paul Ferraro
*/
public class CompositeSessionFactory, AV, SC> extends CompositeImmutableSessionFactory implements SessionFactory {
private final SessionMetaDataFactory metaDataFactory;
private final SessionAttributesFactory attributesFactory;
private final Supplier contextFactory;
public CompositeSessionFactory(SessionMetaDataFactory metaDataFactory, SessionAttributesFactory attributesFactory, CacheProperties properties, Supplier localContextFactory) {
super(metaDataFactory, attributesFactory, properties);
this.metaDataFactory = metaDataFactory;
this.attributesFactory = attributesFactory;
this.contextFactory = localContextFactory;
}
@Override
public SessionMetaDataFactory getMetaDataFactory() {
return this.metaDataFactory;
}
@Override
public SessionAttributesFactory getAttributesFactory() {
return this.attributesFactory;
}
@Override
public Supplier getContextFactory() {
return this.contextFactory;
}
@Override
public Session createSession(String id, Map.Entry entry, C context) {
MV metaDataValue = entry.getKey();
AV attributesValue = entry.getValue();
if ((metaDataValue == null) || (attributesValue == null)) return null;
InvalidatableSessionMetaData metaData = this.metaDataFactory.createSessionMetaData(id, metaDataValue);
SessionAttributes attributes = this.attributesFactory.createSessionAttributes(id, attributesValue, metaData, context);
return new CompositeSession<>(id, metaData, attributes, metaDataValue.getContext(), this.contextFactory, this);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy