///////////////////////////////////////////////////////////////////////////////
//                                                                           //
// Copyright (c) 2000-2018 Ericsson Telecom AB                               //
//                                                                           //
// All rights reserved. This program and the accompanying materials          //
// are made available under the terms of the Eclipse Public License v2.0     //
// which accompanies this distribution, and is available at                  //
// https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html                                 //
///////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////
//  Module: EPTF_CLL_UIHandlerCLI_Definitions
// 
//  Purpose:
//    This module contains definition of EPTF_UIHandler_CLI component type.
// 
//  Module depends on:
//    <EPTF_CLL_UIHandler_Definitions>
// 
//  Current Owner:
//    Laszlo Skumat (ELSZSKU)
// 
//  Last Review Date:
//    2007-xx-xx
//
//  Detailed Comments:
//    -
//
///////////////////////////////////////////////////////////////
module EPTF_CLL_UIHandlerCLI_Definitions
// [.objid{ itu_t(0) identified_organization(4) etsi(0) 
// identified_organization(127) ericsson(5) testing(0)
// <put further nodes here if needed>}]
{
//=========================================================================
// Import Part
//=========================================================================
import from EPTF_CLL_UIHandler_Definitions all;

//=========================================================================
// Data Types
//=========================================================================

//=========================================================================
//Component Types
//=========================================================================
///////////////////////////////////////////////////////////
//  Type: EPTF_UIHandler_CLI_CT
// 
//  Purpose:
//   The component provided the command line interface of the UIHandler component 
// 
//  Elements:
//
//  Detailed Comments:
//   The component became dummy. All the functionalities are implemented in the 
//   <EPTF_UIHandler_CT>. This wrapper component remained only for 
//   backward compatibility purposes.
//
///////////////////////////////////////////////////////////
type component EPTF_UIHandler_CLI_CT extends EPTF_UIHandler_CT{//, EPTF_Generic_Logger_CT{
}

}  // end of module
