<!--
    ============LICENSE_START=======================================================
    Drools PDP Application Common Models
    ================================================================================
    Copyright (C) 2017, 2019-2020 AT&T Intellectual Property. All rights reserved.
    Modifications Copyright (C) 2020 Bell Canada.
    ================================================================================
    Licensed 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.
    ============LICENSE_END=========================================================
-->

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <packaging>pom</packaging>

  <parent>
    <groupId>org.onap.policy.drools-applications.controlloop</groupId>
    <artifactId>controlloop</artifactId>
    <version>1.7.0-SNAPSHOT</version>
  </parent>

  <groupId>org.onap.policy.drools-applications.controlloop.common</groupId>
  <artifactId>drools-applications-common</artifactId>

  <modules>
    <module>guard</module>
    <module>coordination</module>
    <module>eventmanager</module>
    <module>rules-test</module>
    <module>controller-frankfurt</module>
    <module>controller-usecases</module>
    <module>feature-controlloop-utils</module>
    <module>feature-controlloop-trans</module>
    <module>feature-controlloop-management</module>
    <module>feature-controlloop-frankfurt</module>
    <module>feature-controlloop-usecases</module>
  </modules>


</project>
