    001    // Copyright 2007, 2010, 2011 The Apache Software Foundation
    002    //
    003    // Licensed under the Apache License, Version 2.0 (the "License");
    004    // you may not use this file except in compliance with the License.
    005    // You may obtain a copy of the License at
    006    //
    007    //     http://www.apache.org/licenses/LICENSE-2.0
    008    //
    009    // Unless required by applicable law or agreed to in writing, software
    010    // distributed under the License is distributed on an "AS IS" BASIS,
    011    // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    012    // See the License for the specific language governing permissions and
    013    // limitations under the License.
    014
    015    package org.apache.tapestry5.ioc.internal;
    016
    017    import org.apache.tapestry5.ioc.AnnotationProvider;
    018    import org.apache.tapestry5.ioc.ObjectLocator;
    019    import org.apache.tapestry5.ioc.Registry;
    020
    021    import java.lang.annotation.Annotation;
    022
    023    /**
    024     * A wrapper around {@link InternalRegistry} that exists to expand symbols in a service id before
    025     * invoking {@link ObjectLocator#getService(String, Class)}.
    026     */
    027    public class RegistryWrapper implements Registry
    028    {
    029        private final InternalRegistry registry;
    030
    031        public RegistryWrapper(final InternalRegistry registry)
    032        {
    033            this.registry = registry;
    034        }
    035
    036        public void cleanupThread()
    037        {
    038            registry.cleanupThread();
    039        }
    040
    041        public void shutdown()
    042        {
    043            registry.shutdown();
    044        }
    045
    046        public <T> T getObject(Class<T> objectType, AnnotationProvider annotationProvider)
    047        {
    048            return registry.getObject(objectType, annotationProvider);
    049        }
    050
    051        public <T> T getService(String serviceId, Class<T> serviceInterface)
    052        {
    053            String expandedServiceId = registry.expandSymbols(serviceId);
    054
    055            return registry.getService(expandedServiceId, serviceInterface);
    056        }
    057
    058        public <T> T getService(Class<T> serviceInterface)
    059        {
    060            return registry.getService(serviceInterface);
    061        }
    062
    063        public <T> T getService(Class<T> serviceInterface, Class<? extends Annotation>... markerTypes)
    064        {
    065            return registry.getService(serviceInterface, markerTypes);
    066        }
    067
    068        public <T> T autobuild(Class<T> clazz)
    069        {
    070            return registry.autobuild(clazz);
    071        }
    072
    073        public <T> T autobuild(String description, Class<T> clazz)
    074        {
    075            return registry.autobuild(description, clazz);
    076        }
    077
    078        public void performRegistryStartup()
    079        {
    080            registry.performRegistryStartup();
    081        }
    082
    083        public <T> T proxy(Class<T> interfaceClass, Class<? extends T> implementationClass)
    084        {
    085            return registry.proxy(interfaceClass, implementationClass);
    086        }
    087
    088    }