View Javadoc

    1   /*
    2    * Licensed to the Apache Software Foundation (ASF) under one or more
    3    * contributor license agreements.  See the NOTICE file distributed with
    4    * this work for additional information regarding copyright ownership.
    5    * The ASF licenses this file to You under the Apache License, Version 2.0
    6    * (the "License"); you may not use this file except in compliance with
    7    * the License.  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  package org.apache.portals.bridges.struts.config;
    18
    19  import org.apache.commons.digester.Digester;
    20  import org.apache.commons.digester.Rule;
    21  import org.xml.sax.Attributes;
    22
    23  public abstract class AbstractConfigComponent
    24  {
    25      protected static class SetParentRule extends Rule
    26      {
    27          private Object parent;
    28
    29          public SetParentRule(Object parent)
    30          {
    31              this.parent = parent;
    32          }
    33
    34          public void begin( String arg0, String arg1, Attributes arg2 ) throws Exception
    35          {
    36              digester.push(parent);
    37          }
    38      }
    39
    40      private boolean loaded = false;
    41
    42      public AbstractConfigComponent()
    43      {
    44      }
    45
    46      protected void checkLoaded()
    47      {
    48          if (loaded)
    49              throw new IllegalStateException("Already loaded");
    50      }
    51
    52      public abstract void configure(Digester digester);
    53
    54      public void afterLoad()
    55      {
    56          checkLoaded();
    57          loaded = true;
    58      }
    59  }