|
What this is
Other links
The source code/* * Sun Public License Notice * * The contents of this file are subject to the Sun Public License * Version 1.0 (the "License"). You may not use this file except in * compliance with the License. A copy of the License is available at * http://www.sun.com/ * * The Original Code is NetBeans. The Initial Developer of the Original * Code is Sun Microsystems, Inc. Portions Copyright 1997-2003 Sun * Microsystems, Inc. All Rights Reserved. */ package org.netbeans.nbbuild; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.net.URL; import java.net.URLClassLoader; import java.util.ArrayList; import java.util.Iterator; import java.util.jar.JarFile; // IMPORTANT! You may need to mount ant.jar before this class will // compile. So mount the JAR modules/ext/ant-1.4.1.jar (NOT modules/ant.jar) // from your IDE installation directory in your Filesystems before // continuing to ensure that it is in your classpath. import org.apache.tools.ant.AntClassLoader; import org.apache.tools.ant.Project; import org.apache.tools.ant.types.Path; import org.apache.tools.ant.types.FileSet; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.taskdefs.MatchingTask; import org.apache.tools.ant.DirectoryScanner; import java.util.Vector; /** * @author Jaroslav Tulach */ public class NbPatchClass extends MatchingTask { /* Path to library containing the patch method */ private Path patchPath; public Path createClasspath() { if (patchPath == null) { patchPath = new Path(getProject()); } return patchPath.createPath(); } /* Name of class with patch method */ private String patchClass = "org.netbeans.PatchByteCode"; //NOI18N public void setPatchClass (String f) { patchClass = f; } /** Name of the method to call. Must have byte[] array argument and return the same */ private String patchMethod = "patch"; //NOI18N public void setPatchMethod (String f) { patchMethod = f; } /** Source JAR to extract. */ public void setSource (File f) { if (f.exists()) { log ("Adding source file " + f.getAbsolutePath(), Project.MSG_VERBOSE); FileSet xfs = new FileSet(); xfs.setDir(f.getParentFile()); log("Setting FileSet's dir to \"" + f.getParentFile().getAbsolutePath() + "\"", Project.MSG_DEBUG ); xfs.setIncludes(f.getName()); log("Setting FileSet's include to \"" + f.getName() + "\"",Project.MSG_DEBUG ); DirectoryScanner ds = xfs.getDirectoryScanner(project); String[] files = ds.getIncludedFiles(); if (files.length < 1) { log ("FileSet is empty, source doesn't doesn't exist (" + f.getParentFile().getAbsolutePath() + ")", Project.MSG_VERBOSE); } else { log ("Adding FileSet with " + files.length + " file(s)", Project.MSG_VERBOSE); addFileset(xfs); } } } /* Base dir to find classes relative to */ private File targetdir; public void setTargetdir (File f) { targetdir = f; } /** * Adds a set of files (nested fileset attribute). */ private Vector filesets = new Vector (); public void addFileset(FileSet set) { log ("Adding new FileSet", Project.MSG_DEBUG); filesets.addElement(set); } public void execute() throws BuildException { if (targetdir == null) { throw new BuildException ("Attribute targetdir must be specified"); } boolean fs_empty = true; for (int i=0; i |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.