]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/SedFilteredResource.java
Remove legacy code
[gpl/argeo-slc.git] / runtime / org.argeo.slc.core / src / main / java / org / argeo / slc / core / execution / SedFilteredResource.java
index 676c025804f5dc3ed193da0810ac3ddabe38fe5e..92987fb9f22b4825ea1f745ed937212d488b135c 100644 (file)
@@ -1,18 +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.ReadableByteChannel;
-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;
@@ -21,12 +31,14 @@ import java.util.StringTokenizer;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import org.apache.commons.io.IOUtils;
 import org.argeo.slc.SlcException;
 import org.springframework.beans.factory.FactoryBean;
 import org.springframework.beans.factory.InitializingBean;
 import org.springframework.core.io.ByteArrayResource;
 import org.springframework.core.io.Resource;
 
+/** Experimental and suboptimal */
 public class SedFilteredResource implements FactoryBean, InitializingBean {
        private Resource source;
 
@@ -36,13 +48,13 @@ 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());
@@ -56,22 +68,29 @@ public class SedFilteredResource implements FactoryBean, InitializingBean {
                                int sz = (int) fc.size();
                                bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, sz);
                        } catch (IOException e) {
-                               ReadableByteChannel channel = Channels.newChannel(source
-                                               .getInputStream());
-                               bb = ByteBuffer.allocateDirect(capacity);
-                               channel.read(bb);
+                               // ReadableByteChannel channel = Channels.newChannel(source
+                               // .getInputStream());
+                               // bb = ByteBuffer.allocateDirect(capacity);
+                               // int read = 0;
+                               // do {
+                               // read = channel.read(bb);
+                               // } while (read > 0);
+                               // FIXME : use nio to parse the stream as it goes
+                               bb = ByteBuffer.wrap(IOUtils.toByteArray(source
+                                               .getInputStream()));
                        }
                }
                CharBuffer cb = decoder.decode(bb);
                for (Pattern pattern : patterns.keySet()) {
                        Matcher matcher = pattern.matcher(cb);
-                       matcher.replaceAll(patterns.get(pattern));
+                       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);
-               ByteArrayResource res = new ByteArrayResource(out.toByteArray());
+//             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;
        }
 
@@ -86,7 +105,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();