The OSB supports a mechanism of customization. Unfortunately this mechanism is very limited and is not able to change all values. There are hundreds of situations where some kind of configuration is needed and which can’t be solved with customization:
- A configurable value need to be added to a request
- Username and password can’t be provided with a service account because they are not transferred as basic authentication
- The behavior of a proxy service should be able to be changed by a switch
- Paths for reading and writing files from should be configurable
For these cases we decided to implement an old fashioned configuration file. But how should we access the values from the configuration file?
One possibility would be java callouts. But it is cumbersome to add a java callout for each needed value.
A better solution for this kind of framework functionality is custom XQuery functions.
First we create a java project in our favorite java development tool. For the XQuery we have to create a class with static methods. Simple parameters are supported and overloading the methods is ok. For our configuration XQuery we use this java class ConfigXQueryFunctions:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
<div><!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --><span style="color: #008080;"> 1</span> <span style="color: #0000FF;">package</span><span style="color: #000000;"> com.opitzconsulting.osb.xquery.config; </span><span style="color: #008080;"> 2</span> <span style="color: #000000;"> </span><span style="color: #008080;"> 3</span> <span style="color: #000000;"></span><span style="color: #0000FF;">import</span><span style="color: #000000;"> com.opitzconsulting.osb.util.ConfigUtil; </span><span style="color: #008080;"> 4</span> <span style="color: #000000;"> </span><span style="color: #008080;"> 5</span> <span style="color: #000000;"></span><span style="color: #0000FF;">public</span><span style="color: #000000;"> </span><span style="color: #0000FF;">class</span><span style="color: #000000;"> ConfigXQueryFunctions { </span><span style="color: #008080;"> 6</span> <span style="color: #000000;"> </span><span style="color: #008080;"> 7</span> <span style="color: #000000;"> </span><span style="color: #0000FF;">public</span><span style="color: #000000;"> </span><span style="color: #0000FF;">static</span><span style="color: #000000;"> String getServerName() { </span><span style="color: #008080;"> 8</span> <span style="color: #000000;"> </span><span style="color: #0000FF;">return</span><span style="color: #000000;"> System.getenv(</span><span style="color: #000000;">"</span><span style="color: #000000;">HOSTNAME</span><span style="color: #000000;">"</span><span style="color: #000000;">); </span><span style="color: #008080;"> 9</span> <span style="color: #000000;"> } </span><span style="color: #008080;">10</span> <span style="color: #000000;"> </span><span style="color: #008080;">11</span> <span style="color: #000000;"> </span><span style="color: #0000FF;">public</span><span style="color: #000000;"> </span><span style="color: #0000FF;">static</span><span style="color: #000000;"> String getEnvironmentVariable(</span><span style="color: #0000FF;">final</span><span style="color: #000000;"> String envName) { </span><span style="color: #008080;">12</span> <span style="color: #000000;"> </span><span style="color: #0000FF;">return</span><span style="color: #000000;"> System.getenv(envName); </span><span style="color: #008080;">13</span> <span style="color: #000000;"> } </span><span style="color: #008080;">14</span> <span style="color: #000000;"> </span><span style="color: #008080;">15</span> <span style="color: #000000;"> </span><span style="color: #0000FF;">public</span><span style="color: #000000;"> </span><span style="color: #0000FF;">static</span><span style="color: #000000;"> String getSystemProperty(</span><span style="color: #0000FF;">final</span><span style="color: #000000;"> String propertyName) { </span><span style="color: #008080;">16</span> <span style="color: #000000;"> </span><span style="color: #0000FF;">return</span><span style="color: #000000;"> System.getProperty(propertyName); </span><span style="color: #008080;">17</span> <span style="color: #000000;"> } </span><span style="color: #008080;">18</span> <span style="color: #000000;"> </span><span style="color: #008080;">19</span> <span style="color: #000000;"> </span><span style="color: #0000FF;">public</span><span style="color: #000000;"> </span><span style="color: #0000FF;">static</span><span style="color: #000000;"> String getSystemProperty(</span><span style="color: #0000FF;">final</span><span style="color: #000000;"> String propertyName, </span><span style="color: #0000FF;">final</span><span style="color: #000000;"> String defaultValue) { </span><span style="color: #008080;">20</span> <span style="color: #000000;"> </span><span style="color: #0000FF;">return</span><span style="color: #000000;"> System.getProperty(propertyName, defaultValue); </span><span style="color: #008080;">21</span> <span style="color: #000000;"> } </span><span style="color: #008080;">22</span> <span style="color: #000000;"> </span><span style="color: #008080;">23</span> <span style="color: #000000;"> </span><span style="color: #0000FF;">public</span><span style="color: #000000;"> </span><span style="color: #0000FF;">static</span><span style="color: #000000;"> String getConfigFileName() { </span><span style="color: #008080;">24</span> <span style="color: #000000;"> </span><span style="color: #0000FF;">return</span><span style="color: #000000;"> ConfigUtil.getFileName(); </span><span style="color: #008080;">25</span> <span style="color: #000000;"> } </span><span style="color: #008080;">26</span> <span style="color: #000000;"> </span><span style="color: #008080;">27</span> <span style="color: #000000;"> </span><span style="color: #0000FF;">public</span><span style="color: #000000;"> </span><span style="color: #0000FF;">static</span><span style="color: #000000;"> String getEnvironment() { </span><span style="color: #008080;">28</span> <span style="color: #000000;"> </span><span style="color: #0000FF;">return</span><span style="color: #000000;"> ConfigXQueryFunctions.getConfigMandatoryValue(</span><span style="color: #000000;">"</span><span style="color: #000000;">env.name</span><span style="color: #000000;">"</span><span style="color: #000000;">); </span><span style="color: #008080;">29</span> <span style="color: #000000;"> } </span><span style="color: #008080;">30</span> <span style="color: #000000;"> </span><span style="color: #008080;">31</span> <span style="color: #000000;"> </span><span style="color: #0000FF;">public</span><span style="color: #000000;"> </span><span style="color: #0000FF;">static</span><span style="color: #000000;"> String getConfigValue(</span><span style="color: #0000FF;">final</span><span style="color: #000000;"> String configValueName) { </span><span style="color: #008080;">32</span> <span style="color: #000000;"> </span><span style="color: #0000FF;">return</span><span style="color: #000000;"> ConfigXQueryFunctions.getConfigValue(configValueName, </span><span style="color: #0000FF;">null</span><span style="color: #000000;">); </span><span style="color: #008080;">33</span> <span style="color: #000000;"> } </span><span style="color: #008080;">34</span> <span style="color: #000000;"> </span><span style="color: #008080;">35</span> <span style="color: #000000;"> </span><span style="color: #0000FF;">public</span><span style="color: #000000;"> </span><span style="color: #0000FF;">static</span><span style="color: #000000;"> String getConfigValue(</span><span style="color: #0000FF;">final</span><span style="color: #000000;"> String configValueName, </span><span style="color: #0000FF;">final</span><span style="color: #000000;"> String defaultValue) { </span><span style="color: #008080;">36</span> <span style="color: #000000;"> </span><span style="color: #0000FF;">return</span><span style="color: #000000;"> ConfigUtil.getValue(configValueName, defaultValue); </span><span style="color: #008080;">37</span> <span style="color: #000000;"> } </span><span style="color: #008080;">38</span> <span style="color: #000000;"> </span><span style="color: #008080;">39</span> <span style="color: #000000;"> </span><span style="color: #0000FF;">public</span><span style="color: #000000;"> </span><span style="color: #0000FF;">static</span><span style="color: #000000;"> </span><span style="color: #0000FF;">int</span><span style="color: #000000;"> getConfigValue(</span><span style="color: #0000FF;">final</span><span style="color: #000000;"> String configValueName, </span><span style="color: #0000FF;">final</span><span style="color: #000000;"> </span><span style="color: #0000FF;">int</span><span style="color: #000000;"> defaultValue) { </span><span style="color: #008080;">40</span> <span style="color: #000000;"> </span><span style="color: #0000FF;">return</span><span style="color: #000000;"> ConfigUtil.getValue(configValueName, defaultValue); </span><span style="color: #008080;">41</span> <span style="color: #000000;"> } </span><span style="color: #008080;">42</span> <span style="color: #000000;"> </span><span style="color: #008080;">43</span> <span style="color: #000000;"> </span><span style="color: #0000FF;">public</span><span style="color: #000000;"> </span><span style="color: #0000FF;">static</span><span style="color: #000000;"> </span><span style="color: #0000FF;">boolean</span><span style="color: #000000;"> getConfigValue(</span><span style="color: #0000FF;">final</span><span style="color: #000000;"> String configValueName, </span><span style="color: #0000FF;">final</span><span style="color: #000000;"> </span><span style="color: #0000FF;">boolean</span><span style="color: #000000;"> defaultValue) { </span><span style="color: #008080;">44</span> <span style="color: #000000;"> </span><span style="color: #0000FF;">return</span><span style="color: #000000;"> ConfigUtil.getValue(configValueName, defaultValue); </span><span style="color: #008080;">45</span> <span style="color: #000000;"> } </span><span style="color: #008080;">46</span> <span style="color: #000000;"> </span><span style="color: #008080;">47</span> <span style="color: #000000;"> </span><span style="color: #0000FF;">public</span><span style="color: #000000;"> </span><span style="color: #0000FF;">static</span><span style="color: #000000;"> String getConfigMandatoryValue(</span><span style="color: #0000FF;">final</span><span style="color: #000000;"> String configValueName) { </span><span style="color: #008080;">48</span> <span style="color: #000000;"> </span><span style="color: #0000FF;">return</span><span style="color: #000000;"> ConfigUtil.getMandatoryValue(configValueName); </span><span style="color: #008080;">49</span> <span style="color: #000000;"> } </span><span style="color: #008080;">50</span> <span style="color: #000000;"> </span><span style="color: #008080;">51</span> <span style="color: #000000;"> </span><span style="color: #0000FF;">public</span><span style="color: #000000;"> </span><span style="color: #0000FF;">static</span><span style="color: #000000;"> </span><span style="color: #0000FF;">int</span><span style="color: #000000;"> getConfigMandatoryValueInt(</span><span style="color: #0000FF;">final</span><span style="color: #000000;"> String configValueName) { </span><span style="color: #008080;">52</span> <span style="color: #000000;"> </span><span style="color: #0000FF;">return</span><span style="color: #000000;"> ConfigUtil.getMandatoryValueInt(configValueName); </span><span style="color: #008080;">53</span> <span style="color: #000000;"> } </span><span style="color: #008080;">54</span> <span style="color: #000000;"> </span><span style="color: #008080;">55</span> <span style="color: #000000;"> </span><span style="color: #0000FF;">public</span><span style="color: #000000;"> </span><span style="color: #0000FF;">static</span><span style="color: #000000;"> </span><span style="color: #0000FF;">boolean</span><span style="color: #000000;"> getConfigMandatoryValueBoolean(</span><span style="color: #0000FF;">final</span><span style="color: #000000;"> String configValueName) { </span><span style="color: #008080;">56</span> <span style="color: #000000;"> </span><span style="color: #0000FF;">return</span><span style="color: #000000;"> ConfigUtil.getMandatoryValueBoolean(configValueName); </span><span style="color: #008080;">57</span> <span style="color: #000000;"> } </span><span style="color: #008080;">58</span> <span style="color: #000000;"> </span><span style="color: #008080;">59</span> <span style="color: #000000;">} </span><span style="color: #008080;">60</span> <span style="color: #000000;"></span></div> |
The class references here another class holding the real configuration information. It is a good idea to implement an auto-reload of the configuration to support on the fly changes. The method signatures in the example don’t have a parameter for a file or a OSB project, so there can be only one configuration file for the OSB.
After writing the java code and some unit tests (unit tests are a very good idea here because it is much work to do a redeployment of the XQuery lib for doing a change) the code should be compiled into a jar file.
Additionally we need a xml file describing the XQuery functions.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 |
<div><!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --><span style="color: #008080;"> 1</span> <span style="color: #0000FF;"><?</span><span style="color: #FF00FF;">xml version="1.0" encoding="UTF-8"</span><span style="color: #0000FF;">?></span><span style="color: #000000;"> </span><span style="color: #008080;"> 2</span> <span style="color: #000000;"></span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:xpathFunctions </span><span style="color: #FF0000;">xmlns:xpf</span><span style="color: #0000FF;">="http://www.bea.com/wli/sb/xpath/config"</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 3</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:category </span><span style="color: #FF0000;">id</span><span style="color: #0000FF;">="OSB Configuration XQuery Functions"</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 4</span> <span style="color: #000000;"> </span><span style="color: #008080;"> 5</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:function</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 6</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:name</span><span style="color: #0000FF;">></span><span style="color: #000000;">getServerName</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:name</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 7</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:comment</span><span style="color: #0000FF;">></span><span style="color: #000000;">Returns the hostname of the server.</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:comment</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 8</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:namespaceURI</span><span style="color: #0000FF;">></span><span style="color: #000000;">http://opitz-consulting.com/osb/custom/functions/config</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:namespaceURI</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 9</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:className</span><span style="color: #0000FF;">></span><span style="color: #000000;">com.opitzconsulting.osb.xquery.config.ConfigXQueryFunctions</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:className</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 10</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:method</span><span style="color: #0000FF;">></span><span style="color: #000000;">java.lang.String getServerName()</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:method</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 11</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:isDeterministic</span><span style="color: #0000FF;">></span><span style="color: #000000;">true</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:isDeterministic</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 12</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;">Pipeline</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 13</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;">SplitJoin</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 14</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:function</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 15</span> <span style="color: #000000;"> </span><span style="color: #008080;"> 16</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:function</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 17</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:name</span><span style="color: #0000FF;">></span><span style="color: #000000;">getEnvironmentVariable</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:name</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 18</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:comment</span><span style="color: #0000FF;">></span><span style="color: #000000;">Returns the value of the environment variable with the name given by the parameter.</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:comment</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 19</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:namespaceURI</span><span style="color: #0000FF;">></span><span style="color: #000000;">http://opitz-consulting.com/osb/custom/functions/config</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:namespaceURI</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 20</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:className</span><span style="color: #0000FF;">></span><span style="color: #000000;">com.opitzconsulting.osb.xquery.config.ConfigXQueryFunctions</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:className</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 21</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:method</span><span style="color: #0000FF;">></span><span style="color: #000000;">java.lang.String getEnvironmentVariable(java.lang.String)</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:method</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 22</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:isDeterministic</span><span style="color: #0000FF;">></span><span style="color: #000000;">true</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:isDeterministic</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 23</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;">Pipeline</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 24</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;">SplitJoin</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 25</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:function</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 26</span> <span style="color: #000000;"> </span><span style="color: #008080;"> 27</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:function</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 28</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:name</span><span style="color: #0000FF;">></span><span style="color: #000000;">getSystemProperty</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:name</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 29</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:comment</span><span style="color: #0000FF;">></span><span style="color: #000000;">Returns the value of the system property with the name given by the parameter.</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:comment</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 30</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:namespaceURI</span><span style="color: #0000FF;">></span><span style="color: #000000;">http://opitz-consulting.com/osb/custom/functions/config</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:namespaceURI</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 31</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:className</span><span style="color: #0000FF;">></span><span style="color: #000000;">com.opitzconsulting.osb.xquery.config.ConfigXQueryFunctions</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:className</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 32</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:method</span><span style="color: #0000FF;">></span><span style="color: #000000;">java.lang.String getSystemProperty(java.lang.String)</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:method</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 33</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:isDeterministic</span><span style="color: #0000FF;">></span><span style="color: #000000;">true</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:isDeterministic</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 34</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;">Pipeline</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 35</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;">SplitJoin</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 36</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:function</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 37</span> <span style="color: #000000;"> </span><span style="color: #008080;"> 38</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:function</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 39</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:name</span><span style="color: #0000FF;">></span><span style="color: #000000;">getSystemPropertyDefault</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:name</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 40</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:comment</span><span style="color: #0000FF;">></span><span style="color: #000000;">Returns the value of the system property with the name given by the parameter. If the system property is not set the default value given by the second parameter is returned.</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:comment</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 41</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:namespaceURI</span><span style="color: #0000FF;">></span><span style="color: #000000;">http://opitz-consulting.com/osb/custom/functions/config</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:namespaceURI</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 42</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:className</span><span style="color: #0000FF;">></span><span style="color: #000000;">com.opitzconsulting.osb.xquery.config.ConfigXQueryFunctions</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:className</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 43</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:method</span><span style="color: #0000FF;">></span><span style="color: #000000;">java.lang.String getSystemProperty(java.lang.String, java.lang.String)</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:method</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 44</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:isDeterministic</span><span style="color: #0000FF;">></span><span style="color: #000000;">true</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:isDeterministic</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 45</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;">Pipeline</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 46</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;">SplitJoin</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 47</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:function</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 48</span> <span style="color: #000000;"> </span><span style="color: #008080;"> 49</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:function</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 50</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:name</span><span style="color: #0000FF;">></span><span style="color: #000000;">getConfigFileName</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:name</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 51</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:comment</span><span style="color: #0000FF;">></span><span style="color: #000000;">Returns the name and the path of the file containing the configuration.</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:comment</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 52</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:namespaceURI</span><span style="color: #0000FF;">></span><span style="color: #000000;">http://opitz-consulting.com/osb/custom/functions/config</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:namespaceURI</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 53</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:className</span><span style="color: #0000FF;">></span><span style="color: #000000;">com.opitzconsulting.osb.xquery.config.ConfigXQueryFunctions</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:className</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 54</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:method</span><span style="color: #0000FF;">></span><span style="color: #000000;">java.lang.String getConfigFileName()</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:method</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 55</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:isDeterministic</span><span style="color: #0000FF;">></span><span style="color: #000000;">true</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:isDeterministic</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 56</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;">Pipeline</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 57</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;">SplitJoin</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 58</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:function</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 59</span> <span style="color: #000000;"> </span><span style="color: #008080;"> 60</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:function</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 61</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:name</span><span style="color: #0000FF;">></span><span style="color: #000000;">getEnvironment</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:name</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 62</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:comment</span><span style="color: #0000FF;">></span><span style="color: #000000;">Returns the name of the environment the configuration is designated.</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:comment</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 63</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:namespaceURI</span><span style="color: #0000FF;">></span><span style="color: #000000;">http://opitz-consulting.com/osb/custom/functions/config</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:namespaceURI</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 64</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:className</span><span style="color: #0000FF;">></span><span style="color: #000000;">com.opitzconsulting.osb.xquery.config.ConfigXQueryFunctions</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:className</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 65</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:method</span><span style="color: #0000FF;">></span><span style="color: #000000;">java.lang.String getEnvironment()</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:method</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 66</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:isDeterministic</span><span style="color: #0000FF;">></span><span style="color: #000000;">true</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:isDeterministic</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 67</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;">Pipeline</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 68</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;">SplitJoin</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 69</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:function</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 70</span> <span style="color: #000000;"> </span><span style="color: #008080;"> 71</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:function</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 72</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:name</span><span style="color: #0000FF;">></span><span style="color: #000000;">getConfigValue</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:name</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 73</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:comment</span><span style="color: #0000FF;">></span><span style="color: #000000;">Returns the value of the configuration entry with the name given by the parameter. If the configuration entry doesn't exist null is returned.</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:comment</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 74</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:namespaceURI</span><span style="color: #0000FF;">></span><span style="color: #000000;">http://opitz-consulting.com/osb/custom/functions/config</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:namespaceURI</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 75</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:className</span><span style="color: #0000FF;">></span><span style="color: #000000;">com.opitzconsulting.osb.xquery.config.ConfigXQueryFunctions</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:className</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 76</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:method</span><span style="color: #0000FF;">></span><span style="color: #000000;">java.lang.String getConfigValue(java.lang.String)</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:method</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 77</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:isDeterministic</span><span style="color: #0000FF;">></span><span style="color: #000000;">true</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:isDeterministic</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 78</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;">Pipeline</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 79</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;">SplitJoin</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 80</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:function</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 81</span> <span style="color: #000000;"> </span><span style="color: #008080;"> 82</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:function</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 83</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:name</span><span style="color: #0000FF;">></span><span style="color: #000000;">getConfigValueDefault</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:name</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 84</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:comment</span><span style="color: #0000FF;">></span><span style="color: #000000;">Returns the value of the configuration entry with the name given by the parameter. If the configuration entry doesn't exist the default value given by the second parameter is returned.</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:comment</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 85</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:namespaceURI</span><span style="color: #0000FF;">></span><span style="color: #000000;">http://opitz-consulting.com/osb/custom/functions/config</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:namespaceURI</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 86</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:className</span><span style="color: #0000FF;">></span><span style="color: #000000;">com.opitzconsulting.osb.xquery.config.ConfigXQueryFunctions</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:className</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 87</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:method</span><span style="color: #0000FF;">></span><span style="color: #000000;">java.lang.String getConfigValue(java.lang.String, java.lang.String)</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:method</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 88</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:isDeterministic</span><span style="color: #0000FF;">></span><span style="color: #000000;">true</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:isDeterministic</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 89</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;">Pipeline</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 90</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;">SplitJoin</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 91</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:function</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 92</span> <span style="color: #000000;"> </span><span style="color: #008080;"> 93</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:function</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 94</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:name</span><span style="color: #0000FF;">></span><span style="color: #000000;">getConfigValueInt</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:name</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 95</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:comment</span><span style="color: #0000FF;">></span><span style="color: #000000;">Returns the value of the configuration entry with the name given by the parameter as an integer value. If the configuration entry doesn't exist or the conversion fails the default value given by the second parameter is returned.</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:comment</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 96</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:namespaceURI</span><span style="color: #0000FF;">></span><span style="color: #000000;">http://opitz-consulting.com/osb/custom/functions/config</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:namespaceURI</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 97</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:className</span><span style="color: #0000FF;">></span><span style="color: #000000;">com.opitzconsulting.osb.xquery.config.ConfigXQueryFunctions</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:className</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 98</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:method</span><span style="color: #0000FF;">></span><span style="color: #000000;">int getConfigValue(java.lang.String, int)</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:method</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;"> 99</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:isDeterministic</span><span style="color: #0000FF;">></span><span style="color: #000000;">true</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:isDeterministic</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">100</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;">Pipeline</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">101</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;">SplitJoin</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">102</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:function</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">103</span> <span style="color: #000000;"> </span><span style="color: #008080;">104</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:function</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">105</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:name</span><span style="color: #0000FF;">></span><span style="color: #000000;">getConfigValueBoolean</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:name</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">106</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:comment</span><span style="color: #0000FF;">></span><span style="color: #000000;">Returns the value of the configuration entry with the name given by the parameter as a boolean value. If the configuration entry doesn't exist or the conversion fails the default value given by the second parameter is returned.</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:comment</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">107</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:namespaceURI</span><span style="color: #0000FF;">></span><span style="color: #000000;">http://opitz-consulting.com/osb/custom/functions/config</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:namespaceURI</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">108</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:className</span><span style="color: #0000FF;">></span><span style="color: #000000;">com.opitzconsulting.osb.xquery.config.ConfigXQueryFunctions</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:className</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">109</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:method</span><span style="color: #0000FF;">></span><span style="color: #000000;">boolean getConfigValue(java.lang.String, boolean)</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:method</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">110</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:isDeterministic</span><span style="color: #0000FF;">></span><span style="color: #000000;">true</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:isDeterministic</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">111</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;">Pipeline</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">112</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;">SplitJoin</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">113</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:function</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">114</span> <span style="color: #000000;"> </span><span style="color: #008080;">115</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:function</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">116</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:name</span><span style="color: #0000FF;">></span><span style="color: #000000;">getConfigMandatoryValue</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:name</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">117</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:comment</span><span style="color: #0000FF;">></span><span style="color: #000000;">Returns the value of the configuration entry with the name given by the parameter. If the configuration entry doesn't exist an exception is thrown.</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:comment</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">118</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:namespaceURI</span><span style="color: #0000FF;">></span><span style="color: #000000;">http://opitz-consulting.com/osb/custom/functions/config</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:namespaceURI</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">119</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:className</span><span style="color: #0000FF;">></span><span style="color: #000000;">com.opitzconsulting.osb.xquery.config.ConfigXQueryFunctions</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:className</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">120</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:method</span><span style="color: #0000FF;">></span><span style="color: #000000;">java.lang.String getConfigMandatoryValue(java.lang.String)</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:method</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">121</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:isDeterministic</span><span style="color: #0000FF;">></span><span style="color: #000000;">true</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:isDeterministic</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">122</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;">Pipeline</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">123</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;">SplitJoin</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">124</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:function</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">125</span> <span style="color: #000000;"> </span><span style="color: #008080;">126</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:function</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">127</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:name</span><span style="color: #0000FF;">></span><span style="color: #000000;">getConfigMandatoryValueInt</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:name</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">128</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:comment</span><span style="color: #0000FF;">></span><span style="color: #000000;">Returns the value of the configuration entry with the name given by the parameter as an integer value. If the configuration entry doesn't exist or the conversion fails an exception is thrown.</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:comment</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">129</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:namespaceURI</span><span style="color: #0000FF;">></span><span style="color: #000000;">http://opitz-consulting.com/osb/custom/functions/config</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:namespaceURI</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">130</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:className</span><span style="color: #0000FF;">></span><span style="color: #000000;">com.opitzconsulting.osb.xquery.config.ConfigXQueryFunctions</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:className</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">131</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:method</span><span style="color: #0000FF;">></span><span style="color: #000000;">int getConfigMandatoryValueInt(java.lang.String)</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:method</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">132</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:isDeterministic</span><span style="color: #0000FF;">></span><span style="color: #000000;">true</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:isDeterministic</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">133</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;">Pipeline</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">134</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;">SplitJoin</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">135</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:function</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">136</span> <span style="color: #000000;"> </span><span style="color: #008080;">137</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:function</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">138</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:name</span><span style="color: #0000FF;">></span><span style="color: #000000;">getConfigMandatoryValueBoolean</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:name</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">139</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:comment</span><span style="color: #0000FF;">></span><span style="color: #000000;">Returns the value of the configuration entry with the name given by the parameter as a boolean value. If the configuration entry doesn't exist or the conversion fails an exception is thrown.</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:comment</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">140</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:namespaceURI</span><span style="color: #0000FF;">></span><span style="color: #000000;">http://opitz-consulting.com/osb/custom/functions/config</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:namespaceURI</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">141</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:className</span><span style="color: #0000FF;">></span><span style="color: #000000;">com.opitzconsulting.osb.xquery.config.ConfigXQueryFunctions</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:className</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">142</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:method</span><span style="color: #0000FF;">></span><span style="color: #000000;">boolean getConfigMandatoryValueBoolean(java.lang.String)</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:method</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">143</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:isDeterministic</span><span style="color: #0000FF;">></span><span style="color: #000000;">true</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:isDeterministic</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">144</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;">Pipeline</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">145</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"><</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;">SplitJoin</span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:scope</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">146</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:function</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">147</span> <span style="color: #000000;"> </span><span style="color: #008080;">148</span> <span style="color: #000000;"> </span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:category</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">149</span> <span style="color: #000000;"></span><span style="color: #0000FF;"></</span><span style="color: #800000;">xpf:xpathFunctions</span><span style="color: #0000FF;">></span><span style="color: #000000;"> </span><span style="color: #008080;">150</span> <span style="color: #000000;"></span></div> |
The category id while be the text shown in eclipse while using the functions. And also the namespace is important: Eclipse is generating while using the function a prefix out of the namespace. If you change the namespace afterwards you have to change the prefix on every location you used the XQuery function.
The names of the XQuery functions should NOT be overloaded here. Overloaded names didn’t work for me and I have not found out how to fix it.
Now we have to deploy the XQuery to the OSB and to Eclipse. It is a drop in deployment: You have to copy the JAR archive and the XML file to the folder Oracle_OSB1/config/xpath-functions. After that a restart of the OSB / Eclipse is necessary.
Now you can use your custom XQuery functions inside of XQuerys
or inside the proxyservice
Bernhard Mähr @ OPITZ-CONSULTING published at http://thecattlecrew.wordpress.com/