001 package org.shiftone.jrat.inject.process; 002 003 004 import org.shiftone.jrat.inject.InjectorOptions; 005 import org.shiftone.jrat.inject.bytecode.Transformer; 006 import org.shiftone.jrat.util.Assert; 007 import org.shiftone.jrat.util.log.Logger; 008 009 import java.io.File; 010 011 012 /** 013 * @author jeff@shiftone.org (Jeff Drost) 014 */ 015 public class DirectoryFileProcessor implements FileProcessor { 016 017 private static final Logger LOG = Logger.getLogger(DirectoryFileProcessor.class); 018 private FileProcessor fileProcessor; 019 020 public DirectoryFileProcessor(FileProcessor fileProcessor) { 021 this.fileProcessor = fileProcessor; 022 } 023 024 025 public void process(Transformer transformer, InjectorOptions options, File source, File target) { 026 027 LOG.info("process " + source); 028 Assert.assertTrue("source exists", source.exists()); 029 Assert.assertTrue("source is directory", source.isDirectory()); 030 031 if (!target.exists()) { 032 target.mkdirs(); 033 } 034 035 File[] files = source.listFiles(); 036 037 for (int i = 0; i < files.length; i++) { 038 File childSource = files[i]; 039 File childTarget = new File(target.getAbsolutePath() + File.separator + files[i].getName()); 040 041 fileProcessor.process(transformer, options, childSource, childTarget); 042 } 043 } 044 }