You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by ni...@apache.org on 2007/04/25 16:57:24 UTC
svn commit: r532377 [3/3] - in /jakarta/commons/proper/jci/trunk:
compilers/eclipse/src/main/java/org/apache/commons/jci/compilers/
compilers/eclipse/src/test/java/org/apache/commons/jci/compilers/
compilers/groovy/src/main/java/org/apache/commons/jci/...
Modified: jakarta/commons/proper/jci/trunk/examples/src/main/java/org/apache/commons/jci/examples/commandline/CommandlineCompiler.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/jci/trunk/examples/src/main/java/org/apache/commons/jci/examples/commandline/CommandlineCompiler.java?view=diff&rev=532377&r1=532376&r2=532377
==============================================================================
--- jakarta/commons/proper/jci/trunk/examples/src/main/java/org/apache/commons/jci/examples/commandline/CommandlineCompiler.java (original)
+++ jakarta/commons/proper/jci/trunk/examples/src/main/java/org/apache/commons/jci/examples/commandline/CommandlineCompiler.java Wed Apr 25 07:57:21 2007
@@ -48,137 +48,137 @@
public static void main( String[] args ) throws Exception {
- final Options options = new Options();
-
- options.addOption(
- OptionBuilder.withArgName("a.jar:b.jar")
- .hasArg()
- .withValueSeparator( ':' )
- .withDescription("Specify where to find user class files")
- .create( "classpath" ));
-
- options.addOption(
- OptionBuilder.withArgName("release")
- .hasArg()
- .withDescription("Provide source compatibility with specified release")
- .create( "source" ));
-
- options.addOption(
- OptionBuilder.withArgName("release")
- .hasArg()
- .withDescription("Generate class files for specific VM version")
- .create( "target" ));
-
- options.addOption(
- OptionBuilder.withArgName("path")
- .hasArg()
- .withDescription("Specify where to find input source files")
- .create( "sourcepath" ));
-
- options.addOption(
- OptionBuilder.withArgName("directory")
- .hasArg()
- .withDescription("Specify where to place generated class files")
- .create( "d" ));
-
- options.addOption(
- OptionBuilder.withArgName("num")
- .hasArg()
- .withDescription("Stop compilation after these number of errors")
- .create( "Xmaxerrs" ));
-
- options.addOption(
- OptionBuilder.withArgName("num")
- .hasArg()
- .withDescription("Stop compilation after these number of warning")
- .create( "Xmaxwarns" ));
-
- options.addOption(
- OptionBuilder.withDescription("Generate no warnings")
- .create( "nowarn" ));
-
-// final HelpFormatter formatter = new HelpFormatter();
-// formatter.printHelp("jci", options);
-
- final CommandLineParser parser = new GnuParser();
- final CommandLine cmd = parser.parse(options, args, true);
-
- ClassLoader classloader = CommandlineCompiler.class.getClassLoader();
- File sourcepath = new File(".");
- File targetpath = new File(".");
- int maxerrs = 10;
- int maxwarns = 10;
- final boolean nowarn = cmd.hasOption("nowarn");
-
-
- final JavaCompiler compiler = new JavaCompilerFactory().createCompiler("eclipse");
- final JavaCompilerSettings settings = compiler.createDefaultSettings();
-
-
- for (Iterator it = cmd.iterator(); it.hasNext();) {
- final Option option = (Option) it.next();
-
- if ("classpath".equals(option.getOpt())) {
- final String[] values = option.getValues();
- final URL[] urls = new URL[values.length];
- for (int i = 0; i < urls.length; i++) {
- urls[i] = new File(values[i]).toURL();
- }
- classloader = new URLClassLoader(urls);
- } else if ("source".equals(option.getOpt())) {
- settings.setSourceVersion(option.getValue());
- } else if ("target".equals(option.getOpt())) {
- settings.setTargetVersion(option.getValue());
- } else if ("sourcepath".equals(option.getOpt())) {
- sourcepath = new File(option.getValue());
- } else if ("d".equals(option.getOpt())) {
- targetpath = new File(option.getValue());
- } else if ("Xmaxerrs".equals(option.getOpt())) {
- maxerrs = Integer.parseInt(option.getValue());
- } else if ("Xmaxwarns".equals(option.getOpt())) {
- maxwarns = Integer.parseInt(option.getValue());
- }
- }
-
+ final Options options = new Options();
+
+ options.addOption(
+ OptionBuilder.withArgName("a.jar:b.jar")
+ .hasArg()
+ .withValueSeparator( ':' )
+ .withDescription("Specify where to find user class files")
+ .create( "classpath" ));
+
+ options.addOption(
+ OptionBuilder.withArgName("release")
+ .hasArg()
+ .withDescription("Provide source compatibility with specified release")
+ .create( "source" ));
+
+ options.addOption(
+ OptionBuilder.withArgName("release")
+ .hasArg()
+ .withDescription("Generate class files for specific VM version")
+ .create( "target" ));
+
+ options.addOption(
+ OptionBuilder.withArgName("path")
+ .hasArg()
+ .withDescription("Specify where to find input source files")
+ .create( "sourcepath" ));
+
+ options.addOption(
+ OptionBuilder.withArgName("directory")
+ .hasArg()
+ .withDescription("Specify where to place generated class files")
+ .create( "d" ));
+
+ options.addOption(
+ OptionBuilder.withArgName("num")
+ .hasArg()
+ .withDescription("Stop compilation after these number of errors")
+ .create( "Xmaxerrs" ));
+
+ options.addOption(
+ OptionBuilder.withArgName("num")
+ .hasArg()
+ .withDescription("Stop compilation after these number of warning")
+ .create( "Xmaxwarns" ));
+
+ options.addOption(
+ OptionBuilder.withDescription("Generate no warnings")
+ .create( "nowarn" ));
+
+// final HelpFormatter formatter = new HelpFormatter();
+// formatter.printHelp("jci", options);
+
+ final CommandLineParser parser = new GnuParser();
+ final CommandLine cmd = parser.parse(options, args, true);
+
+ ClassLoader classloader = CommandlineCompiler.class.getClassLoader();
+ File sourcepath = new File(".");
+ File targetpath = new File(".");
+ int maxerrs = 10;
+ int maxwarns = 10;
+ final boolean nowarn = cmd.hasOption("nowarn");
+
+
+ final JavaCompiler compiler = new JavaCompilerFactory().createCompiler("eclipse");
+ final JavaCompilerSettings settings = compiler.createDefaultSettings();
+
+
+ for (Iterator it = cmd.iterator(); it.hasNext();) {
+ final Option option = (Option) it.next();
+
+ if ("classpath".equals(option.getOpt())) {
+ final String[] values = option.getValues();
+ final URL[] urls = new URL[values.length];
+ for (int i = 0; i < urls.length; i++) {
+ urls[i] = new File(values[i]).toURL();
+ }
+ classloader = new URLClassLoader(urls);
+ } else if ("source".equals(option.getOpt())) {
+ settings.setSourceVersion(option.getValue());
+ } else if ("target".equals(option.getOpt())) {
+ settings.setTargetVersion(option.getValue());
+ } else if ("sourcepath".equals(option.getOpt())) {
+ sourcepath = new File(option.getValue());
+ } else if ("d".equals(option.getOpt())) {
+ targetpath = new File(option.getValue());
+ } else if ("Xmaxerrs".equals(option.getOpt())) {
+ maxerrs = Integer.parseInt(option.getValue());
+ } else if ("Xmaxwarns".equals(option.getOpt())) {
+ maxwarns = Integer.parseInt(option.getValue());
+ }
+ }
+
final ResourceReader reader = new FileResourceReader(sourcepath);
final ResourceStore store = new FileResourceStore(targetpath);
final int maxErrors = maxerrs;
final int maxWarnings = maxwarns;
compiler.setCompilationProblemHandler(new CompilationProblemHandler() {
- int errors = 0;
- int warnings = 0;
- public boolean handle(final CompilationProblem pProblem) {
-
- if (pProblem.isError()) {
- System.err.println(pProblem);
-
- errors++;
-
- if (errors >= maxErrors) {
- return false;
- }
- } else {
- if (!nowarn) {
- System.err.println(pProblem);
- }
-
- warnings++;
-
- if (warnings >= maxWarnings) {
- return false;
- }
- }
-
- return true;
- }
+ int errors = 0;
+ int warnings = 0;
+ public boolean handle(final CompilationProblem pProblem) {
+
+ if (pProblem.isError()) {
+ System.err.println(pProblem);
+
+ errors++;
+
+ if (errors >= maxErrors) {
+ return false;
+ }
+ } else {
+ if (!nowarn) {
+ System.err.println(pProblem);
+ }
+
+ warnings++;
+
+ if (warnings >= maxWarnings) {
+ return false;
+ }
+ }
+
+ return true;
+ }
});
final String[] resource = cmd.getArgs();
for (int i = 0; i < resource.length; i++) {
- System.out.println("compiling " + resource[i]);
- }
+ System.out.println("compiling " + resource[i]);
+ }
final CompilationResult result = compiler.compile(resource, reader, store, classloader);
Modified: jakarta/commons/proper/jci/trunk/examples/src/main/java/org/apache/commons/jci/examples/configuration/Configurable.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/jci/trunk/examples/src/main/java/org/apache/commons/jci/examples/configuration/Configurable.java?view=diff&rev=532377&r1=532376&r2=532377
==============================================================================
--- jakarta/commons/proper/jci/trunk/examples/src/main/java/org/apache/commons/jci/examples/configuration/Configurable.java (original)
+++ jakarta/commons/proper/jci/trunk/examples/src/main/java/org/apache/commons/jci/examples/configuration/Configurable.java Wed Apr 25 07:57:21 2007
@@ -20,7 +20,7 @@
import java.util.Properties;
public interface Configurable {
-
- void configure( Properties properties ) throws ConfigurationException;
+
+ void configure( Properties properties ) throws ConfigurationException;
}
Modified: jakarta/commons/proper/jci/trunk/examples/src/main/java/org/apache/commons/jci/examples/configuration/ConfigurationException.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/jci/trunk/examples/src/main/java/org/apache/commons/jci/examples/configuration/ConfigurationException.java?view=diff&rev=532377&r1=532376&r2=532377
==============================================================================
--- jakarta/commons/proper/jci/trunk/examples/src/main/java/org/apache/commons/jci/examples/configuration/ConfigurationException.java (original)
+++ jakarta/commons/proper/jci/trunk/examples/src/main/java/org/apache/commons/jci/examples/configuration/ConfigurationException.java Wed Apr 25 07:57:21 2007
@@ -19,6 +19,6 @@
public class ConfigurationException extends Exception {
- private static final long serialVersionUID = 1L;
+ private static final long serialVersionUID = 1L;
}
Modified: jakarta/commons/proper/jci/trunk/examples/src/main/java/org/apache/commons/jci/examples/configuration/ConfigurationReloading.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/jci/trunk/examples/src/main/java/org/apache/commons/jci/examples/configuration/ConfigurationReloading.java?view=diff&rev=532377&r1=532376&r2=532377
==============================================================================
--- jakarta/commons/proper/jci/trunk/examples/src/main/java/org/apache/commons/jci/examples/configuration/ConfigurationReloading.java (original)
+++ jakarta/commons/proper/jci/trunk/examples/src/main/java/org/apache/commons/jci/examples/configuration/ConfigurationReloading.java Wed Apr 25 07:57:21 2007
@@ -35,57 +35,57 @@
*/
public final class ConfigurationReloading {
- private final FilesystemAlterationMonitor fam = new FilesystemAlterationMonitor();
-
- private void run(String[] args) {
-
- final File configFile = new File("some.properties");
-
- System.out.println("Watching " + configFile.getAbsolutePath());
-
- final Collection configurables = new ArrayList();
-
- final FilesystemAlterationListener listener = new FileChangeListener() {
- public void onStop(FilesystemAlterationObserver pObserver) {
- super.onStop(pObserver);
-
- if (hasChanged()) {
- System.out.println("Configuration change detected " + configFile);
-
- final Properties props = new Properties();
- try {
-
- props.load(new FileInputStream(configFile));
-
- System.out.println("Notifying about configuration change " + configFile);
-
- for (Iterator it = configurables.iterator(); it.hasNext();) {
- final Configurable configurable = (Configurable) it.next();
- configurable.configure(props);
- }
-
- } catch (Exception e) {
- System.err.println("Failed to load configuration " + configFile);
- }
-
- }
- }
- };
-
- fam.addListener(configFile, listener);
+ private final FilesystemAlterationMonitor fam = new FilesystemAlterationMonitor();
+
+ private void run(String[] args) {
+
+ final File configFile = new File("some.properties");
+
+ System.out.println("Watching " + configFile.getAbsolutePath());
+
+ final Collection configurables = new ArrayList();
+
+ final FilesystemAlterationListener listener = new FileChangeListener() {
+ public void onStop(FilesystemAlterationObserver pObserver) {
+ super.onStop(pObserver);
+
+ if (hasChanged()) {
+ System.out.println("Configuration change detected " + configFile);
+
+ final Properties props = new Properties();
+ try {
+
+ props.load(new FileInputStream(configFile));
+
+ System.out.println("Notifying about configuration change " + configFile);
+
+ for (Iterator it = configurables.iterator(); it.hasNext();) {
+ final Configurable configurable = (Configurable) it.next();
+ configurable.configure(props);
+ }
+
+ } catch (Exception e) {
+ System.err.println("Failed to load configuration " + configFile);
+ }
+
+ }
+ }
+ };
+
+ fam.addListener(configFile, listener);
fam.start();
configurables.add(new Something());
-
- while(true) {
- try {
- Thread.sleep(1000);
- } catch (InterruptedException e) {
- }
- }
- }
-
- public static void main(String[] args) {
- new ConfigurationReloading().run(args);
- }
+
+ while(true) {
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ }
+ }
+ }
+
+ public static void main(String[] args) {
+ new ConfigurationReloading().run(args);
+ }
}
Modified: jakarta/commons/proper/jci/trunk/examples/src/main/java/org/apache/commons/jci/examples/configuration/Something.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/jci/trunk/examples/src/main/java/org/apache/commons/jci/examples/configuration/Something.java?view=diff&rev=532377&r1=532376&r2=532377
==============================================================================
--- jakarta/commons/proper/jci/trunk/examples/src/main/java/org/apache/commons/jci/examples/configuration/Something.java (original)
+++ jakarta/commons/proper/jci/trunk/examples/src/main/java/org/apache/commons/jci/examples/configuration/Something.java Wed Apr 25 07:57:21 2007
@@ -21,8 +21,8 @@
public class Something implements Configurable {
- public void configure( Properties properties ) throws ConfigurationException {
- System.out.println("Configuration changed");
- }
+ public void configure( Properties properties ) throws ConfigurationException {
+ System.out.println("Configuration changed");
+ }
}
Modified: jakarta/commons/proper/jci/trunk/examples/src/main/java/org/apache/commons/jci/examples/serverpages/JspGenerator.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/jci/trunk/examples/src/main/java/org/apache/commons/jci/examples/serverpages/JspGenerator.java?view=diff&rev=532377&r1=532376&r2=532377
==============================================================================
--- jakarta/commons/proper/jci/trunk/examples/src/main/java/org/apache/commons/jci/examples/serverpages/JspGenerator.java (original)
+++ jakarta/commons/proper/jci/trunk/examples/src/main/java/org/apache/commons/jci/examples/serverpages/JspGenerator.java Wed Apr 25 07:57:21 2007
@@ -33,134 +33,134 @@
*/
public final class JspGenerator {
- private String quote( final String s ) {
-
- final StringBuffer sb = new StringBuffer();
- final char[] input = s.toCharArray();
-
- for (int i = 0; i < input.length; i++) {
- final char c = input[i];
- if (c == '"') {
- sb.append('\\');
- }
- if (c == '\\') {
- sb.append('\\');
- }
-
- if (c == '\n') {
- sb.append("\");\n").append(" out.write(\"");
- continue;
- }
- sb.append(c);
- }
-
- return sb.toString();
- }
-
- private void wrap( final StringBuffer pInput, final Writer pOutput ) throws IOException {
-
- pOutput.append(" out.write(\"");
-
- pOutput.append(quote(pInput.toString()));
-
- pOutput.append("\");").append('\n');
- }
-
- public byte[] generateJavaSource( final String pResourceName, final File pFile ) {
-
- try {
- final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
- final Reader input = new InputStreamReader(new FileInputStream(pFile));
- final Writer output = new OutputStreamWriter(outputStream);
-
- final int p = pResourceName.lastIndexOf('/');
-
- final String className;
- final String packageName;
-
- if (p < 0) {
- className = ConversionUtils.stripExtension(pResourceName);
- packageName = "";
- } else {
- className = ConversionUtils.stripExtension(pResourceName.substring(p+1));
- packageName = pResourceName.substring(0, p).replace('/', '.');
- output.append("package ").append(packageName).append(";").append('\n');
- }
-
-
- output.append("import java.io.PrintWriter;").append('\n');
- output.append("import java.io.IOException;").append('\n');
- output.append("import javax.servlet.http.HttpServlet;").append('\n');
- output.append("import javax.servlet.http.HttpServletRequest;").append('\n');
- output.append("import javax.servlet.http.HttpServletResponse;").append('\n');
- output.append("import javax.servlet.ServletException;").append('\n');
- output.append("public class ").append(className).append(" extends HttpServlet {").append('\n');
- output.append(" protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {").append('\n');
- output.append(" final PrintWriter out = response.getWriter();").append('\n');
-
-
- final char[] open = "<?".toCharArray();
- final char[] close = "?>".toCharArray();
-
- StringBuffer sb = new StringBuffer();
- char[] watch = open;
- int w = 0;
- while(true) {
- int c = input.read();
-
- if (c < 0) {
- break;
- }
-
- if (c == watch[w]) {
- w++;
- if (watch.length == w) {
- if (watch == open) {
- // found open
-
- wrap(sb, output);
-
- sb = new StringBuffer();
- watch = close;
- } else if (watch == close) {
- // found close
-
- // <? ... ?> is java
- output.append(sb.toString());
-
- sb = new StringBuffer();
- watch = open;
- }
- w = 0;
- }
- } else {
- if (w > 0) {
- sb.append(watch, 0, w);
- }
-
- sb.append((char)c);
-
- w = 0;
- }
- }
-
- if (watch == open) {
- wrap(sb, output);
- }
-
-
- output.append(" out.close();").append('\n');
- output.append(" out.flush();").append('\n');
- output.append(" }").append('\n');
- output.append("}").append('\n');
-
-
- output.close();
-
- return outputStream.toByteArray();
- } catch (IOException e) {
- return null;
- }
- }
+ private String quote( final String s ) {
+
+ final StringBuffer sb = new StringBuffer();
+ final char[] input = s.toCharArray();
+
+ for (int i = 0; i < input.length; i++) {
+ final char c = input[i];
+ if (c == '"') {
+ sb.append('\\');
+ }
+ if (c == '\\') {
+ sb.append('\\');
+ }
+
+ if (c == '\n') {
+ sb.append("\");\n").append(" out.write(\"");
+ continue;
+ }
+ sb.append(c);
+ }
+
+ return sb.toString();
+ }
+
+ private void wrap( final StringBuffer pInput, final Writer pOutput ) throws IOException {
+
+ pOutput.append(" out.write(\"");
+
+ pOutput.append(quote(pInput.toString()));
+
+ pOutput.append("\");").append('\n');
+ }
+
+ public byte[] generateJavaSource( final String pResourceName, final File pFile ) {
+
+ try {
+ final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+ final Reader input = new InputStreamReader(new FileInputStream(pFile));
+ final Writer output = new OutputStreamWriter(outputStream);
+
+ final int p = pResourceName.lastIndexOf('/');
+
+ final String className;
+ final String packageName;
+
+ if (p < 0) {
+ className = ConversionUtils.stripExtension(pResourceName);
+ packageName = "";
+ } else {
+ className = ConversionUtils.stripExtension(pResourceName.substring(p+1));
+ packageName = pResourceName.substring(0, p).replace('/', '.');
+ output.append("package ").append(packageName).append(";").append('\n');
+ }
+
+
+ output.append("import java.io.PrintWriter;").append('\n');
+ output.append("import java.io.IOException;").append('\n');
+ output.append("import javax.servlet.http.HttpServlet;").append('\n');
+ output.append("import javax.servlet.http.HttpServletRequest;").append('\n');
+ output.append("import javax.servlet.http.HttpServletResponse;").append('\n');
+ output.append("import javax.servlet.ServletException;").append('\n');
+ output.append("public class ").append(className).append(" extends HttpServlet {").append('\n');
+ output.append(" protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {").append('\n');
+ output.append(" final PrintWriter out = response.getWriter();").append('\n');
+
+
+ final char[] open = "<?".toCharArray();
+ final char[] close = "?>".toCharArray();
+
+ StringBuffer sb = new StringBuffer();
+ char[] watch = open;
+ int w = 0;
+ while(true) {
+ int c = input.read();
+
+ if (c < 0) {
+ break;
+ }
+
+ if (c == watch[w]) {
+ w++;
+ if (watch.length == w) {
+ if (watch == open) {
+ // found open
+
+ wrap(sb, output);
+
+ sb = new StringBuffer();
+ watch = close;
+ } else if (watch == close) {
+ // found close
+
+ // <? ... ?> is java
+ output.append(sb.toString());
+
+ sb = new StringBuffer();
+ watch = open;
+ }
+ w = 0;
+ }
+ } else {
+ if (w > 0) {
+ sb.append(watch, 0, w);
+ }
+
+ sb.append((char)c);
+
+ w = 0;
+ }
+ }
+
+ if (watch == open) {
+ wrap(sb, output);
+ }
+
+
+ output.append(" out.close();").append('\n');
+ output.append(" out.flush();").append('\n');
+ output.append(" }").append('\n');
+ output.append("}").append('\n');
+
+
+ output.close();
+
+ return outputStream.toByteArray();
+ } catch (IOException e) {
+ return null;
+ }
+ }
}
Modified: jakarta/commons/proper/jci/trunk/examples/src/main/java/org/apache/commons/jci/examples/serverpages/JspReader.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/jci/trunk/examples/src/main/java/org/apache/commons/jci/examples/serverpages/JspReader.java?view=diff&rev=532377&r1=532376&r2=532377
==============================================================================
--- jakarta/commons/proper/jci/trunk/examples/src/main/java/org/apache/commons/jci/examples/serverpages/JspReader.java (original)
+++ jakarta/commons/proper/jci/trunk/examples/src/main/java/org/apache/commons/jci/examples/serverpages/JspReader.java Wed Apr 25 07:57:21 2007
@@ -26,34 +26,34 @@
*/
public final class JspReader implements ResourceReader {
- private final Map sources;
- private final ResourceReader reader;
-
-
- public JspReader( final Map pSources, final ResourceReader pReader ) {
- reader = pReader;
- sources = pSources;
- }
-
-
- public byte[] getBytes( String pResourceName ) {
-
- final byte[] bytes = (byte[]) sources.get(pResourceName);
-
- if (bytes != null) {
- return bytes;
- }
-
- return reader.getBytes(pResourceName);
- }
-
- public boolean isAvailable( String pResourceName ) {
-
- if (sources.containsKey(pResourceName)) {
- return true;
- }
-
- return reader.isAvailable(pResourceName);
- }
+ private final Map sources;
+ private final ResourceReader reader;
+
+
+ public JspReader( final Map pSources, final ResourceReader pReader ) {
+ reader = pReader;
+ sources = pSources;
+ }
+
+
+ public byte[] getBytes( String pResourceName ) {
+
+ final byte[] bytes = (byte[]) sources.get(pResourceName);
+
+ if (bytes != null) {
+ return bytes;
+ }
+
+ return reader.getBytes(pResourceName);
+ }
+
+ public boolean isAvailable( String pResourceName ) {
+
+ if (sources.containsKey(pResourceName)) {
+ return true;
+ }
+
+ return reader.isAvailable(pResourceName);
+ }
}
Modified: jakarta/commons/proper/jci/trunk/examples/src/main/java/org/apache/commons/jci/examples/serverpages/ServerPageServlet.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/jci/trunk/examples/src/main/java/org/apache/commons/jci/examples/serverpages/ServerPageServlet.java?view=diff&rev=532377&r1=532376&r2=532377
==============================================================================
--- jakarta/commons/proper/jci/trunk/examples/src/main/java/org/apache/commons/jci/examples/serverpages/ServerPageServlet.java (original)
+++ jakarta/commons/proper/jci/trunk/examples/src/main/java/org/apache/commons/jci/examples/serverpages/ServerPageServlet.java Wed Apr 25 07:57:21 2007
@@ -53,194 +53,194 @@
*/
public final class ServerPageServlet extends HttpServlet {
- private static final long serialVersionUID = 1L;
+ private static final long serialVersionUID = 1L;
- private final ReloadingClassLoader classloader = new ReloadingClassLoader(ServerPageServlet.class.getClassLoader());
- private FilesystemAlterationMonitor fam;
- private CompilingListener jspListener;
-
- private Map servletsByClassname = new HashMap();
-
- public void init() throws ServletException {
- super.init();
-
- final File serverpagesDir = new File(getServletContext().getRealPath("/") + getInitParameter("serverpagesDir"));
-
- log("Monitoring serverpages in " + serverpagesDir);
-
- final TransactionalResourceStore store = new TransactionalResourceStore(new MemoryResourceStore()) {
-
- private Set newClasses;
- private Map newServletsByClassname;
-
- public void onStart() {
- super.onStart();
-
- newClasses = new HashSet();
- newServletsByClassname = new HashMap(servletsByClassname);
- }
-
- public void onStop() {
- super.onStop();
-
- boolean reload = false;
- for (Iterator it = newClasses.iterator(); it.hasNext();) {
- final String clazzName = (String) it.next();
-
- try {
- final Class clazz = classloader.loadClass(clazzName);
-
- if (!HttpServlet.class.isAssignableFrom(clazz)) {
- log(clazzName + " is not a servlet");
- continue;
- }
-
- // create new instance of jsp page
- final HttpServlet servlet = (HttpServlet) clazz.newInstance();
- newServletsByClassname.put(clazzName, servlet);
-
- reload = true;
- } catch(Exception e) {
- log("", e);
- }
- }
-
- if (reload) {
- log("Activating new map of servlets "+ newServletsByClassname);
- servletsByClassname = newServletsByClassname;
- }
- }
-
- public void write(String pResourceName, byte[] pResourceData) {
- super.write(pResourceName, pResourceData);
-
- if (pResourceName.endsWith(".class")) {
-
- // compiler writes a new class, remember the classes to reload
- newClasses.add(pResourceName.replace('/', '.').substring(0, pResourceName.length() - ".class".length()));
- }
- }
-
- };
-
- // listener that generates the java code from the jsp page and provides that to the compiler
- jspListener = new CompilingListener(new JavaCompilerFactory().createCompiler("eclipse"), store) {
-
- private final JspGenerator transformer = new JspGenerator();
- private final Map sources = new HashMap();
- private final Set resourceToCompile = new HashSet();
-
- public void onStart(FilesystemAlterationObserver pObserver) {
- super.onStart(pObserver);
-
- resourceToCompile.clear();
- }
-
-
- public void onFileChange(File pFile) {
- if (pFile.getName().endsWith(".jsp")) {
- final String resourceName = ConversionUtils.stripExtension(getSourceNameFromFile(observer, pFile)) + ".java";
-
- log("Updating " + resourceName);
-
- sources.put(resourceName, transformer.generateJavaSource(resourceName, pFile));
-
- resourceToCompile.add(resourceName);
- }
- super.onFileChange(pFile);
- }
-
-
- public void onFileCreate(File pFile) {
- if (pFile.getName().endsWith(".jsp")) {
- final String resourceName = ConversionUtils.stripExtension(getSourceNameFromFile(observer, pFile)) + ".java";
-
- log("Creating " + resourceName);
-
- sources.put(resourceName, transformer.generateJavaSource(resourceName, pFile));
-
- resourceToCompile.add(resourceName);
- }
- super.onFileCreate(pFile);
- }
-
-
- public String[] getResourcesToCompile(FilesystemAlterationObserver pObserver) {
- // we only want to compile the jsp pages
- final String[] resourceNames = new String[resourceToCompile.size()];
- resourceToCompile.toArray(resourceNames);
- return resourceNames;
- }
-
-
- public ResourceReader getReader( final FilesystemAlterationObserver pObserver ) {
- return new JspReader(sources, super.getReader(pObserver));
- }
+ private final ReloadingClassLoader classloader = new ReloadingClassLoader(ServerPageServlet.class.getClassLoader());
+ private FilesystemAlterationMonitor fam;
+ private CompilingListener jspListener;
+
+ private Map servletsByClassname = new HashMap();
+
+ public void init() throws ServletException {
+ super.init();
+
+ final File serverpagesDir = new File(getServletContext().getRealPath("/") + getInitParameter("serverpagesDir"));
+
+ log("Monitoring serverpages in " + serverpagesDir);
+
+ final TransactionalResourceStore store = new TransactionalResourceStore(new MemoryResourceStore()) {
+
+ private Set newClasses;
+ private Map newServletsByClassname;
+
+ public void onStart() {
+ super.onStart();
+
+ newClasses = new HashSet();
+ newServletsByClassname = new HashMap(servletsByClassname);
+ }
+
+ public void onStop() {
+ super.onStop();
+
+ boolean reload = false;
+ for (Iterator it = newClasses.iterator(); it.hasNext();) {
+ final String clazzName = (String) it.next();
+
+ try {
+ final Class clazz = classloader.loadClass(clazzName);
+
+ if (!HttpServlet.class.isAssignableFrom(clazz)) {
+ log(clazzName + " is not a servlet");
+ continue;
+ }
+
+ // create new instance of jsp page
+ final HttpServlet servlet = (HttpServlet) clazz.newInstance();
+ newServletsByClassname.put(clazzName, servlet);
+
+ reload = true;
+ } catch(Exception e) {
+ log("", e);
+ }
+ }
+
+ if (reload) {
+ log("Activating new map of servlets "+ newServletsByClassname);
+ servletsByClassname = newServletsByClassname;
+ }
+ }
+
+ public void write(String pResourceName, byte[] pResourceData) {
+ super.write(pResourceName, pResourceData);
+
+ if (pResourceName.endsWith(".class")) {
+
+ // compiler writes a new class, remember the classes to reload
+ newClasses.add(pResourceName.replace('/', '.').substring(0, pResourceName.length() - ".class".length()));
+ }
+ }
+
+ };
+
+ // listener that generates the java code from the jsp page and provides that to the compiler
+ jspListener = new CompilingListener(new JavaCompilerFactory().createCompiler("eclipse"), store) {
+
+ private final JspGenerator transformer = new JspGenerator();
+ private final Map sources = new HashMap();
+ private final Set resourceToCompile = new HashSet();
+
+ public void onStart(FilesystemAlterationObserver pObserver) {
+ super.onStart(pObserver);
+
+ resourceToCompile.clear();
+ }
+
+
+ public void onFileChange(File pFile) {
+ if (pFile.getName().endsWith(".jsp")) {
+ final String resourceName = ConversionUtils.stripExtension(getSourceNameFromFile(observer, pFile)) + ".java";
+
+ log("Updating " + resourceName);
+
+ sources.put(resourceName, transformer.generateJavaSource(resourceName, pFile));
+
+ resourceToCompile.add(resourceName);
+ }
+ super.onFileChange(pFile);
+ }
+
+
+ public void onFileCreate(File pFile) {
+ if (pFile.getName().endsWith(".jsp")) {
+ final String resourceName = ConversionUtils.stripExtension(getSourceNameFromFile(observer, pFile)) + ".java";
+
+ log("Creating " + resourceName);
+
+ sources.put(resourceName, transformer.generateJavaSource(resourceName, pFile));
+
+ resourceToCompile.add(resourceName);
+ }
+ super.onFileCreate(pFile);
+ }
+
+
+ public String[] getResourcesToCompile(FilesystemAlterationObserver pObserver) {
+ // we only want to compile the jsp pages
+ final String[] resourceNames = new String[resourceToCompile.size()];
+ resourceToCompile.toArray(resourceNames);
+ return resourceNames;
+ }
+
+
+ public ResourceReader getReader( final FilesystemAlterationObserver pObserver ) {
+ return new JspReader(sources, super.getReader(pObserver));
+ }
};
jspListener.addReloadNotificationListener(classloader);
fam = new FilesystemAlterationMonitor();
fam.addListener(serverpagesDir, jspListener);
fam.start();
- }
+ }
+
+ private String convertRequestToServletClassname( final HttpServletRequest request ) {
+
+ final String path = request.getPathInfo().substring(1);
+
+ final String clazz = ConversionUtils.stripExtension(path).replace('/', '.');
+
+ return clazz;
+ }
+
+ protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+
+ log("Request " + request.getRequestURI());
+
+ final CompilationResult result = jspListener.getCompilationResult();
+ final CompilationProblem[] errors = result.getErrors();
+
+ if (errors.length > 0) {
+
+ // if there are errors we provide the compilation errors instead of the jsp page
+
+ final PrintWriter out = response.getWriter();
+
+ out.append("<html><body>");
+
+ for (int i = 0; i < errors.length; i++) {
+ final CompilationProblem problem = errors[i];
+ out.append(problem.toString()).append("<br/>").append('\n');
+ }
+
+ out.append("</body></html>");
+
+ out.flush();
+ out.close();
+ return;
+ }
+
+ final String servletClassname = convertRequestToServletClassname(request);
+
+ log("Checking for serverpage " + servletClassname);
+
+ final HttpServlet servlet = (HttpServlet) servletsByClassname.get(servletClassname);
+
+ if (servlet == null) {
+ log("No servlet for " + request.getRequestURI());
+ response.sendError(404);
+ return;
+ }
+
+ log("Delegating request to " + servletClassname);
+
+ servlet.service(request, response);
+ }
- private String convertRequestToServletClassname( final HttpServletRequest request ) {
+ public void destroy() {
- final String path = request.getPathInfo().substring(1);
+ fam.stop();
- final String clazz = ConversionUtils.stripExtension(path).replace('/', '.');
-
- return clazz;
- }
-
- protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
-
- log("Request " + request.getRequestURI());
-
- final CompilationResult result = jspListener.getCompilationResult();
- final CompilationProblem[] errors = result.getErrors();
-
- if (errors.length > 0) {
-
- // if there are errors we provide the compilation errors instead of the jsp page
-
- final PrintWriter out = response.getWriter();
-
- out.append("<html><body>");
-
- for (int i = 0; i < errors.length; i++) {
- final CompilationProblem problem = errors[i];
- out.append(problem.toString()).append("<br/>").append('\n');
- }
-
- out.append("</body></html>");
-
- out.flush();
- out.close();
- return;
- }
-
- final String servletClassname = convertRequestToServletClassname(request);
-
- log("Checking for serverpage " + servletClassname);
-
- final HttpServlet servlet = (HttpServlet) servletsByClassname.get(servletClassname);
-
- if (servlet == null) {
- log("No servlet for " + request.getRequestURI());
- response.sendError(404);
- return;
- }
-
- log("Delegating request to " + servletClassname);
-
- servlet.service(request, response);
- }
-
- public void destroy() {
-
- fam.stop();
-
- super.destroy();
- }
+ super.destroy();
+ }
}
Modified: jakarta/commons/proper/jci/trunk/fam/src/main/java/org/apache/commons/jci/listeners/AbstractFilesystemAlterationListener.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/jci/trunk/fam/src/main/java/org/apache/commons/jci/listeners/AbstractFilesystemAlterationListener.java?view=diff&rev=532377&r1=532376&r2=532377
==============================================================================
--- jakarta/commons/proper/jci/trunk/fam/src/main/java/org/apache/commons/jci/listeners/AbstractFilesystemAlterationListener.java (original)
+++ jakarta/commons/proper/jci/trunk/fam/src/main/java/org/apache/commons/jci/listeners/AbstractFilesystemAlterationListener.java Wed Apr 25 07:57:21 2007
@@ -50,83 +50,83 @@
private final Signal eventSignal = new Signal();
private final Signal checkSignal = new Signal();
- protected FilesystemAlterationObserver observer;
-
- public void onDirectoryCreate( final File pDir ) {
- createdDirectories.add(pDir);
- }
- public void onDirectoryChange( final File pDir ) {
- changedDirectories.add(pDir);
- }
- public void onDirectoryDelete( final File pDir ) {
- deletedDirectories.add(pDir);
- }
-
- public void onFileCreate( final File pFile) {
- createdFiles.add(pFile);
- }
- public void onFileChange( final File pFile ) {
- changedFiles.add(pFile);
- }
- public void onFileDelete( final File pFile ) {
- deletedFiles.add(pFile);
- }
-
-
- public Collection getChangedDirectories() {
- return changedDirectories;
- }
-
- public Collection getChangedFiles() {
- return changedFiles;
- }
-
- public Collection getCreatedDirectories() {
- return createdDirectories;
- }
-
- public Collection getCreatedFiles() {
- return createdFiles;
- }
-
- public Collection getDeletedDirectories() {
- return deletedDirectories;
- }
-
- public Collection getDeletedFiles() {
- return deletedFiles;
- }
-
- protected void signals() {
- if (createdFiles.size() > 0 || createdDirectories.size() > 0 ||
- changedFiles.size() > 0 || changedDirectories.size() > 0 ||
- deletedFiles.size() > 0 || deletedDirectories.size() > 0) {
-
- log.debug("event signal");
-
- synchronized(eventSignal) {
+ protected FilesystemAlterationObserver observer;
+
+ public void onDirectoryCreate( final File pDir ) {
+ createdDirectories.add(pDir);
+ }
+ public void onDirectoryChange( final File pDir ) {
+ changedDirectories.add(pDir);
+ }
+ public void onDirectoryDelete( final File pDir ) {
+ deletedDirectories.add(pDir);
+ }
+
+ public void onFileCreate( final File pFile) {
+ createdFiles.add(pFile);
+ }
+ public void onFileChange( final File pFile ) {
+ changedFiles.add(pFile);
+ }
+ public void onFileDelete( final File pFile ) {
+ deletedFiles.add(pFile);
+ }
+
+
+ public Collection getChangedDirectories() {
+ return changedDirectories;
+ }
+
+ public Collection getChangedFiles() {
+ return changedFiles;
+ }
+
+ public Collection getCreatedDirectories() {
+ return createdDirectories;
+ }
+
+ public Collection getCreatedFiles() {
+ return createdFiles;
+ }
+
+ public Collection getDeletedDirectories() {
+ return deletedDirectories;
+ }
+
+ public Collection getDeletedFiles() {
+ return deletedFiles;
+ }
+
+ protected void signals() {
+ if (createdFiles.size() > 0 || createdDirectories.size() > 0 ||
+ changedFiles.size() > 0 || changedDirectories.size() > 0 ||
+ deletedFiles.size() > 0 || deletedDirectories.size() > 0) {
+
+ log.debug("event signal");
+
+ synchronized(eventSignal) {
eventSignal.triggered = true;
eventSignal.notifyAll();
- }
- }
-
- log.debug("check signal");
-
+ }
+ }
+
+ log.debug("check signal");
+
synchronized(checkSignal) {
checkSignal.triggered = true;
checkSignal.notifyAll();
- }
- }
+ }
+ }
- public void onStart( final FilesystemAlterationObserver pObserver ) {
- observer = pObserver;
+ public void onStart( final FilesystemAlterationObserver pObserver ) {
+ observer = pObserver;
- createdFiles.clear();
- changedFiles.clear();
- deletedFiles.clear();
- createdDirectories.clear();
- changedDirectories.clear();
- deletedDirectories.clear();
+ createdFiles.clear();
+ changedFiles.clear();
+ deletedFiles.clear();
+ createdDirectories.clear();
+ changedDirectories.clear();
+ deletedDirectories.clear();
}
public void onStop( final FilesystemAlterationObserver pObserver ) {
@@ -134,7 +134,7 @@
observer = null;
}
- public void waitForEvent() throws Exception {
+ public void waitForEvent() throws Exception {
synchronized(eventSignal) {
eventSignal.triggered = false;
}
Modified: jakarta/commons/proper/jci/trunk/fam/src/main/java/org/apache/commons/jci/monitor/FilesystemAlterationListener.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/jci/trunk/fam/src/main/java/org/apache/commons/jci/monitor/FilesystemAlterationListener.java?view=diff&rev=532377&r1=532376&r2=532377
==============================================================================
--- jakarta/commons/proper/jci/trunk/fam/src/main/java/org/apache/commons/jci/monitor/FilesystemAlterationListener.java (original)
+++ jakarta/commons/proper/jci/trunk/fam/src/main/java/org/apache/commons/jci/monitor/FilesystemAlterationListener.java Wed Apr 25 07:57:21 2007
@@ -27,7 +27,7 @@
* @author tcurdt
*/
public interface FilesystemAlterationListener {
-
+
void onStart( final FilesystemAlterationObserver pObserver );
void onFileCreate( final File pFile );
void onFileChange( final File pFile );
Modified: jakarta/commons/proper/jci/trunk/fam/src/main/java/org/apache/commons/jci/monitor/FilesystemAlterationMonitor.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/jci/trunk/fam/src/main/java/org/apache/commons/jci/monitor/FilesystemAlterationMonitor.java?view=diff&rev=532377&r1=532376&r2=532377
==============================================================================
--- jakarta/commons/proper/jci/trunk/fam/src/main/java/org/apache/commons/jci/monitor/FilesystemAlterationMonitor.java (original)
+++ jakarta/commons/proper/jci/trunk/fam/src/main/java/org/apache/commons/jci/monitor/FilesystemAlterationMonitor.java Wed Apr 25 07:57:21 2007
@@ -69,39 +69,39 @@
public void addListener( final File pRoot, final FilesystemAlterationListener pListener ) {
-
- FilesystemAlterationObserver observer;
-
- synchronized (observersLock) {
- observer = (FilesystemAlterationObserver)observers.get(pRoot);
-
- if (observer == null) {
- final Map newObservers = new HashMap(observers);
- observer = new FilesystemAlterationObserverImpl(pRoot);
- newObservers.put(pRoot, observer);
- observers = Collections.unmodifiableMap(newObservers);
- }
- }
-
- observer.addListener(pListener);
+
+ FilesystemAlterationObserver observer;
+
+ synchronized (observersLock) {
+ observer = (FilesystemAlterationObserver)observers.get(pRoot);
+
+ if (observer == null) {
+ final Map newObservers = new HashMap(observers);
+ observer = new FilesystemAlterationObserverImpl(pRoot);
+ newObservers.put(pRoot, observer);
+ observers = Collections.unmodifiableMap(newObservers);
+ }
+ }
+
+ observer.addListener(pListener);
}
public void removeListener( final FilesystemAlterationListener pListener ) {
- synchronized (observersLock) {
- for (Iterator it = observers.values().iterator(); it.hasNext();) {
- final FilesystemAlterationObserver observer = (FilesystemAlterationObserver) it.next();
- observer.removeListener(pListener);
- // FIXME: remove observer if there are no listeners?
- }
- }
+ synchronized (observersLock) {
+ for (Iterator it = observers.values().iterator(); it.hasNext();) {
+ final FilesystemAlterationObserver observer = (FilesystemAlterationObserver) it.next();
+ observer.removeListener(pListener);
+ // FIXME: remove observer if there are no listeners?
+ }
+ }
}
public FilesystemAlterationListener[] getListenersFor( final File pRoot ) {
- final FilesystemAlterationObserver observer = (FilesystemAlterationObserver)observers.get(pRoot);
+ final FilesystemAlterationObserver observer = (FilesystemAlterationObserver)observers.get(pRoot);
if (observer == null) {
- return new FilesystemAlterationListener[0];
- }
+ return new FilesystemAlterationListener[0];
+ }
return observer.getListeners();
}
@@ -117,11 +117,11 @@
final Map currentObservers = observers;
- for (Iterator it = currentObservers.values().iterator(); it.hasNext();) {
- final FilesystemAlterationObserver observer = (FilesystemAlterationObserver) it.next();
- observer.checkAndNotify();
- }
-
+ for (Iterator it = currentObservers.values().iterator(); it.hasNext();) {
+ final FilesystemAlterationObserver observer = (FilesystemAlterationObserver) it.next();
+ observer.checkAndNotify();
+ }
+
try {
Thread.sleep(delay);
} catch (final InterruptedException e) {
Modified: jakarta/commons/proper/jci/trunk/fam/src/main/java/org/apache/commons/jci/monitor/FilesystemAlterationObserver.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/jci/trunk/fam/src/main/java/org/apache/commons/jci/monitor/FilesystemAlterationObserver.java?view=diff&rev=532377&r1=532376&r2=532377
==============================================================================
--- jakarta/commons/proper/jci/trunk/fam/src/main/java/org/apache/commons/jci/monitor/FilesystemAlterationObserver.java (original)
+++ jakarta/commons/proper/jci/trunk/fam/src/main/java/org/apache/commons/jci/monitor/FilesystemAlterationObserver.java Wed Apr 25 07:57:21 2007
@@ -28,14 +28,14 @@
*/
public interface FilesystemAlterationObserver {
- File getRootDirectory();
-
- void checkAndNotify();
-
- void addListener( final FilesystemAlterationListener pListener );
+ File getRootDirectory();
- void removeListener( final FilesystemAlterationListener pListener );
-
- FilesystemAlterationListener[] getListeners();
+ void checkAndNotify();
+
+ void addListener( final FilesystemAlterationListener pListener );
+
+ void removeListener( final FilesystemAlterationListener pListener );
+
+ FilesystemAlterationListener[] getListeners();
}
Modified: jakarta/commons/proper/jci/trunk/fam/src/main/java/org/apache/commons/jci/monitor/FilesystemAlterationObserverImpl.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/jci/trunk/fam/src/main/java/org/apache/commons/jci/monitor/FilesystemAlterationObserverImpl.java?view=diff&rev=532377&r1=532376&r2=532377
==============================================================================
--- jakarta/commons/proper/jci/trunk/fam/src/main/java/org/apache/commons/jci/monitor/FilesystemAlterationObserverImpl.java (original)
+++ jakarta/commons/proper/jci/trunk/fam/src/main/java/org/apache/commons/jci/monitor/FilesystemAlterationObserverImpl.java Wed Apr 25 07:57:21 2007
@@ -38,60 +38,60 @@
private interface MonitorFile {
- long lastModified();
- MonitorFile[] listFiles();
- boolean isDirectory();
- boolean exists();
- String getName();
+ long lastModified();
+ MonitorFile[] listFiles();
+ boolean isDirectory();
+ boolean exists();
+ String getName();
}
- private final static class MonitorFileImpl implements MonitorFile {
-
- private final File file;
-
- public MonitorFileImpl( final File pFile ) {
- file = pFile;
- }
-
- public boolean exists() {
- return file.exists();
- }
-
- public MonitorFile[] listFiles() {
- final File[] childs = file.listFiles();
-
- final MonitorFile[] providers = new MonitorFile[childs.length];
- for (int i = 0; i < providers.length; i++) {
- providers[i] = new MonitorFileImpl(childs[i]);
- }
- return providers;
- }
-
- public String getName() {
- return file.getName();
- }
-
- public boolean isDirectory() {
- return file.isDirectory();
- }
-
- public long lastModified() {
- return file.lastModified();
- }
-
- public String toString() {
- return file.toString();
- }
-
- }
-
- private final class Entry {
-
- private final static int TYPE_UNKNOWN = 0;
- private final static int TYPE_FILE = 1;
- private final static int TYPE_DIRECTORY = 2;
-
+ private final static class MonitorFileImpl implements MonitorFile {
+
+ private final File file;
+
+ public MonitorFileImpl( final File pFile ) {
+ file = pFile;
+ }
+
+ public boolean exists() {
+ return file.exists();
+ }
+
+ public MonitorFile[] listFiles() {
+ final File[] childs = file.listFiles();
+
+ final MonitorFile[] providers = new MonitorFile[childs.length];
+ for (int i = 0; i < providers.length; i++) {
+ providers[i] = new MonitorFileImpl(childs[i]);
+ }
+ return providers;
+ }
+
+ public String getName() {
+ return file.getName();
+ }
+
+ public boolean isDirectory() {
+ return file.isDirectory();
+ }
+
+ public long lastModified() {
+ return file.lastModified();
+ }
+
+ public String toString() {
+ return file.toString();
+ }
+
+ }
+
+ private final class Entry {
+
+ private final static int TYPE_UNKNOWN = 0;
+ private final static int TYPE_FILE = 1;
+ private final static int TYPE_DIRECTORY = 2;
+
private final MonitorFile file;
private long lastModified = -1;
private int lastType = TYPE_UNKNOWN;
@@ -102,132 +102,132 @@
}
public String getName() {
- return file.getName();
+ return file.getName();
}
- public String toString() {
+ public String toString() {
return file.toString();
}
- private void compareChilds() {
- if (!file.isDirectory()) {
- return;
- }
-
- final MonitorFile[] files = file.listFiles();
- final Set deleted = new HashSet(childs.values());
- for (int i = 0; i < files.length; i++) {
- final MonitorFile f = files[i];
- final String name = f.getName();
- final Entry entry = (Entry)childs.get(name);
- if (entry != null) {
- // already recognized as child
- deleted.remove(entry);
-
- if(entry.needsToBeDeleted()) {
- // we have to delete this one
- childs.remove(name);
- }
- } else {
- // a new child
- final Entry newChild = new Entry(f);
- childs.put(name, newChild);
- newChild.needsToBeDeleted();
- }
- }
-
- // the ones not found on disk anymore
-
- for (Iterator it = deleted.iterator(); it.hasNext();) {
- final Entry entry = (Entry) it.next();
- entry.deleteChildsAndNotify();
- childs.remove(entry.getName());
- }
- }
-
-
- private void deleteChildsAndNotify() {
- for (Iterator it = childs.values().iterator(); it.hasNext();) {
- final Entry entry = (Entry) it.next();
-
- entry.deleteChildsAndNotify();
- }
- childs.clear();
-
- if(lastType == TYPE_DIRECTORY) {
- notifyOnDirectoryDelete(this);
- } else if (lastType == TYPE_FILE) {
- notifyOnFileDelete(this);
- }
- }
-
+ private void compareChilds() {
+ if (!file.isDirectory()) {
+ return;
+ }
+
+ final MonitorFile[] files = file.listFiles();
+ final Set deleted = new HashSet(childs.values());
+ for (int i = 0; i < files.length; i++) {
+ final MonitorFile f = files[i];
+ final String name = f.getName();
+ final Entry entry = (Entry)childs.get(name);
+ if (entry != null) {
+ // already recognized as child
+ deleted.remove(entry);
+
+ if(entry.needsToBeDeleted()) {
+ // we have to delete this one
+ childs.remove(name);
+ }
+ } else {
+ // a new child
+ final Entry newChild = new Entry(f);
+ childs.put(name, newChild);
+ newChild.needsToBeDeleted();
+ }
+ }
+
+ // the ones not found on disk anymore
+
+ for (Iterator it = deleted.iterator(); it.hasNext();) {
+ final Entry entry = (Entry) it.next();
+ entry.deleteChildsAndNotify();
+ childs.remove(entry.getName());
+ }
+ }
+
+
+ private void deleteChildsAndNotify() {
+ for (Iterator it = childs.values().iterator(); it.hasNext();) {
+ final Entry entry = (Entry) it.next();
+
+ entry.deleteChildsAndNotify();
+ }
+ childs.clear();
+
+ if(lastType == TYPE_DIRECTORY) {
+ notifyOnDirectoryDelete(this);
+ } else if (lastType == TYPE_FILE) {
+ notifyOnFileDelete(this);
+ }
+ }
+
public boolean needsToBeDeleted() {
-
- if (!file.exists()) {
- // deleted or has never existed yet
-
-// log.debug(file + " does not exist or has been deleted");
-
- deleteChildsAndNotify();
-
- // mark to be deleted by parent
- return true;
- } else {
- // exists
- final long currentModified = file.lastModified();
-
- if (currentModified != lastModified) {
- // last modified has changed
- lastModified = currentModified;
-
-// log.debug(file + " has new last modified");
-
- // types only changes when also the last modified changes
- final int newType = (file.isDirectory()?TYPE_DIRECTORY:TYPE_FILE);
-
- if (lastType != newType) {
- // the type has changed
-
-// log.debug(file + " has a new type");
-
- deleteChildsAndNotify();
-
- lastType = newType;
-
- // and then an add as the new type
-
- if (newType == TYPE_DIRECTORY) {
- notifyOnDirectoryCreate(this);
- compareChilds();
- } else {
- notifyOnFileCreate(this);
- }
-
- return false;
- }
-
- if (newType == TYPE_DIRECTORY) {
- notifyOnDirectoryChange(this);
- compareChilds();
- } else {
- notifyOnFileChange(this);
- }
-
- return false;
-
- } else {
-
- // so exists and has not changed
-
-// log.debug(file + " does exist and has not changed");
-
- compareChilds();
-
- return false;
- }
- }
+
+ if (!file.exists()) {
+ // deleted or has never existed yet
+
+// log.debug(file + " does not exist or has been deleted");
+
+ deleteChildsAndNotify();
+
+ // mark to be deleted by parent
+ return true;
+ } else {
+ // exists
+ final long currentModified = file.lastModified();
+
+ if (currentModified != lastModified) {
+ // last modified has changed
+ lastModified = currentModified;
+
+// log.debug(file + " has new last modified");
+
+ // types only changes when also the last modified changes
+ final int newType = (file.isDirectory()?TYPE_DIRECTORY:TYPE_FILE);
+
+ if (lastType != newType) {
+ // the type has changed
+
+// log.debug(file + " has a new type");
+
+ deleteChildsAndNotify();
+
+ lastType = newType;
+
+ // and then an add as the new type
+
+ if (newType == TYPE_DIRECTORY) {
+ notifyOnDirectoryCreate(this);
+ compareChilds();
+ } else {
+ notifyOnFileCreate(this);
+ }
+
+ return false;
+ }
+
+ if (newType == TYPE_DIRECTORY) {
+ notifyOnDirectoryChange(this);
+ compareChilds();
+ } else {
+ notifyOnFileChange(this);
+ }
+
+ return false;
+
+ } else {
+
+ // so exists and has not changed
+
+// log.debug(file + " does exist and has not changed");
+
+ compareChilds();
+
+ return false;
+ }
+ }
}
public MonitorFile getFile() {
@@ -240,135 +240,135 @@
}
- private final File rootDirectory;
- private final Entry rootEntry;
+ private final File rootDirectory;
+ private final Entry rootEntry;
+
+ private FilesystemAlterationListener[] listeners = new FilesystemAlterationListener[0];
+ private Set listenersSet = new HashSet();
+
+ public FilesystemAlterationObserverImpl( final File pRootDirectory ) {
+ rootDirectory = pRootDirectory;
+ rootEntry = new Entry(new MonitorFileImpl(pRootDirectory));
+ }
+
+
+
+ private void notifyOnStart() {
+ log.debug("onStart " + rootEntry);
+ for (int i = 0; i < listeners.length; i++) {
+ final FilesystemAlterationListener listener = listeners[i];
+ listener.onStart(this);
+ }
+ }
+ private void notifyOnStop() {
+ log.debug("onStop " + rootEntry);
+ for (int i = 0; i < listeners.length; i++) {
+ final FilesystemAlterationListener listener = listeners[i];
+ listener.onStop(this);
+ }
+ }
+
+ private void notifyOnFileCreate( final Entry pEntry ) {
+ log.debug("onFileCreate " + pEntry);
+ for (int i = 0; i < listeners.length; i++) {
+ final FilesystemAlterationListener listener = listeners[i];
+ listener.onFileCreate(((MonitorFileImpl)pEntry.getFile()).file );
+ }
+ }
+ private void notifyOnFileChange( final Entry pEntry ) {
+ log.debug("onFileChange " + pEntry);
+ for (int i = 0; i < listeners.length; i++) {
+ final FilesystemAlterationListener listener = listeners[i];
+ listener.onFileChange(((MonitorFileImpl)pEntry.getFile()).file );
+ }
+ }
+ private void notifyOnFileDelete( final Entry pEntry ) {
+ log.debug("onFileDelete " + pEntry);
+ for (int i = 0; i < listeners.length; i++) {
+ final FilesystemAlterationListener listener = listeners[i];
+ listener.onFileDelete(((MonitorFileImpl)pEntry.getFile()).file );
+ }
+ }
+
+ private void notifyOnDirectoryCreate( final Entry pEntry ) {
+ log.debug("onDirectoryCreate " + pEntry);
+ for (int i = 0; i < listeners.length; i++) {
+ final FilesystemAlterationListener listener = listeners[i];
+ listener.onDirectoryCreate(((MonitorFileImpl)pEntry.getFile()).file );
+ }
+ }
+ private void notifyOnDirectoryChange( final Entry pEntry ) {
+ log.debug("onDirectoryChange " + pEntry);
+ for (int i = 0; i < listeners.length; i++) {
+ final FilesystemAlterationListener listener = listeners[i];
+ listener.onDirectoryChange(((MonitorFileImpl)pEntry.getFile()).file );
+ }
+ }
+ private void notifyOnDirectoryDelete( final Entry pEntry ) {
+ log.debug("onDirectoryDelete " + pEntry);
+ for (int i = 0; i < listeners.length; i++) {
+ final FilesystemAlterationListener listener = listeners[i];
+ listener.onDirectoryDelete(((MonitorFileImpl)pEntry.getFile()).file );
+ }
+ }
- private FilesystemAlterationListener[] listeners = new FilesystemAlterationListener[0];
- private Set listenersSet = new HashSet();
-
- public FilesystemAlterationObserverImpl( final File pRootDirectory ) {
- rootDirectory = pRootDirectory;
- rootEntry = new Entry(new MonitorFileImpl(pRootDirectory));
- }
-
-
-
- private void notifyOnStart() {
- log.debug("onStart " + rootEntry);
- for (int i = 0; i < listeners.length; i++) {
- final FilesystemAlterationListener listener = listeners[i];
- listener.onStart(this);
- }
- }
- private void notifyOnStop() {
- log.debug("onStop " + rootEntry);
- for (int i = 0; i < listeners.length; i++) {
- final FilesystemAlterationListener listener = listeners[i];
- listener.onStop(this);
- }
- }
-
- private void notifyOnFileCreate( final Entry pEntry ) {
- log.debug("onFileCreate " + pEntry);
- for (int i = 0; i < listeners.length; i++) {
- final FilesystemAlterationListener listener = listeners[i];
- listener.onFileCreate(((MonitorFileImpl)pEntry.getFile()).file );
- }
- }
- private void notifyOnFileChange( final Entry pEntry ) {
- log.debug("onFileChange " + pEntry);
- for (int i = 0; i < listeners.length; i++) {
- final FilesystemAlterationListener listener = listeners[i];
- listener.onFileChange(((MonitorFileImpl)pEntry.getFile()).file );
- }
- }
- private void notifyOnFileDelete( final Entry pEntry ) {
- log.debug("onFileDelete " + pEntry);
- for (int i = 0; i < listeners.length; i++) {
- final FilesystemAlterationListener listener = listeners[i];
- listener.onFileDelete(((MonitorFileImpl)pEntry.getFile()).file );
- }
- }
-
- private void notifyOnDirectoryCreate( final Entry pEntry ) {
- log.debug("onDirectoryCreate " + pEntry);
- for (int i = 0; i < listeners.length; i++) {
- final FilesystemAlterationListener listener = listeners[i];
- listener.onDirectoryCreate(((MonitorFileImpl)pEntry.getFile()).file );
- }
- }
- private void notifyOnDirectoryChange( final Entry pEntry ) {
- log.debug("onDirectoryChange " + pEntry);
- for (int i = 0; i < listeners.length; i++) {
- final FilesystemAlterationListener listener = listeners[i];
- listener.onDirectoryChange(((MonitorFileImpl)pEntry.getFile()).file );
- }
- }
- private void notifyOnDirectoryDelete( final Entry pEntry ) {
- log.debug("onDirectoryDelete " + pEntry);
- for (int i = 0; i < listeners.length; i++) {
- final FilesystemAlterationListener listener = listeners[i];
- listener.onDirectoryDelete(((MonitorFileImpl)pEntry.getFile()).file );
- }
- }
-
private void checkEntries() {
- if(rootEntry.needsToBeDeleted()) {
- // root not existing
- rootEntry.lastType = Entry.TYPE_UNKNOWN;
- }
+ if(rootEntry.needsToBeDeleted()) {
+ // root not existing
+ rootEntry.lastType = Entry.TYPE_UNKNOWN;
+ }
}
- public synchronized void checkAndNotify() {
- if (listeners.length == 0) {
- return;
- }
-
- notifyOnStart();
+ public synchronized void checkAndNotify() {
+ if (listeners.length == 0) {
+ return;
+ }
+
+ notifyOnStart();
checkEntries();
- notifyOnStop();
+ notifyOnStop();
}
public File getRootDirectory() {
- return rootDirectory;
+ return rootDirectory;
+ }
+
+ public synchronized void addListener( final FilesystemAlterationListener pListener ) {
+ if (listenersSet.add(pListener)) {
+ createArrayFromSet();
+ }
+ }
+
+ public synchronized void removeListener( final FilesystemAlterationListener pListener ) {
+ if (listenersSet.remove(pListener)) {
+ createArrayFromSet();
+ }
+ }
+
+ private void createArrayFromSet() {
+ final FilesystemAlterationListener[] newListeners = new FilesystemAlterationListener[listenersSet.size()];
+ listenersSet.toArray(newListeners);
+ listeners = newListeners;
}
- public synchronized void addListener( final FilesystemAlterationListener pListener ) {
- if (listenersSet.add(pListener)) {
- createArrayFromSet();
- }
- }
-
- public synchronized void removeListener( final FilesystemAlterationListener pListener ) {
- if (listenersSet.remove(pListener)) {
- createArrayFromSet();
- }
- }
-
- private void createArrayFromSet() {
- final FilesystemAlterationListener[] newListeners = new FilesystemAlterationListener[listenersSet.size()];
- listenersSet.toArray(newListeners);
- listeners = newListeners;
- }
-
- public FilesystemAlterationListener[] getListeners() {
- return listeners;
- }
-
-
- public static void main( String[] args ) {
- final FilesystemAlterationObserverImpl observer = new FilesystemAlterationObserverImpl(new File(args[0]));
- while(true) {
- observer.checkEntries();
- try {
- Thread.sleep(1000);
- } catch (InterruptedException e) {
- }
- }
- }
+ public FilesystemAlterationListener[] getListeners() {
+ return listeners;
+ }
+
+
+ public static void main( String[] args ) {
+ final FilesystemAlterationObserverImpl observer = new FilesystemAlterationObserverImpl(new File(args[0]));
+ while(true) {
+ observer.checkEntries();
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ }
+ }
+ }
}
Modified: jakarta/commons/proper/jci/trunk/fam/src/test/java/org/apache/commons/jci/monitor/FilesystemAlterationMonitorTestCase.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/jci/trunk/fam/src/test/java/org/apache/commons/jci/monitor/FilesystemAlterationMonitorTestCase.java?view=diff&rev=532377&r1=532376&r2=532377
==============================================================================
--- jakarta/commons/proper/jci/trunk/fam/src/test/java/org/apache/commons/jci/monitor/FilesystemAlterationMonitorTestCase.java (original)
+++ jakarta/commons/proper/jci/trunk/fam/src/test/java/org/apache/commons/jci/monitor/FilesystemAlterationMonitorTestCase.java Wed Apr 25 07:57:21 2007
@@ -300,9 +300,9 @@
}
public void testInterval() throws Exception {
-
- final long interval = 1000;
-
+
+ final long interval = 1000;
+
start();
fam.setInterval(interval);
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org