@Override public char[] getSourceName() { try (IReader rl = this.typeRef.lock()) { NdType type = this.typeRef.get(); if (type != null) { return type.getSourceName(); } else { return new char[0]; } } }
@Override public char[] getSourceName() { try (IReader rl = this.typeRef.lock()) { NdType type = this.typeRef.get(); if (type != null) { return type.getSourceName(); } else { return new char[0]; } } }
@Override public IBinaryField[] getFields() { try (IReader rl = this.typeRef.lock()) { NdType type = this.typeRef.get(); if (type != null) { List<NdVariable> variables = type.getVariables(); if (variables.isEmpty()) { return null; } IBinaryField[] result = new IBinaryField[variables.size()]; for (int fieldIdx = 0; fieldIdx < variables.size(); fieldIdx++) { result[fieldIdx] = createBinaryField(variables.get(fieldIdx)); } return result; } else { return null; } } }
@Override public IBinaryField[] getFields() { try (IReader rl = this.typeRef.lock()) { NdType type = this.typeRef.get(); if (type != null) { List<NdVariable> variables = type.getVariables(); if (variables.isEmpty()) { return null; } IBinaryField[] result = new IBinaryField[variables.size()]; for (int fieldIdx = 0; fieldIdx < variables.size(); fieldIdx++) { result[fieldIdx] = createBinaryField(variables.get(fieldIdx)); } return result; } else { return null; } } }
@Override public IBinaryMethod[] getMethods() { try (IReader rl = this.typeRef.lock()) { NdType type = this.typeRef.get(); if (type != null) { List<NdMethod> methods = type.getMethodsInDeclarationOrder(); if (methods.isEmpty()) { return null; } IBinaryMethod[] result = new IBinaryMethod[methods.size()]; for (int idx = 0; idx < result.length; idx++) { result[idx] = createBinaryMethod(methods.get(idx)); } return result; } else { return null; } } }
@Override public IBinaryMethod[] getMethods() { try (IReader rl = this.typeRef.lock()) { NdType type = this.typeRef.get(); if (type != null) { List<NdMethod> methods = type.getMethodsInDeclarationOrder(); if (methods.isEmpty()) { return null; } IBinaryMethod[] result = new IBinaryMethod[methods.size()]; for (int idx = 0; idx < result.length; idx++) { result[idx] = createBinaryMethod(methods.get(idx)); } return result; } else { return null; } } }
@Override public IBinaryTypeAnnotation[] getTypeAnnotations() { try (IReader rl = this.typeRef.lock()) { NdType type = this.typeRef.get(); if (type != null) { return createBinaryTypeAnnotations(type.getTypeAnnotations()); } } return null; }
@Override public IBinaryTypeAnnotation[] getTypeAnnotations() { try (IReader rl = this.typeRef.lock()) { NdType type = this.typeRef.get(); if (type != null) { return createBinaryTypeAnnotations(type.getTypeAnnotations()); } } return null; }
@Override public char[][] getInterfaceNames() { try (IReader rl = this.typeRef.lock()) { NdType type = this.typeRef.get(); if (type != null) { List<NdTypeInterface> interfaces = type.getInterfaces(); if (interfaces.isEmpty()) { return null; } char[][] result = new char[interfaces.size()][]; for (int idx = 0; idx < interfaces.size(); idx++) { NdTypeSignature nextInterface = interfaces.get(idx).getInterface(); result[idx] = nextInterface.getRawType().getBinaryName(); } return result; } else { return null; } } }
@Override public char[][] getInterfaceNames() { try (IReader rl = this.typeRef.lock()) { NdType type = this.typeRef.get(); if (type != null) { List<NdTypeInterface> interfaces = type.getInterfaces(); if (interfaces.isEmpty()) { return null; } char[][] result = new char[interfaces.size()][]; for (int idx = 0; idx < interfaces.size(); idx++) { NdTypeSignature nextInterface = interfaces.get(idx).getInterface(); result[idx] = nextInterface.getRawType().getBinaryName(); } return result; } else { return null; } } }
@Override public char[] sourceFileName() { try (IReader rl = this.typeRef.lock()) { NdType type = this.typeRef.get(); if (type != null) { char[] result = type.getSourceFileName().getChars(); if (result.length == 0) { return null; } return result; } else { return null; } } }
@Override public char[] sourceFileName() { try (IReader rl = this.typeRef.lock()) { NdType type = this.typeRef.get(); if (type != null) { char[] result = type.getSourceFileName().getChars(); if (result.length == 0) { return null; } return result; } else { return null; } } }
@Override public IBinaryAnnotation[] getAnnotations() { try (IReader rl = this.typeRef.lock()) { NdType type = this.typeRef.get(); if (type != null) { return toAnnotationArray(this.typeRef.get().getAnnotations()); } else { return NO_ANNOTATIONS; } } }
@Override public IBinaryAnnotation[] getAnnotations() { try (IReader rl = this.typeRef.lock()) { NdType type = this.typeRef.get(); if (type != null) { return toAnnotationArray(this.typeRef.get().getAnnotations()); } else { return NO_ANNOTATIONS; } } }
@Override public IBinaryNestedType[] getMemberTypes() { try (IReader rl = this.typeRef.lock()) { NdType type = this.typeRef.get(); if (type != null) { List<NdType> declaredTypes = type.getTypeId().getDeclaredTypes(); if (declaredTypes.isEmpty()) { return null; } NdResourceFile resFile = type.getResourceFile(); IString javaRoot = resFile.getPackageFragmentRoot(); // Filter out all the declared types which are at different java roots (only keep the ones belonging // to the same .jar file or to another .class file in the same folder). List<IBinaryNestedType> result = new ArrayList<>(); for (NdType next : declaredTypes) { NdResourceFile nextResFile = next.getResourceFile(); if (nextResFile.getPackageFragmentRoot().compare(javaRoot, true) == 0) { result.add(createBinaryNestedType(next)); } } return result.isEmpty() ? null : result.toArray(new IBinaryNestedType[result.size()]); } else { return null; } } }
@Override public IBinaryNestedType[] getMemberTypes() { try (IReader rl = this.typeRef.lock()) { NdType type = this.typeRef.get(); if (type != null) { List<NdType> declaredTypes = type.getTypeId().getDeclaredTypes(); if (declaredTypes.isEmpty()) { return null; } NdResourceFile resFile = type.getResourceFile(); IString javaRoot = resFile.getPackageFragmentRoot(); // Filter out all the declared types which are at different java roots (only keep the ones belonging // to the same .jar file or to another .class file in the same folder). List<IBinaryNestedType> result = new ArrayList<>(); for (NdType next : declaredTypes) { NdResourceFile nextResFile = next.getResourceFile(); if (nextResFile.getPackageFragmentRoot().compare(javaRoot, true) == 0) { result.add(createBinaryNestedType(next)); } } return result.isEmpty() ? null : result.toArray(new IBinaryNestedType[result.size()]); } else { return null; } } }
@Override public char[][][] getMissingTypeNames() { try (IReader rl = this.typeRef.lock()) { NdType type = this.typeRef.get(); if (type != null) { IString string = type.getMissingTypeNames(); if (string.length() == 0) { return null; } char[] missingTypeNames = string.getChars(); char[][] paths = CharOperation.splitOn(',', missingTypeNames); char[][][] result = new char[paths.length][][]; for (int idx = 0; idx < paths.length; idx++) { result[idx] = CharOperation.splitOn('/', paths[idx]); } return result; } else { return null; } } }
@Override public char[][][] getMissingTypeNames() { try (IReader rl = this.typeRef.lock()) { NdType type = this.typeRef.get(); if (type != null) { IString string = type.getMissingTypeNames(); if (string.length() == 0) { return null; } char[] missingTypeNames = string.getChars(); char[][] paths = CharOperation.splitOn(',', missingTypeNames); char[][][] result = new char[paths.length][][]; for (int idx = 0; idx < paths.length; idx++) { result[idx] = CharOperation.splitOn('/', paths[idx]); } return result; } else { return null; } } }
@Override public char[] getGenericSignature() { try (IReader rl = this.typeRef.lock()) { NdType type = this.typeRef.get(); if (type != null) { if (!type.getFlag(NdType.FLG_GENERIC_SIGNATURE_PRESENT)) { return null; } CharArrayBuffer buffer = new CharArrayBuffer(); NdTypeParameter.getSignature(buffer, type.getTypeParameters()); NdTypeSignature superclass = type.getSuperclass(); if (superclass != null) { superclass.getSignature(buffer); } for (NdTypeInterface nextInterface : type.getInterfaces()) { nextInterface.getInterface().getSignature(buffer); } return buffer.getContents(); } else { return null; } } }
@Override public char[] getGenericSignature() { try (IReader rl = this.typeRef.lock()) { NdType type = this.typeRef.get(); if (type != null) { if (!type.getFlag(NdType.FLG_GENERIC_SIGNATURE_PRESENT)) { return null; } CharArrayBuffer buffer = new CharArrayBuffer(); NdTypeParameter.getSignature(buffer, type.getTypeParameters()); NdTypeSignature superclass = type.getSuperclass(); if (superclass != null) { superclass.getSignature(buffer); } for (NdTypeInterface nextInterface : type.getInterfaces()) { nextInterface.getInterface().getSignature(buffer); } return buffer.getContents(); } else { return null; } } }