riddl 0.100.5 → 0.100.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a24a1c966fa3a1e23fc990b18deabf5c33cd40c857f6000b9c52113be2a109d6
4
- data.tar.gz: 348d53830081bcce624049802cb960fb0d73b5b46cc4be1cd3d11e291ec1fefe
3
+ metadata.gz: 0dfaffabbc8caecb6ad865f2911d9a09d1cd9166ef6d13fc756d430ec9609eb4
4
+ data.tar.gz: 8d89bfa9870e6466156b09d01650e323a8737639d8c961ee40cc2c0748c182ea
5
5
  SHA512:
6
- metadata.gz: 64e766b07324bcdf822a5cc9cf76cdb887f38e9c0c62eb85b76602217ef92279dae73538281288e783cfeabe2afa32f3764f0af69ae463eeac684b943b5da369
7
- data.tar.gz: b8b498bf76e1697920f93fac9c1547d59cc219e526aa836e65fea5f0393e9036472a749304001a61b02f72191645636ece0f54f88cd6cf99c13dcc3be1c95419
6
+ metadata.gz: 2f0d67ad9554f9d59cbc0d67fedc3a8d87372ee4a9cb9a4da8e1587ff6d1aea972820da74f201081e9784b343d8c6136f696234ef939c1fa5621d524aee22399
7
+ data.tar.gz: 85c548ac1686d1857ceeb8cff4bcec8a0229252955ed4081e287e7c6de67acf6912dccb0e2f5222e0b1b9fa653d52020d91d8597d7a5033e6165785357d5551c
@@ -5,12 +5,12 @@
5
5
  <handlerwrapper type="simple" modifiable="false" mutable="false">
6
6
  <data type="string">
7
7
  <param name="pattern">[A-Z][a-zA-Z]*</param>
8
- </data>
8
+ </data>
9
9
  </handlerwrapper>
10
10
  <description type="arbitrary" modifiable="false" mutable="false"/>
11
11
  <optional>
12
12
  <transformation type="arbitrary" modifiable="true" mutable="false"/>
13
- </optional>
13
+ </optional>
14
14
  <state type="state" modifiable="true">
15
15
  <running>
16
16
  <stopped putable="true"/>
@@ -18,17 +18,17 @@
18
18
  </running>
19
19
  <stopped>
20
20
  <running putable="true"/>
21
- </stopped>
21
+ </stopped>
22
22
  <finished/>
23
- </state>
23
+ </state>
24
24
  <dataelements type="complex" modifiable="true" mutable="true">
25
25
  <zeroOrMore>
26
26
  <element><anyName/><text/></element>
27
- </zeroOrMore>
28
- </dataelements>
27
+ </zeroOrMore>
28
+ </dataelements>
29
29
  <endpoints type="complex" modifiable="false" mutable="true">
30
30
  <zeroOrMore>
31
31
  <element><anyName/><text/></element>
32
- </zeroOrMore>
32
+ </zeroOrMore>
33
33
  </endpoints>
34
34
  </properties>
