1 /***
2 *
3 * Copyright 2004 Protique Ltd
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 **/
18
19 package org.codehaus.activemq.jndi;
20
21 import javax.naming.NamingException;
22 import javax.naming.Reference;
23 import java.util.Properties;
24
25 /***
26 * Faciliates objects to be stored in JNDI as properties
27 */
28
29 public abstract class JNDIBaseStorable implements JNDIStorableInterface {
30 private Properties properties = null;
31
32
33 /***
34 * Set the properties that will represent the instance in JNDI
35 *
36 * @param props
37 */
38 protected abstract void buildFromProperties(Properties props);
39
40 /***
41 * Initialize the instance from properties stored in JNDI
42 *
43 * @param props
44 */
45
46 protected abstract void populateProperties(Properties props);
47
48 /***
49 * set the properties for this instance as retrieved from JNDI
50 *
51 * @param props
52 */
53
54 public synchronized void setProperties(Properties props) {
55 this.properties = props;
56 buildFromProperties(props);
57 }
58
59 /***
60 * Get the properties from this instance for storing in JNDI
61 *
62 * @return the properties
63 */
64
65 public synchronized Properties getProperties() {
66 if (this.properties == null) {
67 this.properties = new Properties();
68 }
69 populateProperties(this.properties);
70 return this.properties;
71 }
72
73
74 /***
75 * Retrive a Reference for this instance to store in JNDI
76 *
77 * @return the built Reference
78 * @throws NamingException if error on building Reference
79 */
80 public Reference getReference() throws NamingException {
81 return JNDIReferenceFactory.createReference(this.getClass().getName(), this);
82 }
83
84 }
85