aboutsummaryrefslogtreecommitdiffstats
path: root/jtosca/src/main/java/org/openecomp/sdc/toscaparser/api/Repository.java
blob: 39699f3855afaab53b729fab6bd8b15776244a38 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
package org.openecomp.sdc.toscaparser.api;

import java.util.LinkedHashMap;

import org.openecomp.sdc.toscaparser.api.common.ExceptionCollector;
import org.openecomp.sdc.toscaparser.api.utils.UrlUtils;

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.api.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))
*/