Package com.strobel.decompiler

Examples of com.strobel.decompiler.DecompilerSettings


        _compileUnit.acceptVisitor(new InsertParenthesesVisitor(), null);
        _compileUnit.acceptVisitor(new JavaOutputVisitor(output, _context.getSettings().getFormattingOptions()), null);
    }

    public static boolean isMemberHidden(final IMemberDefinition member, final DecompilerContext context) {
        final DecompilerSettings settings = context.getSettings();

        if (member.isSynthetic() && !settings.getShowSyntheticMembers()) {
            return !context.getForcedVisibleMembers().contains(member);
        }

        if (member instanceof TypeReference &&
            ((TypeReference) member).isNested() &&
            !settings.getShowNestedTypes()) {

            final TypeDefinition resolvedType = ((TypeReference) member).resolve();

            return resolvedType == null ||
                   !resolvedType.isAnonymous() && findLocalType(resolvedType) == null;
View Full Code Here


    private AstBuilder createAstBuilder(
        final DecompilationOptions options,
        final TypeDefinition currentType,
        final boolean isSingleMember) {

        final DecompilerSettings settings = options.getSettings();
        final DecompilerContext context = new DecompilerContext();

        context.setCurrentType(currentType);
        context.setSettings(settings);
View Full Code Here

      Thread tmp_thread = new Thread() {
        public void run() {
          setSearching(true);
          classesList.clear();
          ConfigSaver configSaver = ConfigSaver.getLoadedInstance();
          DecompilerSettings settings = configSaver
              .getDecompilerSettings();
          File inFile = MainWindow.model.getOpenedFile();
          try {
            JarFile jfile = new JarFile(inFile);
            Enumeration<JarEntry> entLength = jfile.entries();
            initProgressBar(Collections.list(entLength).size());
            Enumeration<JarEntry> ent = jfile.entries();
            while (ent.hasMoreElements() && !isCancel()) {
              JarEntry entry = ent.nextElement();
              setStatus(entry.getName());
              if (entry.getName().endsWith(".class")) {
                synchronized (settings) {
                  String internalName = StringUtilities
                      .removeRight(entry.getName(),
                          ".class");
                  TypeReference type = Model.metadataSystem
                      .lookupType(internalName);
                  TypeDefinition resolvedType = null;
                  if (type == null
                      || ((resolvedType = type.resolve()) == null)) {
                    throw new Exception(
                        "Unable to resolve type.");
                  }
                  StringWriter stringwriter = new StringWriter();
                  DecompilationOptions decompilationOptions;
                  decompilationOptions = new DecompilationOptions();
                  decompilationOptions.setSettings(settings);
                  decompilationOptions
                      .setFullDecompilation(true);
                  settings.getLanguage().decompileType(
                      resolvedType,
                      new PlainTextOutput(stringwriter),
                      decompilationOptions);
                  String decompiledSource = stringwriter
                      .toString().toLowerCase();
View Full Code Here

  /**
   * Do not load, get the loaded instance
   */
  private void loadConfig() {
    decompilerSettings = new DecompilerSettings();
    if (decompilerSettings.getFormattingOptions() == null) {
      decompilerSettings.setFormattingOptions(JavaFormattingOptions.createDefault());
    }
    luytenPreferences = new LuytenPreferences();
    mainWindowPosition = new WindowPosition();
View Full Code Here

        BufferedOutputStream buffDest = new BufferedOutputStream(dest);
        ZipOutputStream out = new ZipOutputStream(buffDest);) {
      bar.setMinimum(0);
      bar.setMaximum(jfile.size());
      byte data[] = new byte[1024];
      DecompilerSettings settings = cloneSettings();
      LuytenTypeLoader typeLoader = new LuytenTypeLoader();
      MetadataSystem metadataSystem = new MetadataSystem(typeLoader);
      ITypeLoader jarLoader = new JarTypeLoader(jfile);
      typeLoader.getTypeLoaders().add(jarLoader);

      DecompilationOptions decompilationOptions = new DecompilationOptions();
      decompilationOptions.setSettings(settings);
      decompilationOptions.setFullDecompilation(true);

      List<String> mass = null;
      JarEntryFilter jarEntryFilter = new JarEntryFilter(jfile);
      LuytenPreferences luytenPrefs = ConfigSaver.getLoadedInstance().getLuytenPreferences();
      if (luytenPrefs.isFilterOutInnerClassEntries()) {
        mass = jarEntryFilter.getEntriesWithoutInnerClasses();
      } else {
        mass = jarEntryFilter.getAllEntriesFromJar();
      }

      Enumeration<JarEntry> ent = jfile.entries();
      Set<JarEntry> history = new HashSet<JarEntry>();
      int tick = 0;
      while (ent.hasMoreElements() && !cancel) {
        bar.setValue(++tick);
        JarEntry entry = ent.nextElement();
        if (!mass.contains(entry.getName()))
          continue;
        label.setText("Extracting: " + entry.getName());
        bar.setVisible(true);
        if (entry.getName().endsWith(".class")) {
          JarEntry etn = new JarEntry(entry.getName().replace(".class", ".java"));
          label.setText("Extracting: " + etn.getName());
          //Duplicate
          if(history.add(etn)){
            out.putNextEntry(etn);
            try {
              String internalName = StringUtilities.removeRight(entry.getName(), ".class");
              TypeReference type = metadataSystem.lookupType(internalName);
              TypeDefinition resolvedType = null;
              if ((type == null) || ((resolvedType = type.resolve()) == null)) {
                throw new Exception("Unable to resolve type.");
              }
              Writer writer = new OutputStreamWriter(out);
              settings.getLanguage().decompileType(resolvedType,
                  new PlainTextOutput(writer), decompilationOptions);
              writer.flush();
            } finally {
              out.closeEntry();
            }
View Full Code Here

      }
    }
  }

  private void doSaveClassDecompiled(File inFile, File outFile) throws Exception {
    DecompilerSettings settings = cloneSettings();
    LuytenTypeLoader typeLoader = new LuytenTypeLoader();
    MetadataSystem metadataSystem = new MetadataSystem(typeLoader);
    TypeReference type = metadataSystem.lookupType(inFile.getCanonicalPath());

    DecompilationOptions decompilationOptions = new DecompilationOptions();
    decompilationOptions.setSettings(settings);
    decompilationOptions.setFullDecompilation(true);

    TypeDefinition resolvedType = null;
    if (type == null || ((resolvedType = type.resolve()) == null)) {
      throw new Exception("Unable to resolve type.");
    }
    StringWriter stringwriter = new StringWriter();
    settings.getLanguage().decompileType(resolvedType,
        new PlainTextOutput(stringwriter), decompilationOptions);
    String decompiledSource = stringwriter.toString();

    try (FileWriter fw = new FileWriter(outFile);
        BufferedWriter bw = new BufferedWriter(fw);) {
View Full Code Here

      }
    }
  }

  private DecompilerSettings cloneSettings() {
    DecompilerSettings settings = ConfigSaver.getLoadedInstance().getDecompilerSettings();
    DecompilerSettings newSettings = new DecompilerSettings();
    if (newSettings.getFormattingOptions() == null) {
      newSettings.setFormattingOptions(JavaFormattingOptions.createDefault());
    }
    // synchronized: against main menu changes
    synchronized (settings) {
      newSettings.setExcludeNestedTypes(settings.getExcludeNestedTypes());
      newSettings.setFlattenSwitchBlocks(settings.getFlattenSwitchBlocks());
      newSettings.setForceExplicitImports(settings.getForceExplicitImports());
      newSettings.setForceExplicitTypeArguments(settings.getForceExplicitTypeArguments());
      newSettings.setOutputFileHeaderText(settings.getOutputFileHeaderText());
      newSettings.setLanguage(settings.getLanguage());
      newSettings.setShowSyntheticMembers(settings.getShowSyntheticMembers());
      newSettings.setAlwaysGenerateExceptionVariableForCatchBlocks(settings
          .getAlwaysGenerateExceptionVariableForCatchBlocks());
      newSettings.setOutputDirectory(settings.getOutputDirectory());
      newSettings.setRetainRedundantCasts(settings.getRetainRedundantCasts());
      newSettings.setIncludeErrorDiagnostics(settings.getIncludeErrorDiagnostics());
      newSettings.setIncludeLineNumbersInBytecode(settings.getIncludeLineNumbersInBytecode());
      newSettings.setRetainPointlessSwitches(settings.getRetainPointlessSwitches());
      newSettings.setUnicodeOutputEnabled(settings.isUnicodeOutputEnabled());
      newSettings.setMergeVariables(settings.getMergeVariables());
      newSettings.setShowDebugLineNumbers(settings.getShowDebugLineNumbers());
    }
    return newSettings;
  }
View Full Code Here

        _compileUnit.acceptVisitor(visitor, null);
        return visitor.getLineNumberPositions();
    }

    public static boolean isMemberHidden(final IMemberDefinition member, final DecompilerContext context) {
        final DecompilerSettings settings = context.getSettings();

        if (member.isSynthetic() && !settings.getShowSyntheticMembers()) {
            return !context.getForcedVisibleMembers().contains(member);
        }

        if (member instanceof TypeReference &&
            ((TypeReference) member).isNested() &&
            settings.getExcludeNestedTypes()) {

            final TypeDefinition resolvedType = ((TypeReference) member).resolve();

            return resolvedType == null ||
                   !resolvedType.isAnonymous() && findLocalType(resolvedType) == null;
View Full Code Here

    private AstBuilder createAstBuilder(
        final DecompilationOptions options,
        final TypeDefinition currentType,
        final boolean isSingleMember) {

        final DecompilerSettings settings = options.getSettings();
        final DecompilerContext context = new DecompilerContext();

        context.setCurrentType(currentType);
        context.setSettings(settings);
View Full Code Here

TOP

Related Classes of com.strobel.decompiler.DecompilerSettings

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.