private void setUndefinedAvp(AvpSet set, Object rc, ClassInfo c, Map<String, Class<?>> cmargs) throws RecoderException {
try {
for (MethodInfo mi : c.getMethodsInfo()) {
Setter s = mi.getAnnotation(Setter.class);
if (s != null && Setter.Type.UNDEFINED.equals(s.value())) {
Map<Integer, Integer> known = new HashMap<Integer, Integer>();
for (Class<?> argc : cmargs.values()) {
AvpDscr argd = storage.getClassInfo((argc.isArray() ? argc.getComponentType() : argc)).getAnnotation(AvpDscr.class);
known.put(argd.code(), argd.code());
}
for (Avp a : set) {
if (!known.containsKey(a.getCode())) {
mi.getMethod().invoke(rc, new UnknownAvp(a.getCode(), a.isMandatory(), a.isVendorId(), a.isEncrypted(), a.getVendorId(), a.getRaw()));
}
}
break;
}
}
} catch (IllegalAccessException e) {
throw new RecoderException(e);
} catch (InvocationTargetException e) {
throw new RecoderException(e);
} catch (AvpDataException e) {
throw new RecoderException(e);
}
}