[
https://issues.apache.org/jira/browse/IO-218?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12753524#action_12753524
]
Denis Zhdanov commented on IO-218:
----------------------------------
Haruhiko,
I believe that stream-based replacement and replacement on the static data are
two different tasks from the user point of view.
However, you can see that if you have a stream-based replacement you can reuse
it with the static data as well (at least my implementation) because java
streams widely use _Decorator_ pattern and replacement stream works on any
stream that _IS-A InputStream_. I.e. you can do the following to perform
replacements against particular byte array:
# Create _ByteArrayInputStream_ for the target array;
# Create new _ReplaceFilterInputStream_ that wraps the _ByteArrayInputStream_
created before;
# Create new _ByteArrayOutputStream_;
# Filter the data from the _ByteArrayInputStream_ to the
_ByteArrayOutputStream_;
The only drawback of such approach is that another byte array will be created,
i.e. replacements don't occur in-place.
Regards, Denis.
> 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, 2} -> {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.