com.feilong.lib.digester3.AbstractRulesImpl Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of feilong Show documentation
Show all versions of feilong Show documentation
feilong is a suite of core and expanded libraries that include utility classes, http, excel,cvs, io classes, and much much more.
package com.feilong.lib.digester3;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
/**
*
* AbstractRuleImpl
provides basic services for Rules
implementations. Extending this class
* should make it easier to create a Rules
implementation.
*
*
* AbstractRuleImpl
manages the Digester
and namespaceUri
properties. If the
* subclass overrides {@link #registerRule} (rather than {@link #add}), then the Digester
and
* namespaceURI
of the Rule
will be set correctly before it is passed to
* registerRule
. The subclass can then perform whatever it needs to do to register the rule.
*
*
* @since 1.5
*/
public abstract class AbstractRulesImpl implements Rules{
// ------------------------------------------------------------- Fields
/** Digester using this Rules
implementation */
private Digester digester;
/** Namespace uri to assoicate with subsequent Rule
's */
private String namespaceURI;
// ------------------------------------------------------------- Properties
/**
* {@inheritDoc}
*/
@Override
public Digester getDigester(){
return digester;
}
/**
* {@inheritDoc}
*/
@Override
public void setDigester(Digester digester){
this.digester = digester;
}
/**
* {@inheritDoc}
*/
@Override
public String getNamespaceURI(){
return namespaceURI;
}
/**
* {@inheritDoc}
*/
@Override
public void setNamespaceURI(String namespaceURI){
this.namespaceURI = namespaceURI;
}
// --------------------------------------------------------- Public Methods
/**
* {@inheritDoc}
*/
@Override
public final void add(String pattern,Rule rule){
// set up rule
if (this.digester != null){
rule.setDigester(this.digester);
}
if (this.namespaceURI != null){
rule.setNamespaceURI(this.namespaceURI);
}
registerRule(pattern, rule);
}
/**
* Register rule at given pattern. The the Digester and namespaceURI properties of the given Rule
can
* be assumed to have been set properly before this method is called.
*
* @param pattern
* Nesting pattern to be matched for this Rule
* @param rule
* Rule instance to be registered
*/
protected abstract void registerRule(String pattern,Rule rule);
}