/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.apache.cxf.configuration; import java.util.Collection; import java.util.List; /** * */ public interface ConfiguredBeanLocator { /** * Gets the names of all the configured beans of the specific type. Does * not cause them to be loaded. * @param type * @return List of all the bean names for the given type */ List<String> getBeanNamesOfType(Class<?> type); /** * Gets the bean of the given name and type * @param name * @param type * @return the bean */ <T> T getBeanOfType(String name, Class<T> type); /** * Gets all the configured beans of the specific types. Causes them * all to be loaded. * @param type * @return The collection of all the configured beans of the given type */ <T> Collection<? extends T> getBeansOfType(Class<T> type); /** * Iterates through the beans of the given type, calling the listener * to determine if it should be loaded or not. * @param type * @param listener * @return true if beans of the type were loaded */ <T> boolean loadBeansOfType(Class<T> type, BeanLoaderListener<T> listener); /** * For supporting "legacy" config, checks the configured bean to see if * it has a property configured with the given name/value. Mostly used * for supporting things configured with "activationNamespaces" set. * @param beanName * @param propertyName * @param value * @return true if the bean has the given property/value */ boolean hasConfiguredPropertyValue(String beanName, String propertyName, String value); interface BeanLoaderListener<T> { /** * Return true to have the loader go ahead and load the bean. If false, * the loader will just skip to the next bean * @param name * @param type * @return true if the bean should be loaded */ boolean loadBean(String name, Class<? extends T> type); /** * Return true if the bean that was loaded meets the requirements at * which point, the loader will stop loading additional beans of the * given type * @param name * @param bean * @return true if the bean meets the requirements of the listener */ boolean beanLoaded(String name, T bean); } boolean hasBeanOfName(String name); }