@Override public void perform(GraphRewrite event, EvaluationContext context) { switch (getDecompilerType()) { case FERNFLOWER: new FernflowerDecompilerOperation().perform(event, context); break; case PROCYON: new ProcyonDecompilerOperation().perform(event, context); break; default: throw new WindupException("Failed to select decompiler due to unrecognized type: " + getDecompilerType()); } }
@Override public void perform(GraphRewrite event, EvaluationContext context) { switch (getDecompilerType()) { case FERNFLOWER: new FernflowerDecompilerOperation().perform(event, context); break; case PROCYON: new ProcyonDecompilerOperation().perform(event, context); break; default: throw new WindupException("Failed to select decompiler due to unrecognized type: " + getDecompilerType()); } }
private void markAsReportReportable(GraphRewrite event, EvaluationContext context, JavaClassModel reference) { AbstractJavaSourceModel originalSource = reference.getOriginalSource(); JavaSourceFileModel decompiledSource = reference.getDecompiledSource(); if (originalSource == null && decompiledSource == null && reference.getClassFile() != null && reference.getClassFile() instanceof JavaClassFileModel) { JavaClassFileModel javaClassFileModel = (JavaClassFileModel) reference.getClassFile(); javaClassFileModel.setSkipDecompilation(false); // try to decompile it FernflowerDecompilerOperation decompilerOperation = new FernflowerDecompilerOperation(); decompilerOperation.setFilesToDecompile(Collections.singletonList(javaClassFileModel)); decompilerOperation.perform(event, context); // Commit to ensure that we are using the latest data (otherwise data from other threads may not // be visible). event.getGraphContext().commit(); if (reference.getDecompiledSource() != null) { reference.getDecompiledSource().setGenerateSourceReport(true); } } if (originalSource != null) originalSource.setGenerateSourceReport(true); if (decompiledSource != null) decompiledSource.setGenerateSourceReport(true); }
private void markAsReportReportable(GraphRewrite event, EvaluationContext context, JavaClassModel reference) { AbstractJavaSourceModel originalSource = reference.getOriginalSource(); JavaSourceFileModel decompiledSource = reference.getDecompiledSource(); if (originalSource == null && decompiledSource == null && reference.getClassFile() != null && reference.getClassFile() instanceof JavaClassFileModel) { JavaClassFileModel javaClassFileModel = (JavaClassFileModel) reference.getClassFile(); javaClassFileModel.setSkipDecompilation(false); // try to decompile it FernflowerDecompilerOperation decompilerOperation = new FernflowerDecompilerOperation(); decompilerOperation.setFilesToDecompile(Collections.singletonList(javaClassFileModel)); decompilerOperation.perform(event, context); // Commit to ensure that we are using the latest data (otherwise data from other threads may not // be visible). event.getGraphContext().commit(); if (reference.getDecompiledSource() != null) { reference.getDecompiledSource().setGenerateSourceReport(true); } } if (originalSource != null) originalSource.setGenerateSourceReport(true); if (decompiledSource != null) decompiledSource.setGenerateSourceReport(true); }