@Override public int getAvpIndex(int avpCode, long vendorId) { for (Avp avp : this.avps) { if (avp.getCode() == avpCode && avp.getVendorId() == vendorId) { return this.avps.indexOf(avp); } } return -1; }
@Override public Avp getAvp(int avpCode, long vendorId) { for (Avp avp : this.avps) { if (avp.getCode() == avpCode && avp.getVendorId() == vendorId) { return avp; } } return null; }
@Override public AvpSet removeAvp(int avpCode, long vendorId) { AvpSet result = new AvpSetImpl(); // for (Avp avp : this.avps) { // if (avp.getCode() == avpCode) { // result.addAvp(avp); // this.avps.remove(avp); // } // } Iterator<Avp> it = this.avps.iterator(); while (it.hasNext()) { Avp avp = it.next(); if (avp.getCode() == avpCode && avp.getVendorId() == vendorId) { result.addAvp(avp); it.remove(); } } return result; }
@Override public AvpSet getAvps(int avpCode, long vendorId) { AvpSet result = new AvpSetImpl(); for (Avp avp : this.avps) { if (avp.getCode() == avpCode && avp.getVendorId() == vendorId) { result.addAvp(avp); } } return result; }
public static Object[] getAvpsAsCustom(int avpCode, AvpSet set, Class clazz) { try { AvpSet avpSet = set.getAvps(avpCode); Object array = Array.newInstance(clazz, avpSet.size()); int i = 0; Constructor c = clazz.getConstructor(int.class, long.class, int.class, int.class, byte[].class); AvpRepresentation rep = null; for(Avp avp : avpSet) { rep = AvpDictionary.INSTANCE.getAvp(avpCode, avp.getVendorId()); Array.set(array, i++, c.newInstance(rep.getCode(), rep.getVendorId(), rep.getRuleMandatoryAsInt(), rep.getRuleProtectedAsInt(), avp.getRawData())); } return (Object[]) array; } catch (Exception e) { if(logger.isDebugEnabled()) { logger.debug("Failed to obtain AVP with code " + avpCode + " as type Custom (Class '" + clazz.getName() + "').", e); } return (Object[]) Array.newInstance(clazz, 0); } }
public static Object[] getAvpsAsCustom(int avpCode, AvpSet set, Class clazz) { try { AvpSet avpSet = set.getAvps(avpCode); Object array = Array.newInstance(clazz, avpSet.size()); int i = 0; Constructor c = clazz.getConstructor(int.class, long.class, int.class, int.class, byte[].class); AvpRepresentation rep = null; for(Avp avp : avpSet) { rep = AvpDictionary.INSTANCE.getAvp(avpCode, avp.getVendorId()); Array.set(array, i++, c.newInstance(rep.getCode(), rep.getVendorId(), rep.getRuleMandatoryAsInt(), rep.getRuleProtectedAsInt(), avp.getRawData())); } return (Object[]) array; } catch (Exception e) { if(logger.isDebugEnabled()) { logger.debug("Failed to obtain AVP with code " + avpCode + " as type Custom (Class '" + clazz.getName() + "').", e); } return (Object[]) Array.newInstance(clazz, 0); } }
/** * Method for obtaining AVP with given code and any Vendor-Id. * * @param avpCode the code of the AVP to look for * @param set the set of AVPs where to look * * @return an AVP with the given code, or null if none is present. */ public static Object getAvp(int avpCode, AvpSet set) { Avp avp = set.getAvp(avpCode); if(avp != null) { return getAvp(avp.getCode(), avp.getVendorId(), set); } return null; }
/** * Method for obtaining AVP with given code and any Vendor-Id. * * @param avpCode the code of the AVP to look for * @param set the set of AVPs where to look * * @return an AVP with the given code, or null if none is present. */ public static Object getAvp(int avpCode, AvpSet set) { Avp avp = set.getAvp(avpCode); if(avp != null) { return getAvp(avp.getCode(), avp.getVendorId(), set); } return null; }
String avpType = AvpDictionary.INSTANCE.getAvp(avp.getCode(), avp.getVendorId()).getType(); avpStringSB.append("| ").append(indent).append("AVP: Code[").append(avp.getCode()).append("] VendorID[").append(avp.getVendorId()).append("] Value[").append(avpValue). append("] Flags[V=").append(avp.isVendorId()).append(";M=").append(avp.isMandatory()).append(";P=").append(avp.isEncrypted()).append("]\r\n");
String avpType = AvpDictionary.INSTANCE.getAvp(avp.getCode(), avp.getVendorId()).getType(); avpStringSB.append("| ").append(indent).append("AVP: Code[").append(avp.getCode()).append("] VendorID[").append(avp.getVendorId()).append("] Value[").append(avpValue). append("] Flags[V=").append(avp.isVendorId()).append(";M=").append(avp.isMandatory()).append(";P=").append(avp.isEncrypted()).append("]\r\n");
private DiameterAvp[] getAvpsInternal(AvpSet set) throws Exception { List<DiameterAvp> avps = new ArrayList<DiameterAvp>(); for (Avp a : set) { AvpRepresentation avpRep = AvpDictionary.INSTANCE.getAvp(a.getCode(), a.getVendorId()); if (avpRep == null) { //log.error("Avp with code: " + a.getCode() + " VendorId: " + a.getVendorId() + " is not listed in dictionary, skipping!"); continue; } else { if (avpRep.getType().equals("Grouped")) { // TODO: There's no info about if AVP has mandatory or protected flags set... GroupedAvpImpl gAVP = new GroupedAvpImpl(a.getCode(), a.getVendorId(), avpRep.getRuleMandatoryAsInt(), avpRep.getRuleProtectedAsInt(), a.getRaw()); gAVP.setExtensionAvps(getAvpsInternal(a.getGrouped())); // This is a grouped AVP... let's make it like that. avps.add(gAVP); } else { // TODO: There's no info about if AVP has mandatory or protected flags set... avps.add(new DiameterAvpImpl(a.getCode(), a.getVendorId(), avpRep.getRuleMandatoryAsInt(), avpRep.getRuleProtectedAsInt(), a.getRaw(), DiameterAvpType.fromString(avpRep.getType()))); } } } return avps.toArray(new DiameterAvp[avps.size()]); }
private DiameterAvp[] getAvpsInternal(AvpSet set) throws Exception { List<DiameterAvp> avps = new ArrayList<DiameterAvp>(); for (Avp a : set) { AvpRepresentation avpRep = AvpDictionary.INSTANCE.getAvp(a.getCode(), a.getVendorId()); if (avpRep == null) { //log.error("Avp with code: " + a.getCode() + " VendorId: " + a.getVendorId() + " is not listed in dictionary, skipping!"); continue; } else { if (avpRep.getType().equals("Grouped")) { // TODO: There's no info about if AVP has mandatory or protected flags set... GroupedAvpImpl gAVP = new GroupedAvpImpl(a.getCode(), a.getVendorId(), avpRep.getRuleMandatoryAsInt(), avpRep.getRuleProtectedAsInt(), a.getRaw()); gAVP.setExtensionAvps(getAvpsInternal(a.getGrouped())); // This is a grouped AVP... let's make it like that. avps.add(gAVP); } else { // TODO: There's no info about if AVP has mandatory or protected flags set... avps.add(new DiameterAvpImpl(a.getCode(), a.getVendorId(), avpRep.getRuleMandatoryAsInt(), avpRep.getRuleProtectedAsInt(), a.getRaw(), DiameterAvpType.fromString(avpRep.getType()))); } } } return avps.toArray(new DiameterAvp[avps.size()]); }
AvpImpl(Avp avp) { avpCode = avp.getCode(); vendorID = avp.getVendorId(); isMandatory = avp.isMandatory(); isEncrypted = avp.isEncrypted(); isVendorSpecific = avp.isVendorId(); try { rawData = avp.getRaw(); if (rawData == null || rawData.length == 0) { groupedData = avp.getGrouped(); } } catch (AvpDataException e) { logger.debug("Can not create Avp", e); } }
AvpRepresentation avpRep = AvpDictionary.INSTANCE.getAvp(a.getCode(), a.getVendorId()); if(avpRep != null) { if(avpRep.isGrouped()) { GroupedAvpImpl gAVP = new GroupedAvpImpl(a.getCode(), a.getVendorId(), a.isMandatory() ? DiameterAvp.FLAG_RULE_MUST : DiameterAvp.FLAG_RULE_MUSTNOT, a.isEncrypted() ? DiameterAvp.FLAG_RULE_MUST : DiameterAvp.FLAG_RULE_MUSTNOT, a.getRaw()); avps.add(new DiameterAvpImpl(a.getCode(), a.getVendorId(), a.isMandatory() ? DiameterAvp.FLAG_RULE_MUST : DiameterAvp.FLAG_RULE_MUSTNOT, a.isEncrypted() ? DiameterAvp.FLAG_RULE_MUST : DiameterAvp.FLAG_RULE_MUSTNOT, a.getRaw(), DiameterAvpType.fromString(avpRep.getType()))); try { GroupedAvpImpl gAVP = new GroupedAvpImpl(a.getCode(), a.getVendorId(), a.isMandatory() ? DiameterAvp.FLAG_RULE_MUST : DiameterAvp.FLAG_RULE_MUSTNOT, a.isEncrypted() ? DiameterAvp.FLAG_RULE_MUST : DiameterAvp.FLAG_RULE_MUSTNOT, a.getRaw()); avps.add(new DiameterAvpImpl(a.getCode(), a.getVendorId(), a.isMandatory() ? DiameterAvp.FLAG_RULE_MUST : DiameterAvp.FLAG_RULE_MUSTNOT, a.isEncrypted() ? DiameterAvp.FLAG_RULE_MUST : DiameterAvp.FLAG_RULE_MUSTNOT, a.getRaw(), null));
AvpRepresentation avpRep = AvpDictionary.INSTANCE.getAvp(a.getCode(), a.getVendorId()); if(avpRep != null) { if(avpRep.isGrouped()) { GroupedAvpImpl gAVP = new GroupedAvpImpl(a.getCode(), a.getVendorId(), a.isMandatory() ? DiameterAvp.FLAG_RULE_MUST : DiameterAvp.FLAG_RULE_MUSTNOT, a.isEncrypted() ? DiameterAvp.FLAG_RULE_MUST : DiameterAvp.FLAG_RULE_MUSTNOT, a.getRaw()); avps.add(new DiameterAvpImpl(a.getCode(), a.getVendorId(), a.isMandatory() ? DiameterAvp.FLAG_RULE_MUST : DiameterAvp.FLAG_RULE_MUSTNOT, a.isEncrypted() ? DiameterAvp.FLAG_RULE_MUST : DiameterAvp.FLAG_RULE_MUSTNOT, a.getRaw(), DiameterAvpType.fromString(avpRep.getType()))); try { GroupedAvpImpl gAVP = new GroupedAvpImpl(a.getCode(), a.getVendorId(), a.isMandatory() ? DiameterAvp.FLAG_RULE_MUST : DiameterAvp.FLAG_RULE_MUSTNOT, a.isEncrypted() ? DiameterAvp.FLAG_RULE_MUST : DiameterAvp.FLAG_RULE_MUSTNOT, a.getRaw()); avps.add(new DiameterAvpImpl(a.getCode(), a.getVendorId(), a.isMandatory() ? DiameterAvp.FLAG_RULE_MUST : DiameterAvp.FLAG_RULE_MUSTNOT, a.isEncrypted() ? DiameterAvp.FLAG_RULE_MUST : DiameterAvp.FLAG_RULE_MUSTNOT, a.getRaw(), null));
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); } }