📄 jacsonantfilter.java
字号:
package de.spieleck.app.jacson.ant;
import java.io.Reader;
import java.io.IOException;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.types.Parameterizable;
import org.apache.tools.ant.types.Parameter;
// XXX When does ant call the chain method??
// import org.apache.tools.ant.filters.ChainableReader;
import de.spieleck.app.jacson.JacsonState;
import de.spieleck.app.jacson.JacsonReader;
import de.spieleck.app.jacson.JacsonConfigException;
/**
* Wrap a Jacson into a {@link java.io.FilterReader} which works within
* a Ant FilterChain.
* <p>
* Parameters can be be feed thru the FilterReader/param mechanism.
* The parameter
* <pre>
* <param name="config" value="your.file.name"/>
* </pre>
* is necessary to point to a configuration file to make Jacson work.
* Note that Configurations used by will not work with all kinds of reports.
* <code>PrintingReport</code> and <code>ValuePrintingReport</code> will work.
* </p>
*
* @author fsn
* @since 0.80
*/
public class JacsonAntFilter
extends JacsonReader
implements Parameterizable
{
/** The environmental project. XXX not working. */
protected Project project = null;
/** The filter parameters. */
protected Parameter parameters[] = null;
/** Create this filter. */
public JacsonAntFilter(Reader reader)
throws JacsonConfigException, IOException
{
super(reader);
}
/**
* Store the environmental Ant project.
* @param project this is the project.
* XXX Not called by ant!
*/
public void setProject(Project project)
{
System.err.println("setProject()");
this.project = project;
}
/**
* Get the project.
* @return the project stored
* XXX Not called by ant!
*/
public Project getProject()
{
return project;
}
/**
* Store the filter parameters.
* @param parameters the environmental parameters.
*/
public void setParameters(Parameter[] parameters)
{
// Works: System.err.println("setParameters()");
this.parameters = parameters;
}
/**
*
*/
protected JacsonState obtainRootState()
{
JacsonState rootState;
// System.err.println("obtainRootState(), project="+project);
if ( project == null )
rootState = new JacsonState();
else
rootState = new ProjectJacsonState(project);
// Feed the parameters to the new task
if ( parameters != null )
{
for(int i = 0; i < parameters.length; i++)
{
String name = parameters[i].getName();
String value = parameters[i].getValue();
if ( name.equalsIgnoreCase("config") )
setConfig(value);
rootState.put(name, value);
}
}
return rootState;
}
}
//
// Jacson - Text Filtering with Java.
// Copyright (C) 2002 Frank S. Nestel (nestefan -at- users.sourceforge.net)
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -