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