@@ -0,0 +1 @@
1
+ :port: 9293
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/ruby
2
+ require 'pp'
3
+ require File.expand_path(File.dirname(__FILE__) + '/../../lib/ruby/riddl/server')
4
+ require File.expand_path(File.dirname(__FILE__) + '/../../lib/ruby/riddl/utils/properties')
5
+
6
+ Riddl::Server.new(File.dirname(__FILE__) + '/properties.xml') do
7
+ backend = Riddl::Utils::Properties::Backend.new(
8
+ @riddl_opts[:basepath] + '/server.properties.schema',
9
+ @riddl_opts[:basepath] + '/server.properties.xml'
10
+ )
11
+
12
+ on resource do
13
+ use Riddl::Utils::Properties::implementation(backend)
14
+ end
15
+ end.loop!
@@ -0,0 +1,132 @@
1
+ <!DOCTYPE html>
2
+ <xsl:stylesheet version="1.0" xmlns="http://relaxng.org/ns/structure/1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:p="http://riddl.org/ns/common-patterns/properties/1.0">
3
+ <xsl:output indent="yes"/>
4
+ <xsl:strip-space elements="*"/>
5
+
6
+ <xsl:template match="/p:properties">
7
+ <grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" ns="http://riddl.org/ns/common-patterns/properties/1.0">
8
+
9
+ <start>
10
+ <element name="properties">
11
+ <interleave>
12
+ <xsl:apply-templates select="./*[name()!='optional']"/>
13
+ <xsl:apply-templates select="p:optional"/>
14
+ </interleave>
15
+ </element>
16
+ </start>
17
+
18
+ <define name="xml">
19
+ <element>
20
+ <anyName/>
21
+ <zeroOrMore>
22
+ <attribute>
23
+ <anyName/>
24
+ </attribute>
25
+ </zeroOrMore>
26
+ <zeroOrMore>
27
+ <choice>
28
+ <text/>
29
+ <ref name="any"/>
30
+ </choice>
31
+ </zeroOrMore>
32
+ </element>
33
+ </define>
34
+
35
+ </grammar>
36
+ </xsl:template>
37
+
38
+ <xsl:template match="p:optional">
39
+ <optional>
40
+ <xsl:apply-templates select="./*[name()!='optional']"/>
41
+ </optional>
42
+ </xsl:template>
43
+
44
+ <xsl:template mode="special" match="p:attribute">
45
+ <attribute>
46
+ <xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
47
+ <xsl:choose>
48
+ <xsl:when test="@type">
49
+ <data>
50
+ <xsl:attribute name="type"><xsl:value-of select="@type"/></xsl:attribute>
51
+ <xsl:apply-templates mode="special" select="p:choice"/>
52
+ </data>
53
+ </xsl:when>
54
+ <xsl:otherwise>
55
+ <xsl:apply-templates mode="special" select="p:choice"/>
56
+ </xsl:otherwise>
57
+ </xsl:choose>
58
+ </attribute>
59
+ </xsl:template>
60
+ <xsl:template mode="special" match="p:choice">
61
+ <choice>
62
+ <xsl:apply-templates mode="special" select="p:value"/>
63
+ </choice>
64
+ </xsl:template>
65
+ <xsl:template mode="special" match="p:value">
66
+ <value><xsl:value-of select="text()"/></value>
67
+ </xsl:template>
68
+ <xsl:template mode="special" match="p:param">
69
+ <param>
70
+ <xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
71
+ <xsl:value-of select="text()"/>
72
+ </param>
73
+ </xsl:template>
74
+
75
+ <xsl:template match="*[name()!='optional']">
76
+ <element>
77
+
78
+ <xsl:attribute name="name">
79
+ <xsl:value-of select="name()"/>
80
+ </xsl:attribute>
81
+
82
+ <xsl:if test="@type='xml'">
83
+ <ref name="xml"/>
84
+ </xsl:if>
85
+
86
+ <xsl:if test="@type='collection'">
87
+ <xsl:apply-templates select="*"/>
88
+ </xsl:if>
89
+
90
+ <xsl:if test="@type='value'">
91
+ <xsl:apply-templates mode="special" select="p:attribute"/>
92
+ <xsl:apply-templates mode="special" select="p:choice"/>
93
+ <xsl:if test="not(p:choice)">
94
+ <data type="string"><xsl:apply-templates mode="special" select="p:param"/></data>
95
+ </xsl:if>
96
+ </xsl:if>
97
+
98
+ <xsl:if test="@type='hash'">
99
+ <element>
100
+ <anyName/>
101
+ <xsl:apply-templates mode="special" select="p:attribute"/>
102
+ <xsl:apply-templates mode="special" select="p:choice"/>
103
+ <xsl:if test="not(p:choice)">
104
+ <data type="string"><xsl:apply-templates mode="special" select="p:param"/></data>
105
+ </xsl:if>
106
+ </element>
107
+ </xsl:if>
108
+
109
+ <xsl:if test="@type='state'">
110
+ <optional>
111
+ <attribute name="changed">
112
+ <data type="dateTime"/>
113
+ </attribute>
114
+ </optional>
115
+ <choice>
116
+ <xsl:for-each select='*'>
117
+ <value><xsl:value-of select='name()'/></value>
118
+ </xsl:for-each>
119
+ </choice>
120
+ </xsl:if>
121
+
122
+ </element>
123
+ </xsl:template>
124
+
125
+ <xsl:template mode="copy-no-ns" match="*">
126
+ <xsl:element name="{name(.)}">
127
+ <xsl:copy-of select="@*"/>
128
+ <xsl:apply-templates mode="copy-no-ns"/>
129
+ </xsl:element>
130
+ </xsl:template>
131
+
132
+ </xsl:stylesheet>
@@ -0,0 +1 @@
1
+ examples/propnew/../../ns/common-patterns/properties/1.0/properties.xml
@@ -0,0 +1,95 @@
1
+ <!--
2
+ This file is part of CPEE.
3
+
4
+ CPEE is free software: you can redistribute it and/or modify it under the terms
5
+ of the GNU General Public License as published by the Free Software Foundation,
6
+ either version 3 of the License, or (at your option) any later version.
7
+
8
+ CPEE is distributed in the hope that it will be useful, but WITHOUT ANY
9
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
10
+ PARTICULAR PURPOSE. See the GNU General Public License for more details.
11
+
12
+ You should have received a copy of the GNU General Public License along with
13
+ CPEE (file COPYING in the main directory). If not, see
14
+ <http://www.gnu.org/licenses/>.
15
+ -->
16
+
17
+ <properties xmlns="http://riddl.org/ns/common-patterns/properties/1.0">
18
+ <attributes type="hash" modifiable="true"/>
19
+ <handlerwrapper type="value" modifiable="true">
20
+ <param name="pattern">[A-Z][a-zA-Z]*</param>
21
+ </handlerwrapper>
22
+ <dsl type="value" modifiable="false" mutable="false"/>
23
+ <dslx type="xml" modifiable="false" mutable="false"/>
24
+ <description type="xml" modifiable="true"/>
25
+ <transformation type="collection" modifiable="true">
26
+ <description type="value">
27
+ <attribute name='type'>
28
+ <choice>
29
+ <value>copy</value>
30
+ <value>rest</value>
31
+ <value>xslt</value>
32
+ <value>clean</value>
33
+ <value>none</value>
34
+ </choice>
35
+ </attribute>
36
+ </description>
37
+ <dataelements type="value">
38
+ <attribute name='type'>
39
+ <choice>
40
+ <value>rest</value>
41
+ <value>xslt</value>
42
+ <value>clean</value>
43
+ <value>none</value>
44
+ </choice>
45
+ </attribute>
46
+ </dataelements>
47
+ <endpoints type="value">
48
+ <attribute name='type'>
49
+ <choice>
50
+ <value>rest</value>
51
+ <value>xslt</value>
52
+ <value>clean</value>
53
+ <value>none</value>
54
+ </choice>
55
+ </attribute>
56
+ </endpoints>
57
+ </transformation>
58
+ <state type="state" modifiable="true">
59
+ <ready>
60
+ <running putable="true"/>
61
+ <ready putable="true"/>
62
+ <simulating putable="true"/>
63
+ <abandoned putable="true"/>
64
+ </ready>
65
+ <running>
66
+ <stopping putable="true"/>
67
+ <finishing putable="false"/>
68
+ <finished putable="false"/>
69
+ </running>
70
+ <simulating>
71
+ <ready putable="false"/>
72
+ <stopped putable="false"/>
73
+ </simulating>
74
+ <stopping>
75
+ <stopped putable="false"/>
76
+ </stopping>
77
+ <stopped>
78
+ <abandoned putable="true"/>
79
+ <stopped putable="true"/>
80
+ <running putable="true"/>
81
+ <simulating putable="true"/>
82
+ </stopped>
83
+ <abandoned/>
84
+ <finished/>
85
+ </state>
86
+ <status type="value" modifiable="false" mutable="false">
87
+ <attribute name='id' type="integer"/>
88
+ </status>
89
+ <positions type="hash" modifiable="true">
90
+ <attribute name='passthrough' type="string"/>
91
+ <param name="pattern">(at|after)</param>
92
+ </positions>
93
+ <dataelements type="hash" modifiable="true"/>
94
+ <endpoints type="hash" modifiable="true"/>
95
+ </properties>
@@ -0,0 +1,16 @@
1
+ <properties xmlns="http://riddl.org/ns/common-patterns/properties/1.0">
2
+ <name>eTM</name>
3
+ <dataelements>
4
+ <a>7</a>
5
+ <b>7</b>
6
+ <c>foo</c>
7
+ </dataelements>
8
+ <endpoints>
9
+ <e1>http://www.heise.de</e1>
10
+ <e2>mager</e2>
11
+ </endpoints>
12
+ <handlerwrapper>Test</handlerwrapper>
13
+ <description>lala</description>
14
+ <state>stopped</state>
15
+ <transformation>xxx</transformation>
16
+ </properties>
@@ -0,0 +1,126 @@
1
+ <?xml version="1.0"?>
2
+ <grammar xmlns="http://relaxng.org/ns/structure/1.0" xmlns:p="http://riddl.org/ns/common-patterns/properties/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" ns="http://riddl.org/ns/common-patterns/properties/1.0">
3
+ <start>
4
+ <element name="properties">
5
+ <interleave>
6
+ <element name="attributes">
7
+ <element>
8
+ <anyName/>
9
+ <data type="string"/>
10
+ </element>
11
+ </element>
12
+ <element name="handlerwrapper">
13
+ <data type="string">
14
+ <param name="pattern">[A-Z][a-zA-Z]*</param>
15
+ </data>
16
+ </element>
17
+ <element name="dsl">
18
+ <data type="string"/>
19
+ </element>
20
+ <element name="dslx">
21
+ <ref name="xml"/>
22
+ </element>
23
+ <element name="description">
24
+ <ref name="xml"/>
25
+ </element>
26
+ <element name="transformation">
27
+ <element name="description">
28
+ <attribute name="type">
29
+ <choice>
30
+ <value>copy</value>
31
+ <value>rest</value>
32
+ <value>xslt</value>
33
+ <value>clean</value>
34
+ <value>none</value>
35
+ </choice>
36
+ </attribute>
37
+ <data type="string"/>
38
+ </element>
39
+ <element name="dataelements">
40
+ <attribute name="type">
41
+ <choice>
42
+ <value>rest</value>
43
+ <value>xslt</value>
44
+ <value>clean</value>
45
+ <value>none</value>
46
+ </choice>
47
+ </attribute>
48
+ <data type="string"/>
49
+ </element>
50
+ <element name="endpoints">
51
+ <attribute name="type">
52
+ <choice>
53
+ <value>rest</value>
54
+ <value>xslt</value>
55
+ <value>clean</value>
56
+ <value>none</value>
57
+ </choice>
58
+ </attribute>
59
+ <data type="string"/>
60
+ </element>
61
+ </element>
62
+ <element name="state">
63
+ <optional>
64
+ <attribute name="changed">
65
+ <data type="dateTime"/>
66
+ </attribute>
67
+ </optional>
68
+ <choice>
69
+ <value>ready</value>
70
+ <value>running</value>
71
+ <value>simulating</value>
72
+ <value>stopping</value>
73
+ <value>stopped</value>
74
+ <value>abandoned</value>
75
+ <value>finished</value>
76
+ </choice>
77
+ </element>
78
+ <element name="status">
79
+ <attribute name="id">
80
+ <data type="integer"/>
81
+ </attribute>
82
+ <data type="string"/>
83
+ </element>
84
+ <element name="positions">
85
+ <element>
86
+ <anyName/>
87
+ <attribute name="passthrough">
88
+ <data type="string"/>
89
+ </attribute>
90
+ <data type="string">
91
+ <param name="pattern">(at|after)</param>
92
+ </data>
93
+ </element>
94
+ </element>
95
+ <element name="dataelements">
96
+ <element>
97
+ <anyName/>
98
+ <data type="string"/>
99
+ </element>
100
+ </element>
101
+ <element name="endpoints">
102
+ <element>
103
+ <anyName/>
104
+ <data type="string"/>
105
+ </element>
106
+ </element>
107
+ </interleave>
108
+ </element>
109
+ </start>
110
+ <define name="xml">
111
+ <element>
112
+ <anyName/>
113
+ <zeroOrMore>
114
+ <attribute>
115
+ <anyName/>
116
+ </attribute>
117
+ </zeroOrMore>
118
+ <zeroOrMore>
119
+ <choice>
120
+ <text/>
121
+ <ref name="any"/>
122
+ </choice>
123
+ </zeroOrMore>
124
+ </element>
125
+ </define>
126
+ </grammar>
@@ -123,6 +123,7 @@ unless Module.constants.include?('CLIENT_INCLUDED')
123
123
  def post(parameters = []); resource.post(parameters); end
