001/* 002 * (C) Copyright 2006-2011 Nuxeo SA (http://nuxeo.com/) and others. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 * 016 * Contributors: 017 * bstefanescu 018 * 019 * $Id$ 020 */ 021 022package org.nuxeo.runtime.api; 023 024/** 025 * A service provider. 026 * <p> 027 * A service provider is used by the framework to be able to change the way local services are found. 028 * <p> 029 * For example you may want to use a simple service provider for testing pourpose to avoid loading the nuxeo runtime 030 * framework to register services. 031 * <p> 032 * To set a service provider use: {@link DefaultServiceProvider#setProvider(ServiceProvider)} 033 * 034 * @author <a href="mailto:[email protected]">Bogdan Stefanescu</a> 035 */ 036public interface ServiceProvider { 037 038 /** 039 * Gets the service instance given its API class. 040 */ 041 <T> T getService(Class<T> serviceClass); 042 043}