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 <david_jencks@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() {
>
>
>
>
|