Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: yWorks/yGuard
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: master
Choose a base ref
...
head repository: K-D521/yGuard
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: master
Choose a head ref
Able to merge. These branches can be automatically merged.
  • 7 commits
  • 11 files changed
  • 1 contributor

Commits on Nov 27, 2023

  1. Copy the full SHA
    34fd30f View commit details
  2. fix: Refactored toJavaType and removed the smell "Complex Method" by …

    …dividing tasks into multiple methods.
    K-D521 committed Nov 27, 2023
    Copy the full SHA
    1713ac8 View commit details
  3. Copy the full SHA
    2eacb9c View commit details
  4. Trigger rebuild

    K-D521 committed Nov 27, 2023
    Copy the full SHA
    acd0226 View commit details
  5. Copy the full SHA
    25991ae View commit details

Commits on Nov 28, 2023

  1. Copy the full SHA
    e09732f View commit details
  2. fix: Refactored show method inside LogParserView and moved to YGuardL…

    …ogParser using "Move method/field" method.
    K-D521 committed Nov 28, 2023
    Copy the full SHA
    7362fbc View commit details
245 changes: 126 additions & 119 deletions src/main/java/com/yworks/yguard/Conversion.java
Original file line number Diff line number Diff line change
@@ -13,165 +13,172 @@
*
* @author muellese
*/
public class Conversion
{
public class Conversion {

/**
* Creates a new instance of Conversion
*/
protected Conversion(){}
protected Conversion() {
}

/**
* To java class string.
*
* @param className the class name
* @return the string
*/
public static String toJavaClass(String className){
if (className.endsWith(".class")){
className = className.substring(0, className.length()- 6);
public static String toJavaClass(String className) {
if (className.endsWith(".class")) {
className = className.substring(0, className.length() - 6);
}
return className.replace('/','.');
return className.replace('/', '.');
}


/**
* To java type string.
*
* @param type the type
* @return the string
*/
public static String toJavaType(String type){
public static String toJavaType(String type) {
StringBuffer nat = new StringBuffer(30);
int arraydim = 0;
while (type.charAt(arraydim)=='[') arraydim++;
while (type.charAt(arraydim) == '[')
arraydim++;
type = type.substring(arraydim);
switch (type.charAt(0)){
nat.append(getJavaType(type));
for (int i = 0; i < arraydim; i++) {
nat.append("[]");
}
return nat.toString();
}

/**
* Gets the Java type for the given type.
*
* @param type the type to get the Java type for
* @return the Java type
*/
private static String getJavaType(String type) {
switch (type.charAt(0)) {
default:
throw new IllegalArgumentException("unknown native type:"+type);
throw new IllegalArgumentException("unknown native type:" + type);
case 'B':
nat.append("byte");
break;
return "byte";
case 'C':
nat.append("char");
break;
return "char";
case 'D':
nat.append("double");
break;
return "double";
case 'F':
nat.append("float");
break;
return "float";
case 'I':
nat.append("int");
break;
return "int";
case 'J':
nat.append("long");
break;
return "long";
case 'S':
nat.append("short");
break;
return "short";
case 'Z':
nat.append("boolean");
break;
return "boolean";
case 'V':
nat.append("void");
break;
return "void";
case 'L':
String className = type.substring(1, type.length()-1);
if (className.indexOf('<') >= 0){
String parameters = type.substring(className.indexOf('<') + 2, className.lastIndexOf('>') - 1);
className = className.substring(0, className.indexOf('<') );
nat.append(className.replace('/','.'));
nat.append('<');
nat.append(toJavaParameters(parameters));
nat.append('>');
} else {
nat.append(className.replace('/','.'));
}
break;
return getClassName(type);
}
for (int i = 0; i < arraydim; i++){
nat.append("[]");
}

/**
* Gets the class name for the given type.
*
* @param type the type to get the class name for
* @return the class name
*/
private static String getClassName(String type) {
String className = type.substring(1, type.length() - 1);
if (className.indexOf('<') >= 0) {
String parameters = type.substring(className.indexOf('<') + 2, className.lastIndexOf('>') - 1);
className = className.substring(0, className.indexOf('<'));
return className.replace('/', '.') + '<' + toJavaParameters(parameters) + '>';
} else {
return className.replace('/', '.');
}
return nat.toString();
}

/**
* Mapping for signatures (used for generics in 1.5).
*
* @param signature the signature
* @return the string
* @see com.yworks.yguard.obf.classfile.NameMapper#mapSignature com.yworks.yguard.obf.classfile.NameMapper#mapSignaturecom.yworks.yguard.obf.classfile.NameMapper#mapSignature
* @see com.yworks.yguard.obf.classfile.NameMapper#mapSignature
* com.yworks.yguard.obf.classfile.NameMapper#mapSignaturecom.yworks.yguard.obf.classfile.NameMapper#mapSignature
*/
public static String mapSignature(String signature){
public static String mapSignature(String signature) {
return new ClassTree().mapSignature(signature);
}


/**
* To java parameters string.
*
* @param parameters the parameters
* @return the string
*/
public static String toJavaParameters(String parameters){
public static String toJavaParameters(String parameters) {
StringBuffer nat = new StringBuffer(30);
switch (parameters.charAt(0)){
default:
throw new IllegalArgumentException("unknown native type:"+parameters.charAt(0));
case '+':
nat.append("? extends ").append(toJavaParameters(parameters.substring(1)));
break;
case '-':
nat.append("? super ").append(toJavaParameters(parameters.substring(1)));
break;
case '*':
nat.append("*");
if (parameters.length() > 1){
nat.append(", ").append(toJavaParameters(parameters.substring(1)));
}
break;
case 'B':
nat.append("byte");
break;
case 'C':
nat.append("char");
break;
case 'D':
nat.append("double");
break;
case 'F':
nat.append("float");
break;
case 'I':
nat.append("int");
break;
case 'J':
nat.append("long");
break;
case 'S':
nat.append("short");
break;
case 'Z':
nat.append("boolean");
break;
case 'V':
nat.append("void");
break;
case 'L':
int len = parameters.indexOf('<');
if (len >= 0){
len = Math.min(len, parameters.indexOf(';'));
}
break;
case 'T':
int index = parameters.indexOf(';');
nat.append(parameters.substring(1, index));
if (parameters.length() > index){
nat.append(", ");
nat.append(parameters.substring(index));
}
break;
switch (parameters.charAt(0)) {
default:
throw new IllegalArgumentException("unknown native type:" + parameters.charAt(0));
case '+':
nat.append("? extends ").append(toJavaParameters(parameters.substring(1)));
break;
case '-':
nat.append("? super ").append(toJavaParameters(parameters.substring(1)));
break;
case '*':
nat.append("*");
if (parameters.length() > 1) {
nat.append(", ").append(toJavaParameters(parameters.substring(1)));
}
break;
case 'B':
nat.append("byte");
break;
case 'C':
nat.append("char");
break;
case 'D':
nat.append("double");
break;
case 'F':
nat.append("float");
break;
case 'I':
nat.append("int");
break;
case 'J':
nat.append("long");
break;
case 'S':
nat.append("short");
break;
case 'Z':
nat.append("boolean");
break;
case 'V':
nat.append("void");
break;
case 'L':
int len = parameters.indexOf('<');
if (len >= 0) {
len = Math.min(len, parameters.indexOf(';'));
}
break;
case 'T':
int index = parameters.indexOf(';');
nat.append(parameters.substring(1, index));
if (parameters.length() > index) {
nat.append(", ");
nat.append(parameters.substring(index));
}
break;
}
return nat.toString();
}
@@ -183,18 +190,18 @@ public static String toJavaParameters(String parameters){
* @param signature the signature
* @return the string
*/
public static String toJavaMethod(String name, String signature){
String argsonly = signature.substring(signature.indexOf('(')+1);
String ret = signature.substring(signature.indexOf(')')+1);
public static String toJavaMethod(String name, String signature) {
String argsonly = signature.substring(signature.indexOf('(') + 1);
String ret = signature.substring(signature.indexOf(')') + 1);
ret = toJavaType(ret);
StringBuffer args = new StringBuffer();
args.append('(');
if (argsonly.indexOf(')')>0){
argsonly = argsonly.substring(0,argsonly.indexOf(')'));
if (argsonly.indexOf(')') > 0) {
argsonly = argsonly.substring(0, argsonly.indexOf(')'));
toJavaArguments(argsonly, args);
}
args.append(')');
return ret+" "+name+args.toString();
return ret + " " + name + args.toString();
}

/**
@@ -203,8 +210,8 @@ public static String toJavaMethod(String name, String signature){
* @param args the args
* @return the string
*/
public static String toJavaArguments(String args){
StringBuffer b= new StringBuffer(args.length() + 32);
public static String toJavaArguments(String args) {
StringBuffer b = new StringBuffer(args.length() + 32);
toJavaArguments(args, b);
return b.toString();
}
@@ -213,18 +220,18 @@ private static void toJavaArguments(String argsonly, StringBuffer args) {
int argcount = 0;
int pos = 0;
StringBuffer arg = new StringBuffer(20);
while (pos < argsonly.length()){
while (argsonly.charAt(pos) == '['){
while (pos < argsonly.length()) {
while (argsonly.charAt(pos) == '[') {
arg.append('[');
pos++;
}
if (argsonly.charAt(pos) == 'L'){
while (argsonly.charAt(pos) != ';'){
if (argsonly.charAt(pos) == 'L') {
while (argsonly.charAt(pos) != ';') {
arg.append(argsonly.charAt(pos));
pos++;
}
arg.append(';');
if (argcount > 0){
if (argcount > 0) {
args.append(',');
args.append(' ');
}
@@ -234,7 +241,7 @@ private static void toJavaArguments(String argsonly, StringBuffer args) {
pos++;
} else {
arg.append(argsonly.charAt(pos));
if (argcount > 0){
if (argcount > 0) {
args.append(',');
args.append(' ');
}
Loading