comparison artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultServiceFactory.java @ 69:498bb84334d0

Added base class for services and service factories. artifacts/trunk@595 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Fri, 22 Jan 2010 10:19:27 +0000
parents
children 48d1a9a082c2
comparison
equal deleted inserted replaced
68:541814404822 69:498bb84334d0
1 package de.intevation.artifactdatabase;
2
3 import org.w3c.dom.Document;
4 import org.w3c.dom.Node;
5
6 import de.intevation.artifacts.ServiceFactory;
7 import de.intevation.artifacts.Service;
8
9 import org.apache.log4j.Logger;
10
11 /**
12 * @author Sascha L. Teichmann (sascha.teichmann@intevation.de)
13 */
14 public class DefaultServiceFactory
15 implements ServiceFactory
16 {
17 private static Logger logger =
18 Logger.getLogger(DefaultServiceFactory.class);
19
20 public static final String XPATH_NAME = "@name";
21 public static final String XPATH_DESCRIPTION = "@description";
22 public static final String XPATH_SERVICE = "@service";
23
24 public static final String DEFAULT_DESCRIPTION =
25 "No description available";
26
27 public static final String DEFAULT_SERVICE =
28 "de.intevation.artifactdatabase.DefaultService";
29
30 protected String name;
31
32 protected String description;
33
34 protected Class serviceClass;
35
36 public DefaultServiceFactory() {
37 }
38
39 public String getName() {
40 return name;
41 }
42
43 public String getDescription() {
44 return description;
45 }
46
47 public Service createService(Object globalContext) {
48 try {
49 Service service = (Service)serviceClass.newInstance();
50
51 service.setup(this, globalContext);
52
53 return service;
54 }
55 catch (InstantiationException ie) {
56 logger.error(ie.getLocalizedMessage(), ie);
57 }
58 catch (IllegalAccessException iae) {
59 logger.error(iae.getLocalizedMessage(), iae);
60 }
61 catch (ClassCastException cce) {
62 logger.error(cce.getLocalizedMessage(), cce);
63 }
64
65 return null;
66 }
67
68 public void setup(Document config, Node factoryNode) {
69
70 description = Config.getStringXPath(
71 factoryNode, XPATH_DESCRIPTION, DEFAULT_DESCRIPTION);
72
73 name = Config.getStringXPath(
74 factoryNode, XPATH_NAME, toString());
75
76 String service = Config.getStringXPath(
77 factoryNode, XPATH_SERVICE, DEFAULT_SERVICE);
78
79 try {
80 serviceClass = Class.forName(service);
81 }
82 catch (ClassNotFoundException cnfe) {
83 logger.error(cnfe.getLocalizedMessage(), cnfe);
84 }
85
86 if (serviceClass == null) {
87 serviceClass = DefaultService.class;
88 }
89 }
90 }
91 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org