tikhomirov@295: /* tikhomirov@456: * Copyright (c) 2011-2012 TMate Software Ltd tikhomirov@295: * tikhomirov@295: * This program is free software; you can redistribute it and/or modify tikhomirov@295: * it under the terms of the GNU General Public License as published by tikhomirov@295: * the Free Software Foundation; version 2 of the License. tikhomirov@295: * tikhomirov@295: * This program is distributed in the hope that it will be useful, tikhomirov@295: * but WITHOUT ANY WARRANTY; without even the implied warranty of tikhomirov@295: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the tikhomirov@295: * GNU General Public License for more details. tikhomirov@295: * tikhomirov@295: * For information on how to redistribute this software under tikhomirov@295: * the terms of a license other than GNU General Public License tikhomirov@295: * contact TMate Software at support@hg4j.com tikhomirov@295: */ tikhomirov@295: package org.tmatesoft.hg.core; tikhomirov@295: tikhomirov@295: import org.tmatesoft.hg.util.LogFacility; tikhomirov@295: tikhomirov@295: /** tikhomirov@456: * Access to objects that might need to be shared between various distinct operations ran during the same working session tikhomirov@456: * (i.e. caches, log, etc.). It's unspecified whether session context is per repository or can span multiple repositories tikhomirov@295: * tikhomirov@456: *
Note, API is likely to be extended in future versions, adding more object to share.
tikhomirov@295: *
tikhomirov@295: * @author Artem Tikhomirov
tikhomirov@295: * @author TMate Software Ltd.
tikhomirov@295: */
tikhomirov@456: public abstract class SessionContext {
tikhomirov@456: // abstract class to facilitate adding more functionality without API break
tikhomirov@338:
tikhomirov@338: /**
tikhomirov@456: * Access wrapper for a system log facility.
tikhomirov@456: * @return facility to direct dumps to, never null
tikhomirov@338: */
tikhomirov@456: public abstract LogFacility getLog();
tikhomirov@456:
tikhomirov@456: /**
tikhomirov@456: * Access configuration parameters of the session.
tikhomirov@456: * @param name name of the session configuration parameter
tikhomirov@456: * @param defaultValue value to return if parameter is not configured
tikhomirov@456: * @return value of the session parameter, defaultValue if none found
tikhomirov@456: */
tikhomirov@456: public abstract Object getConfigurationProperty(String name, Object defaultValue);
tikhomirov@456: // perhaps, later may add Configuration object, with PropertyMarshal's helpers
tikhomirov@456: // e.g. when there's standalone Caches and WritableSessionProperties objects
tikhomirov@490:
tikhomirov@490: /**
tikhomirov@490: * Providers of the context may implement
tikhomirov@490: */
tikhomirov@490: public interface Source {
tikhomirov@490: SessionContext getSessionContext();
tikhomirov@490: }
tikhomirov@295: }