Consortium Solutions Middleware Forge MyObjectWeb | |||||||||
|
OpenCCM
|
The OpenCCM Compilation Tool ChainThe OpenCCM Compilation Tool Chain is a set of tools for compiling CORBA Components specifications (i.e. OMG IDL 3.0, OMG PSDL, OMG CIDL, and XMI 1.1 UML 1.4 Profile for CORBA Components files) and for generating CORBA Components implementation artefacts (i.e. OMG IDL 2.x interfaces and local interfaces, container code, XML CCM descriptors). The OpenCCM Compilation Tool Chain is composed of the following tools:
In the following sections, all OpenCCM Compilation Tool Chain scripts are illustrated on top of the ORBacus 4.1.0 product running on a Linux system. However all these following scripts could be used in the same way on any ORB products and operating systems supported by OpenCCM. The OpenCCM Interface RepositoryThe OpenCCM Interface Repository is the central part of the OpenCCM Compilation Tool Chain. This permanent repository is composed of CORBA objects storing CORBA Components specifications and making them accessible at runtime. The OMG IDL interfaces of the OpenCCM Interface Repository are fully conform to the interfaces defined in the CORBA 3.0 Core Specification. Then the following OpenCCM compilers feed CORBA Components specifications into the OpenCCM Interface Repository and the following OpenCCM generators obtain specifications from the OpenCCM Interface Repository. Let's note that before using any OpenCCM Compilation Tool Chain tools, it is required to start the OpenCCM Interface Repository with the ir3_start script. Warning: To use any of the OpenCCM generation tools, it is required to feed the OpenCCM Interface Repository with OMG IDL 3.0 files or XMI 1.1 UML 1.4 docuuments. Starting the OpenCCM Interface Repository
The $ ir3_start The OpenCCM Interface Repository will be started. Creating the $OpenCCM_CONFIG_DIR directory. Launching the OpenCCM Interface Repository. Feeding the OpenCCM Interface Repository with the IFR_3_0.idl file. . . . Feeding the OpenCCM Interface Repository with the Components.idl file. . . . The OpenCCM Interface Repository is started. $
Let's note that this script automatically creates the Moreover, the IOR, PID, and standard output of the started OpenCCM Interface Repository are stored into the OpenCCM Configuration Repository, e.g.: $ ls $OpenCCM_CONFIG_DIR IR3.IOR IR3.PID IR3.output IR3.start $ Warning: Only one OpenCCM Interface Repository can be started for an OpenCCM Configuration Repository, e.g.: $ ir3_start Error: The OpenCCM Interface Repository is already started! $
By default, the OpenCCM Interface Repository automatically computes the OMG IDL 2.x mapping
for component and home definitions. The $ ir3_start --no-mappings . . . $ Warning: Don't disable the OMG IDL 2.x mapping computation if you will use OpenCCM generators.
See the Checking if the OpenCCM Interface Repository is started
The $ ir3_stop . . . $ ir3_started Error: The OpenCCM Interface Repository is not started! $ Let's note that this OpenCCM script is mainly used by other OpenCCM scripts to check if the OpenCCM Interface Repository is started or not. Stopping the OpenCCM Interface Repository
The $ ir3_start . . . $ ir3_stop The OpenCCM Interface Repository will be stopped. Removing the $OpenCCM_CONFIG_DIR directory. The OpenCCM Interface Repository is stopped. $
Let's note that this script shutdowns the OpenCCM Interface Repository process,
removes its associated IOR, PID, and standard output files, and removes the
Checking OMG IDL 3.0 files
The $ cat test/sample.idl3 // This file is the OMG IDL 3.0 example used in the OpenCCM User's Guide. #pragma prefix "ccm.objectweb.org" module sample { component MyComponent {}; home MyHome manages MyComponent {}; }; $ $ idl3_check test/sample.idl3 idl3_check 0.8.1: Reading from file test/sample.idl3... idl3_check 0.8.1: Preprocessing file test/sample.idl3... idl3_check 0.8.1: File test/sample.idl3 preprocessed. idl3_check 0.8.1: Compiling test/sample.idl3 file... idl3_check 0.8.1: Compilation completed: 0 warning. $
The
To obtain usage and help information, do: $ idl3_check --help Usage: idl3_check [-h|--help] [--version] [--silent] [--cpp path] [-P] [-DNAME|-DNAME=DEF] [-UNAME] [-IDIR] omg_idl_file Options: -h, --help Display this information and exit --version Output version information and exit --silent Silent output messages --cpp path Set the path to the external C preprocessor used -P Inhibit generation of #-lines with line-number information -DNAME, -DNAME=DEF Define NAME as DEF, default is 1 -UNAME Remove any definition for NAME -IDIR Put DIR in the include file search path Description: Compile and check an OMG IDL file $ To obtain version information, do: $ idl3_check --version OpenCCM idl3_check 0.8.1 Copyright (C) 2000-2003 INRIA - USTL - LIFL - GOAL . . . $
By default, the $ idl3_check --silent test/sample.idl3 $
By default, the $ idl3_check --cpp /usr/bin/cpp test/sample.idl3 . . . $
Let's note that the standard $ idl3_check -DFOO -Itest test/sample.idl3 . . . $
When some preprocessing options are often used, e.g.
By default, the // An OMG IDL file. #ifdef __OMG_IDL_3__ // This file is compiled by an OMG IDL 3.x compliant compiler. import CORBA; #else // This file is compiled by a non OMG IDL 3.x compliant compiler. #include <CORBA.idl> #endif // ... Feeding OMG IDL 3.0 files into the OpenCCM Interface Repository
The $ ir3_feed test/sample.idl3 ir3_feed 0.8.1: Reading from file test/sample.idl3... ir3_feed 0.8.1: Preprocessing file test/sample.idl3... ir3_feed 0.8.1: File test/sample.idl3 preprocessed. ir3_feed 0.8.1: Compiling test/sample.idl3 file... ir3_feed 0.8.1: Compilation completed: 0 warning. $ Warning: OMG IDL files must be fed into the OpenCCM Interface Repository only once!!!
The
To obtain usage and help information, do: $ ir3_feed --help Usage: ir3_feed [-h|--help] [--version] [--silent] [--cpp path] [-P] [-DNAME|-DNAME=DEF] [-UNAME] [-IDIR] omg_idl_files Options: -h, --help Display this information and exit --version Output version information and exit --silent Silent output messages --cpp path Set the path to the external C preprocessor used -P Inhibit generation of #-lines with line-number information -DNAME, -DNAME=DEF Define NAME as DEF, default is 1 -UNAME Remove any definition for NAME -IDIR Put DIR in the include file search path Description: Feed the OpenCCM Interface Repository with OMG IDL files $ To obtain version information, do: $ ir3_feed --version OpenCCM ir3_feed 0.8.1 Copyright (C) 2000-2003 INRIA - USTL - LIFL - GOAL . . . $
By default, the $ ir3_feed --silent test/sample.idl3 $
By default, the $ ir3_feed --cpp /usr/bin/cpp test/sample.idl3 . . . $
Let's note that the standard $ ir3_feed -DFOO -Itest test/sample.idl3 . . . $
When some preprocessing options are often used, e.g.
By default, the // An OMG IDL file. #ifdef __OMG_IDL_3__ // This file is compiled by an OMG IDL 3.x compliant compiler. import CORBA; #else // This file is compiled by a non OMG IDL 3.x compliant compiler. #include <CORBA.idl> #endif // ... Feeding XMI 1.1 UML 1.4 documents into the OpenCCM Interface Repository
The These XMI 1.1 UML 1.4 documents must respect the OMG XMI 1.1 (see OMG TC Document formal/00-11-02) and the OMG UML 1.4 (see OMG TC Document formal/01-09-67) specifications. The elements of the UML model must be stereotyped with the stereotypes defined in the UML Profile for CORBA (OMG TC Document formal/02-04-01) and CORBA Components (OMG TC Document mars/03-07-01) specifications. These XMI 1.1 UML 1.4 documents can be written with any text editor, but it can be generated by a UML tool, e.g.:
For example, the corresponding UML diagram of the
Next, the XMI 1.1 UML 1.4 documents can be generated by the UML tools to parse them
and to feed them into the OpenCCM Interface Repository
with the $ cat test/sample.xmi . . . $ $ xmi2ir test/sample.xmi . . . xmi2ir 0.8: Reading from test/sample.xmi... xmi2ir 0.8: Checking if the UML model is correct... xmi2ir 0.8: The UML model is correct. xmi2ir 0.8: Feeding the UML model into the OpenCCM Interface Repository... xmi2ir 0.8: The UML model is fed into the OpenCCM Interface Repository. $ Warning: XMI 1.1 UML 1.4 documents must be fed into the OpenCCM Interface Repository only once!!!
The
To obtain usage and help information, do: $ xmi2ir --help Usage: xmi2ir [-h|--help] [--version] [--silent] xmi_uml_document Options: -h, --help Display this information and exit --version Output version information and exit --silent Silent output messages Description: Feed the OpenCCM Interface Repository with an XMI 1.1 UML 1.4 document $ To obtain version information, do: $ xmi2ir --version OpenCCM xmi2ir 0.8.1 Copyright (C) 2000-2003 INRIA - USTL - LIFL - GOAL . . . $
By default, the $ xmi2ir --silent test/sample.xmi $ Destroying OpenCCM Interface Repository objects
The Destroying an object from the OpenCCM Interface Repository requires to provide its full OMG IDL scope name, e.g.: $ ir3_destroy ::sample ir3_destroy 0.8.1: ::sample destroyed successfully. $ If the object to destroy does not exist in the OpenCCM Interface Repository, then an error is reported, e.g.: $ ir3_destroy ::sample ir3_destroy 0.8.1: ::sample not found in the OpenCCM Interface Repository! $ If the object is referenced by other OpenCCM Interface Repository objects, then it could not be destroyed until other objects are destroyed, e.g.: $ ir3_feed test/sample.idl3 . . . $ ir3_destroy sample::MyComponent ir3_destroy 0.8.1: sample::MyComponent not destroyed because dependency exits in the OpenCCM Interface Repository preventing destruction! $ ir3_destroy sample::MyHome ir3_destroy 0.8.1: sample::MyHome destroyed successfully. $ ir3_destroy sample::MyComponent ir3_destroy 0.8.1: sample::MyComponent destroyed successfully. $
The
To obtain usage and help information, do: $ ir3_destroy --help Usage: ir3_destroy [-h|--help] [--version] [--silent] omg_idl_scoped_name Options: -h, --help Display this information and exit --version Output version information and exit --silent Silent output messages Description: Destroy an object from the OpenCCM Interface Repository $ To obtain version information, do: $ ir3_destroy --version OpenCCM ir3_destroy 0.8.1 Copyright (C) 2000-2003 INRIA - USTL - LIFL - GOAL . . . $
By default, the $ ir3_feed test/sample.idl3 . . . $ ir3_destroy --silent sample $ Generating OMG IDL 3.0 files from the OpenCCM Interface Repository
The $ ir3_idl3 sample ir3_idl3 0.8.1: Generating OMG IDL 3.0 for sample... ir3_idl3 0.8.1: OMG IDL 3.0 generated in generated.idl3. $
By default, the $ cat generated.idl3 . . . #ifndef __SAMPLE__ #define __SAMPLE__ #pragma prefix "ccm.objectweb.org" module sample { component MyComponent; component MyComponent { }; home MyHome manages ::sample::MyComponent { }; }; #endif $
The
To obtain usage and help information, do: $ ir3_idl3 --help Usage: ir3_idl3 [-h|--help] [--version] [--silent] [-o outputfile] [-i ir_object] declaration Options: -h, --help Display this information and exit --version Output version information and exit --silent Silent output messages -o outputfile Set the output file name, default is generated.idl3 -i ir_object Add import ir_object statement Description: Generate OMG IDL 3.0 for a declaration from the OpenCCM Interface Repository $ To obtain version information, do: $ ir3_idl3 --version OpenCCM ir3_idl3 0.8.1 Copyright (C) 2000-2003 INRIA - USTL - LIFL - GOAL . . . $
By default, the $ ir3_idl3 --silent sample $
By default, the $ ir3_idl3 -o tmp.idl3 sample ir3_idl3 0.8.1: Generating OMG IDL 3.0 for sample ... ir3_idl3 0.8.1: OMG IDL 3.0 generated in tmp.idl3. $ $ cat tmp.idl3 . . . #ifndef __SAMPLE__ #define __SAMPLE__ #pragma prefix "ccm.objectweb.org" module sample { component MyComponent; component MyComponent { }; home MyHome manages ::sample::MyComponent { }; }; #endif $
Using the $ ir3_idl3 -i Components sample . . . $ cat generated.idl3 . . . import Components; . . . $ Generating XMI 1.1 UML documents from the OpenCCM Interface Repository
The
The $ ir3_xmi sample <?xml version="1.0" encoding="UTF-8"?> . . . <!DOCTYPE XMI SYSTEM "xmi.dtd"> <XMI xmi.version="1.1" xmlns:UML="org.omg/UML1.3"> <XMI.header> <XMI.documentation> <XMI.exporter>OpenCCM XMI generator</XMI.exporter> </XMI.documentation> </XMI.header> <XMI.content> . . . </XMI.content> </XMI> $
By default, the $ ir3_xmi -o tmp.xml sample $ $ cat tmp.xml <?xml version="1.0" encoding="UTF-8"?> . . . <!DOCTYPE XMI SYSTEM "xmi.dtd"> <XMI xmi.version="1.1" xmlns:UML="org.omg/UML1.3"> <XMI.header> <XMI.documentation> <XMI.exporter>OpenCCM XMI generator</XMI.exporter> </XMI.documentation> </XMI.header> <XMI.content> . . . </XMI.content> </XMI> $
The generated OMG XMI 1.1 UML document will always declare the XMI 1.1 UML DTD it refers to.
If none has been specified from the command line, the XMI 1.1 document
will assume that the XMI 1.1 DTD is stored in the same directory as itself
and named
Using the $ ir3_xmi -dtd UML.dtd sample <?xml version="1.0" encoding="UTF-8"?> . . . <!DOCTYPE XMI SYSTEM "UML.dtd"> . . . $ Setting the correct location of the XMI 1.1 UML DTD is only required when the user wants to validate generated XMI 1.1 UML documents.
Currently, the XMI 1.1 UML DTD is located in the
Generating equivalent OMG IDL 2.4 mapping from the OpenCCM Interface Repository
The $ ir3_idl2 sample ir3_idl2 0.8.1: Generating OMG IDL2 for sample... ir3_idl2 0.8.1: OMG IDL2 generated in generated.idl and generated_local.idl. $
The $ cat generated.idl . . . #ifndef __SAMPLE__ #define __SAMPLE__ #include <Components.idl> #pragma prefix "ccm.objectweb.org" module sample { interface MyComponent; interface MyHomeExplicit; interface MyHomeImplicit; interface MyHome; interface MyComponent : ::Components::CCMObject { }; interface MyHomeExplicit : ::Components::CCMHome { }; interface MyHomeImplicit : ::Components::KeylessCCMHome { ::sample::MyComponent create() raises(::Components::CreateFailure); }; interface MyHome : ::sample::MyHomeExplicit, ::sample::MyHomeImplicit { }; }; #endif $
The $ cat generated_local.idl . . . #ifndef __SAMPLE__LOCAL #define __SAMPLE__LOCAL #include "generated.idl" #pragma prefix "ccm.objectweb.org" module sample { local interface CCM_MyComponent_Executor; local interface CCM_MyComponent; local interface CCM_MyComponent_Context; local interface CCM_MyHomeExplicit; local interface CCM_MyHomeImplicit; local interface CCM_MyHome; local interface CCM_MyComponent_Executor : ::Components::EnterpriseComponent { }; local interface CCM_MyComponent : ::sample::CCM_MyComponent_Executor { }; local interface CCM_MyComponent_Context : ::Components::CCMContext { }; local interface CCM_MyHomeExplicit : ::Components::HomeExecutorBase { }; local interface CCM_MyHomeImplicit { ::Components::EnterpriseComponent create() raises(::Components::CCMException); }; local interface CCM_MyHome : ::sample::CCM_MyHomeExplicit, ::sample::CCM_MyHomeImplicit { }; }; #endif $ See the CORBA Component Model Specification for more information about the equivalent OMG IDL 2.4 mapping.
The
To obtain usage and help information, do: $ ir3_idl2 --help Usage: ir3_idl2 [-h|--help] [--version] [--silent] [-o outputfile] [-i file] [-ipath file] declaration Options: -h, --help Display this information and exit --version Output version information and exit --silent Silent output messages -o outputfile Set the output file name, default is generated.idl -i file Add a #include <file> statement -ipath file Add a #include "file" statement where file must be the complete file path Description: Generate OMG IDL2 for a declaration from the OpenCCM Interface Repository $ To obtain version information, do: $ ir3_idl2 --version OpenCCM ir3_idl2 0.8.1 Copyright (C) 2000-2003 INRIA - USTL - LIFL - GOAL . . . $
By default, the $ ir3_idl2 --silent sample $
By default, the $ ir3_idl2 -o tmp.idl sample ir3_idl2 0.8.1: Generating OMG IDL2 for sample... ir3_idl2 0.8.1: OMG IDL2 generated in tmp.idl and tmp_local.idl. $ cat tmp.idl tmp_local.idl . . . $
Using the $ ir3_idl2 -i file1.idl sample . . . $ cat generated.idl . . . #include <file1.idl> . . . $
Using the $ ir3_idl2 -ipath file2.idl sample . . . $ cat generated.idl . . . #include "file2.idl" . . . $ Generating Java container code from the OpenCCM Interface Repository
The $ ir3_java ::sample File '.../MyComponentCCM.java' has been generated File '.../MyComponentSkeletonInterceptor.java' has been generated File '.../MyComponentStubInterceptor.java' has been generated File '.../MyComponentMonolithicWrapper.java' has been generated File '.../MyHomeCCM.java' has been generated File '.../MyHomeSkeletonInterceptor.java' has been generated File '.../MyHomeStubInterceptor.java' has been generated idl_to_mi 0.8.1: Generating MetaInformation implementations for sample... File '.../MyHome_homeMI.java' has been generated File '.../MyHome_interfaceMI.java' has been generated File '.../MyComponent_componentMI.java' has been generated idl_to_mi 0.8.1: MetaInformation for sample generated. $ The Java container code is generated in a directory associated to the generated Java package, e.g.: $ ls org/objectweb/ccm/sample MyComponentCCM.java MyHomeCCM.java MyComponent_componentMI.java MyHome_homeMI.java MyComponentMonolithicWrapper.java MyHome_interfaceMI.java MyComponentSkeletonInterceptor.java MyHomeSkeletonInterceptor.java MyComponentStubInterceptor.java MyHomeStubInterceptor.java $ See Generation and implementation rules for more information. Generating Java component business implementation skeletons from the OpenCCM Interface Repository
The $ ir3_jimpl ::sample File 'org/objectweb/ccm/sample/MyComponentMonolithicImpl.java' has been generated File 'org/objectweb/ccm/sample/MyHomeImpl.java' has been generated $ The Java container code is generated in a directory associated to the generated Java package, e.g.: $ ls org/objectweb/ccm/sample MyComponentMonolithicImpl.java MyHomeImpl.java $ These generated files could be used as starting point to implement components and homes, i.e. writting their functional part. See Generation and implementation rules for more information. Compiling OMG CIDL files and generating associated OMG IDL and Java files
The
$ cat test/sample.cidl // This file is the OMG CIDL example used in the OpenCCM User's Guide. #pragma prefix "ccm.objectweb.org" module sample { composition session SampleSessionComposition { home executor HomeImpl { implements MyHome; manages ComponentImpl; }; }; }; $ $ cidl_cif test/sample.cidl cidl_cif 0.8.1: Reading from file test/sample.cidl... cidl_cif 0.8.1: Preprocessing file test/sample.cidl... cidl_cif 0.8.1: File test/sample.cidl preprocessed. cidl_cif 0.8.1: Compiling test/sample.cidl file... cidl_cif 0.8.1: Compilation completed: 0 warning. cidl_cif 0.8.1: Generating CIF mapping from test/sample.cidl... cidl_cif 0.8.1: OMG IDL mapping generated in generated_cif.idl. cidl_cif 0.8.1: Generating CIF implementations... File '.../generated/.../HomeImpl.java' has been generated File '.../generated/.../ComponentImpl.java' has been generated cidl_cif 0.8.1: CIF implementations generated. cidl_cif 0.8.1: Generating CIDL dependencies... File '.../dependencies/SampleSessionComposition.dep' has been generated cidl_cif 0.8.1: CIDL dependencies generated. $
The $ cat generated_cif.idl . . . #ifndef __FILE_generated_cif_idl__ #define __FILE_generated_cif_idl__ #pragma prefix "ccm.objectweb.org" module sample { module SampleSessionComposition { local interface CIF_HomeImpl; local interface CIF_SegmentBase; local interface CIF_ComponentImpl; local interface CIF_HomeImpl : ::sample::CCM_MyHome { }; local interface CIF_SegmentBase { ::sample::CCM_MyComponent_Context get_context(); ::sample::SampleSessionComposition::CIF_ComponentImpl get_main_segment(); }; local interface CIF_ComponentImpl : ::sample::SampleSessionComposition::CIF_SegmentBase, ::Components::ExecutorLocator, ::Components::SessionComponent, ::sample::CCM_MyComponent_Executor { }; }; }; #endif $
The generated OMG IDL interfaces are implemented by the generated $ ls generated/org/objectweb/ccm/sample/SampleSessionComposition/ ComponentImpl.java HomeImpl.java $ These generated classes are the home and component executor skeletons which must be inherited by the business implementation classes.
The $ cat dependencies/SampleSessionComposition.dep # ================================================================== # Package for Composition : # ::sample::SampleSessionComposition # ================================================================== # ================================================================== # Component ::sample::SampleSessionComposition::HomeImpl::ComponentImpl # ================================================================== org/objectweb/ccm/sample/CCM_MyComponent.class org/objectweb/ccm/sample/CCM_MyComponentHelper.class org/objectweb/ccm/sample/CCM_MyComponentHolder.class org/objectweb/ccm/sample/CCM_MyComponentOperations.class org/objectweb/ccm/sample/CCM_MyComponent_Context.class org/objectweb/ccm/sample/CCM_MyComponent_ContextHelper.class org/objectweb/ccm/sample/CCM_MyComponent_ContextHolder.class org/objectweb/ccm/sample/CCM_MyComponent_ContextOperations.class org/objectweb/ccm/sample/CCM_MyComponent_Executor.class org/objectweb/ccm/sample/CCM_MyComponent_ExecutorHelper.class org/objectweb/ccm/sample/CCM_MyComponent_ExecutorHolder.class org/objectweb/ccm/sample/CCM_MyComponent_ExecutorOperations.class org/objectweb/ccm/sample/MyComponent.class org/objectweb/ccm/sample/MyComponentCCM.class org/objectweb/ccm/sample/MyComponentHelper.class org/objectweb/ccm/sample/MyComponentHolder.class org/objectweb/ccm/sample/MyComponentMonolithicWrapper.class org/objectweb/ccm/sample/MyComponentOperations.class org/objectweb/ccm/sample/MyComponentPOA*.class org/objectweb/ccm/sample/MyComponentPOATie.class org/objectweb/ccm/sample/MyComponentSkeletonInterceptor.class org/objectweb/ccm/sample/MyComponentStubInterceptor.class org/objectweb/ccm/sample/MyComponent_componentMI.class org/objectweb/ccm/sample/MyComponent_interfaceMI.class org/objectweb/ccm/sample/SampleSessionComposition/CIF_ComponentImpl.class org/objectweb/ccm/sample/SampleSessionComposition/CIF_ComponentImplHelper.class org/objectweb/ccm/sample/SampleSessionComposition/CIF_ComponentImplHolder.class org/objectweb/ccm/sample/SampleSessionComposition/CIF_ComponentImplOperations.class org/objectweb/ccm/sample/SampleSessionComposition/CIF_SegmentBase.class org/objectweb/ccm/sample/SampleSessionComposition/CIF_SegmentBaseHelper.class org/objectweb/ccm/sample/SampleSessionComposition/CIF_SegmentBaseHolder.class org/objectweb/ccm/sample/SampleSessionComposition/CIF_SegmentBaseOperations.class org/objectweb/ccm/sample/SampleSessionComposition/ComponentImpl.class org/objectweb/ccm/sample/_MyComponentStub.class ... $
The
To obtain usage and help information, do: $ cidl_cif --help Usage: cidl_cif [-h|--help] [--version] [--silent] [--cpp path] [-P] [-DNAME|-DNAME=DEF] [-UNAME] [-IDIR] [-o outputfile] [-ipath file] [-d outputdir] [-dep dependencies_dir] [--noprefix aprefix] file Options: -h, --help Display this information and exit --version Output version information and exit --silent Silent output messages --cpp path Set the path to the external C preprocessor used -P Inhibit generation of #-lines with line-number information -DNAME, -DNAME=DEF Define NAME as DEF, default is 1 -UNAME Remove any definition for NAME -IDIR Put DIR in the include file search path -o outputfile Set the output file name, default is generated_cif.idl -ipath file Add a #include "file" statement where file must be the complete file path -d outputdir Generate Java implementations into directory <outputdir>, default is generated/ -dep dependencies_dir Generate CIDL class dependencies into directory <dependencies_dir>, default is dependencies/ --noprefix aprefix CIDL class dependencies starting with <aprefix> will not be included. Description: Compile an OMG CIDL file and generate its associated: - local CIF interfaces - Java component and home executor skeletons - class dependencies files $ To obtain version information, do: $ cidl_cif --version OpenCCM cidl_cif 0.8.1 Copyright (C) 2000-2003 INRIA - USTL - LIFL - GOAL . . . $
By default, the $ cidl_cif --silent test/sample.cidl $
By default, the $ cidl_cif --cpp /usr/bin/cpp test/sample.cidl . . . $
Let's note that the standard $ cidl_cif -DFOO -Itest test/sample.cidl . . . $
When some preprocessing options are often used, e.g.
By default, the // An OMG CIDL file. #ifdef __OMG_IDL_3__ // This file is compiled by an OMG IDL 3.x compliant compiler. import CORBA; #else // This file is compiled by a non OMG IDL 3.x compliant compiler. #include <CORBA.idl> #endif // ...
By default, the $ cidl_cif -o mapping.idl test/sample.cidl . . . $ cat mapping.idl . . . $
Using the $ cidl_cif -ipath file.idl test/sample.cidl . . . $ cat generated_cif.idl . . . #include "file.idl" . . . $
By default, the $ cidl_cif -d mapping test/sample.cidl . . . $ ls mapping/org/objectweb/ccm/sample/SampleSessionComposition/ ComponentImpl.java HomeImpl.java $
By default, the $ cidl_cif -dep sample_dep test/sample.cidl . . . $ ls sample_dep/ SampleSessionComposition.dep $
By default, the $ cidl_cif --noprefix org/objectweb/ccm/sample/SampleSessionComposition/ test/sample.cidl . . . $ cat SampleSessionComposition.dep # ================================================================== # Package for Composition : # ::sample::SampleSessionComposition # ================================================================== # ================================================================== # Component ::sample::SampleSessionComposition::HomeImpl::ComponentImpl # ================================================================== org/objectweb/ccm/sample/CCM_MyComponent.class org/objectweb/ccm/sample/CCM_MyComponentHelper.class org/objectweb/ccm/sample/CCM_MyComponentHolder.class org/objectweb/ccm/sample/CCM_MyComponentOperations.class org/objectweb/ccm/sample/CCM_MyComponent_Context.class org/objectweb/ccm/sample/CCM_MyComponent_ContextHelper.class org/objectweb/ccm/sample/CCM_MyComponent_ContextHolder.class org/objectweb/ccm/sample/CCM_MyComponent_ContextOperations.class org/objectweb/ccm/sample/CCM_MyComponent_Executor.class org/objectweb/ccm/sample/CCM_MyComponent_ExecutorHelper.class org/objectweb/ccm/sample/CCM_MyComponent_ExecutorHolder.class org/objectweb/ccm/sample/CCM_MyComponent_ExecutorOperations.class org/objectweb/ccm/sample/MyComponent.class org/objectweb/ccm/sample/MyComponentCCM.class org/objectweb/ccm/sample/MyComponentHelper.class org/objectweb/ccm/sample/MyComponentHolder.class org/objectweb/ccm/sample/MyComponentMonolithicWrapper.class org/objectweb/ccm/sample/MyComponentOperations.class org/objectweb/ccm/sample/MyComponentPOA*.class org/objectweb/ccm/sample/MyComponentPOATie.class org/objectweb/ccm/sample/MyComponentSkeletonInterceptor.class org/objectweb/ccm/sample/MyComponentStubInterceptor.class org/objectweb/ccm/sample/MyComponent_componentMI.class org/objectweb/ccm/sample/MyComponent_interfaceMI.class org/objectweb/ccm/sample/_MyComponentStub.class ... $ Warning: The good way to generate CIF mapping is as following:
OMG PSDL and CIDL files should have an Compiling specifications and regenerating the OMG CIDL part only
The $ cidl test/sample.cidl cidl 0.8.1: Reading from file test/sample.cidl... cidl 0.8.1: Preprocessing file test/sample.cidl... cidl 0.8.1: File test/sample.cidl preprocessed. cidl 0.8.1: Compiling test/sample.cidl file... cidl 0.8.1: Compilation completed: 0 warning. cidl 0.8.1: Generating CIDL from test/sample.cidl... cidl 0.8.1: CIDL generated in generated.cidl. $
By default, the $ cat generated.cidl . . . #pragma prefix "ccm.objectweb.org" module sample { composition session SampleSessionComposition { home executor HomeImpl { implements ::sample::MyHome; manages ComponentImpl; }; }; }; $
The
To obtain usage and help information, do: $ cidl --help Usage: cidl [-h|--help] [--version] [--silent] [--cpp path] [-P] [-DNAME|-DNAME=DEF] [-UNAME] [-IDIR] [-o outputfile] file Options: -h, --help Display this information and exit --version Output version information and exit --silent Silent output messages --cpp path Set the path to the external C preprocessor used -P Inhibit generation of #-lines with line-number information -DNAME, -DNAME=DEF Define NAME as DEF, default is 1 -UNAME Remove any definition for NAME -IDIR Put DIR in the include file search path -o outputfile Set the output file name, default is generated.cidl Description: Compile a file and regenerate the OMG CIDL part only $ To obtain version information, do: $ cidl --version OpenCCM cidl 0.8.1 Copyright (C) 2000-2003 INRIA - USTL - LIFL - GOAL . . . $
By default, the $ cidl --silent test/sample.cidl $
By default, the $ cidl --cpp /usr/bin/cpp test/sample.cidl . . . $
Let's note that the standard $ cidl -DFOO -Itest test/sample.cidl . . . $
When some preprocessing options are often used, e.g.
By default, the // An OMG CIDL file. #ifdef __OMG_IDL_3__ // This file is compiled by an OMG IDL 3.x compliant compiler. import CORBA; #else // This file is compiled by a non OMG IDL 3.x compliant compiler. #include <CORBA.idl> #endif // ...
By default, the $ cidl -o tmp.cidl test/sample.cidl . . . $ cat tmp.cidl . . . $ Generating Java business component implementation skeletons from OMG CIDL
The $ cif_jimpl test/sample.cidl cif_jimpl 0.8.1: Reading from file test/sample.cidl... cif_jimpl 0.8.1: Preprocessing file test/sample.cidl... cif_jimpl 0.8.1: File test/sample.cidl preprocessed. cif_jimpl 0.8.1: Compiling test/sample.cidl file... cif_jimpl 0.8.1: Compilation completed: 0 warning. File '.../generated/.../MyHomeImpl.java' has been generated File '.../generated/.../MyComponentImpl.java' has been generated $ These generated files could be used as starting point to implement components and homes, i.e. writting their functional part. $ ls generated/org/objectweb/ccm/sample/SampleSessionComposition/ MyComponentImpl.java MyHomeImpl.java $
The
To obtain usage and help information, do: $ cif_jimpl --help Usage: cif_jimpl [-h|--help] [--version] [--silent] [--cpp path] [-P] [-DNAME|-DNAME=DEF] [-UNAME] [-IDIR] [-d outputdir] file Options: -h, --help Display this information and exit --version Output version information and exit --silent Silent output messages --cpp path Set the path to the external C preprocessor used -P Inhibit generation of #-lines with line-number information -DNAME, -DNAME=DEF Define NAME as DEF, default is 1 -UNAME Remove any definition for NAME -IDIR Put DIR in the include file search path -d outputdir Generate Java implementations templates into directory <outputdir>, default is generated/ Description: Compile an OMG CIDL file and generate its associated Java implementation templates. $ To obtain version information, do: $ cif_jimpl --version OpenCCM cif_jimpl 0.8.1 Copyright (C) 2000-2003 INRIA - USTL - LIFL - GOAL . . . $
By default, the $ cif_jimpl --silent test/sample.cidl $
By default, the $ cif_jimpl --cpp /usr/bin/cpp test/sample.cidl . . . $
Let's note that the standard $ cif_jimpl -DFOO -Itest test/sample.cidl . . . $
When some preprocessing options are often used, e.g.
By default, the // An OMG CIDL file. #ifdef __OMG_IDL_3__ // This file is compiled by an OMG IDL 3.x compliant compiler. import CORBA; #else // This file is compiled by a non OMG IDL 3.x compliant compiler. #include <CORBA.idl> #endif // ...
By default, the $ cif_jimpl -d mapping test/sample.cidl . . . $ ls mapping/org/objectweb/ccm/sample/SampleSessionComposition/ MyComponentImpl.java MyHomeImpl.java $ Warning: The good way to generate CIF implemention templates is as following:
OMG PSDL and CIDL files should have an Compiling OMG PSDL files and generating associated Java mapping implementations
The
$ cat test/sample.psdl // This file is the OMG PSDL example used in the OpenCCM User's Guide. #pragma prefix "ccm.objectweb.org" module sample { storagetype ST {}; storagehome SH of ST {}; }; $ $ psdl_java test/sample.psdl psdl_java 0.8.1: Reading from file test/sample.psdl... psdl_java 0.8.1: Preprocessing file test/sample.psdl... psdl_java 0.8.1: File test/sample.psdl preprocessed. psdl_java 0.8.1: Compiling test/sample.psdl file... psdl_java 0.8.1: Compilation completed: 0 warning. psdl_java 0.8.1: Generating Java mapping from test/sample.psdl ... File '.../generated/org/objectweb/ccm/sample/sample.jdo' has been generated File '.../generated/org/objectweb/ccm/sample/ST.java' has been generated File '.../generated/org/objectweb/ccm/sample/SH.java' has been generated psdl_java 0.8.1: Java mapping generated. $
The generated classes are the Java mapping associated to the OMG PSDL definitions.
The $ ls generated/org/objectweb/ccm/sample/ sample.jdo SH.java ST.java $
The
To obtain usage and help information, do: $ psdl_java --help Usage: psdl_java [-h|--help] [--version] [--silent] [--cpp path] [-P] [-DNAME|-DNAME=DEF] [-UNAME] [-IDIR] [-d outputdir] file [-jdoprop jdo_properties_file] Options: -h, --help Display this information and exit --version Output version information and exit --silent Silent output messages --cpp path Set the path to the external C preprocessor used -P Inhibit generation of #-lines with line-number information -DNAME, -DNAME=DEF Define NAME as DEF, default is 1 -UNAME Remove any definition for NAME -IDIR Put DIR in the include file search path -d outputdir Generate Java mapping in directory <outputdir>, default is generated/ -jdoprop jdo_properties_file Get user classes definition from the properties file <jdo_properties_file> default is "jdouser.properties" Description: Compile an OMG PSDL file and generate its associated Java mapping $ To obtain version information, do: $ psdl_java --version OpenCCM psdl_java 0.8.1 Copyright (C) 2000-2003 INRIA - USTL - LIFL - GOAL . . . $
By default, the $ psdl_java --silent test/sample.psdl $
By default, the $ psdl_java --cpp /usr/bin/cpp test/sample.psdl . . . $
Let's note that the standard $ psdl_java -DFOO -Itest test/sample.psdl . . . $
When some preprocessing options are often used, e.g.
By default, the // An OMG PSDL file. #ifdef __OMG_IDL_3__ // This file is compiled by an OMG IDL 3.x compliant compiler. import CORBA; #else // This file is compiled by a non OMG IDL 3.x compliant compiler. #include <CORBA.idl> #endif // ...
By default, the $ psdl_java -d mapping test/sample.psdl . . . $ ls mapping/org/objectweb/ccm/sample/ sample.jdo SH.java ST.java $
When user classes inherit from generated classes for OMG PSDL,
this is required with JDO to enhance these user classes.
The my_user_class = its_super_class
This means that
Then the Compiling specifications and regenerating the OMG PSDL part only
The $ psdl test/sample.psdl psdl 0.8.1: Reading from file test/sample.psdl... psdl 0.8.1: Preprocessing file test/sample.psdl... psdl 0.8.1: File test/sample.psdl preprocessed. psdl 0.8.1: Compiling test/sample.psdl file... psdl 0.8.1: Compilation completed: 0 warning. psdl 0.8.1: Generating PSDL from test/sample.psdl... psdl 0.8.1: PSDL generated in generated.psdl. $
By default, the $ cat generated.psdl . . . #pragma prefix "ccm.objectweb.org" module sample { storagetype ST; storagetype ST { }; storagehome SH of ::sample::ST { }; }; $
The
To obtain usage and help information, do: $ psdl --help Usage: psdl [-h|--help] [--version] [--silent] [--cpp path] [-P] [-DNAME|-DNAME=DEF] [-UNAME] [-IDIR] [-o outputfile] file Options: -h, --help Display this information and exit --version Output version information and exit --silent Silent output messages --cpp path Set the path to the external C preprocessor used -P Inhibit generation of #-lines with line-number information -DNAME, -DNAME=DEF Define NAME as DEF, default is 1 -UNAME Remove any definition for NAME -IDIR Put DIR in the include file search path -o outputfile Set the output file name, default is generated.psdl Description: Compile a file and regenerate the OMG PSDL part only $ To obtain version information, do: $ psdl --version OpenCCM psdl 0.8.1 Copyright (C) 2000-2003 INRIA - USTL - LIFL - GOAL . . . $
By default, the $ psdl --silent test/sample.psdl $
By default, the $ psdl --cpp /usr/bin/cpp test/sample.psdl . . . $
Let's note that the standard $ psdl -DFOO -Itest test/sample.psdl . . . $
When some preprocessing options are often used, e.g.
By default, the // An OMG PSDL file. #ifdef __OMG_IDL_3__ // This file is compiled by an OMG IDL 3.x compliant compiler. import CORBA; #else // This file is compiled by a non OMG IDL 3.x compliant compiler. #include <CORBA.idl> #endif // ...
By default, the $ psdl -o tmp.psdl test/sample.psdl . . . $ cat tmp.psdl . . . $ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Copyright © 1999-2005, ObjectWeb Consortium | contact | webmaster | Last modified at 2005-07-07 02:04 PM |