All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.wildfly.clustering.session.cache.CompositeSessionFactory Maven / Gradle / Ivy

There is a newer version: 5.0.7.Final
Show newest version
/*
 * 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.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 deployment 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, Supplier localContextFactory) {
		super(metaDataFactory, attributesFactory);
		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 Session createSession(String id, Map.Entry entry, DC 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