/** * @param args command line arguments. * @throws BindException configuration error. * @throws InjectionException configuration error. * @throws IOException cannot process command line parameters. */ public static void main(final String[] args) throws BindException, InjectionException, IOException { final Tang tang = Tang.Factory.getTang(); final ConfigurationBuilder confBuilder = tang.newConfigurationBuilder(); new CommandLine(confBuilder).processCommandLine(args); final Configuration config = confBuilder.build(); final Injector injector = tang.newInjector(config); final PrintTypeHierarchy myself = injector.getInstance(PrintTypeHierarchy.class); try (final Writer out = new OutputStreamWriter( new FileOutputStream("type-hierarchy.dot"), StandardCharsets.UTF_8)) { out.write(GraphvizConfigVisitor.getGraphvizString(config, true, true)); } final InjectionPlan<PrintTypeHierarchy> plan = injector.getInjectionPlan(PrintTypeHierarchy.class); try (final Writer out = new OutputStreamWriter( new FileOutputStream("injection-plan.dot"), StandardCharsets.UTF_8)) { out.write(GraphvizInjectionPlanVisitor.getGraphvizString(plan, true)); } System.out.println(myself); }
public void validatePlan() throws IOException, BindException, InjectionException { final Tang t = Tang.Factory.getTang(); // TODO[JIRA REEF-400] Use the AvroClassHierarchySerializer final ClassHierarchyProto.Node root; try (final InputStream chin = new FileInputStream(this.ch)) { root = ClassHierarchyProto.Node.parseFrom(chin); } final ClassHierarchy classHierarchy = new ProtocolBufferClassHierarchy(root); if (!inConfig.canRead()) { throw new IOException("Cannot read input config file: " + inConfig); } final AvroConfigurationSerializer avroSerializer = new AvroConfigurationSerializer(); final Configuration conf = avroSerializer.fromFile(inConfig, classHierarchy); if (target != null) { final Injector i = t.newInjector(conf); final InjectionPlan<?> ip = i.getInjectionPlan(target); if (!ip.isInjectable()) { throw new InjectionException(target + " is not injectable: " + ip.toCantInjectString()); } } avroSerializer.toFile(conf, outConfig); }