PDNDTokenInfo.java

  1. /*
  2.  * GovWay - A customizable API Gateway
  3.  * https://govway.org
  4.  *
  5.  * Copyright (c) 2005-2025 Link.it srl (https://link.it).
  6.  *
  7.  * This program is free software: you can redistribute it and/or modify
  8.  * it under the terms of the GNU General Public License version 3, as published by
  9.  * the Free Software Foundation.
  10.  *
  11.  * This program is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.  * GNU General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU General Public License
  17.  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  18.  *
  19.  */
  20. package org.openspcoop2.protocol.sdk;

  21. import java.io.Serializable;
  22. import java.util.HashMap;
  23. import java.util.Map;

  24. import org.openspcoop2.utils.LoggerWrapperFactory;
  25. import org.openspcoop2.utils.json.JsonPathExpressionEngine;
  26. import org.slf4j.Logger;

  27. /**    
  28.  * PDNDTokenInfo
  29.  *
  30.  * @author Poli Andrea (poli@link.it)
  31.  * @author $Author$
  32.  * @version $Rev$, $Date$AuthorizationMessageSecurityToken
  33.  */
  34. public class PDNDTokenInfo implements Serializable {

  35.     /**
  36.      *
  37.      */
  38.     private static final long serialVersionUID = 1L;
  39.    
  40.     private Map<String,PDNDTokenInfoDetails> pdnd = new HashMap<>();
  41.    
  42.     public Map<String, PDNDTokenInfoDetails> getPdnd() {
  43.         return this.pdnd;
  44.     }
  45.     public void setPdnd(Map<String, PDNDTokenInfoDetails> pdnd) {
  46.         this.pdnd = pdnd;
  47.     }
  48.    
  49.     public PDNDTokenInfoDetails getInfo(String infoId) {
  50.         return this.pdnd!=null ? this.pdnd.get(infoId) : null;
  51.     }
  52.     public void setInfo(String infoId, PDNDTokenInfoDetails info) {
  53.         if(this.pdnd==null) {
  54.             this.pdnd = new HashMap<>();
  55.         }
  56.         this.pdnd.put(infoId, info);
  57.     }
  58.    
  59.     public static final String CLIENT_INFO = "client";
  60.     public PDNDTokenInfoDetails getClient() {
  61.         return getInfo(CLIENT_INFO);
  62.     }
  63.     public Serializable getClient(String claim) {
  64.         PDNDTokenInfoDetails details = getInfo(CLIENT_INFO);
  65.         return details!=null && details.getClaims()!=null ? details.getClaims().get(claim) : null;
  66.     }
  67.     public void setClient(PDNDTokenInfoDetails info) {
  68.         setInfo(CLIENT_INFO, info);
  69.     }
  70.    
  71.     public static final String ORGANIZATION_INFO = "organization";
  72.     public PDNDTokenInfoDetails getOrganization() {
  73.         return getInfo(ORGANIZATION_INFO);
  74.     }
  75.     public Serializable getOrganization(String claim) {
  76.         PDNDTokenInfoDetails details = getInfo(ORGANIZATION_INFO);
  77.         return details!=null && details.getClaims()!=null ? details.getClaims().get(claim) : null;
  78.     }
  79.     public void setOrganization(PDNDTokenInfoDetails info) {
  80.         setInfo(ORGANIZATION_INFO, info);
  81.     }
  82.    
  83.     public static final String TOKEN_INFO_PREFIX_PDND = "pdnd.";
  84.    
  85.     public static boolean existsOrganizationInfoPDNDTokenInfo(Map<String, ?> mapPdnd) {
  86.         return isPDNDTokenInfoMap(mapPdnd, PDNDTokenInfo.ORGANIZATION_INFO);
  87.     }
  88.     public static boolean existsClientInfoPDNDTokenInfo(Map<String, ?> mapPdnd) {
  89.         return isPDNDTokenInfoMap(mapPdnd, PDNDTokenInfo.CLIENT_INFO);
  90.     }
  91.     private static boolean isPDNDTokenInfoMap(Map<String, ?> mapPdnd, String key) {
  92.         Object o = mapPdnd.get(key);
  93.         return o instanceof PDNDTokenInfoDetails;
  94.     }
  95.    
  96.     public String getOrganizationJson() {
  97.         return getOrganizationJsonDetailFromPDNDMapTokenInfo(this.pdnd);
  98.     }
  99.     public static String getOrganizationJsonDetailFromPDNDMapTokenInfo(Map<String, PDNDTokenInfoDetails> mapPdnd) {
  100.         PDNDTokenInfoDetails details = mapPdnd.get(PDNDTokenInfo.ORGANIZATION_INFO);
  101.         return details!=null ? details.getDetails(): null;
  102.     }
  103.     public String getClientJson() {
  104.         return getClientJsonDetailFromPDNDMapTokenInfo(this.pdnd);
  105.     }
  106.     public static String getClientJsonDetailFromPDNDMapTokenInfo(Map<String, PDNDTokenInfoDetails> mapPdnd) {
  107.         PDNDTokenInfoDetails details = mapPdnd.get(PDNDTokenInfo.CLIENT_INFO);
  108.         return details!=null ? details.getDetails(): null;
  109.     }
  110.    
  111.     public static String getOrganizationInfoFromPDNDMap(Map<String, ?> mapPdnd, String name) {
  112.         Object o = mapPdnd.get(PDNDTokenInfo.ORGANIZATION_INFO);
  113.         if(o instanceof Map) {
  114.             Map<?, ?> m = (Map<?, ?>) o;
  115.             return (String) m.get(name);
  116.         }
  117.         return null;
  118.     }
  119.     public static String getClientInfoFromPDNDMap(Map<String, ?> mapPdnd, String name) {
  120.         Object o = mapPdnd.get(PDNDTokenInfo.CLIENT_INFO);
  121.         if(o instanceof Map) {
  122.             Map<?, ?> m = (Map<?, ?>) o;
  123.             return (String) m.get(name);
  124.         }
  125.         return null;
  126.     }
  127.    
  128.     private static String getPatternOrganizationJsonExtract(String path, boolean tokenInfo) {
  129.         String pattern = tokenInfo ? "$.."+TOKEN_INFO_PREFIX_PDND+PDNDTokenInfo.ORGANIZATION_INFO+"." : "$.";
  130.         return pattern + path;
  131.     }
  132.     private static String getPatternClientJsonExtract(String path, boolean tokenInfo) {
  133.         String pattern = tokenInfo ? "$.."+TOKEN_INFO_PREFIX_PDND+PDNDTokenInfo.CLIENT_INFO+"." : "$.";
  134.         return pattern + path;
  135.     }
  136.     private static Logger getLogger() {
  137.         return LoggerWrapperFactory.getLogger(PDNDTokenInfo.class);
  138.     }
  139.    
  140.    
  141.     public String getClientId(Logger log) throws ProtocolException {
  142.         return readClientIdFromPDNDMapTokenInfo(log, this.pdnd);
  143.     }
  144.     public String getClientId() throws ProtocolException {
  145.         return readClientIdFromPDNDMapTokenInfo(getLogger(), this.pdnd);
  146.     }
  147.     public static String readClientIdFromPDNDMapTokenInfo(Logger log, Map<String, PDNDTokenInfoDetails> mapPdnd) throws ProtocolException {
  148.         return readClientId(log, getClientJsonDetailFromPDNDMapTokenInfo(mapPdnd), false);
  149.     }
  150.     public static String readClientIdFromPDNDMap(Map<String, ?> mapPdnd) {
  151.         return getClientInfoFromPDNDMap(mapPdnd, "id");
  152.     }
  153.     public static String readClientIdFromTokenInfo(Logger log, String tokenInfo) throws ProtocolException {
  154.         return readClientId(log, tokenInfo, true);
  155.     }
  156.     public static String readClientIdFromJson(Logger log, String json) throws ProtocolException {
  157.         return readClientId(log, json, false);
  158.     }
  159.     private static String readClientId(Logger log, String json, boolean tokenInfo) throws ProtocolException {
  160.         String pattern =  getPatternClientJsonExtract("id", tokenInfo);
  161.         try {
  162.             return JsonPathExpressionEngine.extractAndConvertResultAsString(json, pattern, log);
  163.         }catch(Exception e) {
  164.             throw new ProtocolException(e.getMessage(),e);
  165.         }
  166.     }
  167.    
  168.     public String getClientConsumerId(Logger log) throws ProtocolException {
  169.         return readClientConsumerIdFromPDNDMapTokenInfo(log, this.pdnd);
  170.     }
  171.     public String getClientConsumerId() throws ProtocolException {
  172.         return readClientConsumerIdFromPDNDMapTokenInfo(getLogger(), this.pdnd);
  173.     }
  174.     public static String readClientConsumerIdFromPDNDMapTokenInfo(Logger log, Map<String, PDNDTokenInfoDetails> mapPdnd) throws ProtocolException {
  175.         return readClientConsumerId(log, getClientJsonDetailFromPDNDMapTokenInfo(mapPdnd), false);
  176.     }
  177.     public static String readClientConsumerIdFromPDNDMap(Map<String, ?> mapPdnd) {
  178.         return getClientInfoFromPDNDMap(mapPdnd, "consumerId");
  179.     }
  180.     public static String readClientConsumerIdFromTokenInfo(Logger log, String tokenInfo) throws ProtocolException {
  181.         return readClientConsumerId(log, tokenInfo, true);
  182.     }
  183.     public static String readClientConsumerIdFromJson(Logger log, String json) throws ProtocolException {
  184.         return readClientConsumerId(log, json, false);
  185.     }
  186.     private static String readClientConsumerId(Logger log, String json, boolean tokenInfo) throws ProtocolException {
  187.         String pattern =  getPatternClientJsonExtract("consumerId", tokenInfo);
  188.         try {
  189.             return JsonPathExpressionEngine.extractAndConvertResultAsString(json, pattern, log);
  190.         }catch(Exception e) {
  191.             throw new ProtocolException(e.getMessage(),e);
  192.         }
  193.     }

  194.     public String getOrganizationId(Logger log) throws ProtocolException {
  195.         return readOrganizationIdFromPDNDMapTokenInfo(log, this.pdnd);
  196.     }
  197.     public String getOrganizationId() throws ProtocolException {
  198.         return readOrganizationIdFromPDNDMapTokenInfo(getLogger(), this.pdnd);
  199.     }
  200.     public static String readOrganizationIdFromPDNDMapTokenInfo(Logger log, Map<String, PDNDTokenInfoDetails> mapPdnd) throws ProtocolException {
  201.         return readOrganizationId(log, getOrganizationJsonDetailFromPDNDMapTokenInfo(mapPdnd), false);
  202.     }
  203.     public static String readOrganizationIdFromPDNDMap(Map<String, ?> mapPdnd) {
  204.         return getOrganizationInfoFromPDNDMap(mapPdnd, "id");
  205.     }
  206.     public static String readOrganizationIdFromTokenInfo(Logger log, String tokenInfo) throws ProtocolException {
  207.         return readOrganizationId(log, tokenInfo, true);
  208.     }
  209.     public static String readOrganizationIdFromJson(Logger log, String json) throws ProtocolException {
  210.         return readOrganizationId(log, json, false);
  211.     }
  212.     private static String readOrganizationId(Logger log, String json, boolean tokenInfo) throws ProtocolException {
  213.         String pattern =  getPatternOrganizationJsonExtract("id", tokenInfo);
  214.         try {
  215.             return JsonPathExpressionEngine.extractAndConvertResultAsString(json, pattern, log);
  216.         }catch(Exception e) {
  217.             throw new ProtocolException(e.getMessage(),e);
  218.         }
  219.     }
  220.    
  221.     public String getOrganizationName(Logger log) throws ProtocolException {
  222.         return readOrganizationNameFromPDNDMapTokenInfo(log, this.pdnd);
  223.     }
  224.     public String getOrganizationName() throws ProtocolException {
  225.         return readOrganizationNameFromPDNDMapTokenInfo(getLogger(), this.pdnd);
  226.     }
  227.     public static String readOrganizationNameFromPDNDMapTokenInfo(Logger log, Map<String, PDNDTokenInfoDetails> mapPdnd) throws ProtocolException {
  228.         return readOrganizationName(log, getOrganizationJsonDetailFromPDNDMapTokenInfo(mapPdnd), false);
  229.     }
  230.     public static String readOrganizationNameFromPDNDMap(Map<String, ?> mapPdnd) {
  231.         return getOrganizationInfoFromPDNDMap(mapPdnd, "name");
  232.     }
  233.     public static String readOrganizationNameFromTokenInfo(Logger log, String tokenInfo) throws ProtocolException {
  234.         return readOrganizationName(log, tokenInfo, true);
  235.     }
  236.     public static String readOrganizationNameFromJson(Logger log, String json) throws ProtocolException {
  237.         return readOrganizationName(log, json, false);
  238.     }
  239.     private static String readOrganizationName(Logger log, String json, boolean tokenInfo) throws ProtocolException {
  240.         String pattern =  getPatternOrganizationJsonExtract("name", tokenInfo);
  241.         try {
  242.             return JsonPathExpressionEngine.extractAndConvertResultAsString(json, pattern, log);
  243.         }catch(Exception e) {
  244.             throw new ProtocolException(e.getMessage(),e);
  245.         }
  246.     }
  247.    
  248.     public String getOrganizationCategory(Logger log) throws ProtocolException {
  249.         return readOrganizationCategoryFromPDNDMapTokenInfo(log, this.pdnd);
  250.     }
  251.     public String getOrganizationCategory() throws ProtocolException {
  252.         return readOrganizationCategoryFromPDNDMapTokenInfo(getLogger(), this.pdnd);
  253.     }
  254.     public static String readOrganizationCategoryFromPDNDMapTokenInfo(Logger log, Map<String, PDNDTokenInfoDetails> mapPdnd) throws ProtocolException {
  255.         return readOrganizationCategory(log, getOrganizationJsonDetailFromPDNDMapTokenInfo(mapPdnd), false);
  256.     }
  257.     public static String readOrganizationCategoryFromPDNDMap(Map<String, ?> mapPdnd) {
  258.         return getOrganizationInfoFromPDNDMap(mapPdnd, "category");
  259.     }
  260.     public static String readOrganizationCategoryFromTokenInfo(Logger log, String tokenInfo) throws ProtocolException {
  261.         return readOrganizationCategory(log, tokenInfo, true);
  262.     }
  263.     public static String readOrganizationCategoryFromJson(Logger log, String json) throws ProtocolException {
  264.         return readOrganizationCategory(log, json, false);
  265.     }
  266.     private static String readOrganizationCategory(Logger log, String json, boolean tokenInfo) throws ProtocolException {
  267.         String pattern =  getPatternOrganizationJsonExtract("category", tokenInfo);
  268.         try {
  269.             return JsonPathExpressionEngine.extractAndConvertResultAsString(json, pattern, log);
  270.         }catch(Exception e) {
  271.             throw new ProtocolException(e.getMessage(),e);
  272.         }
  273.     }
  274.    
  275.     public String getOrganizationExternalOrigin(Logger log) throws ProtocolException {
  276.         return readOrganizationExternalOriginFromPDNDMapTokenInfo(log, this.pdnd);
  277.     }
  278.     public String getOrganizationExternalOrigin() throws ProtocolException {
  279.         return readOrganizationExternalOriginFromPDNDMapTokenInfo(getLogger(), this.pdnd);
  280.     }
  281.     public static String readOrganizationExternalOriginFromPDNDMapTokenInfo(Logger log, Map<String, PDNDTokenInfoDetails> mapPdnd) throws ProtocolException {
  282.         return readOrganizationExternalOrigin(log, getOrganizationJsonDetailFromPDNDMapTokenInfo(mapPdnd), false);
  283.     }
  284.     public static String readOrganizationExternalOriginFromPDNDMap(Map<String, ?> mapPdnd) {
  285.         return getOrganizationInfoFromPDNDMap(mapPdnd, "externalId.origin");
  286.     }
  287.     public static String readOrganizationExternalOriginFromTokenInfo(Logger log, String tokenInfo) throws ProtocolException {
  288.         return readOrganizationExternalOrigin(log, tokenInfo, true);
  289.     }
  290.     public static String readOrganizationExternalOriginFromJson(Logger log, String json) throws ProtocolException {
  291.         return readOrganizationExternalOrigin(log, json, false);
  292.     }
  293.     private static String readOrganizationExternalOrigin(Logger log, String json, boolean tokenInfo) throws ProtocolException {
  294.         String pattern =  getPatternOrganizationJsonExtract(tokenInfo ? "['externalId.origin']" : "externalId.origin", tokenInfo);
  295.         try {
  296.             return JsonPathExpressionEngine.extractAndConvertResultAsString(json, pattern, log);
  297.         }catch(Exception e) {
  298.             throw new ProtocolException(e.getMessage(),e);
  299.         }
  300.     }
  301.    
  302.     public String getOrganizationExternalId(Logger log) throws ProtocolException {
  303.         return readOrganizationExternalIdFromPDNDMapTokenInfo(log, this.pdnd);
  304.     }
  305.     public String getOrganizationExternalId() throws ProtocolException {
  306.         return readOrganizationExternalIdFromPDNDMapTokenInfo(getLogger(), this.pdnd);
  307.     }
  308.     public static String readOrganizationExternalIdFromPDNDMapTokenInfo(Logger log, Map<String, PDNDTokenInfoDetails> mapPdnd) throws ProtocolException {
  309.         return readOrganizationExternalId(log, getOrganizationJsonDetailFromPDNDMapTokenInfo(mapPdnd), false);
  310.     }
  311.     public static String readOrganizationExternalIdFromPDNDMap(Map<String, ?> mapPdnd) {
  312.         return getOrganizationInfoFromPDNDMap(mapPdnd, "externalId.id");
  313.     }
  314.     public static String readOrganizationExternalIdFromTokenInfo(Logger log, String tokenInfo) throws ProtocolException {
  315.         return readOrganizationExternalId(log, tokenInfo, true);
  316.     }
  317.     public static String readOrganizationExternalIdFromJson(Logger log, String json) throws ProtocolException {
  318.         return readOrganizationExternalId(log, json, false);
  319.     }
  320.     private static String readOrganizationExternalId(Logger log, String json, boolean tokenInfo) throws ProtocolException {
  321.         String pattern =  getPatternOrganizationJsonExtract(tokenInfo ? "['externalId.id']" : "externalId.id", tokenInfo);
  322.         try {
  323.             return JsonPathExpressionEngine.extractAndConvertResultAsString(json, pattern, log);
  324.         }catch(Exception e) {
  325.             throw new ProtocolException(e.getMessage(),e);
  326.         }
  327.     }
  328. }