124
124
  def simulate_post(parameters = []); resource.simulate_post(parameters); end
125
125
  def put(parameters = []); resource.put(parameters); end
126
+ def patch(parameters = []); resource.patch(parameters); end
126
127
  def simulate_put(parameters = []); resource.simulate_put(parameters); end
127
128
  def delete(parameters = []); resource.delete(parameters); end
128
129
  def simulate_delete(parameters = []); resource.simulate_delete(parameters); end
@@ -183,6 +184,13 @@ unless Module.constants.include?('CLIENT_INCLUDED')
183
184
  exec_request('PUT',parameters,true)
184
185
  end #}}}
185
186
 
187
+ def patch(parameters = []) #{{{
188
+ exec_request('PATCH',parameters,false)
189
+ end #}}}
190
+ def simulate_patch(parameters = []) #{{{
191
+ exec_request('PATCH',parameters,true)
192
+ end #}}}
193
+
186
194
  def delete(parameters = []) #{{{
187
195
  exec_request('DELETE',parameters,false)
188
196
  end #}}}
@@ -11,7 +11,7 @@
11
11
  </element>
12
12
  <element name="not-existing">
13
13
  <empty/>
14
- </element>
14
+ </element>
15
15
  </choice>
16
16
  </start>
17
17
 
@@ -23,7 +23,7 @@
23
23
  </choice>
