]> git.aero2k.de Git - tmp/jakarta-migration.git/blob
3bd6d758415ba403324ec0bb9b491d8616baea4e
[tmp/jakarta-migration.git] /
1 /**
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:
5
6  *  http://www.collectionspace.org
7  *  http://wiki.collectionspace.org
8
9  *  Copyright 2009 University of California at Berkeley
10
11  *  Licensed under the Educational Community License (ECL), Version 2.0.
12  *  You may not use this file except in compliance with this License.
13
14  *  You may obtain a copy of the ECL 2.0 License at
15
16  *  https://source.collectionspace.org/collection-space/LICENSE.txt
17
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.
23  */
24 package org.collectionspace.services.common.document;
25
26 /**
27  *
28  * DocumentHandlerFactory creates document handler
29  *
30  */
31 public class DocumentHandlerFactory {
32
33     private static final DocumentHandlerFactory self = new DocumentHandlerFactory();
34
35     private DocumentHandlerFactory() {
36     }
37
38     public static DocumentHandlerFactory getInstance() {
39         return self;
40     }
41
42     /**
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
46      * DocumentHandler
47      */
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();
54         } else {
55             throw new IllegalArgumentException("Not of type " + DocumentHandler.class.getCanonicalName());
56         }
57     }
58 }