X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=runtime%2Forg.argeo.slc.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fcore%2Fexecution%2FSedFilteredResource.java;h=676918e981f5902e24d3c0d2bf2958f8f7ad291c;hb=8c588d3128b3885ac4fe0a0d2fbd358640d336a5;hp=9b4ceff47c418bbc24261f9a8932e860afa1924d;hpb=7a25f69ee62187261e9cdd19def72f1d3e9dadfb;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/SedFilteredResource.java b/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/SedFilteredResource.java index 9b4ceff47..676918e98 100644 --- a/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/SedFilteredResource.java +++ b/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/SedFilteredResource.java @@ -1,17 +1,28 @@ +/* + * Copyright (C) 2007-2012 Argeo GmbH + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.argeo.slc.core.execution; -import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.CharBuffer; -import java.nio.channels.Channels; import java.nio.channels.FileChannel; -import java.nio.channels.WritableByteChannel; import java.nio.charset.Charset; import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -37,20 +48,22 @@ public class SedFilteredResource implements FactoryBean, InitializingBean { private String charset = "UTF-8"; private Charset cs; private CharsetDecoder decoder; - private CharsetEncoder encoder; + + // private CharsetEncoder encoder; public Object getObject() throws Exception { if (filters.size() == 0) return source; - //int capacity = 100 * 1024;// 100 KB + // int capacity = 100 * 1024;// 100 KB ByteBuffer bb; if (source instanceof ByteArrayResource) { bb = ByteBuffer.wrap(((ByteArrayResource) source).getByteArray()); } else { + FileInputStream fis = null; try { File file = source.getFile(); - FileInputStream fis = new FileInputStream(file); + fis = new FileInputStream(file); FileChannel fc = fis.getChannel(); // Get the file's size and then map it into memory @@ -67,6 +80,8 @@ public class SedFilteredResource implements FactoryBean, InitializingBean { // FIXME : use nio to parse the stream as it goes bb = ByteBuffer.wrap(IOUtils.toByteArray(source .getInputStream())); + } finally { + IOUtils.closeQuietly(fis); } } CharBuffer cb = decoder.decode(bb); @@ -75,10 +90,10 @@ public class SedFilteredResource implements FactoryBean, InitializingBean { String output = matcher.replaceAll(patterns.get(pattern)); cb = CharBuffer.wrap(output); } -// ByteBuffer bbout = encoder.encode(cb); -// ByteArrayOutputStream out = new ByteArrayOutputStream(capacity); -// WritableByteChannel wchannel = Channels.newChannel(out); -// wchannel.write(bbout); + // ByteBuffer bbout = encoder.encode(cb); + // ByteArrayOutputStream out = new ByteArrayOutputStream(capacity); + // WritableByteChannel wchannel = Channels.newChannel(out); + // wchannel.write(bbout); ByteArrayResource res = new ByteArrayResource(cb.toString().getBytes()); return res; } @@ -94,7 +109,7 @@ public class SedFilteredResource implements FactoryBean, InitializingBean { public void afterPropertiesSet() throws Exception { cs = Charset.forName(charset); decoder = cs.newDecoder(); - encoder = cs.newEncoder(); + // encoder = cs.newEncoder(); for (String sedStr : filters) { sedStr = sedStr.trim();