24
24
  </zeroOrMore>
25
25
  </define>
26
-
26
+
27
27
  <define name="any">
28
28
  <element>
29
29
  <anyName/>
@@ -71,7 +71,7 @@
71
71
  <element name="properties">
72
72
  <zeroOrMore>
73
73
  <ref name="property"/>
74
- </zeroOrMore>
74
+ </zeroOrMore>
75
75
  </element>
76
76
  </start>
77
77
 
@@ -80,7 +80,7 @@
80
80
  <anyName/>
81
81
  <data type="string"/>
82
82
  </element>
83
- </define>
83
+ </define>
84
84
 
85
85
  </grammar>
86
86
  </parameter>
@@ -89,7 +89,7 @@
89
89
  <choice>
90
90
  <parameter name="value" type="string"/>
91
91
  <parameter name="value" mimetype="text/xml"/>
92
- </choice>
92
+ </choice>
93
93
  </message>
94
94
  <message name="updcontent">
95
95
  <choice>
@@ -97,7 +97,7 @@
97
97
  <parameter name="value" mimetype="text/plain"/>
98
98
  <parameter name="content" mimetype="text/xml"/> <!-- add everything inside the root tag -->
99
99
  <parameter name="content" type="string"/> <!-- add everything inside the root tag -->
100
- </choice>
100
+ </choice>
101
101
  </message>
102
102
  <message name="property">
103
103
  <parameter name="name" type="string">
@@ -121,7 +121,7 @@
121
121
  <get in="*" out="resource-document-schema"/>
122
122
  <resource relative="rng">
123
123
  <get in="*" out="resource-document-schema"/>
124
- </resource>
124
+ </resource>
125
125
  <resource relative="xsd">
126
126
  <get in="*" out="resource-document-schema"/>
127
127
  </resource>
@@ -135,6 +135,7 @@
135
135
  <delete in="*"/>
136
136
  <post in="addcontent"/>
137
137
  <put in="updcontent"/>
138
+ <patch in="updcontent"/>
138
139
  <resource>
139
140
  <get in="*" out="value"/>
140
141
  <put in="updcontent"/>
@@ -145,6 +146,6 @@
145
146
  </resource>
146
147
  </resource>
147
148
  </resource>
148
- </resource>
149
+ </resource>
149
150
 
150
151
  </description>
@@ -24,13 +24,13 @@
24
24
  <ref name="riddl-description-other-atts"/>
25
25
  <ref name="riddl-transformation"/>
26
26
  </element>
27
- </choice>
27
+ </choice>
28
28
  </zeroOrMore>
29
- <element name="resource">
29
+ <element name="resource">
30
30
  <ref name="riddl-resource-dynamic"/>
31
31
  </element>
32
32
  </define>
33
-
33
+
34
34
  <define name="riddl-message">
35
35
  <ref name="riddl-att-name"/>
36
36
  <zeroOrMore>
@@ -48,29 +48,29 @@
48
48
  <element name="add_header">
49
49
  <oneOrMore>
50
50
  <ref name="riddl-header"/>
51
- </oneOrMore>
52
- </element>
51
+ </oneOrMore>
52
+ </element>
53
53
  <element name="add_as_first">
54
54
  <oneOrMore>
55
55
  <ref name="riddl-parameter"/>
56
- </oneOrMore>
57
- </element>
56
+ </oneOrMore>
57
+ </element>
58
58
  <element name="add_as_last">
59
59
  <oneOrMore>
60
60
  <ref name="riddl-parameter"/>
61
- </oneOrMore>
62
- </element>
61
+ </oneOrMore>
62
+ </element>
63
63
  <element name="add_before">
64
64
  <ref name="riddl-att-name-star"/>
65
65
  <oneOrMore>
66
66
  <ref name="riddl-parameter"/>
67
- </oneOrMore>
67
+ </oneOrMore>
68
68
  </element>
69
69
  <element name="add_after">
70
70
  <ref name="riddl-att-name-star"/>
71
71
  <oneOrMore>
72
72
  <ref name="riddl-parameter"/>
73
- </oneOrMore>
73
+ </oneOrMore>
74
74
  </element>
75
75
  <element name="remove_each">
76
76
  <ref name="riddl-att-col-remove"/>
@@ -84,15 +84,15 @@
84
84
  </choice>
85
85
  </oneOrMore>
86
86
  </define>
87
-
87
+
88
88
  <define name="riddl-header">
89
89
  <element name="header">
90
90
  <ref name="riddl-att-name"/>
