You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by bu...@apache.org on 2002/08/12 14:49:55 UTC
DO NOT REPLY [Bug 11630] New: -
RMIC-Task moveGeneratedFile(...) StringIndexOutOfBoundsException
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=11630>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=11630
RMIC-Task moveGeneratedFile(...) StringIndexOutOfBoundsException
Summary: RMIC-Task moveGeneratedFile(...)
StringIndexOutOfBoundsException
Product: Ant
Version: 1.5
Platform: PC
OS/Version: Linux
Status: NEW
Severity: Blocker
Priority: Other
Component: Core tasks
AssignedTo: ant-dev@jakarta.apache.org
ReportedBy: sebi+bugzilla@tux.wh17.tu-dresden.de
The solution (as introduced in
src/main/org/apache/tools/ant/taskdefs/Rmic.java rev1.32) to really move
generated *.java (if sourcebase is specified) from base dir to sourcebase
creates an StringIndexOutOfBoundsException.
The reason for the exception is line 574:
String sourceFileName =
generatedFiles[i].substring(0, classFileName.length() - 6)
It calculates the index based on the classFileName. The following case
doesn't work with this calculation:
Here we have an interface jatek.server.ChapterContainer (classname) or
jatek.server.ChapterContainer.class (classFileName) respective.
generatedFiles[0] is jatek/server/_ChapterContainer_Tie.class
The sourceFileName (as generated in line 574) gets
jatek/server/_ChapterContaine.java
As you can see, the '_' in front of the file name causes the 'r' to be left.
This is only an error, it doesn't throw the exception because the
calculated index is 29. When we go an iteration further, we get
generatedFiles[1]=jatek/_Chapter_Stub.class. This string's length is only
25. So the calculated index 29 (from classFileName) is to long and
therefore causes the exception.
I think you can solve the problem with the following patch. The index is
calculated each iteration from generatedFiles[i] instead of from the
interface classname.
---------------------------------------------------------------------------
--- /tmp/Rmic.java.BAK 2002-08-12 12:41:42.000000000 +0200
+++ src/main/org/apache/tools/ant/taskdefs/Rmic.java 2002-08-12
12:41:52.000000000 +0200
@@ -572,7 +572,7 @@
}
String sourceFileName =
- generatedFiles[i].substring(0, classFileName.length() - 6)
+ generatedFiles[i].substring(0, generatedFiles[i].length() -
6)
+ ".java";
File oldFile = new File(baseDir, sourceFileName);
---------------------------------------------------------------------------
Sebastian Klamar
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>