<?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.
-->

<ofbiz-component name="myportal"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/ofbiz-component.xsd">
    <resource-loader name="main" type="component"/>
    <classpath type="dir" location="config"/>

    <entity-resource type="data" reader-name="seed" loader="main" location="data/MyPortalSecurityData.xml"/>
    <entity-resource type="data" reader-name="seed" loader="main" location="data/MyPortalTypeData.xml"/>
    <entity-resource type="data" reader-name="demo" loader="main" location="data/MyPortalDemoData.xml"/>

    <service-resource type="model" loader="main" location="servicedef/services.xml"/>

    <webapp name="myportal" title="MyPortal" app-bar-display="true" base-permission="MYPORTALBASE"
        server="default-server" location="webapp/myportal" mount-point="/myportal"/>
</ofbiz-component>
