You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geronimo.apache.org by David Jencks <da...@yahoo.com> on 2007/08/08 07:45:39 UTC
Possible last minute bugfix in 2.0
The plugin installer has an odd interpretation of where to copy files
into the server that I think would be good to fix before 2.0 gets
out. I've already fixed it in branches 2.0 and trunk. See
GERONIMO-3385
This changes the behavior of the plugin installer so it might be a
good idea to have the new behavior in 2.0 to avoid backward
compatibility problems in the future.
To apply to the 2.0.0
svn merge -r 563591: 563592 https://svn.apache.org/repos/asf/geronimo/
server/branches/2.0 .
There are 3 changes:
- trim source file so it can be turned into a file :-)
- don't prepend "var/" to the target directory
- create the target directory if it doesn't already exist.
This only affects the plugin installer which isn't used in any of our
tests.
thanks
david jencks
Here's the diff for easy reference:
Modified:
geronimo/server/branches/2.0/modules/geronimo-system/src/main/
java/org/apache/geronimo/system/plugin/PluginInstallerGBean.java
geronimo/server/branches/2.0/modules/geronimo-system/src/main/
java/org/apache/geronimo/system/plugin/PluginMetadata.java
Modified: geronimo/server/branches/2.0/modules/geronimo-system/src/
main/java/org/apache/geronimo/system/plugin/PluginInstallerGBean.java
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.0/
modules/geronimo-system/src/main/java/org/apache/geronimo/system/
plugin/PluginInstallerGBean.java?
view=diff&rev=563592&r1=563591&r2=563592
========================================================================
======
--- geronimo/server/branches/2.0/modules/geronimo-system/src/main/
java/org/apache/geronimo/system/plugin/PluginInstallerGBean.java
(original)
+++ geronimo/server/branches/2.0/modules/geronimo-system/src/main/
java/org/apache/geronimo/system/plugin/PluginInstallerGBean.java Tue
Aug 7 10:50:04 2007
@@ -802,17 +802,20 @@
monitor.getResults().setCurrentFile(data.getSourceFile());
monitor.getResults().setCurrentMessage("Copying
"+data.getSourceFile()+" from plugin to Geronimo installation");
Set set;
+ String sourceFile = data.getSourceFile().trim();
try {
- set = configStore.resolve(configID, null,
data.getSourceFile());
+ set = configStore.resolve(configID, null, sourceFile);
} catch (NoSuchConfigException e) {
log.error("Unable to identify module "+configID+"
to copy files from");
throw new IllegalStateException("Unable to identify
module "+configID+" to copy files from", e);
}
if(set.size() == 0) {
- log.error("Installed configuration into repository
but cannot locate file to copy "+data.getSourceFile());
+ log.error("Installed configuration into repository
but cannot locate file to copy "+sourceFile);
continue;
}
- File targetDir = data.isRelativeToVar() ?
serverInfo.resolveServer("var/"+data.getDestDir()) :
serverInfo.resolve(data.getDestDir());
+ File targetDir = data.isRelativeToServer() ?
serverInfo.resolveServer(data.getDestDir()) : serverInfo.resolve
(data.getDestDir());
+
+ createDirectory(targetDir);
if(!targetDir.isDirectory()) {
log.error("Plugin install cannot write file
"+data.getSourceFile()+" to "+data.getDestDir()+" because
"+targetDir.getAbsolutePath()+" is not a directory");
continue;
@@ -843,6 +846,15 @@
}
}
+ private static void createDirectory(File dir) throws IOException {
+ if (dir != null && !dir.exists()) {
+ boolean success = dir.mkdirs();
+ if (!success) {
+ throw new IOException("Cannot create directory " +
dir.getAbsolutePath());
+ }
+ }
+ }
+
private void copyFile(InputStream in, FileOutputStream out)
throws IOException {
byte[] buf = new byte[4096];
int count;
@@ -1919,7 +1931,7 @@
for (int i = 0; i < data.getFilesToCopy().length; i++) {
PluginMetadata.CopyFile file = data.getFilesToCopy()[i];
Element copy = doc.createElement("copy-file");
- copy.setAttribute("relative-to", file.isRelativeToVar
() ? "server" : "geronimo");
+ copy.setAttribute("relative-to", file.isRelativeToServer
() ? "server" : "geronimo");
copy.setAttribute("dest-dir", file.getDestDir());
copy.appendChild(doc.createTextNode(file.getSourceFile
()));
config.appendChild(copy);
Modified: geronimo/server/branches/2.0/modules/geronimo-system/src/
main/java/org/apache/geronimo/system/plugin/PluginMetadata.java
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.0/
modules/geronimo-system/src/main/java/org/apache/geronimo/system/
plugin/PluginMetadata.java?view=diff&rev=563592&r1=563591&r2=563592
========================================================================
======
--- geronimo/server/branches/2.0/modules/geronimo-system/src/main/
java/org/apache/geronimo/system/plugin/PluginMetadata.java (original)
+++ geronimo/server/branches/2.0/modules/geronimo-system/src/main/
java/org/apache/geronimo/system/plugin/PluginMetadata.java Tue Aug 7
10:50:04 2007
@@ -278,18 +278,18 @@
}
public static class CopyFile implements Serializable {
- private final boolean relativeToVar; // if not, relative to
the Geronimo install directory
+ private final boolean relativeToServer; // if not, relative
to the Geronimo install directory
private final String sourceFile;
private final String destDir;
- public CopyFile(boolean relativeToVar, String sourceFile,
String destDir) {
- this.relativeToVar = relativeToVar;
+ public CopyFile(boolean relativeToServer, String sourceFile,
String destDir) {
+ this.relativeToServer = relativeToServer;
this.sourceFile = sourceFile;
this.destDir = destDir;
}
- public boolean isRelativeToVar() {
- return relativeToVar;
+ public boolean isRelativeToServer() {
+ return relativeToServer;
}
public String getSourceFile() {
Re: Possible last minute bugfix in 2.0
Posted by Matt Hogstrom <ma...@hogstrom.org>.
This is great; I expect that we're going to find bugs for the next
several weeks. I suggest that we fix this in 2.0.1 and make it a
priority to get these bugs integrated in that and spin up a release
in the next 4 - 5 weeks. By that time a number of the dependent
projects will have completed their releases as well.
On Aug 8, 2007, at 6:44 AM, Jarek Gawor wrote:
> Lin also found https://issues.apache.org/jira/browse/GERONIMO-3387. I
> guess it affects a small number of cases (.war file without web.xml
> embedded in .ear file) but it's something it's supposed to work in
> Java EE 5.
>
> Jarek
Re: Possible last minute bugfix in 2.0
Posted by Jarek Gawor <jg...@gmail.com>.
Lin also found https://issues.apache.org/jira/browse/GERONIMO-3387. I
guess it affects a small number of cases (.war file without web.xml
embedded in .ear file) but it's something it's supposed to work in
Java EE 5.
Jarek
On 8/8/07, David Jencks <da...@yahoo.com> wrote:
> The plugin installer has an odd interpretation of where to copy files
> into the server that I think would be good to fix before 2.0 gets
> out. I've already fixed it in branches 2.0 and trunk. See
> GERONIMO-3385
>
> This changes the behavior of the plugin installer so it might be a
> good idea to have the new behavior in 2.0 to avoid backward
> compatibility problems in the future.
>
> To apply to the 2.0.0
>
> svn merge -r 563591: 563592 https://svn.apache.org/repos/asf/geronimo/
> server/branches/2.0 .
>
> There are 3 changes:
> - trim source file so it can be turned into a file :-)
> - don't prepend "var/" to the target directory
> - create the target directory if it doesn't already exist.
>
> This only affects the plugin installer which isn't used in any of our
> tests.
>
> thanks
> david jencks
>
> Here's the diff for easy reference:
>
> Modified:
> geronimo/server/branches/2.0/modules/geronimo-system/src/main/
> java/org/apache/geronimo/system/plugin/PluginInstallerGBean.java
> geronimo/server/branches/2.0/modules/geronimo-system/src/main/
> java/org/apache/geronimo/system/plugin/PluginMetadata.java
>
> Modified: geronimo/server/branches/2.0/modules/geronimo-system/src/
> main/java/org/apache/geronimo/system/plugin/PluginInstallerGBean.java
> URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.0/
> modules/geronimo-system/src/main/java/org/apache/geronimo/system/
> plugin/PluginInstallerGBean.java?
> view=diff&rev=563592&r1=563591&r2=563592
> ========================================================================
> ======
> --- geronimo/server/branches/2.0/modules/geronimo-system/src/main/
> java/org/apache/geronimo/system/plugin/PluginInstallerGBean.java
> (original)
> +++ geronimo/server/branches/2.0/modules/geronimo-system/src/main/
> java/org/apache/geronimo/system/plugin/PluginInstallerGBean.java Tue
> Aug 7 10:50:04 2007
> @@ -802,17 +802,20 @@
> monitor.getResults().setCurrentFile(data.getSourceFile());
> monitor.getResults().setCurrentMessage("Copying
> "+data.getSourceFile()+" from plugin to Geronimo installation");
> Set set;
> + String sourceFile = data.getSourceFile().trim();
> try {
> - set = configStore.resolve(configID, null,
> data.getSourceFile());
> + set = configStore.resolve(configID, null, sourceFile);
> } catch (NoSuchConfigException e) {
> log.error("Unable to identify module "+configID+"
> to copy files from");
> throw new IllegalStateException("Unable to identify
> module "+configID+" to copy files from", e);
> }
> if(set.size() == 0) {
> - log.error("Installed configuration into repository
> but cannot locate file to copy "+data.getSourceFile());
> + log.error("Installed configuration into repository
> but cannot locate file to copy "+sourceFile);
> continue;
> }
> - File targetDir = data.isRelativeToVar() ?
> serverInfo.resolveServer("var/"+data.getDestDir()) :
> serverInfo.resolve(data.getDestDir());
> + File targetDir = data.isRelativeToServer() ?
> serverInfo.resolveServer(data.getDestDir()) : serverInfo.resolve
> (data.getDestDir());
> +
> + createDirectory(targetDir);
> if(!targetDir.isDirectory()) {
> log.error("Plugin install cannot write file
> "+data.getSourceFile()+" to "+data.getDestDir()+" because
> "+targetDir.getAbsolutePath()+" is not a directory");
> continue;
> @@ -843,6 +846,15 @@
> }
> }
>
> + private static void createDirectory(File dir) throws IOException {
> + if (dir != null && !dir.exists()) {
> + boolean success = dir.mkdirs();
> + if (!success) {
> + throw new IOException("Cannot create directory " +
> dir.getAbsolutePath());
> + }
> + }
> + }
> +
> private void copyFile(InputStream in, FileOutputStream out)
> throws IOException {
> byte[] buf = new byte[4096];
> int count;
> @@ -1919,7 +1931,7 @@
> for (int i = 0; i < data.getFilesToCopy().length; i++) {
> PluginMetadata.CopyFile file = data.getFilesToCopy()[i];
> Element copy = doc.createElement("copy-file");
> - copy.setAttribute("relative-to", file.isRelativeToVar
> () ? "server" : "geronimo");
> + copy.setAttribute("relative-to", file.isRelativeToServer
> () ? "server" : "geronimo");
> copy.setAttribute("dest-dir", file.getDestDir());
> copy.appendChild(doc.createTextNode(file.getSourceFile
> ()));
> config.appendChild(copy);
>
> Modified: geronimo/server/branches/2.0/modules/geronimo-system/src/
> main/java/org/apache/geronimo/system/plugin/PluginMetadata.java
> URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.0/
> modules/geronimo-system/src/main/java/org/apache/geronimo/system/
> plugin/PluginMetadata.java?view=diff&rev=563592&r1=563591&r2=563592
> ========================================================================
> ======
> --- geronimo/server/branches/2.0/modules/geronimo-system/src/main/
> java/org/apache/geronimo/system/plugin/PluginMetadata.java (original)
> +++ geronimo/server/branches/2.0/modules/geronimo-system/src/main/
> java/org/apache/geronimo/system/plugin/PluginMetadata.java Tue Aug 7
> 10:50:04 2007
> @@ -278,18 +278,18 @@
> }
>
> public static class CopyFile implements Serializable {
> - private final boolean relativeToVar; // if not, relative to
> the Geronimo install directory
> + private final boolean relativeToServer; // if not, relative
> to the Geronimo install directory
> private final String sourceFile;
> private final String destDir;
>
> - public CopyFile(boolean relativeToVar, String sourceFile,
> String destDir) {
> - this.relativeToVar = relativeToVar;
> + public CopyFile(boolean relativeToServer, String sourceFile,
> String destDir) {
> + this.relativeToServer = relativeToServer;
> this.sourceFile = sourceFile;
> this.destDir = destDir;
> }
>
> - public boolean isRelativeToVar() {
> - return relativeToVar;
> + public boolean isRelativeToServer() {
> + return relativeToServer;
> }
>
> public String getSourceFile() {
>
>
>
>