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: }