001    package org.shiftone.jrat.inject.process;
002    
003    
004    import org.shiftone.jrat.core.JRatException;
005    import org.shiftone.jrat.inject.InjectorOptions;
006    import org.shiftone.jrat.inject.bytecode.Transformer;
007    import org.shiftone.jrat.util.log.Logger;
008    
009    import java.io.InputStream;
010    import java.io.OutputStream;
011    
012    
013    /**
014     * @author jeff@shiftone.org (Jeff Drost)
015     */
016    public class ClassFileProcessor extends AbstractFileProcessor {
017    
018        private static final Logger LOG = Logger.getLogger(ClassFileProcessor.class);
019    
020        protected void processStream(Transformer transformer, InjectorOptions options, InputStream inputStream,
021                                     OutputStream outputStream, String fileName) {
022    
023            LOG.debug("processStream");
024    
025            byte[] newClassData = transformer.inject(inputStream, fileName, options);
026    
027            try {
028                outputStream.write(newClassData);
029            }
030            catch (Exception e) {
031                throw new JRatException("unable to write data to output stream", e);
032            }
033        }
034    }