aboutsummaryrefslogtreecommitdiffstats
path: root/jtosca/src/main/java/org/openecomp/sdc/toscaparser/Repository.java
diff options
context:
space:
mode:
authorPavel Aharoni <pa0916@att.com>2017-04-25 08:02:08 +0300
committerPavel Aharoni <pa0916@att.com>2017-04-25 08:02:33 +0300
commitecd529b4057f8619c9ef0d1c46d1bec5571f5b29 (patch)
tree7133ba1350516a03db982ea30228437ebf843536 /jtosca/src/main/java/org/openecomp/sdc/toscaparser/Repository.java
parent9cb83cb1b15e93c95b1462fc2e3315b35dbc6c4d (diff)
[SDC-13] JTosca delivery - 1.1.8-SNAPSHOT DC
Change-Id: Ib6af5d9393473c3db3f1e21da570c71ea0944eca Signed-off-by: Pavel Aharoni <pa0916@att.com>
Diffstat (limited to 'jtosca/src/main/java/org/openecomp/sdc/toscaparser/Repository.java')
-rw-r--r--jtosca/src/main/java/org/openecomp/sdc/toscaparser/Repository.java116
1 files changed, 116 insertions, 0 deletions
diff --git a/jtosca/src/main/java/org/openecomp/sdc/toscaparser/Repository.java b/jtosca/src/main/java/org/openecomp/sdc/toscaparser/Repository.java
new file mode 100644
index 0000000..f730b2d
--- /dev/null
+++ b/jtosca/src/main/java/org/openecomp/sdc/toscaparser/Repository.java
@@ -0,0 +1,116 @@
+package org.openecomp.sdc.toscaparser;
+
+import org.openecomp.sdc.toscaparser.common.ExceptionCollector;
+import org.openecomp.sdc.toscaparser.utils.UrlUtils;
+
+import java.util.LinkedHashMap;
+
+public class Repository {
+
+ private static final String DESCRIPTION = "description";
+ private static final String URL = "url";
+ private static final String CREDENTIAL = "credential";
+ private static final String SECTIONS[] ={DESCRIPTION, URL, CREDENTIAL};
+
+ private String name;
+ private Object reposit;
+ private String url;
+
+ @SuppressWarnings("unchecked")
+ public Repository(String repName,Object repValue) {
+ name = repName;
+ reposit = repValue;
+ if(reposit instanceof LinkedHashMap) {
+ url = (String)((LinkedHashMap<String,Object>)reposit).get("url");
+ if(url == null) {
+ ExceptionCollector.appendException(String.format(
+ "MissingRequiredFieldError: Repository \"%s\" is missing required field \"url\"",
+ name));
+ }
+ }
+ loadAndValidate(name,reposit);
+ }
+
+ @SuppressWarnings("unchecked")
+ private void loadAndValidate(String val,Object repositDef) {
+ String keyname = val;
+ if(repositDef instanceof LinkedHashMap) {
+ for(String key: ((LinkedHashMap<String,Object>)reposit).keySet()) {
+ boolean bFound = false;
+ for(String sect: SECTIONS) {
+ if(key.equals(sect)) {
+ bFound = true;
+ break;
+ }
+ }
+ if(!bFound) {
+ ExceptionCollector.appendException(String.format(
+ "UnknownFieldError: repositories \"%s\" contains unknown field \"%s\"",
+ keyname,key));
+ }
+ }
+
+ String repositUrl = (String)((LinkedHashMap<String,Object>)repositDef).get("url");
+ if(repositUrl != null) {
+ boolean urlVal = UrlUtils.validateUrl(repositUrl);
+ if(!urlVal) {
+ ExceptionCollector.appendException(String.format(
+ "URLException: repsositories \"%s\" Invalid Url",keyname));
+ }
+ }
+ }
+ }
+
+ @Override
+ public String toString() {
+ return "Repository{" +
+ "name='" + name + '\'' +
+ ", reposit=" + reposit +
+ ", url='" + url + '\'' +
+ '}';
+ }
+}
+
+/*python
+
+from toscaparser.common.exception import ExceptionCollector
+from toscaparser.common.exception import MissingRequiredFieldError
+from toscaparser.common.exception import UnknownFieldError
+from toscaparser.common.exception import URLException
+from toscaparser.utils.gettextutils import _
+import org.openecomp.sdc.toscaparser.utils.urlutils
+
+SECTIONS = (DESCRIPTION, URL, CREDENTIAL) = \
+ ('description', 'url', 'credential')
+
+
+class Repository(object):
+ def __init__(self, repositories, values):
+ self.name = repositories
+ self.reposit = values
+ if isinstance(self.reposit, dict):
+ if 'url' not in self.reposit.keys():
+ ExceptionCollector.appendException(
+ MissingRequiredFieldError(what=_('Repository "%s"')
+ % self.name, required='url'))
+ self.url = self.reposit['url']
+ self.load_and_validate(self.name, self.reposit)
+
+ def load_and_validate(self, val, reposit_def):
+ self.keyname = val
+ if isinstance(reposit_def, dict):
+ for key in reposit_def.keys():
+ if key not in SECTIONS:
+ ExceptionCollector.appendException(
+ UnknownFieldError(what=_('repositories "%s"')
+ % self.keyname, field=key))
+
+ if URL in reposit_def.keys():
+ reposit_url = reposit_def.get(URL)
+ url_val = toscaparser.utils.urlutils.UrlUtils.\
+ validate_url(reposit_url)
+ if url_val is not True:
+ ExceptionCollector.appendException(
+ URLException(what=_('repsositories "%s" Invalid Url')
+ % self.keyname))
+*/ \ No newline at end of file