From d72aad82c795726efcf6145f5a4172e4c8d3a5b2 Mon Sep 17 00:00:00 2001 From: gegy1000 Date: Sat, 19 May 2018 20:38:14 +0200 Subject: Signature refactoring --- src/main/java/cuchaz/enigma/mapping/entry/ClassDefEntry.java | 10 +++++++++- src/main/java/cuchaz/enigma/mapping/entry/FieldDefEntry.java | 12 ++++++++++-- .../java/cuchaz/enigma/mapping/entry/MethodDefEntry.java | 12 ++++++++++-- .../cuchaz/enigma/mapping/entry/ProcyonEntryFactory.java | 5 +++-- 4 files changed, 32 insertions(+), 7 deletions(-) (limited to 'src/main/java/cuchaz/enigma/mapping/entry') diff --git a/src/main/java/cuchaz/enigma/mapping/entry/ClassDefEntry.java b/src/main/java/cuchaz/enigma/mapping/entry/ClassDefEntry.java index 75e7f1b..ac1fe2a 100644 --- a/src/main/java/cuchaz/enigma/mapping/entry/ClassDefEntry.java +++ b/src/main/java/cuchaz/enigma/mapping/entry/ClassDefEntry.java @@ -13,16 +13,24 @@ package cuchaz.enigma.mapping.entry; import com.google.common.base.Preconditions; import cuchaz.enigma.bytecode.AccessFlags; +import cuchaz.enigma.mapping.Signature; public class ClassDefEntry extends ClassEntry { private final AccessFlags access; + private final Signature signature; - public ClassDefEntry(String className, AccessFlags access) { + public ClassDefEntry(String className, Signature signature, AccessFlags access) { super(className); + Preconditions.checkNotNull(signature, "Class signature cannot be null"); Preconditions.checkNotNull(access, "Class access cannot be null"); + this.signature = signature; this.access = access; } + public Signature getSignature() { + return signature; + } + public AccessFlags getAccess() { return access; } diff --git a/src/main/java/cuchaz/enigma/mapping/entry/FieldDefEntry.java b/src/main/java/cuchaz/enigma/mapping/entry/FieldDefEntry.java index 78ea5f7..d18115b 100644 --- a/src/main/java/cuchaz/enigma/mapping/entry/FieldDefEntry.java +++ b/src/main/java/cuchaz/enigma/mapping/entry/FieldDefEntry.java @@ -13,23 +13,31 @@ package cuchaz.enigma.mapping.entry; import com.google.common.base.Preconditions; import cuchaz.enigma.bytecode.AccessFlags; +import cuchaz.enigma.mapping.Signature; import cuchaz.enigma.mapping.TypeDescriptor; public class FieldDefEntry extends FieldEntry { private final AccessFlags access; + private final Signature signature; - public FieldDefEntry(ClassEntry ownerEntry, String name, TypeDescriptor desc, AccessFlags access) { + public FieldDefEntry(ClassEntry ownerEntry, String name, TypeDescriptor desc, Signature signature, AccessFlags access) { super(ownerEntry, name, desc); Preconditions.checkNotNull(access, "Field access cannot be null"); + Preconditions.checkNotNull(signature, "Field signature cannot be null"); this.access = access; + this.signature = signature; } public AccessFlags getAccess() { return access; } + public Signature getSignature() { + return signature; + } + @Override public FieldDefEntry updateOwnership(ClassEntry owner) { - return new FieldDefEntry(owner, this.name, this.desc, access); + return new FieldDefEntry(owner, this.name, this.desc, signature, access); } } diff --git a/src/main/java/cuchaz/enigma/mapping/entry/MethodDefEntry.java b/src/main/java/cuchaz/enigma/mapping/entry/MethodDefEntry.java index 1d2c094..ec3af69 100644 --- a/src/main/java/cuchaz/enigma/mapping/entry/MethodDefEntry.java +++ b/src/main/java/cuchaz/enigma/mapping/entry/MethodDefEntry.java @@ -14,23 +14,31 @@ package cuchaz.enigma.mapping.entry; import com.google.common.base.Preconditions; import cuchaz.enigma.bytecode.AccessFlags; import cuchaz.enigma.mapping.MethodDescriptor; +import cuchaz.enigma.mapping.Signature; public class MethodDefEntry extends MethodEntry { private final AccessFlags access; + private final Signature signature; - public MethodDefEntry(ClassEntry classEntry, String name, MethodDescriptor descriptor, AccessFlags access) { + public MethodDefEntry(ClassEntry classEntry, String name, MethodDescriptor descriptor, Signature signature, AccessFlags access) { super(classEntry, name, descriptor); Preconditions.checkNotNull(access, "Method access cannot be null"); + Preconditions.checkNotNull(signature, "Method signature cannot be null"); this.access = access; + this.signature = signature; } public AccessFlags getAccess() { return access; } + public Signature getSignature() { + return signature; + } + @Override public MethodDefEntry updateOwnership(ClassEntry classEntry) { - return new MethodDefEntry(new ClassEntry(classEntry.getName()), name, descriptor, access); + return new MethodDefEntry(new ClassEntry(classEntry.getName()), name, descriptor, signature, access); } } diff --git a/src/main/java/cuchaz/enigma/mapping/entry/ProcyonEntryFactory.java b/src/main/java/cuchaz/enigma/mapping/entry/ProcyonEntryFactory.java index e42a334..5892a03 100644 --- a/src/main/java/cuchaz/enigma/mapping/entry/ProcyonEntryFactory.java +++ b/src/main/java/cuchaz/enigma/mapping/entry/ProcyonEntryFactory.java @@ -14,6 +14,7 @@ package cuchaz.enigma.mapping.entry; import com.strobel.assembler.metadata.*; import cuchaz.enigma.bytecode.AccessFlags; import cuchaz.enigma.mapping.MethodDescriptor; +import cuchaz.enigma.mapping.Signature; import cuchaz.enigma.mapping.TypeDescriptor; import java.util.List; @@ -56,7 +57,7 @@ public class ProcyonEntryFactory { public FieldDefEntry getFieldDefEntry(FieldDefinition def) { ClassEntry classEntry = entryPool.getClass(def.getDeclaringType().getInternalName()); - return new FieldDefEntry(classEntry, def.getName(), new TypeDescriptor(def.getErasedSignature()), new AccessFlags(def.getModifiers())); + return new FieldDefEntry(classEntry, def.getName(), new TypeDescriptor(def.getErasedSignature()), Signature.createTypedSignature(def.getSignature()), new AccessFlags(def.getModifiers())); } public MethodEntry getMethodEntry(MemberReference def) { @@ -66,6 +67,6 @@ public class ProcyonEntryFactory { public MethodDefEntry getMethodDefEntry(MethodDefinition def) { ClassEntry classEntry = entryPool.getClass(def.getDeclaringType().getInternalName()); - return new MethodDefEntry(classEntry, def.getName(), new MethodDescriptor(def.getErasedSignature()), new AccessFlags(def.getModifiers())); + return new MethodDefEntry(classEntry, def.getName(), new MethodDescriptor(def.getErasedSignature()), Signature.createSignature(def.getSignature()), new AccessFlags(def.getModifiers())); } } -- cgit v1.2.3