91
91
  <choice>
92
92
  <ref name="riddl-fixed"/>
93
93
  <ref name="data"/>
94
- </choice>
95
- </element>
94
+ </choice>
95
+ </element>
96
96
  </define>
97
97
 
98
98
  <define name="riddl-message-content">
@@ -102,7 +102,7 @@
102
102
  <ref name="riddl-optional"/>
103
103
  <ref name="riddl-choice"/>
104
104
  <ref name="riddl-parameter"/>
105
- </choice>
105
+ </choice>
106
106
  </define>
107
107
  <define name="riddl-message-content-trimmed">
108
108
  <choice>
@@ -111,7 +111,7 @@
111
111
  <ref name="riddl-choice"/>
112
112
  <ref name="riddl-group"/>
113
113
  <ref name="riddl-parameter"/>
114
- </choice>
114
+ </choice>
115
115
  </define>
116
116
 
117
117
  <define name="riddl-zeroOrMore">
@@ -119,8 +119,8 @@
119
119
  <ref name="riddl-description-others"/>
120
120
  <oneOrMore>
121
121
  <ref name="riddl-message-content"/>
122
- </oneOrMore>
123
- </element>
122
+ </oneOrMore>
123
+ </element>
124
124
  </define>
125
125
  <define name="riddl-oneOrMore">
126
126
  <element name="oneOrMore">
@@ -128,15 +128,15 @@
128
128
  <oneOrMore>
129
129
  <ref name="riddl-message-content"/>
130
130
  </oneOrMore>
131
- </element>
131
+ </element>
132
132
  </define>
133
133
  <define name="riddl-optional">
134
134
  <element name="optional">
135
135
  <ref name="riddl-description-others"/>
136
136
  <oneOrMore>
137
137
  <ref name="riddl-message-content"/>
138
- </oneOrMore>
139
- </element>
138
+ </oneOrMore>
139
+ </element>
140
140
  </define>
141
141
  <define name="riddl-choice">
142
142
  <element name="choice">
@@ -152,7 +152,7 @@
152
152
  <oneOrMore>
153
153
  <ref name="riddl-message-content"/>
154
154
  </oneOrMore>
155
- </element>
155
+ </element>
156
156
  </define>
157
157
  <define name="riddl-parameter">
158
158
  <element name="parameter">
@@ -166,52 +166,52 @@
166
166
  <data type="string">
167
167
  <param name="pattern">(([\c]+|\*)/[\c\+]+)|([\c]+/([\c\+]+|\*))|\*</param>
168
168
  </data>
169
- </attribute>
169
+ </attribute>
170
170
  <optional>
171
171
  <attribute name="handler">
172
172
  <data type="anyURI"/>
173
- </attribute>
173
+ </attribute>
174
174
  </optional>
175
175
  <optional>
176
176
  <ref name="any"/>
177
- </optional>
178
- </group>
177
+ </optional>
178
+ </group>
179
179
  </choice>
180
180
  </element>
181
- </define>
181
+ </define>
182
182
 
183
183
  <define name="riddl-fixed">
184
184
  <optional>
185
185
  <attribute name="fixed">
186
186
  <data type="string"/>
187
187
  </attribute>
188
- </optional>
188
+ </optional>
189
189
  </define>
190
190
 
191
191
  <define name="riddl-resource-attributes">
192
192
  <optional>
193
193
  <attribute name="pattern">
194
194
  <data type="anyURI"/>
195
- </attribute>
195
+ </attribute>
196
196
  </optional>
197
197
  <optional>
198
198
  <attribute name="role">
199
199
  <data type="anyURI"/>
200
- </attribute>
200
+ </attribute>
201
201
  </optional>
202
202
  <ref name="riddl-description-others"/>
203
203
  </define>
204
-
204
+
205
205
  <define name="riddl-resource-recursive-choice">
206
206
  <choice>
207
207
  <attribute name="recursive">
208
208
  <data type="boolean"/>
209
- </attribute>
209
+ </attribute>
210
210
  <group>
211
211
  <ref name="riddl-resource-sub"/>
212
- </group>
213
- </choice>
214
- </define>
212
+ </group>
213
+ </choice>
214
+ </define>
215
215
 
216
216
  <define name="riddl-resource-dynamic">
217
217
  <ref name="riddl-resource-attributes"/>
@@ -226,7 +226,7 @@
226
226
  <ref name="riddl-resource-content"/>
227
227
  <ref name="riddl-resource-recursive-choice"/>
228
228
  </define>
229
-
229
+
230
230
  <define name="riddl-resource-sub">
231
231
  <!-- One dynamic resources, multiple named ones, before or after the dynamic -->
232
232
  <zeroOrMore>
@@ -244,7 +244,7 @@
244
244
  <ref name="riddl-resource-named"/>
245
245
  </element>
246
246
  </zeroOrMore>
247
- </define>
247
+ </define>
248
248
 
249
249
  <define name="riddl-resource-content">
250
250
  <zeroOrMore>
@@ -261,6 +261,10 @@
261
261
  <ref name="riddl-atts-request"/>
262
262
  <ref name="riddl-description-others"/>
263
263
  </element>
264
+ <element name="patch">
265
+ <ref name="riddl-atts-request"/>
266
+ <ref name="riddl-description-others"/>
267
+ </element>
264
268
  <element name="delete">
265
269
  <ref name="riddl-atts-request"/>
266
270
  <ref name="riddl-description-others"/>
@@ -269,11 +273,11 @@
269
273
  <ref name="riddl-att-method"/>
270
274
  <ref name="riddl-atts-request"/>
271
275
  <ref name="riddl-description-others"/>
272
- </element>
276
+ </element>
273
277
  <element name="websocket">
