/*-
* ============LICENSE_START=======================================================
* ONAP-PDP-REST
* ================================================================================
* Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ============LICENSE_END=========================================================
*/
package org.onap.policy.pdp.rest.api.utils;
import java.io.StringReader;
import javax.json.Json;
import javax.json.JsonArray;
import javax.json.JsonException;
import javax.json.JsonObject;
import javax.json.JsonReader;
import javax.json.stream.JsonParsingException;
import org.onap.policy.common.logging.flexlogger.FlexLogger;
import org.onap.policy.common.logging.flexlogger.Logger;
import org.onap.policy.utils.PolicyUtils;
import org.onap.policy.xacml.api.XACMLErrorConstants;
import com.google.common.base.CharMatcher;
public class PolicyApiUtils {
private static Logger LOGGER = FlexLogger.getLogger(PolicyApiUtils.class
.getName());
private static final String SUCCESS = "success";
public static Boolean validateNONASCIICharactersAndAllowSpaces(
String jsonString) {
Boolean isValidForm = false;
if (jsonString.isEmpty()) {
LOGGER.error("The Value is empty.");
return false;
} else {
if (CharMatcher.ascii().matchesAllOf((CharSequence) jsonString)) {
LOGGER.info("The Value does not contain ASCII Characters");
isValidForm = true;
} else {
LOGGER.error("The Value Contains Non ASCII Characters");
isValidForm = false;
}
}
return isValidForm;
}
public static String formatResponse(StringBuilder responseString){
LOGGER.info("Formatting response message from Policy Validator");
String response = responseString.toString().replace("
", " | ");
response = response.replaceAll("(|<\\/b>|
||<\\/i>|@#)", "");
return response;
}
public static boolean isNumeric(String str) {
for (char c : str.toCharArray()) {
if (!Character.isDigit(c))
return false;
}
return true;
}
public static JsonObject stringToJsonObject(String value)
throws JsonException, JsonParsingException, IllegalStateException {
JsonReader jsonReader = Json.createReader(new StringReader(value));
JsonObject object = jsonReader.readObject();
jsonReader.close();
return object;
}
public static String validateDictionaryJsonFields(JsonObject json, String dictionary) {
LOGGER.info("Validating DictionaryJsonField values");
String message;
if("Action".equals(dictionary.trim())){
if(json.containsKey("attributeName")){
if(json.getString("attributeName")==null || json.getString("attributeName").trim().isEmpty()){
message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Attribute Name provided.";
return message;
}
if(!SUCCESS.equals(PolicyUtils.policySpecialCharValidator(json.getString("attributeName").trim()))){
message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Invalid Attribute Name value.";
return message;
}
}else{
message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Missing attributeName key in the dictionaryJson parameter.";
return message;
}
if(json.containsKey("type")){
if(json.getString("type")==null || json.getString("type").trim().isEmpty()){
message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Type provided.";
return message;
}
if(!"REST".equals(json.getString("type").trim())){
message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Invalid Type value.";
return message;
}
}else{
message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Missing type key in the dictionaryJson parameter.";
return message;
}
if(json.containsKey("method")){
if(json.getString("method")==null || json.getString("method").trim().isEmpty()){
message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Method provided.";
return message;
}
if("GET".equals(json.getString("method").trim())
|| "PUT".equals(json.getString("method").trim())
|| "POST".equals(json.getString("method").trim())){
//Successful Validation
}else{
message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Invalid Method value.";
return message;
}
}else{
message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Missing method key in the dictionaryJson parameter.";
return message;
}
if(json.containsKey("url")){
if(json.getString("url")==null || json.getString("url").trim().isEmpty()){
message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No URL provided.";
return message;
}
}else{
message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Missing url key in the dictionaryJson parameter.";
return message;
}
if(json.containsKey("body")){
if(json.getString("body")==null || json.getString("body").trim().isEmpty()){
message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Body provided.";
return message;
}
}else{
message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Missing body key in the dictionaryJson parameter.";
return message;
}
if(json.containsKey("headers")){
JsonArray array = json.getJsonArray("headers");
for (int i = 0;i