Changeset 3208
- Timestamp:
- 07/30/13 11:45:13 (11 years ago)
- Location:
- cats/SCHEMAcat/trunk/urn.org.isocat.schemacat.access.data
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
cats/SCHEMAcat/trunk/urn.org.isocat.schemacat.access.data/access/user.dpml
r3164 r3208 28 28 <identifier>active:sloot.generateUUID</identifier> 29 29 </request> 30 <!-- create the new user --> 30 <!-- compute the query string for creating a new user --> 31 <request assignment="new-user-query"> 32 <identifier>active:xslt2</identifier> 33 <argument name="operand"> 34 <literal type="xml"> 35 <dummy/> 36 </literal> 37 </argument> 38 <argument name="operator"> 39 <literal type="xml"> 40 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 41 version="2.0" xmlns:rest="http://basex.org/rest"> 42 <xsl:param name="vararg"/> 43 <xsl:template match="/"> 44 <query xmlns:sc="http://www.isocat.org/ns/schemacat"> 45 <xsl:text>let $new-user := element user { attribute xml:id {$new-user-id}, element principal {$principal}, element displayName {$display-name}</xsl:text> 46 <xsl:for-each 47 select="$vararg/arguments/*[name() eq 'email']"> 48 <xsl:text>, element email {'</xsl:text> 49 <xsl:value-of select="unparsed-text(string(.))"/> 50 <xsl:text>'}</xsl:text> 51 </xsl:for-each> 52 <!-- trying to use various roles. This reads the right number of roles passed but all their values resolve to 53 the first one passed!!! 54 If this work same can be used for emails --> 55 <xsl:for-each select="$vararg/arguments/*[name() eq 'role']"> 56 <xsl:text>, element role {'</xsl:text> 57 <xsl:value-of select="unparsed-text(string(.))"/> 58 <xsl:text>'}</xsl:text> 59 </xsl:for-each> 60 <xsl:text>} return insert node $new-user into /sc:users </xsl:text> 61 </query> 62 </xsl:template> 63 </xsl:stylesheet> 64 </literal> 65 </argument> 66 <argument name="vararg">arg:arguments</argument> 67 </request> 68 <sloot-debug> 69 <request> 70 <verb>SINK</verb> 71 <identifier>res:/debug/org.isocat.schemacat.access.data.user.new.query.xml</identifier> 72 <argument name="primary">arg:query</argument> 73 </request> 74 </sloot-debug> 75 <!-- create the new user by running the query--> 31 76 <request> 32 77 <identifier>active:org.basex.query</identifier> 33 <argument name="operator"> 34 <literal type="xml"> 35 <query xmlns:sc="http://www.isocat.org/ns/schemacat"> let $new-user := 36 element user { attribute xml:id {$new-user-id}, element principal 37 {$principal}, element displayName {$principal}, element role 38 {'user'} } return insert node $new-user into /sc:users </query> 39 </literal> 40 </argument> 78 <argument name="operator">this:new-user-query</argument> 41 79 <argument name="principal">arg:principal</argument> 80 <argument name="display-name">arg:display-name</argument> 42 81 <argument name="new-user-id">this:new-user-id</argument> 43 82 </request> … … 52 91 </sequence> 53 92 </then> 93 <!-- This is the future code for the SINK verb to update a user info --> 94 <!--<cond> 95 <request> 96 <identifier>active:sloot.xpath2</identifier> 97 <argument name="operand">arg:verb</argument> 98 <argument name="operator"> 99 <literal type="string">boolean(.='SINK')</literal> 100 </argument> 101 </request> 102 </cond> 103 <then> 104 <sequence> 105 <!-\- build the 'roles' element for the user -\-> 106 <request assignment="roles"> 107 <identifier>active:xslt2</identifier> 108 <argument name="operand"> 109 <literal type="xml"> 110 <dummy></dummy> 111 </literal> 112 </argument> 113 <argument name="operator"> 114 <literal type="xml"> 115 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0" 116 xmlns:rest="http://basex.org/rest"> 117 <xsl:template match='/'> 118 <xsl:for-each select="$vararg/arguments/*[name() eq 'role']"> 119 <xsl:text>element role {'</xsl:text> 120 <xsl:value-of select="{unparsed-text(string(.))}"/> 121 <xsl:text>'}</xsl:text> 122 <xsl:if test='not(last(.))'>,</xsl:if> 123 </xsl:for-each> 124 </xsl:template> 125 </xsl:stylesheet> 126 </literal> 127 </argument> 128 <argument name="vararg">arg:arguments</argument> 129 </request> 130 <!-\- update the user info -\-> 131 <request> 132 <identifier>active:org.basex.query</identifier> 133 <argument name="operator"> 134 <literal type="xml"> 135 <query xmlns:sc="http://www.isocat.org/ns/schemacat"> 136 let $user := 137 element user { attribute xml:id {$user-id}, element principal 138 {$principal}, element displayName {$display-name}, $roles } 139 return replace node /sc:users/sc:user[@xml:id eq '$user-id'] with $user 140 </query> 141 </literal> 142 <!-\- replace value of node /sc:users/sc:user[@xml:id eq '$user-id']/sc:$field with '$new-value' -\-> 143 </argument> 144 <argument name="user-id">arg:user-id</argument> 145 <argument name="principal">arg:principal</argument> 146 <argument name="display-name">arg:display-name</argument> 147 <argument name="roles">this:roles</argument> 148 </request> 149 <literal assignment="response" type="boolean">true</literal> 150 <log> 151 <level>INFO</level> 152 <message> 153 <literal type="string">Updated user for principal: [%1]</literal> 154 </message> 155 <param>arg:principal</param> 156 </log> 157 </sequence> 158 </then>--> 54 159 <cond> 55 160 <request> -
cats/SCHEMAcat/trunk/urn.org.isocat.schemacat.access.data/module.xml
r3118 r3208 28 28 <identifier>active:org.isocat.schemacat.access.data.user</identifier> 29 29 <argument name="principal"/> 30 <argument name="user-id" min="0" max="1" /> 31 <argument name="display-name" min="0" max="1" /> 32 <argument name="email" min="0" /> 33 <!-- AAM: trying to pass an arbritary number of roles (max 2 here). Not working1 -> cannot read the second role. 34 Ideally this would be used for 'roles' and 'emails'--> 35 <argument name="role" min="0" max="2"/> 30 36 </active> 31 37 </grammar> … … 34 40 <identifier>active:sloot.dpml</identifier> 35 41 <argument name="operator">res:/access/user.dpml</argument> 36 < argument name="principal">arg:principal</argument>42 <varargs/> 37 43 </request> 38 44 </endpoint>
Note: See TracChangeset
for help on using the changeset viewer.