274
278
  <empty/>
275
- </element>
276
- </choice>
279
+ </element>
280
+ </choice>
277
281
  </zeroOrMore>
278
282
  </define>
279
283
 
@@ -298,7 +302,7 @@
298
302
  </zeroOrMore>
299
303
  </element>
300
304
  </zeroOrMore>
301
- </define>
305
+ </define>
302
306
 
303
307
  <define name="riddl-description-other-atts">
304
308
  <zeroOrMore>
@@ -312,6 +316,6 @@
312
316
  </anyName>
313
317
  </attribute>
314
318
  </zeroOrMore>
315
- </define>
316
-
319
+ </define>
320
+
317
321
  </grammar>
@@ -361,6 +361,7 @@ module Riddl
361
361
  def get(min='*'); return false if @riddl_message.nil?; @riddl_path == '/' + @riddl_info[:s].join('/') && @riddl_message.in && min == @riddl_message.in.name && @riddl_method == 'get' end
362
362
  def delete(min='*'); return false if @riddl_message.nil?; @riddl_path == '/' + @riddl_info[:s].join('/') && @riddl_message.in && min == @riddl_message.in.name && @riddl_method == 'delete' end
363
363
  def put(min='*'); return false if @riddl_message.nil?; @riddl_path == '/' + @riddl_info[:s].join('/') && @riddl_message.in && min == @riddl_message.in.name && @riddl_method == 'put' end
364
+ def patch(min='*'); return false if @riddl_message.nil?; @riddl_path == '/' + @riddl_info[:s].join('/') && @riddl_message.in && min == @riddl_message.in.name && @riddl_method == 'patch' end
364
365
  def websocket; return false if @riddl_message.nil?; @riddl_path == '/' + @riddl_info[:s].join('/') && @riddl_method == 'websocket' end
365
366
  def resource(rname=nil); return rname.nil? ? '{}' : rname end
366
367
 
@@ -28,6 +28,7 @@ module Riddl
28
28
  run Riddl::Utils::Properties::DelContent, backend, handler if delete
29
29
  run Riddl::Utils::Properties::AddContent, backend, handler if post 'addcontent'
30
30
  run Riddl::Utils::Properties::UpdContent, backend, handler if put 'updcontent'
31
+ run Riddl::Utils::Properties::PtcContent, backend, handler if patch 'updcontent'
31
32
  on resource do
32
33
  run Riddl::Utils::Properties::GetContent, backend, handler if get
33
34
  run Riddl::Utils::Properties::DelContent, backend, handler if delete
@@ -428,6 +429,65 @@ module Riddl
428
429
  end
429
430
  end #}}}
430
431
 
432
+ class PtcContent < Riddl::Implementation #{{{
433
+ def response
434
+ backend = @a[0]
435
+ handler = @a[1]
436
+
437
+ property = @r[1]
438
+ value = @p.detect{|p| p.name == 'value'}; value = value.nil? ? value : value.value
439
+ content = @p.detect{|p| p.name == 'content'}; content = content.nil? ? content : content.value
440
+ minor = @r[2]
441
+
442
+ unless backend.modifiable?(property)
443
+ @status = 500
444
+ return # change properties.schema
445
+ end
446
+
447
+ path = "/p:properties/*[name()=\"#{property}\"]#{minor.nil? ? '' : "/p:#{minor}"}"
448
+ nodes = backend.data.find(path)
449
+ if nodes.empty?
450
+ @status = 404
451
+ return # this property does not exist
452
+ end
453
+
454
+ if backend.is_state?(property)
455
+ unless backend.valid_state?(property,nodes.first.to_s,value)
456
+ @status = 404
457
+ return # not a valid state from here on
458
+ end
459
+ end
460
+
461
+ newstuff = value.nil? ? XML::Smart.string(content).root.children : value
462
+ backend.modify do |doc|
463
+ nodes = doc.root.find(path)
464
+ nodes.each do |ele|
465
+ if value.nil?
466
+ newstuff.each do |child|
467
+ path = File.basename(child.path)
468
+ subele = ele.find(path).first
469
+ if subele
470
+ subele.replace_by(child)
471
+ else
472
+ ele.add(child)
473
+ end
474
+ end
475
+ ele.children.first.attributes['changed'] = Time.now.xmlschema if backend.is_state?(property)
476
+ else
477
+ ele.text = newstuff
478
+ ele.attributes['changed'] = Time.now.xmlschema if backend.is_state?(property)
479
+ end
480
+ end
481
+ end || begin
482
+ @status = 400
483
+ return # bad request
484
+ end
485
+
486
+ EM.defer{handler.property(property).update} unless handler.nil?
487
+ return
488
+ end
489
+ end #}}}
490
+
431
491
  class UpdContent < Riddl::Implementation #{{{
432
492
  def response
433
493
  backend = @a[0]
@@ -11,7 +11,7 @@
11
11
  </element>
12
12
  <element name="not-existing">
13
13
  <empty/>
14
- </element>
14
+ </element>
15
15
  </choice>
16
16
  </start>
17
17
 
@@ -23,7 +23,7 @@
23
23
  </choice>
24
24
  </zeroOrMore>
25
25
  </define>
26
-
26
+
27
27
  <define name="any">
28
28
  <element>
29
29
  <anyName/>
@@ -71,7 +71,7 @@
71
71
  <element name="properties">
72
72
  <zeroOrMore>
73
73
  <ref name="property"/>
74
- </zeroOrMore>
74
+ </zeroOrMore>
75
75
  </element>
76
76
  </start>
77
77
 
@@ -80,7 +80,7 @@
80
80
  <anyName/>
81
81
  <data type="string"/>
82
82
  </element>
83
- </define>
83
+ </define>
84
84
 
