2 * This document is a part of the source code and related artifacts
3 * for CollectionSpace, an open source collections management system
4 * for museums and related institutions:
6 * http://www.collectionspace.org
7 * http://wiki.collectionspace.org
9 * Copyright 2009 University of California at Berkeley
11 * Licensed under the Educational Community License (ECL), Version 2.0.
12 * You may not use this file except in compliance with this License.
14 * You may obtain a copy of the ECL 2.0 License at
16 * https://source.collectionspace.org/collection-space/LICENSE.txt
18 * Unless required by applicable law or agreed to in writing, software
19 * distributed under the License is distributed on an "AS IS" BASIS,
20 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21 * See the License for the specific language governing permissions and
22 * limitations under the License.
24 package org.collectionspace.services.common.document;
28 * DocumentHandlerFactory creates document handler
31 public class DocumentHandlerFactory {
33 private static final DocumentHandlerFactory self = new DocumentHandlerFactory();
35 private DocumentHandlerFactory() {
38 public static DocumentHandlerFactory getInstance() {
43 * getHandler returns a document handler. The factory may create a new
44 * stateful handler or return an existing stateless handler.
45 * @param clazz name of the class to instantiate. The class should implement
48 public DocumentHandler getHandler(String clazz)
49 throws ClassNotFoundException, InstantiationException, IllegalAccessException {
50 ClassLoader tccl = Thread.currentThread().getContextClassLoader();
51 Class c = tccl.loadClass(clazz);
52 if (DocumentHandler.class.isAssignableFrom(c)) {
53 return (DocumentHandler) c.newInstance();
55 throw new IllegalArgumentException("Not of type " + DocumentHandler.class.getCanonicalName());