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

org.carrot2.util.simplexml.SessionInitStrategy Maven / Gradle / Ivy

Go to download

Carrot2 search results clustering framework. Minimal functional subset (core algorithms and infrastructure, no document sources).

There is a newer version: 3.16.3
Show newest version

/*
 * Carrot2 project.
 *
 * Copyright (C) 2002-2019, Dawid Weiss, Stanisław Osiński.
 * All rights reserved.
 *
 * Refer to the full license file "carrot2.LICENSE"
 * in the root folder of the repository checkout or at:
 * http://www.carrot2.org/carrot2.LICENSE
 */

package org.carrot2.util.simplexml;

import java.util.HashMap;
import java.util.Map;

import org.simpleframework.xml.strategy.Strategy;
import org.simpleframework.xml.strategy.Type;
import org.simpleframework.xml.strategy.Value;
import org.simpleframework.xml.stream.NodeMap;
import org.simpleframework.xml.stream.OutputNode;

import org.carrot2.shaded.guava.common.collect.Maps;

/**
 * Proxy for initializing session values.
 */
final class SessionInitStrategy implements Strategy
{
    private final Strategy delegate;
    private final HashMap sessionValues;

    private boolean sessionInitialized;

    public SessionInitStrategy(Strategy delegate, Map sessionValues)
    {
        this.delegate = delegate;
        this.sessionValues = Maps.newHashMap(sessionValues);
    }
    
    @SuppressWarnings({"rawtypes", "unchecked"})
    @Override
    public Value read(Type type, NodeMap node, Map session) throws Exception
    {
        if (!sessionInitialized)
        {
            sessionInitialized = true;
            session.putAll(sessionValues);
        }

        return delegate.read(type, node, session);
    }

    @SuppressWarnings("rawtypes")
    @Override
    public boolean write(Type type, Object target, NodeMap nodeMap, Map session)
        throws Exception
    {
        return delegate.write(type, target, nodeMap, session);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy