001 /*
002 * Copyright 2002-2005 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.support;
017
018 import java.util.Collections;
019 import java.util.HashMap;
020 import java.util.Map;
021
022 import org.springframework.richclient.application.ApplicationServices;
023 import org.springframework.richclient.util.Assert;
024
025 public class StaticApplicationServices implements ApplicationServices {
026
027 private final Map services = Collections.synchronizedMap(new HashMap());
028
029 public Object getService(Class serviceType) {
030 Assert.required(serviceType, "serviceType");
031 Object service = services.get(serviceType);
032 if (service == null) {
033 throw new UnsupportedOperationException("No service of type '" + serviceType + "' found.");
034 }
035 return service;
036 }
037
038 public boolean containsService(Class serviceType) {
039 Assert.required(serviceType, "serviceType");
040 return services.containsKey(serviceType);
041 }
042
043 public void registerService(Object service, Class serviceInterface) {
044 Assert.required(service, "service");
045 Assert.required(serviceInterface, "serviceInterface");
046 services.put(serviceInterface, service);
047 }
048 }