/* * Copyright 2014 Edward Aftandilian. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * Copyright 2014 Edward Aftandilian. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package edu.tufts.eaftan.hprofparser; import com.google.common.collect.Lists; import edu.tufts.eaftan.hprofparser.handler.examples.PrintHandler; import edu.tufts.eaftan.hprofparser.handler.RecordHandler; import edu.tufts.eaftan.hprofparser.parser.HprofParser; import java.io.BufferedInputStream; import java.io.DataInputStream; import java.io.FileInputStream; import java.io.IOException; import java.util.List; public class Parse { private static final Class<? extends RecordHandler> DEFAULT_HANDLER = PrintHandler.class; public static void main(String[] args) { List<String> argList = Lists.newArrayList(args); if (argList.size() < 1) { System.out.println("Usage: java Parse [--handler=<handler class>] inputfile"); System.exit(1); } Class<? extends RecordHandler> handlerClass = DEFAULT_HANDLER; for (String arg : argList) { if (arg.startsWith("--handler=")) { String handlerClassName = arg.substring("--handler=".length()); try { handlerClass = (Class<? extends RecordHandler>) Class.forName(handlerClassName); } catch (ClassNotFoundException e) { System.err.println("Could not find class " + handlerClassName); System.exit(1); } } } RecordHandler handler = null; try { handler = handlerClass.newInstance(); } catch (InstantiationException | IllegalAccessException e) { System.err.println("Could not instantiate " + handlerClass); System.exit(1); } HprofParser parser = new HprofParser(handler); try { FileInputStream fs = new FileInputStream(argList.get(argList.size() - 1)); DataInputStream in = new DataInputStream(new BufferedInputStream(fs)); parser.parse(in); in.close(); } catch (IOException e) { System.err.println(e); } } }