]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/SedFilteredResource.java
Revert change breaking path retro-compatibility.
[gpl/argeo-slc.git] / runtime / org.argeo.slc.core / src / main / java / org / argeo / slc / core / execution / SedFilteredResource.java
index b5c78543cb874c7d7e5959961b459953202a17b7..676918e981f5902e24d3c0d2bf2958f8f7ad291c 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2010 Mathieu Baudier <mbaudier@argeo.org>
+ * 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.
  * 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;
@@ -53,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
@@ -83,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);
@@ -91,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;
        }
@@ -110,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();