85
85
  </grammar>
86
86
  </parameter>
@@ -89,7 +89,7 @@
89
89
  <choice>
90
90
  <parameter name="value" type="string"/>
91
91
  <parameter name="value" mimetype="text/xml"/>
92
- </choice>
92
+ </choice>
93
93
  </message>
94
94
  <message name="updcontent">
95
95
  <choice>
@@ -97,7 +97,7 @@
97
97
  <parameter name="value" mimetype="text/plain"/>
98
98
  <parameter name="content" mimetype="text/xml"/> <!-- add everything inside the root tag -->
99
99
  <parameter name="content" type="string"/> <!-- add everything inside the root tag -->
100
- </choice>
100
+ </choice>
101
101
  </message>
102
102
  <message name="property">
103
103
  <parameter name="name" type="string">
@@ -121,7 +121,7 @@
121
121
  <get in="*" out="resource-document-schema"/>
122
122
  <resource relative="rng">
123
123
  <get in="*" out="resource-document-schema"/>
124
- </resource>
124
+ </resource>
125
125
  <resource relative="xsd">
126
126
  <get in="*" out="resource-document-schema"/>
127
127
  </resource>
@@ -135,6 +135,7 @@
135
135
  <delete in="*"/>
136
136
  <post in="addcontent"/>
137
137
  <put in="updcontent"/>
138
+ <patch in="updcontent"/>
138
139
  <resource>
139
140
  <get in="*" out="value"/>
140
141
  <put in="updcontent"/>
@@ -145,6 +146,6 @@
145
146
  </resource>
146
147
  </resource>
147
148
  </resource>
148
- </resource>
149
+ </resource>
149
150
 
150
151
  </description>
@@ -24,13 +24,13 @@
24
24
  <ref name="riddl-description-other-atts"/>
25
25
  <ref name="riddl-transformation"/>
26
26
  </element>
27
- </choice>
27
+ </choice>
28
28
  </zeroOrMore>
29
- <element name="resource">
29
+ <element name="resource">
30
30
  <ref name="riddl-resource-dynamic"/>
31
31
  </element>
32
32
  </define>
33
-
33
+
34
34
  <define name="riddl-message">
35
35
  <ref name="riddl-att-name"/>
36
36
  <zeroOrMore>
@@ -48,29 +48,29 @@
48
48
  <element name="add_header">
49
49
  <oneOrMore>
50
50
  <ref name="riddl-header"/>
51
- </oneOrMore>
52
- </element>
51
+ </oneOrMore>
52
+ </element>
53
53
  <element name="add_as_first">
54
54
  <oneOrMore>
55
55
  <ref name="riddl-parameter"/>
56
- </oneOrMore>
57
- </element>
56
+ </oneOrMore>
57
+ </element>
58
58
  <element name="add_as_last">
59
59
  <oneOrMore>
60
60
  <ref name="riddl-parameter"/>
61
- </oneOrMore>
62
- </element>
61
+ </oneOrMore>
62
+ </element>
63
63
  <element name="add_before">
64
64
  <ref name="riddl-att-name-star"/>
65
65
  <oneOrMore>
66
66
  <ref name="riddl-parameter"/>
67
- </oneOrMore>
67
+ </oneOrMore>
68
68
  </element>
69
69
  <element name="add_after">
70
70
  <ref name="riddl-att-name-star"/>
71
71
  <oneOrMore>
72
72
  <ref name="riddl-parameter"/>
73
- </oneOrMore>
73
+ </oneOrMore>
74
74
  </element>
75
75
  <element name="remove_each">
76
76
  <ref name="riddl-att-col-remove"/>
@@ -84,15 +84,15 @@
84
84
  </choice>
85
85
  </oneOrMore>
86
86
  </define>
87
-
87
+
88
88
  <define name="riddl-header">
89
89
  <element name="header">
90
90
  <ref name="riddl-att-name"/>
91
91
  <choice>
92
92
  <ref name="riddl-fixed"/>
93
93
  <ref name="data"/>
94
- </choice>
95
- </element>
94
+ </choice>
95
+ </element>
96
96
  </define>
97
97
 
98
98
  <define name="riddl-message-content">
@@ -102,7 +102,7 @@
102
102
  <ref name="riddl-optional"/>
103
103
  <ref name="riddl-choice"/>
104
104
  <ref name="riddl-parameter"/>
105
- </choice>
105
+ </choice>
106
106
  </define>
107
107
  <define name="riddl-message-content-trimmed">
108
108
  <choice>
@@ -111,7 +111,7 @@
111
111
  <ref name="riddl-choice"/>
112
112
  <ref name="riddl-group"/>
113
113
  <ref name="riddl-parameter"/>
114
- </choice>
114
+ </choice>
115
115
  </define>
116
116
 
117
117
  <define name="riddl-zeroOrMore">
@@ -119,8 +119,8 @@
119
119
  <ref name="riddl-description-others"/>
120
120
  <oneOrMore>
121
121
  <ref name="riddl-message-content"/>
122
- </oneOrMore>
123
- </element>
122
+ </oneOrMore>
123
+ </element>
124
124
  </define>
125
125
  <define name="riddl-oneOrMore">
126
126
  <element name="oneOrMore">
@@ -128,15 +128,15 @@
128
128
  <oneOrMore>
129
129
  <ref name="riddl-message-content"/>
130
130
  </oneOrMore>
131
- </element>
131
+ </element>
132
132
  </define>
133
133
  <define name="riddl-optional">
134
134
  <element name="optional">
135
135
  <ref name="riddl-description-others"/>
136
136
  <oneOrMore>
137
137
  <ref name="riddl-message-content"/>
138
- </oneOrMore>
139
- </element>
138
+ </oneOrMore>
139
+ </element>
140
140
  </define>
