aboutsummaryrefslogtreecommitdiffstats
path: root/jtosca/src/main/java/org/openecomp/sdc/toscaparser/functions/Token.java
blob: 2bfadd0ffc6b466395b0a061087a71aaebff8c4f (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
package org.openecomp.sdc.toscaparser.functions;

import java.util.ArrayList;
import java.util.LinkedHashMap;

import org.openecomp.sdc.toscaparser.NodeTemplate;
import org.openecomp.sdc.toscaparser.TopologyTemplate;
import org.openecomp.sdc.toscaparser.common.ExceptionCollector;

public class Token extends Function {
    // Validate the function and provide an instance of the function

    //The token function is used within a TOSCA service template on a string to
    //parse out (tokenize) substrings separated by one or more token characters
    //within a larger string.

    //Arguments:

    //* The composite string that contains one or more substrings separated by
    //  token characters.
    //* The string that contains one or more token characters that separate
    //  substrings within the composite string.
    //* The integer indicates the index of the substring to return from the
    //  composite string.  Note that the first substring is denoted by using
    //  the '0' (zero) integer value.

    //Example:

   // [ get_attribute: [ my_server, data_endpoint, ip_address ], ':', 1 ]


	public Token(TopologyTemplate ttpl,Object context,String name,ArrayList<Object> args) {
		super(ttpl,context,name,args);
	}
	
	@Override
	public Object result() {
		return this;
	}

	@Override
	void validate() {
        if(args.size() < 3) {
            ExceptionCollector.appendException(
                "ValueError: Invalid arguments for function \"token\". " +
                "Expected at least three arguments");
        }
        else {
            if(!(args.get(1) instanceof String) || 
               ((String)args.get(1)).length() != 1) {
                ExceptionCollector.appendException(
                    "ValueError: Invalid arguments for function \"token\". " +
                    "Expected single char value as second argument");
            }
            if(!(args.get(2) instanceof Integer)) {
                ExceptionCollector.appendException(
                    "ValueError: Invalid arguments for function \"token\"" +
                    "Expected integer value as third argument");
        	}
		}
	}

}

/*python

class Token(Function):
"""Validate the function and provide an instance of the function

The token function is used within a TOSCA service template on a string to
parse out (tokenize) substrings separated by one or more token characters
within a larger string.


Arguments:

* The composite string that contains one or more substrings separated by
  token characters.
* The string that contains one or more token characters that separate
  substrings within the composite string.
* The integer indicates the index of the substring to return from the
  composite string.  Note that the first substring is denoted by using
  the '0' (zero) integer value.

Example:

 [ get_attribute: [ my_server, data_endpoint, ip_address ], ':', 1 ]

"""

def validate(self):
    if len(self.args) < 3:
        ExceptionCollector.appendException(
            ValueError(_('Invalid arguments for function "{0}". Expected '
                         'at least three arguments.').format(TOKEN)))
    else:
        if not isinstance(self.args[1], str) or len(self.args[1]) != 1:
            ExceptionCollector.appendException(
                ValueError(_('Invalid arguments for function "{0}". '
                             'Expected single char value as second '
                             'argument.').format(TOKEN)))

        if not isinstance(self.args[2], int):
            ExceptionCollector.appendException(
                ValueError(_('Invalid arguments for function "{0}". '
                             'Expected integer value as third '
                             'argument.').format(TOKEN)))

def result(self):
    return self
*/