Search in sources :

Example 1 with AvpSet

use of org.jdiameter.api.AvpSet in project jain-slee.diameter by RestComm.

the class AvpAssistant method checkAvpFlags.

/**
 * @param set
 *          the set to check
 * @return an array of offending AVPs
 */
protected static ArrayList<String> checkAvpFlags(AvpSet set) {
    ArrayList<String> failedAvps = new ArrayList<String>();
    for (Avp avp : set) {
        // System.out.println(avp.getVendorId() + ":" + avp.getCode() + " V[" + avp.isVendorId() + "] M[" +
        // avp.isMandatory() + "] P[" + avp.isEncrypted() + "]");
        AvpRepresentation avpRep = DictionaryImpl.INSTANCE.getAvp(avp.getCode(), avp.getVendorId());
        // Mandatory must not be set if rule is MUST NOT or SHOULD NOT
        if (avp.isMandatory() && (avpRep.getRuleMandatory().equals("mustnot") || avpRep.getRuleMandatory().equals("shouldnot"))) {
            failedAvps.add("- Code[" + avp.getCode() + "], Vendor-Id[" + avp.getVendorId() + "], Flag[M / '" + avp.isMandatory() + "' vs '" + avpRep.getRuleMandatory() + "']");
        }
        // Protected must not be set if rule is MUST or MAY
        if (avp.isEncrypted() && !(avpRep.getRuleProtected().equals("must") || avpRep.getRuleProtected().equals("may"))) {
            failedAvps.add("- Code[" + avp.getCode() + "], Vendor-Id[" + avp.getVendorId() + "], Flag[P / '" + avp.isEncrypted() + "' vs '" + avpRep.getRuleProtected() + "']");
        }
        // Vendor must be set if rule is MUST or MAY
        if (avp.isEncrypted() && !(avpRep.getRuleProtected().equals("must") || avpRep.getRuleProtected().equals("may"))) {
            failedAvps.add("- Code[" + avp.getCode() + "], Vendor-Id[" + avp.getVendorId() + "], Flag[P / '" + avp.isEncrypted() + "' vs '" + avpRep.getRuleProtected() + "']");
        }
        AvpSet subAvps = null;
        try {
            subAvps = avp.getGrouped();
        } catch (Exception e) {
        }
        if (subAvps != null) {
            failedAvps.addAll(checkAvpFlags(subAvps));
        }
    }
    return failedAvps;
}
Also used : ArrayList(java.util.ArrayList) AvpSet(org.jdiameter.api.AvpSet) VendorSpecificApplicationIdAvp(net.java.slee.resource.diameter.base.events.avp.VendorSpecificApplicationIdAvp) Avp(org.jdiameter.api.Avp) DiameterAvp(net.java.slee.resource.diameter.base.events.avp.DiameterAvp) ExperimentalResultAvp(net.java.slee.resource.diameter.base.events.avp.ExperimentalResultAvp) ProxyInfoAvp(net.java.slee.resource.diameter.base.events.avp.ProxyInfoAvp) FailedAvp(net.java.slee.resource.diameter.base.events.avp.FailedAvp) AvpRepresentation(org.jdiameter.api.validation.AvpRepresentation) InvocationTargetException(java.lang.reflect.InvocationTargetException)

Example 2 with AvpSet

use of org.jdiameter.api.AvpSet in project jain-slee.diameter by RestComm.

the class CreditControlMessageFactoryImpl method createMessage.

public Message createMessage(DiameterHeader header, DiameterAvp[] avps) throws AvpNotAllowedException {
    Message msg = createRawMessage(header);
    AvpSet set = msg.getAvps();
    for (DiameterAvp avp : avps) {
        addAvp(avp, set);
    }
    return msg;
}
Also used : Message(org.jdiameter.api.Message) DiameterMessage(net.java.slee.resource.diameter.base.events.DiameterMessage) CreditControlMessage(net.java.slee.resource.diameter.cca.events.CreditControlMessage) DiameterAvp(net.java.slee.resource.diameter.base.events.avp.DiameterAvp) AvpSet(org.jdiameter.api.AvpSet)

Example 3 with AvpSet

use of org.jdiameter.api.AvpSet in project jain-slee.diameter by RestComm.

the class ShServerMessageFactoryImpl method addAvp.

