[jbosstools-issues] [JBoss JIRA] (JBIDE-10232) exploded deploy does not work on windows because of use of File#renameTo
Jim Sellers (Created) (JIRA)
jira-events at lists.jboss.org
Wed Nov 23 11:13:40 EST 2011
exploded deploy does not work on windows because of use of File#renameTo
------------------------------------------------------------------------
Key: JBIDE-10232
URL: https://issues.jboss.org/browse/JBIDE-10232
Project: Tools (JBoss Tools)
Issue Type: Bug
Components: JBossAS/Servers
Environment: JBossAS Tools: Version: 2.3.0.v20111104-1515-H45-M4
Java version: 1.5.0_22, vendor: Sun Microsystems Inc.
Java home: C:\devtools\java\jdk1.5.0_22\jre
Default locale: en_CA, platform encoding: Cp1252
OS name: "windows xp", version: "5.1", arch: "x86", family: "windows"
Reporter: Jim Sellers
Assignee: Rob Stryker
Setup: in a project on windows with an ear / war / jar in an exploded format and having started the server in debug mode. If you make any changes to a file in the jar, the jar will be rebuilt and try to be deployed. This seems to work but it pops up an error dialog box *every time*. The error message looks like the following:
{code}
Error renaming C:\devtools\jboss\jboss-4.2.3.GA\server\default\tmp\jbosstoolsTemp\tmp2587902707203199490.jar to C:\devtools\jboss\jboss-4.2.3.GA\server\default\deploy\MyExampleEAR.ear\MyExampleWAR.war\WEB-INF\lib\MyDependantJar-2.3-SNAPSHOT.jar.
This may be caused by your server's temporary deploy directory being on a different filesystem than the final destination.
You may adjust these settings in the server editor.
{code}
For the method org.jboss.ide.eclipse.as.core.server.xpl.PublishCopyUtil#safeRename(File,File,int) it calls File#renameTo(File) for moving the file from the temp directory to WEB-INF/lib. From the javadocs for renameTo it says that this might not work if the file in the destination already exists.
Possible fixes:
# before calling the rename, try to delete on the destination file ( to.delete() )
# org.apache.commons.io.FileUtils#moveFile(File,File) tries to call the renameTo and if that fails it falls back to coping the file to the destination.
{code:JAVA|title=Sample Unit test}
/* This test needs to be run on windows. */
@Test
public void testCopyForWindows() throws IOException {
File from = File.createTempFile("source", ".txt");
File to = File.createTempFile("target", ".txt");
File[] files = {from, to};
for (File file : files) {
// set for cleanup
file.deleteOnExit();
assertTrue("file should exist" + file.getAbsolutePath(), file.exists());
assertTrue("file should be writable" + file.getAbsolutePath(), file.canWrite());
}
// if safeRename was not private!
assertTrue("should have been able to rename the file", safeRename(from, to, 10));
}
{code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jbosstools-issues
mailing list