int arrayMemberValue(int pos, int num) throws Exception { ArrayMemberValue amv = new ArrayMemberValue(pool); MemberValue[] elements = new MemberValue[num]; for (int i = 0; i < num; ++i) { pos = memberValue(pos); elements[i] = currentMember; } amv.setValue(elements); currentMember = amv; return pos; } }
protected Annotation getEntityListeners(ConstPool constantPool, Annotation existingEntityListeners, Annotation templateEntityListeners) { Annotation listeners = new Annotation(EntityListeners.class.getName(), constantPool); ArrayMemberValue listenerArray = new ArrayMemberValue(constantPool); Set<MemberValue> listenerMemberValues = new HashSet<>(); { ArrayMemberValue templateListenerValues = (ArrayMemberValue) templateEntityListeners.getMemberValue("value"); listenerMemberValues.addAll(Arrays.asList(templateListenerValues.getValue())); logger.debug("Adding template values to new EntityListeners"); } if (existingEntityListeners != null) { ArrayMemberValue oldListenerValues = (ArrayMemberValue) existingEntityListeners.getMemberValue("value"); listenerMemberValues.addAll(Arrays.asList(oldListenerValues.getValue())); logger.debug("Adding previous values to new EntityListeners"); } listenerArray.setValue(listenerMemberValues.toArray(new MemberValue[listenerMemberValues.size()])); listeners.addMemberValue("value", listenerArray); return listeners; }
@Override public void visitArrayMemberValue(ArrayMemberValue node) { ArrayMemberValue val = new ArrayMemberValue(node.getType(), constPool); MemberValue[] newVals = new MemberValue[node.getValue().length]; for (int i = 0; i < node.getValue().length; ++i) { node.getValue()[i].accept(new ArrayIndexAssigningVisitor(newVals, i, constPool)); } val.setValue(newVals); array[index] = val; }
members[i] = createMemberValue(cp, arrayType, Array.get(value, i)); ((ArrayMemberValue) memberValue).setValue(members);
@Override public void visitArrayMemberValue(ArrayMemberValue node) { values.add(Arrays.toString(node.getValue())); } });
static private void removeValue(ArrayMemberValue memberValue, String value){ List<MemberValue> values = new ArrayList<>(Arrays.asList(memberValue.getValue())); boolean removed = false; Iterator<MemberValue> it = values.iterator(); while(it.hasNext()){ StringMemberValue stringValue = (StringMemberValue)it.next(); if((value).equals(stringValue.getValue())){ it.remove(); removed = true; } } if(!removed){ throw new RuntimeException(value + " not in " + values); } memberValue.setValue(values.toArray(new MemberValue[values.size()])); }
Annotation[] items = attr.getAnnotations(); List<Annotation> newItems = new ArrayList<Annotation>(); ArrayMemberValue namedQueryArray = new ArrayMemberValue(constantPool); ArrayMemberValue nativeQueryArray = new ArrayMemberValue(constantPool); for (Annotation annotation : items) { String typeName = annotation.getTypeName();
public Object visit(ASTMemberValueArrayInitializer node, Object data) { ArrayMemberValue mv = (ArrayMemberValue) data; int size = node.jjtGetNumChildren(); MemberValue[] elements = new MemberValue[size]; MemberValueCreation mvc = new MemberValueCreation(cp); for (int i = 0; i < size; i++) { mv.getType().accept(mvc); elements[i] = mvc.value; node.jjtGetChild(i).jjtAccept(this, elements[i]); } mv.setValue(elements); return null; }
@Override public void visitArrayMemberValue(ArrayMemberValue node) { final MemberValue type = node.getType(); if (type != null && type.toString().endsWith(".class")) { final String clazz = type.toString(); imports.add(extractClass(clazz)); } }
@Override public void visitArrayMemberValue(ArrayMemberValue node) { ArrayMemberValue val = new ArrayMemberValue(node.getType(), constPool); MemberValue[] newVals = new MemberValue[node.getValue().length]; for (int i = 0; i < node.getValue().length; ++i) { node.getValue()[i].accept(new ArrayIndexAssigningVisitor(newVals, i, constPool)); } val.setValue(newVals); array[index] = val; }
members[i] = createMemberValue(cp, arrayType, Array.get(value, i)); ((ArrayMemberValue) memberValue).setValue(members);
@Override public void visitArrayMemberValue(ArrayMemberValue node) { MemberValue[] nestedValues = node.getValue(); for (MemberValue v : nestedValues) { v.accept(new ListingMemberValueVisitor(values) { @Override public void visitArrayMemberValue(ArrayMemberValue node) { values.add(Arrays.toString(node.getValue())); } }); } }
CtClass arrayType = type.getComponentType(); MemberValue member = createMemberValue(cp, arrayType); return new ArrayMemberValue(member, cp);
@Override int arrayMemberValue(int pos, int num) throws Exception { ArrayMemberValue amv = new ArrayMemberValue(pool); MemberValue[] elements = new MemberValue[num]; for (int i = 0; i < num; ++i) { pos = memberValue(pos); elements[i] = currentMember; } amv.setValue(elements); currentMember = amv; return pos; } }
if (queryArray.getValue() != null) { values = new ArrayList<MemberValue>(Arrays.asList(queryArray.getValue())); } else { values = new ArrayList<MemberValue>(); prepareQueryHints(constantPool, queryHints, hint); ArrayMemberValue hintArray = new ArrayMemberValue(constantPool); hintArray.setValue(queryHints.toArray(new AnnotationMemberValue[queryHints.size()])); namedQuery.addMemberValue("hints", hintArray); values.add(queryAnnotation); queryArray.setValue(values.toArray(new MemberValue[values.size()]));
if (adaptersAnnotation.getMemberValue("value") == null) { final ArrayMemberValue amv = new ArrayMemberValue(constantPool); amv.setValue(new AnnotationMemberValue[0]); adaptersAnnotation.addMemberValue("value", amv); annotationsAttribute.addAnnotation(adaptersAnnotation); }
if (typeName.equals(DirectCopyTransform.class.getName())) { ArrayMemberValue arrayMember = (ArrayMemberValue) annotation.getMemberValue("value"); for (MemberValue arrayMemberValue : arrayMember.getValue()) { AnnotationMemberValue member = (AnnotationMemberValue) arrayMemberValue; Annotation memberAnnot = member.getValue(); ArrayMemberValue annot = (ArrayMemberValue) memberAnnot.getMemberValue("templateTokens"); List<String> addedTemplates = new ArrayList<>(); for (MemberValue memberValue : annot.getValue()) { String val = ((StringMemberValue) memberValue).getValue(); addedTemplates.addAll(reviewTemplateTokens(matchedPatterns, val));
CtClass arrayType = type.getComponentType(); MemberValue member = createMemberValue(cp, arrayType); return new ArrayMemberValue(member, cp);
@SuppressWarnings("all") public static MemberValue createMemberValue(Object value, ConstPool constPool) { MemberValue memberValue = null; if (value instanceof Integer) { memberValue = new IntegerMemberValue(constPool, ((Integer) value)); } else if (value instanceof Boolean) { memberValue = new BooleanMemberValue((Boolean) value, constPool); } else if (value instanceof Long) { memberValue = new LongMemberValue((Long) value, constPool); } else if (value instanceof String) { memberValue = new StringMemberValue((String) value, constPool); } else if (value instanceof Class) { memberValue = new ClassMemberValue(((Class) value).getName(), constPool); } else if (value instanceof Object[]) { Object[] arr = ((Object[]) value); ArrayMemberValue arrayMemberValue = new ArrayMemberValue(new ClassMemberValue(arr[0].getClass().getName(), constPool), constPool); arrayMemberValue.setValue(Arrays.stream(arr) .map(o -> createMemberValue(o, constPool)) .toArray(MemberValue[]::new)); memberValue = arrayMemberValue; } return memberValue; }
if (queryArray.getValue() != null) { values = new ArrayList<MemberValue>(Arrays.asList(queryArray.getValue())); } else { values = new ArrayList<MemberValue>(); prepareQueryHints(constantPool, queryHints, hint); ArrayMemberValue hintArray = new ArrayMemberValue(constantPool); hintArray.setValue(queryHints.toArray(new AnnotationMemberValue[queryHints.size()])); namedQuery.addMemberValue("hints", hintArray); values.add(queryAnnotation); queryArray.setValue(values.toArray(new MemberValue[values.size()]));