Changeset 3392
- Timestamp:
- 08/15/13 15:37:26 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
cats/SCHEMAcat/trunk/urn.org.isocat.schemacat.access.data/access/user.dpml
r3379 r3392 1 1 <?xml version="1.0" encoding="UTF-8"?> 2 2 <sequence debug="false"> 3 <sloot-debug> 4 <request> 5 <verb>SINK</verb> 6 <identifier>res:/debug/org.isocat.schemacat.access.data.user.unresolved-arguments.xml</identifier> 7 <argument name="primary">arg:arguments</argument> 8 </request> 9 </sloot-debug> 3 10 <!-- resolve the references in arg:arguments --> 4 11 <request assignment="arguments"> … … 9 16 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 10 17 version="2.0"> 18 <xsl:param name="debug"/> 11 19 <xsl:template match="@*|node()"> 12 20 <xsl:copy> … … 20 28 <xsl:apply-templates select="@*"/> 21 29 <xsl:variable name="val" select="unparsed-text(.)"/> 22 <xsl:message>DBG: <xsl:value-of select="name()"/>[<xsl:value-of select="."/>][<xsl:value-of select="$val"/>]</xsl:message> 30 <xsl:if test="$debug"> 31 <xsl:message>DBG: <xsl:value-of select="name()"/>[<xsl:value-of select="."/>][<xsl:value-of select="$val"/>]</xsl:message> 32 </xsl:if> 23 33 <xsl:choose> 24 34 <!-- snif if the value is XML --> … … 35 45 </literal> 36 46 </argument> 37 </request> 38 <request> 39 <verb>SINK</verb> 40 <identifier>res:/debug/org.isocat.schemacat.access.data.user.arguments.xml</identifier> 41 <argument name="primary">arg:arguments</argument> 42 </request> 43 <request> 44 <verb>SINK</verb> 45 <identifier>res:/debug/org.isocat.schemacat.access.data.user.args.xml</identifier> 46 <argument name="primary">this:arguments</argument> 47 <argument name="debug">this:sloot-debug</argument> 47 48 </request> 48 49 <sloot-debug> 50 <request> 51 <verb>SINK</verb> 52 <identifier>res:/debug/org.isocat.schemacat.access.data.user.resolved-arguments.xml</identifier> 53 <argument name="primary">this:arguments</argument> 54 </request> 49 55 <log> 50 56 <level>INFO</level> 51 57 <message> 52 <literal type="string">user accessor verb: %1 with arguments: 58 <literal type="string">user accessor verb: %1 with arguments: %2</literal> 53 59 </message> 54 60 <param>arg:verb</param> … … 73 79 <identifier>active:sloot.generateUUID</identifier> 74 80 </request> 81 <!-- compute the query string for creating a new user --> 82 <request assignment="new-user-query"> 83 <identifier>active:xslt2</identifier> 84 <argument name="operand"> 85 <literal type="xml"> 86 <dummy/> 87 </literal> 88 </argument> 89 <argument name="operator"> 90 <literal type="xml"> 91 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 92 version="2.0" xmlns:rest="http://basex.org/rest"> 93 <xsl:param name="vararg"/> 94 <xsl:template match="/"> 95 <query xmlns:sc="http://www.isocat.org/ns/schemacat"> 96 <xsl:text>let $old-user := /sc:users/*:user[@xml:id = $new-user-id or *:principal = '</xsl:text> 97 <xsl:value-of select="$vararg/arguments/principal"/> 98 <xsl:text>'], $new-user := element sc:user { attribute xml:id {$new-user-id}, element sc:principal {'</xsl:text> 99 <xsl:value-of select="$vararg/arguments/principal"/> 100 <xsl:text>'}, element sc:displayName {'</xsl:text> 101 <xsl:value-of select="$vararg/arguments/display-name"/> 102 <xsl:text>'}</xsl:text> 103 <xsl:for-each 104 select="$vararg/arguments/*[name() eq 'email']"> 105 <xsl:text>, element sc:email {'</xsl:text> 106 <xsl:value-of select="."/> 107 <xsl:text>'}</xsl:text> 108 </xsl:for-each> 109 <!-- trying to use various roles. This reads the right number of roles passed but all their values resolve to 110 the first one passed!!! 111 If this work same can be used for emails --> 112 <xsl:for-each select="$vararg/arguments/*[name() eq 'role']"> 113 <xsl:text>, element sc:role {'</xsl:text> 114 <xsl:value-of select="."/> 115 <xsl:text>'}</xsl:text> 116 </xsl:for-each> 117 <xsl:text>} return 118 if (empty($old-user)) 119 then (insert node $new-user into /sc:users) 120 else (error(xs:QName('sc:uniqueUser'),'There exists already an user with this id or principal!'))</xsl:text> 121 </query> 122 </xsl:template> 123 </xsl:stylesheet> 124 </literal> 125 </argument> 126 <argument name="vararg">this:arguments</argument> 127 </request> 128 <sloot-debug> 129 <request> 130 <verb>SINK</verb> 131 <identifier>res:/debug/org.isocat.schemacat.access.data.user.new.query.xml</identifier> 132 <argument name="primary">this:new-user-query</argument> 133 </request> 134 </sloot-debug> 75 135 <!-- create the new user by running the query--> 76 <!-- we will only know the principal -->77 136 <request> 78 137 <identifier>active:org.basex.query</identifier> 79 <argument name="operator"> 80 <literal type="xml"> 81 <query xmlns:sc="http://www.isocat.org/ns/schemacat"> 82 let $old-user := /sc:users/*:user[@xml:id = $new-user-id or *:principal = $principal], 83 $new-user := element sc:user { 84 attribute xml:id {$new-user-id}, 85 element sc:principal {$principal}, 86 element sc:role{'user'} 87 } 88 return 89 if (empty($old-user)) 90 then (insert node $new-user into /sc:users) 91 else (error(xs:QName('sc:uniqueUser'),'There exists already an user with this id or principal!')) 92 </query> 93 </literal> 94 </argument> 138 <argument name="operator">this:new-user-query</argument> 95 139 <argument name="new-user-id">this:new-user-id</argument> 96 <argument name="principal">arg:principal</argument>97 140 </request> 98 141 <log> … … 262 305 </id> 263 306 <message> 264 <literal type="string">org.isocat.schemacat.data.user: unsupported 265 verb!</literal> 307 <literal type="string">org.isocat.schemacat.data.user: unsupported verb!</literal> 266 308 </message> 267 309 </throw>
Note: See TracChangeset
for help on using the changeset viewer.