Index: entity-persistence/src/java/oracle/toplink/essentials/internal/weaving/StaticWeaveDirectoryOutputHandler.java =================================================================== RCS file: /cvs/glassfish/entity-persistence/src/java/oracle/toplink/essentials/internal/weaving/StaticWeaveDirectoryOutputHandler.java,v retrieving revision 1.3 diff -u -r1.3 StaticWeaveDirectoryOutputHandler.java --- entity-persistence/src/java/oracle/toplink/essentials/internal/weaving/StaticWeaveDirectoryOutputHandler.java 22 May 2007 23:54:43 -0000 1.3 +++ entity-persistence/src/java/oracle/toplink/essentials/internal/weaving/StaticWeaveDirectoryOutputHandler.java 18 Sep 2007 00:51:50 -0000 @@ -104,8 +104,16 @@ if((new File(this.source.toURI())).isDirectory()){ File sourceEntry = new File(this.source.getPath()+entry.getName()); FileInputStream fis = new FileInputStream(sourceEntry); - byte[] classBytes = new byte[fis.available()]; - fis.read(classBytes); + byte[] buffer = new byte[1024]; + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + int bytesRead = 0; + while ((bytesRead = fis.read(buffer)) != -1) { + baos.write(buffer, 0, bytesRead); + } + baos.flush(); + byte[] classBytes = baos.toByteArray(); + (new FileOutputStream(target)).write(classBytes); }else{ readwriteStreams(jis,(new FileOutputStream(target))); Index: entity-persistence/src/java/oracle/toplink/essentials/weaving/StaticWeaveProcessor.java =================================================================== RCS file: /cvs/glassfish/entity-persistence/src/java/oracle/toplink/essentials/weaving/StaticWeaveProcessor.java,v retrieving revision 1.3 diff -u -r1.3 StaticWeaveProcessor.java --- entity-persistence/src/java/oracle/toplink/essentials/weaving/StaticWeaveProcessor.java 22 May 2007 23:54:55 -0000 1.3 +++ entity-persistence/src/java/oracle/toplink/essentials/weaving/StaticWeaveProcessor.java 18 Sep 2007 00:51:50 -0000 @@ -286,8 +286,16 @@ //if the class bytes can't be read. InputStream is = this.classLoader.getResourceAsStream(entryName); if (is!=null){ - originalClassBytes = new byte[is.available()]; - is.read(originalClassBytes); + + byte[] buffer = new byte[1024]; + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + int bytesRead = 0; + while ((bytesRead = is.read(buffer)) != -1) { + baos.write(buffer, 0, bytesRead); + } + baos.flush(); + originalClassBytes = baos.toByteArray(); + }else{ swoh.addEntry(entryInputStream, newEntry); continue;