if (typeRef == null) return false; TypeDefinition typeDef = typeRef.resolve(); if (typeDef == null) return false;
private TypeReference getMostOuterTypeRefBySlowLookuping(TypeReference typeRef) { String name = typeRef.getName(); if (name == null) return typeRef; String packageName = typeRef.getPackageName(); if (packageName == null) return typeRef; String[] nameParts = name.split("\\$"); String newName = ""; String sep = ""; for (int i = 0; i < nameParts.length - 1; i++) { newName = newName + sep + nameParts[i]; sep = "$"; String newInternalName = packageName.replaceAll("\\.", "/") + "/" + newName; TypeReference newTypeRef = metadataSystem.lookupType(newInternalName); if (newTypeRef != null) { TypeDefinition newTypeDef = newTypeRef.resolve(); if (newTypeDef != null) { return newTypeRef; } } } return typeRef; }
@Override public void run() { if (uniqueStr == null) return; String[] linkParts = uniqueStr.split("\\|"); if (linkParts.length <= 1) return; String destinationTypeStr = linkParts[1]; try { bar.setVisible(true); getLabel().setText("Navigating: " + destinationTypeStr.replaceAll("/", ".")); TypeReference type = metadataSystem.lookupType(destinationTypeStr); if (type == null) throw new RuntimeException("Cannot lookup type: " + destinationTypeStr); TypeDefinition typeDef = type.resolve(); if (typeDef == null) throw new RuntimeException("Cannot resolve type: " + destinationTypeStr); String tabTitle = typeDef.getName() + ".class"; extractClassToTextPane(typeDef, tabTitle, destinationTypeStr, uniqueStr); getLabel().setText("Complete"); } catch (Exception e) { getLabel().setText("Cannot navigate: " + destinationTypeStr.replaceAll("/", ".")); Luyten.showExceptionDialog("Cannot Navigate!", e); } finally { bar.setVisible(false); } } }).start();
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); boolean isUnicodeEnabled = decompilationOptions.getSettings().isUnicodeOutputEnabled(); TypeDefinition resolvedType = null; if (type == null || ((resolvedType = type.resolve()) == null)) { throw new Exception("Unable to resolve type."); } StringWriter stringwriter = new StringWriter(); PlainTextOutput plainTextOutput = new PlainTextOutput(stringwriter); plainTextOutput.setUnicodeOutputEnabled(isUnicodeEnabled); settings.getLanguage().decompileType(resolvedType, plainTextOutput, decompilationOptions); String decompiledSource = stringwriter.toString(); System.out.println("[SaveAll]: " + inFile.getName() + " -> " + outFile.getName()); try (FileOutputStream fos = new FileOutputStream(outFile); OutputStreamWriter writer = isUnicodeEnabled ? new OutputStreamWriter(fos, "UTF-8") : new OutputStreamWriter(fos); BufferedWriter bw = new BufferedWriter(writer);) { bw.write(decompiledSource); bw.flush(); } }
if (typeRef == null) return null; TypeDefinition typeDef = typeRef.resolve(); if (typeDef == null) return null; TypeReference declaringTypeRef = typeRef.getDeclaringType(); if (declaringTypeRef != null) { TypeDefinition declaringTypeDef = declaringTypeRef.resolve(); if (declaringTypeDef != null) { String declaringTypeName = declaringTypeDef.getName();
TypeReference type = metadataSystem.lookupType(internalName); TypeDefinition resolvedType = null; if ((type == null) || ((resolvedType = type.resolve()) == null)) { throw new Exception("Unable to resolve type.");
TypeReference type = Model.metadataSystem.lookupType(internalName); TypeDefinition resolvedType = null; if (type == null || ((resolvedType = type.resolve()) == null)) { throw new Exception("Unable to resolve type.");
public void run() { try { Thread.sleep(500); String internalName = FindBox.class.getName(); TypeReference type = metadataSystem.lookupType(internalName); TypeDefinition resolvedType = null; if ((type == null) || ((resolvedType = type.resolve()) == null)) { return; } StringWriter stringwriter = new StringWriter(); PlainTextOutput plainTextOutput = new PlainTextOutput(stringwriter); plainTextOutput .setUnicodeOutputEnabled(decompilationOptions.getSettings().isUnicodeOutputEnabled()); settings.getLanguage().decompileType(resolvedType, plainTextOutput, decompilationOptions); String decompiledSource = stringwriter.toString(); OpenFile open = new OpenFile(internalName, "*/" + internalName, getTheme(), mainWindow); open.setContent(decompiledSource); JTabbedPane pane = new JTabbedPane(); pane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT); pane.addTab("title", open.scrollPane); pane.setSelectedIndex(pane.indexOfTab("title")); } catch (Exception e) { Luyten.showExceptionDialog("Exception!", e); } } }.start();
if (type == null || ((resolvedType = type.resolve()) == null)) { throw new Exception("Unable to resolve type.");
@Override public TypeDefinition resolve(final TypeReference type) { return _genericDefinition.resolve(type); } }
private static boolean isGenericSubstitutionNeeded(final TypeReference type) { if (type == null) { return false; } final TypeDefinition resolvedType = type.resolve(); return resolvedType != null && resolvedType.containsGenericParameters(); }
@Override public TypeDefinition resolve() { return getUnderlyingType().resolve(); } }
public static synchronized TypeDefinition lookupJdkType(String internalName) { TypeReference tr = ms.lookupType(internalName); if (tr == null) { throw new InternalError("Unable to lookup type " + internalName); } TypeDefinition td = tr.resolve(); if (td == null) { throw new InternalError("Unable to resolve type " + internalName); } return td; }
@Override public ParameterDefinition resolve() { final TypeReference resolvedParameterType = super.getParameterType().resolve(); if (resolvedParameterType != null) { setParameterType(resolvedParameterType); } return this; }
public MethodDefinition resolve() { final TypeReference declaringType = getDeclaringType(); if (declaringType == null) throw ContractUtils.unsupported(); return declaringType.resolve(this); }
public MethodDefinition resolve() { final TypeReference declaringType = getDeclaringType(); if (declaringType == null) throw ContractUtils.unsupported(); return declaringType.resolve(this); }
public FieldDefinition resolve(final FieldReference field) { final TypeDefinition resolvedType = this.resolve(); if (resolvedType != null) { return MetadataResolver.getField(resolvedType.getDeclaredFields(), field); } return null; }
@Override public ParameterDefinition resolve() { final TypeReference resolvedParameterType = super.getParameterType().resolve(); if (resolvedParameterType != null) { setParameterType(resolvedParameterType); } return this; }
@Override public FieldDefinition resolve(final FieldReference field) { final TypeDefinition declaringType = VerifyArgument.notNull(field, "field").getDeclaringType().resolve(); if (declaringType == null) { return null; } return getField(declaringType, field); }
private static boolean isPublic(@NotNull final TypeReference type) { if (type instanceof TypeDefinition) { return ((TypeDefinition) type).isPublic(); } final TypeDefinition resolvedType = type.resolve(); return resolvedType == null || resolvedType.isPublic(); }