View Javadoc

    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