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

<entitymodel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/entitymodel.xsd">
    <!-- ========================================================= -->
    <!-- ======================== Defaults ======================= -->
    <!-- ========================================================= -->
    <title>Entity of an Open For Business Project Component</title>
    <description>None</description>
    <version>1.0</version>
    
    <entity entity-name="SeleniumTestSuitePath"
        package-name="org.ofbiz.selenium.test"
        default-resource-name="ExampleEntityLabels"
        title="Selenium Test suite file">
        <field name="testSuiteId" type="id-ne"/>
        <field name="testSuiteName" type="name"/>
        <field name="testSuiteType" type="id"/>
        <field name="testSuitePath" type="description"/>
        <field name="description" type="very-long"/>
        <prim-key field="testSuiteId"/>
    </entity>
</entitymodel>
