<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->


<rules>
    <rule dir="IN" name="JKG/jkg/inbound/root" pattern="*://*:*/**/jkg/">
        <rewrite template="{$serviceUrl[JKG]}/"/>
    </rule>

    <rule dir="IN" name="JKG/jkg/inbound/api/kernelspecs" pattern="*://*:*/**/jkg/api/kernelspecs?{**}">
        <rewrite template="{$serviceUrl[JKG]}/api/kernelspecs?{**}"/>
    </rule>
    <rule dir="IN" name="JKG/jkg/inbound/api/kernelspecs/query" pattern="*://*:*/**/jkg/api/kernelspecs/{**}?{**}">
        <rewrite template="{$serviceUrl[JKG]}/api/kernelspecs/{**}?{**}"/>
    </rule>


    <rule dir="IN" name="JKG/jkg/inbound/api/kernelsurl" pattern="*://*:*/**/jkg/api/kernels?{**}">
        <rewrite template="{$serviceUrl[JKG]}/api/kernels"/>
    </rule>

    <rule dir="IN" name="JKG/jkg/inbound/api/kernel/query" pattern="*://*:*/**/jkg/api/kernels/{**}?">
        <rewrite template="{$serviceUrl[JKG]}/api/kernels/{**}?"/>
    </rule>

    <filter name="JKG/jkg/outbound/api/kernels">
        <content type="text/plain" asType="application/json">
        </content>
    </filter>
    <filter name="JKG/jkg/inbound/api/kernels">
        <content type="application/x-www-form-urlencoded" asType="application/octet-stream">
        </content>
    </filter>
</rules>