protected void addAvp(DiameterAvp avp, AvpSet set) {
    // FIXME: alexandre: Should we look at the types and add them with proper function?
    if (avp instanceof GroupedAvp) {
        AvpSet avpSet = set.addGroupedAvp(avp.getCode(), avp.getVendorId(), avp.getMandatoryRule() == 1, avp.getProtectedRule() == 1);
        DiameterAvp[] groupedAVPs = ((GroupedAvp) avp).getExtensionAvps();
        for (DiameterAvp avpFromGroup : groupedAVPs) {
            addAvp(avpFromGroup, avpSet);
        }
    } else if (avp != null) {
        set.addAvp(avp.getCode(), avp.byteArrayValue(), avp.getVendorId(), avp.getMandatoryRule() == 1, avp.getProtectedRule() == 1);
    }
}
Also used : GroupedAvp(net.java.slee.resource.diameter.base.events.avp.GroupedAvp) DiameterAvp(net.java.slee.resource.diameter.base.events.avp.DiameterAvp) AvpSet(org.jdiameter.api.AvpSet)

Example 4 with AvpSet

use of org.jdiameter.api.AvpSet in project jain-slee.diameter by RestComm.

the class ShServerMessageFactoryImpl method createMessage.

protected Message createMessage(DiameterHeader header, DiameterAvp[] avps) throws AvpNotAllowedException {
    try {
        Message msg = createRawMessage(header);
        AvpSet set = msg.getAvps();
        for (DiameterAvp avp : avps) {
            addAvp(avp, set);
        }
        return msg;
    } catch (Exception e) {
        logger.error("Failed to create message.", e);
    }
    return null;
}
Also used : Message(org.jdiameter.api.Message) DiameterMessage(net.java.slee.resource.diameter.base.events.DiameterMessage) DiameterAvp(net.java.slee.resource.diameter.base.events.avp.DiameterAvp) AvpSet(org.jdiameter.api.AvpSet) AvpNotAllowedException(net.java.slee.resource.diameter.base.events.avp.AvpNotAllowedException) InternalException(org.jdiameter.api.InternalException) IllegalDiameterStateException(org.jdiameter.api.IllegalDiameterStateException) NoSuchAvpException(net.java.slee.resource.diameter.base.NoSuchAvpException)

Example 5 with AvpSet

use of org.jdiameter.api.AvpSet in project jain-slee.diameter by RestComm.

the class ShClientMessageFactoryImpl method addAvp.

protected void addAvp(DiameterAvp avp, AvpSet set) {
    if (avp instanceof GroupedAvp) {
        AvpSet avpSet = set.addGroupedAvp(avp.getCode(), avp.getVendorId(), avp.getMandatoryRule() == 1, avp.getProtectedRule() == 1);
        DiameterAvp[] groupedAVPs = ((GroupedAvp) avp).getExtensionAvps();
        for (DiameterAvp avpFromGroup : groupedAVPs) {
            addAvp(avpFromGroup, avpSet);
        }
    } else if (avp != null)
        set.addAvp(avp.getCode(), avp.byteArrayValue(), avp.getVendorId(), avp.getMandatoryRule() == 1, avp.getProtectedRule() == 1);
}
Also used : GroupedAvp(net.java.slee.resource.diameter.base.events.avp.GroupedAvp) DiameterAvp(net.java.slee.resource.diameter.base.events.avp.DiameterAvp) AvpSet(org.jdiameter.api.AvpSet)

Aggregations

AvpSet (org.jdiameter.api.AvpSet)48 Avp (org.jdiameter.api.Avp)30 AvpDataException (org.jdiameter.api.AvpDataException)26 DiameterAvp (net.java.slee.resource.diameter.base.events.avp.DiameterAvp)20 GroupedAvp (net.java.slee.resource.diameter.base.events.avp.GroupedAvp)10 Message (org.jdiameter.api.Message)8 DiameterMessage (net.java.slee.resource.diameter.base.events.DiameterMessage)7 InvocationTargetException (java.lang.reflect.InvocationTargetException)5 URISyntaxException (java.net.URISyntaxException)4 ParseException (org.jdiameter.client.api.parser.ParseException)4 ArrayList (java.util.ArrayList)3 NoSuchAvpException (net.java.slee.resource.diameter.base.NoSuchAvpException)3 AvpRepresentation (org.mobicents.diameter.dictionary.AvpRepresentation)3 Constructor (java.lang.reflect.Constructor)2 Date (java.util.Date)2 AvpNotAllowedException (net.java.slee.resource.diameter.base.events.avp.AvpNotAllowedException)2 IllegalDiameterStateException (org.jdiameter.api.IllegalDiameterStateException)2 InternalException (org.jdiameter.api.InternalException)2 AvpRepresentation (org.jdiameter.api.validation.AvpRepresentation)2 ExperimentalResultAvp (net.java.slee.resource.diameter.base.events.avp.ExperimentalResultAvp)1