VirtualBox

source: vbox/trunk/src/VBox/Main/webservice/websrv-shared.inc.xsl@ 25275

Last change on this file since 25275 was 23223, checked in by vboxsync, 15 years ago

API: big medium handling change and lots of assorted other cleanups and fixes

  • Property svn:eol-style set to native
File size: 13.7 KB
Line 
1<!--
2 websrv-shared.inc.xsl:
3 this gets included from the other websrv-*.xsl XSLT stylesheets
4 so we can share some definitions that must be the same for
5 all of them (like method prefixes/suffices).
6
7 Copyright (C) 2006-2007 Sun Microsystems, Inc.
8
9 This file is part of VirtualBox Open Source Edition (OSE), as
10 available from http://www.virtualbox.org. This file is free software;
11 you can redistribute it and/or modify it under the terms of the GNU
12 General Public License (GPL) as published by the Free Software
13 Foundation, in version 2 as it comes in the "COPYING" file of the
14 VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15 hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16
17 Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
18 Clara, CA 95054 USA or visit http://www.sun.com if you need
19 additional information or have any questions.
20-->
21
22
23<xsl:stylesheet
24 version="1.0"
25 targetNamespace="http://schemas.xmlsoap.org/wsdl/"
26 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
27 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
28 xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
29 xmlns:vbox="http://www.virtualbox.org/">
30
31<xsl:variable name="G_xsltIncludeFilename" select="'websrv-shared.inc.xsl'" />
32
33<!-- target namespace; this must match the xmlns:vbox in stylesheet opening tags! -->
34<xsl:variable name="G_targetNamespace"
35 select='"http://www.virtualbox.org/"' />
36<xsl:variable name="G_targetNamespaceSeparator"
37 select='""' />
38
39<!-- ENCODING SCHEME
40
41 See: http://www-128.ibm.com/developerworks/webservices/library/ws-whichwsdl/
42
43 Essentially "document" style means that each SOAP message is a complete and
44 self-explanatory document that does not rely on outside information for
45 validation.
46
47 By contrast, the (older) "RPC" style allows for much shorter SOAP messages
48 that do not contain validation info like all types that are used, but then
49 again, caller and receiver must have agreed on a valid format in some other way.
50 With RPC, WSDL typically looks like this:
51
52 <message name="myMethodRequest">
53 <part name="x" type="xsd:int"/>
54 <part name="y" type="xsd:float"/>
55 </message>
56
57 This is why today "document" style is preferred. However, with document style,
58 one _cannot_ use "type" in <part> elements. Instead, one must use "element"
59 attributes that refer to <element> items in the type section. Like this:
60
61 <types>
62 <schema>
63 <element name="xElement" type="xsd:int"/>
64 <element name="yElement" type="xsd:float"/>
65 </schema>
66 </types>
67
68 <message name="myMethodRequest">
69 <part name="x" element="xElement"/>
70 <part name="y" element="yElement"/>
71 </message>
72
73 The "encoded" and "literal" sub-styles then only determine whether the
74 individual types in the soap messages carry additional information in
75 attributes. "Encoded" was only used with RPC styles, really, and even that
76 is not widely supported any more.
77
78-->
79<!-- These are the settings: all the other XSLTs react on this and are supposed
80 to be able to generate both valid RPC and document-style code. The only
81 allowed values are 'rpc' or 'document'. -->
82<xsl:variable name="G_basefmt"
83 select='"document"' />
84<xsl:variable name="G_parmfmt"
85 select='"literal"' />
86<!-- <xsl:variable name="G_basefmt"
87 select='"rpc"' />
88<xsl:variable name="G_parmfmt"
89 select='"encoded"' /> -->
90
91<!-- with document style, this is how we name the request and return element structures -->
92<xsl:variable name="G_requestElementVarName"
93 select='"req"' />
94<xsl:variable name="G_responseElementVarName"
95 select='"resp"' />
96<!-- this is how we name the result parameter in messages -->
97<xsl:variable name="G_result"
98 select='"returnval"' />
99
100<!-- we represent interface attributes by creating "get" and "set" methods; these
101 are the prefixes we use for that -->
102<xsl:variable name="G_attributeGetPrefix"
103 select='"get"' />
104<xsl:variable name="G_attributeSetPrefix"
105 select='"set"' />
106<!-- separator between class name and method/attribute name; would be "::" in C++
107 but i'm unsure whether WSDL appreciates that (WSDL only) -->
108<xsl:variable name="G_classSeparator"
109 select='"_"' />
110<!-- for each interface method, we need to create both a "request" and a "response"
111 message; these are the suffixes we append to the method names for that -->
112<xsl:variable name="G_methodRequest"
113 select='"RequestMsg"' />
114<xsl:variable name="G_methodResponse"
115 select='"ResultMsg"' />
116<!-- suffix for element declarations that describe request message parameters (WSDL only) -->
117<xsl:variable name="G_requestMessageElementSuffix"
118 select='""' />
119<!-- suffix for element declarations that describe request message parameters (WSDL only) -->
120<xsl:variable name="G_responseMessageElementSuffix"
121 select='"Response"' />
122<!-- suffix for portType names (WSDL only) -->
123<xsl:variable name="G_portTypeSuffix"
124 select='"PortType"' />
125<!-- suffix for binding names (WSDL only) -->
126<xsl:variable name="G_bindingSuffix"
127 select='"Binding"' />
128<!-- schema type to use for object references; while it is theoretically
129 possible to use a self-defined type (e.g. some vboxObjRef type that's
130 really an int), gSOAP gets a bit nasty and creates complicated structs
131 for function parameters when these types are used as output parameters.
132 So we just use "int" even though it's not as lucid.
133 One setting is for the WSDL emitter, one for the C++ emitter -->
134<!--
135<xsl:variable name="G_typeObjectRef"
136 select='"xsd:unsignedLong"' />
137<xsl:variable name="G_typeObjectRef_gsoapH"
138 select='"ULONG64"' />
139<xsl:variable name="G_typeObjectRef_CPP"
140 select='"WSDLT_ID"' />
141-->
142<xsl:variable name="G_typeObjectRef"
143 select='"xsd:string"' />
144<xsl:variable name="G_typeObjectRef_gsoapH"
145 select='"std::string"' />
146<xsl:variable name="G_typeObjectRef_CPP"
147 select='"std::string"' />
148<!-- and what to call first the object parameter -->
149<xsl:variable name="G_nameObjectRef"
150 select='"_this"' />
151<!-- gSOAP encodes underscores with USCORE so this is used in our C++ code -->
152<xsl:variable name="G_nameObjectRefEncoded"
153 select='"_USCOREthis"' />
154
155<!-- type to represent enums with in C++ COM callers -->
156<xsl:variable name="G_funcPrefixInputEnumConverter"
157 select='"EnumSoap2Com_"' />
158<xsl:variable name="G_funcPrefixOutputEnumConverter"
159 select='"EnumCom2Soap_"' />
160
161<xsl:variable name="G_aSharedTypes">
162 <type idlname="octet" xmlname="unsignedByte" cname="unsigned char" gluename="BYTE" javaname="Short" />
163 <type idlname="boolean" xmlname="boolean" cname="bool" gluename="BOOL" javaname="Boolean" />
164 <type idlname="short" xmlname="short" cname="short" gluename="SHORT" javaname="Short" />
165 <type idlname="unsigned short" xmlname="unsignedShort" cname="unsigned short" gluename="USHORT" javaname="Integer" />
166 <type idlname="long" xmlname="int" cname="int" gluename="LONG" javaname="Integer" />
167 <type idlname="unsigned long" xmlname="unsignedInt" cname="unsigned int" gluename="ULONG" javaname="Long" />
168 <type idlname="long long" xmlname="long" cname="LONG64" gluename="LONG64" javaname="Long" />
169 <type idlname="unsigned long long" xmlname="unsignedLong" cname="ULONG64" gluename="ULONG64" javaname="BigInteger" />
170 <type idlname="double" xmlname="double" cname="double" gluename="" javaname="Double" />
171 <type idlname="float" xmlname="float" cname="float" gluename="" javaname="Float" />
172 <type idlname="wstring" xmlname="string" cname="std::string" gluename="" javaname="String" />
173 <type idlname="uuid" xmlname="string" cname="std::string" gluename="" javaname="String" />
174 <type idlname="result" xmlname="unsignedInt" cname="unsigned int" gluename="HRESULT" javaname="Long" />
175</xsl:variable>
176
177<!--
178 warning:
179 -->
180
181<xsl:template name="warning">
182 <xsl:param name="msg" />
183
184 <xsl:message terminate="no">
185 <xsl:value-of select="concat('[', $G_xsltFilename, '] Warning in ', $msg)" />
186 </xsl:message>
187</xsl:template>
188
189<!--
190 fatalError:
191 -->
192
193<xsl:template name="fatalError">
194 <xsl:param name="msg" />
195
196 <xsl:message terminate="yes">
197 <xsl:value-of select="concat('[', $G_xsltFilename, '] Error in ', $msg)" />
198 </xsl:message>
199</xsl:template>
200
201<!--
202 debugMsg
203 -->
204
205<xsl:template name="debugMsg">
206 <xsl:param name="msg" />
207
208 <xsl:if test="$G_argDebug">
209 <xsl:message terminate="no">
210 <xsl:value-of select="concat('[', $G_xsltFilename, '] ', $msg)" />
211 </xsl:message>
212 </xsl:if>
213</xsl:template>
214
215<!--
216 uncapitalize
217 -->
218
219<xsl:template name="uncapitalize">
220 <xsl:param name="str" select="."/>
221 <xsl:value-of select="
222 concat(
223 translate(substring($str,1,1),'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz'),
224 substring($str,2)
225 )
226 "/>
227</xsl:template>
228<!--
229 uncapitalize in the way JAX-WS understands, see #2910
230 -->
231
232<xsl:template name="uncapitalize2">
233 <xsl:param name="str" select="."/>
234 <xsl:variable name="strlen">
235 <xsl:value-of select="string-length($str)"/>
236 </xsl:variable>
237 <xsl:choose>
238 <xsl:when test="$strlen>1">
239 <xsl:choose>
240 <xsl:when test="contains('ABCDEFGHIJKLMNOPQRSTUVWXYZ',substring($str,1,1))
241 and
242 contains('ABCDEFGHIJKLMNOPQRSTUVWXYZ',substring($str,2,1))">
243 <xsl:variable name="cdr">
244 <xsl:call-template name="uncapitalize2">
245 <xsl:with-param name="str" select="substring($str,2)"/>
246 </xsl:call-template>
247 </xsl:variable>
248 <xsl:value-of select="
249 concat(
250 translate(substring($str,1,1),
251 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
252 'abcdefghijklmnopqrstuvwxyz'),
253 $cdr
254 )
255 "/>
256 </xsl:when>
257 <xsl:otherwise>
258 <!--<xsl:value-of select="concat(substring($str,1,1),$cdr)"/>-->
259 <xsl:value-of select="$str"/>
260 </xsl:otherwise>
261 </xsl:choose>
262 </xsl:when>
263 <xsl:when test="$strlen=1">
264 <xsl:value-of select="
265 translate($str,
266 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
267 'abcdefghijklmnopqrstuvwxyz')
268 "/>
269 </xsl:when>
270 <xsl:otherwise>
271 </xsl:otherwise>
272 </xsl:choose>
273</xsl:template>
274<!--
275 capitalize
276 -->
277
278<xsl:template name="capitalize">
279 <xsl:param name="str" select="."/>
280 <xsl:value-of select="
281 concat(
282 translate(substring($str,1,1),'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ'),
283 substring($str,2)
284 )
285 "/>
286</xsl:template>
287
288<!--
289 makeGetterName:
290 -->
291<xsl:template name="makeGetterName">
292 <xsl:param name="attrname" />
293 <xsl:variable name="capsname"><xsl:call-template name="capitalize"><xsl:with-param name="str" select="$attrname" /></xsl:call-template></xsl:variable>
294 <xsl:value-of select="concat($G_attributeGetPrefix, $capsname)" />
295</xsl:template>
296
297<!--
298 makeSetterName:
299 -->
300<xsl:template name="makeSetterName">
301 <xsl:param name="attrname" />
302 <xsl:variable name="capsname"><xsl:call-template name="capitalize"><xsl:with-param name="str" select="$attrname" /></xsl:call-template></xsl:variable>
303 <xsl:value-of select="concat($G_attributeSetPrefix, $capsname)" />
304</xsl:template>
305
306<!--
307 makeJaxwsMethod: compose idevInterfaceMethod out of IDEVInterface::method
308 -->
309<xsl:template name="makeJaxwsMethod">
310 <xsl:param name="ifname" />
311 <xsl:param name="methodname" />
312 <xsl:variable name="uncapsif"><xsl:call-template name="uncapitalize2"><xsl:with-param name="str" select="$ifname" /></xsl:call-template></xsl:variable>
313 <xsl:variable name="capsmethod"><xsl:call-template name="capitalize"><xsl:with-param name="str" select="$methodname" /></xsl:call-template></xsl:variable>
314 <xsl:value-of select="concat($uncapsif, $capsmethod)" />
315</xsl:template>
316
317
318<!--
319 makeJaxwsMethod2: compose iInterfaceMethod out of IInterface::method
320 -->
321<xsl:template name="makeJaxwsMethod2">
322 <xsl:param name="ifname" />
323 <xsl:param name="methodname" />
324 <xsl:variable name="uncapsif"><xsl:call-template name="uncapitalize"><xsl:with-param name="str" select="$ifname" /></xsl:call-template></xsl:variable>
325 <xsl:variable name="capsmethod"><xsl:call-template name="capitalize"><xsl:with-param name="str" select="$methodname" /></xsl:call-template></xsl:variable>
326 <xsl:value-of select="concat($uncapsif, $capsmethod)" />
327</xsl:template>
328
329<!--
330 emitNewline:
331 -->
332<xsl:template name="emitNewline">
333 <xsl:text>
334</xsl:text>
335</xsl:template>
336
337<!--
338 emitNewlineIndent8:
339 -->
340<xsl:template name="emitNewlineIndent8">
341 <xsl:text>
342 </xsl:text>
343</xsl:template>
344
345<!--
346 escapeUnderscores
347 -->
348<xsl:template name="escapeUnderscores">
349 <xsl:param name="string" />
350 <xsl:if test="contains($string, '_')">
351 <xsl:value-of select="substring-before($string, '_')" />_USCORE<xsl:call-template name="escapeUnderscores"><xsl:with-param name="string"><xsl:value-of select="substring-after($string, '_')" /></xsl:with-param></xsl:call-template>
352 </xsl:if>
353 <xsl:if test="not(contains($string, '_'))"><xsl:value-of select="$string" />
354 </xsl:if>
355</xsl:template>
356
357</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.

© 2023 Oracle
ContactPrivacy policyTerms of Use