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; }