/**
* Copyright 2011 meltmedia
*
* Licensed 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.
*/
package org.xchain.tools.monitoring;
import org.apache.commons.digester.Digester;
import org.apache.commons.digester.Rule;
import org.apache.commons.digester.RuleSetBase;
import org.apache.maven.model.Resource;
/**
* @author Christian Trimble
*/
public class MonitoringInfoRuleSet
extends RuleSetBase
{
public MonitoringInfoRuleSet()
{
namespaceURI = "";
}
public void addRuleInstances(Digester digester)
{
System.out.println("Adding rules.");
//digester.setNamespaceAware(true);
//digester.setRuleNamespaceURI(namespaceURI);
digester.addRule("monitoring-info", new EmptyRule());
digester.addRule("monitoring-info/resource", new ResourceRule());
digester.addRule("monitoring-info/resource/directory", new DirectoryRule());
digester.addRule("monitoring-info/resource/filtering", new FilterRule());
digester.addRule("monitoring-info/resource/includes", new EmptyRule());
digester.addRule("monitoring-info/resource/includes/include", new IncludeRule());
digester.addRule("monitoring-info/resource/excludes", new EmptyRule());
digester.addRule("monitoring-info/resource/excludes/exclude", new ExcludeRule());
digester.addRule("monitoring-info/web-resource", new WarResourceRule());
digester.addRule("monitoring-info/web-resource/directory", new DirectoryRule());
digester.addRule("monitoring-info/web-resource/filtering", new FilterRule());
digester.addRule("monitoring-info/web-resource/includes", new EmptyRule());
digester.addRule("monitoring-info/web-resource/includes/include", new IncludeRule());
digester.addRule("monitoring-info/web-resource/excludes", new EmptyRule());
digester.addRule("monitoring-info/web-resource/excludes/exclude", new ExcludeRule());
}
public static class EmptyRule
extends Rule
{
}
public static class ResourceRule
extends Rule
{
public void begin(java.lang.String namespace, java.lang.String name, org.xml.sax.Attributes attributes)
throws java.lang.Exception
{
System.out.println("Found a resource.");
getDigester().push(new Resource());
}
public void end(String namespace, String name)
throws Exception
{
Resource resourceInfo = (Resource)getDigester().pop();
((MonitoringInfo)getDigester().peek()).getResourceList().add(resourceInfo);
}
}
public static class WarResourceRule
extends Rule
{
public void begin(java.lang.String namespace, java.lang.String name, org.xml.sax.Attributes attributes)
throws java.lang.Exception
{
getDigester().push(new Resource());
}
public void end(String namespace, String name)
throws Exception
{
Resource resourceInfo = (Resource)getDigester().pop();
((MonitoringInfo)getDigester().peek()).getWarResourceList().add(resourceInfo);
}
}
public static class DirectoryRule
extends Rule
{
public void body( String namespace, String name, String text )
throws Exception
{
((Resource)getDigester().peek()).setDirectory(text);
}
}
public static class FilterRule
extends Rule
{
public void body( String namespace, String name, String text )
throws Exception
{
((Resource)getDigester().peek()).setFiltering(Boolean.valueOf(text));
}
}
public static class IncludeRule
extends Rule
{
public void body( String namespace, String name, String text )
throws Exception
{
((Resource)getDigester().peek()).getIncludes().add(text);
}
}
public static class ExcludeRule
extends Rule
{
public void boid( String namespace, String name, String text )
throws Exception
{
((Resource)getDigester().peek()).getExcludes().add(text);
}
}
}