donaldp 2002/11/10 01:29:57 Added: fortress/src/java/org/apache/excalibur/fortress/util OverridableServiceManager.java Log: Add an OveridableServiceManager compliment to OveridableContext Revision Changes Path 1.1 jakarta-avalon-excalibur/fortress/src/java/org/apache/excalibur/fortress/util/OverridableServiceManager.java Index: OverridableServiceManager.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE.txt file. */ package org.apache.excalibur.fortress.util; import org.apache.avalon.framework.service.DefaultServiceManager; import org.apache.avalon.framework.service.ServiceManager; import org.apache.avalon.framework.service.ServiceException; /** * The OverridableServiceManager allows you to "null" out entries, even if they are * in a parent {@link org.apache.avalon.framework.service.ServiceManager}. * * @author <a href="mailto:peter at apache.org">Peter Donald</a> * @version $Revision: 1.1 $ $Date: 2002/11/10 09:29:57 $ */ public class OverridableServiceManager extends DefaultServiceManager { /** * Marker object that indicates something has bene deliberately nulled out. */ private static final Object MARKER = new Object(); /** * Create a OverridableServiceManager with specified parent. * * @param parent the parent ServiceManager */ public OverridableServiceManager( final ServiceManager parent ) { super( parent ); } /** * Lookup service and if the marker is found then * assume that null has been added and thus throw a ServiceException. * * @param key the key to lookup * @return the service instance * @throws ServiceException */ public Object lookup( final String key ) throws ServiceException { final Object object = super.lookup( key ); if( MARKER == object ) { throw new ServiceException( key, "Unable to locate service" ); } return object; } /** * Put a service into ServiceManager. If null service is added * then a marker is instead placed into map (thus hiding potential * service in parent serviceManager). * * @param key the key * @param object the service */ public void put( final String key, final Object object ) { if( null == object ) { super.put( key, MARKER ); } else { super.put( key, object ); } } }
-- To unsubscribe, e-mail: <mailto:avalon-cvs-unsubscribe@;jakarta.apache.org> For additional commands, e-mail: <mailto:avalon-cvs-help@;jakarta.apache.org>