Beispiel #1
0
  private void getByteKeyAttr(Template t, String attr) {
    Template s = null;
    boolean noEx = true;
    Method m;
    byte[] v;

    try {
      s = new Template();
    } catch (BeeException e) {
      try {
        m = t.getClass().getMethod("set" + attr + "Exception", e.getClass());
        m.invoke(t, e);
      } catch (Exception ex) {
        return;
      }
    }

    try {
      m = s.getClass().getMethod("add" + attr);
      m.invoke(s);
    } catch (Exception e) {
      return;
    }

    try {
      lib.bee_get_attrs(bee, handle, s.getPointer());
      Errors.checkError();
    } catch (BeeException e) {
      noEx = false;
      try {
        m = s.getClass().getDeclaredMethod("set" + attr + "Exception", e.getClass());
        m.invoke(t, e);
      } catch (Exception ex) {
        return;
      }
    }

    if (noEx) {
      try {
        m = s.getClass().getMethod("set" + attr, byte[].class);
        Method g = s.getClass().getMethod("get" + attr);
        v = (byte[]) g.invoke(s);
        m.invoke(t, v);
      } catch (Exception e) {
        return;
      }
    }
  }
  public static RefasterRule<?, ?> create(
      String qualifiedTemplateClass,
      Iterable<UTypeVar> typeVariables,
      Collection<? extends Template<?>> beforeTemplates,
      Collection<? extends Template<?>> afterTemplates,
      ImmutableClassToInstanceMap<Annotation> annotations) {

    checkState(
        !beforeTemplates.isEmpty(),
        "No @BeforeTemplate was found in the specified class: %s",
        qualifiedTemplateClass);
    Class<?> templateType = beforeTemplates.iterator().next().getClass();
    for (Template<?> beforeTemplate : beforeTemplates) {
      checkState(
          beforeTemplate.getClass().equals(templateType),
          "Expected all templates to be of type %s but found template of type %s in %s",
          templateType,
          beforeTemplate.getClass(),
          qualifiedTemplateClass);
    }
    for (Template<?> afterTemplate : afterTemplates) {
      checkState(
          afterTemplate.getClass().equals(templateType),
          "Expected all templates to be of type %s but found template of type %s in %s",
          templateType,
          afterTemplate.getClass(),
          qualifiedTemplateClass);
    }
    @SuppressWarnings({"unchecked", "rawtypes"})
    RefasterRule<?, ?> result =
        new AutoValue_RefasterRule(
            qualifiedTemplateClass,
            ImmutableList.copyOf(typeVariables),
            ImmutableList.copyOf(beforeTemplates),
            ImmutableList.copyOf(afterTemplates),
            annotations);
    return result;
  }