コード例 #1
0
 @Override
 public String mapFieldName(String owner, String name, String desc) {
   if (classNameBiMap == null || classNameBiMap.isEmpty()) {
     return name;
   }
   Map<String, String> fieldMap = getFieldMap(owner);
   return fieldMap != null && fieldMap.containsKey(name + ":" + desc)
       ? fieldMap.get(name + ":" + desc)
       : name;
 }
コード例 #2
0
 @Override
 public String mapMethodName(String owner, String name, String desc) {
   if (classNameBiMap == null || classNameBiMap.isEmpty()) {
     return name;
   }
   Map<String, String> methodMap = getMethodMap(owner);
   String methodDescriptor = name + desc;
   return methodMap != null && methodMap.containsKey(methodDescriptor)
       ? methodMap.get(methodDescriptor)
       : name;
 }
コード例 #3
0
  public String toString() {
    StringBuilder sb = new StringBuilder();
    lock.readLock().lock();
    try {
      Set<InetAddress> eps = tokenToEndPointMap.inverse().keySet();

      if (!eps.isEmpty()) {
        sb.append("Normal Tokens:");
        sb.append(System.getProperty("line.separator"));
        for (InetAddress ep : eps) {
          sb.append(ep);
          sb.append(":");
          sb.append(tokenToEndPointMap.inverse().get(ep));
          sb.append(System.getProperty("line.separator"));
        }
      }

      if (!bootstrapTokens.isEmpty()) {
        sb.append("Bootstrapping Tokens:");
        sb.append(System.getProperty("line.separator"));
        for (Map.Entry<Token, InetAddress> entry : bootstrapTokens.entrySet()) {
          sb.append(entry.getValue() + ":" + entry.getKey());
          sb.append(System.getProperty("line.separator"));
        }
      }

      if (!leavingEndPoints.isEmpty()) {
        sb.append("Leaving EndPoints:");
        sb.append(System.getProperty("line.separator"));
        for (InetAddress ep : leavingEndPoints) {
          sb.append(ep);
          sb.append(System.getProperty("line.separator"));
        }
      }

      if (!pendingRanges.isEmpty()) {
        sb.append("Pending Ranges:");
        sb.append(System.getProperty("line.separator"));
        sb.append(printPendingRanges());
      }
    } finally {
      lock.readLock().unlock();
    }

    return sb.toString();
  }
コード例 #4
0
  @Override
  public String map(String typeName) {
    if (classNameBiMap == null || classNameBiMap.isEmpty()) {
      return typeName;
    }
    if (classNameBiMap.containsKey(typeName)) {
      return classNameBiMap.get(typeName);
    }
    int dollarIdx = typeName.indexOf('$');
    String realType = dollarIdx > -1 ? typeName.substring(0, dollarIdx) : typeName;
    String subType = dollarIdx > -1 ? typeName.substring(dollarIdx + 1) : "";

    String result =
        classNameBiMap.containsKey(realType)
            ? classNameBiMap.get(realType)
            : mcpNameBiMap.containsKey(realType) ? mcpNameBiMap.get(realType) : realType;
    result = dollarIdx > -1 ? result + "$" + subType : result;
    return result;
  }
コード例 #5
0
  public void mergeSuperMaps(String name, String superName, String[] interfaces) {
    //        System.out.printf("Computing super maps for %s: %s %s\n", name, superName,
    // Arrays.asList(interfaces));
    if (classNameBiMap == null || classNameBiMap.isEmpty()) {
      return;
    }
    // Skip Object
    if (Strings.isNullOrEmpty(superName)) {
      return;
    }

    List<String> allParents =
        ImmutableList.<String>builder().add(superName).addAll(Arrays.asList(interfaces)).build();
    // generate maps for all parent objects
    for (String parentThing : allParents) {
      if (!methodNameMaps.containsKey(parentThing)) {
        findAndMergeSuperMaps(parentThing);
      }
    }
    Map<String, String> methodMap = Maps.<String, String>newHashMap();
    Map<String, String> fieldMap = Maps.<String, String>newHashMap();
    for (String parentThing : allParents) {
      if (methodNameMaps.containsKey(parentThing)) {
        methodMap.putAll(methodNameMaps.get(parentThing));
      }
      if (fieldNameMaps.containsKey(parentThing)) {
        fieldMap.putAll(fieldNameMaps.get(parentThing));
      }
    }
    if (rawMethodMaps.containsKey(name)) {
      methodMap.putAll(rawMethodMaps.get(name));
    }
    if (rawFieldMaps.containsKey(name)) {
      fieldMap.putAll(rawFieldMaps.get(name));
    }
    methodNameMaps.put(name, ImmutableMap.copyOf(methodMap));
    fieldNameMaps.put(name, ImmutableMap.copyOf(fieldMap));
    //        System.out.printf("Maps: %s %s\n", name, methodMap);
  }
コード例 #6
0
 public boolean isRemappedClass(String className) {
   className = className.replace('.', '/');
   return classNameBiMap.containsKey(className)
       || mcpNameBiMap.containsKey(className)
       || (!classNameBiMap.isEmpty() && className.indexOf('/') == -1);
 }