commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "haruhiko nishi (JIRA)" <j...@apache.org>
Subject [jira] Issue Comment Edited: (IO-218) Introduce new filter input stream with replacement facilities
Date Thu, 10 Sep 2009 05:52:57 GMT

    [ https://issues.apache.org/jira/browse/IO-218?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12753434#action_12753434
] 

haruhiko nishi edited comment on IO-218 at 9/9/09 10:51 PM:
------------------------------------------------------------

I've tried ReplaceFilterInputStream and got the following Exception. 

all I did was
{code}
public class TestMain {
    public static void main(String[] args)throws Exception{
        Map<byte[],byte[]> map=new HashMap<byte[],byte[]>();
        map.put("yahoo".getBytes(),"google".getBytes());
        ReplaceFilterInputStream in=new ReplaceFilterInputStream(new FileInputStream("test.html"),map);
        int bytesRead;
        FileOutputStream fout=new FileOutputStream("test_mod_1.html");
        byte[] tmp=new byte[4096];
        while((bytesRead=in.read(tmp,0,tmp.length))!=-1)
            fout.write(tmp,0,bytesRead);
        in.close();
        fout.close();
    }
}
{code}

then I get

Exception in thread "main" java.io.IOException: Push back buffer is full
	at java.io.PushbackInputStream.unread(PushbackInputStream.java:215)
	at jp.co.alibaba.util.template.reverse.groovy.ReplaceFilterInputStream.replaceWithExpand(ReplaceFilterInputStream.java:467)
	at jp.co.alibaba.util.template.reverse.groovy.ReplaceFilterInputStream.tryToReplace(ReplaceFilterInputStream.java:405)
	at jp.co.alibaba.util.template.reverse.groovy.ReplaceFilterInputStream.doRead(ReplaceFilterInputStream.java:340)
	at jp.co.alibaba.util.template.reverse.groovy.ReplaceFilterInputStream.read(ReplaceFilterInputStream.java:239)
	at TestMain.main(TestMain.java:30)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)

      was (Author: hanishi):
    I've tried ReplaceFilterInputStream and got the following Exception. 

all I did was

public class TestMain {
    public static void main(String[] args)throws Exception{
        Map<byte[],byte[]> map=new HashMap<byte[],byte[]>();
        map.put("yahoo".getBytes(),"google".getBytes());
        ReplaceFilterInputStream in=new ReplaceFilterInputStream(new FileInputStream("test.html"),map);
        int bytesRead;
        FileOutputStream fout=new FileOutputStream("test_mod_1.html");
        byte[] tmp=new byte[4096];
        while((bytesRead=in.read(tmp,0,tmp.length))!=-1)
            fout.write(tmp,0,bytesRead);
        in.close();
        fout.close();
    }
}

then I get

Exception in thread "main" java.io.IOException: Push back buffer is full
	at java.io.PushbackInputStream.unread(PushbackInputStream.java:215)
	at jp.co.alibaba.util.template.reverse.groovy.ReplaceFilterInputStream.replaceWithExpand(ReplaceFilterInputStream.java:467)
	at jp.co.alibaba.util.template.reverse.groovy.ReplaceFilterInputStream.tryToReplace(ReplaceFilterInputStream.java:405)
	at jp.co.alibaba.util.template.reverse.groovy.ReplaceFilterInputStream.doRead(ReplaceFilterInputStream.java:340)
	at jp.co.alibaba.util.template.reverse.groovy.ReplaceFilterInputStream.read(ReplaceFilterInputStream.java:239)
	at TestMain.main(TestMain.java:30)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)
  
> Introduce new filter input stream with replacement facilities
> -------------------------------------------------------------
>
>                 Key: IO-218
>                 URL: https://issues.apache.org/jira/browse/IO-218
>             Project: Commons IO
>          Issue Type: Improvement
>          Components: Filters
>    Affects Versions: 1.4
>         Environment: all environments
>            Reporter: Denis Zhdanov
>             Fix For: 1.4, 2.0
>
>         Attachments: ReplaceFilterInputStream.java, ReplaceFilterInputStreamTest.java
>
>   Original Estimate: 120h
>  Remaining Estimate: 120h
>
> It seems convenient to have a FilterInputStream that allows to apply predefined repalcement
rules against the read data. 
> For example we may want to configure the following replacements:
> {noformat}
> {1, } -> {7, 8}
> {1} -> {9}
> {3, 2} -> {}
> {noformat}
> and apply them to the input like
> {noformat}
> {4, 3, 2, 1, 2, 1, 3}
> {noformat}
> in order to get a result like
> {noformat}
> {4, 7, 8, 9, 3}
> {noformat}
> I created the class that allows to do that and attached it to this ticket. Unit test
class at junit4 format is attached as well.
> So, the task is to review the provided classes, consider if it's worth to add them to
commons-io distribution and perform the inclusion in the case of possible result.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message