Mercurial > dive4elements > framework
view artifact-database/src/main/java/de/intevation/artifactdatabase/AbstractCallContext.java @ 331:089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
artifacts/trunk@2688 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Fri, 09 Sep 2011 14:06:55 +0000 |
parents | a8a06bbe306c |
children | 33d7a6da1a05 |
line wrap: on
line source
/* * Copyright (c) 2010, 2011 by Intevation GmbH * * This program is free software under the LGPL (>=v2.1) * Read the file LGPL.txt coming with the software for details * or visit http://www.gnu.org/licenses/ if it does not exist. */ package de.intevation.artifactdatabase; import java.util.HashMap; import de.intevation.artifacts.ArtifactDatabase; import de.intevation.artifacts.CallContext; import de.intevation.artifacts.CallMeta; /** * Abstract class that implements some basic methods of a CallContext. * * @author <a href="mailto:sascha.teichmann@intevation.de">Sascha L. Teichmann</a> * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> */ public abstract class AbstractCallContext implements CallContext { /** * The ArtifactDatabase instance. */ protected ArtifactDatabaseImpl database; /** * The action to be performed after the artifacts or collections calls. */ protected int action; /** * The meta information of the concrete call (preferred languages et. al.) */ protected CallMeta callMeta; /** * Map to act like a clipboard when nesting calls like a proxy artifact. */ protected HashMap customValues; /** * The default constructor of this abstract CallContext. * * @param action The action. * @param callMeta The CallMeta object. * @param context The global context. */ public AbstractCallContext( ArtifactDatabaseImpl artifactDatabase, int action, CallMeta callMeta ) { this.database = artifactDatabase; this.action = action; this.callMeta = callMeta; database.initCallContext(this); } public void postCall() { database.closeCallContext(this); } public abstract void afterCall(int action); public abstract Long getTimeToLive(); public abstract void afterBackground(int action); public Object globalContext() { return database.context; } public ArtifactDatabase getDatabase() { return database; } public CallMeta getMeta() { return callMeta; } public Object getContextValue(Object key) { return customValues != null ? customValues.get(key) : null; } public Object putContextValue(Object key, Object value) { if (customValues == null) { customValues = new HashMap(); } return customValues.put(key, value); } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :