glue-jaxws.xsl revision 8e2911e5309f5dff976cc7ac17d832d4ee2cdca3
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync XSLT stylesheet that generates virtualbox.java from
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync VirtualBox.xidl. This generated Java code contains
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync a Java wrapper that allows client code to use the
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync webservice in an object-oriented way.
010ad423d45c61ef874fa1602d46459a798b54d2vboxsync Copyright (C) 2008-2009 Sun Microsystems, Inc.
010ad423d45c61ef874fa1602d46459a798b54d2vboxsync This file is part of VirtualBox Open Source Edition (OSE), as
010ad423d45c61ef874fa1602d46459a798b54d2vboxsync available from http://www.virtualbox.org. This file is free software;
010ad423d45c61ef874fa1602d46459a798b54d2vboxsync you can redistribute it and/or modify it under the terms of the GNU
010ad423d45c61ef874fa1602d46459a798b54d2vboxsync General Public License (GPL) as published by the Free Software
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync Foundation, in version 2 as it comes in the "COPYING" file of the
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync VirtualBox OSE distribution. VirtualBox OSE is distributed in the
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync Clara, CA 95054 USA or visit http://www.sun.com if you need
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync additional information or have any questions.
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync version="1.0"
1acf60ed9c490056043f7bfa524f2de1a431ab10vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
3c8ad0020c82e3ff4f3daad0d8cf2ef39085cbcavboxsync global XSLT variables
3c8ad0020c82e3ff4f3daad0d8cf2ef39085cbcavboxsync - - - - - - - - - - - - - - - - - - - - - - -->
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync<xsl:variable name="G_xsltFilename" select="'glue-jaxws.xsl'" />
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync<!-- Keep in sync with VBOX_JAVA_PACKAGE in webservices/Makefile.kmk -->
1acf60ed9c490056043f7bfa524f2de1a431ab10vboxsync<xsl:variable name="G_virtualBoxPackage" select="concat('org.virtualbox',$G_vboxApiSuffix)" />
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync<xsl:variable name="G_virtualBoxPackage2" select="concat('com.sun.xml.ws.commons.virtualbox',$G_vboxApiSuffix)" />
3c8ad0020c82e3ff4f3daad0d8cf2ef39085cbcavboxsync<xsl:variable name="G_virtualBoxWsdl" select="concat(concat('"vboxwebService',$G_vboxApiSuffix), '.wsdl"')" />
3c8ad0020c82e3ff4f3daad0d8cf2ef39085cbcavboxsync<!-- collect all interfaces with "wsmap='suppress'" in a global variable for
3c8ad0020c82e3ff4f3daad0d8cf2ef39085cbcavboxsync quick lookup -->
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync select="//interface[@wsmap='suppress']" />
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync * Copyright (C) 2008-2009 Sun Microsystems, Inc.
a05a2534a4aeaed368d626a462d856c0d352c97dvboxsync * This file is part of a free software library; you can redistribute
a05a2534a4aeaed368d626a462d856c0d352c97dvboxsync * it and/or modify it under the terms of the GNU Lesser General
a05a2534a4aeaed368d626a462d856c0d352c97dvboxsync * Public License version 2.1 as published by the Free Software
3c8ad0020c82e3ff4f3daad0d8cf2ef39085cbcavboxsync * Foundation and shipped in the "COPYING.LIB" file with this library.
3c8ad0020c82e3ff4f3daad0d8cf2ef39085cbcavboxsync * The library is distributed in the hope that it will be useful,
3c8ad0020c82e3ff4f3daad0d8cf2ef39085cbcavboxsync * but WITHOUT ANY WARRANTY of any kind.
3c8ad0020c82e3ff4f3daad0d8cf2ef39085cbcavboxsync * Sun LGPL Disclaimer: For the avoidance of doubt, except that if
3c8ad0020c82e3ff4f3daad0d8cf2ef39085cbcavboxsync * any license choice other than GPL or LGPL is available it will
3c8ad0020c82e3ff4f3daad0d8cf2ef39085cbcavboxsync * apply instead, Sun elects to use only the Lesser General Public
3c8ad0020c82e3ff4f3daad0d8cf2ef39085cbcavboxsync * License version 2.1 (LGPLv2) at this time for any software where
3c8ad0020c82e3ff4f3daad0d8cf2ef39085cbcavboxsync * a choice of LGPL license versions is made available with the
3c8ad0020c82e3ff4f3daad0d8cf2ef39085cbcavboxsync * language indicating that LGPLv2 or any later version may be used,
3c8ad0020c82e3ff4f3daad0d8cf2ef39085cbcavboxsync * or where a choice of which version of the LGPL is applied is
3c8ad0020c82e3ff4f3daad0d8cf2ef39085cbcavboxsync * otherwise unspecified.
3c8ad0020c82e3ff4f3daad0d8cf2ef39085cbcavboxsync * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
3c8ad0020c82e3ff4f3daad0d8cf2ef39085cbcavboxsync * Clara, CA 95054 USA or visit http://www.sun.com if you need
a05a2534a4aeaed368d626a462d856c0d352c97dvboxsync * additional information or have any questions.
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync * DO NOT EDIT! This is a generated file.
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync * Generated from: src/VBox/Main/idl/VirtualBox.xidl (VirtualBox's interface definitions in XML)
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync * Generator: src/VBox/Main/webservice/glue-jaxws.xsl
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync<!-- Emits the fully prefixed class name, if necessary, of the given type. This dies
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync if $name is not defined in XIDL; in other words, do not call this for built-in types. -->
c83b72ede860a1be6bdd520f7d13619b0791c1advboxsync <xsl:variable name="coll" select="//collection[@name=$name]" />
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync <!-- for collections and safearrays we return element type -->
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync <xsl:with-param name="name" select="concat($collPrefix,//collection[@name=$name]/@type)" />
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync <xsl:with-param name="origname" select="//collection[@name=$name]/@type" />
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync <xsl:with-param name="collPrefix" select="$collPrefix" />
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync <!-- <xsl:value-of select="concat('org.virtualbox.', concat($collPrefix,//collection[@name=$name]/@type))" /> -->
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync <xsl:when test="//enum[@name=$name] or //enum[@name=$origname]">
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync <xsl:value-of select="concat($G_virtualBoxPackage, concat('.', $name))" />
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync <xsl:when test="$collPrefix and //interface[@name=$origname]/@wsmap='managed'">
1acf60ed9c490056043f7bfa524f2de1a431ab10vboxsync <xsl:value-of select="concat($G_virtualBoxPackage, concat('.', $name))" />
1acf60ed9c490056043f7bfa524f2de1a431ab10vboxsync <xsl:value-of select="concat($G_virtualBoxPackage2, concat('.', $name))" />
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync <xsl:with-param name="msg" select="concat('fullClassName: Type "', $name, '" is not supported.')" />
3c8ad0020c82e3ff4f3daad0d8cf2ef39085cbcavboxsync typeIdl2Glue: converts $type into a type as used by the java glue code.
3c8ad0020c82e3ff4f3daad0d8cf2ef39085cbcavboxsync For example, for an XIDL IMachineCollection, this will return
3c8ad0020c82e3ff4f3daad0d8cf2ef39085cbcavboxsync "List<com.sun.xml.ws.commons.virtualbox.IMachine>".
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync <xsl:variable name="needarray" select="($safearray='yes' or //collection[@name=$type]) and not($forceelem='yes')" />
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync <!-- look up Java type from IDL type from table array in websrv-shared.inc.xsl -->
1acf60ed9c490056043f7bfa524f2de1a431ab10vboxsync <xsl:variable name="javatypefield" select="exsl:node-set($G_aSharedTypes)/type[@idlname=$type]/@javaname" />
1acf60ed9c490056043f7bfa524f2de1a431ab10vboxsync <!-- not a standard type: then it better be one of the types defined in the XIDL -->
1acf60ed9c490056043f7bfa524f2de1a431ab10vboxsync <xsl:when test="$type='$unknown'">IUnknown</xsl:when>
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync typeIdl2Java: converts $type into a type as used by the JAX-WS backend.
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync For example, for an XIDL IMachineCollection, this will return
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync "ArrayOfIMachine".
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync <xsl:variable name="needarray" select="($safearray='yes') and not($forceelem='yes')" />
1acf60ed9c490056043f7bfa524f2de1a431ab10vboxsync <!-- look up Java type from IDL type from table array in websrv-shared.inc.xsl -->
3c8ad0020c82e3ff4f3daad0d8cf2ef39085cbcavboxsync <xsl:variable name="javatypefield" select="exsl:node-set($G_aSharedTypes)/type[@idlname=$type]/@javaname" />
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync <xsl:when test="$type='$unknown'">String</xsl:when>
3c8ad0020c82e3ff4f3daad0d8cf2ef39085cbcavboxsync <xsl:when test="//interface[@name=$type]/@wsmap='struct'">
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync <xsl:value-of select="concat($G_virtualBoxPackage, '.', $type)" />
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync <xsl:when test="//interface[@name=$type]/@wsmap='managed'">String</xsl:when>
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync <xsl:with-param name="collPrefix" select="'ArrayOf'"/>
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync select="//interface[@name=$idltype]/@wsmap='struct'" />
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync <xsl:with-param name="method" select="$methodname" />
a1e68eac9a1478fd1957826cb4bd631f808b7cc0vboxsync <xsl:when test="contains($elemtype, $G_virtualBoxPackage)">
3c8ad0020c82e3ff4f3daad0d8cf2ef39085cbcavboxsync <xsl:value-of select="concat($value,'.getArray()')" />
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync <xsl:value-of select="concat('Helper.wrap(', $elemtype, '.class, port, ((',
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync $value,' == null)? null : ',$value,'.getArray()))')" />
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync <xsl:when test="//interface[@name=$idltype] or $idltype='$unknown'">
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync <xsl:with-param name="method" select="$methodname" />
3c8ad0020c82e3ff4f3daad0d8cf2ef39085cbcavboxsync <xsl:with-param name="method" select="$methodname" />
3c8ad0020c82e3ff4f3daad0d8cf2ef39085cbcavboxsync <xsl:with-param name="safearray" select="$safearray" />
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync <xsl:value-of select="concat('Helper.wrap2(',$elemtype, '.class, ', $javagettertype, '.class, port, ', $value,')')"/>
3c8ad0020c82e3ff4f3daad0d8cf2ef39085cbcavboxsync <xsl:value-of select="concat('Helper.wrap(',$elemtype, '.class, port, ', $value,')')"/>
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync <xsl:with-param name="method" select="$methodname" />
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync <xsl:with-param name="safearray" select="$safearray" />
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync <xsl:value-of select="concat('(', $value, ' != null) ? new ', $gluetype, '(', $value,', port) : null')" />
a1e68eac9a1478fd1957826cb4bd631f808b7cc0vboxsync <!-- if the MOR string is empty, that means NULL, so return NULL instead of an object then -->
a1e68eac9a1478fd1957826cb4bd631f808b7cc0vboxsync <xsl:value-of select="concat('(', $value, '.length() > 0) ? new ', $gluetype, '(', $value,', port) : null')" />
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync <xsl:value-of select="concat(' private ', $G_virtualBoxPackage,'.',$ifname, ' real; ')"/>
1acf60ed9c490056043f7bfa524f2de1a431ab10vboxsync <xsl:value-of select="' private VboxPortType port; '"/>
a05a2534a4aeaed368d626a462d856c0d352c97dvboxsync <xsl:value-of select="concat(' public ', $ifname, '(', $G_virtualBoxPackage,'.',$ifname,' real, VboxPortType port) { this.real = real; this.port = port; } ')"/>
a05a2534a4aeaed368d626a462d856c0d352c97dvboxsync <xsl:variable name="attrname"><xsl:value-of select="@name" /></xsl:variable>
a05a2534a4aeaed368d626a462d856c0d352c97dvboxsync <xsl:variable name="attrtype"><xsl:value-of select="@type" /></xsl:variable>
a05a2534a4aeaed368d626a462d856c0d352c97dvboxsync <xsl:variable name="attrreadonly"><xsl:value-of select="@readonly" /></xsl:variable>
a05a2534a4aeaed368d626a462d856c0d352c97dvboxsync <xsl:variable name="attrsafearray"><xsl:value-of select="@safearray" /></xsl:variable>
a05a2534a4aeaed368d626a462d856c0d352c97dvboxsync <xsl:value-of select="concat(' // read-only attribute ', $ifname, '::', $attrname, ' of type ', $attrtype, ' ')" />
a05a2534a4aeaed368d626a462d856c0d352c97dvboxsync <xsl:value-of select="concat(' // read/write attribute ', $ifname, '::', $attrname, ' of type ', $attrtype, ' ')" />
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync <!-- emit getter method -->
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync <!-- Stupid, but boolean getters called isFoo(), not getFoo() -->
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync <xsl:with-param name="attrname" select="$attrname" />
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync <xsl:with-param name="method" select="$gettername" />
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync <xsl:with-param name="safearray" select="@safearray" />
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync <xsl:with-param name="method" select="$gettername" />
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync <xsl:with-param name="safearray" select="@safearray" />
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync <xsl:value-of select="concat(' public ', $gluegettertype, ' ', $gettername, '() { ')" />
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync <xsl:value-of select="concat(' ', $javagettertype, ' retVal = real.', $gettername, '(); ')" />
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync <xsl:with-param name="method" select="$gettername" />
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync <xsl:with-param name="idltype" select="$attrtype" />
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync <xsl:with-param name="safearray" select="@safearray" />
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync <xsl:value-of select="concat(' return ', $wrapped, '; ')" />
3c8ad0020c82e3ff4f3daad0d8cf2ef39085cbcavboxsync <!-- per-argument special type handling -->
eac18a2a75654a71176720265be9d2e77658481fvboxsync <xsl:when test="//interface[@name=$paramtype] or $paramtype='$unknown'">
3c8ad0020c82e3ff4f3daad0d8cf2ef39085cbcavboxsync <xsl:value-of select="concat('tmp', $paramname)" />
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync <xsl:value-of select="concat('Helper.unwrap(',$paramname,')')"/>
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync <xsl:value-of select="concat('((', $paramname, ' == null)?null:', $paramname, '.getRef())')" />
1acf60ed9c490056043f7bfa524f2de1a431ab10vboxsync <xsl:value-of select="concat(' // ##### BEGINFILE "', $file, '" ')" />
1acf60ed9c490056043f7bfa524f2de1a431ab10vboxsyncpackage <xsl:value-of select="$G_virtualBoxPackage2" />;
3c8ad0020c82e3ff4f3daad0d8cf2ef39085cbcavboxsyncimport <xsl:value-of select="$G_virtualBoxPackage" />.VboxPortType;
d0eec04539061d14a7e51f492aea90fa5394615fvboxsyncimport <xsl:value-of select="$G_virtualBoxPackage" />.VboxService;
d0eec04539061d14a7e51f492aea90fa5394615fvboxsyncimport <xsl:value-of select="$G_virtualBoxPackage" />.InvalidObjectFaultMsg;
d0eec04539061d14a7e51f492aea90fa5394615fvboxsyncimport <xsl:value-of select="$G_virtualBoxPackage" />.RuntimeFaultMsg;
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync <xsl:value-of select="concat(' // ##### ENDFILE "', $file, '" ')" />
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync - - - - - - - - - - - - - - - - - - - - - - -->
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync <xsl:with-param name="msg" select="'G_vboxApiSuffix must be given'" />
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync <xsl:with-param name="file" select="'IUnknown.java'" />
d0eec04539061d14a7e51f492aea90fa5394615fvboxsyncpublic class IUnknown
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync protected String _this; /* almost final, could only be set in finalizer */
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync protected final VboxPortType port;
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync public IUnknown(String _this, VboxPortType port)
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync this._this = _this;
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync public final String getRef()
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync return _this;
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync public final VboxPortType getRemoteWSPort()
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync return port;
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync public synchronized void releaseRemote() throws WebServiceException
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync if (_this == null) {
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync _this = null;
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync } catch (InvalidObjectFaultMsg e) {
d0eec04539061d14a7e51f492aea90fa5394615fvboxsync throw new WebServiceException(e);
import java.util.Collections;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
if(thisPtrs==null) return Collections.emptyList();
Constructor<T> c = wrapperClass.getConstructor(String.class, VboxPortType.class);
List<T> ret = new ArrayList<T>(thisPtrs.size());
ret.add(c.newInstance(thisPtr,pt));
public static <T1, T2> List<T1> wrap2(Class<T1> wrapperClass1, Class<T2> wrapperClass2, VboxPortType pt, List<T2> thisPtrs) {
if(thisPtrs==null) return Collections.emptyList();
Constructor<T1> c = wrapperClass1.getConstructor(wrapperClass2, VboxPortType.class);
List<T1> ret = new ArrayList<T1>(thisPtrs.size());
ret.add(c.newInstance(thisPtr,pt));
if (thisPtrs==null) return Collections.emptyList();
ret.add(obj.getRef());
known.notify();
known.wait();
for (VboxPortType cur: known.keySet())
int value = known.get(cur);
URL wsdl = PortPool.class.getClassLoader().getResource(wsdlFile);
new QName("http://www.virtualbox.org/Service",
port = svc.getVboxServicePort();
known.put(port, new Integer(0x10000 | ttl));
Integer val = known.get(port);
known.remove(port);
known.put(port, v);
public IWebsessionManager(URL url, Map<String, Object> requestContext, Map<String, Object> responseContext)
connect(url.toExternalForm(), requestContext, responseContext);
public IWebsessionManager(String url, Map<String, Object> requestContext, Map<String, Object> responseContext)
connect(url.toExternalForm());
this.port = pool.getPort();
put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, url);
if (this.port != null)
public void connect(String url, Map<String, Object> requestContext, Map<String, Object> responseContext)
this.port = pool.getPort();
put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, url);
if (this.port != null)
pool.releasePort(port);
if (this.port != null) {
this.port = null;
System.gc();
Runtime.getRuntime().runFinalization();
String retVal = port.iWebsessionManagerLogon(username, password);
String retVal = port.iWebsessionManagerGetSessionObject(((refIVirtualBox == null)?null:refIVirtualBox.getRef()));
port.iWebsessionManagerLogoff(((refIVirtualBox == null)?null:refIVirtualBox.getRef()));
<xsl:value-of select="concat(' // ##### BEGINFILE "', $filename, '.java" ')" />
<xsl:value-of select="concat('@XmlType(name = "', $arrayoftype, '", propOrder = { ')" />
<xsl:when test="($extends = '$unknown') or ($extends = '$dispatched') or ($extends = '$errorinfo')">
<xsl:with-param name="msg" select="concat('Interface generation: interface "', $ifname, '" has invalid "extends" value ', $extends, '.')" />
'(other.getRef(), other.getRemoteWSPort()); } ')"/>
<xsl:value-of select="concat(' // Skipping attribute ', $attrtype, ' for it is of suppressed type ', $attrtype, ' ')" />
<xsl:value-of select="concat(' // read-only attribute ', $ifname, '::', $attrname, ' of type ', $attrtype, ' ')" />
<xsl:value-of select="concat(' // read/write attribute ', $ifname, '::', $attrname, ' of type ', $attrtype, ' ')" />
<xsl:variable name="gettername"><xsl:call-template name="makeGetterName"><xsl:with-param name="attrname" select="$attrname" /></xsl:call-template></xsl:variable>
<xsl:variable name="jaxwsGetter"><xsl:call-template name="makeJaxwsMethod"><xsl:with-param name="ifname" select="$ifname" /><xsl:with-param name="methodname" select="$gettername" /></xsl:call-template></xsl:variable>
<xsl:value-of select="concat(' ', $javagettertype, ' retVal = port.', $jaxwsGetter, '(_this); ')" />
<xsl:variable name="settername"><xsl:call-template name="makeSetterName"><xsl:with-param name="attrname" select="$attrname" /></xsl:call-template></xsl:variable>
<xsl:variable name="jaxwsSetter"><xsl:call-template name="makeJaxwsMethod"><xsl:with-param name="ifname" select="$ifname" /><xsl:with-param name="methodname" select="$settername" /></xsl:call-template></xsl:variable>
<xsl:value-of select="concat(' public void ', $settername, '(', $javasettertype, ' value) { ')" />
<xsl:comment><xsl:value-of select="concat('Skipping method ', $methodname, ' for it has parameters with suppressed types')" /></xsl:comment>
<xsl:value-of select="concat(' Holder<List<String>> tmp', @name, ' = new Holder<List<String>>(); ')" />
<xsl:value-of select="concat(' Holder<String> tmp', @name, ' = new Holder<String>(); ')" />
<xsl:variable name="jaxwsmethod"><xsl:call-template name="makeJaxwsMethod"><xsl:with-param name="ifname" select="$ifname" /><xsl:with-param name="methodname" select="$methodname" /></xsl:call-template></xsl:variable>
<!-- jax-ws has an oddity: if both out params and a return value exist, then the return value is moved to the function's argument list... -->