pax_global_header 0000666 0000000 0000000 00000000064 12166126245 0014517 g ustar 00root root 0000000 0000000 52 comment=2b16187e0739d71a1d9c7cb430b79d74a15134e9
args4j-args4j-site-2.0.25/ 0000775 0000000 0000000 00000000000 12166126245 0015131 5 ustar 00root root 0000000 0000000 args4j-args4j-site-2.0.25/.classpath 0000664 0000000 0000000 00000001357 12166126245 0017122 0 ustar 00root root 0000000 0000000
args4j-args4j-site-2.0.25/.gitignore 0000664 0000000 0000000 00000000040 12166126245 0017113 0 ustar 00root root 0000000 0000000 *.iml
*.ipr
*.iws
target
.idea
args4j-args4j-site-2.0.25/.project 0000664 0000000 0000000 00000000555 12166126245 0016605 0 ustar 00root root 0000000 0000000
args4j
org.eclipse.jdt.core.javabuilder
org.eclipse.jdt.core.javanature
args4j-args4j-site-2.0.25/.settings/ 0000775 0000000 0000000 00000000000 12166126245 0017047 5 ustar 00root root 0000000 0000000 args4j-args4j-site-2.0.25/.settings/org.eclipse.jdt.core.prefs 0000664 0000000 0000000 00000001152 12166126245 0024030 0 ustar 00root root 0000000 0000000 #Wed Jun 18 20:01:43 CEST 2008
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.5
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.source=1.5
args4j-args4j-site-2.0.25/args4j-maven-plugin-example/ 0000775 0000000 0000000 00000000000 12166126245 0022354 5 ustar 00root root 0000000 0000000 args4j-args4j-site-2.0.25/args4j-maven-plugin-example/pom.xml 0000664 0000000 0000000 00000003631 12166126245 0023674 0 ustar 00root root 0000000 0000000
4.0.0
args4j
args4j-site
2.0.25
../pom.xml
args4j-maven-plugin-example
jar
Args4j Maven Plugin Example
Example of running the maven plugin
2.0
2011
org.kohsuke.args4j
args4j-maven-plugin
${project.version}
package
usage
org/kohsuke/args4j/maven/Example.java
../../../../args4j-tools/src/org/kohsuke/args4j/apt/Main.java
../../../../args4j/examples/SampleAnt.java
../../../../args4j/examples/SampleMain.java
../../../../args4j/examples/SampleStarter.java
args4j
args4j
${project.version}
args4j-args4j-site-2.0.25/args4j-maven-plugin-example/src/ 0000775 0000000 0000000 00000000000 12166126245 0023143 5 ustar 00root root 0000000 0000000 args4j-args4j-site-2.0.25/args4j-maven-plugin-example/src/main/ 0000775 0000000 0000000 00000000000 12166126245 0024067 5 ustar 00root root 0000000 0000000 args4j-args4j-site-2.0.25/args4j-maven-plugin-example/src/main/java/ 0000775 0000000 0000000 00000000000 12166126245 0025010 5 ustar 00root root 0000000 0000000 args4j-args4j-site-2.0.25/args4j-maven-plugin-example/src/main/java/org/ 0000775 0000000 0000000 00000000000 12166126245 0025577 5 ustar 00root root 0000000 0000000 args4j-args4j-site-2.0.25/args4j-maven-plugin-example/src/main/java/org/kohsuke/ 0000775 0000000 0000000 00000000000 12166126245 0027250 5 ustar 00root root 0000000 0000000 args4j-args4j-site-2.0.25/args4j-maven-plugin-example/src/main/java/org/kohsuke/args4j/ 0000775 0000000 0000000 00000000000 12166126245 0030442 5 ustar 00root root 0000000 0000000 args4j-args4j-site-2.0.25/args4j-maven-plugin-example/src/main/java/org/kohsuke/args4j/maven/ 0000775 0000000 0000000 00000000000 12166126245 0031550 5 ustar 00root root 0000000 0000000 Example.java 0000664 0000000 0000000 00000001560 12166126245 0033731 0 ustar 00root root 0000000 0000000 args4j-args4j-site-2.0.25/args4j-maven-plugin-example/src/main/java/org/kohsuke/args4j/maven package org.kohsuke.args4j.maven;
import org.kohsuke.args4j.CmdLineException;
import org.kohsuke.args4j.CmdLineParser;
import org.kohsuke.args4j.Option;
public class Example {
@Option(name = "-o", usage="Option")
public String option;
@Option(name = "-r", required = true, usage="Required")
public String required;
public static void main(String[] args) {
System.exit(new Example().run(args));
}
private int run(String[] args) {
CmdLineParser p = new CmdLineParser(this);
try {
p.parseArgument(args);
run();
return 0;
} catch (CmdLineException e) {
System.err.println(e.getMessage());
p.printUsage(System.err);
return 1;
}
}
private void run() {
System.out.format("Option %s Required %s\n", option, required);
}
}
args4j-args4j-site-2.0.25/args4j-maven-plugin/ 0000775 0000000 0000000 00000000000 12166126245 0020723 5 ustar 00root root 0000000 0000000 args4j-args4j-site-2.0.25/args4j-maven-plugin/pom.xml 0000664 0000000 0000000 00000002437 12166126245 0022246 0 ustar 00root root 0000000 0000000
4.0.0
args4j
args4j-site
2.0.25
../pom.xml
org.kohsuke.args4j
args4j-maven-plugin
maven-plugin
Args4j Maven Plugin
Automate the generation of
2.0
2011
args4j
args4j-tools
${project.version}
all
org.apache.maven
maven-project
2.0.4
org.apache.maven
maven-plugin-api
2.0
args4j-args4j-site-2.0.25/args4j-maven-plugin/src/ 0000775 0000000 0000000 00000000000 12166126245 0021512 5 ustar 00root root 0000000 0000000 args4j-args4j-site-2.0.25/args4j-maven-plugin/src/main/ 0000775 0000000 0000000 00000000000 12166126245 0022436 5 ustar 00root root 0000000 0000000 args4j-args4j-site-2.0.25/args4j-maven-plugin/src/main/java/ 0000775 0000000 0000000 00000000000 12166126245 0023357 5 ustar 00root root 0000000 0000000 args4j-args4j-site-2.0.25/args4j-maven-plugin/src/main/java/org/ 0000775 0000000 0000000 00000000000 12166126245 0024146 5 ustar 00root root 0000000 0000000 args4j-args4j-site-2.0.25/args4j-maven-plugin/src/main/java/org/kohsuke/ 0000775 0000000 0000000 00000000000 12166126245 0025617 5 ustar 00root root 0000000 0000000 args4j-args4j-site-2.0.25/args4j-maven-plugin/src/main/java/org/kohsuke/args4j/ 0000775 0000000 0000000 00000000000 12166126245 0027011 5 ustar 00root root 0000000 0000000 args4j-args4j-site-2.0.25/args4j-maven-plugin/src/main/java/org/kohsuke/args4j/maven/ 0000775 0000000 0000000 00000000000 12166126245 0030117 5 ustar 00root root 0000000 0000000 Args4jUsageMojo.java 0000664 0000000 0000000 00000007530 12166126245 0033654 0 ustar 00root root 0000000 0000000 args4j-args4j-site-2.0.25/args4j-maven-plugin/src/main/java/org/kohsuke/args4j/maven package org.kohsuke.args4j.maven;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.kohsuke.args4j.apt.Main;
import java.io.*;
import java.util.List;
/**
* @goal usage
*/
public class Args4jUsageMojo extends AbstractMojo {
/**
* Mode. 'TXT' 'XML' or 'HTML'
* @parameter expression="TXT"
* @required
*/
private String mode;
/**
* Location of the source files.
* @parameter expression="${basedir}/src/main/java"
* @required
*/
private String sourceDir;
/**
* directory where the the usage are generated
* @parameter expression="${project.build.directory}/args4j"
* @required
*/
protected String args4jBuildDirPath;
/**
* @parameter
*/
private List sourceFiles;
private File jar;
public void execute() throws MojoExecutionException, MojoFailureException {
if (sourceFiles == null || sourceFiles.size() == 0) {
getLog().info("No sourceFiles defined. Skipping");
return;
}
File args4jBuildDir = new File(args4jBuildDirPath);
if (!args4jBuildDir.exists() && !args4jBuildDir.mkdirs()) {
throw new MojoExecutionException("Couldn't create the directory " + args4jBuildDir.getAbsolutePath());
}
try {
jar = new File(Main.class.getProtectionDomain().getCodeSource().getLocation().getPath());
} catch (Exception e) {
throw new MojoExecutionException("Couldn't find the jar of the arg4s tools");
}
getLog().debug("Jar path:" + jar);
for (String relativeSourceFilePath : sourceFiles) {
try {
File sourceFile = new File(sourceDir, relativeSourceFilePath);
if (!sourceFile.exists()) {
getLog().warn("Source file " + sourceFile.getAbsolutePath() + " not found. Skipping");
continue;
}
getLog().debug("Generating usage for " + sourceFile.getAbsolutePath());
generateUsage(sourceFile.getAbsolutePath(), args4jBuildDir);
} catch (Exception e) {
throw new MojoExecutionException("Failed to generate usage for " + relativeSourceFilePath, e);
}
}
}
private void generateUsage(String sourceFile, File args4jBuildDir) throws InterruptedException, IOException {
String outputDir = args4jBuildDir.getAbsolutePath();
ProcessBuilder pb = new ProcessBuilder();
pb.command("java","-jar", jar.getAbsolutePath(), "-o", outputDir, "-mode", mode, sourceFile);
printCommand(pb);
Process process = pb.start();
InputStreamReader isr = dumpOutput(process);
int r = process.waitFor();
isr.close();
if (r !=0)
throw new IOException("args4j generation failed: "+r);
}
private void printCommand(ProcessBuilder pb) {
StringBuilder sb = new StringBuilder();
sb.append("Running: ");
for (String s : pb.command()) {
sb.append(s).append(" ");
}
sb.append("from ").append(dir(pb).getAbsolutePath());
getLog().debug(sb.toString());
}
private File dir(ProcessBuilder pb) {
File directory = pb.directory();
if (directory == null) {
return new File(System.getProperty("user.dir"));
}
return directory;
}
private InputStreamReader dumpOutput(Process process) throws IOException {
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
return isr;
}
}
args4j-args4j-site-2.0.25/args4j-tools/ 0000775 0000000 0000000 00000000000 12166126245 0017461 5 ustar 00root root 0000000 0000000 args4j-args4j-site-2.0.25/args4j-tools/LICENSE.txt 0000664 0000000 0000000 00000002046 12166126245 0021306 0 ustar 00root root 0000000 0000000 Copyright (c) 2003, Kohsuke Kawaguchi
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
args4j-args4j-site-2.0.25/args4j-tools/maven.xml 0000664 0000000 0000000 00000000517 12166126245 0021314 0 ustar 00root root 0000000 0000000
args4j-args4j-site-2.0.25/args4j-tools/pom.xml 0000664 0000000 0000000 00000006414 12166126245 0021003 0 ustar 00root root 0000000 0000000
4.0.0
args4j
args4j-site
2.0.25
../pom.xml
args4j-tools
args4j-tools
development-time tool for generating additional artifacits
bundle
org.kohsuke.args4j.apt.Main
src
test
src
**/*.properties
META-INF/services/*
maven-jar-plugin
true
${mainClass}
org.apache.maven.plugins
maven-shade-plugin
1.4
package
shade
true
all
${mainClass}
ant
ant
1.5
args4j
args4j
${project.version}
junit
junit
3.8.2
test
org.mockito
mockito-all
1.8.5
test
jdk-tools-jar
!mac
jdk
tools
5.0
system
${java.home}/../lib/tools.jar
args4j-args4j-site-2.0.25/args4j-tools/project.properties 0000664 0000000 0000000 00000000177 12166126245 0023252 0 ustar 00root root 0000000 0000000 maven.javanet.release.folder=/dist/tools
maven.jar.manifest.classpath.add=true
maven.jar.mainclass=org.kohsuke.args4j.apt.Main
args4j-args4j-site-2.0.25/args4j-tools/project.xml 0000664 0000000 0000000 00000003533 12166126245 0021655 0 ustar 00root root 0000000 0000000
../project.xml
3
args4j-tools
args4j-tools
development-time tool for generating additional artifacits
development-time tool for generating additional artifacits
ant
1.5
args4j
${pom.currentVersion}
true
jdk
tools
5.0
${java.home}/../lib/tools.jar
http://java.sun.com/j2se/5.0/download.html
Needed to run HttpUnit tests. This is the tools.jar from sun jdk. Jar in not in maven repository
but is set to JAVA_HOME/../lib/tools.jar in project.properties
kk@kohsuke.org
src
test
src
**/*.properties
META-INF/services/*
**/Test*.java
args4j-args4j-site-2.0.25/args4j-tools/src/ 0000775 0000000 0000000 00000000000 12166126245 0020250 5 ustar 00root root 0000000 0000000 args4j-args4j-site-2.0.25/args4j-tools/src/META-INF/ 0000775 0000000 0000000 00000000000 12166126245 0021410 5 ustar 00root root 0000000 0000000 args4j-args4j-site-2.0.25/args4j-tools/src/META-INF/services/ 0000775 0000000 0000000 00000000000 12166126245 0023233 5 ustar 00root root 0000000 0000000 com.sun.mirror.apt.AnnotationProcessorFactory 0000664 0000000 0000000 00000000065 12166126245 0034117 0 ustar 00root root 0000000 0000000 args4j-args4j-site-2.0.25/args4j-tools/src/META-INF/services org.kohsuke.args4j.apt.AnnotationProcessorFactoryImpl args4j-args4j-site-2.0.25/args4j-tools/src/org/ 0000775 0000000 0000000 00000000000 12166126245 0021037 5 ustar 00root root 0000000 0000000 args4j-args4j-site-2.0.25/args4j-tools/src/org/kohsuke/ 0000775 0000000 0000000 00000000000 12166126245 0022510 5 ustar 00root root 0000000 0000000 args4j-args4j-site-2.0.25/args4j-tools/src/org/kohsuke/args4j/ 0000775 0000000 0000000 00000000000 12166126245 0023702 5 ustar 00root root 0000000 0000000 args4j-args4j-site-2.0.25/args4j-tools/src/org/kohsuke/args4j/apt/ 0000775 0000000 0000000 00000000000 12166126245 0024466 5 ustar 00root root 0000000 0000000 AnnotationProcessorFactoryImpl.java 0000664 0000000 0000000 00000012702 12166126245 0033440 0 ustar 00root root 0000000 0000000 args4j-args4j-site-2.0.25/args4j-tools/src/org/kohsuke/args4j/apt package org.kohsuke.args4j.apt;
import com.sun.mirror.apt.AnnotationProcessor;
import com.sun.mirror.apt.AnnotationProcessorEnvironment;
import com.sun.mirror.apt.AnnotationProcessorFactory;
import com.sun.mirror.declaration.AnnotationTypeDeclaration;
import com.sun.mirror.declaration.ClassDeclaration;
import com.sun.mirror.declaration.Declaration;
import com.sun.mirror.declaration.FieldDeclaration;
import com.sun.mirror.declaration.MethodDeclaration;
import com.sun.mirror.declaration.TypeDeclaration;
import com.sun.mirror.declaration.MemberDeclaration;
import com.sun.mirror.type.ClassType;
import com.sun.mirror.util.SimpleDeclarationVisitor;
import org.kohsuke.args4j.Argument;
import org.kohsuke.args4j.Option;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.FileInputStream;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import java.util.Properties;
/**
* {@link AnnotationProcessorFactory} to be invoked by APT.
*
* This class receives options from the Main method through system properties (ouch!).
*
* @author Kohsuke Kawaguchi
*/
public class AnnotationProcessorFactoryImpl implements AnnotationProcessorFactory {
private File outDir;
private String format;
private Properties resource = null;
public AnnotationProcessorFactoryImpl() {
outDir = new File(System.getProperty("args4j.outdir"));
format = System.getProperty("args4j.format");
String res = System.getProperty("args4j.resource");
if(res!=null && res.length()>0) {
try {
resource = new Properties();
resource.load(new FileInputStream(res));
} catch (IOException e) {
throw new Error(e);
}
}
}
public Collection supportedOptions() {
return Collections.emptyList();
}
public Collection supportedAnnotationTypes() {
return Arrays.asList(Option.class.getName(),Argument.class.getName());
}
public AnnotationProcessor getProcessorFor(final Set annotationTypeDeclarations, final AnnotationProcessorEnvironment env) {
return new AnnotationProcessor() {
public void process() {
Collection params = env.getDeclarationsAnnotatedWith((AnnotationTypeDeclaration)env.getTypeDeclaration(Option.class.getName()));
final Set optionBeans = new HashSet();
for (Declaration d : params) {
d.accept(new SimpleDeclarationVisitor() {
public void visitFieldDeclaration(FieldDeclaration f) {
TypeDeclaration dt = f.getDeclaringType();
optionBeans.add(dt);
}
public void visitMethodDeclaration(MethodDeclaration m) {
optionBeans.add(m.getDeclaringType());
}
});
}
for (TypeDeclaration t : optionBeans) {
// make sure that they are on classes
if(t instanceof ClassDeclaration) {
ClassDeclaration cd = (ClassDeclaration)t;
try {
AnnotationVisitor writer = createAnnotationVisitor(cd);
env.getMessager().printNotice("Processing "+cd.getQualifiedName());
scan(cd, writer);
} catch (IOException e) {
env.getMessager().printError(e.getMessage());
}
} else {
env.getMessager().printError(t.getPosition(),
"args4j annotations need to be placed on a class");
}
}
}
};
}
private AnnotationVisitor createAnnotationVisitor(ClassDeclaration cd) throws IOException {
FileWriter out = new FileWriter(new File(outDir,cd.getQualifiedName()+"."+format.toLowerCase()));
AnnotationVisitor writer;
if(format.equals("XML"))
writer = new XmlWriter(out,cd);
else if (format.equals("TXT"))
writer = new TxtWriter(out, cd);
else
writer = new HtmlWriter(out);
return new AnnotationVisitorReorderer(writer);
}
private void scan(ClassDeclaration decl, AnnotationVisitor visitor) {
while(decl!=null) {
for( FieldDeclaration f : decl.getFields() )
scan(f, visitor);
for (MethodDeclaration m : decl.getMethods())
scan(m, visitor);
ClassType sc = decl.getSuperclass();
if(sc==null) break;
decl = sc.getDeclaration();
}
visitor.done();
}
private void scan(MemberDeclaration f, AnnotationVisitor visitor) {
Option o = f.getAnnotation(Option.class);
if(o==null) return;
String usage = getUsage(o);
if(isOptionHidden(usage)) return;
visitor.onOption(new OptionWithUsage(o, usage));
}
private boolean isOptionHidden(String usage) {
return usage==null || usage.length()==0;
}
private String getUsage(Option o) {
if(resource==null)
return o.usage();
else
return resource.getProperty(o.usage());
}
}
args4j-args4j-site-2.0.25/args4j-tools/src/org/kohsuke/args4j/apt/AnnotationVisitor.java 0000664 0000000 0000000 00000000550 12166126245 0031023 0 ustar 00root root 0000000 0000000 package org.kohsuke.args4j.apt;
import org.kohsuke.args4j.Option;
/**
* @author Kohsuke Kawaguchi
*/
interface AnnotationVisitor {
/**
* @deprecated as of 2.0.17 use {@link #onOption(OptionWithUsage)}
*/
@Deprecated
void onOption( String name, String usage );
void onOption( OptionWithUsage optionWithUsage );
void done();
}
args4j-args4j-site-2.0.25/args4j-tools/src/org/kohsuke/args4j/apt/AnnotationVisitorReorderer.java 0000664 0000000 0000000 00000002265 12166126245 0032702 0 ustar 00root root 0000000 0000000 package org.kohsuke.args4j.apt;
import java.util.*;
/**
* Reorders the annotation according to their canonical name
*/
public class AnnotationVisitorReorderer implements AnnotationVisitor {
private AnnotationVisitor target;
private List arguments = new ArrayList();
public AnnotationVisitorReorderer(AnnotationVisitor target) {
this.target = target;
}
public void onOption(String name, String usage) {
throw new UnsupportedOperationException("method not used");
}
public void onOption(OptionWithUsage optionWithUsage) {
arguments.add(optionWithUsage);
}
public void done() {
reorderArguments();
for (OptionWithUsage argument : arguments) {
target.onOption(argument);
}
target.done();
}
private void reorderArguments() {
Collections.sort(arguments, new NaturalOrderOptionsComparator());
}
private static class NaturalOrderOptionsComparator implements Comparator {
public int compare(OptionWithUsage o1, OptionWithUsage o2) {
return o1.option.name().compareTo(o2.option.name());
}
}
}
args4j-args4j-site-2.0.25/args4j-tools/src/org/kohsuke/args4j/apt/HtmlWriter.java 0000664 0000000 0000000 00000002162 12166126245 0027433 0 ustar 00root root 0000000 0000000 package org.kohsuke.args4j.apt;
import java.io.PrintWriter;
import java.io.Writer;
/**
* Writes the option list as HTML to a {@link Writer}.
*
* @author Kohsuke Kawaguchi
*/
class HtmlWriter implements AnnotationVisitor {
private final PrintWriter out;
public HtmlWriter(Writer out) {
this.out = new PrintWriter(out);
this.out.println("");
}
public void onOption(String name, String usage) {
out.println(" ");
writeTag("td","args4j-option",name);
writeTag("td","args4j-usage",usage);
out.println("
");
}
public void onOption( OptionWithUsage optionWithUsage ) {
out.println(" ");
writeTag("td","args4j-option",optionWithUsage.option.name());
writeTag("td","args4j-usage",optionWithUsage.usage);
out.println("
");
}
private void writeTag(String tag, String cssClass, String value) {
out.println(" <"+tag+" class='"+cssClass+"'>"+tag+">");
}
public void done() {
out.println("
");
out.close();
}
}
args4j-args4j-site-2.0.25/args4j-tools/src/org/kohsuke/args4j/apt/IsolatingClassLoader.java 0000664 0000000 0000000 00000001333 12166126245 0031377 0 ustar 00root root 0000000 0000000 package org.kohsuke.args4j.apt;
/**
* @author Kohsuke Kawaguchi
*/
public class IsolatingClassLoader extends ClassLoader {
public IsolatingClassLoader(ClassLoader parent) {
super(parent);
}
public Class> loadClass(String name) throws ClassNotFoundException {
throw new ClassNotFoundException(name);
}
protected synchronized Class> loadClass(String name, boolean resolve) throws ClassNotFoundException {
if(!name.startsWith("org.kohsuke"))
return super.loadClass(name,resolve);
throw new ClassNotFoundException(name);
}
protected Class> findClass(String name) throws ClassNotFoundException {
throw new ClassNotFoundException(name);
}
}
args4j-args4j-site-2.0.25/args4j-tools/src/org/kohsuke/args4j/apt/Main.java 0000664 0000000 0000000 00000007133 12166126245 0026221 0 ustar 00root root 0000000 0000000 package org.kohsuke.args4j.apt;
import org.kohsuke.args4j.Argument;
import org.kohsuke.args4j.CmdLineException;
import org.kohsuke.args4j.CmdLineParser;
import org.kohsuke.args4j.Option;
import java.io.File;
import java.lang.reflect.Method;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.List;
/**
* Entry point that invokes APT.
* @author Kohsuke Kawaguchi
*/
public class Main {
@Option(name="-o",usage="output directory to place generated HTML/XML")
private File outDir = new File(".");
@Option(name="-mode",usage="output format. 'XML' 'TXT' or 'HTML'")
private Mode mode = Mode.HTML;
@Option(name="-res",usage="resource file name to obtain usage strings from.\n"+
"Using this option will cause Option.usage() to be used as a key to this resource")
private String resourceName = null;
@Option(name="-r")
private boolean hidden = false; // for testing
@Argument
private List aptArgs = new ArrayList();
public static void main(String[] args) throws Exception {
System.exit(new Main().run(args));
}
public int run(String[] args) throws Exception {
CmdLineParser parser = new CmdLineParser(this);
try {
parser.parseArgument(args);
} catch (CmdLineException e) {
System.err.println(e.getMessage());
printUsage(parser);
return -1;
}
if(aptArgs.isEmpty()) {
printUsage(parser);
return 0;
}
// we'll use a separate class loader to reload our classes,
// so parameters need to be set as system properties. Ouch!
System.setProperty("args4j.outdir",outDir.getPath());
System.setProperty("args4j.format",mode.name());
if(resourceName==null) resourceName = ""; // can't have null in properties
System.setProperty("args4j.resource",resourceName);
aptArgs.add(0,"-nocompile");
// locate tools.jar
ClassLoader cl = loadToolsJar();
Class> apt = cl.loadClass("com.sun.tools.apt.Main");
Method main = getProcessMethod(apt);
return (Integer)main.invoke(null,new Object[]{
cl.loadClass("org.kohsuke.args4j.apt.AnnotationProcessorFactoryImpl").newInstance(),
aptArgs.toArray(new String[0])});
}
private void printUsage(CmdLineParser parser) {
System.err.println("argsj-tools [options...] sourcefiles...");
System.err.println(" Generates the list of options in XML/HTML");
parser.printUsage(System.err);
}
private Method getProcessMethod(Class> apt) {
for(Method m : apt.getDeclaredMethods()) {
if(!m.getName().equals("process"))
continue;
Class>[] p = m.getParameterTypes();
if(p.length!=2) continue;
if(p[1]!=String[].class) continue;
if(!p[0].getName().endsWith("AnnotationProcessorFactory")) continue;
return m;
}
throw new Error("Unable to find the entry point to APT. Please use the latest version of JDK 5.0");
}
public ClassLoader loadToolsJar() {
File jreHome = new File(System.getProperty("java.home"));
File toolsJar = new File(jreHome.getParent(), "lib/tools.jar" );
try {
return new ReloadingClassLoader(new URLClassLoader(
new URL[]{ toolsJar.toURL() }, new IsolatingClassLoader(Main.class.getClassLoader())) );
} catch (MalformedURLException e) {
throw new Error(e);
}
}
}
args4j-args4j-site-2.0.25/args4j-tools/src/org/kohsuke/args4j/apt/Mode.java 0000664 0000000 0000000 00000000156 12166126245 0026217 0 ustar 00root root 0000000 0000000 package org.kohsuke.args4j.apt;
/**
* @author Kohsuke Kawaguchi
*/
public enum Mode {
XML, HTML, TXT
}
args4j-args4j-site-2.0.25/args4j-tools/src/org/kohsuke/args4j/apt/OptionWithUsage.java 0000664 0000000 0000000 00000000454 12166126245 0030425 0 ustar 00root root 0000000 0000000 package org.kohsuke.args4j.apt;
import org.kohsuke.args4j.Option;
/**
* @author Jerome Lacoste
*/
public class OptionWithUsage {
final Option option;
final String usage;
OptionWithUsage(Option option, String usage) {
this.option = option;
this.usage = usage;
}
}
args4j-args4j-site-2.0.25/args4j-tools/src/org/kohsuke/args4j/apt/ReloadingClassLoader.java 0000664 0000000 0000000 00000002076 12166126245 0031357 0 ustar 00root root 0000000 0000000 package org.kohsuke.args4j.apt;
import java.io.InputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
/**
* Used to isolate a child class loader from the parent classloader.
*
* @author Kohsuke Kawaguchi
*/
public class ReloadingClassLoader extends ClassLoader {
protected ReloadingClassLoader(ClassLoader parent) {
super(parent);
}
protected Class> findClass(String name) throws ClassNotFoundException {
String pathName = name.replace('.','/')+".class";
InputStream is = getParent().getResourceAsStream(pathName);
if (is==null)
throw new ClassNotFoundException(name);
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
int len;
while((len=is.read(buf))>=0)
baos.write(buf,0,len);
buf = baos.toByteArray();
return defineClass(name,buf,0,buf.length);
} catch (IOException e) {
throw new ClassNotFoundException(name,e);
}
}
}
args4j-args4j-site-2.0.25/args4j-tools/src/org/kohsuke/args4j/apt/TxtWriter.java 0000664 0000000 0000000 00000002030 12166126245 0027300 0 ustar 00root root 0000000 0000000 package org.kohsuke.args4j.apt;
import com.sun.mirror.declaration.ClassDeclaration;
import org.kohsuke.args4j.Option;
import java.io.PrintWriter;
import java.io.Writer;
/**
* Writes the option list as TXT to a {@link java.io.Writer}.
*
* @author Jerome Lacoste
*/
class TxtWriter implements AnnotationVisitor {
private final PrintWriter out;
public TxtWriter(Writer out, ClassDeclaration d) {
this.out = new PrintWriter(out);
this.out.println("Usage: " + d.getQualifiedName());
}
public void onOption(String name, String usage) {
throw new UnsupportedOperationException("never used");
}
public void onOption( OptionWithUsage optionWithUsage) {
out.println("\t" + optionWithUsage.option.name() + ": " + required(optionWithUsage.option) + optionWithUsage.usage);
}
private String required(Option option) {
if (option.required()) {
return "[required] ";
}
return "[optional] ";
}
public void done() {
out.close();
}
}
args4j-args4j-site-2.0.25/args4j-tools/src/org/kohsuke/args4j/apt/XmlWriter.java 0000664 0000000 0000000 00000002176 12166126245 0027274 0 ustar 00root root 0000000 0000000 package org.kohsuke.args4j.apt;
import com.sun.mirror.declaration.ClassDeclaration;
import java.io.PrintWriter;
import java.io.Writer;
/**
* Writes the option list as XML to a {@link Writer}.
*
* @author Kohsuke Kawaguchi
*/
class XmlWriter implements AnnotationVisitor {
private final PrintWriter out;
public XmlWriter(Writer out, ClassDeclaration d) {
this.out = new PrintWriter(out);
this.out.println("");
}
public void onOption( String name, String usage ) {
out.println(" ");
}
public void onOption( OptionWithUsage optionWithUsage ) {
out.println(" ");
}
private void writeTag(String tag, String value) {
out.println(" <"+tag+">"+tag+">");
}
public void done() {
out.println("");
out.close();
}
}
args4j-args4j-site-2.0.25/args4j-tools/test/ 0000775 0000000 0000000 00000000000 12166126245 0020440 5 ustar 00root root 0000000 0000000 args4j-args4j-site-2.0.25/args4j-tools/test/org/ 0000775 0000000 0000000 00000000000 12166126245 0021227 5 ustar 00root root 0000000 0000000 args4j-args4j-site-2.0.25/args4j-tools/test/org/kohsuke/ 0000775 0000000 0000000 00000000000 12166126245 0022700 5 ustar 00root root 0000000 0000000 args4j-args4j-site-2.0.25/args4j-tools/test/org/kohsuke/args4j/ 0000775 0000000 0000000 00000000000 12166126245 0024072 5 ustar 00root root 0000000 0000000 args4j-args4j-site-2.0.25/args4j-tools/test/org/kohsuke/args4j/apt/ 0000775 0000000 0000000 00000000000 12166126245 0024656 5 ustar 00root root 0000000 0000000 AnnotationVisitorReordererTest.java 0000664 0000000 0000000 00000003230 12166126245 0033644 0 ustar 00root root 0000000 0000000 args4j-args4j-site-2.0.25/args4j-tools/test/org/kohsuke/args4j/apt package org.kohsuke.args4j.apt;
import junit.framework.TestCase;
import org.kohsuke.args4j.Option;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
public class AnnotationVisitorReordererTest extends TestCase {
private AnnotationVisitor target;
private AnnotationVisitorReorderer reorderer;
final OptionWithUsage optionb = new OptionWithUsage(mockOption("-b"), "optionb");
final OptionWithUsage optiona = new OptionWithUsage(mockOption("-a"), "optiona");
protected void setUp() throws Exception {
super.setUp();
target = mock(AnnotationVisitor.class);
reorderer = new AnnotationVisitorReorderer(target);
}
public void testReorderWithUnorderedAnnotations() throws Exception {
simulateOnOptionsThenDone(optionb, optiona);
verifyOptionsThenDone(optiona, optionb);
}
public void testReorderWithAlreadyOrderedAnnotations() throws Exception {
simulateOnOptionsThenDone(optiona, optionb);
verifyOptionsThenDone(optiona, optionb);
}
private void simulateOnOptionsThenDone(OptionWithUsage... options) {
for (OptionWithUsage option : options) {
reorderer.onOption(option);
}
reorderer.done();
}
private void verifyOptionsThenDone(OptionWithUsage... options) {
for (OptionWithUsage option : options) {
verify(target).onOption(option);
}
verify(target).done();
}
private Option mockOption(String name) {
Option option1 = mock(Option.class);
when(option1.name()).thenReturn(name);
return option1;
}
}
args4j-args4j-site-2.0.25/args4j/ 0000775 0000000 0000000 00000000000 12166126245 0016323 5 ustar 00root root 0000000 0000000 args4j-args4j-site-2.0.25/args4j/LICENSE.txt 0000664 0000000 0000000 00000002051 12166126245 0020144 0 ustar 00root root 0000000 0000000 Copyright (c) 2003, Kohsuke Kawaguchi
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
args4j-args4j-site-2.0.25/args4j/examples/ 0000775 0000000 0000000 00000000000 12166126245 0020141 5 ustar 00root root 0000000 0000000 args4j-args4j-site-2.0.25/args4j/examples/SampleAnt.java 0000664 0000000 0000000 00000017155 12166126245 0022701 0 ustar 00root root 0000000 0000000 import org.kohsuke.args4j.Argument;
import org.kohsuke.args4j.CmdLineException;
import org.kohsuke.args4j.CmdLineParser;
import org.kohsuke.args4j.Option;
import java.io.IOException;
import java.io.File;
import java.util.List;
import java.util.Vector;
import java.util.TreeMap;
/**
* Showing the Ant command line interface as args4j annotations.
*
* @author
* Jan Materne
*/
// Field are are access by args4j per reflection. The compiler does not know that.
// So catch these compiler warnings.
@SuppressWarnings("unused")
public class SampleAnt {
// 'normal' use
@Option(name="-help",usage="print this message")
private boolean help = false;
// Ant uses abbreviations - a second option to set the
// same attribute. Because only one @Option is allowed per element,
// we use a workaround: a setter gets the abbreviation
// A 'usage' would duplicate the info message, but without the possibility
// of '-h' is hidden.
@Option(name="-h")
private void setHelp(boolean h) { help = h; }
@Option(name="-projecthelp",usage="print project help information")
private boolean projecthelp;
@Option(name="-p")
private void setProjecthelp(boolean p) { projecthelp = p; }
@Option(name="-version",usage="print the version information and exit")
private boolean version;
@Option(name="-diagnostics",usage="print information that might be helpful to\ndiagnose or report problems.")
private boolean diagnostics;
@Option(name="-quiet",usage="be extra quiet")
private boolean quiet;
@Option(name="-q")
private void setQuiet(boolean q) { quiet = q; }
@Option(name="-verbose",usage="be extra verbose")
private boolean verbose;
@Option(name="-v")
private void setVerbose(boolean v) { verbose = v; }
@Option(name="-debug",usage="print debugging information")
private boolean debug;
@Option(name="-d")
private void setDebug(boolean d) { debug = d; }
@Option(name="-emacs",usage="produce logging information without adornments")
private boolean emacs;
@Option(name="-e")
private void setEmacs(boolean e) { emacs = e; }
@Option(name="-lib",usage="specifies a path to search for jars and classes",metaVar="")
private void setLib(String s) {
String[] files = s.split(System.getProperty("path.separator"));
for (int i=0; i lib = new Vector();
@Option(name="-logger",usage="the class which is to perform logging",metaVar="")
private String logger;
@Option(name="-listener",usage="the class which is to perform",metaVar="")
private String listener;
@Option(name="-noinput",usage="do not allow interactive input")
private boolean noinput;
@Option(name="-buildfile",usage="use given buildfile",metaVar="")
private File buildfile;
// Ant's original is
// -buildfile use given buildfile
// -file ''
// -f ''
// How to handle this? Args4J prints the arguments sorted alphabetically.
@Option(name="-file",usage=" ''",metaVar="")
private void setBuildfile1(File f) { buildfile = f; }
@Option(name="-f",usage=" ''",metaVar="")
private void setBuildfile2(File f) { buildfile = f; }
//TODO: How to handle that?
// -D= use value for given property
private TreeMap props = new TreeMap();
@Option(name="-keep-going",usage="execute all targets that do not depend\non failed target(s)")
private boolean keepGoing;
@Option(name="-k")
private void setKeepGoing(boolean kg) { keepGoing = kg; }
@Option(name="-propertyfile",usage="load all properties from file with -D\nproperties taking precedence",metaVar="")
private File propertyfile;
@Option(name="-inputhandler",usage="the class which will handle input requests",metaVar="")
private String inputhandler;
//TODO: Another problem
// -find (s)earch for buildfile towards the root of
// -s the filesystem and use it
//problem is: info text has two lines and there are two lines for different option strings
@Option(name="-find",usage="(s)earch for buildfile towards the root of\nthe filesystem and use it",metaVar="")
private File file;
@Option(name="-s",metaVar="")
private void setFile(File f) { file = f; }
@Option(name="-nice",usage="A niceness value for the main thread:\n1 (lowest) to 10 (highest); 5 is the default")
private void setNice(int n) {
if (n>0 && n<11) nice = n;
}
private int nice = 5;
@Option(name="-nouserlib",usage="Run ant without using the jar files from\n${user.home}/.ant/lib")
private boolean nouserlib;
@Option(name="-noclasspath",usage="Run ant without using CLASSPATH")
private boolean noclasspath;
@Argument
private List targets;
public static void main(String[] args) throws IOException {
SampleAnt bean = new SampleAnt();
try {
bean.parseArgs(args);
bean.showResult();
} catch (IOException ioe) {
//no-op
}
}
public void parseArgs(String[] args) throws IOException {
CmdLineParser parser = new CmdLineParser(this);
try {
parser.parseArgument(args);
} catch( CmdLineException e ) {
int start = e.getMessage().indexOf('"')+1;
int end = e.getMessage().lastIndexOf('"');
String wrongArgument = e.getMessage().substring(start, end);
System.err.println("Unknown argument: " + wrongArgument);
System.err.println("ant [options] [target [target2 [target3] ...]]");
parser.printUsage(System.err);
System.err.println();
throw new IOException();
}
}
public void showResult() {
System.out.println("SampleAnt was configured with...");
System.out.println(" help : " + help);
System.out.println(" projecthelp : " + projecthelp);
System.out.println(" version : " + version);
System.out.println(" diagnostics : " + diagnostics);
System.out.println(" quiet : " + quiet);
System.out.println(" verbose : " + verbose);
System.out.println(" debug : " + debug);
System.out.println(" emacs : " + emacs);
System.out.println(" lib");
for (File f : lib) {
System.out.println(" - " + f);
}
System.out.println(" logger : " + logger);
System.out.println(" listener : " + listener);
System.out.println(" noinput : " + noinput);
System.out.println(" buildfile : " + buildfile);
System.out.println(" properties");
for (String key : props.keySet()) {
System.out.println(" - " + key + " = " + props.get(key));
}
System.out.println(" keepGoing : " + keepGoing);
System.out.println(" propertyfile : " + propertyfile);
System.out.println(" inputhandler : " + inputhandler);
System.out.println(" buildfile : " + file);
System.out.println(" nice : " + nice);
System.out.println(" nouserlib : " + nouserlib);
System.out.println(" noclasspath : " + noclasspath);
System.out.println("");
System.out.println(" targets");
for (String t : targets) {
System.out.println(" - " + t);
}
System.out.println("");
}
}
args4j-args4j-site-2.0.25/args4j/examples/SampleMain.java 0000664 0000000 0000000 00000006640 12166126245 0023040 0 ustar 00root root 0000000 0000000 import static org.kohsuke.args4j.ExampleMode.ALL;
import org.kohsuke.args4j.Argument;
import org.kohsuke.args4j.CmdLineException;
import org.kohsuke.args4j.CmdLineParser;
import org.kohsuke.args4j.Option;
import org.kohsuke.args4j.spi.BooleanOptionHandler;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
* Sample program that shows how you can use args4j.
*
* @author
* Kohsuke Kawaguchi (kk@kohsuke.org)
*/
public class SampleMain {
@Option(name="-r",usage="recursively run something")
private boolean recursive;
@Option(name="-o",usage="output to this file",metaVar="OUTPUT")
private File out = new File(".");
@Option(name="-str") // no usage
private String str = "(default value)";
@Option(name="-hidden-str2",hidden=true,usage="hidden option")
private String hiddenStr2 = "(default value)";
@Option(name="-n",usage="repeat times\nusage can have new lines in it and also it can be verrrrrrrrrrrrrrrrrry long")
private int num = -1;
// using 'handler=...' allows you to specify a custom OptionHandler
// implementation class. This allows you to bind a standard Java type
// with a non-standard option syntax
@Option(name="-custom",handler=BooleanOptionHandler.class,usage="boolean value for checking the custom handler")
private boolean data;
// receives other command line parameters than options
@Argument
private List arguments = new ArrayList();
public static void main(String[] args) throws IOException {
new SampleMain().doMain(args);
}
public void doMain(String[] args) throws IOException {
CmdLineParser parser = new CmdLineParser(this);
// if you have a wider console, you could increase the value;
// here 80 is also the default
parser.setUsageWidth(80);
try {
// parse the arguments.
parser.parseArgument(args);
// you can parse additional arguments if you want.
// parser.parseArgument("more","args");
// after parsing arguments, you should check
// if enough arguments are given.
if( arguments.isEmpty() )
throw new CmdLineException(parser,"No argument is given");
} catch( CmdLineException e ) {
// if there's a problem in the command line,
// you'll get this exception. this will report
// an error message.
System.err.println(e.getMessage());
System.err.println("java SampleMain [options...] arguments...");
// print the list of available options
parser.printUsage(System.err);
System.err.println();
// print option sample. This is useful some time
System.err.println(" Example: java SampleMain"+parser.printExample(ALL));
return;
}
// this will redirect the output to the specified output
System.out.println(out);
if( recursive )
System.out.println("-r flag is set");
if( data )
System.out.println("-custom flag is set");
System.out.println("-str was "+str);
if( num>=0 )
System.out.println("-n was "+num);
// access non-option arguments
System.out.println("other arguments are:");
for( String s : arguments )
System.out.println(s);
}
}
args4j-args4j-site-2.0.25/args4j/examples/SampleStarter.bat 0000664 0000000 0000000 00000002727 12166126245 0023427 0 ustar 00root root 0000000 0000000 @echo off
rem This shows how to use the Args4J-Starter class
set EXE=java -classpath ../target/classes;../target/examples -Dmainclass=SampleStarter org.kohsuke.args4j.Starter
rem Error: The system property 'mainclass' must contain the classname to start.
echo java -classpath ../target/classes;../target/examples org.kohsuke.args4j.Starter
java -classpath ../target/classes;../target/examples org.kohsuke.args4j.Starter
echo --------------------------------------------------------------------------
rem SampleStarter.run(String[])
rem - args.length: 0
rem SampleStarter: name='null' file='null'
echo %EXE%
%EXE%
echo --------------------------------------------------------------------------
rem "-wrong" is not a valid option
rem mainclass [options]
rem -file FILE : Sets the file
rem -name VAL : Sets the name
echo %EXE% -wrong
%EXE% -wrong
echo --------------------------------------------------------------------------
rem SampleStarter.run(String[])
rem - args.length: 2
rem - -name
rem - Test
rem SampleStarter: name='Test' file='null'
echo %EXE% -name Test
%EXE% -name Test
echo --------------------------------------------------------------------------
rem SampleStarter.run(String[])
rem - args.length: 4
rem - -file
rem - .
rem - -name
rem - Hello World
rem SampleStarter: name='Hello World' file='C:\cvs-repository\args4j\args4j\examples\.'
echo %EXE% -file . -name "Hello World"
%EXE% -file . -name "Hello World" args4j-args4j-site-2.0.25/args4j/examples/SampleStarter.java 0000664 0000000 0000000 00000002466 12166126245 0023602 0 ustar 00root root 0000000 0000000 import java.io.File;
import org.kohsuke.args4j.Option;
/**
* Show the use of the args4j Starter class.
* @author Jan Materne
* @see SampleStarter.bat
*/
public class SampleStarter {
@Option(name = "-name",usage="Sets the name")
public String name;
@Option(name = "-file",usage="Sets the file")
public File file;
/*
* Just do something ...
*/
public String toString() {
StringBuffer buffer = new StringBuffer();
buffer.append("SampleStarter:");
buffer.append(" name='");
buffer.append(name);
buffer.append("' file='");
buffer.append( (file!=null) ? file.getAbsoluteFile() : "null" );
buffer.append("'");
return buffer.toString();
}
/**
* First try is to run this run() method.
*/
public void xrun() {
System.out.println("SampleStarter.run()");
System.out.println(this);
}
/**
* If you want to get the args-Array from the command line
* use the signature run(String[] args). But then there must
* not be a run() because that is executed prior to this.
* @param args The arguments as specified on the command line
*/
public void run(String[] args) {
System.out.println("SampleStarter.run(String[])");
System.out.println("- args.length: " + args.length);
for (String arg : args) System.out.println(" - " + arg);
System.out.println(this);
}
}
args4j-args4j-site-2.0.25/args4j/lib/ 0000775 0000000 0000000 00000000000 12166126245 0017071 5 ustar 00root root 0000000 0000000 args4j-args4j-site-2.0.25/args4j/lib/ant.jar 0000664 0000000 0000000 00002566553 12166126245 0020377 0 ustar 00root root 0000000 0000000 PK
·Yé, META-INF/PK ·Yé, META-INF/MANIFEST.MF…ÁŠÂ0†ï¼C^ éîÁKo*
{pYPö>´S¤“ŒXß~›ˆ¢VØ[†ÿK¾²²&Ö¿“õT«Oó!Å2"0¶zq©Õ<@s@5'³™°¤—Rª•{%7ì½KˆMÆ'2¡€µz§!ØdŽÕ€±ÁôÕWFxôÂuÀå“R|CEQ]UQT£¢’b50Rn¬é†MšH±
ØØÎ6zgÙáãB¯ÀÃ'̦µ>Þoo}Çgˆ¨ÖþDmA¤ÈKaÄO¾÷Õ^Øgõ$üß-ÅPK‡»TYÛ Ì PK
ƒYé, org/PK
ƒYé, org/apache/PK
‘Yé, org/apache/tools/PK
¶Yé, org/apache/tools/ant/PK
„Yé, org/apache/tools/ant/filters/PK
„Yé, " org/apache/tools/ant/filters/util/PK
„Yé, org/apache/tools/ant/helper/PK
„Yé, org/apache/tools/ant/input/PK
”Yé, org/apache/tools/ant/listener/PK
”Yé, org/apache/tools/ant/taskdefs/PK
„Yé, ( org/apache/tools/ant/taskdefs/compilers/PK
„Yé, ( org/apache/tools/ant/taskdefs/condition/PK
…Yé, % org/apache/tools/ant/taskdefs/cvslib/PK
…Yé, $ org/apache/tools/ant/taskdefs/email/PK
ŒYé, # org/apache/tools/ant/taskdefs/rmic/PK
”Yé, org/apache/tools/ant/types/PK
‘Yé, % org/apache/tools/ant/types/selectors/PK
‘Yé, org/apache/tools/ant/util/PK
„Yé, ! org/apache/tools/ant/util/facade/PK
¶Yé, ! org/apache/tools/ant/util/regexp/PK
‘Yé, org/apache/tools/bzip2/PK
‘Yé, org/apache/tools/mail/PK
‘Yé, org/apache/tools/tar/PK
‘Yé, org/apache/tools/zip/PK ƒYé, = org/apache/tools/ant/AntClassLoader$ResourceEnumeration.classTßOWþîÎÀ”u@DEì/R»,è€ÚRÔªHWLDIôÉa÷ÊŽ™½Cff4Úö¹¯mŸÛ´iyÑDQÓ¤¦}ñÁ?JýîÝÁ¥ ínöž{Ï=ç;ß=?öÅË?žÁÂAøEta¤8¬—#z9Zäò©Þ}VÄ(>/bÇׇ¾Ðç“N98í`\ÀMd7“ªœ R Ç¿|xQ ¼Ù, ÕÂqm‹AVŸŒdCª,¨š\ú*¹”]ÊýºZ¾JfÞ•K>ýÚ³z˜ö|ìÇÉ‚,Õºô²8ŽR/P™7®²‰(HS?j2¡CÇì-•ÕeVé|"TavRàXiSÞÿ$>0'`OÄ5RÛê‡JÎ4ó2¹ÌGæ¡q5ˆæ‚$Ôç\ikÂÛWß4©š
™Y+¾¶¢”LLHI£±Í°êß ‰ï´•IöÖzNlj\M€U¸&°Eç5W
ì(
¼õ¶‹ó7e5#†•H^vßUmfMˆÁ‡[Í$èÔ•›ˆ‹±2Xy‰ÂØ;F’(BþkuÎ4è6¹T•‹9ë⬉ =™£µ=¤q]ìÆ€‹^ìrÑm.z°ÝEIëv`§ƒ3.&ð¥ƒIg1ÅŒ¾MÆÅ9°§öo‚‹‹ó¸ 0ú?À¬Ï§ÀN£jfaä1ݘÏÚ LMPÊ”½>ÌnÛ\ÃæU5!çÈ!Öн^Ç¡N×,K•
›a5þˆŽå¿Ìj+l0>ëÇÙNÃÛþª`/ÿ`ºÀ†‚.6@ÉzÉjSöèN MôÇæo7Þåù=înÐÊ¢ì+?(® PZU¶V`SÕöÐà¼Ïµm\ï wñkFø†¨ßâj÷¶0ð!>21úòˆz·œ
ÜïGs”Rßu–¡ý9{¶uïM vsùv[†90Gr)Êå
âkªƒÞ@t>ß“ñäû£êm™çPmó ³£A89èŸôÓžÓÂ_Æ0‘OáPØñÎ_è˜Öš!.ÖSýòU^Ø×™(ò×Wvîðî/pŸ¿ú['´ý!ÁÛp#Þ¢w€¤€Ÿxú™7¿2U¿19¿Ób‡©›Â=ø¸oh—MÁ¦sÚN\ÙÐÞÅï †¨áé ñüzÆf˜ŠÔw2Ù{Px
PKb7_öf ª PK ƒYé, ) org/apache/tools/ant/AntClassLoader.class:xÕÕçܙݙl&!, @€°I ˆ
& ¯ J7É@ÂnÜÝ PµjE¡µ>¨Ô‚úB¤ÚŠ( Å
>jZkÖªomÕÖjÿúŸsgvv6lþý?¾Ìܹ÷ÜsÏûœ{–gþóð!P \,óÁ^<7ƒçùàr\¥á74ú`&6úÀƒM>ø16khú ›l5?Öð£…!~¬Õpr,€V~¬çG˜ÛøŒó}”gb>Œc»Ž|xnäÇ&جá7ù}¡Žñûb¿ÅïKüR/óÁP¢¿—óc‹ŽWèx%/nõÁÜæƒKð;¼ò]ž»JÃïù`<3Wkx&b3\«ãu>Üλ&â÷3ñzÜÁ€?àÑ
<÷C¦t§†»|x#Þ¤áÍ:ޢ㘖KY·òè6oç÷ü¸“»u¼KÇ=<¼[ǽ:þ˜‡÷ðŽ{ùñ>å§ü¸û4¼ßKp?î
ôAƒõq€GüèÔð Ž1=ëØ¥ã#:>Ê$bŽ3ÖÇt|\Ç#>áƒþLÃ'u<Êø‰‹uؤá1ŸÒñiÖè3:>Ë{~λŸÓñþÒ°X.À_ùð×ø<^`%ý†/òã·:¾¤áï|ø2þ^ÃW|pþAÃ?jøª¶àkþIÃ×5ü3Ÿ@‡n³læ
ßdþßâÇ_øñWßöÊ*ü5¾Ã0ïòã=fùZæöÖÛûú?Äøðuü›³þ®ã'<õ©ŽŸñû:ž’AÄü“?>×ñ_:~Áp_jøo
ÿGÃÿ ô[hÆ"íÑ&sN¸}½
ÆC‘0‚Q›ÑYÁXÌŒ!dV-ž;wÎÂUõÕËç `5BÖ¬H8†ãK‚í¦PÙmÁxˬÈú¶HØÇiŸ¿fmpC°¢=jXb6Å#Ñ©Z[4²–>†ÔD¢k*‚mÁ¦³"‰´Æ*cÅk@3Û‚QÂ478.§#b›bqsý‚`Óºà&-»5l6£É _hM85«‚1Ák!@`QÒ¯©lÕÈmt†¾9Ô67ÔÊ[ó\䞌µÄƒ&øcÁ
f3q77ƹ¡XÊL=Ã<טqb N$gGÖC$ÏA®ã£æêVZ¨5ã-‘fB_Ðl®…MIÖñ[óšx¾˜÷óþb ‡Ð·;G„)£~S8ÞbÆCMý»ï«GCá5$ÿ`4ÜT\E§E`pŒµJ**¶TT,UTL**žŽ§À?ì‚„º½§‡Â¡øt„ª’+>ýj|S›«X@&6uÌuV¤™4ܧ†DW×¾¾ÑŒ.bu±ÑEš‚K‚ÑÛ“j¼%DB™u*;,HÉ›3°^É!*‚Mñö`ë¬ä.ƒ_sZÍõ–'ô[áR—¥ Ú†!ú3{$«ª=ÔÚ¹T£Œ¡$ÞU‰ 0;ÒJ³]`¹SÍüF»òTƒÑ5ÝÓ¶³¨„â$Šò4±°:¼Šß"B`ÆSÇ&f+.ÏW‡ÝsVSª¸±ƒÝò1›Ú9º+¡ˆ™c槸űÄ>Zkj5ƒáö6òþF®/êãÁ¨ÌÅ=ä«
Ù@ʬà17ȼ×CY䂦³å s)áÄZøˆ¬¸”Šsd¶õÈŒcëœeƒ¿\»íê &²f
çPŠ˜G<ׄ£Tí±ÛêmÉ{@°‰<9V