/** * Creates and returns a {@link ContentsTransformer}s that "chains" the two delegates. * <p> * If neither of the two delegate transformers is {@link ContentsTransformations#COPY}, then the returned * transfomer, when executed, will create and later joined one background thread. * </p> */ public static ContentsTransformer chain(final ContentsTransformer transformer1, final ContentsTransformer transformer2) { if (transformer1 == ContentsTransformations.COPY) return transformer2; if (transformer2 == ContentsTransformations.COPY) return transformer1; return new ContentsTransformer() { @Override public void transform(final String name, InputStream is, OutputStream os) throws IOException { transformer2.transform( name, new ByteFilterInputStream(is, new ContentsTransformerByteFilter(transformer1, name)), os ); } }; }
/** * Creates and returns an {@link InputStream} that reads from the <var>delegate</var> and <em>through</em> the * <var>transformer</var> * * @param name Designates the contents that is transformed; may be used by the <var>transformer</var> e.g. to * decide how to transform the contents */ public static InputStream asInputStream(InputStream delegate, ContentsTransformer transformer, String name) { if (transformer == ContentsTransformations.COPY) return delegate; return new ByteFilterInputStream(delegate, new ContentsTransformerByteFilter(transformer, name)); }
@Override public void transform(final String name, InputStream is, OutputStream os) throws IOException { transformer2.transform( name, new ByteFilterInputStream(is, new ContentsTransformerByteFilter(transformer1, name)), os ); } };
disassemblerByteFilter.setHideVars(this.disassembleClassFilesButHideVars); disassemblerByteFilter.setSymbolicLabels(this.disassembleClassFilesSymbolicLabels); is = new ByteFilterInputStream(is, disassemblerByteFilter);
new ByteFilterInputStream(is, new ContentsTransformerByteFilter(this.transformer, path)), os );
new ByteFilterInputStream(is, new ContentsTransformerByteFilter(this.transformer, name)), os );