141
141
  <define name="riddl-choice">
142
142
  <element name="choice">
@@ -152,7 +152,7 @@
152
152
  <oneOrMore>
153
153
  <ref name="riddl-message-content"/>
154
154
  </oneOrMore>
155
- </element>
155
+ </element>
156
156
  </define>
157
157
  <define name="riddl-parameter">
158
158
  <element name="parameter">
@@ -166,52 +166,52 @@
166
166
  <data type="string">
167
167
  <param name="pattern">(([\c]+|\*)/[\c\+]+)|([\c]+/([\c\+]+|\*))|\*</param>
168
168
  </data>
169
- </attribute>
169
+ </attribute>
170
170
  <optional>
171
171
  <attribute name="handler">
172
172
  <data type="anyURI"/>
173
- </attribute>
173
+ </attribute>
174
174
  </optional>
175
175
  <optional>
176
176
  <ref name="any"/>
177
- </optional>
178
- </group>
177
+ </optional>
178
+ </group>
179
179
  </choice>
180
180
  </element>
181
- </define>
181
+ </define>
182
182
 
183
183
  <define name="riddl-fixed">
184
184
  <optional>
185
185
  <attribute name="fixed">
186
186
  <data type="string"/>
187
187
  </attribute>
188
- </optional>
188
+ </optional>
189
189
  </define>
190
190
 
191
191
  <define name="riddl-resource-attributes">
192
192
  <optional>
193
193
  <attribute name="pattern">
194
194
  <data type="anyURI"/>
195
- </attribute>
195
+ </attribute>
196
196
  </optional>
197
197
  <optional>
198
198
  <attribute name="role">
199
199
  <data type="anyURI"/>
200
- </attribute>
200
+ </attribute>
201
201
  </optional>
202
202
  <ref name="riddl-description-others"/>
203
203
  </define>
204
-
204
+
205
205
  <define name="riddl-resource-recursive-choice">
206
206
  <choice>
207
207
  <attribute name="recursive">
208
208
  <data type="boolean"/>
209
- </attribute>
209
+ </attribute>
210
210
  <group>
211
211
  <ref name="riddl-resource-sub"/>
212
- </group>
213
- </choice>
214
- </define>
212
+ </group>
213
+ </choice>
214
+ </define>
215
215
 
216
216
  <define name="riddl-resource-dynamic">
217
217
  <ref name="riddl-resource-attributes"/>
@@ -226,7 +226,7 @@
226
226
  <ref name="riddl-resource-content"/>
227
227
  <ref name="riddl-resource-recursive-choice"/>
228
228
  </define>
229
-
229
+
230
230
  <define name="riddl-resource-sub">
231
231
  <!-- One dynamic resources, multiple named ones, before or after the dynamic -->
232
232
  <zeroOrMore>
@@ -244,7 +244,7 @@
244
244
  <ref name="riddl-resource-named"/>
245
245
  </element>
246
246
  </zeroOrMore>
247
- </define>
247
+ </define>
248
248
 
249
249
  <define name="riddl-resource-content">
250
250
  <zeroOrMore>
@@ -261,6 +261,10 @@
261
261
  <ref name="riddl-atts-request"/>
262
262
  <ref name="riddl-description-others"/>
263
263
  </element>
264
+ <element name="patch">
265
+ <ref name="riddl-atts-request"/>
266
+ <ref name="riddl-description-others"/>
267
+ </element>
264
268
  <element name="delete">
265
269
  <ref name="riddl-atts-request"/>
266
270
  <ref name="riddl-description-others"/>
@@ -269,11 +273,11 @@
269
273
  <ref name="riddl-att-method"/>
270
274
  <ref name="riddl-atts-request"/>
271
275
  <ref name="riddl-description-others"/>
272
- </element>
276
+ </element>
273
277
  <element name="websocket">
274
278
  <empty/>
275
- </element>
276
- </choice>
279
+ </element>
280
+ </choice>
277
281
  </zeroOrMore>
278
282
  </define>
279
283
 
@@ -298,7 +302,7 @@
298
302
  </zeroOrMore>
299
303
  </element>
300
304
  </zeroOrMore>
301
- </define>
305
+ </define>
302
306
 
303
307
  <define name="riddl-description-other-atts">
304
308
  <zeroOrMore>
@@ -312,6 +316,6 @@
312
316
  </anyName>
313
317
  </attribute>
314
318
  </zeroOrMore>
315
- </define>
316
-
319
+ </define>
320
+
317
321
  </grammar>
data/riddl.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "riddl"
3
- s.version = "0.100.5"
3
+ s.version = "0.100.6"
4
4
  s.platform = Gem::Platform::RUBY
5
5
  s.license = "LGPL-3.0"
6
6
  s.summary = "restful interface description and declaration language: tools and client/server libs"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: riddl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.100.5
4
+ version: 0.100.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juergen 'eTM' Mangler
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: tools
12
12
  cert_chain: []
13
- date: 2019-02-11 00:00:00.000000000 Z
13
+ date: 2019-03-05 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: daemonite
@@ -392,6 +392,13 @@ files:
392
392
  - examples/properties/properties.xml
393
393
  - examples/properties/server.properties.schema
394
394
  - examples/properties/server.properties.xml
395
+ - examples/propnew/description.conf
396
+ - examples/propnew/description.rb
397
+ - examples/propnew/properties.schema.xsl
398
+ - examples/propnew/properties.xml
399
+ - examples/propnew/server.properties.schema
400
+ - examples/propnew/server.properties.xml
401
+ - examples/propnew/test
395
402
  - examples/twitter/README
396
403
  - examples/twitter/client.rb
397
404
  - examples/twitter/declaration.xml