<?xml version="1.0" encoding="UTF-8"?>
<!--
  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.
-->
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.3.0"
           xmlns:cxf="http://cxf.apache.org/blueprint/core"
           xmlns:jaxrs="http://cxf.apache.org/blueprint/jaxrs"
           xsi:schemaLocation="
             http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
             http://cxf.apache.org/blueprint/jaxrs http://cxf.apache.org/schemas/blueprint/jaxrs.xsd
             http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.3.0 http://aries.apache.org/schemas/blueprint-cm/blueprint-cm-1.3.0.xsd
             ">

    <cm:property-placeholder persistent-id="org.apache.brooklyn.ui.modularity">
        <cm:default-properties>
            <cm:property name="ui.module.api.path" value="/ui-module-registry"/>
            <cm:property name="redirect.path" value="/brooklyn-ui"/>
            <cm:property name="redirect.root" value="/redirect-root"/>
        </cm:default-properties>
    </cm:property-placeholder>


    <bean id="servlet" class="org.apache.brooklyn.ui.modularity.module.registry.internal.RedirectServlet">
        <argument index="0" type="java.lang.String" value="${redirect.path}"/>
    </bean>
    <service id="rootServletService" ref="servlet" interface="javax.servlet.Servlet">
        <service-properties>
            <entry key="alias" value="${redirect.root}"/>
        </service-properties>
    </service>

    <bean id="module-registry"
          class="org.apache.brooklyn.ui.modularity.module.registry.UiModuleRegistryImpl"/>
    <reference-list interface="org.apache.brooklyn.ui.modularity.module.api.UiModule" availability="optional">
        <reference-listener ref="module-registry" bind-method="register" unbind-method="unregister"/>
    </reference-list>

    <service interface="org.apache.brooklyn.ui.modularity.module.api.UiModuleRegistry" ref="module-registry"/>

    <jaxrs:server id="brooklynRestApiV1" address="${ui.module.api.path}">
        <jaxrs:serviceBeans>
            <bean class="org.apache.brooklyn.ui.modularity.module.registry.RestUiModuleRegistry">
                <property name="uiModuleRegistry" ref="module-registry"/>
            </bean>
        </jaxrs:serviceBeans>
        <jaxrs:inInterceptors>
            <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
        </jaxrs:inInterceptors>
        <jaxrs:outInterceptors>
            <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
        </jaxrs:outInterceptors>
        <jaxrs:providers>
            <bean class="com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider"/>
        </jaxrs:providers>
    </jaxrs:server>
</blueprint>
