annotate WebServiceExtensionsV1.1/WebServiceToolWorkflow_REST_SOAP/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/util/ObjectRegistry.java @ 0:049760c677de default tip

Galaxy WSExtensions added successfully
author uga-galaxy-group
date Tue, 05 Jul 2011 19:34:18 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
1 /*
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
2 * (c) Copyright IBM Corp 2001, 2005
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
3 */
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
4
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
5 package edu.uga.cs.lsdis.meteors.wadls.util;
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
6
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
7 import java.util.*;
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
8
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
9 /**
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
10 * The <em>ObjectRegistry</em> is used to do name-to-object reference lookups.
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
11 * If an <em>ObjectRegistry</em> is passed as a constructor argument, then this
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
12 * <em>ObjectRegistry</em> will be a cascading registry: when a lookup is
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
13 * invoked, it will first look in its own table for a name, and if it's not
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
14 * there, it will cascade to the parent <em>ObjectRegistry</em>.
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
15 * All registration is always local. [??]
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
16 *
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
17 * @author Sanjiva Weerawarana
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
18 * @author Matthew J. Duftler
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
19 */
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
20 public class ObjectRegistry {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
21 Hashtable reg = new Hashtable ();
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
22 ObjectRegistry parent = null;
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
23
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
24 public ObjectRegistry () {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
25 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
26
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
27 public ObjectRegistry (ObjectRegistry parent) {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
28 this.parent = parent;
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
29 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
30
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
31 // register an object
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
32 public void register (String name, Object obj) {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
33 reg.put (name, obj);
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
34 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
35
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
36 // unregister an object (silent if unknown name)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
37 public void unregister (String name) {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
38 reg.remove (name);
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
39 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
40
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
41 // lookup an object: cascade up if needed
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
42 public Object lookup (String name) throws IllegalArgumentException {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
43 Object obj = reg.get (name);
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
44
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
45 if (obj == null && parent != null) {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
46 obj = parent.lookup (name);
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
47 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
48
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
49 if (obj == null) {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
50 throw new IllegalArgumentException ("object '" + name + "' not in registry");
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
51 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
52
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
53 return obj;
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
54 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
55 }