[102978] Include catalina.properties file in Tomcat 5.0 and Tomcat 5.5 configurations. Allows some configurability about how server/lib is handled. Also includes some refactoring to share code across multiple Tomcat versions.
diff --git a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat32Configuration.java b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat32Configuration.java
index 188cc6c..b4557b5 100644
--- a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat32Configuration.java
+++ b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat32Configuration.java
@@ -215,22 +215,7 @@
monitor.worked(1);
// load policy file
- BufferedReader br = null;
- try {
- br = new BufferedReader(new InputStreamReader(new FileInputStream(path.append("tomcat.policy").toFile())));
- String temp = br.readLine();
- policyFile = "";
- while (temp != null) {
- policyFile += temp + "\n";
- temp = br.readLine();
- }
- br.close();
- } catch (Exception e) {
- Trace.trace(Trace.SEVERE, "Could not load policy file", e);
- } finally {
- if (br != null)
- br.close();
- }
+ policyFile = TomcatVersionHelper.getFileContents(new FileInputStream(path.append("tomcat.policy").toFile()));
monitor.worked(1);
if (monitor.isCanceled())
@@ -279,22 +264,7 @@
// load tomcat.policy
file = folder.getFile("tomcat.policy");
in = file.getContents();
- BufferedReader br = null;
- try {
- br = new BufferedReader(new InputStreamReader(in));
- String temp = br.readLine();
- policyFile = "";
- while (temp != null) {
- policyFile += temp + "\n";
- temp = br.readLine();
- }
- br.close();
- } catch (Exception e) {
- Trace.trace(Trace.SEVERE, "Could not load policy file", e);
- } finally {
- if (br != null)
- br.close();
- }
+ policyFile = TomcatVersionHelper.getFileContents(in);
monitor.worked(200);
if (monitor.isCanceled())
@@ -357,6 +327,14 @@
}
}
+ /**
+ * Save the information held by this object to the given directory.
+ * All files are forced to be saved.
+ *
+ * @param path desination path for the files
+ * @param monitor a progress monitor
+ * @exception CoreException
+ */
public void save(IPath path, IProgressMonitor monitor) throws CoreException {
save(path, true, monitor);
}
diff --git a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat40Configuration.java b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat40Configuration.java
index 172ff40..9447103 100644
--- a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat40Configuration.java
+++ b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat40Configuration.java
@@ -175,6 +175,9 @@
return list;
}
+ /**
+ * @see org.eclipse.jst.server.tomcat.core.internal.TomcatConfiguration#importFromPath(org.eclipse.core.runtime.IPath, boolean, org.eclipse.core.runtime.IProgressMonitor)
+ */
public void importFromPath(IPath path, boolean isTestEnv, IProgressMonitor monitor) throws CoreException {
load(path, monitor);
@@ -221,21 +224,7 @@
monitor.worked(1);
// load policy file
- BufferedReader br = null;
- try {
- br = new BufferedReader(new InputStreamReader(new FileInputStream(path.append("catalina.policy").toFile())));
- String temp = br.readLine();
- policyFile = "";
- while (temp != null) {
- policyFile += temp + "\n";
- temp = br.readLine();
- }
- } catch (Exception e) {
- Trace.trace(Trace.WARNING, "Could not load policy file", e);
- } finally {
- if (br != null)
- br.close();
- }
+ policyFile = TomcatVersionHelper.getFileContents(new FileInputStream(path.append("catalina.policy").toFile()));
monitor.worked(1);
if (monitor.isCanceled())
@@ -283,21 +272,7 @@
// load catalina.policy
file = folder.getFile("catalina.policy");
in = file.getContents();
- BufferedReader br = null;
- try {
- br = new BufferedReader(new InputStreamReader(in));
- String temp = br.readLine();
- policyFile = "";
- while (temp != null) {
- policyFile += temp + "\n";
- temp = br.readLine();
- }
- } catch (Exception e) {
- Trace.trace(Trace.WARNING, "Could not load policy file", e);
- } finally {
- if (br != null)
- br.close();
- }
+ policyFile = TomcatVersionHelper.getFileContents(in);
monitor.worked(200);
if (monitor.isCanceled())
@@ -362,6 +337,13 @@
}
}
+ /**
+ * Save to the given directory. All files are forced to be saved.
+ *
+ * @param path desination path for the files
+ * @param monitor a progress monitor
+ * @exception CoreException
+ */
public void save(IPath path, IProgressMonitor monitor) throws CoreException {
save(path, true, monitor);
}
diff --git a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat41Configuration.java b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat41Configuration.java
index 90fff44..7034ea8 100644
--- a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat41Configuration.java
+++ b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat41Configuration.java
@@ -186,6 +186,9 @@
return list;
}
+ /**
+ * @see org.eclipse.jst.server.tomcat.core.internal.TomcatConfiguration#importFromPath(org.eclipse.core.runtime.IPath, boolean, org.eclipse.core.runtime.IProgressMonitor)
+ */
public void importFromPath(IPath path, boolean isTestEnv, IProgressMonitor monitor) throws CoreException {
load(path, monitor);
@@ -232,21 +235,7 @@
monitor.worked(1);
// load policy file
- BufferedReader br = null;
- try {
- br = new BufferedReader(new InputStreamReader(new FileInputStream(path.append("catalina.policy").toFile())));
- String temp = br.readLine();
- policyFile = "";
- while (temp != null) {
- policyFile += temp + "\n";
- temp = br.readLine();
- }
- } catch (Exception e) {
- Trace.trace(Trace.WARNING, "Could not load policy file", e);
- } finally {
- if (br != null)
- br.close();
- }
+ policyFile = TomcatVersionHelper.getFileContents(new FileInputStream(path.append("catalina.policy").toFile()));
monitor.worked(1);
if (monitor.isCanceled())
@@ -294,21 +283,7 @@
// load catalina.policy
file = folder.getFile("catalina.policy");
in = file.getContents();
- BufferedReader br = null;
- try {
- br = new BufferedReader(new InputStreamReader(in));
- String temp = br.readLine();
- policyFile = "";
- while (temp != null) {
- policyFile += temp + "\n";
- temp = br.readLine();
- }
- } catch (Exception e) {
- Trace.trace(Trace.WARNING, "Could not load policy file", e);
- } finally {
- if (br != null)
- br.close();
- }
+ policyFile = TomcatVersionHelper.getFileContents(in);
monitor.worked(200);
if (monitor.isCanceled())
@@ -373,6 +348,13 @@
}
}
+ /**
+ * Save to the given directory. All files are forced to be saved.
+ *
+ * @param path desination path for the files
+ * @param monitor a progress monitor
+ * @exception CoreException
+ */
public void save(IPath path, IProgressMonitor monitor) throws CoreException {
save(path, true, monitor);
}
diff --git a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat50Configuration.java b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat50Configuration.java
index d291af0..25f87e2 100644
--- a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat50Configuration.java
+++ b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat50Configuration.java
@@ -46,6 +46,9 @@
protected String policyFile;
protected boolean isPolicyDirty;
+ protected String propertiesFile;
+ protected boolean isPropertiesDirty;
+
/**
* Tomcat50Configuration constructor.
*
@@ -172,7 +175,7 @@
public void load(IPath path, IProgressMonitor monitor) throws CoreException {
try {
monitor = ProgressUtil.getMonitorFor(monitor);
- monitor.beginTask(Messages.loadingTask, 5);
+ monitor.beginTask(Messages.loadingTask, 6);
// check for catalina.policy to verify that this is a v5.0 config
InputStream in = new FileInputStream(path.append("catalina.policy").toFile());
@@ -192,21 +195,15 @@
monitor.worked(1);
// load policy file
- BufferedReader br = null;
- try {
- br = new BufferedReader(new InputStreamReader(new FileInputStream(path.append("catalina.policy").toFile())));
- String temp = br.readLine();
- policyFile = "";
- while (temp != null) {
- policyFile += temp + "\n";
- temp = br.readLine();
- }
- } catch (Exception e) {
- Trace.trace(Trace.WARNING, "Could not load policy file", e);
- } finally {
- if (br != null)
- br.close();
- }
+ policyFile = TomcatVersionHelper.getFileContents(new FileInputStream(path.append("catalina.policy").toFile()));
+ monitor.worked(1);
+
+ // load properties file
+ File file = path.append("catalina.properties").toFile();
+ if (file.exists())
+ propertiesFile = TomcatVersionHelper.getFileContents(new FileInputStream(file));
+ else
+ propertiesFile = null;
monitor.worked(1);
if (monitor.isCanceled())
@@ -218,6 +215,9 @@
}
}
+ /**
+ * @see TomcatConfiguration#importFromPath(IPath, boolean, IProgressMonitor)
+ */
public void importFromPath(IPath path, boolean isTestEnv, IProgressMonitor monitor) throws CoreException {
load(path, monitor);
@@ -244,7 +244,7 @@
public void load(IFolder folder, IProgressMonitor monitor) throws CoreException {
try {
monitor = ProgressUtil.getMonitorFor(monitor);
- monitor.beginTask(Messages.loadingTask, 800);
+ monitor.beginTask(Messages.loadingTask, 1000);
// check for catalina.policy to verify that this is a v4.0 config
IFile file = folder.getFile("catalina.policy");
@@ -274,23 +274,19 @@
// load catalina.policy
file = folder.getFile("catalina.policy");
in = file.getContents();
- BufferedReader br = null;
- try {
- br = new BufferedReader(new InputStreamReader(in));
- String temp = br.readLine();
- policyFile = "";
- while (temp != null) {
- policyFile += temp + "\n";
- temp = br.readLine();
- }
- } catch (Exception e) {
- Trace.trace(Trace.WARNING, "Could not load policy file", e);
- } finally {
- if (br != null)
- br.close();
- }
+ policyFile = TomcatVersionHelper.getFileContents(in);
monitor.worked(200);
-
+
+ // load catalina.properties
+ file = folder.getFile("catalina.properties");
+ if (file.exists()) {
+ in = file.getContents();
+ propertiesFile = TomcatVersionHelper.getFileContents(in);
+ }
+ else
+ propertiesFile = null;
+ monitor.worked(200);
+
if (monitor.isCanceled())
throw new Exception("Cancelled");
monitor.done();
@@ -310,7 +306,7 @@
protected void save(IPath path, boolean forceDirty, IProgressMonitor monitor) throws CoreException {
try {
monitor = ProgressUtil.getMonitorFor(monitor);
- monitor.beginTask(Messages.savingTask, 3);
+ monitor.beginTask(Messages.savingTask, 4);
// make sure directory exists
if (!path.toFile().exists()) {
@@ -340,8 +336,15 @@
bw.close();
}
monitor.worked(1);
+ if (propertiesFile != null && (forceDirty || isPropertiesDirty)) {
+ BufferedWriter bw = new BufferedWriter(new FileWriter(path.append("catalina.properties").toFile()));
+ bw.write(propertiesFile);
+ bw.close();
+ }
+ monitor.worked(1);
isServerDirty = false;
isPolicyDirty = false;
+ isPropertiesDirty = false;
if (monitor.isCanceled())
return;
@@ -352,6 +355,13 @@
}
}
+ /**
+ * Save to the given directory. All files are forced to be saved.
+ *
+ * @param path desination path for the files
+ * @param monitor a progress monitor
+ * @exception CoreException
+ */
public void save(IPath path, IProgressMonitor monitor) throws CoreException {
save(path, true, monitor);
}
@@ -366,7 +376,7 @@
public void save(IFolder folder, IProgressMonitor monitor) throws CoreException {
try {
monitor = ProgressUtil.getMonitorFor(monitor);
- monitor.beginTask(Messages.savingTask, 900);
+ monitor.beginTask(Messages.savingTask, 1100);
// save server.xml
byte[] data = serverFactory.getContents();
@@ -401,7 +411,21 @@
//file.setContents(in, true, true, ProgressUtil.getSubMonitorFor(monitor, 200));
else
file.create(in, true, ProgressUtil.getSubMonitorFor(monitor, 200));
-
+
+ // save catalina.properties
+ if (propertiesFile != null) {
+ in = new ByteArrayInputStream(propertiesFile.getBytes());
+ file = folder.getFile("catalina.properties");
+ if (file.exists())
+ monitor.worked(200);
+ //file.setContents(in, true, true, ProgressUtil.getSubMonitorFor(monitor, 200));
+ else
+ file.create(in, true, ProgressUtil.getSubMonitorFor(monitor, 200));
+ }
+ else {
+ monitor.worked(200);
+ }
+
if (monitor.isCanceled())
return;
monitor.done();
diff --git a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat55Configuration.java b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat55Configuration.java
index 2fa2f18..fdd26c1 100644
--- a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat55Configuration.java
+++ b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat55Configuration.java
@@ -44,6 +44,9 @@
protected String policyFile;
protected boolean isPolicyDirty;
+ protected String propertiesFile;
+ protected boolean isPropertiesDirty;
+
/**
* Tomcat55Configuration constructor.
*
@@ -170,7 +173,7 @@
public void load(IPath path, IProgressMonitor monitor) throws CoreException {
try {
monitor = ProgressUtil.getMonitorFor(monitor);
- monitor.beginTask(Messages.loadingTask, 5);
+ monitor.beginTask(Messages.loadingTask, 6);
// check for catalina.policy to verify that this is a v5.5 config
InputStream in = new FileInputStream(path.append("catalina.policy").toFile());
@@ -190,21 +193,15 @@
monitor.worked(1);
// load policy file
- BufferedReader br = null;
- try {
- br = new BufferedReader(new InputStreamReader(new FileInputStream(path.append("catalina.policy").toFile())));
- String temp = br.readLine();
- policyFile = "";
- while (temp != null) {
- policyFile += temp + "\n";
- temp = br.readLine();
- }
- } catch (Exception e) {
- Trace.trace(Trace.WARNING, "Could not load policy file", e);
- } finally {
- if (br != null)
- br.close();
- }
+ policyFile = TomcatVersionHelper.getFileContents(new FileInputStream(path.append("catalina.policy").toFile()));
+ monitor.worked(1);
+
+ // load properties file
+ File file = path.append("catalina.properties").toFile();
+ if (file.exists())
+ propertiesFile = TomcatVersionHelper.getFileContents(new FileInputStream(file));
+ else
+ propertiesFile = null;
monitor.worked(1);
if (monitor.isCanceled())
@@ -216,6 +213,9 @@
}
}
+ /**
+ * @see TomcatConfiguration#importFromPath(IPath, boolean, IProgressMonitor)
+ */
public void importFromPath(IPath path, boolean isTestEnv, IProgressMonitor monitor) throws CoreException {
load(path, monitor);
@@ -242,7 +242,7 @@
public void load(IFolder folder, IProgressMonitor monitor) throws CoreException {
try {
monitor = ProgressUtil.getMonitorFor(monitor);
- monitor.beginTask(Messages.loadingTask, 800);
+ monitor.beginTask(Messages.loadingTask, 1000);
// check for catalina.policy to verify that this is a v4.0 config
IFile file = folder.getFile("catalina.policy");
@@ -272,23 +272,19 @@
// load catalina.policy
file = folder.getFile("catalina.policy");
in = file.getContents();
- BufferedReader br = null;
- try {
- br = new BufferedReader(new InputStreamReader(in));
- String temp = br.readLine();
- policyFile = "";
- while (temp != null) {
- policyFile += temp + "\n";
- temp = br.readLine();
- }
- } catch (Exception e) {
- Trace.trace(Trace.WARNING, "Could not load policy file", e);
- } finally {
- if (br != null)
- br.close();
- }
+ policyFile = TomcatVersionHelper.getFileContents(in);
monitor.worked(200);
+ // load catalina.properties
+ file = folder.getFile("catalina.properties");
+ if (file.exists()) {
+ in = file.getContents();
+ propertiesFile = TomcatVersionHelper.getFileContents(in);
+ }
+ else
+ propertiesFile = null;
+ monitor.worked(200);
+
if (monitor.isCanceled())
throw new Exception("Cancelled");
monitor.done();
@@ -308,7 +304,7 @@
protected void save(IPath path, boolean forceDirty, IProgressMonitor monitor) throws CoreException {
try {
monitor = ProgressUtil.getMonitorFor(monitor);
- monitor.beginTask(Messages.savingTask, 3);
+ monitor.beginTask(Messages.savingTask, 4);
// make sure directory exists
if (!path.toFile().exists()) {
@@ -338,8 +334,15 @@
bw.close();
}
monitor.worked(1);
+ if (propertiesFile != null && (forceDirty || isPropertiesDirty)) {
+ BufferedWriter bw = new BufferedWriter(new FileWriter(path.append("catalina.properties").toFile()));
+ bw.write(propertiesFile);
+ bw.close();
+ }
+ monitor.worked(1);
isServerDirty = false;
isPolicyDirty = false;
+ isPropertiesDirty = false;
if (monitor.isCanceled())
return;
@@ -350,6 +353,13 @@
}
}
+ /**
+ * Save to the given directory. All files are forced to be saved.
+ *
+ * @param path desination path for the files
+ * @param monitor a progress monitor
+ * @exception CoreException
+ */
public void save(IPath path, IProgressMonitor monitor) throws CoreException {
save(path, true, monitor);
}
@@ -364,7 +374,7 @@
public void save(IFolder folder, IProgressMonitor monitor) throws CoreException {
try {
monitor = ProgressUtil.getMonitorFor(monitor);
- monitor.beginTask(Messages.savingTask, 900);
+ monitor.beginTask(Messages.savingTask, 1100);
// save server.xml
byte[] data = serverFactory.getContents();
@@ -400,6 +410,20 @@
else
file.create(in, true, ProgressUtil.getSubMonitorFor(monitor, 200));
+ // save catalina.properties
+ if (propertiesFile != null) {
+ in = new ByteArrayInputStream(propertiesFile.getBytes());
+ file = folder.getFile("catalina.properties");
+ if (file.exists())
+ monitor.worked(200);
+ //file.setContents(in, true, true, ProgressUtil.getSubMonitorFor(monitor, 200));
+ else
+ file.create(in, true, ProgressUtil.getSubMonitorFor(monitor, 200));
+ }
+ else {
+ monitor.worked(200);
+ }
+
if (monitor.isCanceled())
return;
monitor.done();
diff --git a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/TomcatVersionHelper.java b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/TomcatVersionHelper.java
new file mode 100644
index 0000000..3c6c8b5
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/TomcatVersionHelper.java
@@ -0,0 +1,54 @@
+/**********************************************************************
+ * Copyright (c) 2007 SAS Institute, Inc and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * SAS Institute, Inc - Initial API and implementation
+ **********************************************************************/
+package org.eclipse.jst.server.tomcat.core.internal;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+
+/**
+ * Utility class for methods that are used by more that one version
+ * of Tomcat. Use of these methods makes it clear that more than
+ * one version will be impacted by changes.
+ *
+ */
+public class TomcatVersionHelper {
+
+ /**
+ * Reads the from the specified InputStream and returns
+ * the result as a String. Each line is terminated by
+ * "\n". Returns whatever is read regardless
+ * of any errors that occurs while reading.
+ *
+ * @param stream InputStream for the contents to be read
+ * @return contents read
+ * @throws IOException if error occurs closing the stream
+ */
+ public static String getFileContents(InputStream stream) throws IOException {
+ BufferedReader br = null;
+ StringBuffer sb = new StringBuffer();
+ try {
+ br = new BufferedReader(new InputStreamReader(stream));
+ String temp = br.readLine();
+ while (temp != null) {
+ sb.append(temp).append("\n");
+ temp = br.readLine();
+ }
+ } catch (Exception e) {
+ Trace.trace(Trace.WARNING, "Could not load file contents.", e);
+ } finally {
+ if (br != null)
+ br.close();
+ }
+ return sb.toString();
+ }
+}