if (typeStr.trim().length() <= 0) return false; TypeReference typeRef = metadataSystem.lookupType(typeStr.replaceAll("\\.", "/")); if (typeRef == null) return false;
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(); } }
final MetadataSystem metadataSystem = new MetadataSystem(typeLoader); final TypeReference reference = parser.parseTypeDescriptor(internalName); type = metadataSystem.resolve(reference); type = metadataSystem.lookupType(internalName);
final float f = (Float) value; if (Float.isInfinite(f) || Float.isNaN(f)) { output.writeReference("Float", MetadataSystem.instance().lookupType("java/lang/Float")); output.writeDelimiter("."); if (f == Float.POSITIVE_INFINITY) { final double d = (Double) value; if (Double.isInfinite(d) || Double.isNaN(d)) { final TypeReference doubleType = MetadataSystem.instance().lookupType("java/lang/Double"); output.writeReference("Double", doubleType); output.writeDelimiter(".");
private TypeDefinition lookUp(MetadataSystem ms, String className) { TypeReference tr = ms.lookupType(className); if(tr == null) { missingClasses.add(className); return null; } return ms.resolve(tr); }
public MetadataParser() { this(MetadataSystem.instance()); }
public void closeFile() { for (OpenFile co : hmap) { int pos = house.indexOfTab(co.name); if (pos >= 0) house.remove(pos); co.close(); } final State oldState = state; Model.this.state = null; if (oldState != null) { Closer.tryClose(oldState); } hmap.clear(); tree.setModel(new DefaultTreeModel(null)); metadataSystem = new MetadataSystem(typeLoader); file = null; treeExpansionState = null; open = false; mainWindow.onFileLoadEnded(file, open); }
@Override protected TypeReference lookupTypeCore(final String descriptor) { return resolveType(descriptor, true); }
final int primitiveHash = hashPrimitiveName(descriptor);
final MetadataSystem metadataSystem = new MetadataSystem(typeLoader); final TypeReference reference = parser.parseTypeDescriptor(internalName); type = metadataSystem.resolve(reference); type = metadataSystem.lookupType(internalName);
final float f = (Float) value; if (Float.isInfinite(f) || Float.isNaN(f)) { output.writeReference("Float", MetadataSystem.instance().lookupType("java/lang/Float")); output.writeDelimiter("."); if (f == Float.POSITIVE_INFINITY) { final double d = (Double) value; if (Double.isInfinite(d) || Double.isNaN(d)) { final TypeReference doubleType = MetadataSystem.instance().lookupType("java/lang/Double"); output.writeReference("Double", doubleType); output.writeDelimiter(".");
type = metadataSystem.resolve(reference); type = metadataSystem.lookupType(typeName);
public MetadataParser() { this(MetadataSystem.instance()); }
public static MetadataSystem instance() { if (_instance == null) { synchronized (MetadataSystem.class) { if (_instance == null) { _instance = Fences.orderWrites(new MetadataSystem()); } } } return _instance; }
@Override protected TypeReference lookupTypeCore(final String descriptor) { return resolveType(descriptor, true); }
final int primitiveHash = hashPrimitiveName(descriptor);
final MetadataSystem metadataSystem = new MetadataSystem(typeLoader); final TypeReference reference = parser.parseTypeDescriptor(internalName); type = metadataSystem.resolve(reference); type = metadataSystem.lookupType(internalName);
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; }
final float f = (Float) value; if (Float.isInfinite(f) || Float.isNaN(f)) { output.writeReference("Float", MetadataSystem.instance().lookupType("java/lang/Float")); output.writeDelimiter("."); if (f == Float.POSITIVE_INFINITY) { final double d = (Double) value; if (Double.isInfinite(d) || Double.isNaN(d)) { final TypeReference doubleType = MetadataSystem.instance().lookupType("java/lang/Double"); output.writeReference("Double", doubleType); output.writeDelimiter(".");
DecompilerSettings settings = cloneSettings(); LuytenTypeLoader typeLoader = new LuytenTypeLoader(); MetadataSystem metadataSystem = new MetadataSystem(typeLoader); ITypeLoader jarLoader = new JarTypeLoader(jfile); typeLoader.getTypeLoaders().add(jarLoader); boolean isUnicodeEnabled = decompilationOptions.getSettings().isUnicodeOutputEnabled(); String internalName = StringUtilities.removeRight(entry.getName(), ".class"); TypeReference type = metadataSystem.lookupType(internalName); TypeDefinition resolvedType = null; if ((type == null) || ((resolvedType = type.resolve()) == null)) {