diff --git a/Docker_Tecnalia_PolicyEngine/policyengine/policyengine.jar b/Docker_Tecnalia_PolicyEngine/policyengine/swagger-spring-1.0.0.jar similarity index 100% rename from Docker_Tecnalia_PolicyEngine/policyengine/policyengine.jar rename to Docker_Tecnalia_PolicyEngine/policyengine/swagger-spring-1.0.0.jar diff --git a/src/main/java/com/tecnalia/DVPolicyEngine/api/GetAccessApiController.java b/src/main/java/com/tecnalia/DVPolicyEngine/api/GetAccessApiController.java index af64428e12674622e5e5b307f897be67c271ced1..cfc58a4cec4e5cd94db40c0f8d9e02413bb688b1 100644 --- a/src/main/java/com/tecnalia/DVPolicyEngine/api/GetAccessApiController.java +++ b/src/main/java/com/tecnalia/DVPolicyEngine/api/GetAccessApiController.java @@ -67,7 +67,7 @@ public class GetAccessApiController implements GetAccessApi { */ String organizationAttributesAsString=policyService.getDataSeekersOrganizationPolicy(dataSeekerID); - organizationAttributesAsString="{\"name\":\"Test Organization\",\"sector\":\"Test Sector\",\"continent\":\"EU\",\"country\":\"GRE\",\"type\":\"Private Entity\",\"size\":\"medium\",\"reputation\":7}"; + // organizationAttributesAsString="{\"name\":\"Test Organization\",\"sector\":\"Test Sector\",\"continent\":\"EU\",\"country\":\"GRE\",\"type\":\"Private Entity\",\"size\":\"medium\",\"reputation\":7}"; System.out.println("organizationAttributesAsString:"+organizationAttributesAsString); @@ -82,35 +82,59 @@ public class GetAccessApiController implements GetAccessApi { string[] Reputation_Score; } */ - - List<Access> listAccess =new ArrayList<Access>(); - for (String datasetID : datasetIDList) { - String accessPolicyasString=policyService.getDatasetPolicies(datasetID); + JSONObject organizationAttributesJson = null; + JSONObject accessPolicyAsJSON = null; + List<Access> listAccess =new ArrayList<Access>(); + try{ + organizationAttributesJson=new JSONObject(organizationAttributesAsString); + + + - System.out.println("accessPolicyasString:"+accessPolicyasString); - - // 3.-Comparar los atributos de la organización con los de la politica y construir el objeto Access y añadirlo a la lista + for (String datasetID : datasetIDList) { + + String accessPolicyasString=policyService.getDatasetPolicy(datasetID); + + + try + { + accessPolicyAsJSON = new JSONObject(accessPolicyasString); + + System.out.println("accessPolicyasString:"+accessPolicyasString); + + // 3.-Comparar los atributos de la organización con los de la politica y construir el objeto Access y añadirlo a la lista + + Access access=policyService.checkAtributesInPolicy( datasetID, organizationAttributesJson, accessPolicyAsJSON); + if (access!=null) + listAccess.add(access); + + + + } + catch(Exception e){ + Access access=new Access(); + access.datasetID(datasetID); + access.setGranted(Boolean.FALSE); + access.setNonConformities(accessPolicyasString); + listAccess.add(access); + //return new ResponseEntity<List<Access>>(listAccess, HttpStatus.INTERNAL_SERVER_ERROR); + } + + } + - Access access=policyService.checkAtributesInPolicy( datasetID, organizationAttributesAsString, accessPolicyasString); - if (access!=null) - listAccess.add(access); + }catch (Exception e){ + + return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR); - } - /* if (accept != null && accept.contains("application/json")) { - try { - return new ResponseEntity<List<Access>>(objectMapper.readValue("[ {\n \"Dataset_ID\" : \"Dataset_ID\",\n \"non_conformities\" : \"non_conformities\",\n \"granted\" : true\n}, {\n \"Dataset_ID\" : \"Dataset_ID\",\n \"non_conformities\" : \"non_conformities\",\n \"granted\" : true\n} ]", List.class), HttpStatus.NOT_IMPLEMENTED); - } catch (IOException e) { - log.error("Couldn't serialize response for content type application/json", e); - return new ResponseEntity<List<Access>>(HttpStatus.INTERNAL_SERVER_ERROR); - } - } - return new ResponseEntity<List<Access>>(HttpStatus.NOT_IMPLEMENTED);*/ - + + + return new ResponseEntity<List<Access>>(listAccess, HttpStatus.OK); diff --git a/src/main/java/com/tecnalia/DVPolicyEngine/service/PolicyService.java b/src/main/java/com/tecnalia/DVPolicyEngine/service/PolicyService.java index f2488e3d867206e4b5bc12c37f983b924570f275..de062386e323a9b768d941415968f302755dce1a 100644 --- a/src/main/java/com/tecnalia/DVPolicyEngine/service/PolicyService.java +++ b/src/main/java/com/tecnalia/DVPolicyEngine/service/PolicyService.java @@ -86,10 +86,10 @@ public class PolicyService { } - public String getDatasetPolicies(String datasetID) { + public String getDatasetPolicy(String datasetID) { String accessPolicyAsString=""; - try { + try { /*connect to blockchain API and return policy as struct access_policy { @@ -104,17 +104,18 @@ public class PolicyService { //{"DatasetId":"ActivityData-Riccardo"} String jsondata="{\"DatasetId\":"+"\""+datasetID+"\""+"}"; - String datasetInformationAsString=""; + String address="https://datavaults-test-126.euprojects.net/readDatasetId"; - datasetInformationAsString = httpUtils.sendHttpPostRequest(address, jsondata); - JSONObject accessPolicyAsJSON = new JSONObject(); + String datasetInformationAsString = httpUtils.sendHttpPostRequest(address, jsondata); + + JSONObject accessPolicyAsJSON = new JSONObject(); try{ accessPolicyAsJSON = new JSONObject(datasetInformationAsString); JSONObject policy=accessPolicyAsJSON.getJSONObject("Policy"); accessPolicyAsString=policy.toString(); } catch (Exception e) { - + accessPolicyAsString=datasetInformationAsString; } @@ -122,16 +123,17 @@ public class PolicyService { } return accessPolicyAsString; + } - public Access checkAtributesInPolicy(String datasetID,String organizationAttributesAsString, String accessPolicyasString){ + public Access checkAtributesInPolicy(String datasetID,JSONObject organizationAttributesJson, JSONObject accessPolicyAsJSON){ Access access=new Access(); Iterator<String> orgKeys = null; Iterator<String> policyKeys = null; - JSONObject organizationAttributesJson = null; - JSONObject accessPolicyAsJSON = null; + /* JSONObject organizationAttributesJson = null; + JSONObject accessPolicyAsJSON = null;*/ //Example //organizationAttributesAsString:{"name":"Test Organization","sector":"Test Sector","continent":"EU","country":"GRE","type":"Private Entity","size":"medium","reputation":7} @@ -139,7 +141,7 @@ public class PolicyService { try{ - organizationAttributesJson = new JSONObject(organizationAttributesAsString); + // organizationAttributesJson = new JSONObject(organizationAttributesAsString); orgKeys = organizationAttributesJson.keys(); @@ -159,7 +161,7 @@ public class PolicyService { try{ - accessPolicyAsJSON = new JSONObject(accessPolicyasString); + // accessPolicyAsJSON = new JSONObject(accessPolicyasString); //policyKeys=accessPolicyAsJSON.keys(); /* JSONArray jArrayContinent=accessPolicyAsJSON.getJSONArray("Continent"); diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index e80e72d1611651ae30e49e1efa4d8e493fabe78d..38da7da8edfd1ef37a95f12b22ca8b6a3a6545fc 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -10,7 +10,7 @@ springdoc.swagger-ui.path=/swagger-ui.html -datavaults.api.url=https://datavaults-cloud.euprojects.net/api/v1/group +datavaults.api.url=https://platform.datavaults.eu/api/v1/group datavaults.auth.server.url=https://datavaults-auth.euprojects.net/auth/realms/platform/protocol/openid-connect/token datavaults.auth.client.id=backend-service datavaults.auth.client.secret=04892d79-f600-4410-a9ac-6860aa5bdf3e