package at.gv.egovernment.moa.id.protocols.builder.attributes; import org.apache.commons.lang3.StringUtils; import at.gv.egiz.eaaf.core.api.idp.IAttributeGenerator; import at.gv.egiz.eaaf.core.api.idp.IAuthData; import at.gv.egiz.eaaf.core.api.idp.IPVPAttributeBuilder; import at.gv.egiz.eaaf.core.api.idp.ISPConfiguration; import at.gv.egiz.eaaf.core.exceptions.AttributeBuilderException; import at.gv.egiz.eaaf.core.exceptions.EAAFBuilderException; import at.gv.egiz.eaaf.core.impl.data.Pair; import at.gv.egiz.eaaf.core.impl.idp.auth.builder.BPKBuilder; import at.gv.egiz.eaaf.core.impl.idp.builder.attributes.BPKAttributeBuilder; import at.gv.egiz.eaaf.core.impl.idp.builder.attributes.PVPMETADATA; import at.gv.egovernment.moa.id.auth.exception.BuildException; import at.gv.egovernment.moa.id.commons.api.exceptions.ConfigurationException; import at.gv.egovernment.moa.id.protocols.pvp2x.builder.attributes.exceptions.NoMandateDataAttributeException; import at.gv.egovernment.moa.logging.Logger; import at.gv.egovernment.moa.util.Constants; @PVPMETADATA public class MandateNaturalPersonBPKListAttributeBuilder extends MandateNaturalPersonBPKAttributeBuilder implements IPVPAttributeBuilder { public String getName() { return MANDATE_NAT_PER_BPK_LIST_NAME; } public ATT build(ISPConfiguration oaParam, IAuthData authData, IAttributeGenerator g) throws AttributeBuilderException { try { String result = getBpkAttributeStringForSP(oaParam, authData); if (result != null) { result = BPKListAttributeBuilder.LIST_ELEMENT_START + result + BPKListAttributeBuilder.LIST_ELEMENT_END; //add additional bPKs if someone are available if (authData.getAdditionalbPKs() != null && !authData.getAdditionalbPKs().isEmpty()) { Logger.info("Additional bPKs available. Calculate additional bPKs for mandate ... "); Pair baseId = getBaseIdFromMandate(oaParam, authData); if (baseId != null && StringUtils.isNotEmpty(baseId.getSecond()) && baseId.getSecond().equals(Constants.URN_PREFIX_BASEID)) { for (Pair el : authData.getAdditionalbPKs()) { Pair addBpk = new BPKBuilder().generateAreaSpecificPersonIdentifier( baseId.getFirst(), el.getSecond()); Logger.trace("Calculate bPK with " + addBpk.toString()); result += BPKListAttributeBuilder.DELIMITER_BPK_LIST + BPKListAttributeBuilder.LIST_ELEMENT_START + removeBpkTypePrefix(addBpk.getSecond()) + BPKAttributeBuilder.DELIMITER_BPKTYPE_BPK + attrMaxSize(addBpk.getFirst()) + BPKListAttributeBuilder.LIST_ELEMENT_END; } } } Logger.trace("Authenticate user with List of bPK/wbPK: " + result + " for mandate"); return g.buildStringAttribute(MANDATE_NAT_PER_BPK_LIST_FRIENDLY_NAME, MANDATE_NAT_PER_BPK_LIST_NAME, result); } return null; } catch (BuildException | ConfigurationException | EAAFBuilderException e) { Logger.error("Failed to generate IdentificationType"); throw new NoMandateDataAttributeException(); } } public ATT buildEmpty(IAttributeGenerator g) { return g.buildEmptyAttribute(MANDATE_NAT_PER_BPK_LIST_FRIENDLY_NAME, MANDATE_NAT_PER_BPK_LIST_NAME); } }