123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!--
- Licensed Materials - Property of IBM
- IBM Cognos Products: cpscrn
- (C) Copyright IBM Corp. 2005, 2011
- US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
- -->
- <!--
- Copyright (C) 2008 Cognos ULC, an IBM Company. All rights reserved.
- Cognos (R) is a trademark of Cognos ULC, (formerly Cognos Incorporated).
- -->
- <!-- $Header: //cpscrn/main/templates/cps4/producer/wsrp-impl/cps-urlhandler.xts#1 $ -->
- <!-- $DateTime: 2008/10/22 11:12:04 $ -->
- <!-- $Change: 25109 $ -->
- <xts:morphlet version="1.0" xmlns:xts="http://developer.cognos.com/schemas/xts/">
- <xts:block id="response" dependency="request" type="exec" mode="interpret" processor="XSLT">
- <xts:logicsheet path="/cps4/producer/logicsheets/cps-portlet.xslt"/>
-
- <xsl:stylesheet version="1.0"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:wsrp="urn:oasis:names:tc:wsrp:v1:types"
- xmlns:portlet="http://developer.cognos.com/schemas/cps/logic/portlet/1/"
- xmlns:xtsext="xalan://com.cognos.xts.ext.XTSExt"
- xmlns:xos="http://developer.cognos.com/schemas/xts/output/">
- <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
-
- <xsl:template match="/">
- <xts:sequence>
- <portlet:soap-response>
-
- <xsl:variable name="originalPassportID">
- <xsl:choose>
- <xsl:when test="/root/credential/param[@name='CAM']/*[local-name() ='CAM']/*[local-name() = 'CAMPassport']/*[local-name() = 'id']">
- <xsl:value-of select="/root/credential/param[@name='CAM']/*[local-name() ='CAM']/*[local-name() = 'CAMPassport']/*[local-name() = 'id']"/>
- </xsl:when>
- <xsl:when test="/root/header/*[local-name() = 'biBusHeader']/*[local-name()= 'CAM']/CAMPassport/id">
- <xsl:value-of select="/root/header/*[local-name() = 'biBusHeader']/*[local-name()= 'CAM']/CAMPassport/id"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="xtsext:camcookie_action('getPassportID', string(/root/cookies/cookie[@name='cam_passport']))"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:variable name="newPassportID">
- <xsl:call-template name="getCamPassportCookie"/>
- </xsl:variable>
-
- <xsl:choose>
- <xsl:when test="$newPassportID != '' and $newPassportID != $originalPassportID">
- <SOAP-ENV:Fault xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
- <faultcode wsrp:patch="" xmlns:wsrp="urn:oasis:names:tc:wsrp:v1:types">wsrp:InvalidCookie</faultcode>
- <faultstring>The producer environment has timed out. The consumer needs to initialize the cookies again.</faultstring>
- <detail>
- <wsrp:InvalidCookie xmlns:wsrp="urn:oasis:names:tc:wsrp:v1:types"/>
- </detail>
- </SOAP-ENV:Fault>
- </xsl:when>
- <xsl:otherwise>
- <portlet:response>
- <portlet:markup-context>
- <xts:queryNode select="/root/temp-response/*[local-name()='markupString']"/>
- <wsrp:locale>
- <xsl:choose>
- <xsl:when test="/root/temp-response/xos:protocolHeader/xos:param[@name = 'Content-Language']">
- <xsl:value-of select="/root/temp-response/xos:protocolHeader/xos:param[@name = 'Content-Language']"/>
- </xsl:when>
- <xsl:otherwise>en</xsl:otherwise>
- </xsl:choose>
- </wsrp:locale>
- <wsrp:requiresUrlRewriting>true</wsrp:requiresUrlRewriting>
- <xsl:if test="/root/temp-response/xos:protocolHeader/xos:param[@name = 'cps-preferredTitle']">
- <wsrp:preferredTitle>
- <xsl:value-of select="xtsext:xmlencode(xtsext:base64decode(string(/root/temp-response/xos:protocolHeader/xos:param[@name = 'cps-preferredTitle']), false()))" disable-output-escaping="yes"/>
- </wsrp:preferredTitle>
- </xsl:if>
- </portlet:markup-context>
- </portlet:response>
- </xsl:otherwise>
- </xsl:choose>
- </portlet:soap-response>
- </xts:sequence>
- </xsl:template>
- <xsl:template name="getCamPassportCookie">
- <xsl:for-each select="/root/temp-response/xos:protocolHeader/xos:param[@name = 'Set-Cookie']">
- <xsl:variable name="cookieName" select="substring-before(., '=')"/>
- <xsl:if test="$cookieName = 'cam_passport'">
- <xsl:variable name="value" select="substring-after(., '=')"/>
- <xsl:choose>
- <xsl:when test="contains($value, ';')">
- <xsl:value-of select="substring-before($value, ';')"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$value"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- </xsl:for-each>
- </xsl:template>
- </xsl:stylesheet>
- </xts:block>
-
- <xts:block id="request" type="exec" mode="interpret" processor="XSLT">
- <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:wsrp="urn:oasis:names:tc:wsrp:v1:types"
- xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
- xmlns:xos="http://developer.cognos.com/schemas/xts/output/"
- xmlns:xtsext="xalan://com.cognos.xts.ext.XTSExt"
- xmlns:bus="http://developer.cognos.com/schemas/bibus/3/"
- xmlns:cps="http://developer.cognos.com/schemas/cps/asm/objects/1/">
- <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
-
- <xsl:variable name="getMarkup" select="/root/envelope/SOAP-ENV:Envelope/SOAP-ENV:Body/wsrp:getMarkup"/>
- <xsl:variable name="cps-registrationHandle" select="xtsext:urlencode($getMarkup/wsrp:registrationContext/wsrp:registrationHandle)"/>
- <xsl:variable name="cps-registrationState" select="xtsext:urlencode($getMarkup/wsrp:registrationContext/wsrp:registrationState)"/>
- <xsl:variable name="cps-portletHandle" select="xtsext:urlencode($getMarkup/wsrp:portletContext/wsrp:portletHandle)"/>
- <xsl:variable name="cps-portletState" select="xtsext:urlencode($getMarkup/wsrp:portletContext/wsrp:portletState)"/>
- <xsl:variable name="cps-navigationalState" select="xtsext:urlencode($getMarkup/wsrp:markupParams/wsrp:navigationalState)"/>
- <xsl:variable name="cps-mode" select="xtsext:urlencode($getMarkup/wsrp:markupParams/wsrp:mode)"/>
- <xsl:variable name="cps-windowState" select="xtsext:urlencode($getMarkup/wsrp:markupParams/wsrp:windowState)"/>
- <xsl:variable name="cps-product-locale" select="/root/envelope/SOAP-ENV:Envelope/SOAP-ENV:Header/bus:biBusHeader/bus:userPreferenceVars/item[name='productLocale']/value"/>
- <xsl:variable name="cps-content-locale" select="/root/envelope/SOAP-ENV:Envelope/SOAP-ENV:Header/bus:biBusHeader/bus:userPreferenceVars/item[name='contentLocale']/value"/>
- <xsl:variable name="cps-portalContext" select="$getMarkup/wsrp:markupParams/wsrp:extensions/cps:portalContext"/>
- <xsl:variable name="userAgent" select="$getMarkup/wsrp:markupParams/wsrp:clientData/wsrp:userAgent"/>
- <xsl:variable name="dispatch-url" select="/root/target"/>
- <xsl:variable name="full-url">
- <xsl:value-of select="$dispatch-url"/>
- <xsl:choose>
- <xsl:when test="contains($dispatch-url,'?')">
- <xsl:text>&</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>?</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>cps-registrationHandle=</xsl:text>
- <xsl:value-of select="$cps-registrationHandle"/>
- <xsl:text>&cps-registrationState=</xsl:text>
- <xsl:value-of select="$cps-registrationState"/>
- <xsl:text>&cps-portletHandle=</xsl:text>
- <xsl:value-of select="$cps-portletHandle"/>
- <xsl:text>&cps-portletState=</xsl:text>
- <xsl:value-of select="$cps-portletState"/>
- <xsl:text>&cps-navigationalState=</xsl:text>
- <xsl:value-of select="$cps-navigationalState"/>
- <xsl:text>&cps-mode=</xsl:text>
- <xsl:value-of select="$cps-mode"/>
- <xsl:text>&cps-windowState=</xsl:text>
- <xsl:value-of select="$cps-windowState"/>
-
- <xsl:if test="$cps-content-locale">
- <xsl:text>&cps-contentLocale=</xsl:text>
- <xsl:value-of select="xtsext:urlencode($cps-content-locale)"/>
- </xsl:if>
- <xsl:if test="$cps-product-locale">
- <xsl:text>&cps-productLocale=</xsl:text>
- <xsl:value-of select="xtsext:urlencode($cps-product-locale)"/>
- </xsl:if>
-
- <xsl:if test="$cps-portalContext">
- <xsl:text>&cps-portalContext-portalAgent=</xsl:text>
- <xsl:value-of select="xtsext:urlencode($cps-portalContext/cps:portalAgent)"/>
- <xsl:for-each select="$cps-portalContext/cps:param">
- <xsl:text>&cps-portalContext-</xsl:text>
- <xsl:value-of select="@name"/>
- <xsl:text>=</xsl:text>
- <xsl:value-of select="xtsext:urlencode(.)"/>
- </xsl:for-each>
- </xsl:if>
- </xsl:variable>
-
- <xsl:template match="/">
- <xts:sequence>
- <xts:append select="/root">
- <temp-response/>
- </xts:append>
- <xts:append select="/root/temp-response">
- <wsrp:markupString>
- <xts:transform name="XMLEncode" option="content">
- <xts:request name="POST" faultBlock="handleFault" target="{$full-url}" protocolHeader="true" protocolHeaderSelect="/root/temp-response">
- <xsl:if test="/root/internalRequest">
- <xts:param name="internalRequest">true</xts:param>
- </xsl:if>
- <xsl:if test="$cps-product-locale or $cps-content-locale">
- <xts:param name="header">
- <xsl:text>Accept-Language=</xsl:text>
- <xsl:for-each select = "$cps-product-locale|$cps-content-locale[.!=$cps-product-locale]">
- <xsl:value-of select="xtsext:urlencode(.)"/>
- <xsl:if test="position() != last()">
- <xsl:text>, </xsl:text>
- </xsl:if>
- </xsl:for-each>
- </xts:param>
- </xsl:if>
- <xsl:if test="$userAgent">
- <xts:param name="header">
- <xsl:text>User-Agent=</xsl:text>
- <xsl:value-of select="$userAgent"/>
- </xts:param>
- </xsl:if>
- <xts:param name="header">
- <xsl:text>Cookie=</xsl:text>
- <xsl:for-each select="/root/cookies/cookie[not(@name='JSESSIONID')]">
- <xsl:value-of select="@name"/>=<xsl:value-of select="."/>
- <xsl:if test="position() != last()">
- <xsl:text>; </xsl:text>
- </xsl:if>
- </xsl:for-each>
- </xts:param>
- </xts:request>
- </xts:transform>
- </wsrp:markupString>
- </xts:append>
- </xts:sequence>
- </xsl:template>
- </xsl:stylesheet>
- </xts:block>
-
- <xts:block id="handleFault" type="fault" processor="XSLT">
- <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
- <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
- <xsl:template match="/">
- <div class="portlet-msg-error">
- <xsl:for-each select="/root/fault/xts:exception/xts:exceptionMsg">
- <xsl:value-of select="."/>
- <br/>
- </xsl:for-each>
- </div>
- </xsl:template>
- </xsl:stylesheet>
- </xts:block>
-
- </xts:morphlet>
|