riddl 0.100.5 → 0.100.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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