001package com.hammurapi.common; 002 003 004/** 005 * Context which can be modified. 006 * @author Pavel Vlasov. 007 * 008 */ 009public interface MutableContext extends Context { 010 011 /** 012 * Binds named object. 013 * @param name Object name. 014 * @param obj Object reference. Cannot be null. 015 */ 016 void bind(String name, Object obj); 017 018 /** 019 * Unbinds named object. 020 * @param name 021 * @return Object previously bound to given name. 022 */ 023 Object unbind(String name); 024 025 /** 026 * Registers service. 027 * @param <T> Service implementation type. 028 * @param type Service type. 029 * @param service Service instance. 030 */ 031 <T> void register(Class<? super T> type, T service); 032 033 /** 034 * Removes service registration. 035 * @param <T> 036 * @param type 037 * @param service 038 */ 039 <T> void unregister(Class<? super T> type, T service); 040}