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