001    /*
002     * Copyright 2002-2004 the original author or authors.
003     *
004     * Licensed under the Apache License, Version 2.0 (the "License"); you may not
005     * use this file except in compliance with the License. You may obtain a copy of
006     * 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, WITHOUT
012     * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
013     * License for the specific language governing permissions and limitations under
014     * the License.
015     */
016    package org.springframework.richclient.application;
017    
018    /**
019     * A service locator that can retrieve instances of a service by class type.
020     *
021     * @author Larry Streepy
022     */
023    public interface ApplicationServices {
024    
025            /**
026             * Returns the application service of the requested type (class).
027             *
028             * @param serviceType Type of service to locate
029             * @return A service implementation of the requested type. Never null.
030             * @throws IllegalArgumentException if {@code serviceType} is null.
031             * @throws ServiceNotFoundException if there is no service known for the
032             * given serviceType.
033             */
034            Object getService(Class serviceType);
035    
036            /**
037             * Determine if a service of the requested type is available.
038             *
039             * @param serviceType Type of service to locate
040             * @return true if service is available, false if not
041             * @throws IllegalArgumentException if {@code serviceType} is null.
042             */
043            boolean containsService(Class serviceType);
044    
045    }