All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.imqa.injector.MappingDecoder Maven / Gradle / Ivy

There is a newer version: 2.25.11
Show newest version
package io.imqa.injector;

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;

import io.imqa.injector.util.Logger;

public class MappingDecoder {

    MappingTable mappingTable = new MappingTable();
    private boolean isDecoded = false;

    private MappingDecoder() {

    }

    private static MappingDecoder decoder = new MappingDecoder();

    public static MappingDecoder getInstance() {
        return decoder;
    }

    public void init(File mappingFile) {
        StringBuilder result = new StringBuilder("");

        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(mappingFile)));
            String s = null;
            while ((s = reader.readLine()) != null) {
                result.append(s);
            }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        mappingTable.parse(result.toString());

        isDecoded = true;
    }

    public boolean isDecoded() {
        return isDecoded;
    }

    public String decodeDesc(String methodDesc) {
        if (!isDecoded) return methodDesc;
        methodDesc = methodDesc.replace("/", ".");

        String paramString = getParamterString(methodDesc);
        String[] params = getParameters(paramString);
        ClassDesc[] paramsDesc = new ClassDesc[params.length];
        ClassDesc returnDesc = new ClassDesc(getReturnString(methodDesc));

        for (int i=0; i 0) {
                this.type = desc.substring(0, 1);
                if (desc.lastIndexOf(";") > 0)
                    this.desc = desc.substring(1, desc.lastIndexOf(";"));
                else
                    this.desc = desc.substring(1);
            }
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy