[openrtm-commit:00415] r479 - in trunk/OpenRTM-aist-Python: . OpenRTM_aist OpenRTM_aist/docs OpenRTM_aist/examples/AutoTest OpenRTM_aist/examples/ExtTrigger OpenRTM_aist/examples/MobileRobotCanvas OpenRTM_aist/examples/NXTRTC OpenRTM_aist/examples/SeqIO OpenRTM_aist/examples/SimpleIO OpenRTM_aist/examples/SimpleService OpenRTM_aist/examples/Slider_and_Motor OpenRTM_aist/examples/TkLRFViewer OpenRTM_aist/ext OpenRTM_aist/ext/sdo OpenRTM_aist/ext/sdo/observer OpenRTM_aist/ext/sdo/observer/test OpenRTM_aist/test OpenRTM_aist/utils/rtc-template OpenRTM_aist/utils/rtcd OpenRTM_aist/utils/rtm-naming installer installer/OpenRTP installer/install_scripts

openrtm @ openrtm.org openrtm @ openrtm.org
2011年 9月 21日 (水) 16:57:39 JST


Author: kurihara
Date: 2011-09-21 16:57:38 +0900 (Wed, 21 Sep 2011)
New Revision: 479

Added:
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ComponentActionListener.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ConfigurationListener.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/PortConnectListener.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/SdoServiceAdmin.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/SdoServiceConsumerBase.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/SdoServiceProviderBase.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/AutoTest/AutoTestComposite.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/AutoTest/gen_data.bat
   trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/AutoTest/rtc_handle10_11.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/NXTRTC/NXTBrick20.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/NXTRTC/NXTRTC20.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/NXTRTC/NXTRTC20_callback.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/__init__.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/__init__.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/COCTestRTC.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/ComponentObserver.idl
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/ComponentObserverConsumer.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/__init__.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/doxygen_idlref.conf
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/rtc.conf
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/setup.bat
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/setup.sh
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/ComponentObserverProvider.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/__init__.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/setup.bat
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/setup.sh
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/test_ComponentObserverConsumer.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/BasicDataType.idl
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/ComponentActionListenerTestComp.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/ComponentObserver.idl
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/DataPort.idl
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/MySdoServiceConsumer.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/OpenRTM.idl
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/RTC.idl
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/SDOPackage.idl
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_ComponentActionListener.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_ConfigurationListener.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_PortConnectListener.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_SdoServiceAdmin.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/utils/rtcd/README
   trunk/OpenRTM-aist-Python/installer/OpenRTM-aist-Python.wxs.yaml.in
   trunk/OpenRTM-aist-Python/installer/install_scripts/
   trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install042_debian.sh
   trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install042_fedora.sh
   trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install042_ubuntu.sh
   trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install042_vine.sh
   trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install100_debian.sh
   trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install100_fedora.sh
   trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install100_ubuntu.sh
   trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install100_vine.sh
   trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_debian.sh
   trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_fedora.sh
   trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_python_debian.sh
   trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_python_fedora.sh
   trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_python_ubuntu.sh
   trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_python_vine.sh
   trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_ubuntu.sh
   trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_vine.sh
Removed:
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/__init__.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/__init__.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/COCTestRTC.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/ComponentObserver.idl
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/ComponentObserverConsumer.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/__init__.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/doxygen_idlref.conf
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/rtc.conf
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/setup.bat
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/setup.sh
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/ComponentObserverProvider.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/__init__.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/setup.bat
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/setup.sh
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/test_ComponentObserverConsumer.py
   trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install042_debian.sh
   trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install042_fedora.sh
   trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install042_ubuntu.sh
   trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install042_vine.sh
   trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install100_debian.sh
   trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install100_fedora.sh
   trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install100_ubuntu.sh
   trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install100_vine.sh
   trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_debian.sh
   trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_fedora.sh
   trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_python_debian.sh
   trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_python_fedora.sh
   trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_python_ubuntu.sh
   trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_python_vine.sh
   trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_ubuntu.sh
   trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_vine.sh
Modified:
   trunk/OpenRTM-aist-Python/
   trunk/OpenRTM-aist-Python/MANIFEST.in
   trunk/OpenRTM-aist-Python/OpenRTM_aist/BufferStatus.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/CdrRingBuffer.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ConfigAdmin.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ConnectorBase.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ConnectorListener.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/CorbaNaming.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/CorbaPort.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/DataPortStatus.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/DefaultConfiguration.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ECFactory.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ExecutionContextBase.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ExtTrigExecutionContext.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/Factory.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/GlobalFactory.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/Guard.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/InPort.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/InPortBase.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/InPortConnector.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/InPortCorbaCdrConsumer.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/InPortCorbaCdrProvider.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/InPortPullConnector.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/InPortPushConnector.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/Listener.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/Manager.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ManagerConfig.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ManagerServant.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ModuleManager.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/NVUtil.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/NamingManager.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/NumberingPolicy.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/ObjectManager.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/OutPort.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/OutPortBase.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/OutPortConnector.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/OutPortCorbaCdrConsumer.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/OutPortCorbaCdrProvider.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/OutPortPullConnector.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/OutPortPushConnector.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/PeriodicECSharedComposite.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/PeriodicExecutionContext.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/PeriodicTask.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/PortAdmin.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/PortBase.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/PortCallBack.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/PortProfileHelper.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/Process.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/PublisherNew.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/PublisherPeriodic.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/RTObject.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/RingBuffer.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/SdoConfiguration.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/SdoOrganization.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/SdoService.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/StateMachine.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/SystemLogger.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/Task.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/TimeMeasure.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/TimeValue.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/Timer.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/Typename.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/__init__.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/docs/Doxyfile_en
   trunk/OpenRTM-aist-Python/OpenRTM_aist/docs/Doxyfile_jp
   trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/AutoTest/AutoTestOut.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/AutoTest/ConnectTest.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/ExtTrigger/Connector.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/ExtTrigger/run.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/MobileRobotCanvas/TkMobileRobotSimulator.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/MobileRobotCanvas/rtc.conf
   trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/SeqIO/SeqIn.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/SeqIO/SeqOut.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/SeqIO/gen.bat
   trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/SeqIO/gen.sh
   trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/SimpleIO/ConsoleOut.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/SimpleIO/run.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/SimpleService/MyService.idl
   trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/SimpleService/run.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/Slider_and_Motor/run.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/TkLRFViewer/TkLRFViewer.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/hoge.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/rtc.conf
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_All.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_BufferBase.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_CORBA_SeqUtil.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_ConfigAdmin.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_ConnectorListener.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_CorbaNaming.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_CorbaPort.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_ECFactory.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_ExtTrigExecutionContext.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_Factory.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_InPort.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_InPortBase.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_InPortProvider.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_Listener.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_Manager.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_ManagerConfig.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_ManagerServant.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_ModuleManager.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_NVUtil.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_NumberingPolicy.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_ObjectManager.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_OutPort.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_OutPortBase.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_OutPortProvider.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_PeriodicExecutionContext.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_PortAdmin.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_PortBase.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_Properties.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_PublisherNew.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_PublisherPeriodic.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_RTCUtil.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_RTObject.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_RingBuffer.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_SdoConfiguration.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_SdoOrganization.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_SdoService.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_StateMachine.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_StringUtil.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_SystemLogger.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_TimeValue.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_Timer.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/utils/rtc-template/
   trunk/OpenRTM-aist-Python/OpenRTM_aist/utils/rtc-template/rtc-template.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/utils/rtcd/rtc.conf
   trunk/OpenRTM-aist-Python/OpenRTM_aist/utils/rtcd/rtcd.py
   trunk/OpenRTM-aist-Python/OpenRTM_aist/utils/rtm-naming/
   trunk/OpenRTM-aist-Python/OpenRTM_aist/version.py
   trunk/OpenRTM-aist-Python/installer/OpenRTM-aist-Python.wxs.in
   trunk/OpenRTM-aist-Python/installer/OpenRTMpywxs.py
   trunk/OpenRTM-aist-Python/installer/OpenRTP/OpenRTP_inc.wxs
   trunk/OpenRTM-aist-Python/installer/OpenRTP/OpenRTP_inc.wxs.in
   trunk/OpenRTM-aist-Python/installer/WixUI_Mondo_RTM.wxs
   trunk/OpenRTM-aist-Python/installer/WixUI_en-us.wxl
   trunk/OpenRTM-aist-Python/installer/WixUI_hu-hu.wxl
   trunk/OpenRTM-aist-Python/installer/WixUI_ja-jp.wxl
   trunk/OpenRTM-aist-Python/installer/WixUI_ko-kr.wxl
   trunk/OpenRTM-aist-Python/installer/WixUI_zh-tw.wxl
   trunk/OpenRTM-aist-Python/installer/build.cmd
   trunk/OpenRTM-aist-Python/installer/makewxs.py
   trunk/OpenRTM-aist-Python/installer/uuid.py
   trunk/OpenRTM-aist-Python/installer/yat.py
   trunk/OpenRTM-aist-Python/setup.py
Log:
r478 merged.


Property changes on: trunk/OpenRTM-aist-Python
___________________________________________________________________
Added: svn:mergeinfo
   + /branches/RELENG_1_0/OpenRTM-aist-Python:345-404
/branches/RELENG_1_1/OpenRTM-aist-Python:396-478

Modified: trunk/OpenRTM-aist-Python/MANIFEST.in
===================================================================
--- trunk/OpenRTM-aist-Python/MANIFEST.in	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/MANIFEST.in	2011-09-21 07:57:38 UTC (rev 479)
@@ -7,6 +7,8 @@
 recursive-include OpenRTM_aist/RTM_IDL *.py *.idl
 recursive-include OpenRTM_aist/utils *.py *.idl *.conf
 recursive-include OpenRTM_aist/docs *.css *.gif *.png *.html *.hhc *.hhk *.hhp
+include OpenRTM_aist/ext/sdo/observer/setup.bat
+include OpenRTM_aist/ext/sdo/observer/test/setup.bat
 include OpenRTM_aist/utils/rtcd/rtcd_python
 include OpenRTM_aist/utils/rtcd/rtcd_python.bat
 include OpenRTM_aist/utils/rtcd/rtcd_python.exe

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/BufferStatus.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/BufferStatus.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/BufferStatus.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -19,20 +19,23 @@
 
 
 class BufferStatus:
-    BUFFER_OK            = 0
-    BUFFER_ERROR         = 1
-    BUFFER_FULL          = 2
-    BUFFER_EMPTY         = 3
-    NOT_SUPPORTED        = 4
-    TIMEOUT              = 5
-    PRECONDITION_NOT_MET = 6
+  """
+  """
 
-    def toString(self, status):
-        str = ["BUFFER_OK",
-               "BUFFER_ERROR",
-               "BUFFER_FULL",
-               "BUFFER_EMPTY",
-               "NOT_SUPPORTED",
-               "TIMEOUT",
-               "PRECONDITION_NOT_MET"]
-        return str[status]
+  BUFFER_OK            = 0
+  BUFFER_ERROR         = 1
+  BUFFER_FULL          = 2
+  BUFFER_EMPTY         = 3
+  NOT_SUPPORTED        = 4
+  TIMEOUT              = 5
+  PRECONDITION_NOT_MET = 6
+
+  def toString(self, status):
+    str = ["BUFFER_OK",
+           "BUFFER_ERROR",
+           "BUFFER_FULL",
+           "BUFFER_EMPTY",
+           "NOT_SUPPORTED",
+           "TIMEOUT",
+           "PRECONDITION_NOT_MET"]
+    return str[status]

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/CdrRingBuffer.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/CdrRingBuffer.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/CdrRingBuffer.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -20,12 +20,14 @@
 from OpenRTM_aist import *
 
 class CdrRingBuffer(OpenRTM_aist.RingBuffer):
-    def __init__(self):
-        OpenRTM_aist.RingBuffer.__init__(self)
-        pass
+  """
+  """
+  def __init__(self):
+    OpenRTM_aist.RingBuffer.__init__(self)
+    pass
 
 
 def CdrRingBufferInit():
-    OpenRTM_aist.CdrBufferFactory.instance().addFactory("ring_buffer",
-                                                        OpenRTM_aist.CdrRingBuffer,
-                                                        OpenRTM_aist.Delete)
+  OpenRTM_aist.CdrBufferFactory.instance().addFactory("ring_buffer",
+                                                      OpenRTM_aist.CdrRingBuffer,
+                                                      OpenRTM_aist.Delete)

Copied: trunk/OpenRTM-aist-Python/OpenRTM_aist/ComponentActionListener.py (from rev 478, branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/ComponentActionListener.py)
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/ComponentActionListener.py	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/ComponentActionListener.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,1140 @@
+#!/usr/bin/env python
+# -*- coding: euc-jp -*-
+
+##
+# @file ComponentActionListener.py
+# @brief component action listener class
+# @date $Date$
+# @author Noriaki Ando <n-ando at aist.go.jp> and Shinji Kurihara
+#
+# Copyright (C) 2011
+#     Intelligent Systems Research Institute,
+#     National Institute of
+#         Advanced Industrial Science and Technology (AIST), Japan
+#     All rights reserved.
+
+
+#============================================================
+
+##
+# @if jp
+# @brief PreComponentActionListener のタイプ
+#
+# - PRE_ON_INITIALIZE:    onInitialize 直前
+# - PRE_ON_FINALIZE:      onFinalize 直前
+# - PRE_ON_STARTUP:       onStartup 直前
+# - PRE_ON_SHUTDOWN:      onShutdown 直前
+# - PRE_ON_ACTIVATED:     onActivated 直前
+# - PRE_ON_DEACTIVATED:   onDeactivated 直前
+# - PRE_ON_ABORTING:      onAborted 直前
+# - PRE_ON_ERROR:         onError 直前
+# - PRE_ON_RESET:         onReset 直前
+# - PRE_ON_EXECUTE:       onExecute 直前
+# - PRE_ON_STATE_UPDATE:  onStateUpdate 直前
+# - PRE_ON_RATE_CHANGED:  onRateChanged 直前
+#
+# @else
+# @brief The types of ConnectorDataListener
+# 
+# @endif
+class PreComponentActionListenerType:
+  """
+  """
+
+  def __init__(self):
+    pass
+
+  PRE_ON_INITIALIZE                 = 0
+  PRE_ON_FINALIZE                   = 1
+  PRE_ON_STARTUP                    = 2
+  PRE_ON_SHUTDOWN                   = 3
+  PRE_ON_ACTIVATED                  = 4
+  PRE_ON_DEACTIVATED                = 5
+  PRE_ON_ABORTING                   = 6
+  PRE_ON_ERROR                      = 7
+  PRE_ON_RESET                      = 8
+  PRE_ON_EXECUTE                    = 9
+  PRE_ON_STATE_UPDATE               = 10
+  PRE_ON_RATE_CHANGED               = 11
+  PRE_COMPONENT_ACTION_LISTENER_NUM = 12
+
+
+##
+# @if jp
+# @class PreComponentActionListener クラス
+# @brief PreComponentActionListener クラス
+#
+# OMG RTC仕様で定義されている以下のコンポーネントアクショントについ
+# て、
+#
+# - on_initialize()
+# - on_finalize()
+# - on_startup()
+# - on_shutdown()
+# - on_activated
+# - on_deactivated()
+# - on_aborted()
+# - on_error()
+# - on_reset()
+# - on_execute()
+# - on_state_update()
+# - on_rate_changed()
+#
+# 各アクションに対応するユーザーコードが呼ばれる直前のタイミング
+# でコールされるリスナクラスの基底クラス。
+#
+# - PRE_ON_INITIALIZE:
+# - PRE_ON_FINALIZE:
+# - PRE_ON_STARTUP:
+# - PRE_ON_SHUTDOWN:
+# - PRE_ON_ACTIVATED:
+# - PRE_ON_DEACTIVATED:
+# - PRE_ON_ABORTING:
+# - PRE_ON_ERROR:
+# - PRE_ON_RESET:
+# - PRE_IN_EXECUTE:
+# - PRE_ON_STATE_UPDATE:
+# - PRE_ON_RATE_CHANGED:
+#
+# @else
+# @class PreComponentActionListener class
+# @brief PreComponentActionListener class
+#
+# This class is abstract base class for listener classes that
+# provides callbacks for various events in rtobject.
+#
+# @endif
+class PreComponentActionListener:
+  """
+  """
+
+  def __init__(self):
+    pass
+
+  ##
+  # @if jp
+  #
+  # @brief PreComponentActionListenerType を文字列に変換
+  #
+  # PreComponentActionListenerType を文字列に変換する
+  #
+  # @param type 変換対象 PreComponentActionListenerType
+  #
+  # @return 文字列変換結果
+  #
+  # @else
+  #
+  # @brief Convert PreComponentActionListenerType into the string.
+  #
+  # Convert PreComponentActionListenerType into the string.
+  #
+  # @param type The target PreComponentActionListenerType for transformation
+  #
+  # @return Trnasformation result of string representation
+  #
+  # @endif
+  # static const char* toString(PreComponentActionListenerType type) 
+  def toString(type):
+    typeString = ["PRE_ON_INITIALIZE",
+                  "PRE_ON_FINALIZE",
+                  "PRE_ON_STARTUP",
+                  "PRE_ON_SHUTDOWN",
+                  "PRE_ON_ACTIVATED",
+                  "PRE_ON_DEACTIVATED",
+                  "PRE_ON_ABORTING",
+                  "PRE_ON_ERROR",
+                  "PRE_ON_RESET",
+                  "PRE_ON_EXECUTE",
+                  "PRE_ON_STATE_UPDATE",
+                  "PRE_ON_RATE_CHANGED",
+                  "PRE_COMPONENT_ACTION_LISTENER_NUM"]
+    if type < PreComponentActionListenerType.PRE_COMPONENT_ACTION_LISTENER_NUM:
+      return typeString[type]
+
+    return ""
+  toString = staticmethod(toString)
+
+  ##
+  # @if jp
+  # @brief デストラクタ
+  # @else
+  # @brief Destructor
+  # @endif
+  def __del__(self):
+    pass
+
+  ##
+  # @if jp
+  #
+  # @brief 仮想コールバック関数
+  #
+  # PreComponentActionListener のコールバック関数
+  #
+  # @else
+  #
+  # @brief Virtual Callback function
+  #
+  # This is a the Callback function for PreComponentActionListener.
+  #
+  # @endif
+  # virtual void operator()(UniqueId ec_id) = 0;
+  def __call__(self, ec_id):
+    pass
+
+
+#============================================================
+
+##
+# @if jp
+# @brief PostCompoenntActionListener のタイプ
+#
+# - POST_ON_INITIALIZE:
+# - POST_ON_FINALIZE:
+# - POST_ON_STARTUP:
+# - POST_ON_SHUTDOWN:
+# - POST_ON_ACTIVATED:
+# - POST_ON_DEACTIVATED:
+# - POST_ON_ABORTING:
+# - POST_ON_ERROR:
+# - POST_ON_RESET:
+# - POST_ON_EXECUTE:
+# - POST_ON_STATE_UPDATE:
+# - POST_ON_RATE_CHANGED:
+#
+# @else
+# @brief The types of ConnectorDataListener
+# 
+# @endif
+class PostComponentActionListenerType:
+  """
+  """
+  def __init__(self):
+    pass
+
+  POST_ON_INITIALIZE                 = 0
+  POST_ON_FINALIZE                   = 1
+  POST_ON_STARTUP                    = 2
+  POST_ON_SHUTDOWN                   = 3
+  POST_ON_ACTIVATED                  = 4
+  POST_ON_DEACTIVATED                = 5
+  POST_ON_ABORTING                   = 6
+  POST_ON_ERROR                      = 7
+  POST_ON_RESET                      = 8
+  POST_ON_EXECUTE                    = 9
+  POST_ON_STATE_UPDATE               = 10
+  POST_ON_RATE_CHANGED               = 11
+  POST_COMPONENT_ACTION_LISTENER_NUM = 12
+
+
+
+##
+# @if jp
+# @class PostComponentActionListener クラス
+# @brief PostComponentActionListener クラス
+#
+# OMG RTC仕様で定義されている以下のコンポーネントアクショントについ
+# て、
+#
+# - on_initialize()
+# - on_finalize()
+# - on_startup()
+# - on_shutdown()
+# - on_activated
+# - on_deactivated()
+# - on_aborted()
+# - on_error()
+# - on_reset()
+# - on_execute()
+# - on_state_update()
+# - on_rate_changed()
+#
+# 各アクションに対応するユーザーコードが呼ばれる直前のタイミング
+# でコールされるリスなクラスの基底クラス。
+#
+# - POST_ON_INITIALIZE:
+# - POST_ON_FINALIZE:
+# - POST_ON_STARTUP:
+# - POST_ON_SHUTDOWN:
+# - POST_ON_ACTIVATED:
+# - POST_ON_DEACTIVATED:
+# - POST_ON_ABORTING:
+# - POST_ON_ERROR:
+# - POST_ON_RESET:
+# - POST_ON_EXECUTE:
+# - POST_ON_STATE_UPDATE:
+# - POST_ON_RATE_CHANGED:
+#
+# @else
+# @class PostComponentActionListener class
+# @brief PostComponentActionListener class
+#
+# This class is abstract base class for listener classes that
+# provides callbacks for various events in rtobject.
+#
+# @endif
+class PostComponentActionListener:
+  """
+  """
+
+  def __init__(self):
+    pass
+
+  ##
+  # @if jp
+  #
+  # @brief PostComponentActionListenerType を文字列に変換
+  #
+  # PostComponentActionListenerType を文字列に変換する
+  #
+  # @param type 変換対象 PostComponentActionListenerType
+  #
+  # @return 文字列変換結果
+  #
+  # @else
+  #
+  # @brief Convert PostComponentActionListenerType into the string.
+  #
+  # Convert PostComponentActionListenerType into the string.
+  #
+  # @param type The target PostComponentActionListenerType for transformation
+  #
+  # @return Trnasformation result of string representation
+  #
+  # @endif
+  # static const char* toString(PostComponentActionListenerType type)
+  def toString(type):
+    typeString = ["POST_ON_INITIALIZE",
+                  "POST_ON_FINALIZE",
+                  "POST_ON_STARTUP",
+                  "POST_ON_SHUTDOWN",
+                  "POST_ON_ACTIVATED",
+                  "POST_ON_DEACTIVATED",
+                  "POST_ON_ABORTING",
+                  "POST_ON_ERROR",
+                  "POST_ON_RESET",
+                  "POST_ON_EXECUTE",
+                  "POST_ON_STATE_UPDATE",
+                  "POST_ON_RATE_CHANGED",
+                  "POST_COMPONENT_ACTION_LISTENER_NUM"]
+    if type < PostComponentActionListenerType.POST_COMPONENT_ACTION_LISTENER_NUM:
+      return typeString[type]
+    return "";
+
+  toString = staticmethod(toString)
+
+  ##
+  # @if jp
+  # @brief デストラクタ
+  # @else
+  # @brief Destructor
+  # @endif
+  def __del__(self):
+    pass
+
+  ##
+  # @if jp
+  #
+  # @brief 仮想コールバック関数
+  #
+  # PostComponentActionListener のコールバック関数
+  #
+  # @else
+  #
+  # @brief Virtual Callback function
+  #
+  # This is a the Callback function for PostComponentActionListener.
+  #
+  # @endif
+  #virtual void operator()(UniqueId ec_id,
+  #                        ReturnCode_t ret) = 0;
+  def __call__(self, ec_id, ret):
+    pass
+
+
+
+#============================================================
+##
+# @if jp
+# @brief PortActionListener のタイプ
+#
+# - ADD_PORT:             Port 追加時
+# - REMOVE_PORT:          Port 削除時
+#
+# @else
+# @brief The types of PortActionListener
+# 
+# @endif
+class PortActionListenerType:
+  """
+  """
+  
+  def __init__(self):
+    pass
+
+  ADD_PORT                 = 0
+  REMOVE_PORT              = 1
+  PORT_ACTION_LISTENER_NUM = 2
+
+
+
+##
+# @if jp
+# @class PortActionListener クラス
+# @brief PortActionListener クラス
+#
+# 各アクションに対応するユーザーコードが呼ばれる直前のタイミング
+# でコールされるリスなクラスの基底クラス。
+#
+# - ADD_PORT:
+# - REMOVE_PORT:
+#
+# @else
+# @class PortActionListener class
+# @brief PortActionListener class
+#
+# This class is abstract base class for listener classes that
+# provides callbacks for various events in rtobject.
+#
+# @endif
+class PortActionListener:
+  """
+  """
+
+  def __init__(self):
+    pass
+
+  ##
+  # @if jp
+  #
+  # @brief PortActionListenerType を文字列に変換
+  #
+  # PortActionListenerType を文字列に変換する
+  #
+  # @param type 変換対象 PortActionListenerType
+  #
+  # @return 文字列変換結果
+  #
+  # @else
+  #
+  # @brief Convert PortActionListenerType into the string.
+  #
+  # Convert PortActionListenerType into the string.
+  #
+  # @param type The target PortActionListenerType for transformation
+  #
+  # @return Trnasformation result of string representation
+  #
+  # @endif
+  #static const char* toString(PortActionListenerType type)
+  def toString(type):
+    typeString = ["ADD_PORT",
+                  "REMOVE_PORT",
+                  "PORT_ACTION_LISTENER_NUM"]
+    if type < PortActionListenerType.PORT_ACTION_LISTENER_NUM:
+      return typeString[type]
+    return ""
+
+  toString = staticmethod(toString)
+
+  ##
+  # @if jp
+  # @brief デストラクタ
+  # @else
+  # @brief Destructor
+  # @endif
+  #virtual ~PortActionListener();
+  def __del__(self):
+    pass
+
+  ##
+  # @if jp
+  #
+  # @brief 仮想コールバック関数
+  #
+  # PortActionListener のコールバック関数
+  #
+  # @else
+  #
+  # @brief Virtual Callback function
+  #
+  # This is a the Callback function for PortActionListener
+  #
+  # @endif
+  #virtual void operator()(const ::RTC::PortProfile& pprof) = 0;
+  def __call__(self, pprof):
+    pass
+
+
+#============================================================
+##
+# @if jp
+# @brief ExecutionContextActionListener のタイプ
+#
+# - EC_ATTACHED:          ExecutionContext 追加時
+# - EC_DETACHED:          ExecutionContext 削除時
+#
+# @else
+# @brief The types of ExecutionContextActionListener
+# 
+# @endif
+class ExecutionContextActionListenerType:
+  """
+  """
+  def __init__(self):
+    pass
+
+  EC_ATTACHED            = 0
+  EC_DETACHED            = 1
+  EC_ACTION_LISTENER_NUM = 2
+
+##
+# @if jp
+# @class ExecutionContextActionListener クラス
+# @brief ExecutionContextActionListener クラス
+#
+# 各アクションに対応するユーザーコードが呼ばれる直前のタイミング
+# でコールされるリスなクラスの基底クラス。
+#
+# - ADD_PORT:
+# - REMOVE_PORT:
+#
+# @else
+# @class ExecutionContextActionListener class
+# @brief ExecutionContextActionListener class
+#
+# This class is abstract base class for listener classes that
+# provides callbacks for various events in rtobject.
+#
+# @endif
+class ExecutionContextActionListener:
+  """
+  """
+
+  def __init__(self):
+    pass
+
+
+  ##
+  # @if jp
+  #
+  # @brief ExecutionContextActionListenerType を文字列に変換
+  #
+  # ExecutionContextActionListenerType を文字列に変換する
+  #
+  # @param type 変換対象 ExecutionContextActionListenerType
+  #
+  # @return 文字列変換結果
+  #
+  # @else
+  #
+  # @brief Convert ExecutionContextActionListenerType into the string.
+  #
+  # Convert ExecutionContextActionListenerType into the string.
+  #
+  # @param type The target ExecutionContextActionListenerType for transformation
+  #
+  # @return Trnasformation result of string representation
+  #
+  # @endif
+  #static const char* toString(ExecutionContextActionListenerType type)
+  def toString(type):
+    typeString = ["ATTACH_EC",
+                  "DETACH_EC",
+                  "EC_ACTION_LISTENER_NUM"]
+    if type < ExecutionContextActionListenerType.EC_ACTION_LISTENER_NUM:
+      return typeString[type]
+    return ""
+
+  toString = staticmethod(toString)
+
+
+  ##
+  # @if jp
+  # @brief デストラクタ
+  # @else
+  # @brief Destructor
+  # @endif
+  def __del__(self):
+    pass
+
+  ##
+  # @if jp
+  #
+  # @brief 仮想コールバック関数
+  #
+  # ExecutionContextActionListener のコールバック関数
+  #
+  # @else
+  #
+  # @brief Virtual Callback function
+  #
+  # This is a the Callback function for ExecutionContextActionListener
+  #
+  # @endif
+  #virtual void operator()(UniqueId ec_id) = 0;
+  def __call__(self, ec_id):
+    pass
+
+
+class Entry:
+  def __init__(self,listener, autoclean):
+    self.listener  = listener
+    self.autoclean = autoclean
+    return
+
+
+#============================================================
+##
+# @if jp
+# @class PreComponentActionListenerHolder 
+# @brief PreComponentActionListener ホルダクラス
+#
+# 複数の PreComponentActionListener を保持し管理するクラス。
+#
+# @else
+# @class PreComponentActionListenerHolder
+# @brief PreComponentActionListener holder class
+#
+# This class manages one ore more instances of
+# PreComponentActionListener class.
+#
+# @endif
+class PreComponentActionListenerHolder:
+  """
+  """
+
+  ##
+  # @if jp
+  # @brief コンストラクタ
+  # @else
+  # @brief Constructor
+  # @endif
+  def __init__(self):
+    self._listeners = []
+    return
+  
+    
+  ##
+  # @if jp
+  # @brief デストラクタ
+  # @else
+  # @brief Destructor
+  # @endif
+  def __del__(self):
+    for (idx, listener) in enumerate(self._listeners):
+      if listener.autoclean:
+        self._listeners[idx] = None
+    return
+
+  ##
+  # @if jp
+  #
+  # @brief リスナーの追加
+  #
+  # リスナーを追加する。
+  #
+  # @param listener 追加するリスナ
+  # @param autoclean true:デストラクタで削除する,
+  #                  false:デストラクタで削除しない
+  # @else
+  #
+  # @brief Add the listener.
+  #
+  # This method adds the listener. 
+  #
+  # @param listener Added listener
+  # @param autoclean true:The listener is deleted at the destructor.,
+  #                  false:The listener is not deleted at the destructor. 
+  # @endif
+  #void addListener(PreComponentActionListener* listener, bool autoclean);
+  def addListener(self, listener, autoclean):
+    self._listeners.append(Entry(listener, autoclean))
+    return
+    
+  ##
+  # @if jp
+  #
+  # @brief リスナーの削除
+  #
+  # リスナを削除する。
+  #
+  # @param listener 削除するリスナ
+  # @else
+  #
+  # @brief Remove the listener. 
+  #
+  # This method removes the listener. 
+  #
+  # @param listener Removed listener
+  # @endif
+  #void removeListener(PreComponentActionListener* listener);
+  def removeListener(self, listener):
+    len_ = len(self._listeners)
+    for i in range(len_):
+      idx = (len_ - 1) - i
+      if self._listeners[idx].listener == listener:
+        if self._listeners[idx].autoclean:
+          self._listeners[idx].listener = None
+          del self._listeners[idx]
+          return
+    return
+
+  ##
+  # @if jp
+  #
+  # @brief リスナーへ通知する
+  #
+  # 登録されているリスナのコールバックメソッドを呼び出す。
+  #
+  # @param info ConnectorInfo
+  # @else
+  #
+  # @brief Notify listeners. 
+  #
+  # This calls the Callback method of the registered listener. 
+  #
+  # @param info ConnectorInfo
+  # @endif
+  #void notify(UniqueId ec_id);
+  def notify(self, ec_id):
+    for listener in self._listeners:
+      listener.listener(ec_id)
+    return
+
+      
+
+##
+# @if jp
+# @class PostComponentActionListenerHolder
+# @brief PostComponentActionListener ホルダクラス
+#
+# 複数の PostComponentActionListener を保持し管理するクラス。
+#
+# @else
+# @class PostComponentActionListenerHolder
+# @brief PostComponentActionListener holder class
+#
+# This class manages one ore more instances of
+# PostComponentActionListener class.
+#
+# @endif
+class PostComponentActionListenerHolder:
+  """
+  """
+
+  ##
+  # @if jp
+  # @brief コンストラクタ
+  # @else
+  # @brief Constructor
+  # @endif
+  def __init__(self):
+    self._listeners = []
+    return
+
+
+  ##
+  # @if jp
+  # @brief デストラクタ
+  # @else
+  # @brief Destructor
+  # @endif
+  def __del__(self):
+    for (idx, listener) in enumerate(self._listeners):
+      if listener.autoclean:
+        self._listeners[idx] = None
+    return
+    
+  ##
+  # @if jp
+  #
+  # @brief リスナーの追加
+  #
+  # リスナーを追加する。
+  #
+  # @param listener 追加するリスナ
+  # @param autoclean true:デストラクタで削除する,
+  #                  false:デストラクタで削除しない
+  # @else
+  #
+  # @brief Add the listener.
+  #
+  # This method adds the listener. 
+  #
+  # @param listener Added listener
+  # @param autoclean true:The listener is deleted at the destructor.,
+  #                  false:The listener is not deleted at the destructor. 
+  # @endif
+  #void addListener(PostComponentActionListener* listener, bool autoclean);
+  def addListener(self, listener, autoclean):
+    self._listeners.append(Entry(listener, autoclean))
+    return
+    
+  ##
+  # @if jp
+  #
+  # @brief リスナーの削除
+  #
+  # リスナを削除する。
+  #
+  # @param listener 削除するリスナ
+  # @else
+  #
+  # @brief Remove the listener. 
+  #
+  # This method removes the listener. 
+  #
+  # @param listener Removed listener
+  # @endif
+  #void removeListener(PostComponentActionListener* listener);
+  def removeListener(self, listener):
+    len_ = len(self._listeners)
+    for i in range(len_):
+      idx = (len_ - 1) - i
+      if self._listeners[idx].listener == listener:
+        if self._listeners[idx].autoclean:
+          self._listeners[idx].listener = None
+          del self._listeners[idx]
+          return
+    return
+    
+  
+  ##
+  # @if jp
+  #
+  # @brief リスナーへ通知する
+  #
+  # 登録されているリスナのコールバックメソッドを呼び出す。
+  #
+  # @param info ConnectorInfo
+  # @param cdrdata データ
+  # @else
+  #
+  # @brief Notify listeners. 
+  #
+  # This calls the Callback method of the registered listener. 
+  #
+  # @param info ConnectorInfo
+  # @param cdrdata Data
+  # @endif
+  #void notify(UniqueId ec_id, ReturnCode_t ret);
+  def notify(self, ec_id, ret):
+    for listener in self._listeners:
+      listener.listener(ec_id, ret)
+    return
+    
+
+
+#============================================================
+##
+# @if jp
+# @class PortActionListenerHolder
+# @brief PortActionListener ホルダクラス
+#
+# 複数の PortActionListener を保持し管理するクラス。
+#
+# @else
+# @class PortActionListenerHolder
+# @brief PortActionListener holder class
+#
+# This class manages one ore more instances of
+# PortActionListener class.
+#
+# @endif
+class PortActionListenerHolder:
+  """
+  """
+
+  ##
+  # @if jp
+  # @brief コンストラクタ
+  # @else
+  # @brief Constructor
+  # @endif
+  def __init__(self):
+    self._listeners = []
+    return
+
+
+  ##
+  # @if jp
+  # @brief デストラクタ
+  # @else
+  # @brief Destructor
+  # @endif
+  def __del__(self):
+    for (idx, listener) in enumerate(self._listeners):
+      if listener.autoclean:
+        self._listeners[idx] = None
+    pass
+    
+  ##
+  # @if jp
+  #
+  # @brief リスナーの追加
+  #
+  # リスナーを追加する。
+  #
+  # @param listener 追加するリスナ
+  # @param autoclean true:デストラクタで削除する,
+  #                  false:デストラクタで削除しない
+  # @else
+  #
+  # @brief Add the listener.
+  #
+  # This method adds the listener. 
+  #
+  # @param listener Added listener
+  # @param autoclean true:The listener is deleted at the destructor.,
+  #                  false:The listener is not deleted at the destructor. 
+  # @endif
+  #void addListener(PortActionListener* listener, bool autoclean);
+  def addListener(self, listener, autoclean):
+    self._listeners.append(Entry(listener, autoclean))
+    return
+    
+
+  ##
+  # @if jp
+  #
+  # @brief リスナーの削除
+  #
+  # リスナを削除する。
+  #
+  # @param listener 削除するリスナ
+  # @else
+  #
+  # @brief Remove the listener. 
+  #
+  # This method removes the listener. 
+  #
+  # @param listener Removed listener
+  # @endif
+  #void removeListener(PortActionListener* listener);
+  def removeListener(self, listener):
+    len_ = len(self._listeners)
+    for i in range(len_):
+      idx = (len_ - 1) - i
+      if self._listeners[idx].listener == listener:
+        if self._listeners[idx].autoclean:
+          self._listeners[idx].listener = None
+          del self._listeners[idx]
+          return
+    return
+    
+  ##
+  # @if jp
+  #
+  # @brief リスナーへ通知する
+  #
+  # 登録されているリスナのコールバックメソッドを呼び出す。
+  #
+  # @param info ConnectorInfo
+  # @param cdrdata データ
+  # @else
+  #
+  # @brief Notify listeners. 
+  #
+  # This calls the Callback method of the registered listener. 
+  #
+  # @param info ConnectorInfo
+  # @param cdrdata Data
+  # @endif
+  #void notify(const RTC::PortProfile& pprofile);
+  def notify(self, pprofile):
+    for listener in self._listeners:
+      listener.listener(pprofile)
+    return
+
+    
+
+##
+# @if jp
+# @class ExecutionContextActionListenerHolder
+# @brief ExecutionContextActionListener ホルダクラス
+#
+# 複数の ExecutionContextActionListener を保持し管理するクラス。
+#
+# @else
+# @class ExecutionContextActionListenerHolder
+# @brief ExecutionContextActionListener holder class
+#
+# This class manages one ore more instances of
+# ExecutionContextActionListener class.
+#
+# @endif
+class ExecutionContextActionListenerHolder:
+  """
+  """
+
+  ##
+  # @if jp
+  # @brief コンストラクタ
+  # @else
+  # @brief Constructor
+  # @endif
+  def __init__(self):
+    self._listeners = []
+    return
+
+
+  ##
+  # @if jp
+  # @brief デストラクタ
+  # @else
+  # @brief Destructor
+  # @endif
+  def __del__(self):
+    for (idx, listener) in enumerate(self._listeners):
+      if listener.autoclean:
+        self._listeners[idx] = None
+    pass
+    
+
+  ##
+  # @if jp
+  #
+  # @brief リスナーの追加
+  #
+  # リスナーを追加する。
+  #
+  # @param listener 追加するリスナ
+  # @param autoclean true:デストラクタで削除する,
+  #                  false:デストラクタで削除しない
+  # @else
+  #
+  # @brief Add the listener.
+  #
+  # This method adds the listener. 
+  #
+  # @param listener Added listener
+  # @param autoclean true:The listener is deleted at the destructor.,
+  #                  false:The listener is not deleted at the destructor. 
+  # @endif
+  #void addListener(ExecutionContextActionListener* listener, bool autoclean);
+  def addListener(self, listener, autoclean):
+    self._listeners.append(Entry(listener, autoclean))
+    return
+
+    
+  ##
+  # @if jp
+  #
+  # @brief リスナーの削除
+  #
+  # リスナを削除する。
+  #
+  # @param listener 削除するリスナ
+  # @else
+  #
+  # @brief Remove the listener. 
+  #
+  # This method removes the listener. 
+  #
+  # @param listener Removed listener
+  # @endif
+  #void removeListener(ExecutionContextActionListener* listener);
+  def removeListener(self, listener):
+    len_ = len(self._listeners)
+    for i in range(len_):
+      idx = (len_ - 1) - i
+      if self._listeners[idx].listener == listener:
+        if self._listeners[idx].autoclean:
+          self._listeners[idx].listener = None
+          del self._listeners[idx]
+          return
+    return
+
+
+  ##
+  # @if jp
+  #
+  # @brief リスナーへ通知する
+  #
+  # 登録されているリスナのコールバックメソッドを呼び出す。
+  #
+  # @param info ConnectorInfo
+  # @param cdrdata データ
+  # @else
+  #
+  # @brief Notify listeners. 
+  #
+  # This calls the Callback method of the registered listener. 
+  #
+  # @param info ConnectorInfo
+  # @param cdrdata Data
+  # @endif
+  #void notify(UniqueId ec_id);
+  def notify(self, ec_id):
+    for listener in self._listeners:
+      listener.listener(ec_id)
+    return
+
+
+
+##
+# @if jp
+# @class ComponentActionListeners
+# @brief ComponentActionListeners クラス
+#
+#
+# @else
+# @class ComponentActionListeners
+# @brief ComponentActionListeners class
+#
+#
+# @endif
+class ComponentActionListeners:
+  """
+  """
+
+  def __init__(self):
+    pass
+
+  ##
+  # @if jp
+  # @brief PreComponentActionListenerTypeリスナ配列
+  # PreComponentActionListenerTypeリスナを格納
+  # @else
+  # @brief PreComponentActionListenerType listener array
+  # The PreComponentActionListenerType listener is stored. 
+  # @endif
+  preaction_num = PreComponentActionListenerType.PRE_COMPONENT_ACTION_LISTENER_NUM
+  preaction_ = [PreComponentActionListenerHolder() 
+                for i in range(preaction_num)]
+
+  ##
+  # @if jp
+  # @brief PostComponentActionListenerTypeリスナ配列
+  # PostComponentActionListenerTypeリスナを格納
+  # @else
+  # @brief PostComponentActionListenerType listener array
+  # The PostComponentActionListenerType listener is stored.
+  # @endif
+  postaction_num = PostComponentActionListenerType.POST_COMPONENT_ACTION_LISTENER_NUM
+  postaction_ = [PostComponentActionListenerHolder()
+                 for i in range(postaction_num)]
+
+  ##
+  # @if jp
+  # @brief PortActionListenerTypeリスナ配列
+  # PortActionListenerTypeリスナを格納
+  # @else
+  # @brief PortActionListenerType listener array
+  # The PortActionListenerType listener is stored.
+  # @endif
+  portaction_num = PortActionListenerType.PORT_ACTION_LISTENER_NUM
+  portaction_ = [PortActionListenerHolder()
+                 for i in range(portaction_num)]
+  
+  ##
+  # @if jp
+  # @brief ExecutionContextActionListenerTypeリスナ配列
+  # ExecutionContextActionListenerTypeリスナを格納
+  # @else
+  # @brief ExecutionContextActionListenerType listener array
+  # The ExecutionContextActionListenerType listener is stored.
+  # @endif
+  ecaction_num = ExecutionContextActionListenerType.EC_ACTION_LISTENER_NUM
+  ecaction_ = [ExecutionContextActionListenerHolder()
+               for i in range(ecaction_num)]

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/ConfigAdmin.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/ConfigAdmin.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/ConfigAdmin.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -86,15 +86,21 @@
 # @brief Config クラス
 # 
 # コンフィギュレーションパラメータの情報を保持するクラス。
-# コンフィギュレーションのデータ型と設定されたデータ型を文字列に変換する
-# 変換関数を指定する。
-# 
+#
 # @since 0.4.0
-# 
+#
 # @else
+# @class Config
+# @brief Config class
 # 
+# Class to hold the configuration parameter information.
+#
+# @since 0.4.0
+#
 # @endif
 class Config:
+  """
+  """
 
   ##
   # @if jp
@@ -110,7 +116,17 @@
   # @param trans 文字列形式変換関数(デフォルト値:None)
   # 
   # @else
+  #
+  # @brief Constructor
   # 
+  # Constructor
+  #
+  # @param self 
+  # @param name Configuration parameter name
+  # @param var Configuration parameter variable
+  # @param def_val Default value in string format
+  # @param trans Function to transform into string format
+  #
   # @endif
   def __init__(self, name, var, def_val, trans=None):
     self.name = name
@@ -136,6 +152,15 @@
   # 
   # @else
   # 
+  # @brief Update a bind parameter value
+  # 
+  # Update configuration paramater by the configuration value.
+  #
+  # @param self 
+  # @param val The parameter values converted into character string format
+  #
+  # @return Update result (Successful:true, Failed:false)
+  # 
   # @endif
   # virtual bool update(const char* val)
   def update(self, val):
@@ -152,18 +177,148 @@
 # @brief ConfigAdmin クラス
 # 
 # 各種コンフィギュレーション情報を管理するクラス。
-# 
+# 用語を以下のように定義する。
+#
+# - コンフィギュレーション: コンポーネントの設定情報。
+#
+# - (コンフィギュレーション)パラメータ: key-value からなる設定情報。
+#   coil::Properties 変数として扱われ、key、value 共に文字列として保
+#   持される。key をコンフィギュレーションパラメータ名、value をコン
+#   フィギュレーションパラメータ値と呼ぶ。
+#
+# - コンフィギュレーションセット: コンフィギュレーションパラメータ
+#   のリストで、名前 (ID) によって区別される。IDをコンフィギュレーショ
+#   ンセットIDと呼ぶ。
+#
+# - (コンフィギュレーション)パラメータ変数:コンフィギュレーションパ
+#   ラメータをRTCのアクティビティ内で実際に利用する際に参照される変
+#   数。パラメータごとに固有の型を持つ。
+#
+# - アクティブ(コンフィギュレーション)セット:現在有効なコンフィギュ
+#   レーションセットのことであり、唯一つ存在する。原則として、アクティ
+#   ブコンフィギュレーションセットのパラメータがコンフィギュレーショ
+#   ンパラメータ変数に反映される。
+#
+# このクラスでは、コンフィギュレーションのための以下の2つの情報を保
+# 持している。
+#
+# -# コンフィギュレーションセットのリスト
+# -# パラメータ変数のリスト
+#
+# 基本的には、(1) のコンフィギュレーションセットのリストのうち一つを、
+# (2) のパラメータ変数へ反映させる、のが本クラスの目的である。通常、
+# パラメータ変数の変更操作は、コンフィギュレーションセットの変更とパ
+# ラメータ変数への反映の2段階で行われる。
+#
+# コンフィギュレーションセットのリストの操作には、以下の関数を用いる。
+#
+# - getConfigurationSets()
+# - getConfigurationSet()
+# - setConfigurationSetValues()
+# - getActiveConfigurationSet()
+# - addConfigurationSet()
+# - removeConfigurationSet()
+# - activateConfigurationSet()
+#
+# これらの関数により、コンフィギュレーションセットの変更、追加、削除、
+# 取得、アクティブ化を行う。これらの操作により変更されたコンフィギュ
+# レーションセットを、RTCのアクティビティから使用するパラメータ変数
+# に反映させるには、以下の update() 関数を用いる。
+#
+# - update(void)
+# - update(const char* config_set)
+# - update(const char* config_set, const char* config_param)
+#
+# コンフィギュレーション操作をフックするためにコールバックファンクタ
+# を与えることができる。フックできる操作は以下の通り。
+#
+# - ON_UPDATE                   : update() コール時
+# - ON_UPDATE_PARAM             : update(param) コール時
+# - ON_SET_CONFIGURATIONSET     : setConfigurationSet() コール時
+# - ON_ADD_CONFIGURATIONSET     : addConfigurationSet() コール時
+# - ON_REMOVE_CONFIGURATIONSET  : removeConfigurationSet() コール時
+# - ON_ACTIVATE_CONFIGURATIONSET: activateConfigurationSet() コール時
+#
 # @since 0.4.0
-# 
+#
 # @else
+# @class ConfigAdmin
+# @brief ConfigAdmin class
 # 
+# Class to manage various configuration information.
+# Now terms for this class are defined as follows.
+#
+# - Configurations: The configuration information for the RTCs.
+#
+# - (Configuration) parameters: Configuration information that
+#   consists of a key-value pair. The "key" and the "value" are
+#   both stored as character string values in a coil::Properties
+#   variable in this class. The "key" is called the "configuration
+#   parameter name", and the "value" is called the "configuration
+#   parameter value".
+#
+# - Configuration-sets: This is a list of configuration parameters,
+#   and it is distinguished by name (ID). The ID is called
+#   configuration-set ID.
+#
+# - (Configuration) parameter variables: The variables to be
+#   referred when configuration parameters are actually used within
+#   the activity of an RTC. Each variable has each type.
+#
+# - Active (configuration) set: This is the only configuration-set
+#   that is currently active. The parameter values of the active
+#    configuration-set are substituted into configuration variables
+#   in principle.
+#
+# The following two configuration informations are stored in this class.
+#
+# -# A list of configuration-set
+# -# A list of configuration parameter variables
+#
+# Basically, the purpose of this class is to set one of the
+# configuration-set in the list of (1) into parameter variables of
+# (2). Usually, configuration parameter variables manipulation is
+# performed with two-phases of configuration-set setting and
+# parameter variables setting.
+#
+# The configuration-set manipulations are performed by the
+# following functions.
+#
+# - getConfigurationSets()
+# - getConfigurationSet()
+# - setConfigurationSetValues()
+# - getActiveConfigurationSet()
+# - addConfigurationSet()
+# - removeConfigurationSet()
+# - activateConfigurationSet()
+#
+# Modification, addition, deletion, acquisition and activation of
+# configuration-set are performed by these functions. In order to
+# reflect configuration-set, which is manipulated by these
+# functions, on parameter variables that are used from RTC
+# activities, the following update() functions are used .
+#
+# - update(void)
+# - update(const char* config_set)
+# - update(const char* config_set, const char* config_param)
+#
+# Callback functors can be given to hook configuration
+# operation. Operations to be hooked are as follows.
+#
+# - ON_UPDATE                   : when update() is called
+# - ON_UPDATE_PARAM             : when update(param) is called
+# - ON_SET_CONFIGURATIONSET     : when setConfigurationSet() is called
+# - ON_ADD_CONFIGURATIONSET     : when addConfigurationSet() is called
+# - ON_REMOVE_CONFIGURATIONSET  : when removeConfigurationSet() is called
+# - ON_ACTIVATE_CONFIGURATIONSET: when activateConfigurationSet() is called
+#
+# @since 0.4.0
+#
 # @endif
 class ConfigAdmin:
   """
   """
 
-
-
   ##
   # @if jp
   # 
@@ -176,6 +331,11 @@
   # 
   # @else
   # 
+  # Constructor
+  #
+  # @param self 
+  # @param prop The target property name for setup
+  # 
   # @endif
   # ConfigAdmin(coil::Properties& prop);
   def __init__(self, configsets):
@@ -186,15 +346,8 @@
     self._params     = []
     self._emptyconf  = OpenRTM_aist.Properties()
     self._newConfig  = []
+    self._listeners  = OpenRTM_aist.ConfigurationListeners()
 
-    self._updateCb          = None
-    self._updateParamCb     = None
-    self._setConfigSetCb    = None
-    self._addConfigSetCb    = None
-    self._removeConfigSetCb = None
-    self._activateSetCb     = None
-
-
   ##
   # @if jp
   # 
@@ -207,6 +360,10 @@
   # 
   # @else
   # 
+  # @brief Destructor
+  # 
+  # @param self 
+  # 
   # @endif
   def __del__(self):
     del self._params
@@ -232,6 +389,22 @@
   # 
   # @else
   # 
+  # @brief Setup for configuration parameters
+  # 
+  # Bind configuration parameter to its variable.
+  # Return false, if configuration parameter of specified name has already 
+  # existed.
+  #
+  # @param self 
+  # @param param_name Configuration parameter name
+  # @param var Configuration parameter variable
+  # @param def_val Default value of configuration parameter
+  # @param trans Function to transform configuration parameter type into 
+  #        string format
+  #
+  # @return Setup result (Successful:true, Failed:false)
+  #
+  # 
   # @endif
   #template <typename VarType>
   # bool bindParameter(const char* param_name, VarType& var,
@@ -395,6 +568,16 @@
   # 
   # @else
   # 
+  # @brief Check the existence of configuration parameters
+  # 
+  # Check the existence of configuration parameters of specified name.
+  #
+  # @param self 
+  # @param name Configuration parameter name
+  #
+  # @return Result of existance confirmation 
+  #         (Parameters exist:true, else:false)
+  # 
   # @endif
   # bool isExist(const char* name);
   def isExist(self, param_name):
@@ -421,6 +604,15 @@
   # 
   # @else
   # 
+  # @brief Confirm to change configuration parameters
+  # 
+  # Confirm that configuration parameters have changed.
+  #
+  # @param self 
+  #
+  # @return Result of change confirmation
+  #         (There is a change:true、No change:false)
+  # 
   # @endif
   # bool isChanged(void) {return m_changed;}
   def isChanged(self):
@@ -440,6 +632,14 @@
   # 
   # @else
   # 
+  # @brief Get ID of active configuration set
+  # 
+  # Get ID of the current active configuration set.
+  #
+  # @param self 
+  #
+  # @return The active configuration set ID
+  # 
   # @endif
   # const char* getActiveId(void);
   def getActiveId(self):
@@ -460,6 +660,14 @@
   # 
   # @else
   # 
+  # @brief Check the existence of configuration set
+  # 
+  # Check the existence of specified configuration set.
+  #
+  # @param self 
+  # @param config_id ID of target configuration set for confirmation
+  # @return Result of existence confirmation 
+  #         (Specified ConfigSet exists:true, else:false)
   # @endif
   # bool haveConfig(const char* config_id);
   def haveConfig(self, config_id):
@@ -482,6 +690,15 @@
   # 
   # @else
   # 
+  # @brief Confirm to activate configuration set
+  # 
+  # Confirm that configuration set has been activated.
+  #
+  # @param self 
+  #
+  # @return Result of state confirmation
+  #         (Active state:true, Inactive state:false)
+  # 
   # @endif
   # bool isActive(void);
   def isActive(self):
@@ -501,6 +718,14 @@
   # 
   # @else
   # 
+  # @brief Get all configuration sets
+  # 
+  # Get all specified configuration sets
+  #
+  # @param self 
+  #
+  # @return All configuration sets
+  # 
   # @endif
   # const std::vector<coil::Properties*>& getConfigurationSets(void);
   def getConfigurationSets(self):
@@ -523,6 +748,17 @@
   # 
   # @else
   # 
+  # @brief Get a configuration set by specified ID
+  # 
+  # Get a configuration set that was specified by ID
+  # Return empty configuration set, if a configuration set of
+  # specified ID doesn't exist.
+  #
+  # @param self 
+  # @param config_id ID of the target configuration set for getting
+  #
+  # @return The configuration set
+  # 
   # @endif
   # const coil::Properties& getConfigurationSet(const char* config_id);
   def getConfigurationSet(self, config_id):
@@ -546,6 +782,15 @@
   # 
   # @else
   # 
+  # @brief Add to configuration set from specified property
+  # 
+  # Add specified property to configuration set.
+  #
+  # @param self 
+  # @param configuration_set Property to add
+  #
+  # @return Add result (Successful:true, Failed:false)
+  # 
   # @endif
   # bool setConfigurationSetValues(const coil::Properties& config_set)
   def setConfigurationSetValues(self, config_set):
@@ -581,6 +826,15 @@
   # 
   # @else
   # 
+  # @brief Get the active configuration set
+  # 
+  # Get the current active configuration set.
+  # Return empty configuration set, if an active configuration set 
+  # doesn't exist.
+  #
+  # @param self 
+  # @return The active configuration set
+  # 
   # @endif
   # const coil::Properties& getActiveConfigurationSet(void);
   def getActiveConfigurationSet(self):
@@ -605,6 +859,15 @@
   # 
   # @else
   # 
+  # @brief Add the configuration value to configuration set
+  # 
+  # Add the configuration value to configuration set
+  #
+  # @param self 
+  # @param configuration_set Property to add
+  #
+  # @return Add Result (Successful:true, Failed:false)
+  # 
   # @endif
   # bool addConfigurationSet(const coil::Properties& configuration_set);
   def addConfigurationSet(self, configset):
@@ -630,21 +893,60 @@
 
   ##
   # @if jp
-  # 
+  #
   # @brief コンフィギュレーションセットの削除
   # 
   # 指定したIDのコンフィギュレーションセットを削除する。
+  #
   # 指定したIDのコンフィギュレーションセットが存在しない場合は、
-  # falseを返す。
-  # 
+  # falseを返す。削除可能なコンフィギュレーションセットは、
+  # addConfigruationSet() によって追加したコンフィギュレーションセッ
+  # トのみであり、デフォルトコンフィギュレーションセット、コンポーネ
+  # ント起動時にファイルから読み込まれるコンフィギュレーションセット
+  # は削除することができない。
+  #
+  # また、指定したコンフィギュレーションセットが現在アクティブである
+  # 場合には、いかなるコンフィギュレーションセットでも削除できない。
+  #
+  # この関数により実際にコンフィギュレーションセットが削除された場合、
+  # setOnRemoveConfigurationSet() でセットされたコールバック関数が呼
+  # び出される。
+  #
   # @param self 
   # @param config_id 削除対象コンフィギュレーションセットのID
-  # 
+  #
   # @return 削除処理結果(削除成功:true、削除失敗:false)
-  # 
+  #
   # @else
+  #
+  # @brief Remove the configuration set
   # 
+  # Remove the configuration set of specified ID Return empty
+  # configuration set, if a configuration set of specified ID
+  # doesn't exist.
+  #
+  # The configuration-sets that can be removed by this function are
+  # only configuration-sets newly added by the
+  # addConfigurationSet() function. The configuration that can be
+  # removed by this function is only newly added configuration-set
+  # by addConfigurationSet() function.  The "default"
+  # configuration-set and configurationi-sets that is loaded from
+  # configuration file cannot be removed.
+  #
+  # If the specified configuration is active currently, any
+  # configurations are not deleted.
+  #
+  # Callback functions that are set by
+  # addOnRemovedConfigurationSet() will be called if a
+  # configuration-set is deleted actually by this function.
+  #
+  # @param self 
+  # @param config_id ID of the target configuration set for remove
+  #
+  # @return Remove result (Successful:true, Failed:false)
+  #
   # @endif
+  #
   # bool removeConfigurationSet(const char* config_id);
   def removeConfigurationSet(self, config_id):
     if config_id == "default":
@@ -692,6 +994,17 @@
   # 
   # @else
   # 
+  # @brief Activate the configuration set
+  # 
+  # Activate the configuration set of specified ID
+  # Return empty configuration set, if a configuration set of
+  # specified ID doesn't exist.
+  #
+  # @param self 
+  # @param config_id ID of the target configuration set for remove
+  #
+  # @return Activate result (Remove success:true、Remove failure:false)
+  # 
   # @endif
   # bool activateConfigurationSet(const char* config_id);
   def activateConfigurationSet(self, config_id):
@@ -711,76 +1024,557 @@
     return True
 
 
+  #------------------------------------------------------------
+  # obsolete functions
+  #
+
+  ##
+  # @if jp
+  #
+  # @brief OnUpdate のコールバックの設定
+  #
+  # OnUpdate で呼ばれるコールバックのオブジェクトを設定する。
+  # 
+  # @param self 
+  # @param cb OnUpdateCallback型のオブジェクト
+  #
+  # @else
+  #
+  # @brief Set callback that is called by OnUpdate. 
+  # 
+  # @param self 
+  # @param cb OnUpdateCallback type object
+  #
+  # @endif
+  #
   # void setOnUpdate(OnUpdateCallback* cb);
   def setOnUpdate(self, cb):
-    self._updateCb = cb
+    print "setOnUpdate function is obsolete."
+    print "Use addConfigurationSetNameListener instead."
+    self._listeners.configsetname_[OpenRTM_aist.ConfigurationSetNameListenerType.ON_UPDATE_CONFIG_SET].addListener(cb, False)
+    return
 
 
+  ##
+  # @if jp
+  #
+  # @brief OnUpdateParam のコールバックの設定
+  #
+  # OnUpdateParam で呼ばれるコールバックのオブジェクトを設定する。
+  # 
+  # @param self 
+  # @param cb OnUpdateParamCallback型のオブジェクト
+  #
+  # @else
+  #
+  # @brief Set callback that is called by OnUpdateParam. 
+  # 
+  # @param self 
+  # @param cb OnUpdateParamCallback type object
+  #
+  # @endif
+  #
   # void setOnUpdateParam(OnUpdateParamCallback* cb);
   def setOnUpdateParam(self, cb):
-    self._updateParamCb = cb
+    print "setOnUpdateParam function is obsolete."
+    print "Use addConfigurationParamListener instead."
+    self._listeners.configparam_[OpenRTM_aist.ConfigurationParamListenerType.ON_UPDATE_CONFIG_PARAM].addListener(cb, False)
+    return
 
 
+  ##
+  # @if jp
+  #
+  # @brief OnSetConfigurationSet のコールバックの設定
+  #
+  # OnSetConfigurationSet で呼ばれるコールバックのオブジェクトを設定する。
+  # 
+  # @param self 
+  # @param cb OnSetConfigurationSetCallback型のオブジェクト
+  #
+  # @else
+  #
+  # @brief Set callback that is called by OnSetConfiguration. 
+  # 
+  # @param self 
+  # @param cb OnSetConfigurationSetCallback type object
+  #
+  # @endif
+  #
   # void setOnSetConfigurationSet(OnSetConfigurationSetCallback* cb);
   def setOnSetConfigurationSet(self, cb):
-    self._setConfigSetCb = cb
+    print "setOnSetConfigurationSet function is obsolete."
+    print "Use addConfigurationSetListener instead."
+    self._listeners.configset_[OpenRTM_aist.ConfigurationSetListenerType.ON_SET_CONFIG_SET].addListener(cb, False)
+    return
 
 
+  ##
+  # @if jp
+  #
+  # @brief OnAddConfigurationSet のコールバックの設定
+  #
+  # OnAddConfigurationSet で呼ばれるコールバックのオブジェクトを設定する。
+  # 
+  # @param self 
+  # @param cb OnAddConfigurationAddCallback型のオブジェクト
+  #
+  # @else
+  #
+  # @brief Set callback that is called by OnSetConfiguration. 
+  # 
+  # @param self 
+  # @param cb OnSetConfigurationSetCallback type object
+  #
+  # @endif
+  #
   # void setOnAddConfigurationSet(OnAddConfigurationAddCallback* cb);
   def setOnAddConfigurationSet(self, cb):
-    self._addConfigSetCb = cb
+    print "setOnAddConfigurationSet function is obsolete."
+    print "Use addConfigurationSetListener instead."
+    self._listeners.configset_[OpenRTM_aist.ConfigurationSetListenerType.ON_ADD_CONFIG_SET].addListener(cb, False)
+    return
 
 
+  ##
+  # @if jp
+  #
+  # @brief OnRemoveConfigurationSet のコールバックの設定
+  #
+  # OnRemoveConfiguration で呼ばれるコールバックのオブジェクトを設定する。
+  # 
+  # @param self 
+  # @param cb OnRemoveConfigurationSetCallback型のオブジェクト
+  #
+  # @else
+  #
+  # @brief Set callback that is called by OnRemoveConfigurationSet. 
+  # 
+  # @param self 
+  # @param cb OnRemoveConfigurationSetCallback type object
+  #
+  # @endif
+  #
   # void setOnRemoveConfigurationSet(OnRemoveConfigurationSetCallback* cb);
   def setOnRemoveConfigurationSet(self, cb):
-    self._removeConfigSetCb = cb
+    print "setOnRemoveConfigurationSet function is obsolete."
+    print "Use addConfigurationSetNameListener instead."
+    self._listeners.configsetname_[OpenRTM_aist.ConfigurationSetNameListenerType.ON_REMOVE_CONFIG_SET].addListener(cb, False)
+    return
 
 
+  ##
+  # @if jp
+  #
+  # @brief OnActivateSet のコールバックの設定
+  #
+  # OnActivateSet で呼ばれるコールバックのオブジェクトを設定する。
+  # 
+  # @param self 
+  # @param cb OnActivateSetCallback型のオブジェクト
+  #
+  # @else
+  #
+  # @brief Set callback that is called by OnActivateSet. 
+  # 
+  # @param self 
+  # @param cb OnActivateSetCallback type object
+  #
+  # @endif
+  #
   # void setOnActivateSet(OnActivateSetCallback* cb);
   def setOnActivateSet(self, cb):
-    self._activateSetCb = cb
+    print "setOnActivateSet function is obsolete."
+    print "Use addConfigurationSetNameListener instead."
+    self._listeners.configsetname_[OpenRTM_aist.ConfigurationSetNameListenerType.ON_ACTIVATE_CONFIG_SET].addListener(cb, False)
+    return
 
+  #
+  # end of obsolete functions
+  #------------------------------------------------------------
 
+  ##
+  # @if jp
+  #
+  # @brief ConfigurationParamListener を追加する
+  #
+  # update(const char* config_set, const char* config_param) が呼ばれた際に
+  # コールされるリスナ ConfigurationParamListener を追加する。
+  # type には現在のところ ON_UPDATE_CONFIG_PARAM のみが入る。
+  #
+  # @param type ConfigurationParamListenerType型の値。
+  #             ON_UPDATE_CONFIG_PARAM がある。
+  #
+  # @param listener ConfigurationParamListener 型のリスナオブジェクト。
+  # @param autoclean リスナオブジェクトを自動で削除するかどうかのフラグ
+  # 
+  # @else
+  #
+  # @brief Adding ConfigurationParamListener 
+  # 
+  # This function adds a listener object which is called when
+  # update(const char* config_set, const char* config_param) is
+  # called. In the type argument, currently only
+  # ON_UPDATE_CONFIG_PARAM is allowed.
+  #
+  # @param type ConfigurationParamListenerType value
+  #             ON_UPDATE_CONFIG_PARAM is only allowed.
+  #
+  # @param listener ConfigurationParamListener listener object.
+  # @param autoclean a flag whether if the listener object autocleaned.
+  #
+  # @endif
+  #
+  # void addConfigurationParamListener(ConfigurationParamListenerType type,
+  #                                    ConfigurationParamListener* listener,
+  #                                    bool autoclean = true);
+  def addConfigurationParamListener(self, type, listener, autoclean = True):
+    self._listeners.configparam_[type].addListener(listener, autoclean)
+    return
+
+
+  ##
+  # @if jp
+  #
+  # @brief ConfigurationParamListener を削除する
+  #
+  # addConfigurationParamListener で追加されたリスナオブジェクトを削除する。
+  #
+  # @param type ConfigurationParamListenerType型の値。
+  #             ON_UPDATE_CONFIG_PARAM がある。
+  # @param listener 与えたリスナオブジェクトへのポインタ
+  # 
+  # @else
+  #
+  # @brief Removing ConfigurationParamListener 
+  # 
+  # This function removes a listener object which is added by
+  # addConfigurationParamListener() function.
+  #
+  # @param type ConfigurationParamListenerType value
+  #             ON_UPDATE_CONFIG_PARAM is only allowed.
+  # @param listener a pointer to ConfigurationParamListener listener object.
+  #
+  # @endif
+  #
+  # void removeConfigurationParamListener(ConfigurationParamListenerType type,
+  #                                       ConfigurationParamListener* listener);
+  def removeConfigurationParamListener(self, type, listener):
+    self._listeners.configparam_[type].removeListener(listener)
+    return
+    
+
+  ##
+  # @if jp
+  #
+  # @brief ConfigurationSetListener を追加する
+  #
+  # ConfigurationSet が更新されたときなどに呼ばれるリスナ
+  # ConfigurationSetListener を追加する。設定可能なイベントは以下の
+  # 2種類がある。
+  #
+  # - ON_SET_CONFIG_SET: setConfigurationSetValues() で
+  #                      ConfigurationSet に値が設定された場合。
+  # - ON_ADD_CONFIG_SET: addConfigurationSet() で新しい
+  #                      ConfigurationSet が追加された場合。
+  #
+  # @param type ConfigurationSetListenerType型の値。
+  # @param listener ConfigurationSetListener 型のリスナオブジェクト。
+  # @param autoclean リスナオブジェクトを自動で削除するかどうかのフラグ
+  # 
+  # @else
+  #
+  # @brief Adding ConfigurationSetListener 
+  # 
+  # This function add a listener object which is called when
+  # ConfigurationSet is updated. Available events are the followings.
+  #
+  # @param type ConfigurationSetListenerType value
+  # @param listener ConfigurationSetListener listener object.
+  # @param autoclean a flag whether if the listener object autocleaned.
+  #
+  # @endif
+  #
+  # void addConfigurationSetListener(ConfigurationSetListenerType type,
+  #                                  ConfigurationSetListener* listener,
+  #                                  bool autoclean = true);
+  def addConfigurationSetListener(self, type, listener, autoclean = True):
+    self._listeners.configset_[type].addListener(listener, autoclean)
+    return
+
+
+  ##
+  # @if jp
+  #
+  # @brief ConfigurationSetListener を削除する
+  #
+  # addConfigurationSetListener で追加されたリスナオブジェクトを削除する。
+  #
+  # @param type ConfigurationSetListenerType型の値。
+  # @param listener 与えたリスナオブジェクトへのポインタ
+  # 
+  # @else
+  #
+  # @brief Removing ConfigurationSetListener 
+  # 
+  # This function removes a listener object which is added by
+  # addConfigurationSetListener() function.
+  #
+  # @param type ConfigurationSetListenerType value
+  # @param listener a pointer to ConfigurationSetListener listener object.
+  #
+  # @endif
+  # void removeConfigurationSetListener(ConfigurationSetListenerType type,
+  #                                     ConfigurationSetListener* listener);
+  def removeConfigurationSetListener(self, type, listener):
+    self._listeners.configset_[type].removeListener(listener)
+    return
+    
+
+  ##
+  # @if jp
+  #
+  # @brief ConfigurationSetNameListener を追加する
+  #
+  # ConfigurationSetName が更新されたときなどに呼ばれるリスナ
+  # ConfigurationSetNameListener を追加する。設定可能なイベントは以下の
+  # 3種類がある。
+  #
+  # - ON_UPDATE_CONFIG_SET: ある ConfigurationSet がアップデートされた
+  # - ON_REMOVE_CONFIG_SET: ある ConfigurationSet が削除された
+  # - ON_ACTIVATE_CONFIG_SET: ある ConfigurationSet がアクティブ化された
+  #
+  # @param type ConfigurationSetNameListenerType型の値。
+  # @param listener ConfigurationSetNameListener 型のリスナオブジェクト。
+  # @param autoclean リスナオブジェクトを自動で削除するかどうかのフラグ
+  # 
+  # @else
+  #
+  # @brief Adding ConfigurationSetNameListener 
+  # 
+  # This function add a listener object which is called when
+  # ConfigurationSetName is updated. Available events are the followings.
+  #
+  # - ON_UPDATE_CONFIG_SET: A ConfigurationSet has been updated.
+  # - ON_REMOVE_CONFIG_SET: A ConfigurationSet has been deleted.
+  # - ON_ACTIVATE_CONFIG_SET: A ConfigurationSet has been activated.
+  #
+  # @param type ConfigurationSetNameListenerType value
+  # @param listener ConfigurationSetNameListener listener object.
+  # @param autoclean a flag whether if the listener object autocleaned.
+  #
+  # @endif
+  # void 
+  # addConfigurationSetNameListener(ConfigurationSetNameListenerType type,
+  #                                 ConfigurationSetNameListener* listener,
+  #                                 bool autoclean = true);
+  def addConfigurationSetNameListener(self, type, listener, autoclean = True):
+    self._listeners.configsetname_[type].addListener(listener, autoclean)
+    return
+
+
+  ##
+  # @if jp
+  #
+  # @brief ConfigurationSetNameListener を削除する
+  #
+  # addConfigurationSetNameListener で追加されたリスナオブジェクトを
+  # 削除する。
+  #
+  # @param type ConfigurationSetNameListenerType型の値。
+  #             ON_UPDATE_CONFIG_PARAM がある。
+  # @param listener 与えたリスナオブジェクトへのポインタ
+  # 
+  # @else
+  #
+  # @brief Removing ConfigurationSetNameListener 
+  # 
+  # This function removes a listener object which is added by
+  # addConfigurationSetNameListener() function.
+  #
+  # @param type ConfigurationSetNameListenerType value
+  #             ON_UPDATE_CONFIG_PARAM is only allowed.
+  # @param listener a pointer to ConfigurationSetNameListener
+  #             listener object.
+  #
+  # @endif
+  # void
+  # removeConfigurationSetNameListener(ConfigurationSetNameListenerType type,
+  #                                    ConfigurationSetNameListener* listener);
+  def removeConfigurationSetNameListener(self, type, listener):
+    self._listeners.configsetname_[type].removeListener(listener)
+    return
+    
+
+  ##
+  # @if jp
+  #
+  # @brief コンフィギュレーションパラメータの更新(ID指定)時にコールされる
+  #
+  # 設定されてるコールバックオブジェクトを呼び出す。
+  #
+  # @param self 
+  # @param config_set 設定対象のコンフィギュレーションセットID
+  #
+  # @else
+  #
+  # @brief When the configuration parameter is updated, it is called. 
+  #
+  # Call the set callback object.
+  # 
+  # @param self 
+  # @param config_set The target configuration set's ID to setup
+  #
+  # @endif
+  #
   # void onUpdate(const char* config_set);
   def onUpdate(self, config_set):
-    if self._updateCb is not None:
-      self._updateCb(config_set)
+    self._listeners.configsetname_[OpenRTM_aist.ConfigurationSetNameListenerType.ON_UPDATE_CONFIG_SET].notify(config_set)
+    return
 
 
+  ##
+  # @if jp
+  #
+  # @brief コンフィギュレーションパラメータの更新(名称指定)時にコールされる
+  #
+  # 設定されてるコールバックオブジェクトを呼び出す。
+  #
+  # @param self 
+  # @param config_set コンフィギュレーションID
+  # @param config_param コンフィギュレーションパラメータ名
+  #
+  # @else
+  #
+  # @brief When the configuration parameter is updated, it is called. 
+  #
+  # Call the set callback object.
+  # 
+  # @param self 
+  # @param config_set configuration-set ID.
+  # @param config_param configuration parameter name.
+  #
+  # @endif
+  #
   # void onUpdateParam(const char* config_set, const char* config_param);
   def onUpdateParam(self, config_set, config_param):
-    if self._updateParamCb is not None:
-      self._updateParamCb(config_set, config_param)
+    self._listeners.configparam_[OpenRTM_aist.ConfigurationParamListenerType.ON_UPDATE_CONFIG_PARAM].notify(config_set,
+                                                                                                            config_param)
+    return
 
 
+  ##
+  # @if jp
+  #
+  # @brief コンフィギュレーションセットへの追加時にコールされる
+  #
+  # 設定されてるコールバックオブジェクトを呼び出す。
+  #
+  # @param self 
+  # @param configuration_set プロパティ
+  #
+  # @else
+  #
+  # @brief Called when the property is added to the configuration set
+  #
+  # Call the set callback object.
+  # 
+  # @param self 
+  # @param configuration_set property
+  #
+  # @endif
+  #
   # void onSetConfigurationSet(const coil::Properties& config_set);
   def onSetConfigurationSet(self, config_set):
-    if self._setConfigSetCb is not None:
-      self._setConfigSetCb(config_set)
+    self._listeners.configset_[OpenRTM_aist.ConfigurationSetListenerType.ON_SET_CONFIG_SET].notify(config_set)
+    return
 
 
+  ##
+  # @if jp
+  #
+  # @brief 設定値が追加されたときにコールされる。
+  #
+  # 設定されてるコールバックオブジェクトを呼び出す。
+  #
+  # @param self 
+  # @param configuration_set プロパティ
+  #
+  # @else
+  #
+  # @brief Called when a set value is added to the configuration set
+  #
+  # Call the set callback object.
+  # 
+  # @param self 
+  # @param configuration_set property
+  #
+  # @endif
+  #
   # void onAddConfigurationSet(const coil::Properties& config_set);
   def onAddConfigurationSet(self, config_set):
-    if self._addConfigSetCb is not None:
-      self._addConfigSetCb(config_set)
+    self._listeners.configset_[OpenRTM_aist.ConfigurationSetListenerType.ON_ADD_CONFIG_SET].notify(config_set)
+    return
 
 
+  ##
+  # @if jp
+  #
+  # @brief セットが削除されてるときにコールされる。
+  #
+  # 設定されてるコールバックオブジェクトを呼び出す。
+  #
+  # @param self 
+  # @param config_id プロパティ
+  #
+  # @else
+  #
+  # @brief Called when the configuration set has been deleted
+  #
+  # Call the set callback object.
+  # 
+  # @param self 
+  # @param config_id property
+  #
+  # @endif
+  #
   # void onRemoveConfigurationSet(const char* config_id);
   def onRemoveConfigurationSet(self, config_id):
-    if self._removeConfigSetCb is not None:
-      self._removeConfigSetCb(config_id)
+    self._listeners.configsetname_[OpenRTM_aist.ConfigurationSetNameListenerType.ON_REMOVE_CONFIG_SET].notify(config_id)
+    return
 
 
+  ##
+  # @if jp
+  #
+  # @brief セットがアクティブ化されたときにコールされる。
+  #
+  # 設定されてるコールバックオブジェクトを呼び出す。
+  #
+  # @param self 
+  # @param config_id プロパティ
+  #
+  # @else
+  #
+  # @brief Called when the configuration set is made active
+  #
+  # Call the set callback object.
+  # 
+  # @param self 
+  # @param config_id property
+  #
+  # @endif
+  #
   # void onActivateSet(const char* config_id);
   def onActivateSet(self, config_id):
-    if self._activateSetCb is not None:
-      self._activateSetCb(config_id)
+    self._listeners.configsetname_[OpenRTM_aist.ConfigurationSetNameListenerType.ON_ACTIVATE_CONFIG_SET].notify(config_id)
+    return
 
 
-
   class find_conf:
     def __init__(self, name):
       self._name = name
+      return
 
     def __call__(self, conf):
       if conf is None or conf is 0:

Copied: trunk/OpenRTM-aist-Python/OpenRTM_aist/ConfigurationListener.py (from rev 478, branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/ConfigurationListener.py)
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/ConfigurationListener.py	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/ConfigurationListener.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,837 @@
+#!/usr/bin/env python
+# -*- coding: euc-jp -*-
+
+##
+# @file ConfigurationListener.py
+# @brief Configuration related event listener classes
+# @date $Date$
+# @author Noriaki Ando <n-ando at aist.go.jp> and Shinji Kurihara
+#
+# Copyright (C) 2011
+#     Intelligent Systems Research Institute,
+#     National Institute of
+#         Advanced Industrial Science and Technology (AIST), Japan
+#     All rights reserved.
+
+import OpenRTM_aist
+
+##
+# @if jp
+# @brief ConfigurationParamListener のタイプ
+#
+# - ON_UPDATE_CONFIG_PARAM,
+#
+# @else
+# @brief The types of ConnectorDataListener
+# 
+# - ON_UPDATE_CONFIG_PARAM,
+#
+# @endif
+#
+class ConfigurationParamListenerType:
+  """
+  """
+
+  def __init__(self):
+    pass
+
+  ON_UPDATE_CONFIG_PARAM      = 0
+  CONFIG_PARAM_LISTENER_NUM   = 1
+
+
+
+##
+# @if jp
+# @class ConfigurationParamListener クラス
+# @brief ConfigurationParamListener クラス
+#
+# Configuration パラメータの変更に関するリスナクラス。
+# 以下のイベントに対してコールバックされる。
+#
+# - ON_UPDATE_CONFIG_PARAM
+#
+# @else
+# @class ConfigurationParamListener class
+# @brief ConfigurationParamListener class
+#
+# This class is abstract base class for listener classes that
+# provides callbacks for various events for Configuration parameter.
+# The listener will be called on the following event.
+#
+# - ON_UPDATE_CONFIG_PARAM
+#
+# @endif
+class ConfigurationParamListener:
+  """
+  """
+
+  def __init__(self):
+    pass
+
+  ##
+  # @if jp
+  #
+  # @brief ConfigurationParamListenerType を文字列に変換
+  #
+  # ConfigurationParamListenerType を文字列に変換する
+  #
+  # @param type 変換対象 ConfigurationParamListenerType
+  #
+  # @return 文字列変換結果
+  #
+  # @else
+  #
+  # @brief Convert ConfigurationParamListenerType into the string.
+  #
+  # Convert ConfigurationParamListenerType into the string.
+  #
+  # @param type The target ConfigurationParamListenerType for transformation
+  #
+  # @return Trnasformation result of string representation
+  #
+  # @endif
+  # static const char* toString(ConfigurationParamListenerType type)
+  def toString(type):
+    typeString = ["ON_UPDATE_CONFIG_PARAM",
+                  "CONFIG_PARAM_LISTENER_NUM"]
+                      
+    if type < ConfigurationParamListenerType.CONFIG_PARAM_LISTENER_NUM:
+      return typeString[type]
+        
+    return "";
+
+  toString = staticmethod(toString)
+
+
+  ##
+  # @if jp
+  # @brief デストラクタ
+  # @else
+  # @brief Destructor
+  # @endif
+  def __del__(self):
+    pass
+
+
+  ##
+  # @if jp
+  #
+  # @brief 仮想コールバック関数
+  #
+  # ConfigurationParamListener のコールバック関数
+  #
+  # @else
+  #
+  # @brief Virtual Callback function
+  #
+  # This is a the Callback function for ConfigurationParamListener.
+  #
+  # @endif
+  # virtual void operator()(const char* config_set_name,
+  #                         const char* config_param_name) = 0;
+  def __call__(self, config_set_name, config_param_name):
+    pass
+
+
+
+#============================================================
+##
+# @if jp
+# @brief ConfigurationSetListener のタイプ
+#
+# - ON_SET_CONFIG_SET: ConfigurationSet 単位で値がセットされた
+# - ON_ADD_CONFIG_SET: ConfigurationSet が追加された
+#
+# @else
+# @brief The types of ConfigurationSetListener
+# 
+# - ON_SET_CONFIG_SET: Value list has been set as a configuration set 
+# - ON_ADD_CONFIG_SET: A new configuration set has been added
+#
+# @endif
+class ConfigurationSetListenerType:
+  """
+  """
+
+  def __init__(self):
+    pass
+
+  ON_SET_CONFIG_SET       = 0
+  ON_ADD_CONFIG_SET       = 1
+  CONFIG_SET_LISTENER_NUM = 2
+
+
+
+##
+# @if jp
+# @class ConfigurationSetListener クラス
+# @brief ConfigurationSetListener クラス
+#
+# Configurationセットが変更されたり追加された場合に呼び出されるリスナクラス。
+# 以下のConfigurationセットに関連するイベントに対するリスナ。
+#
+# - ON_SET_CONFIG_SET: ConfigurationSet 単位で値がセットされた
+# - ON_ADD_CONFIG_SET: ConfigurationSet が追加された
+#
+# @else
+# @class ConfigurationSetListener class
+# @brief ConfigurationSetListener class
+#
+# This class is abstract base class for listener classes that
+# provides callbacks for configuration set's related events.
+#
+# - ON_SET_CONFIG_SET: Value list has been set as a configuration set 
+# - ON_ADD_CONFIG_SET: A new configuration set has been added
+#
+# @endif
+class ConfigurationSetListener:
+  """
+  """
+
+  def __init__(self):
+    pass
+
+
+  ##
+  # @if jp
+  #
+  # @brief ConfigurationSetListenerType を文字列に変換
+  #
+  # ConfigurationSetListenerType を文字列に変換する
+  #
+  # @param type 変換対象 ConfigurationSetListenerType
+  #
+  # @return 文字列変換結果
+  #
+  # @else
+  #
+  # @brief Convert ConfigurationSetListenerType into the string.
+  #
+  # Convert ConfigurationSetListenerType into the string.
+  #
+  # @param type The target ConfigurationSetListenerType for
+  #             transformation
+  #
+  # @return Trnasformation result of string representation
+  #
+  # @endif
+  # static const char* toString(ConfigurationSetListenerType type)
+  def toString(type):
+    typeString = ["ON_SET_CONFIG_SET",
+                  "ON_ADD_CONFIG_SET",
+                  "CONFIG_SET_LISTENER_NUM"]
+    if type < ConfigurationSetListenerType.CONFIG_SET_LISTENER_NUM:
+      return typeString[type]
+
+    return "";
+
+  toString = staticmethod(toString)
+
+
+  ##
+  # @if jp
+  # @brief デストラクタ
+  # @else
+  # @brief Destructor
+  # @endif
+  def __del__(self):
+    pass
+
+
+  ##
+  # @if jp
+  #
+  # @brief 仮想コールバック関数
+  #
+  # ConfigurationSetListener のコールバック関数
+  #
+  # @else
+  #
+  # @brief Virtual Callback function
+  #
+  # This is a the Callback function for ConfigurationSetListener
+  #
+  # @endif
+  # virtual void operator()(const coil::Properties& config_set) = 0;
+  def __call__(self, config_set):
+    pass
+
+
+
+#============================================================
+##
+# @if jp
+# @brief ConfigurationSetNameListenerType
+#
+# @else
+# @brief The types of ConfigurationSetNameListener
+# 
+# @endif
+class ConfigurationSetNameListenerType:
+  """
+  """
+
+  def __init__(self):
+    pass
+
+  ON_UPDATE_CONFIG_SET          = 0
+  ON_REMOVE_CONFIG_SET          = 1
+  ON_ACTIVATE_CONFIG_SET        = 2
+  CONFIG_SET_NAME_LISTENER_NUM  = 3
+
+
+
+##
+# @if jp
+# @class ConfigurationSetNameListener クラス
+# @brief ConfigurationSetNameListener クラス
+#
+# ConfigurationSetに関するイベントに関するリスナークラス。
+#
+# - ON_UPDATE_CONFIG_SET:
+# - ON_REMOVE_CONFIG_SET:
+# - ON_ACTIVATE_CONFIG_SET:
+#
+# @else
+# @class ConfigurationSetNameListener class
+# @brief ConfigurationSetNameListener class
+#
+# This class is abstract base class for listener classes that
+# provides callbacks for various events for ConfigurationSet.
+#
+# - ON_UPDATE_CONFIG_SET:
+# - ON_REMOVE_CONFIG_SET:
+# - ON_ACTIVATE_CONFIG_SET:
+#
+# @endif
+class ConfigurationSetNameListener:
+  """
+  """
+
+  def __init__(self):
+    pass
+  
+
+  ##
+  # @if jp
+  #
+  # @brief ConfigurationSetNameListenerType を文字列に変換
+  #
+  # ConfigurationSetNameListenerType を文字列に変換する
+  #
+  # @param type 変換対象 ConfigurationSetNameListenerType
+  #
+  # @return 文字列変換結果
+  #
+  # @else
+  #
+  # @brief Convert ConfigurationSetNameListenerType into the string.
+  #
+  # Convert ConfigurationSetNameListenerType into the string.
+  #
+  # @param type The target ConfigurationSetNameListenerType for
+  #             transformation
+  #
+  # @return Trnasformation result of string representation
+  #
+  # @endif
+  # static const char* toString(ConfigurationSetNameListenerType type)
+  def toString(type):
+    typeString = ["ON_UPDATE_CONFIG_SET",
+                  "ON_REMOVE_CONFIG_SET",
+                  "ON_ACTIVATE_CONFIG_SET",
+                  "CONFIG_SET_NAME_LISTENER_NUM"]
+    if type < ConfigurationSetNameListenerType.CONFIG_SET_NAME_LISTENER_NUM:
+      return typeString[type]
+
+    return "";
+
+  toString = staticmethod(toString)
+
+
+  ##
+  # @if jp
+  # @brief デストラクタ
+  # @else
+  # @brief Destructor
+  # @endif
+  def __del__(self):
+    pass
+
+
+  ##
+  # @if jp
+  #
+  # @brief 仮想コールバック関数
+  #
+  # ConfigurationSetNameListener のコールバック関数
+  #
+  # @else
+  #
+  # @brief Virtual Callback function
+  #
+  # This is a the Callback function for ConfigurationSetNameListener.
+  #
+  # @endif
+  # virtual void operator()(const char* config_set_name) = 0;
+  def __call__(self, config_set_name):
+    pass
+
+
+
+##
+# @if jp
+#
+# @class Entry
+# @brief リスナーと自動削除フラグ格納用の汎用クラス
+#
+# リスナーオブジェクトと自動削除のためのフラグを格納するための汎用クラス
+#  
+# @else
+#
+# @class Entry
+# @brief Listner and autoclean-flag holder class
+#
+# A general-purpose class to store away a listener object and
+# a flag for automatic deletion
+#
+# @endif
+class Entry:
+  def __init__(self,listener,autoclean):
+    self.listener  = listener
+    self.autoclean = autoclean
+    return
+
+
+
+##
+# @if jp
+# @class ConfigurationParamListenerHolder
+# @brief ConfigurationParamListener ホルダクラス
+#
+# 複数の ConfigurationParamListener を保持し管理するクラス。
+#
+# @else
+# @class ConfigurationParamListenerHolder
+# @brief ConfigurationParamListener holder class
+#
+# This class manages one ore more instances of
+# ConfigurationParamListener class.
+#
+# @endif
+class ConfigurationParamListenerHolder:
+  """
+  """
+
+  ##
+  # @if jp
+  # @brief コンストラクタ
+  # @else
+  # @brief Constructor
+  # @endif
+  # ConfigurationParamListenerHolder();
+  def __init__(self):
+    self._listeners = []
+    pass
+  
+
+  ##
+  # @if jp
+  # @brief デストラクタ
+  # @else
+  # @brief Destructor
+  # @endif
+  def __del__(self):
+    for (idx, listener) in enumerate(self._listeners):
+      if listener.autoclean:
+        self._listeners[idx] = None
+    return
+  
+
+  ##
+  # @if jp
+  #
+  # @brief リスナーの追加
+  #
+  # リスナーを追加する。
+  #
+  # @param listener 追加するリスナ
+  # @param autoclean true:デストラクタで削除する,
+  #                  false:デストラクタで削除しない
+  # @else
+  #
+  # @brief Add the listener.
+  #
+  # This method adds the listener. 
+  #
+  # @param listener Added listener
+  # @param autoclean true:The listener is deleted at the destructor.,
+  #                  false:The listener is not deleted at the destructor. 
+  # @endif
+  # void addListener(ConfigurationParamListener* listener, bool autoclean);
+  def addListener(self, listener, autoclean):
+    self._listeners.append(Entry(listener, autoclean))
+    return
+
+
+  ##
+  # @if jp
+  #
+  # @brief リスナーの削除
+  #
+  # リスナを削除する。
+  #
+  # @param listener 削除するリスナ
+  # @else
+  #
+  # @brief Remove the listener. 
+  #
+  # This method removes the listener. 
+  #
+  # @param listener Removed listener
+  # @endif
+  # void removeListener(ConfigurationParamListener* listener);
+  def removeListener(self, listener):
+    len_ = len(self._listeners)
+    for i in range(len_):
+      idx = (len_ - 1) - i
+      if self._listeners[idx].listener == listener:
+        if self._listeners[idx].autoclean:
+          self._listeners[idx].listener = None
+          del self._listeners[idx]
+          return
+    return
+    
+
+  ##
+  # @if jp
+  #
+  # @brief リスナーへ通知する
+  #
+  # 登録されているリスナのコールバックメソッドを呼び出す。
+  #
+  # @param info ConnectorInfo
+  # @param cdrdata データ
+  # @else
+  #
+  # @brief Notify listeners. 
+  #
+  # This calls the Callback method of the registered listener. 
+  #
+  # @param info ConnectorInfo
+  # @param cdrdata Data
+  # @endif
+  # void notify(const char* config_set_name, const char* config_param_name);
+  def notify(self, config_set_name, config_param_name):
+    for listener in self._listeners:
+      listener.listener(config_set_name, config_param_name)
+    return
+    
+
+
+#============================================================
+##
+# @if jp
+# @class ConfigurationSetListenerHolder
+# @brief ConfigurationSetListener ホルダクラス
+#
+# 複数の ConfigurationSetListener を保持し管理するクラス。
+#
+# @else
+# @class ConfigurationSetListenerHolder
+# @brief ConfigurationSetListener holder class
+#
+# This class manages one ore more instances of
+# ConfigurationSetListener class.
+#
+# @endif
+class ConfigurationSetListenerHolder:
+  """
+  """
+
+  ##
+  # @if jp
+  # @brief コンストラクタ
+  # @else
+  # @brief Constructor
+  # @endif
+  # ConfigurationSetListenerHolder();
+  def __init__(self):
+    self._listeners = []
+    pass
+
+
+  ##
+  # @if jp
+  # @brief デストラクタ
+  # @else
+  # @brief Destructor
+  # @endif
+  def __del__(self):
+    for (idx, listener) in enumerate(self._listeners):
+      if listener.autoclean:
+        self._listeners[idx] = None
+    return
+    
+
+  ##
+  # @if jp
+  #
+  # @brief リスナーの追加
+  #
+  # リスナーを追加する。
+  #
+  # @param listener 追加するリスナ
+  # @param autoclean true:デストラクタで削除する,
+  #                  false:デストラクタで削除しない
+  # @else
+  #
+  # @brief Add the listener.
+  #
+  # This method adds the listener. 
+  #
+  # @param listener Added listener
+  # @param autoclean true:The listener is deleted at the destructor.,
+  #                  false:The listener is not deleted at the destructor. 
+  # @endif
+  # void addListener(ConfigurationSetListener* listener, bool autoclean);
+  def addListener(self, listener, autoclean):
+    self._listeners.append(Entry(listener, autoclean))
+    return
+  
+    
+  ##
+  # @if jp
+  #
+  # @brief リスナーの削除
+  #
+  # リスナを削除する。
+  #
+  # @param listener 削除するリスナ
+  # @else
+  #
+  # @brief Remove the listener. 
+  #
+  # This method removes the listener. 
+  #
+  # @param listener Removed listener
+  # @endif
+  # void removeListener(ConfigurationSetListener* listener);
+  def removeListener(self, listener):
+    len_ = len(self._listeners)
+    for i in range(len_):
+      idx = (len_ - 1) - i
+      if self._listeners[idx].listener == listener:
+        if self._listeners[idx].autoclean:
+          self._listeners[idx].listener = None
+          del self._listeners[idx]
+          return
+    return
+    
+
+  ##
+  # @if jp
+  #
+  # @brief リスナーへ通知する
+  #
+  # 登録されているリスナのコールバックメソッドを呼び出す。
+  #
+  # @param info ConnectorInfo
+  # @param cdrdata データ
+  # @else
+  #
+  # @brief Notify listeners. 
+  #
+  # This calls the Callback method of the registered listener. 
+  #
+  # @param info ConnectorInfo
+  # @param cdrdata Data
+  # @endif
+  # void notify(const coil::Properties& config_set);
+  def notify(self, config_set):
+    for listener in self._listeners:
+      listener.listener(config_set)
+    return
+    
+
+
+#============================================================
+##
+# @if jp
+# @class ConfigurationSetNameListenerHolder 
+# @brief ConfigurationSetNameListener ホルダクラス
+#
+# 複数の ConfigurationSetNameListener を保持し管理するクラス。
+#
+# @else
+# @class ConfigurationSetNameListenerHolder
+# @brief ConfigurationSetNameListener holder class
+#
+# This class manages one ore more instances of
+# ConfigurationSetNameListener class.
+#
+# @endif
+class ConfigurationSetNameListenerHolder:
+  """
+  """
+
+  ##
+  # @if jp
+  # @brief コンストラクタ
+  # @else
+  # @brief Constructor
+  # @endif
+  # ConfigurationSetNameListenerHolder();
+  def __init__(self):
+    self._listeners = []
+    pass
+    
+
+  ##
+  # @if jp
+  # @brief デストラクタ
+  # @else
+  # @brief Destructor
+  # @endif
+  def __del__(self):
+    for (idx, listener) in enumerate(self._listeners):
+      if listener.autoclean:
+        self._listeners[idx] = None
+    return
+
+
+  ##
+  # @if jp
+  #
+  # @brief リスナーの追加
+  #
+  # リスナーを追加する。
+  #
+  # @param listener 追加するリスナ
+  # @param autoclean true:デストラクタで削除する,
+  #                  false:デストラクタで削除しない
+  # @else
+  #
+  # @brief Add the listener.
+  #
+  # This method adds the listener. 
+  #
+  # @param listener Added listener
+  # @param autoclean true:The listener is deleted at the destructor.,
+  #                  false:The listener is not deleted at the destructor. 
+  # @endif
+  # void addListener(ConfigurationSetNameListener* listener, bool autoclean);
+  def addListener(self, listener, autoclean):
+    self._listeners.append(Entry(listener, autoclean))
+    return
+    
+
+  ##
+  # @if jp
+  #
+  # @brief リスナーの削除
+  #
+  # リスナを削除する。
+  #
+  # @param listener 削除するリスナ
+  # @else
+  #
+  # @brief Remove the listener. 
+  #
+  # This method removes the listener. 
+  #
+  # @param listener Removed listener
+  # @endif
+  # void removeListener(ConfigurationSetNameListener* listener);
+  def removeListener(self, listener):
+    len_ = len(self._listeners)
+    for i in range(len_):
+      idx = (len_ - 1) - i
+      if self._listeners[idx].listener == listener:
+        if self._listeners[idx].autoclean:
+          self._listeners[idx].listener = None
+          del self._listeners[idx]
+          return
+    return
+
+
+  ##
+  # @if jp
+  #
+  # @brief リスナーへ通知する
+  #
+  # 登録されているリスナのコールバックメソッドを呼び出す。
+  #
+  # @param info ConnectorInfo
+  # @else
+  #
+  # @brief Notify listeners. 
+  #
+  # This calls the Callback method of the registered listener. 
+  #
+  # @param info ConnectorInfo
+  # @endif
+  # void notify(const char* config_set_name);
+  def notify(self, config_set_name):
+    for listener in self._listeners:
+      listener.listener(config_set_name)
+    return
+     
+
+
+#------------------------------------------------------------
+##
+# @if jp
+# @class ConfigurationActionListeners
+# @brief ConfigurationActionListeners クラス
+#
+#
+# @else
+# @class ConfigurationActionListeners
+# @brief ConfigurationActionListeners class
+#
+#
+# @endif
+class ConfigurationListeners:
+  """
+  """
+
+  def __init__(self):
+    pass
+
+
+  ##
+  # @if jp
+  # @brief ConfigurationParamListenerTypeリスナ配列
+  # ConfigurationParamTypeリスナを格納
+  # @else
+  # @brief ConfigurationParamListenerType listener array
+  # The ConfigurationParamListenerType listener is stored.
+  # @endif
+  configparam_num = ConfigurationParamListenerType.CONFIG_PARAM_LISTENER_NUM
+  configparam_ = [ConfigurationParamListenerHolder()
+                  for i in range(configparam_num)]
+
+  ##
+  # @if jp
+  # @brief ConfigurationSetListenerTypeリスナ配列
+  # ConfigurationSetListenerTypeリスナを格納
+  # @else
+  # @brief ConfigurationSetListenerType listener array
+  # The ConfigurationSetListenerType listener is stored.
+  # @endif
+  configset_num = ConfigurationSetListenerType.CONFIG_SET_LISTENER_NUM
+  configset_ = [ConfigurationSetListenerHolder()
+                for i in range(configset_num)]
+
+  ##
+  # @if jp
+  # @brief ConfigurationSetNameListenerTypeリスナ配列
+  # ConfigurationSetNameListenerTypeリスナを格納
+  # @else
+  # @brief ConfigurationSetNameListenerType listener array
+  # The ConfigurationSetNameListenerType listener is stored. 
+  # @endif
+  configsetname_num = ConfigurationSetNameListenerType.CONFIG_SET_NAME_LISTENER_NUM
+  configsetname_ = [ConfigurationSetNameListenerHolder()
+                    for i in range(configsetname_num)]

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/ConnectorBase.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/ConnectorBase.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/ConnectorBase.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -84,6 +84,8 @@
 #
 # @endif
 class ConnectorBase(OpenRTM_aist.DataPortStatus):
+  """
+  """
 
   ##
   # @if jp

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/ConnectorListener.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/ConnectorListener.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/ConnectorListener.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -77,6 +77,93 @@
 # データポートの Connector において発生する各種イベントに対するコー
 # ルバックを実現するリスナクラスの基底クラス。
 #
+# コアロジックがOutPortに対してデータ書き込み、InPort側でデータが取
+# 得されるまでの間で発生する各種イベントをフックするコールバックを設
+# 定することができる。なお、リスナークラスは2種類存在し、バッファフ
+# ルや送信時のコールバックで、その時点で有効なデータをファンクタの引
+# 数として受け取る ConnectorDataListener であり、もう一方はデータエ
+# ンプティやバッファ読み込み時のタイムアウトなどデータが取得できない
+# 場合などにコールされるファンクタの引数に何もとらならい
+# ConnecotorListener がある。
+# 
+# データポートには、接続時にデータの送受信方法についてデータフロー型、
+# サブスクリプション型等を設定することができる。
+# ConnectorDaataListener/ConnectorListener はともに、様々なイベント
+# に対するコールバックを設定することができるが、これらデータフロー型
+# およびサブスクリプション型の設定に応じて、利用可能なもの利用不可能
+# なものや、呼び出されるタイミングが異なる。
+# 以下に、インターフェースがCORBA CDR型の場合のコールバック一覧を示す。
+# 
+# OutPort:
+#  -  Push型: Subscription Typeによりさらにイベントの種類が分かれる。
+#    - Flush: Flush型にはバッファがないため ON_BUFFER 系のイベントは発生しない
+#      - ON_SEND
+#      - ON_RECEIVED
+#      - ON_RECEIVER_FULL
+#      - ON_RECEIVER_TIMEOUT
+#      - ON_RECEIVER_ERROR
+#      - ON_CONNECT
+#      - ON_DISCONNECT
+#      .
+#    - New型
+#      - ON_BUFFER_WRITE
+#      - ON_BUFFER_FULL
+#      - ON_BUFFER_WRITE_TIMEOUT
+#      - ON_BUFFER_OVERWRITE
+#      - ON_BUFFER_READ
+#      - ON_SEND
+#      - ON_RECEIVED
+#      - ON_RECEIVER_FULL
+#      - ON_RECEIVER_TIMEOUT
+#      - ON_RECEIVER_ERROR
+#      - ON_SENDER_ERROR
+#      - ON_CONNECT
+#      - ON_DISCONNECT
+#      .
+#    - Periodic型
+#      - ON_BUFFER_WRITE
+#      - ON_BUFFER_FULL
+#      - ON_BUFFER_WRITE_TIMEOUT
+#      - ON_BUFFER_READ
+#      - ON_SEND
+#      - ON_RECEIVED
+#      - ON_RECEIVER_FULL
+#      - ON_RECEIVER_TIMEOUT
+#      - ON_RECEIVER_ERROR
+#      - ON_BUFFER_EMPTY
+#      - ON_SENDER_EMPTY
+#      - ON_SENDER_ERROR
+#      - ON_CONNECT
+#      - ON_DISCONNECT
+#      .
+#    .
+#  - Pull型
+#    - ON_BUFFER_READ
+#    - ON_SEND
+#    - ON_BUFFER_EMPTY
+#    - ON_BUFFER_READ_TIMEOUT
+#    - ON_SENDER_EMPTY
+#    - ON_SENDER_TIMEOUT
+#    - ON_SENDER_ERROR
+#    - ON_CONNECT
+#    - ON_DISCONNECT
+# 
+#  InPort:
+#  - Push型:
+#      - ON_BUFFER_WRITE
+#      - ON_BUFFER_FULL
+#      - ON_BUFFER_WRITE_TIMEOUT
+#      - ON_BUFFER_WRITE_OVERWRITE
+#      - ON_RECEIVED
+#      - ON_RECEIVER_FULL
+#      - ON_RECEIVER_TIMEOUT
+#      - ON_RECEIVER_ERROR
+#      - ON_CONNECT
+#      - ON_DISCONNECT
+#      .
+#  - Pull型
+#      - ON_CONNECT
+#      - ON_DISCONNECT
 # @else
 # @class ConnectorDataListener class
 #
@@ -87,6 +174,9 @@
 # @endif
 #
 class ConnectorDataListener:
+  """
+  """
+
   def __del__(self):
     pass
 
@@ -164,10 +254,36 @@
 # @endif
 #
 class ConnectorDataListenerT(ConnectorDataListener):
+  """
+  """
+
   def __del__(self):
     pass
 
 
+  ##
+  # @if jp
+  #
+  # @brief コールバックメソッド
+  #
+  # データをデータポートで使用される変数型に変換して ConnectorDataListenerT
+  # のコールバックメソッドを呼び出す。
+  #
+  # @param info ConnectorInfo 
+  # @param cdrdata cdrMemoryStream型のデータ
+  #
+  # @else
+  #
+  # @brief Callback method
+  #
+  # This method invokes the callback method of ConnectorDataListenerT. 
+  # Data is converted into the variable type used in DataPort.
+  #
+  # @param info ConnectorInfo 
+  # @param cdrdata Data of cdrMemoryStream type
+  #
+  # @endif
+  #
   # virtual void operator()(const ConnectorInfo& info,
   #                         const cdrMemoryStream& cdrdata)
   def __call__(self, info, cdrdata, data):
@@ -237,6 +353,93 @@
 # データポートの Connector において発生する各種イベントに対するコー
 # ルバックを実現するリスナクラスの基底クラス。
 #
+# コアロジックがOutPortに対してデータ書き込み、InPort側でデータが取
+# 得されるまでの間で発生する各種イベントをフックするコールバックを設
+# 定することができる。なお、リスナークラスは2種類存在し、バッファフ
+# ルや送信時のコールバックで、その時点で有効なデータをファンクタの引
+# 数として受け取る ConnectorDataListener であり、もう一方はデータエ
+# ンプティやバッファ読み込み時のタイムアウトなどデータが取得できない
+# 場合などにコールされるファンクタの引数に何もとらならい
+# ConnecotorListener がある。
+#
+# データポートには、接続時にデータの送受信方法についてデータフロー型、
+# サブスクリプション型等を設定することができる。
+# ConnectorDaataListener/ConnectorListener は共にに、様々なイベント
+# に対するコールバックを設定することができるが、これらデータフロー型
+# およびサブスクリプション型の設定に応じて、利用できるもの、できない
+# もの、また呼び出されるタイミングが異なる。以下に、インターフェース
+# がCORBA CDR型の場合のコールバック一覧を示す。
+#
+# OutPort:
+# -  Push型: Subscription Typeによりさらにイベントの種類が分かれる。
+#   - Flush: Flush型にはバッファがないため ON_BUFFER 系のイベントは発生しない
+#     - ON_SEND
+#     - ON_RECEIVED
+#     - ON_RECEIVER_FULL
+#     - ON_RECEIVER_TIMEOUT
+#     - ON_RECEIVER_ERROR
+#     - ON_CONNECT
+#     - ON_DISCONNECT
+#     .
+#   - New型
+#     - ON_BUFFER_WRITE
+#     - ON_BUFFER_FULL
+#     - ON_BUFFER_WRITE_TIMEOUT
+#     - ON_BUFFER_OVERWRITE
+#     - ON_BUFFER_READ
+#     - ON_SEND
+#     - ON_RECEIVED
+#     - ON_RECEIVER_FULL
+#     - ON_RECEIVER_TIMEOUT
+#     - ON_RECEIVER_ERROR
+#     - ON_SENDER_ERROR
+#     - ON_CONNECT
+#     - ON_DISCONNECT
+#     .
+#   - Periodic型
+#     - ON_BUFFER_WRITE
+#     - ON_BUFFER_FULL
+#     - ON_BUFFER_WRITE_TIMEOUT
+#     - ON_BUFFER_READ
+#     - ON_SEND
+#     - ON_RECEIVED
+#     - ON_RECEIVER_FULL
+#     - ON_RECEIVER_TIMEOUT
+#     - ON_RECEIVER_ERROR
+#     - ON_BUFFER_EMPTY
+#     - ON_SENDER_EMPTY
+#     - ON_SENDER_ERROR
+#     - ON_CONNECT
+#     - ON_DISCONNECT
+#     .
+#   .
+# - Pull型
+#   - ON_BUFFER_READ
+#   - ON_SEND
+#   - ON_BUFFER_EMPTY
+#   - ON_BUFFER_READ_TIMEOUT
+#   - ON_SENDER_EMPTY
+#   - ON_SENDER_TIMEOUT
+#   - ON_SENDER_ERROR
+#   - ON_CONNECT
+#   - ON_DISCONNECT
+#
+# InPort:
+# - Push型:
+#     - ON_BUFFER_WRITE
+#     - ON_BUFFER_FULL
+#     - ON_BUFFER_WRITE_TIMEOUT
+#     - ON_BUFFER_WRITE_OVERWRITE
+#     - ON_RECEIVED
+#     - ON_RECEIVER_FULL
+#     - ON_RECEIVER_TIMEOUT
+#     - ON_RECEIVER_ERROR
+#     - ON_CONNECT
+#     - ON_DISCONNECT
+#     .
+# - Pull型
+#     - ON_CONNECT
+#     - ON_DISCONNECT
 # @else
 # @class ConnectorListener class
 #
@@ -247,6 +450,9 @@
 # @endif
 #
 class ConnectorListener:
+  """
+  """
+
   def __del__(self):
     pass
 
@@ -309,11 +515,28 @@
 # @endif
 #
 class ConnectorDataListenerHolder:
+  """
+  """
+
+  ##
+  # @if jp
+  # @brief コンストラクタ
+  # @else
+  # @brief Constructor
+  # @endif
+  #
   def __init__(self):
     self._listeners = []
     return
 
 
+  ##
+  # @if jp
+  # @brief デストラクタ
+  # @else
+  # @brief Destructor
+  # @endif
+  #
   def __del__(self):
     for listener in self._listeners:
       for (k,v) in listener.iteritems():
@@ -322,12 +545,54 @@
     return
 
     
+  ##
+  # @if jp
+  #
+  # @brief リスナーの追加
+  #
+  # リスナーを追加する。
+  #
+  # @param self
+  # @param listener 追加するリスナ
+  # @param autoclean true:デストラクタで削除する,
+  #                  false:デストラクタで削除しない
+  # @else
+  #
+  # @brief Add the listener.
+  #
+  # This method adds the listener. 
+  #
+  # @param self
+  # @param listener Added listener
+  # @param autoclean true:The listener is deleted at the destructor.,
+  #                  false:The listener is not deleted at the destructor. 
+  # @endif
+  #
   # void addListener(ConnectorDataListener* listener, bool autoclean);
   def addListener(self, listener, autoclean):
     self._listeners.append({listener:autoclean})
     return
 
     
+  ##
+  # @if jp
+  #
+  # @brief リスナーの削除
+  #
+  # リスナを削除する。
+  #
+  # @param self
+  # @param listener 削除するリスナ
+  # @else
+  #
+  # @brief Remove the listener. 
+  #
+  # This method removes the listener. 
+  #
+  # @param self
+  # @param listener Removed listener
+  # @endif
+  #
   # void removeListener(ConnectorDataListener* listener);
   def removeListener(self, listener):
     for (i, _listener) in enumerate(self._listeners):
@@ -336,6 +601,27 @@
         return
 
     
+  ##
+  # @if jp
+  #
+  # @brief リスナーへ通知する
+  #
+  # 登録されているリスナのコールバックメソッドを呼び出す。
+  #
+  # @param self
+  # @param info ConnectorInfo
+  # @param cdrdata データ
+  # @else
+  #
+  # @brief Notify listeners. 
+  #
+  # This calls the Callback method of the registered listener. 
+  #
+  # @param self
+  # @param info ConnectorInfo
+  # @param cdrdata Data
+  # @endif
+  #
   # void notify(const ConnectorInfo& info,
   #             const cdrMemoryStream& cdrdata);
   def notify(self, info, cdrdata):
@@ -359,12 +645,28 @@
 # @endif
 #
 class ConnectorListenerHolder:
+  """
+  """
 
+  ##
+  # @if jp
+  # @brief コンストラクタ
+  # @else
+  # @brief Constructor
+  # @endif
+  #
   def __init__(self):
     self._listeners = []
     return
 
     
+  ##
+  # @if jp
+  # @brief デストラクタ
+  # @else
+  # @brief Destructor
+  # @endif
+  #
   def __del__(self):
     for listener in self._listeners:
       for (k,v) in listener.iteritems():
@@ -373,12 +675,54 @@
     return
         
     
+  ##
+  # @if jp
+  #
+  # @brief リスナーの追加
+  #
+  # リスナーを追加する。
+  #
+  # @param self
+  # @param listener 追加するリスナ
+  # @param autoclean true:デストラクタで削除する,
+  #                  false:デストラクタで削除しない
+  # @else
+  #
+  # @brief Add the listener.
+  #
+  # This method adds the listener. 
+  #
+  # @param self
+  # @param listener Added listener
+  # @param autoclean true:The listener is deleted at the destructor.,
+  #                  false:The listener is not deleted at the destructor. 
+  # @endif
+  #
   # void addListener(ConnectorListener* listener, bool autoclean);
   def addListener(self, listener, autoclean):
     self._listeners.append({listener:autoclean})
     return
 
 
+  ##
+  # @if jp
+  #
+  # @brief リスナーの削除
+  #
+  # リスナを削除する。
+  #
+  # @param self
+  # @param listener 削除するリスナ
+  # @else
+  #
+  # @brief Remove the listener. 
+  #
+  # This method removes the listener. 
+  #
+  # @param self
+  # @param listener Removed listener
+  # @endif
+  #
   # void removeListener(ConnectorListener* listener);
   def removeListener(self, listener):
     for (i, _listener) in enumerate(self._listeners):
@@ -387,6 +731,25 @@
         return
 
 
+  ##
+  # @if jp
+  #
+  # @brief リスナーへ通知する
+  #
+  # 登録されているリスナのコールバックメソッドを呼び出す。
+  #
+  # @param self
+  # @param info ConnectorInfo
+  # @else
+  #
+  # @brief Notify listeners. 
+  #
+  # This calls the Callback method of the registered listener. 
+  #
+  # @param self
+  # @param info ConnectorInfo
+  # @endif
+  #
   # void notify(const ConnectorInfo& info);
   def notify(self, info):
     for listener in self._listeners:

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/CorbaNaming.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/CorbaNaming.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/CorbaNaming.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -18,6 +18,8 @@
 import omniORB.CORBA as CORBA
 import CosNaming
 import string
+import sys
+import traceback
 
 ##
 # @if jp
@@ -91,6 +93,7 @@
           print "CorbaNaming: Failed to narrow the root naming context."
 
       except CORBA.ORB.InvalidName:
+        self.__print_exception()
         print "Service required is invalid [does not exist]."
 
     return
@@ -155,6 +158,7 @@
         return False
       return True
     except:
+      self.__print_exception()
       return False
 
     return False
@@ -342,12 +346,14 @@
       if force:
         self.rebindRecursive(self._rootContext, name_list, obj)
       else:
+        self.__print_exception()
         raise
 
     except CosNaming.NamingContext.CannotProceed, err:
       if force:
         self.rebindRecursive(err.cxt, err,rest_of_name, obj)
       else:
+        self.__print_exception()
         raise
       
     return
@@ -569,6 +575,7 @@
       obj = self._rootContext.resolve(name_)
       return obj
     except CosNaming.NamingContext.NotFound, ex:
+      self.__print_exception()
       return None
 
 
@@ -608,7 +615,7 @@
     try:
       self._rootContext.unbind(name_)
     except:
-      pass
+      self.__print_exception()
 
     return
 
@@ -673,11 +680,13 @@
       if force:
         self.bindRecursive(self._rootContext, name_, self.newContext())
       else:
+        self.__print_exception()
         raise
     except CosNaming.NamingContext.CannotProceed, err:
       if force:
         self.bindRecursive(err.cxt, err.rest_of_name, self.newContext())
       else:
+        self.__print_exception()
         raise
     return None
 
@@ -1213,3 +1222,25 @@
         pre_pos   = begin_pos
 
     return len(results)
+
+
+  ##
+  # @if jp
+  #
+  # @brief 例外情報出力
+  #  例外情報を出力する。
+  #
+  # @else
+  #
+  # @brief Print exception information 
+  #  Print exception information 
+  # @endif
+  def __print_exception(self):
+    if sys.version_info[0:3] >= (2, 4, 0):
+      print traceback.format_exc()
+    else:
+      _exc_list = traceback.format_exception(*sys.exc_info())
+      _exc_str = "".join(_exc_list)
+      print _exc_str
+
+    return

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/CorbaPort.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/CorbaPort.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/CorbaPort.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -628,6 +628,10 @@
     return
 
 
+  def __del__(self, PortBase=OpenRTM_aist.PortBase):
+    PortBase.__del__(self)
+
+
   ##
   # @if jp
   # @brief プロパティの初期化
@@ -720,6 +724,7 @@
                                                       provider))
     except:
       self._rtcout.RTC_ERROR("appending provider interface failed")
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       return False
 
     
@@ -1396,11 +1401,6 @@
       _mgr = OpenRTM_aist.Manager.instance()
       self._oid = _mgr.getPOA().servant_to_id(self._servant)
 
-      try:
-        _mgr.getPOA().activate_object_with_id(self._oid, self._servant)
-      except:
-        print sys.exc_info()[0]
-        
       obj = _mgr.getPOA().id_to_reference(self._oid)
       self._ior = _mgr.getORB().object_to_string(obj)
       self.deactivate()
@@ -1430,7 +1430,7 @@
       try:
         OpenRTM_aist.Manager.instance().getPOA().activate_object_with_id(self._oid, self._servant)
       except:
-        print sys.exc_info()[0]
+        print OpenRTM_aist.Logger.print_exception()
       return
 
     # void deactivate()
@@ -1438,7 +1438,7 @@
       try:
         OpenRTM_aist.Manager.instance().getPOA().deactivate_object(self._oid)
       except:
-        print sys.exc_info()[0]
+        print OpenRTM_aist.Logger.print_exception()
       return
     
 
@@ -1528,7 +1528,7 @@
             obj = any.from_any(nv.value, keep_structs=True)
             self._cons[i].setObject(obj)
           except:
-            traceback.print_exception(*sys.exc_info())
+            print OpenRTM_aist.Logger.print_exception()
 
 
 

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/DataPortStatus.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/DataPortStatus.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/DataPortStatus.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -17,40 +17,179 @@
 #
 
 
+##
+# @if jp
+# @class DataPortStatus mixin class
+# @brief DataPortStatus mixin クラス
+#
+# このクラスは、enum定義されたリターンコードを、データポート関連のサ
+# ブクラスで共通利用するための mixin クラスである。このリターンコー
+# ドを使用するクラスでは、DataPortStatus クラスをpublic 継承し、下に
+# define してあるDATAPORTSTATUS_ENUM をクラス内に記述することで利用
+# 可能となる。これにより、enum を ReturnCode_t 型として typedef し、
+# 以後ReturnCode_t を利用できるようにするとともに、名前空間に enum
+# 定義された各識別子を当該クラス名前空間内に導入する。
+#
+# @else
+# @class DataPortStatus mixin class
+# @brief DataPortStatus mixin class
+#
+# This is a mixin class to provide enumed return codes that are
+# commonly utilised in data port related sub-classes. To use this
+# class, sub-class should inherit this class as a public super
+# class, and declare DATAPORTSTATUS_ENUM defined
+# below. Consequently, ReturnCode_t type that is typedefed by this
+# macro can be used in the sub-class, and enumed identifiers are
+# imported to the class's namespace.
+#
+# @endif
+#
 class DataPortStatus:
-    def __init__(self):
-        pass
+  """
+  """
 
-    PORT_OK              = 0
-    PORT_ERROR           = 1
-    BUFFER_ERROR         = 2
-    BUFFER_FULL          = 3
-    BUFFER_EMPTY         = 4
-    BUFFER_TIMEOUT       = 5
-    SEND_FULL            = 6
-    SEND_TIMEOUT         = 7
-    RECV_EMPTY           = 8
-    RECV_TIMEOUT         = 9
-    INVALID_ARGS         = 10
-    PRECONDITION_NOT_MET = 11    
-    CONNECTION_LOST      = 12
-    UNKNOWN_ERROR        = 13
+  def __init__(self):
+    pass
 
-    def toString(status):
-        str = ["PORT_OK",
-               "PORT_ERROR",
-               "BUFFER_ERROR",
-               "BUFFER_FULL",
-               "BUFFER_EMPTY",
-               "BUFFER_TIMEOUT",
-               "SEND_FULL",
-               "SEND_TIMEOUT",
-               "RECV_EMPTY",
-               "RECV_TIMEOUT",
-               "INVALID_ARGS",
-               "PRECONDITION_NOT_MET",
-               "CONNECTION_LOST",
-               "UNKNOWN_ERROR"]
-        return str[status]
+  ##
+  # @if jp
+  # brief DataPortStatus リターンコード
+  #
+  # データポート関連のクラスで共通のリターンコード
+  #  
+  # - PORT_OK:              正常終了
+  # - PORT_ERROR:           異常終了
+  # - BUFFER_ERROR:         バッファエラー
+  # - BUFFER_FULL:          バッファフル
+  # - BUFFER_EMPTY:         バッファエンプティ
+  # - BUFFER_TIMEOUT:       バッファタイムアウト
+  # - SEND_FULL:            データを送ったが相手側がバッファフル状態
+  # - SEND_TIMEOUT:         データを送ったが相手側がタイムアウトした
+  # - RECV_EMPTY:           データを受信しようとしたがデータが空状態
+  # - RECV_TIMEOUT:         データを受信しようとしたがタイムうとした
+  # - INVALID_ARGS:         不正な引数
+  # - PRECONDITION_NOT_MET: 事前条件を満たしていない
+  # - CONNECTION_LOST:      接続が切断された
+  # - UNKNOWN_ERROR:        不明なエラー
+  #
+  # データポートのデータ経路上のエラー発生個所から呼び出し側へエラー
+  # 情報を伝えるためにこのエラーコードを使用する。主に、伝送路上のエ
+  # ラー、伝送先のエラーなどが考えられるが、各部分の界面で発生するエ
+  # ラーを以下に列挙する。
+  #
+  # (1) Push型
+  #  a) InPortConsumer と Publisher/Activity 間で発生するリターンコード
+  #     PORT_OK, PORT_ERROR, SEND_FULL, SEND_TIMEOUT, CONNECTION_LOST,
+  #     UNKNOWN_ERROR
+  #
+  #  b) Activity と OutPort の Buffer/Connector 間で発生するリターンコード
+  #     PORT_OK, PORT_ERROR, BUFFER_ERROR, BUFFER_FULL, BUFFER_TIMEOUT,
+  #     UNKNOWN_ERROR, 
+  #
+  # (2) Pull型
+  #  a) Activity と InPort の間で発生するリターンコード
+  #     PORT_OK, PORT_ERROR, RECV_EMPTY, RECV_TIMEOUT, CONNETION_LOST,
+  #     UNKNOWN_ERROR
+  #
+  # 各関数が返すリターンコードは関数ごとのリファレンスを参照のこと。
+  #
+  # @else
+  # @brief DataPortStatus return codes
+  #
+  # Common return codes for data ports related classes.
+  #
+  # - PORT_OK:              Normal return
+  # - PORT_ERROR:           Error return
+  # - BUFFER_ERROR:         Buffer error
+  # - BUFFER_FULL:          Buffer full
+  # - BUFFER_EMPTY:         Buffer empty
+  # - BUFFER_TIMEOUT:       Buffer timeout
+  # - SEND_FULL:            Buffer full although OutPort tried to send data
+  # - SEND_TIMEOUT:         Timeout although OutPort tried to send data
+  # - RECV_EMPTY:           Buffer empty although InPort tried to receive
+  #                         data
+  # - RECV_TIMEOUT:         Timeout although InPort tried to receive data
+  # - INVALID_ARGS:         Invalid arguments
+  # - PRECONDITION_NOT_MET: Precondition not met
+  # - CONNECTION_LOST:      Connection has been lost
+  # - UNKNOWN_ERROR:        Unknown error
+  #
+  # This error codes might be used to propagate error status from
+  # the error occurring point to the function caller in the data
+  # stream path. It would occur in data-transfer path and data
+  # receiver/sender. The errors that occur in the interface of each
+  # portion of data port are shown below.
+  #
+  # (1) Push Type
+  #  a) The return codes between InPortConsumer and Publisher/Activity
+  #     PORT_OK, PORT_ERROR, SEND_FULL, SEND_TIMEOUT, CONNECTION_LOST,
+  #     UNKNOWN_ERROR
+  #  b) The return codes between Activity and Buffer/Connector of OutPort
+  #     PORT_OK, PORT_ERROR, BUFFER_ERROR, BUFFER_FULL, BUFFER_TIMEOUT,
+  #     UNKNOWN_ERROR, 
+  #
+  # (2) Pull Type
+  #  a) The return codes between Activity and InPort
+  #     PORT_OK, PORT_ERROR, RECV_EMPTY, RECV_TIMEOUT, CONNETION_LOST,
+  #     UNKNOWN_ERROR
+  #
+  # See function references for detailed return codes for each function.
+  #
+  # @endif
+  #
+  PORT_OK              = 0
+  PORT_ERROR           = 1
+  BUFFER_ERROR         = 2
+  BUFFER_FULL          = 3
+  BUFFER_EMPTY         = 4
+  BUFFER_TIMEOUT       = 5
+  SEND_FULL            = 6
+  SEND_TIMEOUT         = 7
+  RECV_EMPTY           = 8
+  RECV_TIMEOUT         = 9
+  INVALID_ARGS         = 10
+  PRECONDITION_NOT_MET = 11    
+  CONNECTION_LOST      = 12
+  UNKNOWN_ERROR        = 13
 
-    toString = staticmethod(toString)
+  ##
+  # @if jp
+  #
+  # @brief DataPortStatus リターンコードを文字列に変換
+  #
+  # DataPortStatus リターンコードを文字列に変換する
+  #
+  # @param status 変換対象 DataPortStatus リターンコード
+  #
+  # @return 文字列変換結果
+  #
+  # @else
+  #
+  # @brief Convert DataPortStatus into the string.
+  #
+  # Convert DataPortStatus into the string.
+  #
+  # @param status The target DataPortStatus for transformation
+  #
+  # @return Trnasformation result of string representation
+  #
+  # @endif
+  #
+  def toString(status):
+    str = ["PORT_OK",
+           "PORT_ERROR",
+           "BUFFER_ERROR",
+           "BUFFER_FULL",
+           "BUFFER_EMPTY",
+           "BUFFER_TIMEOUT",
+           "SEND_FULL",
+           "SEND_TIMEOUT",
+           "RECV_EMPTY",
+           "RECV_TIMEOUT",
+           "INVALID_ARGS",
+           "PRECONDITION_NOT_MET",
+           "CONNECTION_LOST",
+           "UNKNOWN_ERROR"]
+    return str[status]
+
+  toString = staticmethod(toString)

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/DefaultConfiguration.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/DefaultConfiguration.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/DefaultConfiguration.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -29,7 +29,8 @@
 # @else
 # @endif
 default_config =["config.version",                   OpenRTM_aist.openrtm_version,
-                 "openrtm.version",                  OpenRTM_aist.openrtm_name,
+                 "openrtm.name",                     OpenRTM_aist.openrtm_name,
+                 "openrtm.version",                  OpenRTM_aist.openrtm_version,
                  "manager.instance_name",            "manager",
                  "manager.name",                     "manager",
                  "manager.naming_formats",           "%h.host_cxt/%n.mgr",
@@ -70,7 +71,10 @@
                  "manager.corba_servant",            "YES",
                  "manager.shutdown_on_nortcs",       "YES",
                  "manager.shutdown_auto",            "YES",
+                 "manager.auto_shutdown_duration",   "10.0",
                  "manager.name",                     "manager",
                  "manager.command",                  "rtcd",
                  "manager.language",                 "Python",
+                 "sdo.service.provider.enabled_service",  "ALL",
+                 "sdo.service.consumer.enabled_service",  "ALL",
                  ""]

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/ECFactory.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/ECFactory.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/ECFactory.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -56,9 +56,9 @@
 #
 # @endif
 class ECFactoryBase :
+  """
+  """
 
-
-
   ##
   # @if jp
   #
@@ -130,9 +130,9 @@
 #
 # @endif
 class ECFactoryPython(ECFactoryBase):
+  """
+  """
 
-
-
   ##
   # @if jp
   #

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/ExecutionContextBase.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/ExecutionContextBase.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/ExecutionContextBase.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -33,8 +33,9 @@
   """
   """
 
+  def __del__(self):
+    return
 
-
   ##
   # @if jp
   # @brief ExecutionContextの処理を進める(サブクラス実装用)

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/ExtTrigExecutionContext.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/ExtTrigExecutionContext.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/ExtTrigExecutionContext.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -96,7 +96,6 @@
     flag = True
 
     while flag:
-      flag = self._running
       sec_ = float(self._usec)/1000000.0
       self._worker._cond.acquire()
       while not self._worker._called and self._running:
@@ -105,10 +104,9 @@
         self._worker._called = False
         for comp in self._comps:
           comp._sm.worker()
-        while not self._running:
-          time.sleep(sec_)
-        time.sleep(sec_)
+
       self._worker._cond.release()
+      flag = self._running
 
   ##
   # @if jp
@@ -123,9 +121,9 @@
   #
   # @endif
   class Worker:
+    """
+    """
     
-    
-    
     ##
     # @if jp
     # @brief コンストラクタ

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/Factory.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/Factory.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/Factory.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -59,9 +59,9 @@
 #
 # @endif
 class FactoryBase:
+  """
+  """
 
-
-
   ##
   # @if jp
   #
@@ -201,9 +201,9 @@
 #
 # @endif
 class FactoryPython(FactoryBase):
+  """
+  """
 
-
-
   ##
   # @if jp
   #
@@ -285,6 +285,7 @@
 
       return rtobj
     except:
+      print OpenRTM_aist.Logger.print_exception()
       return None
 
 

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/GlobalFactory.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/GlobalFactory.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/GlobalFactory.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -47,7 +47,7 @@
 
     for id in self._creators.keys():
       idlist.append(id)
-
+    idlist.sort()
     return idlist
 
 

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/Guard.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/Guard.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/Guard.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -30,9 +30,9 @@
 #
 # @endif
 class ScopedLock:
+  """
+  """
 
-
-
   ##
   # @if jp
   # @brief コンストラクタ

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/InPort.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/InPort.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/InPort.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -18,60 +18,12 @@
 from omniORB import any
 import sys
 import copy
+import time
 
 import OpenRTM_aist
 
-TIMEOUT_TICK_USEC = 10.0
-USEC_PER_SEC      = 1000000.0
-TIMEOUT_TICK_SEC = TIMEOUT_TICK_USEC/USEC_PER_SEC
-
-
-import time
-
-
-
 ##
 # @if jp
-# @class Time
-# @brief 時間管理用クラス
-# 
-# 指定した時間値を保持するためのクラス。
-# 
-# @since 0.4.1
-# 
-# @else
-# 
-# @endif
-class Time:
-
-
-
-  ##
-  # @if jp
-  # @brief コンストラクタ
-  #
-  # コンストラクタ。
-  #
-  # @param self
-  #
-  # @else
-  # @brief Constructor.
-  #
-  # Constructor.
-  #
-  # @param self
-  #
-  # @endif
-  def __init__(self):
-    tm = time.time()
-    tm_f       = tm - int(tm)     # 小数部の取り出し
-    self.sec   = int(tm - tm_f)   # 整数部の取り出し
-    self.usec  = int(tm_f * USEC_PER_SEC) # sec -> usec (micro second)
-
-
-
-##
-# @if jp
 #
 # @class InPort
 #
@@ -156,6 +108,10 @@
     self._OnReadConvert  = None
 
 
+  def __del__(self, InPortBase=OpenRTM_aist.InPortBase):
+    InPortBase.__del__(self)
+    return
+
   ##
   # @if jp
   # @brief ポート名称を取得する。

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/InPortBase.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/InPortBase.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/InPortBase.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -56,6 +56,8 @@
 # @endif
 #
 class InPortBase(OpenRTM_aist.PortBase, OpenRTM_aist.DataPortStatus):
+  """
+  """
 
   ##
   # @if jp
@@ -118,7 +120,7 @@
   #
   # @endif
   #
-  def __del__(self):
+  def __del__(self, PortBase=OpenRTM_aist.PortBase):
     self._rtcout.RTC_TRACE("InPortBase destructor")
 
     if len(self._connectors) != 0:
@@ -132,6 +134,7 @@
       if not self._singlebuffer:
         self._rtcout.RTC_ERROR("Although singlebuffer flag is true, the buffer != 0")
 
+    PortBase.__del__(self)
     return
 
 
@@ -727,7 +730,7 @@
   # void addConnectorListener(ConnectorListenerType type,
   #                           ConnectorListener* listener,
   #                           bool autoclean)
-  def addConnectorListener(self, listener_type, listener, autoclean):
+  def addConnectorListener(self, listener_type, listener, autoclean = True):
     self._rtcout.RTC_TRACE("addConnectorListener()")
 
     if listener_type < OpenRTM_aist.ConnectorListenerType.CONNECTOR_LISTENER_NUM:
@@ -1218,6 +1221,7 @@
       return connector
     except:
       self._rtcout.RTC_ERROR("InPortPushConnector creation failed")
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       return 0
 
     self._rtcout.RTC_FATAL("never comes here: createConnector()")

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/InPortConnector.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/InPortConnector.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/InPortConnector.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -41,6 +41,9 @@
 # @endif
 #
 class InPortConnector(OpenRTM_aist.ConnectorBase):
+  """
+  """
+
   ##
   # @if jp
   # @brief コンストラクタ

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/InPortCorbaCdrConsumer.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/InPortCorbaCdrConsumer.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/InPortCorbaCdrConsumer.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -50,6 +50,8 @@
 # @endif
 #
 class InPortCorbaCdrConsumer(OpenRTM_aist.InPortConsumer,OpenRTM_aist.CorbaConsumer):
+  """
+  """
 
   ##
   # @if jp
@@ -87,8 +89,9 @@
   #
   # @endif
   #
-  def __del__(self):
+  def __del__(self, CorbaConsumer=OpenRTM_aist.CorbaConsumer):
     self._rtcout.RTC_PARANOID("~InPortCorbaCdrConsumer()")
+    CorbaConsumer.__del__(self)
     return
 
   ##
@@ -107,6 +110,7 @@
   #
   # virtual void init(coil::Properties& prop);
   def init(self, prop):
+    self._rtcout.RTC_TRACE("init()")
     self._properties = prop
     return
 
@@ -147,11 +151,13 @@
     self._rtcout.RTC_PARANOID("put()")
 
     try:
-      if self._ptr():
-        return self.convertReturnCode(self._ptr().put(data))
+      ref_ = self.getObject()
+      if ref_:
+        inportcdr = ref_._narrow(OpenRTM.InPortCdr)
+        return self.convertReturnCode(inportcdr.put(data))
       return self.CONNECTION_LOST
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       return self.CONNECTION_LOST
         
     return self.UNKNOWN_ERROR
@@ -275,7 +281,7 @@
     try:
       ior = any.from_any(properties[index].value, keep_structs=True)
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
 
     if not ior:
       self._rtcout.RTC_ERROR("inport_ior has no string")
@@ -320,7 +326,7 @@
     try:
       obj = any.from_any(properties[index].value, keep_structs=True)
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
     
     if not obj:
       self._rtcout.RTC_ERROR("prop[inport_ref] is not objref")
@@ -362,7 +368,7 @@
     try:
       ior = any.from_any(properties[index].value, keep_structs=True)
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
 
     if not ior:
       self._rtcout.RTC_ERROR("prop[inport_ior] is not string")
@@ -403,7 +409,7 @@
     try:
       obj = any.from_any(properties[index].value, keep_structs=True)
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
     
     if not obj:
       return False

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/InPortCorbaCdrProvider.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/InPortCorbaCdrProvider.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/InPortCorbaCdrProvider.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -50,214 +50,227 @@
 class InPortCorbaCdrProvider(OpenRTM_aist.InPortProvider,
                              OpenRTM__POA.InPortCdr):
     
-    ##
-    # @if jp
-    # @brief コンストラクタ
-    #
-    # コンストラクタ
-    # ポートプロパティに以下の項目を設定する。
-    #  - インターフェースタイプ : CORBA_Any
-    #  - データフロータイプ : Push, Pull
-    #  - サブスクリプションタイプ : Any
-    #
-    # @param buffer 当該プロバイダに割り当てるバッファオブジェクト
-    #
-    # @else
-    # @brief Constructor
-    #
-    # Constructor
-    # Set the following items to port properties
-    #  - Interface type : CORBA_Any
-    #  - Data flow type : Push, Pull
-    #  - Subscription type : Any
-    #
-    # @param buffer Buffer object that is attached to this provider
-    #
-    # @endif
-    #
-    def __init__(self):
-        OpenRTM_aist.InPortProvider.__init__(self)
+  """
+  """
 
-        # PortProfile setting
-        self.setInterfaceType("corba_cdr")
+  ##
+  # @if jp
+  # @brief コンストラクタ
+  #
+  # コンストラクタ
+  # ポートプロパティに以下の項目を設定する。
+  #  - インターフェースタイプ : CORBA_Any
+  #  - データフロータイプ : Push, Pull
+  #  - サブスクリプションタイプ : Any
+  #
+  # @param buffer 当該プロバイダに割り当てるバッファオブジェクト
+  #
+  # @else
+  # @brief Constructor
+  #
+  # Constructor
+  # Set the following items to port properties
+  #  - Interface type : CORBA_Any
+  #  - Data flow type : Push, Pull
+  #  - Subscription type : Any
+  #
+  # @param buffer Buffer object that is attached to this provider
+  #
+  # @endif
+  #
+  def __init__(self):
+    OpenRTM_aist.InPortProvider.__init__(self)
+
+    # PortProfile setting
+    self.setInterfaceType("corba_cdr")
     
-        # ConnectorProfile setting
-        self._objref = self._this()
+    # ConnectorProfile setting
+    self._objref = self._this()
+    
+    self._buffer = None
 
-        self._buffer = None
+    self._profile = None
+    self._listeners = None
 
-        self._profile = None
-        self._listeners = None
+    # set InPort's reference
+    orb = OpenRTM_aist.Manager.instance().getORB()
 
-        # set InPort's reference
-        orb = OpenRTM_aist.Manager.instance().getORB()
+    self._properties.append(OpenRTM_aist.NVUtil.newNV("dataport.corba_cdr.inport_ior",
+                                                      orb.object_to_string(self._objref)))
+    self._properties.append(OpenRTM_aist.NVUtil.newNV("dataport.corba_cdr.inport_ref",
+                                                      self._objref))
 
-        self._properties.append(OpenRTM_aist.NVUtil.newNV("dataport.corba_cdr.inport_ior",
-                                                          orb.object_to_string(self._objref)))
-        self._properties.append(OpenRTM_aist.NVUtil.newNV("dataport.corba_cdr.inport_ref",
-                                                          self._objref))
+    return
 
-    ##
-    # @if jp
-    # @brief デストラクタ
-    #
-    # デストラクタ
-    #
-    # @else
-    # @brief Destructor
-    #
-    # Destructor
-    #
-    # @endif
-    #
-    def __del__(self):
-        oid = OpenRTM_aist.Manager.instance().getPOA.servant_to_id(self)
-        OpenRTM_aist.Manager.instance().getPOA.deactivate_object(oid)
+  ##
+  # @if jp
+  # @brief デストラクタ
+  #
+  # デストラクタ
+  #
+  # @else
+  # @brief Destructor
+  #
+  # Destructor
+  #
+  # @endif
+  #
+  def __del__(self):
+    oid = OpenRTM_aist.Manager.instance().getPOA.servant_to_id(self)
+    OpenRTM_aist.Manager.instance().getPOA.deactivate_object(oid)
+    return
 
+  ## virtual void init(coil::Properties& prop);
+  def init(self, prop):
+    pass
 
-    ## virtual void init(coil::Properties& prop);
-    def init(self, prop):
-        pass
+  ## virtual void setBuffer(BufferBase<cdrMemoryStream>* buffer);
+  def setBuffer(self, buffer):
+    self._buffer = buffer
+    return
 
-    ## virtual void setBuffer(BufferBase<cdrMemoryStream>* buffer);
-    def setBuffer(self, buffer):
-        self._buffer = buffer
+  # void setListener(ConnectorInfo& info,
+  #                  ConnectorListeners* listeners);
+  def setListener(self, info, listeners):
+    self._profile = info
+    self._listeners = listeners
+    return
 
+  ##
+  # @if jp
+  # @brief [CORBA interface] バッファにデータを書き込む
+  #
+  # 設定されたバッファにデータを書き込む。
+  #
+  # @param data 書込対象データ
+  #
+  # @else
+  # @brief [CORBA interface] Write data into the buffer
+  #
+  # Write data into the specified buffer.
+  #
+  # @param data The target data for writing
+  #
+  # @endif
+  #
+  # virtual ::OpenRTM::PortStatus put(const ::OpenRTM::CdrData& data)
+  #  throw (CORBA::SystemException);
+  def put(self, data):
+    try:
+      self._rtcout.RTC_PARANOID("InPortCorbaCdrProvider.put()")
+            
+      if not self._buffer:
+        self.onReceiverError(data)
+        return OpenRTM.PORT_ERROR
 
-    # void setListener(ConnectorInfo& info,
-    #                  ConnectorListeners* listeners);
-    def setListener(self, info, listeners):
-        self._profile = info
-        self._listeners = listeners
+      self._rtcout.RTC_PARANOID("received data size: %d", len(data))
 
-    ##
-    # @if jp
-    # @brief [CORBA interface] バッファにデータを書き込む
-    #
-    # 設定されたバッファにデータを書き込む。
-    #
-    # @param data 書込対象データ
-    #
-    # @else
-    # @brief [CORBA interface] Write data into the buffer
-    #
-    # Write data into the specified buffer.
-    #
-    # @param data The target data for writing
-    #
-    # @endif
-    #
-    #virtual ::OpenRTM::PortStatus put(const ::OpenRTM::CdrData& data)
-    #  throw (CORBA::SystemException);
-    def put(self, data):
-        try:
-            self._rtcout.RTC_PARANOID("InPortCorbaCdrProvider.put()")
+      self.onReceived(data)
 
-            if not self._buffer:
-                self.onReceiverError(data)
-                return OpenRTM.PORT_ERROR
+      if not self._connector:
+        return OpenRTM.PORT_ERROR
 
-            self._rtcout.RTC_PARANOID("received data size: %d", len(data))
+      ret = self._connector.write(data)
 
-            self.onReceived(data)
+      return self.convertReturn(ret, data)
 
-            if not self._connector:
-                return OpenRTM.PORT_ERROR
+    except:
+      self._rtcout.RTC_TRACE(OpenRTM_aist.Logger.print_exception())
+      return OpenRTM.UNKNOWN_ERROR
+    return OpenRTM.UNKNOWN_ERROR
 
-            ret = self._connector.write(data)
 
-            return self.convertReturn(ret, data)
-
-        except:
-            self._rtcout.RTC_TRACE(sys.exc_info()[0])
-            return OpenRTM.UNKNOWN_ERROR
-        return OpenRTM.UNKNOWN_ERROR
-
-
-    def convertReturn(self, status, data):
-        if status == OpenRTM_aist.BufferStatus.BUFFER_OK:
-            self.onBufferWrite(data)
-            return OpenRTM.PORT_OK
+  def convertReturn(self, status, data):
+    if status == OpenRTM_aist.BufferStatus.BUFFER_OK:
+      self.onBufferWrite(data)
+      return OpenRTM.PORT_OK
             
-        elif status == OpenRTM_aist.BufferStatus.BUFFER_ERROR:
-            self.onReceiverError(data)
-            return OpenRTM.PORT_ERROR
+    elif status == OpenRTM_aist.BufferStatus.BUFFER_ERROR:
+      self.onReceiverError(data)
+      return OpenRTM.PORT_ERROR
 
-        elif status == OpenRTM_aist.BufferStatus.BUFFER_FULL:
-            self.onBufferFull(data)
-            self.onReceiverFull(data)
-            return OpenRTM.BUFFER_FULL
+    elif status == OpenRTM_aist.BufferStatus.BUFFER_FULL:
+      self.onBufferFull(data)
+      self.onReceiverFull(data)
+      return OpenRTM.BUFFER_FULL
 
-        elif status == OpenRTM_aist.BufferStatus.BUFFER_EMPTY:
-            return OpenRTM.BUFFER_EMPTY
+    elif status == OpenRTM_aist.BufferStatus.BUFFER_EMPTY:
+      return OpenRTM.BUFFER_EMPTY
 
-        elif status == OpenRTM_aist.BufferStatus.PRECONDITION_NOT_MET:
-            self.onReceiverError(data)
-            return OpenRTM.PORT_ERROR
+    elif status == OpenRTM_aist.BufferStatus.PRECONDITION_NOT_MET:
+      self.onReceiverError(data)
+      return OpenRTM.PORT_ERROR
 
-        elif status == OpenRTM_aist.BufferStatus.TIMEOUT:
-            self.onBufferWriteTimeout(data)
-            self.onReceiverTimeout(data)
-            return OpenRTM.BUFFER_TIMEOUT
+    elif status == OpenRTM_aist.BufferStatus.TIMEOUT:
+      self.onBufferWriteTimeout(data)
+      self.onReceiverTimeout(data)
+      return OpenRTM.BUFFER_TIMEOUT
 
-        else:
-            self.onReceiverError(data)
-            return OpenRTM.UNKNOWN_ERROR
+    else:
+      self.onReceiverError(data)
+      return OpenRTM.UNKNOWN_ERROR
         
 
-    ##
-    # @brief Connector data listener functions
-    #
-    # inline void onBufferWrite(const cdrMemoryStream& data)
-    def onBufferWrite(self, data):
-        if self._listeners is not None and self._profile is not None:
-            self._listeners.connectorData_[OpenRTM_aist.ConnectorDataListenerType.ON_BUFFER_WRITE].notify(self._profile, data)
+  ##
+  # @brief Connector data listener functions
+  #
+  # inline void onBufferWrite(const cdrMemoryStream& data)
+  def onBufferWrite(self, data):
+    if self._listeners is not None and self._profile is not None:
+      self._listeners.connectorData_[OpenRTM_aist.ConnectorDataListenerType.ON_BUFFER_WRITE].notify(self._profile, data)
+    return
 
 
-    ## inline void onBufferFull(const cdrMemoryStream& data)
-    def onBufferFull(self, data):
-        if self._listeners is not None and self._profile is not None:
-            self._listeners.connectorData_[OpenRTM_aist.ConnectorDataListenerType.ON_BUFFER_FULL].notify(self._profile, data)
+  ## inline void onBufferFull(const cdrMemoryStream& data)
+  def onBufferFull(self, data):
+    if self._listeners is not None and self._profile is not None:
+      self._listeners.connectorData_[OpenRTM_aist.ConnectorDataListenerType.ON_BUFFER_FULL].notify(self._profile, data)
+    return
 
 
-    ## inline void onBufferWriteTimeout(const cdrMemoryStream& data)
-    def onBufferWriteTimeout(self, data):
-        if self._listeners is not None and self._profile is not None:
-            self._listeners.connectorData_[OpenRTM_aist.ConnectorDataListenerType.ON_BUFFER_WRITE_TIMEOUT].notify(self._profile, data)
+  ## inline void onBufferWriteTimeout(const cdrMemoryStream& data)
+  def onBufferWriteTimeout(self, data):
+    if self._listeners is not None and self._profile is not None:
+      self._listeners.connectorData_[OpenRTM_aist.ConnectorDataListenerType.ON_BUFFER_WRITE_TIMEOUT].notify(self._profile, data)
+    return
 
+  ## inline void onBufferWriteOverwrite(const cdrMemoryStream& data)
+  def onBufferWriteOverwrite(self, data):
+    if self._listeners is not None and self._profile is not None:
+      self._listeners.connectorData_[OpenRTM_aist.ConnectorDataListenerType.ON_BUFFER_OVERWRITE].notify(self._profile, data)
+    return
 
-    ## inline void onBufferWriteOverwrite(const cdrMemoryStream& data)
-    def onBufferWriteOverwrite(self, data):
-        if self._listeners is not None and self._profile is not None:
-            self._listeners.connectorData_[OpenRTM_aist.ConnectorDataListenerType.ON_BUFFER_OVERWRITE].notify(self._profile, data)
 
+  ## inline void onReceived(const cdrMemoryStream& data)
+  def onReceived(self, data):
+    if self._listeners is not None and self._profile is not None:
+      self._listeners.connectorData_[OpenRTM_aist.ConnectorDataListenerType.ON_RECEIVED].notify(self._profile, data)
+    return
 
-    ## inline void onReceived(const cdrMemoryStream& data)
-    def onReceived(self, data):
-        if self._listeners is not None and self._profile is not None:
-            self._listeners.connectorData_[OpenRTM_aist.ConnectorDataListenerType.ON_RECEIVED].notify(self._profile, data)
 
+  ## inline void onReceiverFull(const cdrMemoryStream& data)
+  def onReceiverFull(self, data):
+    if self._listeners is not None and self._profile is not None:
+      self._listeners.connectorData_[OpenRTM_aist.ConnectorDataListenerType.ON_RECEIVER_FULL].notify(self._profile, data)
+    return
 
-    ## inline void onReceiverFull(const cdrMemoryStream& data)
-    def onReceiverFull(self, data):
-        if self._listeners is not None and self._profile is not None:
-            self._listeners.connectorData_[OpenRTM_aist.ConnectorDataListenerType.ON_RECEIVER_FULL].notify(self._profile, data)
 
+  ## inline void onReceiverTimeout(const cdrMemoryStream& data)
+  def onReceiverTimeout(self, data):
+    if self._listeners is not None and self._profile is not None:
+      self._listeners.connectorData_[OpenRTM_aist.ConnectorDataListenerType.ON_RECEIVER_TIMEOUT].notify(self._profile, data)
+    return
 
-    ## inline void onReceiverTimeout(const cdrMemoryStream& data)
-    def onReceiverTimeout(self, data):
-        if self._listeners is not None and self._profile is not None:
-            self._listeners.connectorData_[OpenRTM_aist.ConnectorDataListenerType.ON_RECEIVER_TIMEOUT].notify(self._profile, data)
 
+  ## inline void onReceiverError(const cdrMemoryStream& data)
+  def onReceiverError(self, data):
+    if self._listeners is not None and self._profile is not None:
+      self._listeners.connectorData_[OpenRTM_aist.ConnectorDataListenerType.ON_RECEIVER_ERROR].notify(self._profile, data)
+    return
 
-    ## inline void onReceiverError(const cdrMemoryStream& data)
-    def onReceiverError(self, data):
-        if self._listeners is not None and self._profile is not None:
-            self._listeners.connectorData_[OpenRTM_aist.ConnectorDataListenerType.ON_RECEIVER_ERROR].notify(self._profile, data)
 
-
 def InPortCorbaCdrProviderInit():
-    factory = OpenRTM_aist.InPortProviderFactory.instance()
-    factory.addFactory("corba_cdr",
-                       OpenRTM_aist.InPortCorbaCdrProvider,
-                       OpenRTM_aist.Delete)
+  factory = OpenRTM_aist.InPortProviderFactory.instance()
+  factory.addFactory("corba_cdr",
+                     OpenRTM_aist.InPortCorbaCdrProvider,
+                     OpenRTM_aist.Delete)

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/InPortPullConnector.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/InPortPullConnector.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/InPortPullConnector.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -77,6 +77,8 @@
 # @endif
 #
 class InPortPullConnector(OpenRTM_aist.InPortConnector):
+  """
+  """
     
   ##
   # @if jp

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/InPortPushConnector.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/InPortPushConnector.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/InPortPushConnector.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -74,6 +74,8 @@
 # @endif
 #
 class InPortPushConnector(OpenRTM_aist.InPortConnector):
+  """
+  """
 
   ##
   # @if jp

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/Listener.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/Listener.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/Listener.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -30,9 +30,9 @@
 # @brief ListenerBase class
 # @endif
 class ListenerBase:
+  """
+  """
 
-
-
   ##
   # @if jp
   # @brief コールバック処理(サブクラス実装用)
@@ -64,9 +64,9 @@
 # @brief ListenerObject class
 # @endif
 class ListenerObject(ListenerBase):
+  """
+  """
 
-
-
   ##
   # @if jp
   # @brief コンストラクタ
@@ -115,9 +115,9 @@
 # @brief ListenerFunc class
 # @endif
 class ListenerFunc(ListenerBase):
+  """
+  """
 
-
-
   ##
   # @if jp
   # @brief コンストラクタ

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/Manager.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/Manager.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/Manager.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -26,7 +26,6 @@
 import OpenRTM_aist
 import RTC
 import SDOPackage
-import copy
 
 
 #------------------------------------------------------------
@@ -110,6 +109,9 @@
     self._terminate = self.Term()
     self._ecs = []
     self._timer = None
+    self._orb = None
+    self._poa = None
+    self._poaManager = None 
     self._finalized = self.Finalized()
     signal.signal(signal.SIGINT, handler)
     
@@ -273,6 +275,9 @@
       self.join()
 
     self.shutdownLogger()
+    global manager
+    if manager:
+      manager = None
 
 
   ##
@@ -367,6 +372,7 @@
       self._rtcout.RTC_TRACE("POA Manager activated.")
     except:
       self._rtcout.RTC_ERROR("Exception: POA Manager activation failed.")
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       return False
 
     mods = [s.strip() for s in self._config.getProperty("manager.modules.preload").split(",")]
@@ -385,6 +391,7 @@
       try:
         self._module.load(mods[i], basename)
       except:
+        self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
         self.__try_direct_load(basename)
 
     if self._initProc:
@@ -443,9 +450,13 @@
       self._runner = self.OrbRunner(self._orb)
     else:
       self._rtcout.RTC_TRACE("Manager.runManager(): blocking mode")
-      self._orb.run()
-      self._rtcout.RTC_TRACE("Manager.runManager(): ORB was terminated")
-      self.join()
+      try:
+        self._orb.run()
+        self._rtcout.RTC_TRACE("Manager.runManager(): ORB was terminated")
+        self.join()
+      except:
+        self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
+
     return
 
 
@@ -605,7 +616,7 @@
       self._factory.registerObject(factory)
       return True
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       return False
 
     return
@@ -663,7 +674,7 @@
       self._ecfactory.registerObject(OpenRTM_aist.ECFactoryPython(name, new_func, delete_func))
       return True
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       return False
 
     return False
@@ -781,7 +792,8 @@
 
     factory = self._factory.find(comp_id)
     if factory is None:
-      self._rtcout.RTC_ERROR("createComponent: Factory not found: %s", comp_id.getProperty("implementation_id"))
+      self._rtcout.RTC_ERROR("createComponent: Factory not found: %s",
+                             comp_id.getProperty("implementation_id"))
 
       # automatic module loading
       mp = self._module.getLoadableModules()
@@ -814,9 +826,19 @@
 
 
     # get default configuration of component.
-    prop = copy.copy(factory.profile())
+    prop = factory.profile()
 
-    inherit_prop = ["exec_cxt.periodic.type",
+    inherit_prop = ["config.version",
+                    "openrtm.name",
+                    "openrtm.version",
+                    "os.name",
+                    "os.release",
+                    "os.version",
+                    "os.arch",
+                    "os.hostname",
+                    "corba.endpoint",
+                    "corba.id",
+                    "exec_cxt.periodic.type",
                     "exec_cxt.periodic.rate",
                     "exec_cxt.evdriven.type",
                     "logger.enable",
@@ -831,11 +853,14 @@
     comp = factory.create(self)
 
     if comp is None:
-      self._rtcout.RTC_ERROR("createComponent: RTC creation failed: %s", comp_id.getProperty("implementation_id"))
+      self._rtcout.RTC_ERROR("createComponent: RTC creation failed: %s",
+                             comp_id.getProperty("implementation_id"))
       return None
     self._rtcout.RTC_TRACE("RTC Created: %s", comp_id.getProperty("implementation_id"))
 
     # The property specified by the parameter of createComponent() is merged.
+    # The property("instance_name") specified by the parameter of createComponent()
+    # must be merged here.
     prop.mergeProperties(comp_prop)
 
     #------------------------------------------------------------
@@ -847,16 +872,20 @@
     self.configureComponent(comp,prop)
 
     # The property specified by the parameter of createComponent() is set.
-    # comp.setProperties(comp_prop)
+    # The property("exported_ports") specified by the parameter of createComponent()
+    # must be set here.
+    #comp.setProperties(comp_prop)
 
     # Component initialization
     if comp.initialize() != RTC.RTC_OK:
-      self._rtcout.RTC_TRACE("RTC initialization failed: %s", comp_id.getProperty("implementation_id"))
+      self._rtcout.RTC_TRACE("RTC initialization failed: %s",
+                             comp_id.getProperty("implementation_id"))
       comp.exit()
       self._rtcout.RTC_TRACE("%s was finalized", comp_id.getProperty("implementation_id"))
       return None
       
-    self._rtcout.RTC_TRACE("RTC initialization succeeded: %s", comp_id.getProperty("implementation_id"))
+    self._rtcout.RTC_TRACE("RTC initialization succeeded: %s",
+                           comp_id.getProperty("implementation_id"))
     self.registerComponent(comp)
     return comp
 
@@ -1121,7 +1150,8 @@
     config = OpenRTM_aist.ManagerConfig(argv)
     self._config = OpenRTM_aist.Properties()
     config.configure(self._config)
-    self._config.setProperty("logger.file_name",self.formatString(self._config.getProperty("logger.file_name"), self._config))
+    self._config.setProperty("logger.file_name",self.formatString(self._config.getProperty("logger.file_name"), 
+                                                                  self._config))
     self._module = OpenRTM_aist.ModuleManager(self._config)
     self._terminator = self.Terminator(self)
     guard = OpenRTM_aist.ScopedLock(self._terminate.mutex)
@@ -1133,14 +1163,23 @@
       tick = self._config.getProperty("timer.tick")
       if tick != "":
         tm = tm.set_time(float(tick))
+        if self._timer:
+          self._timer.stop()
+          self._timer.join()
         self._timer = OpenRTM_aist.Timer(tm)
         self._timer.start()
 
     if OpenRTM_aist.toBool(self._config.getProperty("manager.shutdown_auto"),
                            "YES", "NO", True) and \
-                           not OpenRTM_aist.toBool(self._config.getProperty("manager.is_master"), "YES", "NO", False):
+                           not OpenRTM_aist.toBool(self._config.getProperty("manager.is_master"),
+                                                   "YES", "NO", False):
+      tm = OpenRTM_aist.TimeValue(10, 0)
+      if self._config.findNode("manager.auto_shutdown_duration"):
+        duration = float(self._config.getProperty("manager.auto_shutdown_duration"))
+        if duration:
+          tm.set_time(duration)
+
       if self._timer:
-        tm = OpenRTM_aist.TimeValue(10, 0)
         self._timer.registerListenerObj(self,
                                         OpenRTM_aist.Manager.shutdownOnNoRtcs,
                                         tm)
@@ -1171,6 +1210,7 @@
     if self._timer:
       self._timer.stop()
       self._timer.join()
+      self._timer = None
 
     return
 
@@ -1286,6 +1326,7 @@
   # @endif
   def shutdownLogger(self):
     self._rtcout.RTC_TRACE("Manager.shutdownLogger()")
+    self._rtcout.shutdown()
     return
 
 
@@ -1323,6 +1364,7 @@
 
     except:
       self._rtcout.RTC_ERROR("Exception: Caught unknown exception in initORB().")
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       return False
 
     return True
@@ -1481,8 +1523,7 @@
 
       self._rtcout.RTC_DEBUG("No pending works of ORB. Shutting down POA and ORB.")
     except:
-      #traceback.print_exception(*sys.exc_info())
-      self._rtcout.RTC_TRACE(sys.exc_info()[0])
+      self._rtcout.RTC_TRACE(OpenRTM_aist.Logger.print_exception())
       pass
 
     if not CORBA.is_nil(self._poa):
@@ -1495,8 +1536,10 @@
         self._rtcout.RTC_DEBUG("POA was destroyed.")
       except CORBA.SystemException, ex:
         self._rtcout.RTC_ERROR("Caught SystemException during root POA destruction")
+        self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       except:
         self._rtcout.RTC_ERROR("Caught unknown exception during destruction")
+        self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
 
     if self._orb:
       try:
@@ -1505,8 +1548,10 @@
         self._orb = CORBA.Object._nil
       except CORBA.SystemException, ex:
         self._rtcout.RTC_ERROR("Caught CORBA::SystemException during ORB shutdown.")
+        self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       except:
         self._rtcout.RTC_ERROR("Caught unknown exception during ORB shutdown.")
+        self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
 
 
   #============================================================
@@ -1705,7 +1750,7 @@
       try:
         reffile = file(self._config.getProperty("manager.refstring_path"),'w')
       except:
-        self._rtcout.RTC_ERROR(sys.exc_info()[0])
+        self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
         return False
       else:
         reffile.write(self._orb.object_to_string(self._mgrservant.getObjRef()))
@@ -1734,16 +1779,14 @@
         p = OpenRTM_aist.Properties(key=comp.getInstanceName())
         p.mergeProperties(comp.getProperties())
       except:
-        #traceback.print_exception(*sys.exc_info())
-        self._rtcout.RTC_TRACE(sys.exc_info()[0])
+        self._rtcout.RTC_TRACE(OpenRTM_aist.Logger.print_exception())
         pass
 
     for ec in self._ecs:
       try:
         self._poa.deactivate_object(self._poa.servant_to_id(ec))
       except:
-        #traceback.print_exception(*sys.exc_info())
-        self._rtcout.RTC_TRACE(sys.exc_info()[0])
+        self._rtcout.RTC_TRACE(OpenRTM_aist.Logger.print_exception())
         pass
 
 
@@ -1761,7 +1804,7 @@
   #
   # @endif
   def cleanupComponent(self, comp):
-    self._rtcout.RTC_TRACE("Manager.cleanupComponents")
+    self._rtcout.RTC_TRACE("Manager.cleanupComponent()")
     self.unregisterComponent(comp)
 
     return
@@ -1930,17 +1973,25 @@
         conff = open(self._config.getProperty(name_conf))
       except:
         print "Not found. : %s" % self._config.getProperty(name_conf)
+        self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       else:
         name_prop.load(conff)
 
+    if self._config.findNode(category + "." + inst_name):
+      name_prop.mergeProperties(self._config.getNode(category + "." + inst_name))
+
     if self._config.getProperty(type_conf) != "":
       try:
         conff = open(self._config.getProperty(type_conf))
       except:
         print "Not found. : %s" % self._config.getProperty(type_conf)
+        self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       else:
         type_prop.load(conff)
 
+    if self._config.findNode(category + "." + type_name):
+      type_prop.mergeProperties(self._config.getNode(category + "." + type_name))
+
     comp.setProperties(prop)
     type_prop.mergeProperties(name_prop)
     comp.setProperties(type_prop)
@@ -1985,6 +2036,7 @@
         conff = open(file_name)
       except:
         print "Not found. : %s" % file_name
+        self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       else:
         prop.load(conff)
         conff.close()
@@ -2143,6 +2195,7 @@
                              OpenRTM_aist.Delete)
     except:
       self._rtcout.RTC_ERROR("Module load error: %s", file_name)
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       
     return
 
@@ -2160,9 +2213,9 @@
   #
   # @endif
   class InstanceName:
+    """
+    """
 
-
-
     ##
     # @if jp
     # @brief コンストラクタ
@@ -2323,9 +2376,9 @@
   # @brief OrbRunner class
   # @endif
   class OrbRunner:
+    """
+    """
 
-
-
     ##
     # @if jp
     # @brief コンストラクタ
@@ -2343,11 +2396,12 @@
       self._orb = orb
       self._th = threading.Thread(target=self.run)
       self._th.start()
-      self._evt = threading.Event()
 
 
     def __del__(self):
       self._th.join()
+      self._th = None
+      return
 
 
     ##
@@ -2365,11 +2419,9 @@
       try:
         self._orb.run()
         #Manager.instance().shutdown()
-        self._evt.set()
       except:
-        traceback.print_exception(*sys.exc_info())
+        print OpenRTM_aist.Logger.print_exception()
         pass
-      self._evt.set()
       return
 
 
@@ -2385,7 +2437,7 @@
     #
     # @endif
     def wait(self):
-      self._evt.wait()
+      return
 
     ##
     # @if jp
@@ -2421,9 +2473,9 @@
   #
   # @endif
   class Terminator:
+    """
+    """
 
-
-
     ##
     # @if jp
     # @brief コンストラクタ


Property changes on: trunk/OpenRTM-aist-Python/OpenRTM_aist/ManagerConfig.py
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/RELENG_1_0/OpenRTM-aist-Python/OpenRTM_aist/ManagerConfig.py:345-395
/branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/ManagerConfig.py:396-412
   + /branches/RELENG_1_0/OpenRTM-aist-Python/OpenRTM_aist/ManagerConfig.py:345-395
/branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/ManagerConfig.py:396-478

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/ManagerServant.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/ManagerServant.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/ManagerServant.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -26,6 +26,8 @@
 
 
 class ManagerServant(RTM__POA.Manager):
+  """
+  """
 
   ##
   # @if jp
@@ -62,7 +64,7 @@
         return
         
       self._isMaster = True
-      self._rtcout.RTC_WARN("Manager CORBA servant was successfully created.")
+      self._rtcout.RTC_TRACE("Manager CORBA servant was successfully created.")
       return
     else:
       # this is slave manager
@@ -82,6 +84,7 @@
         return
       except:
         self._rtcout.RTC_ERROR("Unknown exception cought.")
+        self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
         
         
     return
@@ -371,9 +374,10 @@
       return rtobj
     except CORBA.SystemException:
       self._rtcout.RTC_DEBUG("Exception was caught while creating component.")
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       return RTC.RTObject._nil
     except:
-      self._rtcout.RTC_DEBUG(sys.exc_info()[0])
+      self._rtcout.RTC_DEBUG(OpenRTM_aist.Logger.print_exception())
 
     return RTC.RTObject._nil
 
@@ -901,7 +905,7 @@
       mgrobj = poa.id_to_reference(id)
       self._objref = mgrobj._narrow(RTM.Manager)
     except:
-      self._rtcout.RTC_DEBUG(sys.exc_info()[0])
+      self._rtcout.RTC_DEBUG(OpenRTM_aist.Logger.print_exception())
       return False
 
     return True
@@ -931,11 +935,11 @@
       return mgr
 
     except CORBA.SystemException:
-      self._rtcout.RTC_DEBUG(sys.exc_info()[0])
+      self._rtcout.RTC_DEBUG(OpenRTM_aist.Logger.print_exception())
       
     except:
       self._rtcout.RTC_ERROR("Unknown exception cought.")
-      self._rtcout.RTC_DEBUG(sys.exc_info()[0])
+      self._rtcout.RTC_DEBUG(OpenRTM_aist.Logger.print_exception())
 
     return RTM.Manager._nil
 

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/ModuleManager.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/ModuleManager.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/ModuleManager.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -81,7 +81,7 @@
       tmp = [self._configPath[i]]
       OpenRTM_aist.eraseHeadBlank(tmp)
       self._configPath[i] = tmp[0]
-    self._loadPath = prop.getProperty(MOD_LOADPTH).split(",")
+    self._loadPath = prop.getProperty(MOD_LOADPTH,"./").split(",")
     for i in range(len(self._loadPath)):
       tmp = [self._loadPath[i]]
       OpenRTM_aist.eraseHeadBlank(tmp)
@@ -97,8 +97,8 @@
     self._initFuncPrefix = prop.getProperty(INITFUNC_PFX)
     self._modules = OpenRTM_aist.ObjectManager(self.DLLPred)
     self._rtcout = None
+    self._mgr = OpenRTM_aist.Manager.instance()
 
-
   ##
   # @if jp
   #
@@ -244,7 +244,7 @@
   #                                 const std::string& init_func)
   def load(self, file_name, init_func=None):
     if not self._rtcout:
-      self._rtcout = OpenRTM_aist.Manager.instance().getLogbuf("ModuleManager")
+      self._rtcout = self._mgr.getLogbuf("ModuleManager")
 
     self._rtcout.RTC_TRACE("load(fname = %s)", file_name)
     if file_name == "":
@@ -258,6 +258,7 @@
 
     import_name = os.path.split(file_name)[-1]
     pathChanged=False
+    file_path = None
     if OpenRTM_aist.isAbsolutePath(file_name):
       if not self._absoluteAllowed:
         raise ModuleManager.NotAllowedOperation, "Absolute path is not allowed"
@@ -267,14 +268,20 @@
         sys.path.append(splitted_name[0])
         pathChanged = True
         import_name = splitted_name[-1]
+        file_path = file_name
 
     else:
-      if not self.findFile(file_name, self._loadPath):
+      file_path = self.findFile(file_name, self._loadPath)
+      if not file_path:
         raise ModuleManager.InvalidArguments, "Invalid file name."
 
-    if not self.fileExist(file_name):
-      raise ModuleManager.FileNotFound, file_path
+    if not self.fileExist(file_path):
+      raise ModuleManager.FileNotFound, file_name
 
+    if not pathChanged:
+      splitted_name = os.path.split(file_path)
+      sys.path.append(splitted_name[0])
+
     ext_pos = import_name.find(".py")
     if ext_pos > 0:
       import_name = import_name[:ext_pos]
@@ -284,14 +291,14 @@
       sys.path = save_path
 
     dll = self.DLLEntity(mo,OpenRTM_aist.Properties())
-    dll.properties.setProperty("file_path",file_name)
+    dll.properties.setProperty("file_path",file_path)
     self._modules.registerObject(dll)
 
 
     if init_func is None:
       return file_name
 
-    self.symbol(file_name,init_func)(OpenRTM_aist.Manager.instance())
+    self.symbol(file_path,init_func)(self._mgr)
 
     return file_name
 
@@ -450,9 +457,8 @@
     classname  = basename.split(".")[0].lower()
 
     # loaded profile = old profiles - new profiles
-    mgr = OpenRTM_aist.Manager.instance()
     # for old
-    oldp = mgr.getFactoryProfiles()
+    oldp = self._mgr.getFactoryProfiles()
 
     # for new
     comp_spec_name = classname+"_spec"
@@ -509,7 +515,7 @@
       if path == "":
         continue
 
-      flist = glob.glob(path+"/"+'*.py')
+      flist = glob.glob(path + os.sep + '*.py')
       for file in flist:
         if file.find("__init__.py") == -1:
           modules_.append(file)
@@ -522,7 +528,7 @@
         prop.setProperty("module_file_name",os.path.basename(mod_))
         prop.setProperty("module_file_path", mod_)
         props.append(prop)
-    
+
     return props
 
 
@@ -606,14 +612,13 @@
   # @endif
   def findFile(self, fname, load_path):
     file_name = fname
-
     for path in load_path:
       if fname.find(".py") == -1:
-        f = str(path)+"/"+str(file_name)+".py"
+        f = str(path) + os.sep + str(file_name)+".py"
       else:
-        f = str(path)+"/"+str(file_name)
+        f = str(path)+ os.sep + str(file_name)
       if self.fileExist(f):
-        return fname
+        return f
     return ""
 
 
@@ -635,15 +640,14 @@
     fname = filename
     if fname.find(".py") == -1:
       fname = str(filename)+".py"
-    try:
-      infile = open(fname)
-    except:
-      return False
 
-    infile.close()
-    return True
+    if os.path.isfile(fname):
+      return True
 
+    return False
 
+
+
   ##
   # @if jp
   # @brief 初期化関数シンボルを生成する

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/NVUtil.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/NVUtil.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/NVUtil.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -121,7 +121,7 @@
       val = str(any.from_any(nv.value, keep_structs=True))
       prop.setProperty(str(nv.name),val)
     except:
-      traceback.print_exception(*sys.exc_info())
+      print OpenRTM_aist.Logger.print_exception()
       pass
 
 
@@ -308,7 +308,11 @@
 # @return string value named by name
 #
 # @endif
-def toString(nv, name):
+def toString(nv, name=None):
+  if not name:
+    str_ = [""]
+    return dump_to_stream(str_, nv)
+
   str_value = ""
   try:
     ret_value = find(nv, name)
@@ -316,7 +320,7 @@
     if type(val) == str:
       str_value = val
   except:
-    traceback.print_exception(*sys.exc_info())
+    print OpenRTM_aist.Logger.print_exception()
     pass
   
   return str_value
@@ -386,6 +390,24 @@
 
 ##
 # @if jp
+# @brief NVList に設定されている内容を文字列として出力する。
+# @else
+# @brief Print information configured in NVList as a string type
+# @endif
+# std::ostream& dump_to_stream(std::ostream& out, const SDOPackage::NVList& nv)
+def dump_to_stream(out, nv):
+  for i in range(len(nv)):
+    val = any.from_any(nv[i].value, keep_structs=True)
+    if type(val) == str:
+	    out[0] += (nv[i].name + ": " + str(nv[i].value) + "\n")
+    else:
+	    out[0] += (nv[i].name + ": not a string value \n")
+
+  return out[0]
+
+
+##
+# @if jp
 #
 # @brief NVList に設定されている内容を文字列として出力する。
 #
@@ -399,8 +421,5 @@
 #
 # @endif
 def dump(nv):
-  for i in range(len(nv)):
-    if type(nv[i].value) == str:
-      print nv[i].name, ": ", nv[i].value
-    else:
-      print nv[i].name, ": not a string value"
+  out = [""]
+  print dump_to_stream(out, nv)

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/NamingManager.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/NamingManager.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/NamingManager.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -39,9 +39,9 @@
 #
 # @endif
 class NamingBase:
+  """
+  """
 
-
-
   ##
   # @if jp
   #
@@ -115,9 +115,9 @@
 #
 # @endif
 class NamingOnCorba(NamingBase):
+  """
+  """
 
-
-
   ##
   # @if jp
   #
@@ -158,9 +158,11 @@
     try:
       self._cosnaming.rebindByString(name, rtobj.getObjRef(), True)
     except:
-      pass
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
 
+    return
 
+
   ##
   # @if jp
   #
@@ -179,9 +181,11 @@
     try:
       self._cosnaming.unbind(name)
     except:
-      traceback.print_exception(*sys.exc_info())
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
 
+    return
 
+
   ##
   # @if jp
   #
@@ -405,8 +409,8 @@
       idx = (len_ - 1) - i
       self.unbindObject(self._compNames[idx].name)
 
+    guard = OpenRTM_aist.ScopedLock(self._mgrNamesMutex)
     len_ = len(self._mgrNames)
-    guard = OpenRTM_aist.ScopedLock(self._mgrNamesMutex)
     for i in range(len_):
       idx = (len_ - 1) - i
       self.unbindObject(self._mgrNames[idx].name)

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/NumberingPolicy.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/NumberingPolicy.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/NumberingPolicy.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -104,9 +104,9 @@
 #
 # @endif
 class DefaultNumberingPolicy(NumberingPolicy):
+  """
+  """
 
-
-
   ##
   # @if jp
   #
@@ -171,7 +171,11 @@
   # @endif
   def onDelete(self, obj):
     pos = 0
-    pos = self.find(obj)
+    try:
+      pos = self.find(obj)
+    except:
+      return
+
     if (pos < len(self._objects)):
       self._objects[pos] = None
     self._num -= 1

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/ObjectManager.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/ObjectManager.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/ObjectManager.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -36,9 +36,9 @@
 #
 # @endif
 class ObjectManager:
+  """
+  """
 
-
-
   ##
   # @if jp
   #

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/OutPort.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/OutPort.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/OutPort.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -22,17 +22,7 @@
 
 import OpenRTM_aist
 
-##
-# @if jp
-# @brief 時間単位変換用定数
-# @else
-# @endif
-TIMEVALUE_ONE_SECOND_IN_USECS = 1000000 # 1 [sec] = 1000000 [usec]
 
-
-import time
-
-
 ##
 # @if jp
 # @brief データにタイムスタンプをセットする
@@ -57,54 +47,13 @@
 # void setTimestamp(DataType& data)
 def setTimestamp(data):
   # set timestamp
-  tm = Time()
+  tm = OpenRTM_aist.Time()
   data.tm.sec  = tm.sec
   data.tm.nsec = tm.usec * 1000
 
 
 ##
 # @if jp
-# @class Time
-# @brief 時間管理用クラス
-# 
-# 指定した時間値を保持するためのクラス。
-# 
-# @since 0.4.1
-# 
-# @else
-# 
-# @endif
-class Time:
-
-
-
-  ##
-  # @if jp
-  # @brief コンストラクタ
-  #
-  # コンストラクタ。
-  #
-  # @param self
-  #
-  # @else
-  # @brief Constructor.
-  #
-  # Constructor.
-  #
-  # @param self
-  #
-  # @endif
-  def __init__(self):
-    global TIMEVALUE_ONE_SECOND_IN_USECS
-    tm = time.time()
-    tm_f       = tm - int(tm)     # 小数部の取り出し
-    self.sec   = int(tm - tm_f)   # 整数部の取り出し
-    self.usec  = int(tm_f * TIMEVALUE_ONE_SECOND_IN_USECS) # sec -> usec (micro second)
-
-
-
-##
-# @if jp
 #
 # @class OutPort
 #
@@ -154,6 +103,9 @@
     #self._OnDisconnect   = None
     
 
+  def __del__(self, OutPortBase=OpenRTM_aist.OutPortBase):
+    OutPortBase.__del__(self)
+    return
 
   ##
   # @if jp
@@ -200,7 +152,6 @@
   # @endif
   # bool operator<<(DataType& value)
   def write(self, value=None):
-    global TIMEVALUE_ONE_SECOND_IN_USECS
     if not value:
       value=self._value
 

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/OutPortBase.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/OutPortBase.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/OutPortBase.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -282,6 +282,7 @@
     self._connector_mutex = threading.RLock()
 
     self._listeners = OpenRTM_aist.ConnectorListeners()
+    return
 
 
   ##
@@ -300,11 +301,13 @@
   # Destructor
   #
   # @endif
-  def __del__(self):
+  def __del__(self, PortBase=OpenRTM_aist.PortBase):
     self._rtcout.RTC_TRACE("OutPortBase destructor")
     # connector のクリーンナップ
     OpenRTM_aist.CORBA_SeqUtil.for_each(self._connectors,
                                         self.connector_cleanup())
+    PortBase.__del__(self)
+    return
 
 
   ##
@@ -1233,6 +1236,7 @@
 
     except:
       self._rtcout.RTC_ERROR("Exeption: OutPortPushConnector creation failed")
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       return 0
 
 

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/OutPortConnector.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/OutPortConnector.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/OutPortConnector.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -42,6 +42,8 @@
 # @endif
 #
 class OutPortConnector(OpenRTM_aist.ConnectorBase):
+  """
+  """
 
   ##
   # @if jp

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/OutPortCorbaCdrConsumer.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/OutPortCorbaCdrConsumer.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/OutPortCorbaCdrConsumer.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -49,6 +49,8 @@
 # @endif
 #
 class OutPortCorbaCdrConsumer(OpenRTM_aist.OutPortConsumer,OpenRTM_aist.CorbaConsumer):
+  """
+  """
 
   ##
   # @if jp
@@ -88,7 +90,9 @@
   #
   # @endif
   #
-  def __del__(self):
+  def __del__(self, CorbaConsumer=OpenRTM_aist.CorbaConsumer):
+    self._rtcout.RTC_PARANOID("~OutPortCorbaCdrConsumer()")
+    CorbaConsumer.__del__(self)
     pass
 
 
@@ -192,7 +196,8 @@
     self._rtcout.RTC_PARANOID("get()")
 
     try:
-      ret,cdr_data = self._ptr().get()
+      outportcdr = self.getObject()._narrow(OpenRTM.OutPortCdr)
+      ret,cdr_data = outportcdr.get()
       
       if ret == OpenRTM.PORT_OK:
         self._rtcout.RTC_DEBUG("get() successful")
@@ -214,6 +219,7 @@
 
     except:
       self._rtcout.RTC_WARN("Exception caught from OutPort.get().")
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       return self.CONNECTION_LOST
 
     self._rtcout.RTC_ERROR("get(): Never comes here.")
@@ -257,8 +263,7 @@
       try:
         ior = any.from_any(properties[index].value, keep_structs=True)
       except:
-        # traceback.print_exception(*sys.exc_info())
-        self._rtcout.RTC_ERROR(sys.exc_info()[0])
+        self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
             
       orb = OpenRTM_aist.Manager.instance().getORB()
       obj = orb.string_to_object(ior)
@@ -315,8 +320,7 @@
         self._rtcout.RTC_ERROR("hmm. Inconsistent object reference.")
 
     except:
-      # traceback.print_exception(*sys.exc_info())
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
 
     return
 

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/OutPortCorbaCdrProvider.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/OutPortCorbaCdrProvider.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/OutPortCorbaCdrProvider.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -291,7 +291,7 @@
           return (OpenRTM.BUFFER_EMPTY, None)
       
     except:
-      self._rtcout.RTC_TRACE(sys.exc_info()[0])
+      self._rtcout.RTC_TRACE(OpenRTM_aist.Logger.print_exception())
       return (OpenRTM.UNKNOWN_ERROR, None)
 
     return self.convertReturn(ret, cdr[0])

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/OutPortPullConnector.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/OutPortPullConnector.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/OutPortPullConnector.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -75,6 +75,8 @@
 # @endif
 #
 class OutPortPullConnector(OpenRTM_aist.OutPortConnector):
+  """
+  """
 
   ##
   # @if jp

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/OutPortPushConnector.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/OutPortPushConnector.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/OutPortPushConnector.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -78,6 +78,8 @@
 # @endif
 #
 class OutPortPushConnector(OpenRTM_aist.OutPortConnector):
+  """
+  """
 
   ##
   # @if jp

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/PeriodicECSharedComposite.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/PeriodicECSharedComposite.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/PeriodicECSharedComposite.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -51,7 +51,7 @@
   return True
 
 
-class setCallback(OpenRTM_aist.OnSetConfigurationSetCallback):
+class setCallback(OpenRTM_aist.ConfigurationSetListener):
   def __init__(self, org):
     self._org = org
     pass
@@ -61,7 +61,7 @@
 
 
 
-class addCallback(OpenRTM_aist.OnAddConfigurationAddCallback):
+class addCallback(OpenRTM_aist.ConfigurationSetListener):
   def __init__(self, org):
     self._org = org
     pass
@@ -645,8 +645,14 @@
     self._members = [[]]
     self.bindParameter("members", self._members, "", stringToStrVec)
     self._rtcout = OpenRTM_aist.Manager.instance().getLogbuf("rtobject.periodic_ec_shared")
-    self._configsets.setOnSetConfigurationSet(setCallback(self._org))
-    self._configsets.setOnAddConfigurationSet(addCallback(self._org))
+    self._configsets.addConfigurationSetListener(\
+      OpenRTM_aist.ConfigurationSetListenerType.ON_SET_CONFIG_SET,
+      setCallback(self._org))
+
+    self._configsets.addConfigurationSetListener(\
+      OpenRTM_aist.ConfigurationSetListenerType.ON_ADD_CONFIG_SET,
+      addCallback(self._org))
+
     return
 
 
@@ -714,7 +720,7 @@
     try:
       self._org.set_members(sdos)
     except:
-      print "exception caught"
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
 
     return RTC.RTC_OK
 

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/PeriodicExecutionContext.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/PeriodicExecutionContext.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/PeriodicExecutionContext.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -60,9 +60,9 @@
   #
   # @endif
   class DFP:
+    """
+    """
 
-
-
     ##
     # @if jp
     # @brief デフォルトコンストラクタ
@@ -202,7 +202,7 @@
     # @brief RTコンポーネントがエラー状態の時に呼ばれる関数
     #
     # 管理対象のRTコンポーネントがエラー状態にいる間、 
-    # 管理対象コンポーネントの on_aborting を定期的に呼びだす。
+    # 管理対象コンポーネントの on_error を定期的に呼びだす。
     #
     # @param self
     # @param st 対象RTコンポーネントの現在の状態
@@ -361,37 +361,43 @@
 
     self._worker = self.Worker()
 
+    global DEFAULT_PERIOD
+
     if rate is None:
-      self._rate = 1000.0
-      rate_ = 0.0
-      self._usec = long(0)
+      self._period = OpenRTM_aist.TimeValue(DEFAULT_PERIOD)
     else:
-      self._rate = rate
-      rate_ = rate
       if rate == 0:
-        rate_ = 0.0000001
-      self._usec = long(1000000/rate_)
-      if self._usec == 0:
+        rate = 1.0 / DEFAULT_PERIOD
+      self._period = OpenRTM_aist.TimeValue(1.0 / rate)
+
+      if self._period.sec() == 0  and self._period.usec() < 0.000001:
         self._nowait = True
+
+    self._rtcout.RTC_DEBUG("Actual rate: %d [sec], %d [usec]",
+                           (self._period.sec(), self._period.usec()))    
+
     self._comps = []
-    self._profile = RTC.ExecutionContextProfile(RTC.PERIODIC, rate_, None, [], [])
+    self._profile = RTC.ExecutionContextProfile(RTC.PERIODIC, (1.0/self._period.toDouble()), None, [], [])
     self._ref = self._this()
-
+    self._mutex_del = threading.RLock()
     return
 
 
-  def __del__(self):
+  def __del__(self, Task=OpenRTM_aist.Task):
     self._rtcout.RTC_TRACE("~PeriodicExecutionContext()")
     self._worker._cond.acquire()
     self._worker._running = True
     self._worker._cond.notify()
     self._worker._cond.release()
     self._running = False
-    self.wait()
+    #self.wait()
 
     self._profile.owner = None
     self._profile.paarticipants = []
     self._profile.properties = []
+    guard = OpenRTM_aist.ScopedLock(self._mutex_del)
+    Task.__del__(self)
+    del guard
 
   ##
   # @if jp
@@ -429,24 +435,46 @@
   def svc(self):
     self._rtcout.RTC_TRACE("svc()")
     flag = True
-
+    count_ = 0
+    
+    guard = OpenRTM_aist.ScopedLock(self._mutex_del)
     while flag:
       self._worker._cond.acquire()
       while not self._worker._running:
         self._worker._cond.wait()
 
+      t0_ = OpenRTM_aist.Time()
+
       if self._worker._running:
         for comp in self._comps:
           comp._sm.worker()
 
       self._worker._cond.release()
 
-      sec_ = float(self._usec)/1000000.0
-      if not self._nowait:
-        time.sleep(sec_)
+      t1_ = OpenRTM_aist.Time()
 
+      if count_ > 1000:
+        exctm_ = (t1_ - t0_).getTime().toDouble()
+        slptm_ = self._period.toDouble() - exctm_
+        self._rtcout.RTC_PARANOID("Period:    %f [s]", self._period.toDouble())
+        self._rtcout.RTC_PARANOID("Execution: %f [s]", exctm_)
+        self._rtcout.RTC_PARANOID("Sleep:     %f [s]", slptm_)
+
+      t2_ = OpenRTM_aist.Time()
+
+      if not self._nowait and self._period.toDouble() > ((t1_ - t0_).getTime().toDouble()):
+        if count_ > 1000:
+          self._rtcout.RTC_PARANOID("sleeping...")
+        slptm_ = self._period.toDouble() - (t1_ - t0_).getTime().toDouble()
+        time.sleep(slptm_)
+
+      if count_ > 1000:
+        t3_ = OpenRTM_aist.Time()
+        self._rtcout.RTC_PARANOID("Slept:     %f [s]", (t3_ - t2_).getTime().toDouble())
+        count_ = 0
+      count_ += 1
       flag = self._running
-
+    del guard
     return 0
 
 
@@ -556,7 +584,7 @@
       self._worker._running = False
       self._worker._cond.notify()
       self._worker._cond.release()
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
 
     return RTC.RTC_OK
 
@@ -600,7 +628,7 @@
     for comp in self._comps:
       comp._sm.on_shutdown()
 
-    self.wait()
+    #self.wait()
     return RTC.RTC_OK
 
 
@@ -656,8 +684,8 @@
     self._rtcout.RTC_TRACE("set_rate(%f)", rate)
     if rate > 0.0:
       self._profile.rate = rate
-      self._usec = long(1000000/rate)
-      if self._usec == 0:
+      self._period.set_time(1.0/rate)
+      if self._period.toDouble() == 0.0:
         self._nowait = True
 
       for comp in self._comps:
@@ -743,7 +771,22 @@
         if not compIn._sm._sm.isIn(RTC.ACTIVE_STATE):
           return RTC.PRECONDITION_NOT_MET
         compIn._sm._sm.goTo(RTC.INACTIVE_STATE)
-        return RTC.RTC_OK
+        count_ = 0
+        usec_per_sec_ = 1.0e6
+        sleeptime_ = 10.0 * usec_per_sec_ / float(self.get_rate())
+        self._rtcout.RTC_PARANOID("Sleep time is %f [us]", sleeptime_)
+        while compIn._sm._sm.isIn(RTC.ACTIVE_STATE):
+          self._rtcout.RTC_TRACE("Waiting to be the INACTIVE state %d %f", (count_, float(time.time())))
+          time.sleep(sleeptime_/usec_per_sec_)
+          if count_ > 1000:
+            self._rtcout.RTC_ERROR("The component is not responding.")
+            break
+          count_ += 1
+        if compIn._sm._sm.isIn(RTC.INACTIVE_STATE):
+          self._rtcout.RTC_TRACE("The component has been properly deactivated.")
+          return RTC.RTC_OK
+        self._rtcout.RTC_ERROR("The component could not be deactivated.")
+        return RTC.RTC_ERROR
 
     return RTC.BAD_PARAMETER
 
@@ -882,7 +925,7 @@
       self._profile.participants.append(rtc_)
       return RTC.RTC_OK
     except CORBA.Exception:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       return RTC.BAD_PARAMETER
 
     return RTC.RTC_OK

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/PeriodicTask.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/PeriodicTask.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/PeriodicTask.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -44,6 +44,8 @@
 # @endif
 #
 class PeriodicTask(OpenRTM_aist.Task):
+  """
+  """
 
   ##
   # @if jp
@@ -85,9 +87,10 @@
   # @brief dtor
   # @endif
   #
-  def __del__(self):
+  def __del__(self, Task=OpenRTM_aist.Task):
     self.finalize()
     self.wait()
+    Task.__del__(self)
     return
   
     

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/PortAdmin.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/PortAdmin.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/PortAdmin.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -354,7 +354,7 @@
         return False
       return True
     except:
-      traceback.print_exception(*sys.exc_info())
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       return False
 
 

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/PortBase.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/PortBase.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/PortBase.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -166,8 +166,27 @@
     self._onDisconnected = None
     self._onConnectionLost = None
     self._connectionLimit   = -1
+    self._portconnListeners = None
+    return
 
-
+  
+  ##
+  # @if jp
+  #
+  # @brief デストラクタ
+  #
+  # デストラクタでは、PortService CORBA オブジェクトの deactivate を
+  # 行う。deactivateに際して例外を投げることはない。
+  #
+  # @else
+  #
+  # @brief Destructor
+  #
+  # In the destructor, PortService CORBA object is deactivated.
+  # This function never throws exception.
+  #
+  # @endif
+  #
   def __del__(self):
     self._rtcout.RTC_TRACE("PortBase.__del__()")
     try:
@@ -175,7 +194,7 @@
       oid = mgr.servant_to_id(self)
       mgr.deactivate_object(oid)
     except:
-      self._rtcout.RTC_ERROR("Unknown exception caught.")
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
     
 
   ##
@@ -208,10 +227,10 @@
   # PortProfile struct has the following members,
   #
   # - name              [string ] The name of the Port.
-  # - interfaces        [PortInterfaceProfileList 型] The sequence of 
+  # - interfaces        [PortInterfaceProfileList] The sequence of 
   #                     PortInterfaceProfile owned by the Port
   # - port_ref          [Port Object] The object reference of the Port.
-  # - connector_profile [ConnectorProfileList 型] The sequence of 
+  # - connector_profile [ConnectorProfileList] The sequence of 
   #                     ConnectorProfile owned by the Port.
   # - owner             [RTObject Object] The object reference of 
   #                     RTObject that is owner of the Port.
@@ -544,6 +563,7 @@
       return (retval, connector_profile)
       #return connector_profile.ports[0].notify_connect(connector_profile)
     except:
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       return (RTC.BAD_PARAMETER, connector_profile)
 
     return (RTC.RTC_ERROR, connector_profile)
@@ -673,10 +693,12 @@
     # publish owned interface information to the ConnectorProfile
     retval = [RTC.RTC_OK for i in range(3)]
 
+    self.onNotifyConnect(self.getName(),connector_profile)
     retval[0] = self.publishInterfaces(connector_profile)
     if retval[0] != RTC.RTC_OK:
       self._rtcout.RTC_ERROR("publishInterfaces() in notify_connect() failed.")
 
+    self.onPublishInterfaces(self.getName(), connector_profile, retval[0])
     if self._onPublishInterfaces:
       self._onPublishInterfaces(connector_profile)
 
@@ -685,14 +707,18 @@
     if retval[1] != RTC.RTC_OK:
       self._rtcout.RTC_ERROR("connectNext() in notify_connect() failed.")
 
+    self.onConnectNextport(self.getName(), connector_profile, retval[1])
     # subscribe interface from the ConnectorProfile's information
     if self._onSubscribeInterfaces:
       self._onSubscribeInterfaces(connector_profile)
+
     retval[2] = self.subscribeInterfaces(connector_profile)
     if retval[2] != RTC.RTC_OK:
       self._rtcout.RTC_ERROR("subscribeInterfaces() in notify_connect() failed.")
       #self.notify_disconnect(connector_profile.connector_id)
 
+    self.onSubscribeInterfaces(self.getName(), connector_profile, retval[2])
+
     self._rtcout.RTC_PARANOID("%d connectors are existing",
                               len(self._profile.connector_profiles))
 
@@ -710,12 +736,13 @@
 
     for ret in retval:
       if ret != RTC.RTC_OK:
+        self.onConnected(self.getName(), connector_profile, ret)
         return (ret, connector_profile)
 
     # connection established without errors
     if self._onConnected:
       self._onConnected(connector_profile)
-
+    self.onConnected(self.getName(), connector_profile, RTC.RTC_OK)
     return (RTC.RTC_OK, connector_profile)
 
 
@@ -808,7 +835,7 @@
       try:
         return p.notify_disconnect(connector_id)
       except:
-        self._rtcout.RTC_WARN("Unknown exception caught.")
+        self._rtcout.RTC_WARN(OpenRTM_aist.Logger.print_exception())
         continue
 
     self._rtcout.RTC_ERROR("notify_disconnect() for all ports failed.")
@@ -926,11 +953,14 @@
                                 self._profile.connector_profiles[index].connector_id,
                                 self._profile.connector_profiles[index].ports,
                                 self._profile.connector_profiles[index].properties)
+    self.onNotifyDisconnect(self.getName(), prof)
 
     retval = self.disconnectNext(prof)
+    self.onDisconnectNextport(self.getName(), prof, retval)
 
     if self._onUnsubscribeInterfaces:
       self._onUnsubscribeInterfaces(prof)
+    self.onUnsubscribeInterfaces(self.getName(), prof)
     self.unsubscribeInterfaces(prof)
 
     if self._onDisconnected:
@@ -938,6 +968,7 @@
 
     OpenRTM_aist.CORBA_SeqUtil.erase(self._profile.connector_profiles, index)
     
+    self.onDisconnected(self.getName(), prof, retval)
     return retval
 
 
@@ -1135,6 +1166,9 @@
 
     guard = OpenRTM_aist.ScopedLock(self._profile_mutex)
     plist = self._profile.name.split(".")
+    if not self._ownerInstanceName:
+      self._rtcout.RTC_ERROR("Owner is not set.")
+      self._rtcout.RTC_ERROR("addXXXPort() should be called in onInitialize().")
     portname = self._ownerInstanceName+"."+plist[-1]
 
     self._profile.owner = owner
@@ -1194,6 +1228,7 @@
     self._onPublishInterfaces = on_publish
     return
 
+
   ##
   # @if jp
   #
@@ -1405,9 +1440,36 @@
     self._onConnectionLost = on_connection_lost
     return
 
+
   ##
   # @if jp
+  # @brief PortConnectListeners のホルダをセットする
   #
+  # ポートの接続に関するリスナ群を保持するホルダクラスへのポインタを
+  # セットする。この関数は通常親のRTObjectから呼ばれ、RTObjectが持つ
+  # ホルダクラスへのポインタがセットされる。
+  #
+  # @param portconnListeners PortConnectListeners オブジェクトのポインタ
+  #
+  # @else
+  # @brief Setting PortConnectListener holder
+  #
+  # This operation sets a functor that is called when connection
+  # of this port does lost. 
+  #
+  # @param on_connection_lost a pointer to ConnectionCallback's subclasses
+  #
+  # @endif
+  #
+  # void setPortConnectListenerHolder(PortConnectListeners* portconnListeners);
+  def setPortConnectListenerHolder(self, portconnListeners):
+    self._portconnListeners = portconnListeners
+    return
+
+
+  ##
+  # @if jp
+  #
   # @brief Interface 情報を公開する(サブクラス実装用)
   #
   # このオペレーションは、notify_connect() 処理シーケンスの始めにコール
@@ -1561,7 +1623,7 @@
       try:
         return p.notify_disconnect(connector_profile.connector_id)
       except:
-        self._rtcout.RTC_WARN("Unknown exception caught.")
+        self._rtcout.RTC_WARN(OpenRTM_aist.Logger.print_exception())
         continue
 
     return RTC.RTC_ERROR
@@ -2201,12 +2263,100 @@
           self._rtcout.RTC_WARN("Dead Port reference detected.")
           return False
       except:
+        self._rtcout.RTC_WARN(OpenRTM_aist.Logger.print_exception())
         return False
 
     return True
 
 
+  #inline void onNotifyConnect(const char* portname,
+  #                            RTC::ConnectorProfile& profile)
+  def onNotifyConnect(self, portname, profile):
+    if self._portconnListeners != None:
+      type = OpenRTM_aist.PortConnectListenerType.ON_NOTIFY_CONNECT
+      self._portconnListeners.portconnect_[type].notify(portname, profile)
+    return
 
+
+  #inline void onNotifyDisconnect(const char* portname,
+  #                               RTC::ConnectorProfile& profile)
+  def onNotifyDisconnect(self, portname, profile):
+    if self._portconnListeners != None:
+      type = OpenRTM_aist.PortConnectListenerType.ON_NOTIFY_DISCONNECT
+      self._portconnListeners.portconnect_[type].notify(portname, profile)
+    return
+
+
+  #inline void onUnsubscribeInterfaces(const char* portname,
+  #                                    RTC::ConnectorProfile& profile)
+  def onUnsubscribeInterfaces(self, portname, profile):
+    if self._portconnListeners != None:
+      type = OpenRTM_aist.PortConnectListenerType.ON_UNSUBSCRIBE_INTERFACES
+      self._portconnListeners.portconnect_[type].notify(portname, profile)
+    return
+
+
+  #inline void onPublishInterfaces(const char* portname,
+  #                                RTC::ConnectorProfile& profile,
+  #                                ReturnCode_t ret)
+  def onPublishInterfaces(self, portname, profile, ret):
+    if self._portconnListeners != None:
+      type = OpenRTM_aist.PortConnectRetListenerType.ON_PUBLISH_INTERFACES
+      self._portconnListeners.portconnret_[type].notify(portname, profile, ret)
+    return
+
+
+  #inline void onConnectNextport(const char* portname,
+  #                              RTC::ConnectorProfile& profile,
+  #                              ReturnCode_t ret)
+  def onConnectNextport(self, portname, profile, ret):
+    if self._portconnListeners != None:
+      type = OpenRTM_aist.PortConnectRetListenerType.ON_CONNECT_NEXTPORT
+      self._portconnListeners.portconnret_[type].notify(portname, profile, ret)
+    return
+
+
+  #inline void onSubscribeInterfaces(const char* portname,
+  #                                  RTC::ConnectorProfile& profile,
+  #                                  ReturnCode_t ret)
+  def onSubscribeInterfaces(self, portname, profile, ret):
+    if self._portconnListeners != None:
+      type = OpenRTM_aist.PortConnectRetListenerType.ON_SUBSCRIBE_INTERFACES
+      self._portconnListeners.portconnret_[type].notify(portname, profile, ret)
+    return
+
+
+  #inline void onConnected(const char* portname,
+  #                        RTC::ConnectorProfile& profile,
+  #                        ReturnCode_t ret)
+  def onConnected(self, portname, profile, ret):
+    if self._portconnListeners != None:
+      type = OpenRTM_aist.PortConnectRetListenerType.ON_CONNECTED
+      self._portconnListeners.portconnret_[type].notify(portname, profile, ret)
+    return
+
+
+  #inline void onDisconnectNextport(const char* portname,
+  #                                 RTC::ConnectorProfile& profile,
+  #                                 ReturnCode_t ret)
+  def onDisconnectNextport(self, portname, profile, ret):
+    if self._portconnListeners != None:
+      type = OpenRTM_aist.PortConnectRetListenerType.ON_DISCONNECT_NEXT
+      self._portconnListeners.portconnret_[type].notify(portname, profile, ret)
+    return
+
+
+  #inline void onDisconnected(const char* portname,
+  #                           RTC::ConnectorProfile& profile,
+  #                           ReturnCode_t ret)
+  def onDisconnected(self, portname, profile, ret):
+    if self._portconnListeners != None:
+      type = OpenRTM_aist.PortConnectRetListenerType.ON_DISCONNECTED
+      self._portconnListeners.portconnret_[type].notify(portname, profile, ret)
+    return
+
+
+
   #============================================================
   # Functor
   #============================================================

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/PortCallBack.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/PortCallBack.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/PortCallBack.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -48,9 +48,32 @@
 # @endif
 #
 class ConnectionCallback:
-  def __del__(self):
-    pass
+  """
+  """
 
+  ##
+  # @if jp
+  #
+  # @brief コールバック関数
+  #
+  # connect/notify_connect() 等が呼び出される時に呼び出される
+  # コールバック関数
+  #
+  # @param self
+  # @param profile ConnectorProfile
+  #
+  # @else
+  #
+  # @brief Callback method
+  #
+  # This is the callback method invoked when connect/notify_connect()
+  # invocation in Port.
+  #
+  # @param self
+  # @param profile ConnectorProfile
+  #
+  # @endif
+  #
   # virtual void operator()(RTC::ConnectorProfile& profile) = 0;
   def __call__(self, profile):
     pass
@@ -64,8 +87,6 @@
 # Portに対してdisconnect/notify_disconnect() 等が呼び出される時に呼び出される
 # コールバックファンクタ。引数に接続IDを取る。
 #
-# @param connector_id Connector ID
-#
 # @since 1.0.0
 #
 # @else
@@ -76,17 +97,37 @@
 # disconnect/notify_disconnect() invocation in Port.
 # Argument is connector ID is given these functions.
 #
-# @param connector_id Connector ID
-#
 # @since 1.0.0
 #
 # @endif
 #
 class DisconnectCallback:
-  def __del__(self):
-    pass
+  """
+  """
 
-
+  ##
+  # @if jp
+  #
+  # @brief コールバック関数
+  #
+  # disconnect/notify_disconnect() 等が呼び出される時に呼び出される
+  # コールバック関数
+  #
+  # @param self
+  # @param connector_id Connector ID
+  #
+  # @else
+  #
+  # @brief Callback method
+  #
+  # This is the callback method invoked when disconnect/notify_disconnect()
+  # invocation in Port.
+  #
+  # @param self
+  # @param connector_id Connector ID
+  #
+  # @endif
+  #
   # virtual void operator()(const char* connector_id) = 0;
   def __call__(self, connector_id):
     pass
@@ -100,8 +141,6 @@
 # DataPortのバッファにデータがwrite()される直前に呼び出されるコールバック用<BR>
 # ※サブクラスでの実装参照用
 #
-# @param DataType バッファに書き込むデータ型
-#
 # @since 0.4.0
 #
 # @else
@@ -110,6 +149,31 @@
 #
 # @endif
 class OnWrite:
+  """
+  """
+
+  ##
+  # @if jp
+  #
+  # @brief コールバック関数
+  #
+  # バッファにデータが書き込まれる直前に呼び出されるコールバック関数
+  #
+  # @param self
+  # @param value バッファに書き込まれるデータ
+  #
+  # @else
+  #
+  # @brief Callback function
+  #
+  # This is the callback method invoked immediately before data is written
+  # into the buffer.
+  #
+  # @param self
+  # @param value Data that is written into the buffer
+  #
+  # @endif
+  #
   def __call__(self, value):
     pass
 
@@ -133,6 +197,33 @@
 #
 # @endif
 class OnWriteConvert:
+  """
+  """
+
+  ##
+  # @if jp
+  #
+  # @brief コールバック関数
+  #
+  # バッファにデータが書き込まれる際に呼び出されるコールバック関数。
+  #
+  # @param self
+  # @param value 変換前データ
+  # @return 変換後データ
+  #
+  # @else
+  #
+  # @brief Callback function
+  #
+  # This is the callback function invoked when data is written into the
+  # buffer.
+  #
+  # @param self
+  # @param value Data to be converted
+  # @return Converted data
+  #
+  # @endif
+  #
   def __call__(self,value):
     pass
 
@@ -155,6 +246,24 @@
 #
 # @endif
 class OnRead:
+  """
+  """
+
+  ##
+  # @if jp
+  #
+  # @brief コールバックメソッド
+  #
+  # バッファからデータが読み出される直前に呼び出されるコールバック関数。
+  #
+  # @else
+  #
+  # @brief Callback function
+  #
+  # This is the callback method invoked immediately before data is readout
+  # from the buffer.
+  #
+  # @endif
   def __call__(self):
     pass
 
@@ -178,5 +287,36 @@
 #
 # @endif
 class OnReadConvert:
+  """
+  """
+
+  ##
+  # @if jp
+  #
+  # @brief コールバックメソッド
+  #
+  # バッファからデータが読み出される際に呼び出されるコールバック関数
+  # であり、operator()() の戻り値は InPort の read() の戻り値となる、
+  # またはデータ変数に格納される。
+  #
+  # @param self
+  # @param value バッファから読みだされたデータ
+  # @return 変換後のデータ。データポート変数にはこの値が格納される。
+  #
+  # @else
+  #
+  # @brief Callback method
+  #
+  # This function is the callback function invoked when data is
+  # readout from the buffer, and the return value of operator()()
+  # is used as return value of InPort's read() or it is stored in
+  # the InPort data variable.
+  #
+  # @param self
+  # @param value Data that is readout from buffer
+  # @return Converted data. These data are stored in the port's variable.
+  #
+  # @endif
+  #
   def __call__(self,value):
     pass

Copied: trunk/OpenRTM-aist-Python/OpenRTM_aist/PortConnectListener.py (from rev 478, branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/PortConnectListener.py)
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/PortConnectListener.py	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/PortConnectListener.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,621 @@
+#!/usr/bin/env python
+# -*- coding: euc-jp -*-
+
+##
+# @file PortConnectListener.py
+# @brief port's internal action listener classes
+# @date $Date$
+# @author Noriaki Ando <n-ando at aist.go.jp> and Shinji Kurihara
+#
+# Copyright (C) 2011
+#     Intelligent Systems Research Institute,
+#     National Institute of
+#         Advanced Industrial Science and Technology (AIST), Japan
+#     All rights reserved.
+
+import threading
+
+class Lock:
+  """
+  """
+
+  ##
+  # @if jp
+  # @brief コンストラクタ
+  #
+  # コンストラクタ
+  #
+  # @param self
+  # @param mutex ロック用ミューテックス
+  #
+  # @else
+  #
+  # @endif
+  def __init__(self, mutex):
+    self.mutex = mutex
+    self.mutex.acquire()
+
+
+  ##
+  # @if jp
+  # @brief デストラクタ
+  #
+  # デストラクタ
+  #
+  # @param self
+  #
+  # @else
+  #
+  # @endif
+  def __del__(self):
+    self.mutex.release()
+
+#============================================================
+
+##
+# @if jp
+# @brief PortConnectListener のタイプ
+#
+# - ON_NOTIFY_CONNECT:         notify_connect() 関数内呼び出し直後
+# - ON_NOTIFY_DISCONNECT:      notify_disconnect() 呼び出し直後
+# - ON_UNSUBSCRIBE_INTERFACES: notify_disconnect() 内のIF購読解除時
+#
+# @else
+# @brief The types of ConnectorDataListener
+# 
+# - ON_NOTIFY_CONNECT:         right after entering into notify_connect()
+# - ON_NOTIFY_DISCONNECT:      right after entering into notify_disconnect()
+# - ON_UNSUBSCRIBE_INTERFACES: unsubscribing IF in notify_disconnect()
+#
+# @endif
+class PortConnectListenerType:
+  """
+  """
+
+  ON_NOTIFY_CONNECT         = 0
+  ON_NOTIFY_DISCONNECT      = 1
+  ON_UNSUBSCRIBE_INTERFACES = 2
+  PORT_CONNECT_LISTENER_NUM = 3
+
+  def __init__(self):
+    pass
+
+
+
+##
+# @if jp
+# @class PortConnectListener クラス
+# @brief PortConnectListener クラス
+#
+# 各アクションに対応するユーザーコードが呼ばれる直前のタイミング
+# でコールされるリスナクラスの基底クラス。
+#
+# - ON_NOTIFY_CONNECT:         notify_connect() 関数内呼び出し直後
+# - ON_NOTIFY_DISCONNECT:      notify_disconnect() 呼び出し直後
+# - ON_UNSUBSCRIBE_INTERFACES: notify_disconnect() 内のIF購読解除時
+#
+# @else
+# @class PortConnectListener class
+# @brief PortConnectListener class
+#
+# This class is abstract base class for listener classes that
+# provides callbacks for various events in rtobject.
+#
+# - ON_NOTIFY_CONNECT:         right after entering into notify_connect()
+# - ON_NOTIFY_DISCONNECT:      right after entering into notify_disconnect()
+# - ON_UNSUBSCRIBE_INTERFACES: unsubscribing IF in notify_disconnect()
+#
+# @endif
+class PortConnectListener:
+  """
+  """
+
+  def __init__(self):
+    pass
+
+  ##
+  # @if jp
+  #
+  # @brief PortConnectListenerType を文字列に変換
+  #
+  # PortConnectListenerType を文字列に変換する
+  #
+  # @param type 変換対象 PortConnectListenerType
+  #
+  # @return 文字列変換結果
+  #
+  # @else
+  #
+  # @brief Convert PortConnectListenerType into the string.
+  #
+  # Convert PortConnectListenerType into the string.
+  #
+  # @param type The target PortConnectListenerType for transformation
+  #
+  # @return Trnasformation result of string representation
+  #
+  # @endif
+  #static const char* toString(PortConnectListenerType type);
+  def toString(type):
+    typeString = ["ON_NOTIFY_CONNECT",
+                  "ON_NOTIFY_DISCONNECT",
+                  "ON_UNSUBSCRIBE_INTERFACES",
+                  "ON_UPDATE_CONFIG_PARAM",
+                  ""]
+                      
+    if type < ConfigurationParamListenerType.CONFIG_PARAM_LISTENER_NUM:
+      return typeString[type]
+        
+    return "";
+
+  toString = staticmethod(toString)
+
+
+  ##
+  # @if jp
+  # @brief デストラクタ
+  # @else
+  # @brief Destructor
+  # @endif
+  def __del__(self):
+    pass
+
+
+  ##
+  # @if jp
+  #
+  # @brief 仮想コールバック関数
+  #
+  # PortConnectListener のコールバック関数
+  #
+  # @else
+  #
+  # @brief Virtual Callback function
+  #
+  # This is a the Callback function for PortConnectListener.
+  #
+  # @endif
+  #virtual void operator()(const char* portname,
+  #                        RTC::ConnectorProfile& profile) = 0;
+  def __call__(self, portname, profile):
+    return
+
+
+
+#============================================================
+##
+# @if jp
+# @brief PortConnectRetListenerType のタイプ
+#
+# - ON_CONNECT_NEXTPORT:     notify_connect() 中のカスケード呼び出し直後
+# - ON_SUBSCRIBE_INTERFACES: notify_connect() 中のインターフェース購読直後
+# - ON_CONNECTED:            nofity_connect() 接続処理完了時に呼び出される
+# - ON_DISCONNECT_NEXT:      notify_disconnect() 中にカスケード呼び出し直後
+# - ON_DISCONNECTED:         notify_disconnect() リターン時
+#
+# @else
+# @brief The types of PortConnectRetListenerType
+# 
+# - ON_CONNECT_NEXTPORT:     after cascade-call in notify_connect()
+# - ON_SUBSCRIBE_INTERFACES: after IF subscribing in notify_connect()
+# - ON_CONNECTED:            completed nofity_connect() connection process
+# - ON_DISCONNECT_NEXT:      after cascade-call in notify_disconnect()
+# - ON_DISCONNECTED:         completed notify_disconnect() disconnection
+#
+# @endif
+class PortConnectRetListenerType:
+  """
+  """
+
+  ON_PUBLISH_INTERFACES         = 0
+  ON_CONNECT_NEXTPORT           = 1
+  ON_SUBSCRIBE_INTERFACES       = 2
+  ON_CONNECTED                  = 3
+  ON_DISCONNECT_NEXT            = 4
+  ON_DISCONNECTED               = 5
+  PORT_CONNECT_RET_LISTENER_NUM = 6
+
+  def __init__(self):
+    pass
+
+
+
+##
+# @if jp
+# @class PortConnectRetListener クラス
+# @brief PortConnectRetListener クラス
+#
+# 各アクションに対応するユーザーコードが呼ばれる直前のタイミング
+# でコールされるリスなクラスの基底クラス。
+#
+# - ON_PUBLISH_INTERFACES:   notify_connect() 中のインターフェース公開直後
+# - ON_CONNECT_NEXTPORT:     notify_connect() 中のカスケード呼び出し直後
+# - ON_SUBSCRIBE_INTERFACES: notify_connect() 中のインターフェース購読直後
+# - ON_CONNECTED:            nofity_connect() 接続処理完了時に呼び出される
+# - ON_DISCONNECT_NEXT:      notify_disconnect() 中にカスケード呼び出し直後
+# - ON_DISCONNECTED:         notify_disconnect() リターン時
+#
+# @else
+# @class PortConnectRetListener class
+# @brief PortConnectRetListener class
+#
+# This class is abstract base class for listener classes that
+# provides callbacks for various events in rtobject.
+#
+# - ON_CONNECT_NEXTPORT:     after cascade-call in notify_connect()
+# - ON_SUBSCRIBE_INTERFACES: after IF subscribing in notify_connect()
+# - ON_CONNECTED:            completed nofity_connect() connection process
+# - ON_DISCONNECT_NEXT:      after cascade-call in notify_disconnect()
+# - ON_DISCONNECTED:         completed notify_disconnect() disconnection
+#
+# @endif
+class PortConnectRetListener:
+  """
+  """
+
+  def __init__(self):
+    pass
+
+
+  ##
+  # @if jp
+  #
+  # @brief PortConnectRetListenerType を文字列に変換
+  #
+  # PortConnectRetListenerType を文字列に変換する
+  #
+  # @param type 変換対象 PortConnectRetListenerType
+  #
+  # @return 文字列変換結果
+  #
+  # @else
+  #
+  # @brief Convert PortConnectRetListenerType into string.
+  #
+  # Convert PortConnectRetListenerType into string.
+  #
+  # @param type The target PortConnectRetListenerType for transformation
+  #
+  # @return Trnasformation result of string representation
+  #
+  # @endif
+  #static const char* toString(PortConnectRetListenerType type);
+  def toString(type):
+    return
+  toString = staticmethod(toString)
+
+
+  ##
+  # @if jp
+  # @brief デストラクタ
+  # @else
+  # @brief Destructor
+  # @endif
+  def __del__(self):
+    pass
+
+
+  ##
+  # @if jp
+  #
+  # @brief 仮想コールバック関数
+  #
+  # PortConnectRetListener のコールバック関数
+  #
+  # @else
+  #
+  # @brief Virtual Callback function
+  #
+  # This is a the Callback function for PortConnectRetListener.
+  #
+  # @endif
+  #virtual void operator()(const char* portname,
+  #                        RTC::ConnectorProfile& profile,
+  #                        ReturnCode_t ret) = 0;
+  def __call__(self, portname, profile, ret):
+    pass
+
+
+
+class Entry:
+  def __init__(self,listener, autoclean):
+    self.listener  = listener
+    self.autoclean = autoclean
+    return
+
+#============================================================
+##
+# @if jp
+# @class PortConnectListenerHolder 
+# @brief PortConnectListener ホルダクラス
+#
+# 複数の PortConnectListener を保持し管理するクラス。
+#
+# @else
+# @class PortConnectListenerHolder
+# @brief PortConnectListener holder class
+#
+# This class manages one ore more instances of
+# PortConnectListener class.
+#
+# @endif
+class PortConnectListenerHolder:
+  """
+  """
+
+  ##
+  # @if jp
+  # @brief コンストラクタ
+  # @else
+  # @brief Constructor
+  # @endif
+  def __init__(self):
+    self._listeners = []
+    self._mutex = threading.RLock()
+    return
+
+    
+  ##
+  # @if jp
+  # @brief デストラクタ
+  # @else
+  # @brief Destructor
+  # @endif
+  def __del__(self):
+    pass
+    
+
+  ##
+  # @if jp
+  #
+  # @brief リスナーの追加
+  #
+  # リスナーを追加する。
+  #
+  # @param listener 追加するリスナ
+  # @param autoclean true:デストラクタで削除する,
+  #                  false:デストラクタで削除しない
+  # @else
+  #
+  # @brief Add the listener.
+  #
+  # This method adds the listener. 
+  #
+  # @param listener Added listener
+  # @param autoclean true:The listener is deleted at the destructor.,
+  #                  false:The listener is not deleted at the destructor. 
+  # @endif
+  #void addListener(PortConnectListener* listener, bool autoclean);
+  def addListener(self, listener, autoclean):
+    guard = Lock(self._mutex)
+    self._listeners.append(Entry(listener, autoclean))
+    del guard
+    return
+
+    
+  ##
+  # @if jp
+  #
+  # @brief リスナーの削除
+  #
+  # リスナを削除する。
+  #
+  # @param listener 削除するリスナ
+  # @else
+  #
+  # @brief Remove the listener. 
+  #
+  # This method removes the listener. 
+  #
+  # @param listener Removed listener
+  # @endif
+  #void removeListener(PortConnectListener* listener);
+  def removeListener(self, listener):
+    guard = Lock(self._mutex)
+    len_ = len(self._listeners)
+    for i in range(len_):
+      if (self._listeners[i].listener == listener) and self._listeners[i].autoclean:
+        self._listeners[i].listener = None
+      del self._listeners[i]
+      del guard
+      return
+    del guard
+    return
+
+
+  ##
+  # @if jp
+  #
+  # @brief リスナーへ通知する
+  #
+  # 登録されているリスナのコールバックメソッドを呼び出す。
+  #
+  # @param info ConnectorInfo
+  # @else
+  #
+  # @brief Notify listeners. 
+  #
+  # This calls the Callback method of the registered listener. 
+  #
+  # @param info ConnectorInfo
+  # @endif
+  #void notify(const char* portname, RTC::ConnectorProfile& profile);
+  def notify(self, portname, profile):
+    guard = Lock(self._mutex)
+    for listener in self._listeners:
+      listener.listener(portname, profile)
+    del guard
+    return
+
+
+##
+# @if jp
+# @class PortConnectRetListenerHolder
+# @brief PortConnectRetListener ホルダクラス
+#
+# 複数の PortConnectRetListener を保持し管理するクラス。
+#
+# @else
+# @class PortConnectRetListenerHolder
+# @brief PortConnectRetListener holder class
+#
+# This class manages one ore more instances of
+# PortConnectRetListener class.
+#
+# @endif
+class PortConnectRetListenerHolder:
+  """
+  """
+
+  ##
+  # @if jp
+  # @brief コンストラクタ
+  # @else
+  # @brief Constructor
+  # @endif
+  #PortConnectRetListenerHolder();
+  def __init__(self):
+    self._listeners = []
+    self._mutex = threading.RLock()
+    return
+
+
+  ##
+  # @if jp
+  # @brief デストラクタ
+  # @else
+  # @brief Destructor
+  # @endif
+  def __del__(self):
+    pass
+
+
+    
+  ##
+  # @if jp
+  #
+  # @brief リスナーの追加
+  #
+  # リスナーを追加する。
+  #
+  # @param listener 追加するリスナ
+  # @param autoclean true:デストラクタで削除する,
+  #                  false:デストラクタで削除しない
+  # @else
+  #
+  # @brief Add the listener.
+  #
+  # This method adds the listener. 
+  #
+  # @param listener Added listener
+  # @param autoclean true:The listener is deleted at the destructor.,
+  #                  false:The listener is not deleted at the destructor. 
+  # @endif
+  #void addListener(PortConnectRetListener* listener, bool autoclean);
+  def addListener(self, listener, autoclean):
+    guard = Lock(self._mutex)
+    self._listeners.append(Entry(listener, autoclean))
+    del guard
+    return
+
+    
+  ##
+  # @if jp
+  #
+  # @brief リスナーの削除
+  #
+  # リスナを削除する。
+  #
+  # @param listener 削除するリスナ
+  # @else
+  #
+  # @brief Remove the listener. 
+  #
+  # This method removes the listener. 
+  #
+  # @param listener Removed listener
+  # @endif
+  #void removeListener(PortConnectRetListener* listener);
+  def removeListener(self, listener):
+    guard = Lock(self._mutex)
+    len_ = len(self._listeners)
+    for i in range(len_):
+      if (self._listeners[i].listener == listener) and self._listeners[i].autoclean:
+        self._listeners[i].listener = None
+      del self._listeners[i]
+      del guard
+      return
+    del guard
+    return
+
+    
+  ##
+  # @if jp
+  #
+  # @brief リスナーへ通知する
+  #
+  # 登録されているリスナのコールバックメソッドを呼び出す。
+  #
+  # @param info ConnectorInfo
+  # @param cdrdata データ
+  # @else
+  #
+  # @brief Notify listeners. 
+  #
+  # This calls the Callback method of the registered listener. 
+  #
+  # @param info ConnectorInfo
+  # @param cdrdata Data
+  # @endif
+  #void notify(const char* portname, RTC::ConnectorProfile& profile,
+  #            ReturnCode_t ret);
+  def notify(self, portname, profile, ret):
+    guard = Lock(self._mutex)
+    for listener in self._listeners:
+      listener.listener(portname, profile, ret)
+    del guard
+    return
+
+
+
+##
+# @if jp
+# @class PortConnectListeners
+# @brief PortConnectListeners クラス
+#
+#
+# @else
+# @class PortConnectListeners
+# @brief PortConnectListeners class
+#
+#
+# @endif
+class PortConnectListeners:
+  """
+  """
+
+  def __init__(self):
+    pass
+
+
+  ##
+  # @if jp
+  # @brief PortConnectListenerType リスナ配列
+  # PortConnectListenerType リスナを格納
+  # @else
+  # @brief PortConnectListenerType listener array
+  # The PortConnectListenerType listener is stored. 
+  # @endif
+  portconnect_num = PortConnectListenerType.PORT_CONNECT_LISTENER_NUM
+  portconnect_ = [PortConnectListenerHolder() for i in range(portconnect_num)]
+    
+  ##
+  # @if jp
+  # @brief PortConnectRetTypeリスナ配列
+  # PortConnectRetTypeリスナを格納
+  # @else
+  # @brief PortConnectRetType listener array
+  # The PortConnectRetType listener is stored.
+  # @endif
+  portconnret_num = PortConnectRetListenerType.PORT_CONNECT_RET_LISTENER_NUM
+  portconnret_ = [PortConnectRetListenerHolder() for i in range(portconnret_num)]

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/PortProfileHelper.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/PortProfileHelper.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/PortProfileHelper.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -43,605 +43,617 @@
 # @endif
 #
 class PortProfileHelper:
+  """
+  """
 
-    def __init__(self):
-        self._mutex        = threading.RLock()
-        self._name         = ""
-        self._ifProfiles   = []
-        self._portRef      = None
-        self._connProfiles = []
-        self._owner        = None
-        self._properties   = []
+  def __init__(self):
+    self._mutex        = threading.RLock()
+    self._name         = ""
+    self._ifProfiles   = []
+    self._portRef      = None
+    self._connProfiles = []
+    self._owner        = None
+    self._properties   = []
+    return
 
+  ##
+  # @if jp
+  #
+  # @brief PortProfile を設定する
+  #
+  # このオブジェクトが保持する PortProfile を引数で与えられた PortProfile
+  # をコピーし上書きして保存する。
+  #
+  # @param PortProfile 上書きする PortProfile
+  #
+  # @else
+  #
+  # @brief Set PortProfile
+  #
+  # This operation copies the given PortProfile and overwrites the existent
+  # PortProfile by the given ProtProfile.
+  #
+  # @param PortProfile The PortProfile to be stored.
+  #
+  # @endif
+  #
+  # void setPortProfile(const PortProfile& profile);
+  def setPortProfile(self, profile):
+    guard = OpenRTM_aist.ScopedLock(self._mutex)
+    self._name         = profile.name
+    self._ifProfiles   = profile.interfaces
+    self._portRef      = profile.port_ref
+    self._connProfiles = profile.connector_profiles
+    self._owner        = profile.owner
+    self._properties   = profile.properties
+    return
 
-    ##
-    # @if jp
-    #
-    # @brief PortProfile を設定する
-    #
-    # このオブジェクトが保持する PortProfile を引数で与えられた PortProfile
-    # をコピーし上書きして保存する。
-    #
-    # @param PortProfile 上書きする PortProfile
-    #
-    # @else
-    #
-    # @brief Set PortProfile
-    #
-    # This operation copies the given PortProfile and overwrites the existent
-    # PortProfile by the given ProtProfile.
-    #
-    # @param PortProfile The PortProfile to be stored.
-    #
-    # @endif
-    #
-    # void setPortProfile(const PortProfile& profile);
-    def setPortProfile(self, profile):
-        guard = OpenRTM_aist.ScopedLock(self._mutex)
-        self._name         = profile.name
-        self._ifProfiles   = profile.interfaces
-        self._portRef      = profile.port_ref
-        self._connProfiles = profile.connector_profiles
-        self._owner        = profile.owner
-        self._properties   = profile.properties
+  ##
+  # @if jp
+  #
+  # @brief PortProfile を取得する
+  #
+  # このオブジェクトが保持する PortProfile を返す。
+  #
+  # @return このオブジェクトが保持する PortProfile
+  #
+  # @else
+  #
+  # @brief Get PortProfile
+  #
+  # This operation returns the PortProfile.
+  #
+  # @return The PortProfile stored by the object.
+  #
+  # @endif
+  #
+  # PortProfile* getPortProfile();
+  def getPortProfile(self):
+    guard = OpenRTM_aist.ScopedLock(self._mutex)
+    prof = RTC.PortProfile(self._name,
+                           self._ifProfiles,
+                           self._portRef,
+                           self._connProfiles,
+                           self._owner,
+                           self._properties)
+    return prof
 
 
-    ##
-    # @if jp
-    #
-    # @brief PortProfile を取得する
-    #
-    # このオブジェクトが保持する PortProfile を返す。
-    #
-    # @return このオブジェクトが保持する PortProfile
-    #
-    # @else
-    #
-    # @brief Get PortProfile
-    #
-    # This operation returns the PortProfile.
-    #
-    # @return The PortProfile stored by the object.
-    #
-    # @endif
-    #
-    # PortProfile* getPortProfile();
-    def getPortProfile(self):
-        guard = OpenRTM_aist.ScopedLock(self._mutex)
-        prof = RTC.PortProfile(self._name,
-                               self._ifProfiles,
-                               self._portRef,
-                               self._connProfiles,
-                               self._owner,
-                               self._properties)
-        return prof
+  ##
+  # @if jp
+  #
+  # @brief PortProfile.name を設定する
+  #
+  # このオペレーションは引数で与えられた文字列をコポーし、
+  # PortProfile.name として保持する。
+  #
+  # @param name PortProfile.name に格納する Port の名前
+  #
+  # @else
+  #
+  # @brief Set PortProfile.name
+  #
+  # This operation stores a copy of given name to the PortProfile.name.
+  #
+  # @param name The name of Port to be stored to the PortProfile.name.
+  #
+  # @endif
+  #
+  # void setName(const char* name);
+  def setName(self, name):
+    guard = OpenRTM_aist.ScopedLock(self._mutex)
+    self._name = name
+    return
 
+  ##
+  # @if jp
+  #
+  # @brief PortProfile.name を取得する
+  #
+  # このオペレーションは PortProfile.name を取得する。
+  #
+  # @return PortProfile.name へのポインタ
+  #
+  # @else
+  #
+  # @brief Get PortProfile.name
+  #
+  # This operation returns a pointer to the PortProfile.name.
+  #
+  # @return The pointer to PortProfile.name.
+  #
+  # @endif
+  #
+  # const char* getName() const;
+  def getName(self):
+    guard = OpenRTM_aist.ScopedLock(self._mutex)
+    return self._name
 
-    ##
-    # @if jp
-    #
-    # @brief PortProfile.name を設定する
-    #
-    # このオペレーションは引数で与えられた文字列をコポーし、
-    # PortProfile.name として保持する。
-    #
-    # @param name PortProfile.name に格納する Port の名前
-    #
-    # @else
-    #
-    # @brief Set PortProfile.name
-    #
-    # This operation stores a copy of given name to the PortProfile.name.
-    #
-    # @param name The name of Port to be stored to the PortProfile.name.
-    #
-    # @endif
-    #
-    # void setName(const char* name);
-    def setName(self, name):
-        guard = OpenRTM_aist.ScopedLock(self._mutex)
-        self._name = name
 
+  ##
+  # @if jp
+  #
+  # @brief PortInterfaceProfile を追加する
+  #
+  # このオペレーションは PortProfile に PortInterfaceProfile を追加する。
+  #
+  # @param if_profile PortProfile に追加する PortInterfaceProfile
+  #
+  # @else
+  #
+  # @brief Append PortInterfaceProfile to the PortProfile
+  #
+  # This operation appends the PortInterfaceProfile to the PortProfile
+  #
+  # @param if_profile PortInterfaceProfile to be appended the PortProfile
+  #
+  # @endif
+  #
+  # void appendPortInterfaceProfile(PortInterfaceProfile if_prof);
+  def appendPortInterfaceProfile(self, if_prof):
+    guard = OpenRTM_aist.ScopedLock(self._mutex)
+    self._ifProfiles.append(if_prof)
+    return
 
-    ##
-    # @if jp
-    #
-    # @brief PortProfile.name を取得する
-    #
-    # このオペレーションは PortProfile.name を取得する。
-    #
-    # @return PortProfile.name へのポインタ
-    #
-    # @else
-    #
-    # @brief Get PortProfile.name
-    #
-    # This operation returns a pointer to the PortProfile.name.
-    #
-    # @return The pointer to PortProfile.name.
-    #
-    # @endif
-    #
-    # const char* getName() const;
-    def getName(self):
-        guard = OpenRTM_aist.ScopedLock(self._mutex)
-        return self._name
+  ##
+  # @if jp
+  #
+  # @brief PortInterfaceProfileList を取得する
+  #
+  # このオペレーションは PortInterfaceProfileList を返す。
+  #
+  # @return PortInterfaceProfileList
+  #
+  # @else
+  #
+  # @brief Get PortInterfaceProfileList
+  #
+  # This operation returns the PortInterfaceProfileList.
+  #
+  # @return PortInterfaceProfileList
+  #
+  # @endif
+  #
+  # const PortInterfaceProfileList& getPortInterfaceProfiles() const;
+  def getPortInterfaceProfiles(self):
+    guard = OpenRTM_aist.ScopedLock(self._mutex)
+    return self._ifProfiles
 
 
-    ##
-    # @if jp
-    #
-    # @brief PortInterfaceProfile を追加する
-    #
-    # このオペレーションは PortProfile に PortInterfaceProfile を追加する。
-    #
-    # @param if_profile PortProfile に追加する PortInterfaceProfile
-    #
-    # @else
-    #
-    # @brief Append PortInterfaceProfile to the PortProfile
-    #
-    # This operation appends the PortInterfaceProfile to the PortProfile
-    #
-    # @param if_profile PortInterfaceProfile to be appended the PortProfile
-    #
-    # @endif
-    #
-    # void appendPortInterfaceProfile(PortInterfaceProfile if_prof);
-    def appendPortInterfaceProfile(self, if_prof):
-        guard = OpenRTM_aist.ScopedLock(self._mutex)
-        self._ifProfiles.append(if_prof)
+  ##
+  # @if jp
+  #
+  # @brief PortInterfaceProfile を取得する
+  #
+  # このオペレーションは instance_name で指定された PortInterfaceProfile
+  # を返す。
+  #
+  # @param instance_name PortInterfaceProfile の instance_name
+  # @return PortInterfaceProfile
+  #
+  # @else
+  #
+  # @brief Get PortInterfaceProfile
+  #
+  # This operation returns the PortInterfaceProfile specified
+  # by instance_name.
+  #
+  # @param instance_name instance_name of the PortInterfaceProfile
+  # @return PortInterfaceProfile
+  #
+  # @endif
+  #
+  # const PortInterfaceProfile getPortInterfaceProfile(const char* instance_name) const;
+  def getPortInterfaceProfile(self, instance_name):
+    guard = OpenRTM_aist.ScopedLock(self._mutex)
+    index = OpenRTM_aist.CORBA_SeqUtil.find(self._ifProfiles,
+                                            self.if_name(instance_name))
+    if index < 0:
+      return None
+    else:
+      return self._ifProfiles[index]
 
 
-    ##
-    # @if jp
-    #
-    # @brief PortInterfaceProfileList を取得する
-    #
-    # このオペレーションは PortInterfaceProfileList を返す。
-    #
-    # @return PortInterfaceProfileList
-    #
-    # @else
-    #
-    # @brief Get PortInterfaceProfileList
-    #
-    # This operation returns the PortInterfaceProfileList.
-    #
-    # @return PortInterfaceProfileList
-    #
-    # @endif
-    #
-    # const PortInterfaceProfileList& getPortInterfaceProfiles() const;
-    def getPortInterfaceProfiles(self):
-        guard = OpenRTM_aist.ScopedLock(self._mutex)
-        return self._ifProfiles
+  ##
+  # @if jp
+  #
+  # @brief PortInterfaceProfile を削除する
+  #
+  # このオペレーションは instance_name で指定された PortInterfaceProfile
+  # を削除する。指定した名前の PortInterfaceProfile が存在しない場合には、
+  # NotFound exception を返す。
+  #
+  # @param instance_name 削除する PortInterfaceProfile の名前
+  #
+  # @else
+  #
+  # @brief Erase PortInterfaceProfile from the PortProfile
+  #
+  # This operation erases the PortInterfaceProfile from the PortProfile
+  #
+  # @param instance_name PortInterfaceProfile to be erased from the
+  #        PortProfile
+  #
+  # @endif
+  #
+  # void erasePortInterfaceProfile(const char* instance_name);
+  def erasePortInterfaceProfile(self, instance_name):
+    guard = OpenRTM_aist.ScopedLock(self._mutex)
+    index = OpenRTM_aist.CORBA_SeqUtil.find(self._ifProfiles,
+                                            self.if_name(instance_name))
+    if index < 0:
+      return
+    else:
+      del self._ifProfiles[index]
 
 
-    ##
-    # @if jp
-    #
-    # @brief PortInterfaceProfile を取得する
-    #
-    # このオペレーションは instance_name で指定された PortInterfaceProfile
-    # を返す。
-    #
-    # @param instance_name PortInterfaceProfile の instance_name
-    # @return PortInterfaceProfile
-    #
-    # @else
-    #
-    # @brief Get PortInterfaceProfile
-    #
-    # This operation returns the PortInterfaceProfile specified
-    # by instance_name.
-    #
-    # @param instance_name instance_name of the PortInterfaceProfile
-    # @return PortInterfaceProfile
-    #
-    # @endif
-    #
-    # const PortInterfaceProfile getPortInterfaceProfile(const char* instance_name) const;
-    def getPortInterfaceProfile(self, instance_name):
-        guard = OpenRTM_aist.ScopedLock(self._mutex)
-        index = OpenRTM_aist.CORBA_SeqUtil.find(self._ifProfiles,
-                                                self.if_name(instance_name))
-        if index < 0:
-            return None
-        else:
-            return self._ifProfiles[index]
+  ##
+  # @if jp
+  #
+  # @brief Port のオブジェクト参照をセットする
+  #
+  # このオペレーションは PortProfile に、関連する Port のオブジェクト参照
+  # を設定する。
+  #
+  # @param port 設定する Port のオブジェクトリファレンス
+  #
+  # @else
+  #
+  # @brief Set Port's object reference
+  #
+  # This operation set the object reference of the Port.
+  #
+  # @param port Port's object reference to be set.
+  #
+  # @endif
+  #
+  # void setPortRef(PortService_ptr port);
+  def setPortRef(self, port):
+    guard = OpenRTM_aist.ScopedLock(self._mutex)
+    self._portRef = port
+    return
 
 
-    ##
-    # @if jp
-    #
-    # @brief PortInterfaceProfile を削除する
-    #
-    # このオペレーションは instance_name で指定された PortInterfaceProfile
-    # を削除する。指定した名前の PortInterfaceProfile が存在しない場合には、
-    # NotFound exception を返す。
-    #
-    # @param instance_name 削除する PortInterfaceProfile の名前
-    #
-    # @else
-    #
-    # @brief Erase PortInterfaceProfile from the PortProfile
-    #
-    # This operation erases the PortInterfaceProfile from the PortProfile
-    #
-    # @param instance_name PortInterfaceProfile to be erased from the
-    #        PortProfile
-    #
-    # @endif
-    #
-    # void erasePortInterfaceProfile(const char* instance_name);
-    def erasePortInterfaceProfile(self, instance_name):
-        guard = OpenRTM_aist.ScopedLock(self._mutex)
-        index = OpenRTM_aist.CORBA_SeqUtil.find(self._ifProfiles,
-                                                self.if_name(instance_name))
-        if index < 0:
-            return
-        else:
-            del self._ifProfiles[index]
+  ##
+  # @if jp
+  #
+  # @brief Port のオブジェクト参照を取得する
+  #
+  # このオペレーションは PortProfile に関連付けられた Port の
+  # オブジェクト参照を返す。
+  #
+  # @return 関連付けられた Port のオブジェクト参照
+  #
+  # @else
+  #
+  # @brief Get Port's object reference
+  #
+  # This operation returns the object reference of the PortProfile.
+  #
+  # @return Port's object reference associated with the PortProfile.
+  #
+  # @endif
+  #
+  # PortService_ptr getPortRef() const;
+  def getPortRef(self):
+    guard = OpenRTM_aist.ScopedLock(self._mutex)
+    return self._portRef
 
 
-    ##
-    # @if jp
-    #
-    # @brief Port のオブジェクト参照をセットする
-    #
-    # このオペレーションは PortProfile に、関連する Port のオブジェクト参照
-    # を設定する。
-    #
-    # @param port 設定する Port のオブジェクトリファレンス
-    #
-    # @else
-    #
-    # @brief Set Port's object reference
-    #
-    # This operation set the object reference of the Port.
-    #
-    # @param port Port's object reference to be set.
-    #
-    # @endif
-    #
-    # void setPortRef(PortService_ptr port);
-    def setPortRef(self, port):
-        guard = OpenRTM_aist.ScopedLock(self._mutex)
-        self._portRef = port
+  ##
+  # @if jp
+  #
+  # @brief ConnectorProfile を追加する
+  #
+  # このオペレーションは PortProfile に ConnectorProfile を追加する。
+  #
+  # @param conn_profile ConnectorProfile 
+  #
+  # @else
+  #
+  # @brief Append ConnectorProfile
+  #
+  # This operation appends the ConnectorProfile to the PortProfile.
+  #
+  # @param conn_profile ConnectorProfile to be added.
+  #
+  # @endif
+  #
+  # void appendConnectorProfile(ConnectorProfile conn_profile);
+  def appendConnectorProfile(self, conn_profile):
+    guard = OpenRTM_aist.ScopedLock(self._mutex)
+    self._connProfiles.append(conn_profile)
+    return
 
+  ##
+  # @if jp
+  #
+  # @brief ConnectorProfileList を取得する
+  #
+  # このオペレーションは PortProfile に関連付けられた ConnectorProfile の
+  # リスト ConnectorProfileList を返す。
+  #
+  # @return 関連付けられた ConnectorProfileList
+  #
+  # @else
+  #
+  # @brief Get ConnectorProfileList
+  #
+  # This operation returns the list of ConnectorProfile of the PortProfile.
+  #
+  # @return Port's ConnectorProfileList.
+  #
+  # @endif
+  #
+  # const ConnectorProfileList getConnectorProfiles() const;
+  def getConnectorProfiles(self):
+    guard = OpenRTM_aist.ScopedLock(self._mutex)
+    return self._connProfiles
 
-    ##
-    # @if jp
-    #
-    # @brief Port のオブジェクト参照を取得する
-    #
-    # このオペレーションは PortProfile に関連付けられた Port の
-    # オブジェクト参照を返す。
-    #
-    # @return 関連付けられた Port のオブジェクト参照
-    #
-    # @else
-    #
-    # @brief Get Port's object reference
-    #
-    # This operation returns the object reference of the PortProfile.
-    #
-    # @return Port's object reference associated with the PortProfile.
-    #
-    # @endif
-    #
-    # PortService_ptr getPortRef() const;
-    def getPortRef(self):
-        guard = OpenRTM_aist.ScopedLock(self._mutex)
-        return self._portRef
 
+  ##
+  # @if jp
+  #
+  # @brief ConnectorProfile を取得する
+  #
+  # このオペレーションは引数で指定された名前を持つ ConnectorProfile を返す。
+  #
+  # @param name ConnectorProfile の名前
+  # @return ConnectorProfile
+  #
+  # @else
+  #
+  # @brief Get ConnectorProfile
+  #
+  # This operation returns the ConnectorProfile specified by name.
+  #
+  # @param name The name of ConnectorProfile
+  # @return ConnectorProfile.
+  #
+  # @endif
+  #
+  # const ConnectorProfile getConnectorProfile(const char* name) const;
+  def getConnectorProfile(self, name):
+    guard = OpenRTM_aist.ScopedLock(self._mutex)
+    index = OpenRTM_aist.CORBA_SeqUtil.find(self._connProfiles,
+                                            self.conn_name(name))
+    if index < 0:
+      return None
+    else:
+      return self._connProfiles[index]
 
-    ##
-    # @if jp
-    #
-    # @brief ConnectorProfile を追加する
-    #
-    # このオペレーションは PortProfile に ConnectorProfile を追加する。
-    #
-    # @param conn_profile ConnectorProfile 
-    #
-    # @else
-    #
-    # @brief Append ConnectorProfile
-    #
-    # This operation appends the ConnectorProfile to the PortProfile.
-    #
-    # @param conn_profile ConnectorProfile to be added.
-    #
-    # @endif
-    #
-    # void appendConnectorProfile(ConnectorProfile conn_profile);
-    def appendConnectorProfile(self, conn_profile):
-        guard = OpenRTM_aist.ScopedLock(self._mutex)
-        self._connProfiles.append(conn_profile)
+    return None
 
 
-    ##
-    # @if jp
-    #
-    # @brief ConnectorProfileList を取得する
-    #
-    # このオペレーションは PortProfile に関連付けられた ConnectorProfile の
-    # リスト ConnectorProfileList を返す。
-    #
-    # @return 関連付けられた ConnectorProfileList
-    #
-    # @else
-    #
-    # @brief Get ConnectorProfileList
-    #
-    # This operation returns the list of ConnectorProfile of the PortProfile.
-    #
-    # @return Port's ConnectorProfileList.
-    #
-    # @endif
-    #
-    # const ConnectorProfileList getConnectorProfiles() const;
-    def getConnectorProfiles(self):
-        guard = OpenRTM_aist.ScopedLock(self._mutex)
-        return self._connProfiles
+  ##
+  # @if jp
+  #
+  # @brief ConnectorProfile を取得する
+  #
+  # このオペレーションは引数で指定されたIDを持つ ConnectorProfile を返す。
+  #
+  # @param id ConnectorProfile のID
+  # @return ConnectorProfile
+  #
+  # @else
+  #
+  # @brief Get ConnectorProfile
+  #
+  # This operation returns the ConnectorProfile specified by ID.
+  #
+  # @param id The ID of ConnectorProfile
+  # @return ConnectorProfile.
+  #
+  # @endif
+  #
+  # const ConnectorProfile getConnectorProfileById(const char* id) const;
+  def getConnectorProfileById(self, id):
+    guard = OpenRTM_aist.ScopedLock(self._mutex)
+    index = OpenRTM_aist.CORBA_SeqUtil.find(self._connProfiles,
+                                            self.conn_id(id))
+    if index < 0:
+      return None
+    else:
+      return self._connProfiles[index]
 
+    return None
 
-    ##
-    # @if jp
-    #
-    # @brief ConnectorProfile を取得する
-    #
-    # このオペレーションは引数で指定された名前を持つ ConnectorProfile を返す。
-    #
-    # @param name ConnectorProfile の名前
-    # @return ConnectorProfile
-    #
-    # @else
-    #
-    # @brief Get ConnectorProfile
-    #
-    # This operation returns the ConnectorProfile specified by name.
-    #
-    # @param name The name of ConnectorProfile
-    # @return ConnectorProfile.
-    #
-    # @endif
-    #
-    # const ConnectorProfile getConnectorProfile(const char* name) const;
-    def getConnectorProfile(self, name):
-        guard = OpenRTM_aist.ScopedLock(self._mutex)
-        index = OpenRTM_aist.CORBA_SeqUtil.find(self._connProfiles,
-                                                self.conn_name(name))
-        if index < 0:
-            return None
-        else:
-            return self._connProfiles[index]
+  ##
+  # @if jp
+  #
+  # @brief ConnectorProfile を削除する
+  #
+  # このオペレーションは PortProfile の ConnectorProfile を
+  # 名前で指定して削除する。
+  #
+  # @param naem ConnectorProfile の名前
+  #
+  # @else
+  #
+  # @brief Erase ConnectorProfile
+  #
+  # This operation erases the ConnectorProfile from the PortProfile.
+  #
+  # @param name The name of the ConnectorProfile to be erased.
+  #
+  # @endif
+  #
+  # void eraseConnectorProfile(const char* name);
+  def eraseConnectorProfile(self, name):
+    guard = OpenRTM_aist.ScopedLock(self._mutex)
+    index = OpenRTM_aist.CORBA_SeqUtil.find(self._connProfiles,
+                                            self.conn_name(name))
+    if index < 0:
+      return
+    else:
+      del self._connProfiles[index]
 
+    return
 
-    ##
-    # @if jp
-    #
-    # @brief ConnectorProfile を取得する
-    #
-    # このオペレーションは引数で指定されたIDを持つ ConnectorProfile を返す。
-    #
-    # @param id ConnectorProfile のID
-    # @return ConnectorProfile
-    #
-    # @else
-    #
-    # @brief Get ConnectorProfile
-    #
-    # This operation returns the ConnectorProfile specified by ID.
-    #
-    # @param id The ID of ConnectorProfile
-    # @return ConnectorProfile.
-    #
-    # @endif
-    #
-    # const ConnectorProfile getConnectorProfileById(const char* id) const;
-    def getConnectorProfileById(self, id):
-        guard = OpenRTM_aist.ScopedLock(self._mutex)
-        index = OpenRTM_aist.CORBA_SeqUtil.find(self._connProfiles,
-                                                self.conn_id(id))
-        if index < 0:
-            return None
-        else:
-            return self._connProfiles[index]
 
+  ##
+  # @if jp
+  #
+  # @brief ConnectorProfile を削除する
+  #
+  # このオペレーションは PortProfile の ConnectorProfile を
+  # ID で指定して削除する。
+  #
+  # @param id ConnectorProfile のID
+  #
+  # @else
+  #
+  # @brief Erase ConnectorProfile
+  #
+  # This operation erases the ConnectorProfile from the PortProfile.
+  #
+  # @param id The ID of the ConnectorProfile to be erased.
+  #
+  # @endif
+  #
+  # void eraseConnectorProfileById(const char* id);
+  def eraseConnectorProfileById(self, id):
+    guard = OpenRTM_aist.ScopedLock(self._mutex)
+    index = OpenRTM_aist.CORBA_SeqUtil.find(self._connProfiles,
+                                            self.conn_id(id))
+    if index < 0:
+      return
+    else:
+      del self._connProfiles[index]
 
-    ##
-    # @if jp
-    #
-    # @brief ConnectorProfile を削除する
-    #
-    # このオペレーションは PortProfile の ConnectorProfile を
-    # 名前で指定して削除する。
-    #
-    # @param naem ConnectorProfile の名前
-    #
-    # @else
-    #
-    # @brief Erase ConnectorProfile
-    #
-    # This operation erases the ConnectorProfile from the PortProfile.
-    #
-    # @param name The name of the ConnectorProfile to be erased.
-    #
-    # @endif
-    #
-    # void eraseConnectorProfile(const char* name);
-    def eraseConnectorProfile(self, name):
-        guard = OpenRTM_aist.ScopedLock(self._mutex)
-        index = OpenRTM_aist.CORBA_SeqUtil.find(self._connProfiles,
-                                                self.conn_name(name))
-        if index < 0:
-            return
-        else:
-            del self._connProfiles[index]
+    return
 
+  ##
+  # @if jp
+  #
+  # @brief PortProfile の owner を設定する
+  #
+  # このオペレーションは PortProfile の owner を設定する。
+  #
+  # @param owner PortProfile の owner のオブジェクト参照
+  #
+  # @else
+  #
+  # @brief Set owner's object reference to the PortProfile
+  #
+  # This operation sets the owner's object reference to the PortProfile.
+  #
+  # @param owner The owner's object reference of PortProfile.
+  #
+  # @endif
+  #
+  # void setOwner(RTObject_ptr owner);
+  def setOwner(self, owner):
+    guard = OpenRTM_aist.ScopedLock(self._mutex)
+    self._owner = owner
+    return
 
-    ##
-    # @if jp
-    #
-    # @brief ConnectorProfile を削除する
-    #
-    # このオペレーションは PortProfile の ConnectorProfile を
-    # ID で指定して削除する。
-    #
-    # @param id ConnectorProfile のID
-    #
-    # @else
-    #
-    # @brief Erase ConnectorProfile
-    #
-    # This operation erases the ConnectorProfile from the PortProfile.
-    #
-    # @param id The ID of the ConnectorProfile to be erased.
-    #
-    # @endif
-    #
-    # void eraseConnectorProfileById(const char* id);
-    def eraseConnectorProfileById(self, id):
-        guard = OpenRTM_aist.ScopedLock(self._mutex)
-        index = OpenRTM_aist.CORBA_SeqUtil.find(self._connProfiles,
-                                                self.conn_id(id))
-        if index < 0:
-            return
-        else:
-            del self._connProfiles[index]
+  ##
+  # @if jp
+  #
+  # @brief PortProfile の owner を取得する
+  #
+  # このオペレーションは PortProfile の owner のオブジェクト参照を返す。
+  #
+  # @return PortProfile の owner のオブジェクト参照
+  #
+  # @else
+  #
+  # @brief Get owner's object reference from the PortProfile
+  #
+  # This operation returns the owner's object reference of the PortProfile.
+  #
+  # @return The owner's object reference of PortProfile.
+  #
+  # @endif
+  #
+  # RTObject_ptr getOwner() const;
+  def getOwner(self):
+    guard = OpenRTM_aist.ScopedLock(self._mutex)
+    return self._owner
 
 
-    ##
-    # @if jp
-    #
-    # @brief PortProfile の owner を設定する
-    #
-    # このオペレーションは PortProfile の owner を設定する。
-    #
-    # @param owner PortProfile の owner のオブジェクト参照
-    #
-    # @else
-    #
-    # @brief Set owner's object reference to the PortProfile
-    #
-    # This operation sets the owner's object reference to the PortProfile.
-    #
-    # @param owner The owner's object reference of PortProfile.
-    #
-    # @endif
-    #
-    # void setOwner(RTObject_ptr owner);
-    def setOwner(self, owner):
-        guard = OpenRTM_aist.ScopedLock(self._mutex)
-        self._owner = owner
+  ##
+  # @if jp
+  #
+  # @brief PortProfile の properties を設定する
+  #
+  # このオペレーションは PortProfile に properties を設定する。
+  #
+  # @param prop PortProfile の properties の NVList
+  #
+  # @else
+  #
+  # @brief Set properties to the PortProfile
+  #
+  # This operation set the properties to the PortProfile.
+  #
+  # @param prop The NVList of PortProfile's properties.
+  #
+  # @endif
+  #
+  # void setProperties(NVList& prop);
+  def setProperties(self, prop):
+    guard = OpenRTM_aist.ScopedLock(self._mutex)
+    self._properties = prop
+    return
 
+  ##
+  # @if jp
+  #
+  # @brief PortProfile の properties を取得する
+  #
+  # このオペレーションは PortProfile の propertiesを返す。
+  #
+  # @return PortProfile の properties の NVList
+  #
+  # @else
+  #
+  # @brief Get properties of the PortProfile
+  #
+  # This operation returns the properties of the PortProfile.
+  #
+  # @return The NVList of PortProfile's properties.
+  #
+  # @endif
+  #
+  # const NVList& getProperties() const;
+  def getProperties(self):
+    guard = OpenRTM_aist.ScopedLock(self._mutex)
+    return self._properties
 
-    ##
-    # @if jp
-    #
-    # @brief PortProfile の owner を取得する
-    #
-    # このオペレーションは PortProfile の owner のオブジェクト参照を返す。
-    #
-    # @return PortProfile の owner のオブジェクト参照
-    #
-    # @else
-    #
-    # @brief Get owner's object reference from the PortProfile
-    #
-    # This operation returns the owner's object reference of the PortProfile.
-    #
-    # @return The owner's object reference of PortProfile.
-    #
-    # @endif
-    #
-    # RTObject_ptr getOwner() const;
-    def getOwner(self):
-        guard = OpenRTM_aist.ScopedLock(self._mutex)
-        return self._owner
 
+  ##
+  # @if jp
+  # @class if_name
+  # @brief instance_name を持つ PortInterfaceProfile を探す Functor
+  # @else
+  # @brief A functor to find a PortInterfaceProfile named instance_name
+  # @endif
+  class if_name:
+    def __init__(self, name):
+      self._name = name
+      return
 
-    ##
-    # @if jp
-    #
-    # @brief PortProfile の properties を設定する
-    #
-    # このオペレーションは PortProfile に properties を設定する。
-    #
-    # @param prop PortProfile の properties の NVList
-    #
-    # @else
-    #
-    # @brief Set properties to the PortProfile
-    #
-    # This operation set the properties to the PortProfile.
-    #
-    # @param prop The NVList of PortProfile's properties.
-    #
-    # @endif
-    #
-    # void setProperties(NVList& prop);
-    def setProperties(self, prop):
-        guard = OpenRTM_aist.ScopedLock(self._mutex)
-        self._properties = prop
+    def __call__(self, prof):
+      return str(self._name) == str(prof.instance_name)
 
 
-    ##
-    # @if jp
-    #
-    # @brief PortProfile の properties を取得する
-    #
-    # このオペレーションは PortProfile の propertiesを返す。
-    #
-    # @return PortProfile の properties の NVList
-    #
-    # @else
-    #
-    # @brief Get properties of the PortProfile
-    #
-    # This operation returns the properties of the PortProfile.
-    #
-    # @return The NVList of PortProfile's properties.
-    #
-    # @endif
-    #
-    # const NVList& getProperties() const;
-    def getProperties(self):
-        guard = OpenRTM_aist.ScopedLock(self._mutex)
-        return self._properties
+  # Functor to find ConnectorProfile by name
+  class conn_name:
+    def __init__(self, name):
+      self._name = name
+      return
 
+    def __call__(self, cprof):
+      return str(self._name) == str(cprof.name)
 
-    ##
-    # @if jp
-    # @class if_name
-    # @brief instance_name を持つ PortInterfaceProfile を探す Functor
-    # @else
-    # @brief A functor to find a PortInterfaceProfile named instance_name
-    # @endif
-    class if_name:
-        def __init__(self, name):
-            self._name = name
-
-        def __call__(self, prof):
-            return str(self._name) == str(prof.instance_name)
-
-
-    # Functor to find ConnectorProfile by name
-    class conn_name:
-        def __init__(self, name):
-            self._name = name
-
-        def __call__(self, cprof):
-            return str(self._name) == str(cprof.name)
-
     
-    # Functor to find ConnectorProfile by id
-    class conn_id:
-        def __init__(self, id_):
-            self._id = id_
+  # Functor to find ConnectorProfile by id
+  class conn_id:
+    def __init__(self, id_):
+      self._id = id_
+      return
 
-        def __call__(self, cprof):
-            return str(self._id) == str(cprof.connector_id)
+    def __call__(self, cprof):
+      return str(self._id) == str(cprof.connector_id)

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/Process.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/Process.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/Process.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -16,6 +16,7 @@
 #     All rights reserved.
 
 import os,sys
+import traceback
 import subprocess
 
 ##
@@ -49,7 +50,12 @@
     p = subprocess.Popen(args, **subproc_args)
   except OSError:
     # fork failed
-    print sys.exc_info()[0]
+    if sys.version_info[0:3] >= (2, 4, 0):
+      print traceback.format_exc()
+    else:
+      _exc_list = traceback.format_exception(*sys.exc_info())
+      print "".join(_exc_list)
+
     return -1
   return 0
 

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/PublisherNew.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/PublisherNew.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/PublisherNew.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -100,6 +100,7 @@
       self._task.finalize()
 
       OpenRTM_aist.PeriodicTaskFactory.instance().deleteObject(self._task)
+      del self._task
       self._rtcout.RTC_PARANOID("task deleted.")
 
     # "consumer" should be deleted in the Connector
@@ -631,6 +632,7 @@
 
       return self.PORT_OK
     except:
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       return self.CONNECTION_LOST
 
     return self.PORT_ERROR
@@ -658,6 +660,7 @@
         
       return self.PORT_OK
     except:
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       return self.CONNECTION_LOST
 
     return self.PORT_ERROR
@@ -705,6 +708,7 @@
       return ret
 
     except:
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       return self.CONNECTION_LOST
 
     return self.PORT_ERROR
@@ -734,6 +738,7 @@
       return self.PORT_OK
 
     except:
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       return self.CONNECTION_LOST
 
     return self.PORT_ERROR

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/PublisherPeriodic.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/PublisherPeriodic.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/PublisherPeriodic.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -105,6 +105,7 @@
       self._rtcout.RTC_PARANOID("task finalized.")
 
       OpenRTM_aist.PeriodicTaskFactory.instance().deleteObject(self._task)
+      del self._task
       self._rtcout.RTC_PARANOID("task deleted.")
 
     # "consumer" should be deleted in the Connector
@@ -646,6 +647,9 @@
   def pushAll(self):
     self._rtcout.RTC_TRACE("pushAll()")
 
+    if not self._buffer:
+      return self.PRECONDITION_NOT_MET      
+
     if self.bufferIsEmpty():
       return self.BUFFER_EMPTY
 
@@ -672,6 +676,9 @@
   # PublisherBase::ReturnCode PublisherPeriodic::pushFifo()
   def pushFifo(self):
     self._rtcout.RTC_TRACE("pushFifo()")
+    if not self._buffer:
+      return self.PRECONDITION_NOT_MET      
+
     if self.bufferIsEmpty():
       return self.BUFFER_EMPTY
 
@@ -697,6 +704,9 @@
   # PublisherBase::ReturnCode PublisherPeriodic::pushSkip()
   def pushSkip(self):
     self._rtcout.RTC_TRACE("pushSkip()")
+    if not self._buffer:
+      return self.PRECONDITION_NOT_MET      
+
     if self.bufferIsEmpty():
       return self.BUFFER_EMPTY
 
@@ -730,6 +740,9 @@
   # PublisherBase::ReturnCode PublisherPeriodic::pushNew()
   def pushNew(self):
     self._rtcout.RTC_TRACE("pushNew()")
+    if not self._buffer:
+      return self.PRECONDITION_NOT_MET      
+
     if self.bufferIsEmpty():
       return self.BUFFER_EMPTY
 
@@ -1072,7 +1085,7 @@
   #
   # bool bufferIsEmpty()
   def bufferIsEmpty(self):
-    if self._buffer.empty() and  not self._readback:
+    if self._buffer and self._buffer.empty() and  not self._readback:
       self._rtcout.RTC_DEBUG("buffer empty")
       self.onBufferEmpty()
       self.onSenderEmpty()

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/RTObject.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/RTObject.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/RTObject.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -66,9 +66,9 @@
 #
 # @endif
 class RTObject_impl(OpenRTM__POA.DataFlowComponent):
+  """
+  """
 
-
-
   ##
   # @if jp
   # @brief コンストラクタ
@@ -109,8 +109,9 @@
     self._properties = OpenRTM_aist.Properties(defaults_str=default_conf)
     self._configsets = OpenRTM_aist.ConfigAdmin(self._properties.getNode("conf"))
     self._profile = RTC.ComponentProfile("","","","","","",[],None,[])
-    
-    self._SdoConfigImpl = OpenRTM_aist.Configuration_impl(self._configsets)
+
+    self._sdoservice = OpenRTM_aist.SdoServiceAdmin(self)
+    self._SdoConfigImpl = OpenRTM_aist.Configuration_impl(self._configsets,self._sdoservice)
     self._SdoConfig = self._SdoConfigImpl.getObjRef()
     self._execContexts = []
     self._objref = self._this()
@@ -128,6 +129,8 @@
     self._writeAllCompletion = False
     self._inports = []
     self._outports = []
+    self._actionListeners = OpenRTM_aist.ComponentActionListeners()
+    self._portconnListeners = OpenRTM_aist.PortConnectListeners()
     return
 
 
@@ -894,15 +897,17 @@
   def get_component_profile(self):
     self._rtcout.RTC_TRACE("get_component_profile()")
     try:
-      return RTC.ComponentProfile(self._properties.getProperty("instance_name"),
-                                  self._properties.getProperty("type_name"),
-                                  self._properties.getProperty("description"),
-                                  self._properties.getProperty("version"),
-                                  self._properties.getProperty("vendor"),
-                                  self._properties.getProperty("category"),
-                                  self._portAdmin.getPortProfileList(),
-                                  self._profile.parent,
-                                  self._profile.properties)
+      prop_ = RTC.ComponentProfile(self._properties.getProperty("instance_name"),
+                                   self._properties.getProperty("type_name"),
+                                   self._properties.getProperty("description"),
+                                   self._properties.getProperty("version"),
+                                   self._properties.getProperty("vendor"),
+                                   self._properties.getProperty("category"),
+                                   self._portAdmin.getPortProfileList(),
+                                   self._profile.parent,
+                                   self._profile.properties) 
+      OpenRTM_aist.NVUtil.copyFromProperties(self._profile.properties, self._properties)
+      return prop_
       # return RTC.ComponentProfile(self._profile.instance_name,
       #               self._profile.type_name,
       #               self._profile.description,
@@ -914,8 +919,7 @@
       #               self._profile.properties)
     
     except:
-      #traceback.print_exception(*sys.exc_info())
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
 
     assert(False)
     return None
@@ -947,8 +951,7 @@
     try:
       return self._portAdmin.getPortServiceList()
     except:
-      #traceback.print_exception(*sys.exc_info())
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
 
     assert(False)
     return []
@@ -1003,12 +1006,15 @@
     for i in range(len(self._ecOther)):
       if CORBA.is_nil(self._ecOther[i]):
         self._ecOther[i] = ecs
-        return i + ECOTHER_OFFSET
+        ec_id = i + ECOTHER_OFFSET
+        self.onAttachExecutionContext(ec_id)
+        return ec_id
 
     # no space in the list, push back ec to the last.
     OpenRTM_aist.CORBA_SeqUtil.push_back(self._ecOther,ecs)
-    
-    return long(len(self._ecOther) - 1 + ECOTHER_OFFSET)
+    ec_id = long(len(self._ecOther) - 1 + ECOTHER_OFFSET)
+    self.onAttachExecutionContext(ec_id)
+    return ec_id
 
 
   # UniqueId bindContext(ExecutionContext_ptr exec_context);
@@ -1028,6 +1034,7 @@
     for i in range(len(self._ecMine)):
       if CORBA.is_nil(self._ecMine[i]):
         self._ecMine[i] = ecs
+        self.onAttachExecutionContext(i)
         return i
         #return i + ECOTHER_OFFSET
 
@@ -1100,7 +1107,7 @@
     
     #OpenRTM_aist.CORBA_SeqUtil.erase(self._ecOther, index)
     self._ecOther[index] = RTC.ExecutionContextService._nil
-
+    self.onDetachExecutionContext(ec_id)
     return RTC.RTC_OK
 
 
@@ -1132,19 +1139,21 @@
     self._rtcout.RTC_TRACE("on_initialize()")
     ret = RTC.RTC_ERROR
     try:
+      self.preOnInitialize(0)
       ret = self.onInitialize()
-      active_set = self._properties.getProperty("configuration.active_config",
-                                                "default")
+    except:
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
+      ret = RTC.RTC_ERROR
 
-      if self._configsets.haveConfig(active_set):
-          self._configsets.update(active_set)
-      else:
-          self._configsets.update("default")
+    active_set = self._properties.getProperty("configuration.active_config",
+                                              "default")
 
-    except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
-      return RTC.RTC_ERROR
+    if self._configsets.haveConfig(active_set):
+      self._configsets.update(active_set)
+    else:
+      self._configsets.update("default")
 
+    self.postOnInitialize(0,ret)
     return ret
 
 
@@ -1176,11 +1185,12 @@
     self._rtcout.RTC_TRACE("on_finalize()")
     ret = RTC.RTC_ERROR
     try:
+      self.preOnFinalize(0)
       ret = self.onFinalize()
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
-      return RTC.RTC_ERROR
-    
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
+      ret = RTC.RTC_ERROR
+    self.postOnFinalize(0, ret)
     return ret
 
 
@@ -1215,11 +1225,12 @@
     self._rtcout.RTC_TRACE("on_startup(%d)", ec_id)
     ret = RTC.RTC_ERROR
     try:
+      self.preOnStartup(ec_id)
       ret = self.onStartup(ec_id)
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
-      return RTC.RTC_ERROR
-    
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
+      ret = RTC.RTC_ERROR
+    self.postOnStartup(ec_id, ret)
     return ret
 
 
@@ -1254,11 +1265,12 @@
     self._rtcout.RTC_TRACE("on_shutdown(%d)", ec_id)
     ret = RTC.RTC_ERROR
     try:
+      self.preOnShutdown(ec_id)
       ret = self.onShutdown(ec_id)
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
-      return RTC.RTC_ERROR
-    
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
+      ret = RTC.RTC_ERROR
+    self.postOnShutdown(ec_id, ret)
     return ret
 
 
@@ -1291,13 +1303,14 @@
     self._rtcout.RTC_TRACE("on_activated(%d)", ec_id)
     ret = RTC.RTC_ERROR
     try:
+      self.preOnActivated(ec_id)
       self._configsets.update()
       ret = self.onActivated(ec_id)
       self._portAdmin.activatePorts()
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
-      return RTC.RTC_ERROR
-    
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
+      ret = RTC.RTC_ERROR
+    self.postOnActivated(ec_id, ret)
     return ret
 
 
@@ -1330,12 +1343,13 @@
     self._rtcout.RTC_TRACE("on_deactivated(%d)", ec_id)
     ret = RTC.RTC_ERROR
     try:
+      self.preOnDeactivated(ec_id)
       self._portAdmin.deactivatePorts()
       ret = self.onDeactivated(ec_id)
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
-      return RTC.RTC_ERROR
-    
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
+      ret = RTC.RTC_ERROR
+    self.postOnDeactivated(ec_id, ret)
     return ret
 
 
@@ -1374,11 +1388,12 @@
     self._rtcout.RTC_TRACE("on_aborting(%d)", ec_id)
     ret = RTC.RTC_ERROR
     try:
+      self.preOnAborting(ec_id)
       ret = self.onAborting(ec_id)
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
-      return RTC.RTC_ERROR
-    
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
+      ret = RTC.RTC_ERROR
+    self.postOnAborting(ec_id, ret)
     return ret
 
 
@@ -1428,12 +1443,13 @@
     self._rtcout.RTC_TRACE("on_error(%d)", ec_id)
     ret = RTC.RTC_ERROR
     try:
+      self.preOnError(ec_id)
       ret = self.onError(ec_id)
-      self._configsets.update()
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
-      return RTC.RTC_ERROR
-    
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
+      ret = RTC.RTC_ERROR
+    self._configsets.update()
+    self.postOnError(ec_id, ret)
     return ret
 
 
@@ -1473,11 +1489,12 @@
     self._rtcout.RTC_TRACE("on_reset(%d)", ec_id)
     ret = RTC.RTC_ERROR
     try:
+      self.preOnReset(ec_id)
       ret = self.onReset(ec_id)
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
-      return RTC.RTC_ERROR
-    
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
+      ret = RTC.RTC_ERROR
+    self.postOnReset(ec_id, ret)
     return ret
 
 
@@ -1525,6 +1542,7 @@
     self._rtcout.RTC_TRACE("on_execute(%d)", ec_id)
     ret = RTC.RTC_ERROR
     try:
+      self.preOnExecute(ec_id)
       if self._readAll:
         self.readAll()
       
@@ -1534,9 +1552,9 @@
         self.writeAll()
       
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
-      return RTC.RTC_ERROR
-    
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
+      ret = RTC.RTC_ERROR
+    self.postOnExecute(ec_id, ret)
     return ret
 
 
@@ -1584,12 +1602,13 @@
     self._rtcout.RTC_TRACE("on_state_update(%d)", ec_id)
     ret = RTC.RTC_ERROR
     try:
+      self.preOnStateUpdate(ec_id)
       ret = self.onStateUpdate(ec_id)
       self._configsets.update()
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
-      return RTC.RTC_ERROR
-    
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
+      ret = RTC.RTC_ERROR
+    self.postOnStateUpdate(ec_id, ret)
     return ret
 
 
@@ -1631,11 +1650,12 @@
     self._rtcout.RTC_TRACE("on_rate_changed(%d)", ec_id)
     ret = RTC.RTC_ERROR
     try:
+      self.preOnRateChanged(ec_id)
       ret = self.onRateChanged(ec_id)
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
-      return RTC.RTC_ERROR
-    
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
+      ret = RTC.RTC_ERROR
+    self.postOnRateChanged(ec_id, ret)
     return ret
 
 
@@ -1688,7 +1708,7 @@
     try:
       return self._sdoOwnedOrganizations
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       raise SDOPackage.NotAvailable("NotAvailable: get_owned_organizations")
 
     return []
@@ -1739,7 +1759,7 @@
     try:
       return self._profile.instance_name
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       raise SDOPackage.InternalError("get_sdo_id()")
 
 
@@ -1784,7 +1804,7 @@
     try:
       return self._profile.description
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       raise SDOPackage.InternalError("get_sdo_type()")
     return ""
 
@@ -1833,7 +1853,7 @@
     try:
       return self._SdoConfigImpl.getDeviceProfile()
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       raise SDOPackage.InternalError("get_device_profile()")
 
     return SDOPackage.DeviceProfile("","","","",[])
@@ -1884,7 +1904,7 @@
     try:
       return self._sdoSvcProfiles
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       raise SDOPackage.InternalError("get_service_profiles()")
 
     return []
@@ -1947,7 +1967,7 @@
 
       return self._sdoSvcProfiles[index]
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       raise SDOPackage.InternalError("get_service_profile()")
 
     return SDOPackage.ServiceProfile("", "", [], None)
@@ -2015,7 +2035,7 @@
     try:
       return self._sdoSvcProfiles[index].service
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       raise SDOPackage.InternalError("get_service()")
     return SDOPackage.SDOService._nil
 
@@ -2073,7 +2093,7 @@
     try:
       return self._SdoConfig
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       raise SDOPackage.InternalError("get_configuration()")
     return SDOPackage.Configuration._nil
 
@@ -2172,7 +2192,7 @@
     try:
       return self._sdoOrganizations
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       raise SDOPackage.InternalError("get_organizations()")
     return []
 
@@ -2215,6 +2235,7 @@
     try:
       return self._sdoStatus
     except:
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       raise SDOPackage.InternalError("get_status_list()")
     return []
 
@@ -2265,6 +2286,7 @@
     try:
       return any.to_any(self._sdoStatus[index].value)
     except:
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       raise SDOPackage.InternalError("get_status()")
     return any.to_any("")
 
@@ -2656,10 +2678,11 @@
     elif isinstance(port, OpenRTM_aist.PortBase):
       self._rtcout.RTC_TRACE("addPort(PortBase)")
       port.setOwner(self.getObjRef())
+      port.setPortConnectListenerHolder(self._portconnListeners)
+      self.onAddPort(port.getPortProfile())
 
     elif isinstance(port, RTC._objref_PortService):
       self._rtcout.RTC_TRACE("addPort(PortService)")
-
     return self._portAdmin.addPort(port)
 
 
@@ -2789,7 +2812,7 @@
           try:
             self._inports.remove(port)
           except:
-            self._rtcout.RTC_ERROR("Can not remove inport.")
+            self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
             
           return True
 
@@ -2828,7 +2851,7 @@
           try:
             self._outports.remove(port)
           except:
-            self._rtcout.RTC_ERROR("Can not remove outport.")
+            self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
             
           return True
 
@@ -2864,6 +2887,8 @@
   # new interface. since 1.0.0-RELEASE
   def removePort(self, port):
     self._rtcout.RTC_TRACE("removePort()")
+    if isinstance(port, OpenRTM_aist.PortBase) or isinstance(port, OpenRTM_aist.CorbaPort):
+      self.onRemovePort(port.getPortProfile())
     return self._portAdmin.removePort(port)
 
 
@@ -2889,6 +2914,424 @@
   ##
   # @if jp
   #
+  # @brief [local interface] 実行コンテキストを取得する
+  #
+  # get_context() と同じ機能のローカル版。違いはない。
+  # この関数は以下の関数内で呼ばれることを前提としている。
+  #
+  # - onStartup()
+  # - onShutdown()
+  # - onActivated()
+  # - onDeactivated()
+  # - onExecute()
+  # - onAborting()
+  # - onError()
+  # - onReset()
+  # - onStateUpdate()
+  # - onRateChanged()
+  # 
+  # この関数の引数はこれらの関数の引数 UniquieID exec_handle でなけ
+  # ればならない。
+  # 
+  # @param ec_id 上記関数の第1引数 exec_handle を渡す必要がある。
+  # 
+  # @else
+  # 
+  # @brief [local interface] Getting current execution context
+  # 
+  # This function is the local version of get_context(). completely
+  # same as get_context() function. This function is assumed to be
+  # called from the following functions.
+  # 
+  # - onStartup()
+  # - onShutdown()
+  # - onActivated()
+  # - onDeactivated()
+  # - onExecute()
+  # - onAborting()
+  # - onError()
+  # - onReset()
+  # - onStateUpdate()
+  # - onRateChanged()
+  # 
+  # The argument of this function should be the first argument
+  # (UniqueId ec_id) of the above functions.
+  # 
+  # @param ec_id The above functions' first argument "exec_handle."
+  # 
+  # @endif
+  #
+  # ExecutionContext_ptr getExecutionContext(RTC::UniqueId ec_id);
+  def getExecutionContext(self, ec_id):
+    return self.get_context(ec_id)
+
+  ##
+  # @if jp
+  # 
+  # @brief [local interface] 実行コンテキストの実行レートを取得する
+  #
+  # 現在実行中の実行コンテキストの実行レートを取得する。実行コンテキ
+  # ストのKindがPERIODIC以外の場合の動作は未定義である。この関数は以
+  # 下の関数内で呼ばれることを前提としている。
+  #
+  # - onStartup()
+  # - onShutdown()
+  # - onActivated()
+  # - onDeactivated()
+  # - onExecute()
+  # - onAborting()
+  # - onError()
+  # - onReset()
+  # - onStateUpdate()
+  # - onRateChanged()
+  #
+  # この関数の引数はこれらの関数の引数 UniquieID exec_handle でなけ
+  # ればならない。
+  #
+  # @param ec_id 上記関数の第1引数 exec_handle を渡す必要がある。
+  #
+  # @else
+  # 
+  # @brief [local interface] Getting current context' execution rate
+  #
+  # This function returns current execution rate in this
+  # context. If this context's kind is not PERIODC, behavior is not
+  # defined. This function is assumed to be called from the
+  # following functions.
+  #
+  # - onStartup()
+  # - onShutdown()
+  # - onActivated()
+  # - onDeactivated()
+  # - onExecute()
+  # - onAborting()
+  # - onError()
+  # - onReset()
+  # - onStateUpdate()
+  # - onRateChanged()
+  #
+  # The argument of this function should be the first argument
+  # (UniqueId ec_id) of the above functions.
+  #
+  # @param ec_id The above functions' first argument "exec_handle."
+  #
+  # @endif
+  #
+  # double getExecutionRate(RTC::UniqueId ec_id);
+  def getExecutionRate(self, ec_id):
+    ec = self.getExecutionContext(ec_id)
+    if CORBA.is_nil(ec):
+      return 0.0
+
+    return ec.get_rate()
+
+
+  ##
+  # @if jp
+  # 
+  # @brief [local interface] 実行コンテキストの実行レートを設定する
+  #
+  # 現在実行中の実行コンテキストの実行レートを設定する。実行コンテキ
+  # ストのKindがPERIODIC以外の場合の動作は未定義である。この関数は以
+  # 下の関数内で呼ばれることを前提としている。
+  #
+  # - onStartup()
+  # - onShutdown()
+  # - onActivated()
+  # - onDeactivated()
+  # - onExecute()
+  # - onAborting()
+  # - onError()
+  # - onReset()
+  # - onStateUpdate()
+  # - onRateChanged()
+  #
+  # この関数の引数はこれらの関数の引数 UniquieID exec_handle でなけ
+  # ればならない。
+  #
+  # @param ec_id 上記関数の第1引数 exec_handle を渡す必要がある。
+  # @param rate 実行レートを [Hz] で与える
+  #
+  # @else
+  # 
+  # @brief [local interface] Setting current context' execution rate
+  #
+  # This function sets a execution rate in the context. If this
+  # context's kind is not PERIODC, behavior is not defined. This
+  # function is assumed to be called from the following functions.
+  #
+  # - onStartup()
+  # - onShutdown()
+  # - onActivated()
+  # - onDeactivated()
+  # - onExecute()
+  # - onAborting()
+  # - onError()
+  # - onReset()
+  # - onStateUpdate()
+  # - onRateChanged()
+  #
+  # The argument of this function should be the first argument
+  # (UniqueId ec_id) of the above functions.
+  #
+  # @param ec_id The above functions' first argument "exec_handle."
+  # @param rate Execution rate in [Hz].
+  #
+  # @endif
+  #
+  # ReturnCode_t setExecutionRate(RTC::UniqueId ec_id, double rate);
+  def setExecutionRate(self, ec_id, rate):
+    ec = self.getExecutionContext(ec_id)
+    if CORBA.is_nil(ec):
+      return RTC.RTC_ERROR
+    ec.set_rate(rate)
+    return RTC.RTC_OK
+
+
+  ##
+  # @if jp
+  # 
+  # @brief [local interface] 実行コンテキストの所有権を調べる
+  #
+  # 現在実行中の実行コンテキストの所有権を調べる。この関数は以下の関
+  # 数内で呼ばれることを前提としている。
+  #
+  # - onStartup()
+  # - onShutdown()
+  # - onActivated()
+  # - onDeactivated()
+  # - onExecute()
+  # - onAborting()
+  # - onError()
+  # - onReset()
+  # - onStateUpdate()
+  # - onRateChanged()
+  #
+  # この関数の引数はこれらの関数の引数 UniquieID exec_handle でなけ
+  # ればならない。
+  #
+  # @param ec_id 上記関数の第1引数 exec_handle を渡す必要がある。
+  # @return true: 自身の実行コンテキスト、false: 他の実行コンテキスト
+  #
+  # @else
+  # 
+  # @brief [local interface] Checking if the current context is own context
+  #
+  # This function checks if the current context is own execution
+  # context. This function is assumed to be called from the
+  # following functions.
+  #
+  # - onStartup()
+  # - onShutdown()
+  # - onActivated()
+  # - onDeactivated()
+  # - onExecute()
+  # - onAborting()
+  # - onError()
+  # - onReset()
+  # - onStateUpdate()
+  # - onRateChanged()
+  #
+  # The argument of this function should be the first argument
+  # (UniqueId ec_id) of the above functions.
+  #
+  # @param ec_id The above functions' first argument "exec_handle."
+  # @return true: Own context, false: other's context
+  #
+  # @endif
+  #
+  # bool isOwnExecutionContext(RTC::UniqueId ec_id);
+  def isOwnExecutionContext(self, ec_id):
+    global ECOTHER_OFFSET
+    if ec_id < ECOTHER_OFFSET:
+      return True
+    return False
+
+
+  ##
+  # @if jp
+  # 
+  # @brief [local interface] 状態を Inactive に遷移させる
+  #
+  # 状態を Active から Inactive に遷移させる。この関数は以下の関
+  # 数内で呼ばれることを前提としている。
+  #
+  # - onActivated()
+  # - onExecute()
+  # - onStateUpdate()
+  #
+  # この関数の引数は上記の関数の引数 UniquieID exec_handle でなけ
+  # ればならない。
+  #
+  # @param ec_id 上記関数の第1引数 exec_handle を渡す必要がある。
+  # @return リターンコード
+  #
+  # @else
+  # 
+  # @brief [local interface] Make transition to Inactive state
+  #
+  # This function makes transition from Active to Inactive
+  # state. This function is assumed to be called from the following
+  # functions.
+  #
+  # - onActivated()
+  # - onExecute()
+  # - onStateUpdate()
+  #
+  # The argument of this function should be the first argument
+  # (UniqueId ec_id) of the above function.
+  #
+  # @param ec_id The above functions' first argument "exec_handle."
+  # @return Return code
+  #
+  # @endif
+  #
+  # ReturnCode_t deactivate(RTC::UniqueId ec_id);
+  def deactivate(self, ec_id):
+    ec = self.getExecutionContext(ec_id)
+    if CORBA.is_nil(ec):
+      return RTC.RTC_ERROR
+    return ec.deactivate_component(self.getObjRef())
+
+
+  ##
+  # @if jp
+  # 
+  # @brief [local interface] 状態を Active に遷移させる
+  #
+  # 状態を Inactive から Active に遷移させる。この関数は以下の関
+  # 数内で呼ばれることを前提としている。
+  #
+  # - onStartup()
+  # - onDeactivated()
+  #
+  # この関数の引数は上記の関数の引数 UniquieID exec_handle でなけ
+  # ればならない。
+  #
+  # @param ec_id 上記関数の第1引数 exec_handle を渡す必要がある。
+  # @return リターンコード
+  #
+  # @else
+  # 
+  # @brief [local interface] Make transition to Active state
+  #
+  # This function makes transition from Inactive to Active
+  # state. This function is assumed to be called from the following
+  # functions.
+  #
+  # - onStartup()
+  # - onDeactivated()
+  #
+  # The argument of this function should be the first argument
+  # (UniqueId ec_id) of the above function.
+  #
+  # @param ec_id The above functions' first argument "exec_handle."
+  # @return Return code
+  #
+  # @endif
+  #
+  # ReturnCode_t activate(RTC::UniqueId ec_id);
+  def activate(self, ec_id):
+    ec = self.getExecutionContext(ec_id)
+    if CORBA.is_nil(ec):
+      return RTC.RTC_ERROR
+    return ec.activate_component(self.getObjRef())
+
+
+  ##
+  # @if jp
+  # 
+  # @brief [local interface] 状態をリセットし Inactive に遷移させる
+  #
+  # 状態を Error から Inactive に遷移させる。この関数は以下の関
+  # 数内で呼ばれることを前提としている。
+  #
+  # - onError()
+  #
+  # この関数の引数は上記の関数の引数 UniquieID exec_handle でなけ
+  # ればならない。
+  #
+  # @param ec_id 上記関数の第1引数 exec_handle を渡す必要がある。
+  # @return リターンコード
+  #
+  # @else
+  # 
+  # @brief [local interface] Resetting and go to Inactive state
+  #
+  # This function reset RTC and makes transition from Error to Inactive
+  # state. This function is assumed to be called from the following
+  # functions.
+  #
+  # - onError()
+  #
+  # The argument of this function should be the first argument
+  # (UniqueId ec_id) of the above function.
+  #
+  # @param ec_id The above functions' first argument "exec_handle."
+  # @return Return code
+  #
+  # @endif
+  #
+  # ReturnCode_t reset(RTC::UniqueId ec_id);
+  def reset(self, ec_id):
+    ec = self.getExecutionContext(ec_id)
+    if CORBA.is_nil(ec):
+      return RTC.RTC_ERROR
+    return ec.reset_component(self.getObjRef())
+    
+
+  ##
+  # @if jp
+  # @brief [local interface] SDO service provider をセットする
+  # @else
+  # @brief [local interface] Set a SDO service provider
+  # @endif
+  #
+  # bool addSdoServiceProvider(const SDOPackage::ServiceProfile& prof,
+  #                            SdoServiceProviderBase* provider);
+  def addSdoServiceProvider(self, prof, provider):
+    return self._sdoservice.addSdoServiceProvider(prof, provider)
+
+
+  ##
+  # @if jp
+  # @brief [local interface] SDO service provider を削除する
+  # @else
+  # @brief [local interface] Remove a SDO service provider
+  # @endif
+  #
+  # bool removeSdoServiceProvider(const char* id);
+  def removeSdoServiceProvider(self, id):
+    return self._sdoservice.removeSdoServiceProvider(id)
+
+
+  ##
+  # @if jp
+  # @brief [local interface] SDO service consumer をセットする
+  # @else
+  # @brief [local interface] Set a SDO service consumer
+  # @endif
+  #
+  # bool addSdoServiceConsumer(const SDOPackage::ServiceProfile& prof);
+  def addSdoServiceConsumer(self, prof):
+    return self._sdoservice.addSdoServiceConsumer(prof)
+
+
+  ##
+  # @if jp
+  # @brief [local interface] SDO service consumer を削除する
+  # @else
+  # @brief [local interface] Remove a SDO service consumer
+  # @endif
+  #
+  # bool removeSdoServiceConsumer(const char* id);
+  def removeSdoServiceConsumer(self, id):
+    return self._sdoservice.removeSdoServiceConsumer(id)
+
+
+  ##
+  # @if jp
+  #
   # @brief 全 InPort のデータを読み込む。
   #
   # RTC が保持する全ての InPort のデータを読み込む。
@@ -3061,17 +3504,922 @@
     for i in range(len_):
       idx = (len_ - 1) - i
       self._eclist[idx].stop()
-      self._poa.deactivate_object(self._poa.servant_to_id(self._eclist[idx]))
-      #self._default_POA().deactivate_object(self._default_POA().servant_to_id(self._eclist[idx]))
+      try:
+        self._poa.deactivate_object(self._poa.servant_to_id(self._eclist[idx]))
+      except:
+        self._rtcout.RTC_TRACE(OpenRTM_aist.Logger.print_exception())
       del self._eclist[idx]
 
     if self._eclist:
       self._eclist = []
+    return
 
 
   ##
   # @if jp
+  # @brief PreComponentActionListener リスナを追加する
   #
+  # ComponentAction 実装関数の呼び出し直前のイベントに関連する各種リ
+  # スナを設定する。
+  #
+  # 設定できるリスナのタイプとコールバックイベントは以下の通り
+  #
+  # - PRE_ON_INITIALIZE:    onInitialize 直前
+  # - PRE_ON_FINALIZE:      onFinalize 直前
+  # - PRE_ON_STARTUP:       onStartup 直前
+  # - PRE_ON_SHUTDOWN:      onShutdown 直前
+  # - PRE_ON_ACTIVATED:     onActivated 直前
+  # - PRE_ON_DEACTIVATED:   onDeactivated 直前
+  # - PRE_ON_ABORTING:       onAborted 直前
+  # - PRE_ON_ERROR:         onError 直前
+  # - PRE_ON_RESET:         onReset 直前
+  # - PRE_ON_EXECUTE:       onExecute 直前
+  # - PRE_ON_STATE_UPDATE:  onStateUpdate 直前
+  #
+  # リスナは PreComponentActionListener を継承し、以下のシグニチャを持つ
+  # operator() を実装している必要がある。
+  #
+  # PreComponentActionListener::operator()(UniqueId ec_id)
+  #
+  # デフォルトでは、この関数に与えたリスナオブジェクトの所有権は
+  # RTObjectに移り、RTObject解体時もしくは、
+  # removePreComponentActionListener() により削除時に自動的に解体される。
+  # リスナオブジェクトの所有権を呼び出し側で維持したい場合は、第3引
+  # 数に false を指定し、自動的な解体を抑制することができる。
+  #
+  # @param listener_type リスナタイプ
+  # @param memfunc 関数オブジェクト
+  # @param autoclean リスナオブジェクトの自動的解体を行うかどうかのフラグ
+  #
+  # @else
+  # @brief Adding PreComponentAction type listener
+  #
+  # This operation adds certain listeners related to ComponentActions
+  # pre events.
+  # The following listener types are available.
+  #
+  # - PRE_ON_INITIALIZE:    before onInitialize
+  # - PRE_ON_FINALIZE:      before onFinalize
+  # - PRE_ON_STARTUP:       before onStartup
+  # - PRE_ON_SHUTDOWN:      before onShutdown
+  # - PRE_ON_ACTIVATED:     before onActivated
+  # - PRE_ON_DEACTIVATED:   before onDeactivated
+  # - PRE_ON_ABORTING:       before onAborted
+  # - PRE_ON_ERROR:         before onError
+  # - PRE_ON_RESET:         before onReset
+  # - PRE_ON_EXECUTE:       before onExecute
+  # - PRE_ON_STATE_UPDATE:  before onStateUpdate
+  #
+  # Listeners should have the following function operator().
+  #
+  # PreComponentActionListener::operator()(UniqueId ec_id)
+  #
+  # The ownership of the given listener object is transferred to
+  # this RTObject object in default.  The given listener object will
+  # be destroied automatically in the RTObject's dtor or if the
+  # listener is deleted by removePreComponentActionListener() function.
+  # If you want to keep ownership of the listener object, give
+  # "false" value to 3rd argument to inhibit automatic destruction.
+  #
+  # @param listener_type A listener type
+  # @param memfunc  member function object
+  # @param autoclean A flag for automatic listener destruction
+  #
+  # @endif
+  #
+  # template <class Listener>
+  # PreComponentActionListener*
+  # addPreComponentActionListener(PreCompActionListenerType listener_type,
+  #                               void (Listener::*memfunc)(UniqueId ec_id),
+  #                               bool autoclean = true)
+  def addPreComponentActionListener(self, listener_type,
+                                    memfunc, autoclean = True):
+    class Noname(OpenRTM_aist.PreComponentActionListener):
+      def __init__(self, memfunc):
+        self._memfunc = memfunc
+
+      def __call__(self, ec_id):
+        self._memfunc(ec_id)
+        return
+
+    listener = Noname(memfunc)
+    self._actionListeners.preaction_[listener_type].addListener(listener, autoclean)
+    return listener
+
+
+  ##
+  # @if jp
+  # @brief PreComponentActionListener リスナを削除する
+  #
+  # 設定した各種リスナを削除する。
+  # 
+  # @param listener_type リスナタイプ
+  # @param listener リスナオブジェクトへのポインタ
+  #
+  # @else
+  # @brief Removing PreComponentAction type listener
+  #
+  # This operation removes a specified listener.
+  #     
+  # @param listener_type A listener type
+  # @param listener A pointer to a listener object
+  #
+  # @endif
+  #
+  # void 
+  # removePreComponentActionListener(PreComponentActionListenerType listener_type,
+  #                                  PreComponentActionListener* listener);
+  def removePreComponentActionListener(self, listener_type, listener):
+    self._actionListeners.preaction_[listener_type].removeListener(listener)
+    return
+
+
+  ##
+  # @if jp
+  # @brief PostComponentActionListener リスナを追加する
+  #
+  # ComponentAction 実装関数の呼び出し直後のイベントに関連する各種リ
+  # スナを設定する。
+  #
+  # 設定できるリスナのタイプとコールバックイベントは以下の通り
+  #
+  # - POST_ON_INITIALIZE:    onInitialize 直後
+  # - POST_ON_FINALIZE:      onFinalize 直後
+  # - POST_ON_STARTUP:       onStartup 直後
+  # - POST_ON_SHUTDOWN:      onShutdown 直後
+  # - POST_ON_ACTIVATED:     onActivated 直後
+  # - POST_ON_DEACTIVATED:   onDeactivated 直後
+  # - POST_ON_ABORTING:       onAborted 直後
+  # - POST_ON_ERROR:         onError 直後
+  # - POST_ON_RESET:         onReset 直後
+  # - POST_ON_EXECUTE:       onExecute 直後
+  # - POST_ON_STATE_UPDATE:  onStateUpdate 直後
+  #
+  # リスナは PostComponentActionListener を継承し、以下のシグニチャを持つ
+  # operator() を実装している必要がある。
+  #
+  # PostComponentActionListener::operator()(UniqueId ec_id, ReturnCode_t ret)
+  #
+  # デフォルトでは、この関数に与えたリスナオブジェクトの所有権は
+  # RTObjectに移り、RTObject解体時もしくは、
+  # removePostComponentActionListener() により削除時に自動的に解体される。
+  # リスナオブジェクトの所有権を呼び出し側で維持したい場合は、第3引
+  # 数に false を指定し、自動的な解体を抑制することができる。
+  #
+  # @param listener_type リスナタイプ
+  # @param memfunc 関数オブジェクト
+  # @param autoclean リスナオブジェクトの自動的解体を行うかどうかのフラグ
+  #
+  # @else
+  # @brief Adding PostComponentAction type listener
+  #
+  # This operation adds certain listeners related to ComponentActions
+  # post events.
+  # The following listener types are available.
+  #
+  # - POST_ON_INITIALIZE:    after onInitialize
+  # - POST_ON_FINALIZE:      after onFinalize
+  # - POST_ON_STARTUP:       after onStartup
+  # - POST_ON_SHUTDOWN:      after onShutdown
+  # - POST_ON_ACTIVATED:     after onActivated
+  # - POST_ON_DEACTIVATED:   after onDeactivated
+  # - POST_ON_ABORTING:       after onAborted
+  # - POST_ON_ERROR:         after onError
+  # - POST_ON_RESET:         after onReset
+  # - POST_ON_EXECUTE:       after onExecute
+  # - POST_ON_STATE_UPDATE:  after onStateUpdate
+  #
+  # Listeners should have the following function operator().
+  #
+  # PostComponentActionListener::operator()(UniqueId ec_id, ReturnCode_t ret)
+  #
+  # The ownership of the given listener object is transferred to
+  # this RTObject object in default.  The given listener object will
+  # be destroied automatically in the RTObject's dtor or if the
+  # listener is deleted by removePostComponentActionListener() function.
+  # If you want to keep ownership of the listener object, give
+  # "false" value to 3rd argument to inhibit automatic destruction.
+  #
+  # @param listener_type A listener type
+  # @param memfunc  member function object
+  # @param autoclean A flag for automatic listener destruction
+  #
+  # @endif
+  #
+  # template <class Listener>
+  # PostComponentActionListener*
+  # addPostComponentActionListener(PostCompActionListenerType listener_type,
+  #                                void (Listener::*memfunc)(UniqueId ec_id,
+  #                                                          ReturnCode_t ret),
+  #                                bool autoclean = true)
+  def addPostComponentActionListener(self, listener_type,
+                                     memfunc, autoclean = True):
+    class Noname(OpenRTM_aist.PostComponentActionListener):
+      def __init__(self, memfunc):
+        self._memfunc = memfunc
+        return
+      def __call__(self, ec_id, ret):
+        self._memfunc(ec_id, ret)
+        return
+      
+    listener = Noname(memfunc)
+    self._actionListeners.postaction_[listener_type].addListener(listener, autoclean)
+    return listener
+
+
+  ##
+  # @if jp
+  # @brief PostComponentActionListener リスナを削除する
+  #
+  # 設定した各種リスナを削除する。
+  # 
+  # @param listener_type リスナタイプ
+  # @param listener リスナオブジェクトへのポインタ
+  #
+  # @else
+  # @brief Removing PostComponentAction type listener
+  #
+  # This operation removes a specified listener.
+  #     
+  # @param listener_type A listener type
+  # @param listener A pointer to a listener object
+  #
+  # @endif
+  ##
+  # void 
+  # removePostComponentActionListener(PostComponentActionListenerType listener_type,
+  #                                   PostComponentActionListener* listener);
+  def removePostComponentActionListener(self, listener_type, listener):
+    self._actionListeners.postaction_[listener_type].removeListener(listener)
+    return
+
+
+  ##
+  # @if jp
+  # @brief PortActionListener リスナを追加する
+  #
+  # Portの追加、削除時にコールバックされる各種リスナを設定する。
+  #
+  # 設定できるリスナのタイプとコールバックイベントは以下の通り
+  #
+  # - ADD_PORT:    Port追加時
+  # - REMOVE_PORT: Port削除時
+  #
+  # リスナは PortActionListener を継承し、以下のシグニチャを持つ
+  # operator() を実装している必要がある。
+  #
+  # PortActionListener::operator()(PortProfile& pprof)
+  #
+  # デフォルトでは、この関数に与えたリスナオブジェクトの所有権は
+  # RTObjectに移り、RTObject解体時もしくは、
+  # removePortActionListener() により削除時に自動的に解体される。
+  # リスナオブジェクトの所有権を呼び出し側で維持したい場合は、第3引
+  # 数に false を指定し、自動的な解体を抑制することができる。
+  #
+  # @param listener_type リスナタイプ
+  # @param memfunc 関数オブジェクト
+  # @param autoclean リスナオブジェクトの自動的解体を行うかどうかのフラグ
+  #
+  # @else
+  # @brief Adding PortAction type listener
+  #
+  # This operation adds certain listeners related to ComponentActions
+  # post events.
+  # The following listener types are available.
+  #
+  # - ADD_PORT:    At adding Port
+  # - REMOVE_PORT: At removing Port
+  #
+  # Listeners should have the following function operator().
+  #
+  # PortActionListener::operator()(RTC::PortProfile pprof)
+  #
+  # The ownership of the given listener object is transferred to
+  # this RTObject object in default.  The given listener object will
+  # be destroied automatically in the RTObject's dtor or if the
+  # listener is deleted by removePortActionListener() function.
+  # If you want to keep ownership of the listener object, give
+  # "false" value to 3rd argument to inhibit automatic destruction.
+  #
+  # @param listener_type A listener type
+  # @param memfunc  member function object
+  # @param autoclean A flag for automatic listener destruction
+  #
+  # @endif
+  #
+  # template <class Listener>
+  # PortActionListener*
+  # addPortActionListener(PortActionListenerType listener_type,
+  #                       void (Listener::*memfunc)(const RTC::PortProfile&),
+  #                       bool autoclean=true)
+  def addPortActionListener(self, listener_type,
+                            memfunc, autoclean = True):
+    class Noname(OpenRTM_aist.PortActionListener):
+      def __init__(self, memfunc):
+        self._memfunc = memfunc
+        return
+
+      def __call__(self, pprofile):
+        self._memfunc(pprofile)
+        return
+
+    listener = Noname(memfunc)
+    self._actionListeners.portaction_[listener_type].addListener(listener, autoclean)
+    return listener
+
+
+  ##
+  # @if jp
+  # @brief PortActionListener リスナを削除する
+  #
+  # 設定した各種リスナを削除する。
+  # 
+  # @param listener_type リスナタイプ
+  # @param listener リスナオブジェクトへのポインタ
+  #
+  # @else
+  # @brief Removing PortAction type listener
+  #
+  # This operation removes a specified listener.
+  #     
+  # @param listener_type A listener type
+  # @param listener A pointer to a listener object
+  #
+  # @endif
+  # void 
+  # removePortActionListener(PortActionListenerType listener_type,
+  #                          PortActionListener* listener);
+  def removePortActionListener(self, listener_type, listener):
+    self._actionListeners.portaction_[listener_type].removeListener(listener)
+    return
+
+
+  ##
+  # @if jp
+  # @brief ExecutionContextActionListener リスナを追加する
+  #
+  # ExecutionContextの追加、削除時にコールバックされる各種リスナを設定する。
+  #
+  # 設定できるリスナのタイプとコールバックイベントは以下の通り
+  #
+  # - ATTACH_EC:    ExecutionContext アタッチ時
+  # - DETACH_EC:    ExecutionContext デタッチ時
+  #
+  # リスナは ExecutionContextActionListener を継承し、以下のシグニチャを持つ
+  # operator() を実装している必要がある。
+  #
+  # ExecutionContextActionListener::operator()(UniqueId ec_id)
+  #
+  # デフォルトでは、この関数に与えたリスナオブジェクトの所有権は
+  # RTObjectに移り、RTObject解体時もしくは、
+  # removeExecutionContextActionListener() により削除時に自動的に解体される。
+  # リスナオブジェクトの所有権を呼び出し側で維持したい場合は、第3引
+  # 数に false を指定し、自動的な解体を抑制することができる。
+  #
+  # @param listener_type リスナタイプ
+  # @param memfunc 関数オブジェクト
+  # @param autoclean リスナオブジェクトの自動的解体を行うかどうかのフラグ
+  #
+  # @else
+  # @brief Adding ExecutionContextAction type listener
+  #
+  # This operation adds certain listeners related to ComponentActions
+  # post events.
+  # The following listener types are available.
+  #
+  # - ADD_PORT:    At adding ExecutionContext
+  # - REMOVE_PORT: At removing ExecutionContext
+  #
+  # Listeners should have the following function operator().
+  #
+  # ExecutionContextActionListener::operator()(UniqueId ec_id)
+  #
+  # The ownership of the given listener object is transferred to
+  # this RTObject object in default.  The given listener object will
+  # be destroied automatically in the RTObject's dtor or if the
+  # listener is deleted by removeExecutionContextActionListener() function.
+  # If you want to keep ownership of the listener object, give
+  # "false" value to 3rd argument to inhibit automatic destruction.
+  #
+  # @param listener_type A listener type
+  # @param memfunc  member function object
+  # @param autoclean A flag for automatic listener destruction
+  #
+  # @endif
+  #
+  # template <class Listener>
+  # ECActionListener*
+  # addExecutionContextActionListener(ECActionListenerType listener_type,
+  #                                   void (Listener::*memfunc)(UniqueId),
+  #                                   bool autoclean = true);
+  def addExecutionContextActionListener(self, listener_type,
+                                        memfunc, autoclean = True):
+    class Noname(OpenRTM_aist.ExecutionContextActionListener):
+      def __init__(self, memfunc):
+        self._memfunc = memfunc
+        return
+
+      def __call__(self, ec_id):
+        self._memfunc(ec_id)
+        return
+
+    listener = Noname(memfunc)
+    self._actionListeners.ecaction_[listener_type].addListener(listener, autoclean)
+    return listener
+    
+
+  ##
+  # @if jp
+  # @brief ExecutionContextActionListener リスナを削除する
+  #
+  # 設定した各種リスナを削除する。
+  # 
+  # @param listener_type リスナタイプ
+  # @param listener リスナオブジェクトへのポインタ
+  #
+  # @else
+  # @brief Removing ExecutionContextAction type listener
+  #
+  # This operation removes a specified listener.
+  #     
+  # @param listener_type A listener type
+  # @param listener A pointer to a listener object
+  #
+  # @endif
+  #
+  # void 
+  # removeExecutionContextActionListener(ECActionListenerType listener_type,
+  #                                      ECActionListener* listener);
+  def removeExecutionContextActionListener(self, listener_type, listener):
+    self._actionListeners.ecaction_[listener_type].removeListener(listener)
+    return
+
+
+  ##
+  # @if jp
+  # @brief PortConnectListener リスナを追加する
+  #
+  # Portの接続時や接続解除時に呼び出される各種リスナを設定する。
+  #
+  # 設定できるリスナのタイプとコールバックイベントは以下の通り
+  #
+  # - ON_NOTIFY_CONNECT: notify_connect() 関数内呼び出し直後
+  # - ON_NOTIFY_DISCONNECT: notify_disconnect() 呼び出し直後
+  # - ON_UNSUBSCRIBE_INTERFACES: notify_disconnect() 内のIF購読解除時
+  #
+  # リスナは PortConnectListener を継承し、以下のシグニチャを持つ
+  # operator() を実装している必要がある。
+  #
+  # PortConnectListener::operator()(const char*, ConnectorProfile)
+  #
+  # デフォルトでは、この関数に与えたリスナオブジェクトの所有権は
+  # RTObjectに移り、RTObject解体時もしくは、
+  # removePortConnectListener() により削除時に自動的に解体される。
+  # リスナオブジェクトの所有権を呼び出し側で維持したい場合は、第3引
+  # 数に false を指定し、自動的な解体を抑制することができる。
+  #
+  # @param listener_type リスナタイプ
+  # @param memfunc 関数オブジェクト
+  # @param autoclean リスナオブジェクトの自動的解体を行うかどうかのフラグ
+  #
+  # @else
+  # @brief Adding PortConnect type listener
+  #
+  # This operation adds certain listeners related to Port's connect actions.
+  # The following listener types are available.
+  #
+  # - ON_NOTIFY_CONNECT: right after entering into notify_connect()
+  # - ON_NOTIFY_DISCONNECT: right after entering into notify_disconnect()
+  # - ON_UNSUBSCRIBE_INTERFACES: unsubscribing IF in notify_disconnect()
+  #
+  # Listeners should have the following function operator().
+  #
+  # PortConnectListener::operator()(const char*, ConnectorProfile)
+  #
+  # The ownership of the given listener object is transferred to
+  # this RTObject object in default.  The given listener object will
+  # be destroied automatically in the RTObject's dtor or if the
+  # listener is deleted by removePortConnectListener() function.
+  # If you want to keep ownership of the listener object, give
+  # "false" value to 3rd argument to inhibit automatic destruction.
+  #
+  # @param listener_type A listener type
+  # @param memfunc  member function object
+  # @param autoclean A flag for automatic listener destruction
+  #
+  # @endif
+  #
+  # template <class Listener>
+  # PortConnectListener*
+  # addPortConnectListener(PortConnectListenerType listener_type,
+  #                        void (Listener::*memfunc)(const char*,
+  #                                                  ConnectorProfile&),
+  #                        bool autoclean = true)
+  def addPortConnectListener(self, listener_type,
+                             memfunc, autoclean = True):
+    class Noname(OpenRTM_aist.PortConnectListener):
+      def __init__(self, memfunc):
+        self._memfunc = memfunc
+        return
+
+      def __call__(self, portname, cprofile):
+        self._memfunc(portname, cprofile)
+        return
+
+    listener = Noname(memfunc)
+    self._portconnListeners.portconnect_[listener_type].addListener(listener, autoclean)
+    return listener
+    
+
+  ##
+  # @if jp
+  # @brief PortConnectListener リスナを削除する
+  #
+  # 設定した各種リスナを削除する。
+  # 
+  # @param listener_type リスナタイプ
+  # @param listener リスナオブジェクトへのポインタ
+  #
+  # @else
+  # @brief Removing PortConnect type listener
+  #
+  # This operation removes a specified listener.
+  #     
+  # @param listener_type A listener type
+  # @param listener A pointer to a listener object
+  #
+  # @endif
+  #
+  # void 
+  # removePortConnectListener(PortConnectListenerType listener_type,
+  #                           PortConnectListener* listener);
+  def removePortConnectListener(self, listener_type, listener):
+    self._portconnListeners.portconnect_[listener_type].removeListener(listener)
+    return
+
+
+  ##
+  # @if jp
+  # @brief PortConnectRetListener リスナを追加する
+  #
+  # Portの接続時や接続解除時に呼び出される各種リスナを設定する。
+  #
+  # 設定できるリスナのタイプとコールバックイベントは以下の通り
+  #
+  # - ON_CONNECT_NEXTPORT: notify_connect() 中のカスケード呼び出し直後
+  # - ON_SUBSCRIBE_INTERFACES: notify_connect() 中のインターフェース購読直後
+  # - ON_CONNECTED: nofity_connect() 接続処理完了時に呼び出される
+  # - ON_DISCONNECT_NEXT: notify_disconnect() 中にカスケード呼び出し直後
+  # - ON_DISCONNECTED: notify_disconnect() リターン時
+  #
+  # リスナは PortConnectRetListener を継承し、以下のシグニチャを持つ
+  # operator() を実装している必要がある。
+  #
+  # PortConnectRetListener::operator()(const char*, ConnectorProfile)
+  #
+  # デフォルトでは、この関数に与えたリスナオブジェクトの所有権は
+  # RTObjectに移り、RTObject解体時もしくは、
+  # removePortConnectRetListener() により削除時に自動的に解体される。
+  # リスナオブジェクトの所有権を呼び出し側で維持したい場合は、第3引
+  # 数に false を指定し、自動的な解体を抑制することができる。
+  #
+  # @param listener_type リスナタイプ
+  # @param memfunc 関数オブジェクト
+  # @param autoclean リスナオブジェクトの自動的解体を行うかどうかのフラグ
+  #
+  # @else
+  # @brief Adding PortConnectRet type listener
+  #
+  # This operation adds certain listeners related to Port's connect actions.
+  # The following listener types are available.
+  #
+  # - ON_CONNECT_NEXTPORT: after cascade-call in notify_connect()
+  # - ON_SUBSCRIBE_INTERFACES: after IF subscribing in notify_connect()
+  # - ON_CONNECTED: completed nofity_connect() connection process
+  # - ON_DISCONNECT_NEXT: after cascade-call in notify_disconnect()
+  # - ON_DISCONNECTED: completed notify_disconnect() disconnection process
+  #
+  # Listeners should have the following function operator().
+  #
+  # PortConnectRetListener::operator()(const char*, ConnectorProfile)
+  #
+  # The ownership of the given listener object is transferred to
+  # this RTObject object in default.  The given listener object will
+  # be destroied automatically in the RTObject's dtor or if the
+  # listener is deleted by removePortConnectRetListener() function.
+  # If you want to keep ownership of the listener object, give
+  # "false" value to 3rd argument to inhibit automatic destruction.
+  #
+  # @param listener_type A listener type
+  # @param memfunc  member function object
+  # @param autoclean A flag for automatic listener destruction
+  #
+  # @endif
+  #
+  # template <class Listener>
+  # PortConnectRetListener*
+  # addPortConnectRetListener(PortConnectRetListenerType listener_type,
+  #                           void (Listener::*memfunc)(const char*,
+  #                                                     ConnectorProfile&,
+  #                                                     ReturnCode_t))
+  def addPortConnectRetListener(self, listener_type,
+                                memfunc, autoclean = True):
+    class Noname(OpenRTM_aist.PortConnectRetListener):
+      def __init__(self, memfunc):
+        self._memfunc = memfunc
+        return
+
+      def __call__(self, portname, cprofile, ret):
+        self._memfunc(portname, cprofile, ret)
+        return
+
+    listener = Noname(memfunc)
+    self._portconnListeners.portconnret_[listener_type].addListener(listener, autoclean)
+    return listener
+    
+
+  ##
+  # @if jp
+  # @brief PortConnectRetListener リスナを削除する
+  #
+  # 設定した各種リスナを削除する。
+  # 
+  # @param listener_type リスナタイプ
+  # @param listener リスナオブジェクトへのポインタ
+  #
+  # @else
+  # @brief Removing PortConnectRet type listener
+  #
+  # This operation removes a specified listener.
+  #     
+  # @param listener_type A listener type
+  # @param listener A pointer to a listener object
+  #
+  # @endif
+  #
+  # void 
+  # removePortConnectRetListener(PortConnectRetListenerType listener_type,
+  #                              PortConnectRetListener* listener);
+  def removePortConnectRetListener(self, listener_type, listener):
+    self._portconnListeners.portconnret_[listener_type].removeListener(listener)
+    return
+
+
+  ##
+  # @if jp
+  #
+  # @brief ConfigurationParamListener を追加する
+  #
+  # update(const char* config_set, const char* config_param) が呼ばれた際に
+  # コールされるリスナ ConfigurationParamListener を追加する。
+  # type には現在のところ ON_UPDATE_CONFIG_PARAM のみが入る。
+  #
+  # @param type ConfigurationParamListenerType型の値。
+  #             ON_UPDATE_CONFIG_PARAM がある。
+  #
+  # @param memfunc 関数オブジェクト
+  # @param autoclean リスナオブジェクトを自動で削除するかどうかのフラグ
+  # 
+  # @else
+  #
+  # @brief Adding ConfigurationParamListener 
+  # 
+  # This function adds a listener object which is called when
+  # update(const char* config_set, const char* config_param) is
+  # called. In the type argument, currently only
+  # ON_UPDATE_CONFIG_PARAM is allowed.
+  #
+  # @param type ConfigurationParamListenerType value
+  #             ON_UPDATE_CONFIG_PARAM is only allowed.
+  #
+  # @param memfunc  member function object
+  # @param autoclean a flag whether if the listener object autocleaned.
+  #
+  # @endif
+  #
+  # template <class Listener>
+  # ConfigurationParamListener*
+  # addConfigurationParamListener(ConfigurationParamListenerType listener_type,
+  #                               void (Listener::*memfunc)(const char*,
+  #                                                         const char*),
+  #                               bool autoclean = true)
+  def addConfigurationParamListener(self, type,
+                                    memfunc, autoclean = True):
+    class Noname(OpenRTM_aist.ConfigurationParamListener):
+      def __init__(self, memfunc):
+        self._memfunc = memfunc
+        return
+
+      def __call__(self, config_set_name, config_param_name):
+        self._memfunc(config_set_name, config_param_name)
+        return
+
+    listener = Noname(memfunc)
+    self._configsets.addConfigurationParamListener(type, listener, autoclean)
+    return listener
+
+
+  ##
+  # @if jp
+  #
+  # @brief ConfigurationParamListener を削除する
+  #
+  # addConfigurationParamListener で追加されたリスナオブジェクトを削除する。
+  #
+  # @param type ConfigurationParamListenerType型の値。
+  #             ON_UPDATE_CONFIG_PARAM がある。
+  # @param listener 与えたリスナオブジェクトへのポインタ
+  # 
+  # @else
+  #
+  # @brief Removing ConfigurationParamListener 
+  # 
+  # This function removes a listener object which is added by
+  # addConfigurationParamListener() function.
+  #
+  # @param type ConfigurationParamListenerType value
+  #             ON_UPDATE_CONFIG_PARAM is only allowed.
+  # @param listener a pointer to ConfigurationParamListener listener object.
+  #
+  # @endif
+  #
+  # void removeConfigurationParamListener(ConfigurationParamListenerType type,
+  #                                       ConfigurationParamListener* listener);
+  def removeConfigurationParamListener(self, type, listener):
+    self._configsets.removeConfigurationParamListener(type, listener)
+    return
+    
+
+  ##
+  # @if jp
+  #
+  # @brief ConfigurationSetListener を追加する
+  #
+  # ConfigurationSet が更新されたときなどに呼ばれるリスナ
+  # ConfigurationSetListener を追加する。設定可能なイベントは以下の
+  # 2種類がある。
+  #
+  # - ON_SET_CONFIG_SET: setConfigurationSetValues() で
+  #                      ConfigurationSet に値が設定された場合。
+  # - ON_ADD_CONFIG_SET: addConfigurationSet() で新しい
+  #                      ConfigurationSet が追加された場合。
+  #
+  # @param type ConfigurationSetListenerType型の値。
+  # @param memfunc 関数オブジェクト
+  # @param autoclean リスナオブジェクトを自動で削除するかどうかのフラグ
+  # 
+  # @else
+  #
+  # @brief Adding ConfigurationSetListener 
+  # 
+  # This function add a listener object which is called when
+  # ConfigurationSet is updated. Available events are the followings.
+  #
+  # @param type ConfigurationSetListenerType value
+  # @param memfunc  member function object
+  # @param autoclean a flag whether if the listener object autocleaned.
+  #
+  # @endif
+  #
+  # template <class Listener>
+  # ConfigurationSetListener*
+  # addConfigurationSetListener(ConfigurationSetListenerType listener_type,
+  #                             void (Listener::*memfunc)
+  #                             (const coil::Properties& config_set))
+  def addConfigurationSetListener(self, listener_type,
+                                  memfunc, autoclean = True):
+    class Noname(OpenRTM_aist.ConfigurationSetListener):
+      def __init__(self, memfunc):
+        self._memfunc = memfunc
+        return
+
+      def __call__(self, config_set):
+        self._memfunc(config_set)
+        return
+
+    listener = Noname(memfunc)
+    self._configsets.addConfigurationSetListener(listener_type, listener, autoclean)
+    return listener
+
+
+  ##
+  # @if jp
+  #
+  # @brief ConfigurationSetListener を削除する
+  #
+  # addConfigurationSetListener で追加されたリスナオブジェクトを削除する。
+  #
+  # @param type ConfigurationSetListenerType型の値。
+  # @param listener 与えたリスナオブジェクトへのポインタ
+  # 
+  # @else
+  #
+  # @brief Removing ConfigurationSetListener 
+  # 
+  # This function removes a listener object which is added by
+  # addConfigurationSetListener() function.
+  #
+  # @param type ConfigurationSetListenerType value
+  # @param listener a pointer to ConfigurationSetListener listener object.
+  #
+  # @endif
+  #
+  # void removeConfigurationSetListener(ConfigurationSetListenerType type,
+  #                                     ConfigurationSetListener* listener);
+  def removeConfigurationSetListener(self, type, listener):
+    self._configsets.removeConfigurationSetListener(type, listener)
+    return
+
+
+  ##
+  # @if jp
+  #
+  # @brief ConfigurationSetNameListener を追加する
+  #
+  # ConfigurationSetName が更新されたときなどに呼ばれるリスナ
+  # ConfigurationSetNameListener を追加する。設定可能なイベントは以下の
+  # 3種類がある。
+  #
+  # - ON_UPDATE_CONFIG_SET: ある ConfigurationSet がアップデートされた
+  # - ON_REMOVE_CONFIG_SET: ある ConfigurationSet が削除された
+  # - ON_ACTIVATE_CONFIG_SET: ある ConfigurationSet がアクティブ化された
+  #
+  # @param type ConfigurationSetNameListenerType型の値。
+  # @param memfunc 関数オブジェクト
+  # @param autoclean リスナオブジェクトを自動で削除するかどうかのフラグ
+  # 
+  # @else
+  #
+  # @brief Adding ConfigurationSetNameListener 
+  # 
+  # This function add a listener object which is called when
+  # ConfigurationSetName is updated. Available events are the followings.
+  #
+  # - ON_UPDATE_CONFIG_SET: A ConfigurationSet has been updated.
+  # - ON_REMOVE_CONFIG_SET: A ConfigurationSet has been deleted.
+  # - ON_ACTIVATE_CONFIG_SET: A ConfigurationSet has been activated.
+  #
+  # @param type ConfigurationSetNameListenerType value
+  # @param memfunc  member function object
+  # @param autoclean a flag whether if the listener object autocleaned.
+  #
+  # @endif
+  #
+  # template <class Listener>
+  # ConfigurationSetNameListener*
+  # addConfigurationSetNameListener(ConfigurationSetNameListenerType type,
+  #                                 void (Listener::*memfunc)(const char*))
+  def addConfigurationSetNameListener(self, type, memfunc, autoclean = True):
+    class Noname(OpenRTM_aist.ConfigurationSetNameListener):
+      def __init__(self, memfunc):
+        self._memfunc = memfunc
+        return
+
+      def __call__(self, config_set_name):
+        self._memfunc(config_set_name)
+        return
+
+    listener = Noname(memfunc)
+    self._configsets.addConfigurationSetNameListener(type, listener, autoclean)
+    return listener
+
+
+  ##
+  # @if jp
+  #
+  # @brief ConfigurationSetNameListener を削除する
+  #
+  # addConfigurationSetNameListener で追加されたリスナオブジェクトを
+  # 削除する。
+  #
+  # @param type ConfigurationSetNameListenerType型の値。
+  #             ON_UPDATE_CONFIG_PARAM がある。
+  # @param listener 与えたリスナオブジェクトへのポインタ
+  # 
+  # @else
+  #
+  # @brief Removing ConfigurationSetNameListener 
+  # 
+  # This function removes a listener object which is added by
+  # addConfigurationSetNameListener() function.
+  #
+  # @param type ConfigurationSetNameListenerType value
+  #             ON_UPDATE_CONFIG_PARAM is only allowed.
+  # @param listener a pointer to ConfigurationSetNameListener
+  #             listener object.
+  #
+  # @endif
+  # void
+  # removeConfigurationSetNameListener(ConfigurationSetNameListenerType type,
+  #                                    ConfigurationSetNameListener* listener);
+  def removeConfigurationSetNameListener(self, type, listener):
+    self._configsets.removeConfigurationSetNameListener(type, listener)
+    return
+
+
+  ##
+  # @if jp
+  #
   # @brief RTC を終了する
   #
   # RTC の終了処理を実行する。
@@ -3091,17 +4439,172 @@
       self._poa.deactivate_object(self._poa.servant_to_id(self._SdoConfigImpl))
       self._poa.deactivate_object(self._poa.servant_to_id(self))
     except:
-      #traceback.print_exception(*sys.exc_info())
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
 
     if self._manager:
       self._rtcout.RTC_DEBUG("Cleanup on Manager")
       self._manager.notifyFinalized(self)
-      
+
     return
 
+  # inline void preOnInitialize(UniqueId ec_id)
+  def preOnInitialize(self, ec_id):
+    self._actionListeners.preaction_[OpenRTM_aist.PreComponentActionListenerType.PRE_ON_INITIALIZE].notify(ec_id)
+    return
 
+  # inline void preOnFinalize(UniqueId ec_id)
+  def preOnFinalize(self, ec_id):
+    self._actionListeners.preaction_[OpenRTM_aist.PreComponentActionListenerType.PRE_ON_FINALIZE].notify(ec_id)
+    return
 
+  # inline void preOnStartup(UniqueId ec_id)
+  def preOnStartup(self, ec_id):
+    self._actionListeners.preaction_[OpenRTM_aist.PreComponentActionListenerType.PRE_ON_STARTUP].notify(ec_id)
+    return
+
+  # inline void preOnShutdown(UniqueId ec_id)
+  def preOnShutdown(self, ec_id):
+    self._actionListeners.preaction_[OpenRTM_aist.PreComponentActionListenerType.PRE_ON_SHUTDOWN].notify(ec_id)
+    return
+
+  # inline void preOnActivated(UniqueId ec_id)
+  def preOnActivated(self, ec_id):
+    self._actionListeners.preaction_[OpenRTM_aist.PreComponentActionListenerType.PRE_ON_ACTIVATED].notify(ec_id)
+    return
+
+  # inline void preOnDeactivated(UniqueId ec_id)
+  def preOnDeactivated(self, ec_id):
+    self._actionListeners.preaction_[OpenRTM_aist.PreComponentActionListenerType.PRE_ON_DEACTIVATED].notify(ec_id)
+    return
+
+  # inline void preOnAborting(UniqueId ec_id)
+  def preOnAborting(self, ec_id):
+    self._actionListeners.preaction_[OpenRTM_aist.PreComponentActionListenerType.PRE_ON_ABORTING].notify(ec_id)
+    return
+
+  # inline void preOnError(UniqueId ec_id)
+  def preOnError(self, ec_id):
+    self._actionListeners.preaction_[OpenRTM_aist.PreComponentActionListenerType.PRE_ON_ERROR].notify(ec_id)
+    return
+
+  # inline void preOnReset(UniqueId ec_id)
+  def preOnReset(self, ec_id):
+    self._actionListeners.preaction_[OpenRTM_aist.PreComponentActionListenerType.PRE_ON_RESET].notify(ec_id)
+    return
+
+  # inline void preOnExecute(UniqueId ec_id)
+  def preOnExecute(self, ec_id):
+    self._actionListeners.preaction_[OpenRTM_aist.PreComponentActionListenerType.PRE_ON_EXECUTE].notify(ec_id)
+    return
+
+  # inline void preOnStateUpdate(UniqueId ec_id)
+  def preOnStateUpdate(self, ec_id):
+    self._actionListeners.preaction_[OpenRTM_aist.PreComponentActionListenerType.PRE_ON_STATE_UPDATE].notify(ec_id)
+    return
+    
+
+  # inline void preOnRateChanged(UniqueId ec_id)
+  def preOnRateChanged(self, ec_id):
+    self._actionListeners.preaction_[OpenRTM_aist.PreComponentActionListenerType.PRE_ON_RATE_CHANGED].notify(ec_id)
+    return
+    
+
+  # inline void postOnInitialize(UniqueId ec_id, ReturnCode_t ret)
+  def postOnInitialize(self, ec_id, ret):
+    self._actionListeners.postaction_[OpenRTM_aist.PostComponentActionListenerType.POST_ON_INITIALIZE].notify(ec_id, ret)
+    return
+    
+
+  # inline void postOnFinalize(UniqueId ec_id, ReturnCode_t ret)
+  def postOnFinalize(self, ec_id, ret):
+    self._actionListeners.postaction_[OpenRTM_aist.PostComponentActionListenerType.POST_ON_FINALIZE].notify(ec_id, ret)
+    return
+    
+
+  # inline void postOnStartup(UniqueId ec_id, ReturnCode_t ret)
+  def postOnStartup(self, ec_id, ret):
+    self._actionListeners.postaction_[OpenRTM_aist.PostComponentActionListenerType.POST_ON_STARTUP].notify(ec_id, ret)
+    return
+    
+
+  # inline void postOnShutdown(UniqueId ec_id, ReturnCode_t ret)
+  def postOnShutdown(self, ec_id, ret):
+    self._actionListeners.postaction_[OpenRTM_aist.PostComponentActionListenerType.POST_ON_SHUTDOWN].notify(ec_id, ret)
+    return
+    
+
+  # inline void postOnActivated(UniqueId ec_id, ReturnCode_t ret)
+  def postOnActivated(self, ec_id, ret):
+    self._actionListeners.postaction_[OpenRTM_aist.PostComponentActionListenerType.POST_ON_ACTIVATED].notify(ec_id, ret)
+    return
+    
+
+  # inline void postOnDeactivated(UniqueId ec_id, ReturnCode_t ret)
+  def postOnDeactivated(self, ec_id, ret):
+    self._actionListeners.postaction_[OpenRTM_aist.PostComponentActionListenerType.POST_ON_DEACTIVATED].notify(ec_id, ret)
+    return
+    
+
+  # inline void postOnAborting(UniqueId ec_id, ReturnCode_t ret)
+  def postOnAborting(self, ec_id, ret):
+    self._actionListeners.postaction_[OpenRTM_aist.PostComponentActionListenerType.POST_ON_ABORTING].notify(ec_id, ret)
+    return
+    
+
+  # inline void postOnError(UniqueId ec_id, ReturnCode_t ret)
+  def postOnError(self, ec_id, ret):
+    self._actionListeners.postaction_[OpenRTM_aist.PostComponentActionListenerType.POST_ON_ERROR].notify(ec_id, ret)
+    return
+    
+
+  # inline void postOnReset(UniqueId ec_id, ReturnCode_t ret)
+  def postOnReset(self, ec_id, ret):
+    self._actionListeners.postaction_[OpenRTM_aist.PostComponentActionListenerType.POST_ON_RESET].notify(ec_id, ret)
+    return
+    
+
+  # inline void postOnExecute(UniqueId ec_id, ReturnCode_t ret)
+  def postOnExecute(self, ec_id, ret):
+    self._actionListeners.postaction_[OpenRTM_aist.PostComponentActionListenerType.POST_ON_EXECUTE].notify(ec_id, ret)
+    return
+    
+
+  # inline void postOnStateUpdate(UniqueId ec_id, ReturnCode_t ret)
+  def postOnStateUpdate(self, ec_id, ret):
+    self._actionListeners.postaction_[OpenRTM_aist.PostComponentActionListenerType.POST_ON_STATE_UPDATE].notify(ec_id, ret)
+    return
+    
+
+  # inline void postOnRateChanged(UniqueId ec_id, ReturnCode_t ret)
+  def postOnRateChanged(self, ec_id, ret):
+    self._actionListeners.postaction_[OpenRTM_aist.PostComponentActionListenerType.POST_ON_RATE_CHANGED].notify(ec_id, ret)
+    return
+    
+
+  # inline void onAddPort(const PortProfile& pprof)
+  def onAddPort(self, pprof):
+    self._actionListeners.portaction_[OpenRTM_aist.PortActionListenerType.ADD_PORT].notify(pprof)
+    return
+    
+    
+  # inline void onRemovePort(const PortProfile& pprof)
+  def onRemovePort(self, pprof):
+    self._actionListeners.portaction_[OpenRTM_aist.PortActionListenerType.REMOVE_PORT].notify(pprof)
+    return
+    
+    
+  # inline void onAttachExecutionContext(UniqueId ec_id)
+  def onAttachExecutionContext(self, ec_id):
+    self._actionListeners.ecaction_[OpenRTM_aist.ExecutionContextActionListenerType.EC_ATTACHED].notify(ec_id)
+    return
+    
+    
+  # inline void onDetachExecutionContext(UniqueId ec_id)
+  def onDetachExecutionContext(self, ec_id):
+    self._actionListeners.ecaction_[OpenRTM_aist.ExecutionContextActionListenerType.EC_DETACHED].notify(ec_id)
+    return
+
+    
   ##
   # @if jp
   # @class svc_name
@@ -3154,6 +4657,7 @@
           ec = ecs._narrow(RTC.ExecutionContext)
           return self._ec._is_equivalent(ec)
       except:
+        print OpenRTM_aist.Logger.print_exception()
         return False
 
       return False
@@ -3190,8 +4694,9 @@
       try:
         if not CORBA.is_nil(ec) and not ec._non_existent():
           ec.deactivate_component(self._comp)
+          ec.stop()
       except:
-        pass
+        print OpenRTM_aist.Logger.print_exception()
 
 
 # RtcBase = RTObject_impl

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/RingBuffer.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/RingBuffer.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/RingBuffer.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -259,11 +259,11 @@
     #     n satisfies n'<= readable elements
     #                 n'<= m_fillcount
     #                 n >= - m_fillcount
+    guard = OpenRTM_aist.ScopedLock(self._pos_mutex)
     if (n > 0 and n > (self._length - self._fillcount)) or \
           (n < 0 and n < (-self._fillcount)):
       return OpenRTM_aist.BufferStatus.PRECONDITION_NOT_MET
 
-    guard = OpenRTM_aist.ScopedLock(self._pos_mutex)
     self._wpos = (self._wpos + n + self._length) % self._length
     self._fillcount += n
     return OpenRTM_aist.BufferStatus.BUFFER_OK
@@ -378,22 +378,22 @@
           self._full_cond.release()
           return OpenRTM_aist.BufferStatus.PRECONDITION_NOT_MET
       
-      empty = self.empty()
-      
+      self._full_cond.release()
+
       self.put(value)
       
+      self._empty_cond.acquire()
+      empty = self.empty()
       if empty:
-        self._empty_cond.acquire()
+        self.advanceWptr(1)
         self._empty_cond.notify()
-        self._empty_cond.release()
+      else:
+        self.advanceWptr(1)
+      self._empty_cond.release()
 
-      self.advanceWptr(1)
-      self._full_cond.release()
-      
       return OpenRTM_aist.BufferStatus.BUFFER_OK
     except:
       return OpenRTM_aist.BufferStatus.BUFFER_OK
-      
 
     
   ##
@@ -501,11 +501,11 @@
     # n < 0 : -n = n'
     #     n satisfies n'<= m_length - m_fillcount
     #                 n >= m_fillcount - m_length
+    guard = OpenRTM_aist.ScopedLock(self._pos_mutex)
     if (n > 0 and n > self._fillcount) or \
           (n < 0 and n < (self._fillcount - self._length)):
       return OpenRTM_aist.BufferStatus.PRECONDITION_NOT_MET
 
-    guard = OpenRTM_aist.ScopedLock(self._pos_mutex)
     self._rpos = (self._rpos + n + self._length) % self._length
     self._fillcount -= n
     return OpenRTM_aist.BufferStatus.BUFFER_OK
@@ -625,7 +625,7 @@
         self._empty_cond.release()
         return OpenRTM_aist.BufferStatus.PRECONDITION_NOT_MET
       
-    full_ = self.full()
+    self._empty_cond.release()
 
     val = self.get()
 
@@ -634,14 +634,18 @@
     else:
       value.append(val)
 
-    self.advanceRptr()
+    self._full_cond.acquire()
+    full_ = self.full()
 
     if full_:
-      self._full_cond.acquire()
+      self.advanceRptr()
       self._full_cond.notify()
-      self._full_cond.release()
+    else:
+      self.advanceRptr()
 
-    self._empty_cond.release()
+    self._full_cond.release()
+
+
     return OpenRTM_aist.BufferStatus.BUFFER_OK
 
     

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/SdoConfiguration.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/SdoConfiguration.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/SdoConfiguration.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -162,9 +162,9 @@
 #
 # @endif
 class Configuration_impl(SDOPackage__POA.Configuration):
+  """
+  """
 
-
-
   ##
   # @if jp
   #
@@ -173,12 +173,19 @@
   # コンストラクタ
   #
   # @param self
-  # @param configsets ConfigurationSetList
+  # @param configAdmin ConfigurationSetList
+  # @param sdoServiceAdmin SdoServiceAdmin
   # 
   # @else
+  # @brief class constructor
+  # @param self
+  # @param configAdmin ConfigurationSetList
+  # @param sdoServiceAdmin SdoServiceAdmin
   #
   # @endif
-  def __init__(self, configsets):
+  # Configuration_impl(RTC::ConfigAdmin& configAdmin,
+  #                    RTC::SdoServiceAdmin& sdoServiceAdmin);
+  def __init__(self, configAdmin, sdoServiceAdmin):
     """
      \var self._deviceProfile SDO DeviceProfile with mutex lock
     """
@@ -194,9 +201,11 @@
     self._parameters = []
     self._params_mutex = threading.RLock()
 
-    self._configsets = configsets
+    self._configsets = configAdmin
     self._config_mutex = threading.RLock()
 
+    self._sdoservice = sdoServiceAdmin
+
     """
      \var self._organizations SDO OrganizationList
     """
@@ -241,6 +250,7 @@
   # have DeviceProfile, the operation will create a new DeviceProfile,
   # otherwise it will replace the existing DeviceProfile.
   #
+  # @param self
   # @param dProfile The device profile that is to be assigned to this SDO.
   #
   # @return If the operation was successfully completed.
@@ -262,7 +272,7 @@
       guard = OpenRTM_aist.ScopedLock(self._dprofile_mutex)
       self._deviceProfile = dProfile
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       raise SDOPackage.InternalError("Unknown Error")
 
     return True
@@ -301,6 +311,7 @@
   # null, the target SDO searches for ServiceProfile in it with the same id.
   # It adds the ServiceProfile if not exist, or overwrites if exist.
   #
+  # @param self
   # @param sProfile ServiceProfile to be added.
   #
   # @return If the operation was successfully completed.
@@ -319,24 +330,12 @@
       raise SDOPackage.InvalidParameter("sProfile is empty.")
 
     try:
-      if not sProfile.id:
-        prof = sProfile
-        prof.id = self.getUUID()
-        OpenRTM_aist.CORBA_SeqUtil.push_back(self._serviceProfiles, prof)
-        return True
-
-      index = OpenRTM_aist.CORBA_SeqUtil.find(self._serviceProfiles,
-                                              self.service_id(sProfile.id))
-      if index >= 0:
-        OpenRTM_aist.CORBA_SeqUtil.erase(self._serviceProfiles, index)
-
-      OpenRTM_aist.CORBA_SeqUtil.push_back(self._serviceProfiles, sProfile)
-      return True
+      return self._sdoservice.addSdoServiceConsumer(sProfile)
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       raise SDOPackage.InternalError("Configuration.add_service_profile")
 
-    return True
+    return False
 
 
   ##
@@ -362,6 +361,7 @@
   #
   # This operation adds reference of an Organization object.
   #
+  # @param self
   # @param org Organization to be added.
   #
   # @return If the operation was successfully completed.
@@ -370,7 +370,7 @@
   #                         is mapped to CORBA standard system exception
   #                         OBJECT_NOT_EXIST.)
   # @exception NotAvailable The target SDO is reachable but cannot respond.
-  # @exception InvalidParameter The argument “organization” is null.
+  # @exception InvalidParameter The argument "organization" is null.
   # @exception InternalError The target SDO cannot execute the operation
   #                          completely due to some internal error.
   # @endif
@@ -382,7 +382,7 @@
     try:
       OpenRTM_aist.CORBA_SeqUtil.push_back(self._organizations, org)
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       raise SDOPackage.InternalError("Configuration.add_organization")
 
     return True
@@ -416,6 +416,7 @@
   # Configuration interface. The ServiceProfile object to be removed is
   # specified by argument.
   #
+  # @param self
   # @param id_ serviceID of a ServiceProfile to be removed.
   #
   # @return If the operation was successfully completed.
@@ -435,12 +436,12 @@
       raise SDOPackage.InvalidParameter("id is empty.")
 
     try:
-      OpenRTM_aist.CORBA_SeqUtil.erase_if(self._serviceProfiles, self.service_id(id_))
+      return self._sdoservice.removeSdoServiceConsumer(id_)
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       raise SDOPackage.InternalError("Configuration.remove_service_profile")
 
-    return True
+    return False
 
 
   ##
@@ -468,6 +469,7 @@
   #
   # This operation removes the reference of an Organization object.
   #
+  # @param self
   # @param organization_id Unique id of the organization to be removed.
   #
   # @return If the operation was successfully completed.
@@ -492,7 +494,7 @@
       OpenRTM_aist.CORBA_SeqUtil.erase_if(self._organizations,
                                           self.org_id(organization_id))
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       raise SDOPackage.InternalError("Configuration.remove_organization")
 
     return True
@@ -521,6 +523,7 @@
   # This operation returns a list of Parameters. An empty list is returned
   # if the SDO does not have any configurable parameter.
   #
+  # @param self
   # @return The list with definitions of parameters characterizing the
   #          configuration.
   #
@@ -538,7 +541,7 @@
       param = copy.copy(self._parameters)
       return param
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       raise SDOPackage.InternalError("Configuration.get_configuration_parameters")
 
     return []
@@ -566,6 +569,7 @@
   #
   # This operation returns all configuration parameters and their values.
   #
+  # @param self
   # @return List of all configuration parameters and their values.
   #
   # @exception SDONotExists if the target SDO does not exist.(This exception 
@@ -608,6 +612,7 @@
   # This operation returns a value of parameter that is specified by
   # argument "name."
   #
+  # @param self
   # @param Name of the parameter whose value is requested.
   #
   # @return The value of the specified parameter.
@@ -626,7 +631,7 @@
   def get_configuration_parameter_value(self, name):
     self._rtcout.RTC_TRACE("get_configuration_parameter_value(%s)", name)
     if not name:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       raise SDOPackage.InvalidParameter("Name is empty.")
 
     return None
@@ -660,6 +665,7 @@
   # This operation sets a parameter to a value that is specified by argument
   # "value." The parameter to be modified is specified by argument " name."
   #
+  # @param self
   # @param name The name of parameter to be modified.
   # @param value New value of the specified parameter.
   #
@@ -708,6 +714,7 @@
   # This operation returns a list of all ConfigurationSets of the SDO.
   # If no predefined ConfigurationSets exist, then empty list is returned.
   #
+  # @param self
   # @return The list of stored configuration with their current values.
   #
   # @exception SDONotExists if the target SDO does not exist.(This exception 
@@ -732,7 +739,7 @@
       return config_sets
 
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       raise SDOPackage.InternalError("Configuration.get_configuration_sets")
 
     return []
@@ -763,6 +770,7 @@
   # This operation returns the ConfigurationSet specified by the parameter
   # configurationSetID.
   #
+  # @param self
   # @param config_id Identifier of ConfigurationSet requested.
   #
   # @return The configuration set specified by the parameter config_id.
@@ -783,8 +791,14 @@
 
     guard = OpenRTM_aist.ScopedLock(self._config_mutex)
 
-    if not self._configsets.haveConfig(config_id):
-      raise SDOPackage.InternalError("No such ConfigurationSet")
+    try:
+      if not self._configsets.haveConfig(config_id):
+        self._rtcout.RTC_ERROR("No such ConfigurationSet")
+        raise SDOPackage.InternalError("No such ConfigurationSet")
+    except:
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
+      raise SDOPackage.InternalError("Unknown exception")
+      
 
     configset = self._configsets.getConfigurationSet(config_id)
 
@@ -793,7 +807,7 @@
       toConfigurationSet(config, configset)
       return config
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       raise SDOPackage.InternalError("Configuration::get_configuration_set()")
 
     return SDOPackage.ConfigurationSet("","",[])
@@ -807,7 +821,6 @@
   # このオペレーションは指定された id の ConfigurationSet を更新する。
   #
   # @param self
-  # @param config_id 変更する ConfigurationSet の ID。
   # @param configuration_set 変更する ConfigurationSet そのもの。
   #
   # @return ConfigurationSet が正常に更新できた場合は true。
@@ -826,8 +839,7 @@
   #
   # This operation modifies the specified ConfigurationSet of an SDO.
   #
-  # ※ パラメータの数が spec と IDL で異なる!!!
-  # @param configu_id The ID of ConfigurationSet to be modified.
+  # @param self
   # @param configuration_set ConfigurationSet to be replaced.
   #
   # @return A flag indicating if the ConfigurationSet was modified 
@@ -876,7 +888,7 @@
       #---------------------------------------------------------------------------
       return self._configsets.setConfigurationSetValues(conf)
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       raise SDOPackage.InternalError("Configuration::set_configuration_set_values()")
 
     return True
@@ -922,6 +934,7 @@
   #
   # Empty ConfigurationSet is returned in these cases.
   #
+  # @param self
   # @return The active ConfigurationSet.
   #
   # @exception SDONotExists if the target SDO does not exist.(This exception 
@@ -942,7 +955,7 @@
       toConfigurationSet(config, self._configsets.getActiveConfigurationSet())
       return config
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       raise SDOPackage.InternalError("Configuration.get_active_configuration_set()")
 
     return SDOPackage.ConfigurationSet("","",[])
@@ -973,6 +986,7 @@
   #
   # This operation adds a ConfigurationSet to the ConfigurationProfile.
   #
+  # @param self
   # @param configuration_set The ConfigurationSet that is added.
   #
   # @return If the operation was successfully completed.
@@ -1000,7 +1014,7 @@
       toProperties(config, configuration_set)
       return self._configsets.addConfigurationSet(config)
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       raise SDOPackage.InternalError("Configuration::add_configuration_set()")
 
     return True
@@ -1030,6 +1044,7 @@
   #
   # This operation removes a ConfigurationSet from the ConfigurationProfile.
   #
+  # @param self
   # @param config_id The id of ConfigurationSet which is removed.
   #
   # @return If the operation was successfully completed.
@@ -1053,7 +1068,7 @@
       guard = OpenRTM_aist.ScopedLock(self._config_mutex)
       return self._configsets.removeConfigurationSet(config_id)
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
+      self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       raise SDOPackage.InternalError("Configuration.remove_configuration_set()")
 
     return False
@@ -1095,6 +1110,7 @@
   # In other words, values of the specified ConfigurationSet are now copied
   # to the active configuration.
   #
+  # @param self
   # @param Identifier of ConfigurationSet to be activated.
   #
   # @return If the operation was successfully completed.

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/SdoOrganization.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/SdoOrganization.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/SdoOrganization.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -45,6 +45,8 @@
 # 
 # @endif
 class Organization_impl(SDOPackage__POA.Organization):
+  """
+  """
 
   ##
   # @if jp
@@ -65,7 +67,7 @@
     self._memberList  = []
     self._dependency  = SDOPackage.OWN
     self._objref      = self._this()
-    self._rtcout = OpenRTM_aist.Manager.instance().getLogbuf("rtobject.sdo_organization")
+    self.__rtcout = OpenRTM_aist.Manager.instance().getLogbuf("rtobject.sdo_organization")
 
 
   #============================================================
@@ -106,7 +108,7 @@
   #                          completely due to some internal error.
   # @endif
   def get_organization_id(self):
-    self._rtcout.RTC_TRACE("get_organization_id() = %s", self._pId)
+    self.__rtcout.RTC_TRACE("get_organization_id() = %s", self._pId)
     return self._pId
 
 
@@ -146,7 +148,7 @@
   #                          completely due to some internal error.
   # @endif
   def get_organization_property(self):
-    self._rtcout.RTC_TRACE("get_organization_property()")
+    self.__rtcout.RTC_TRACE("get_organization_property()")
     guard = OpenRTM_aist.ScopedLock(self._org_mutex)
     prop = SDOPackage.OrganizationProperty(self._orgProperty.properties)
     return prop
@@ -193,7 +195,7 @@
   #                          completely due to some internal error.
   # @endif
   def get_organization_property_value(self, name):
-    self._rtcout.RTC_TRACE("get_organization_property_value(%s)", name)
+    self.__rtcout.RTC_TRACE("get_organization_property_value(%s)", name)
     if not name:
       raise SDOPackage.InvalidParameter("Empty name.")
 
@@ -206,7 +208,7 @@
       value = omniORB.any.to_any(self._orgProperty.properties[index].value)
       return value
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
+      self.__rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       raise SDOPackage.InternalError("get_organization_property_value()")
 
     # never reach here
@@ -237,8 +239,6 @@
   # 
   # @brief [CORBA interface] Set OrganizationProperty
   # 
-  # ※ SDO Specification の PIM 記述とオペレーション名が異なる。
-  # ※ addOrganizationProperty に対応か?
   # This operation adds the OrganizationProperty to an Organization. The
   # OrganizationProperty is the property description of an Organization.
   # 
@@ -256,7 +256,7 @@
   #                          completely due to some internal error.
   # @endif
   def add_organization_property(self, org_property):
-    self._rtcout.RTC_TRACE("add_organization_property()")
+    self.__rtcout.RTC_TRACE("add_organization_property()")
     if org_property is None:
       raise SDOPackage.InvalidParameter("org_property is Empty.")
 
@@ -265,7 +265,7 @@
       self._orgProperty = org_property
       return True
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
+      self.__rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       raise SDOPackage.InternalError("add_organization_property()")
 
     return False
@@ -317,7 +317,7 @@
   #                          completely due to some internal error.
   # @endif
   def set_organization_property_value(self, name, value):
-    self._rtcout.RTC_TRACE("set_organization_property_value(name=%s)", name)
+    self.__rtcout.RTC_TRACE("set_organization_property_value(name=%s)", name)
     if not name:
       raise SDOPackage.InvalidParameter("set_organization_property_value(): Enpty name.")
 
@@ -374,7 +374,7 @@
   #                          completely due to some internal error.
   # @endif
   def remove_organization_property(self, name):
-    self._rtcout.RTC_TRACE("remove_organization_property(%s)", name)
+    self.__rtcout.RTC_TRACE("remove_organization_property(%s)", name)
     if not name:
       raise SDOPackage.InvalidParameter("remove_organization_property_value(): Enpty name.")
 
@@ -387,7 +387,7 @@
       OpenRTM_aist.CORBA_SeqUtil.erase(self._orgProperty.properties, index)
       return True
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
+      self.__rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       raise SDOPackage.InternalError("remove_organization_property_value()")
 
     return False
@@ -427,7 +427,7 @@
   #                          completely due to some internal error.
   # @endif
   def get_owner(self):
-    self._rtcout.RTC_TRACE("get_owner()")
+    self.__rtcout.RTC_TRACE("get_owner()")
     return self._varOwner
 
 
@@ -473,7 +473,7 @@
   #                          completely due to some internal error.
   # @endif
   def set_owner(self, sdo):
-    self._rtcout.RTC_TRACE("set_owner()")
+    self.__rtcout.RTC_TRACE("set_owner()")
     if CORBA.is_nil(sdo):
       raise SDOPackage.InvalidParameter("set_owner()")
 
@@ -481,7 +481,7 @@
       self._varOwner = sdo
       return True
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
+      self.__rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       raise SDOPackage.InternalError("set_owner()")
 
     return True
@@ -523,11 +523,11 @@
   #                          completely due to some internal error.
   # @endif
   def get_members(self):
-    self._rtcout.RTC_TRACE("get_members()")
+    self.__rtcout.RTC_TRACE("get_members()")
     try:
       return self._memberList
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
+      self.__rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       raise SDOPackage.InternalError("get_members()")
 
 
@@ -576,7 +576,7 @@
   #                          completely due to some internal error.
   # @endif
   def set_members(self, sdos):
-    self._rtcout.RTC_TRACE("set_members()")
+    self.__rtcout.RTC_TRACE("set_members()")
     if sdos is None:
       raise SDOPackage.InvalidParameter("set_members(): SDOList is empty.")
 
@@ -584,7 +584,7 @@
       self._memberList = sdos
       return True
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
+      self.__rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       raise SDOPackage.InternalError("set_members()")
 
     return True
@@ -629,7 +629,7 @@
   #                          completely due to some internal error.
   # @endif
   def add_members(self, sdo_list):
-    self._rtcout.RTC_TRACE("add_members()")
+    self.__rtcout.RTC_TRACE("add_members()")
     if not sdo_list:
       raise SDOPackage.InvalidParameter("add_members(): SDOList is empty.")
 
@@ -637,7 +637,7 @@
       OpenRTM_aist.CORBA_SeqUtil.push_back_list(self._memberList, sdo_list)
       return True
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
+      self.__rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       raise SDOPackage.InternalError("add_members()")
 
     return False
@@ -681,22 +681,22 @@
   #                          completely due to some internal error.
   # @endif
   def remove_member(self, id):
-    self._rtcout.RTC_TRACE("remove_member(%s)", id)
+    self.__rtcout.RTC_TRACE("remove_member(%s)", id)
     if not id:
-      self._rtcout.RTC_ERROR("remove_member(): Enpty name.")
+      self.__rtcout.RTC_ERROR("remove_member(): Enpty name.")
       raise SDOPackage.InvalidParameter("remove_member(): Empty name.")
 
     index = OpenRTM_aist.CORBA_SeqUtil.find(self._memberList, self.sdo_id(id))
 
     if index < 0:
-      self._rtcout.RTC_ERROR("remove_member(): Not found.")
+      self.__rtcout.RTC_ERROR("remove_member(): Not found.")
       raise SDOPackage.InvalidParameter("remove_member(): Not found.")
 
     try:
       OpenRTM_aist.CORBA_SeqUtil.erase(self._memberList, index)
       return True
     except:
-      self._rtcout.RTC_ERROR("unknown exception")
+      self.__rtcout.RTC_ERROR("unknown exception")
       raise SDOPackage.InternalError("remove_member(): Not found.")
 
     return False
@@ -741,7 +741,7 @@
   #                          completely due to some internal error.
   # @endif
   def get_dependency(self):
-    self._rtcout.RTC_TRACE("get_dependency()")
+    self.__rtcout.RTC_TRACE("get_dependency()")
     return self._dependency
 
 
@@ -789,7 +789,7 @@
   #                          completely due to some internal error.
   # @endif
   def set_dependency(self, dependency):
-    self._rtcout.RTC_TRACE("set_dependency()")
+    self.__rtcout.RTC_TRACE("set_dependency()")
     if dependency is None:
       raise SDOPackage.InvalidParameter("set_dependency(): Empty dependency.")
 
@@ -797,7 +797,7 @@
       self._dependency = dependency
       return True
     except:
-      self._rtcout.RTC_ERROR(sys.exc_info()[0])
+      self.__rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
       raise SDOPackage.InternalError("set_dependency(): Unknown.")
 
     return False

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/SdoService.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/SdoService.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/SdoService.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -36,9 +36,9 @@
 #
 # @endif
 class SDOServiceProfile:
+  """
+  """
 
-
-
   ##
   # @if jp
   #

Copied: trunk/OpenRTM-aist-Python/OpenRTM_aist/SdoServiceAdmin.py (from rev 478, branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/SdoServiceAdmin.py)
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/SdoServiceAdmin.py	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/SdoServiceAdmin.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,485 @@
+#!/usr/bin/env python
+# -*- coding: euc-jp -*-
+
+##
+# @file SdoServiceAdmin.py
+# @brief SDO service administration class
+# @date $Date$
+# @author Noriaki Ando <n-ando at aist.go.jp> and Shinji Kurihara
+#
+# Copyright (C) 2011
+#     Intelligent Systems Research Institute,
+#     National Institute of
+#         Advanced Industrial Science and Technology (AIST), Japan
+#     All rights reserved.
+
+import copy
+import threading
+import OpenRTM_aist
+
+
+##
+# @if jp
+#
+# @class SDO service administration class
+# @brief SDO service 管理クラス
+#
+# このクラスは、SDO Service を管理するためのクラスである。SDO
+# Service は OMG SDO Specification において定義されている、SDOが特定
+# の機能のために提供また要求するサービスの一つである。詳細は仕様にお
+# いて定義されていないが、本クラスでは以下のように振る舞うサービスで
+# あるものとし、これらを管理するためのクラスが本クラスである。
+#
+# SDO Service においては、SDO/RTCに所有され、ある種のサービスを提供
+# するものを SDO Service Provider、他のSDO/RTCやアプリケーションが提
+# 供するサービスオブジェクトの参照を受け取り、それらの機能を利用する
+# ものを、SDO Service Consumer と呼ぶ。
+#
+# SDO Service Provider は他のアプリケーションから呼ばれ、SDO/RTC内部
+# の機能にアクセスするために用いられる。他のSDO/RTCまたはアプリケー
+# ションは、
+#
+# - SDO::get_service_profiles ()
+# - SDO::get_service_profile (in UniqueIdentifier id)
+# - SDO::get_sdo_service (in UniqueIdentifier id) 
+#
+# のいずれかのオペレーションにより、ServiceProfile または SDO
+# Service の参照を取得し、機能を利用するためのオペレーションを呼び出
+# す。他のSDO/RTCまたはアプリケーション上での参照の破棄は任意のタイ
+# ミングで行われ、サービス提供側では、どこからどれだけ参照されている
+# かは知ることはできない。一方で、SDO/RTC側も、任意のタイミングでサー
+# ビスの提供を停止することもできるため、サービスの利用側では、常に
+# サービスが利用できるとは限らないものとしてサービスオペレーションを
+# 呼び出す必要がある。
+#
+# 一方、SDO Service Consumer は当該SDO/RTC以外のSDO/RTCまたはアプリ
+# ケーションがサービスの実体を持ち、当該SDO/RTCにオブジェクト参照を
+# 含むプロファイルを与えることで、SDO/RTC側からサービスオペレーショ
+# ンが呼ばれ外部のSDO/RTCまたはアプリケーションが提供する機能を利用
+# できる。また、オブザーバ的なオブジェクトを与えることで、SDO/RTC側
+# からのコールバックを実現するためにも利用することができる。コンシュー
+# マは、プロバイダとは異なり、SDO Configurationインターフェースから
+# 追加、削除が行われる。関連するオペレーションは以下のとおりである。
+#
+# - Configuration::add_service_profile (in ServiceProfile sProfile)
+# - Configuration::remove_service_profile (in UniqueIdentifier id)
+#
+# 外部のSDO/RTCまたはアプリケーションは、自身が持つSDO Servcie
+# Provider の参照をIDおよびinterface type、プロパティとともに
+# ServcieProfile にセットしたうえで、add_service_profile() の引数と
+# して与えることで、当該SDO/RTCにサービスを与える。この際、IDはUUID
+# など一意なIDでなければならない。また、削除する際にはIDにより対象と
+# するServiceProfileを探索するため、サービス提供側では削除時までIDを
+# 保持しておかなければならない。
+#
+# 
+#
+#
+#
+# @since 1.1.0
+#
+# @else
+#
+# @class SDO service administration class
+# @brief SDO service administration class
+#
+#
+# @since 1.1.0
+#
+# @endif
+class SdoServiceAdmin:
+  """
+  """
+
+  
+  ##
+  # @if jp
+  # @brief コンストラクタ
+  # コンストラクタ
+  # @param 
+  # 
+  # @else
+  # @brief Constructor
+  # Constructor
+  # @param 
+  # @endif
+  # SdoServiceAdmin(::RTC::RTObject_impl& rtobj);
+  def __init__(self, rtobj):
+    self._rtobj = rtobj
+    self._consumerTypes = []
+    self._providers = []
+    self._allConsumerEnabled = True
+
+
+    ##
+    # @if jp
+    # @brief Lock 付き SDO ServiceProfileList
+    # @else
+    # @brief SDO ServiceProfileList with mutex lock
+    # @endif
+    self._providerProfiles = []
+    self._provider_mutex = threading.RLock()
+    
+    ##
+    # @if jp
+    # @brief Lock 付き SDO ServiceProfileList
+    # @else
+    # @brief SDO ServiceProfileList with mutex lock
+    # @endif
+    self._consumers = []
+    self._consumer_mutex = threading.RLock()
+
+    ##
+    # @if jp
+    # @brief logger
+    # @else
+    # @brief logger
+    # @endif
+    self._rtcout = OpenRTM_aist.Manager.instance().getLogbuf("SdoServiceAdmin")
+
+    self._rtcout.RTC_TRACE("SdoServiceAdmin::SdoServiceAdmin(%s)",
+                           rtobj.getProperties().getProperty("instance_name"))
+
+    prop = self._rtobj.getProperties()
+
+    # ------------------------------------------------------------
+    # SDO service provider
+    enabledProviderTypes = [s.strip() for s in prop.getProperty("sdo.service.provider.enabled_services").split(",")]
+    self._rtcout.RTC_DEBUG("sdo.service.provider.enabled_services: %s",
+                           prop.getProperty("sdo.service.provider.enabled_services"))
+
+    availableProviderTypes = OpenRTM_aist.SdoServiceProviderFactory.instance().getIdentifiers()
+    prop.setProperty("sdo.service.provider.available_services",
+                     str(OpenRTM_aist.flatten(availableProviderTypes)))
+    self._rtcout.RTC_DEBUG("sdo.service.provider.available_services: %s",
+                           prop.getProperty("sdo.service.provider.available_services"))
+
+    
+    # If types include '[Aa][Ll][Ll]', all types enabled in this RTC
+    activeProviderTypes = []
+    for i in range(len(enabledProviderTypes)):
+      tmp = enabledProviderTypes[i].lower()
+      if tmp == "all":
+        activeProviderTypes = availableProviderTypes
+        self._rtcout.RTC_DEBUG("sdo.service.provider.enabled_services: ALL")
+        break
+
+      for j in range(len(availableProviderTypes)):
+        if availableProviderTypes[j] == enabledProviderTypes[i]:
+          activeProviderTypes.append(availableProviderTypes[j])
+
+    factory = OpenRTM_aist.SdoServiceProviderFactory.instance()
+    for i in range(len(activeProviderTypes)):
+      svc = factory.createObject(activeProviderTypes[i])
+      propkey = self.ifrToKey(activeProviderTypes[i])
+      properties = []
+      OpenRTM_aist.NVUtil.copyFromProperties(properties,
+                                             prop.getNode(str(propkey)))
+      prof = SDOPackage.ServiceProfile(str(activeProviderTypes[i]),
+                                       str(activeProviderTypes[i]),
+                                       properties,
+                                       svc._this())
+
+      svc.init(rtobj, prof)
+      self._providers.append(svc)
+
+    # ------------------------------------------------------------
+    # SDO service consumer
+    # getting consumer types from RTC's properties
+    constypes = prop.getProperty("sdo.service.consumer.enabled_services")
+    self._consumerTypes = [s.strip() for s in constypes.split(",")]
+    self._rtcout.RTC_DEBUG("sdo.service.consumer.enabled_services: %s",
+                           str(constypes))
+
+    prop.setProperty("sdo.service.consumer.available_services",
+                     str(OpenRTM_aist.flatten(OpenRTM_aist.SdoServiceConsumerFactory.instance().getIdentifiers())))
+    self._rtcout.RTC_DEBUG("sdo.service.consumer.available_services: %s",
+                           prop.getProperty("sdo.service.consumer.available_services"))
+
+    # If types include '[Aa][Ll][Ll]', all types allowed in this RTC
+    for ctype in self._consumerTypes:
+      tmp = ctype.lower()
+      if tmp == "all":
+        self._allConsumerEnabled = True
+        self._rtcout.RTC_DEBUG("sdo_service.consumer_types: ALL")
+
+    return
+
+
+  ##
+  # @if jp
+  # @brief 仮想デストラクタ
+  # 仮想デストラクタ。
+  # 
+  # @else
+  # @brief Virtual destractor
+  # Virtual destractor.
+  # @endif
+  def __del__(self):
+    len_ = len(self._proiders)
+    for i in range(len_):
+      idx = (len_ - 1) - i
+      self._providers[idx].finalize()
+      del self._providers[idx]
+
+    self._providers = []
+
+    len_ = len(self._consumers)
+    for i in range(len_):
+      idx = (len_ - 1) - i
+      self._consumers[idx].finalize()
+      del self._consumers[idx]
+
+    self._consumers = []
+    return
+
+
+  ##
+  # @if jp
+  # @brief SDO Service Provider の ServiceProfileList を取得する
+  # @else
+  # @brief Get ServiceProfileList of SDO Service Provider
+  # @endif
+  #
+  # SDOPackage::ServiceProfileList* SdoServiceAdmin::getServiceProviderProfiles()
+  def getServiceProviderProfiles(self):
+    prof = []
+    guard = OpenRTM_aist.ScopedLock(self._provider_mutex)
+    for i in range(len(self._providers)):
+      prof.append(self._providers[i].getProfile())
+    return prof
+
+
+  ##
+  # @if jp
+  # @brief SDO Service Provider の ServiceProfile を取得する
+  # @else
+  # @brief Get ServiceProfile of an SDO Service Provider
+  # @endif
+  #
+  # SDOPackage::ServiceProfile*
+  # SdoServiceAdmin::getServiceProviderProfile(const char* id)
+  def getServiceProviderProfile(self, id):
+    idstr = id
+    guard = OpenRTM_aist.ScopedLock(self._provider_mutex)
+    for i in range(len(self._providers)):
+      if idstr == str(self._providers[i].getProfile().id):
+        return self._providers[i].getProfile()
+
+    raise SDOPackage.InvalidParameter()
+
+
+  ##
+  # @if jp
+  # @brief SDO Service Provider の Service を取得する
+  # @else
+  # @brief Get ServiceProfile of an SDO Service
+  # @endif
+  #
+  # SDOPackage::SDOService_ptr SdoServiceAdmin::getServiceProvider(const char* id)
+  def getServiceProvider(self, id):
+    prof = self.getServiceProviderProfile(id)
+    return prof.service
+
+
+  ##
+  # @if jp
+  # @brief SDO service provider をセットする
+  # @else
+  # @brief Set a SDO service provider
+  # @endif
+  #
+  # bool SdoServiceAdmin::
+  # addSdoServiceProvider(const SDOPackage::ServiceProfile& prof,
+  #                       SdoServiceProviderBase* provider)
+  def addSdoServiceProvider(self, prof, provider):
+    self._rtcout.RTC_TRACE("SdoServiceAdmin::addSdoServiceProvider(if=%s)",
+                           prof.interface_type)
+    guard = OpenRTM_aist.ScopedLock(self._provider_mutex)
+    id = prof.id
+    for i in range(len(self._providers)):
+      if id == str(self._providers[i].getProfile().id):
+        self._rtcout.RTC_ERROR("SDO service(id=%s, ifr=%s) already exists",
+                               str(prof.id), str(prof.interface_type))
+        return False
+
+    self._providers.append(provider)
+    return True
+
+
+  ##
+  # @if jp
+  # @brief SDO service provider を削除する
+  # @else
+  # @brief Remove a SDO service provider
+  # @endif
+  #
+  # bool SdoServiceAdmin::removeSdoServiceProvider(const char* id)
+  def removeSdoServiceProvider(self, id):
+    self._rtcout.RTC_TRACE("removeSdoServiceProvider(%d)", id)
+    guard = OpenRTM_aist.ScopedLock(self._provider_mutex)
+
+    strid = id
+    len_ = len(self._providers)
+    for i in range(len_):
+      idx = (len_ - 1) - i
+      if strid == str(self._providers[idx].getProfile().id):
+        self._providers[idx].finalize()
+        factory = OpenRTM_aist.SdoServiceProviderFactory.instance()
+        factory.deleteObject(self._providers[idx])
+        del self._providers[idx]
+        self._rtcout.RTC_INFO("SDO service provider has been deleted: %s", id)
+        return True
+    self._rtcout.RTC_WARN("Specified SDO service provider not found: %s", id)
+    return False
+
+
+  ##
+  # @if jp
+  # @brief Service Consumer を追加する
+  # 
+  # @else
+  # @brief Add Service Consumer
+  # @endif
+  # bool addSdoServiceConsumer(const SDOPackage::ServiceProfile& sProfile);
+  def addSdoServiceConsumer(self, sProfile):
+    self._rtcout.RTC_TRACE("addSdoServiceConsumer(IFR = %s)",
+                           sProfile.interface_type)
+    profile = copy.deepcopy(sProfile)
+
+    # Not supported consumer type -> error return
+    if not self.isEnabledConsumerType(sProfile):
+      self._rtcout.RTC_ERROR("Not supported consumer type. %s", profile.id)
+      return False
+
+    if not self.isExistingConsumerType(sProfile):
+      self._rtcout.RTC_ERROR("type %s already exists.", profile.id)
+      return False
+    if str(profile.id) ==  "":
+      self._rtcout.RTC_WARN("No id specified. It should be given by clients.")
+      return False
+
+    # re-initialization
+    guard = OpenRTM_aist.ScopedLock(self._consumer_mutex)
+    id = str(sProfile.id)
+    for i in range(len(self._consumers)):
+      if id == str(self._consumers[i].getProfile().id):
+        self._rtcout.RTC_INFO("Existing consumer is reinitilized.")
+        self._rtcout.RTC_DEBUG("Propeteis are: %s",
+                               NVUtil.toString(sProfile.properties))
+        return self._consumers[i].reinit(sProfile)
+    del guard
+
+    # new pofile
+    factory = OpenRTM_aist.SdoServiceConsumerFactory.instance()
+    ctype = str(profile.interface_type)
+    consumer = factory.createObject(ctype)
+    if consumer == None:
+      self._rtcout.RTC_ERROR("Hmm... consumer must be created.")
+      return False
+
+    # initialize
+    if not consumer.init(self._rtobj, sProfile):
+      self._rtcout.RTC_WARN("SDO service initialization was failed.")
+      self._rtcout.RTC_DEBUG("id:         %s", str(sProfile.id))
+      self._rtcout.RTC_DEBUG("IFR:        %s", str(sProfile.interface_type))
+      self._rtcout.RTC_DEBUG("properties: %s", OpenRTM_aist.NVUtil.toString(sProfile.properties))
+      factory.deleteObject(consumer)
+      self._rtcout.RTC_INFO("SDO consumer was deleted by initialization failure")
+      return False
+
+    # store consumer
+    guard = OpenRTM_aist.ScopedLock(self._consumer_mutex)
+    self._consumers.append(consumer)
+    del guard
+
+    return True
+
+  
+  ##
+  # @if jp
+  # @brief Service Consumer を削除する
+  # 
+  # @else
+  # @brief Remove Service Consumer
+  # @endif
+  # bool removeSdoServiceConsumer(const char* id);
+  def removeSdoServiceConsumer(self, id):
+    if id == None or id[0] == '\0':
+      self._rtcout.RTC_ERROR("removeSdoServiceConsumer(): id is invalid.")
+      return False
+
+    self._rtcout.RTC_TRACE("removeSdoServiceConsumer(id = %s)", id)
+
+    guard = OpenRTM_aist.ScopedLock(self._consumer_mutex)
+    strid = id
+
+    for (idx,cons) in enumerate(self._consumers):
+      if strid == str(cons.getProfile().id):
+        cons.finalize()
+        del self._consumers[idx]
+        factory = OpenRTM_aist.SdoServiceConsumerFactory.instance()
+        factory.deleteObject(cons)
+        self._rtcout.RTC_INFO("SDO service has been deleted: %s", id)
+        return True
+
+    self._rtcout.RTC_WARN(("Specified SDO consumer not found: %s", id))
+    return False
+    
+
+  ##
+  # @if jp
+  # @brief 許可されたサービス型かどうか調べる
+  # @else
+  # @brief If it is enabled service type
+  # @endif
+  #
+  # bool SdoServiceAdmin::
+  # isEnabledConsumerType(const SDOPackage::ServiceProfile& sProfile)
+  def isEnabledConsumerType(self, sProfile):
+    if self._allConsumerEnabled:
+      return True
+
+    for i in range(len(self._consumerTypes)):
+      if self._consumerTypes[i] == str(sProfile.interface_type):
+        self._rtcout.RTC_DEBUG("%s is supported SDO service.",
+                               str(sProfile.interface_type))
+        return True
+
+    self._rtcout.RTC_WARN("Consumer type is not supported: %s",
+                          str(sProfile.interface_type))
+    return False
+
+
+  ##
+  # @if jp
+  # @brief 存在するサービス型かどうか調べる
+  # 
+  # @else
+  # @brief If it is existing service type
+  # @endif
+  # bool isExistingConsumerType(const SDOPackage::ServiceProfile& sProfile);
+  def isExistingConsumerType(self, sProfile):
+    factory = OpenRTM_aist.SdoServiceConsumerFactory.instance()
+    consumerTypes = factory.getIdentifiers()
+    for i in range(len(consumerTypes)):
+      if consumerTypes[i] == str(sProfile.interface_type):
+        self._rtcout.RTC_DEBUG("%s exists in the SDO service factory.", str(sProfile.interface_type))
+        self._rtcout.RTC_PARANOID("Available SDO serices in the factory: %s", str(OpenRTM_aist.flatten(consumerTypes)))
+        return True
+    self._rtcout.RTC_WARN("No available SDO service in the factory: %s",
+                          str(sProfile.interface_type))
+    return False
+
+
+  # const std::string getUUID() const;
+  def getUUID(self):
+    return str(OpenRTM_aist.uuid1())
+
+  # std::string SdoServiceAdmin::ifrToKey(std::string& ifr)
+  def ifrToKey(self, ifr):
+    ifrvstr = ifr.split(":")
+    ifrvstr[1] = ifrvstr[1].lower()
+    ifrvstr[1] = ifrvstr[1].replace(".", "_")
+    ifrvstr[1] = ifrvstr[1].replace("/", ".")
+    return ifrvstr[1]

Copied: trunk/OpenRTM-aist-Python/OpenRTM_aist/SdoServiceConsumerBase.py (from rev 478, branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/SdoServiceConsumerBase.py)
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/SdoServiceConsumerBase.py	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/SdoServiceConsumerBase.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,84 @@
+#!/usr/bin/env python
+# -*- coding: euc-jp -*-
+
+##
+# @file SdoServiceConsumerBase.py
+# @brief SDO service consumer base class and its factory
+# @date $Date$
+# @author Noriaki Ando <n-ando at aist.go.jp> and Shinji Kurihara
+#
+# Copyright (C) 2011
+#     Intelligent Systems Research Institute,
+#     National Institute of
+#         Advanced Industrial Science and Technology (AIST), Japan
+#     All rights reserved.
+
+import SDOPackage
+import OpenRTM_aist
+
+
+##
+# @if jp
+#
+# SdoServiceConsumerFactory&
+#                     factory(SdoServiceConsumerFactory.instance());
+#
+# factory.addFactory(toRepositoryId<IDL Type>(),
+#                   Creator< SdoServiceConsumerBase,
+#                            your_sdo_service_consumer_subclass>,
+#                   Destructor< SdoServiceConsumerBase,
+#                            your_sdo_service_consumer_subclass>);
+#
+# @else
+#
+#
+#
+# @endif
+class SdoServiceConsumerBase:
+  """
+  """
+
+  def __init__(self):
+    pass
+
+  def __del__(self):
+    pass
+
+  # virtual bool init(RTObject_impl& rtobj,
+  #                   const SDOPackage::ServiceProfile& profile) = 0;
+  def init(self, rtobj, profile):
+    pass
+
+
+  # virtual bool reinit(const SDOPackage::ServiceProfile& profile) = 0;
+  def reinit(self, profile):
+    pass
+
+
+  # virtual const SDOPackage::ServiceProfile& getProfile() const = 0;
+  def getProfile(self):
+    pass
+
+  # virtual void finalize() = 0;
+  def finalize(self):
+    pass
+
+sdoserviceconsumerfactory = None
+
+class SdoServiceConsumerFactory(OpenRTM_aist.Factory,SdoServiceConsumerBase):
+  def __init__(self):
+    OpenRTM_aist.Factory.__init__(self)
+    return
+
+  def __del__(self):
+    pass
+
+  def instance():
+    global sdoserviceconsumerfactory
+
+    if sdoserviceconsumerfactory is None:
+      sdoserviceconsumerfactory = SdoServiceConsumerFactory()
+
+    return sdoserviceconsumerfactory
+
+  instance = staticmethod(instance)

Copied: trunk/OpenRTM-aist-Python/OpenRTM_aist/SdoServiceProviderBase.py (from rev 478, branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/SdoServiceProviderBase.py)
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/SdoServiceProviderBase.py	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/SdoServiceProviderBase.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,243 @@
+#!/usr/bin/env python
+# -*- coding: euc-jp -*-
+
+##
+# @file SdoServiceProviderBase.py
+# @brief SDO service provider base class and its factory
+# @date $Date$
+# @author Noriaki Ando <n-ando at aist.go.jp> and Shinji Kurihara
+#
+# Copyright (C) 2011
+#     Noriaki Ando
+#     Intelligent Systems Research Institute,
+#     National Institute of
+#         Advanced Industrial Science and Technology (AIST), Japan
+#     All rights reserved.
+
+
+import RTC
+import OpenRTM_aist
+import SDOPackage, SDOPackage__POA
+
+
+##
+# @if jp
+#
+# @brief SdoServiceProvider 基底クラス
+#
+# SDOで定義されているSDOサービスのプロバイダを実装するための基底クラ
+# ス。SDOサービスには、外部から提供サービスをRTC(SDO)側で利用する
+# SDOサービスコンシューマと、RTC(SDO)自身がSDOサービスを提供するSDO
+# サービスプロバイダがある。すべてのSDOサービスプロバイダはこの基底
+# クラスを継承して実装される。
+#
+# このオブジェクトのライフサイクルは以下の通り。
+#
+# -# マネージャに対してロードされるとモジュール初期化関数によりオブ
+#    ジェクトファクトリが、SdoServiceProviderFactory に対して登録さ
+#    れる。登録のキーにはサービスインターフェースの IFR (interface
+#    repository) ID が利用され、これによりサービスが区別される。
+# -# rtc.conf等のコンフィギュレーション指定により、有効化することが
+#    指定されているサービスインプロバイダは、RTCの起動と同時にインス
+#    タンス化される。
+# -# インスタンス化後、初期化関数 init() が呼ばれる。引数には当該サー
+#    ビスのためのコンフィギュレーションオプションが Propertyに
+#    より渡される。
+# -# インスタンス化されたSDOサービスプロバイダは
+#    SDO.get_sdo_service() により外部からアクセスされる。このと
+#    き、サービスを指定するIDはIFR IDと同じである。このときのアタッ
+#    チシーケンスは以下の通り。
+# -# RTCがfinalizeされ解体されると同時にSDOサービスプロバイダも解体
+#    されるが、その際にはSdoServiceProviderBase.finalize()がコール
+#    されるので、ここでリソースの解放など終了処理を行う。
+#
+# <pre>
+# 
+#   [RTC]      [SDO service]               [Other]
+#     |              :                        |
+#     | instantiate  :                        |
+#     |------------->:                        |
+#     |    init()    |                        |
+#     |------------->|                        |
+#     |              | get_service_profiles() |
+#     |<--------------------------------------|
+#     |              |    get_sdo_service()   |
+#     |<--------------------------------------|
+#     |              |        use service     |
+#     |              |<-----------------------|
+#     |              |                        |
+#     |  finalize()  |                        |
+#     |------------->x                        |
+#     x              x                        |
+#
+# </pre>
+#
+# このクラスの実装に当たっては、少なくとも以下の純粋仮想関数を実装す
+# る必要がある。
+#
+# - init(): 初期化関数。与えられた RTObject および ServiceProfile か
+#   ら、当該オブジェクトを初期化する。
+# - reinit(): 再初期化関数。ServiceProfile は設定情報更新のため同一
+#   IDで呼び出されることが有るが、その際にこの関数が新たな
+#   ServiceProfile とともに呼び出される。関数内では、設定の変更など
+#   再初期化処理を実装する。
+# - getProfile(): 設定されたプロファイルを返す関数。
+# - finalize(): 終了処理。コンシューマがデタッチされる際に呼び出され
+#   る関数。関数内では終了処理を実装する。
+#
+# SdoServiceProviderのエントリポイントは通常、ファイル名の basename + "Init" 
+# にしておく。以下に、クラス名、ファイル
+# 名、エントリポイント関数名の推奨例を示す。
+#
+# - 実装クラス名: MySdoServiceProvider
+# - ファイル名: MySdoServiceProvider.py
+# - エントリポイント関数名: MySdoServiceProviderInit()
+#
+# エントリポイント関数は通常以下のように、SdoServiceProviderFactory
+# に当該コンシューマのファクトリ (と解体ファンクタ) を登録する以下の
+# ような関数になる。
+#
+# <pre>
+#   def MySdoServiceProviderInit(mgr=None):
+#     factory = OpenRTM_aist.SdoServiceProviderFactory.instance()
+#     factory.addFactory(OpenRTM.MySdoService._NP_RepositoryId,
+#                        MySdoServiceProvider,
+#                        OpenRTM_aist.Delete)
+#     return
+# </pre>
+# 
+# @else
+#
+# @endif
+#
+class SdoServiceProviderBase(SDOPackage__POA.SDOService):
+  """
+  """
+
+  ##
+  # @if jp
+  # @brief 仮想デストラクタ
+  # @else
+  # @brief virtual destructor
+  # @endif
+  def __del__(self):
+    pass
+
+  ##
+  # @if jp
+  # @brief コンシューマクラスの初期化関数
+  #
+  # このオブジェクトの初期化を行う。外部からSDOサービスが
+  # ServiceProfile とともにアタッチされると、SDOコンシューマがインス
+  # タンス化され、その直後に SDO サービスがアタッチされた RTC と与え
+  # られた ServiceProfile を引数としてこの関数が呼ばれる。
+  #
+  # 関数内では、ServiceProfile 内の SDO サービスリファレンスを
+  # CorbaProvider クラス等を利用しオブジェクト内に保持するとともに、
+  # properties から設定内容を読み込みサービス固有の設定等を行う。与
+  # えられたサービスのオブジェクトリファレンスが不正、あるいは
+  # properties の内容が不正、等の場合は戻り値に false を返す。
+  #
+  # @param rtobj このオブジェクトがインスタンス化された RTC
+  # @param profile 外部から与えられた SDO ServiceProfile
+  # @return 与えられた SDO Service や ServiceProfile が不正の場合 false
+  #
+  # @else
+  # @brief Initialization function of the consumer class
+  #
+  # @endif
+  # virtual bool init(RTObject_impl& rtobj,
+  #                   const SDOPackage::ServiceProfile& profile) = 0;
+  def init(self, rtobj, profile):
+    pass
+
+
+  ##
+  # @if jp
+  # @brief コンシューマクラスの再初期化関数
+  #
+  # このオブジェクトの再初期化を行う。ServiceProfile には id フィー
+  # ルドにセッション固有の UUID がセットされているが、同一の id の場
+  # 合、properties に設定された設定情報の変更や、service フィールド
+  # のサービスの参照の変更が行われる。その際に呼ばれるのがこの
+  # reinit() 関数である。実装では、service フィールドのオブジェクト
+  # リファレンスの同一性を確認し、異なっている場合保持しているリファ
+  # レンスを更新する必要がある。また properties には新たな設定が与え
+  # られている可能性があるので、内容を読み込み設定を更新する。
+  #
+  # @param profile 新たに与えられた SDO ServiceProfile
+  # @return 不正な ServiceProfile が与えられた場合は false
+  #
+  # @else
+  # @brief Reinitialization function of the consumer class
+  #
+  # @endif
+  # virtual bool reinit(const SDOPackage::ServiceProfile& profile) = 0;
+  def reinit(self, profile):
+    pass
+
+
+  ##
+  # @if jp
+  # @brief ServiceProfile を返す
+  #
+  # init()/reinit()で与えられた ServiceProfile は通常オブジェクト内
+  # で保持される。SDO Service 管理フレームワークは管理上このオブジェ
+  # クトに対応する ServiceProfile を必要とするので、この関数では保持
+  # されている ServiceProfile を返す。
+  # 
+  # @return このオブジェクトが保持している ServiceProfile
+  #
+  # @else
+  # @brief Getting ServiceProfile
+  # @endif
+  # virtual const SDOPackage::ServiceProfile& getProfile() const = 0;
+  def getProfile(self):
+    pass
+
+
+  ##
+  # @if jp
+  # @brief 終了処理
+  #
+  # SDOサービスがでタッチされる際に呼び出される終了処理用関数。サー
+  # ビスのでタッチに際して、当該オブジェクトが保持するリソースを解放
+  # するなどの処理を行う。
+  #
+  # @else
+  # @brief Finalization
+  #
+  # @endif
+  # virtual void finalize() = 0;
+  def finalize(self):
+    pass
+
+
+sdoserviceproviderfactory = None
+  
+##
+# @if jp
+# @brief SdoServiceProviderFactory の typedef
+# @else
+# @brief typedef of sdoServiceProviderFactory
+# @endif
+# typedef ::coil::GlobalFactory<
+# ::RTC::SdoServiceProviderBase > SdoServiceProviderFactory;
+class SdoServiceProviderFactory(OpenRTM_aist.Factory,SdoServiceProviderBase):
+  def __init__(self):
+    OpenRTM_aist.Factory.__init__(self)
+    return
+
+  def __del__(self):
+    pass
+
+  def instance():
+    global sdoserviceproviderfactory
+
+    if sdoserviceproviderfactory is None:
+      sdoserviceproviderfactory = SdoServiceProviderFactory()
+
+    return sdoserviceproviderfactory
+
+  instance = staticmethod(instance)
+

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/StateMachine.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/StateMachine.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/StateMachine.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -132,13 +132,14 @@
 #
 # @endif
 class StateMachine:
+  """
+  """
+
   state_array = (RTC.CREATED_STATE,
                  RTC.INACTIVE_STATE,
                  RTC.ACTIVE_STATE,
                  RTC.ERROR_STATE)
 
-
-
   ##
   # @if jp
   # @brief コンストラクタ

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/SystemLogger.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/SystemLogger.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/SystemLogger.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -142,6 +142,7 @@
     logging.addLevelName(logging.TRACE,     "TRACE")
     logging.addLevelName(logging.FATAL,     "FATAL")
 
+    """
     logging.root.setLevel([logging.NOTSET,
                            logging.PARANOID,
                            logging.VERBOSE,
@@ -152,6 +153,7 @@
                            logging.ERROR,
                            logging.FATAL,
                            logging.CRITICAL])
+    """
 
     
     formatter = logging.Formatter('%(asctime)s %(name)s %(levelname)s %(message)s')
@@ -326,6 +328,9 @@
 
 
   def __del__(self):
+    return
+
+  def shutdown(self):
     logging.shutdown()
     return
 


Property changes on: trunk/OpenRTM-aist-Python/OpenRTM_aist/SystemLogger.py
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/RELENG_1_0/OpenRTM-aist-Python/OpenRTM_aist/SystemLogger.py:345-395
/branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/SystemLogger.py:396-412
   + /branches/RELENG_1_0/OpenRTM-aist-Python/OpenRTM_aist/SystemLogger.py:345-395
/branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/SystemLogger.py:396-478

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/Task.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/Task.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/Task.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -18,61 +18,65 @@
 import threading
 
 class Task:
-    def __init__(self):
-        self._count = 0
-        self._thread = None
-        return
+  def __init__(self):
+    self._count = 0
+    self._thread = None
+    return
 
     
-    def __del__(self):
-        self._count = 0
-        return
+  def __del__(self):
+    self._count = 0
+    #if self._thread:
+    #  if self._thread.isAlive():
+    #    self._thread.join()
+    self._thread = None
+    return
 
 
-    def open(self, args = None):
-        return 0
+  def open(self, args = None):
+    return 0
 
 
-    def close(self, flags = 0):
-        return 0
+  def close(self, flags = 0):
+    return 0
 
 
-    def svc(self):
-        return 0
+  def svc(self):
+    return 0
 
 
-    def activate(self):
-        if self._count == 0:
-            self._thread = threading.Thread(target=self.svc_run)
-            self._count += 1
-            self._thread.start()
+  def activate(self):
+    if self._count == 0:
+      self._thread = threading.Thread(target=self.svc_run)
+      self._count += 1
+      self._thread.start()
+    return
 
-        return
 
+  def wait(self):
+    if self._count > 0:
+      self._thread.join()
+    return
 
-    def wait(self):
-        if self._count > 0:
-            self._thread.join()
-        return
 
+  def suspend(self):
+    return 0
 
-    def suspend(self):
-        return 0
 
+  def resume(self):
+    return 0
 
-    def resume(self):
-        return 0
 
+  def reset(self):
+    self._count = 0
+    return
 
-    def reset(self):
-        self._count = 0
-        return
 
+  def finalize(self):
+    self.reset()
+    return
 
-    def finalize(self):
-        self.reset()
-        return
-
-    def svc_run(self):
-        self.svc()
-        self.finalize()
+  def svc_run(self):
+    self.svc()
+    self.finalize()
+    return

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/TimeMeasure.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/TimeMeasure.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/TimeMeasure.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -46,77 +46,84 @@
 # 
 # @endif
 class Time:
+  """
+  """
 
-    ##
-    # @if jp
-    # @brief コンストラクタ
-    #
-    # コンストラクタ。
-    #
-    # @param self
-    #
-    # @else
-    # @brief Constructor.
-    #
-    # Constructor.
-    #
-    # @param self
-    #
-    # @endif
-    def __init__(self):
-        global usec_per_sec
-        tm = time.time()
-        tm_f       = float(tm - long(tm))     # 小数部の取り出し
-        self.sec   = long(tm - tm_f)   # 整数部の取り出し
-        self.usec  = long(float(tm_f) * float(usec_per_sec)) # sec -> usec (micro second)
-        self._timevalue = OpenRTM_aist.TimeValue(self.sec,self.usec)
+  ##
+  # @if jp
+  # @brief コンストラクタ
+  #
+  # コンストラクタ。
+  #
+  # @param self
+  #
+  # @else
+  # @brief Constructor.
+  #
+  # Constructor.
+  #
+  # @param self
+  #
+  # @endif
+  def __init__(self):
+    global usec_per_sec
+    tm = time.time()
+    tm_f       = float(tm - long(tm))     # 小数部の取り出し
+    self.sec   = long(tm - tm_f)   # 整数部の取り出し
+    self.usec  = long(float(tm_f) * float(usec_per_sec)) # sec -> usec (micro second)
+    self._timevalue = OpenRTM_aist.TimeValue(self.sec,self.usec)
+    return
 
+  ##
+  # @if jp
+  #
+  # @brief 時間減算
+  # 
+  # 設定された時間から引数で与えられた時間を減算する。
+  #
+  # @param self
+  # @param tm 減算時間
+  # 
+  # @return 減算結果
+  # 
+  # @else
+  #
+  # @endif
+  def __sub__(self, tm):
+    global usec_per_sec
 
-    ##
-    # @if jp
-    #
-    # @brief 時間減算
-    # 
-    # 設定された時間から引数で与えられた時間を減算する。
-    #
-    # @param self
-    # @param tm 減算時間
-    # 
-    # @return 減算結果
-    # 
-    # @else
-    #
-    # @endif
-    def __sub__(self, tm):
-        global usec_per_sec
-
-        res = Time()
+    res = Time()
     
-        if self.sec >= tm.sec:
-            if self.usec >= tm.usec:
-                res.sec  = self.sec  - tm.sec
-                res.usec = self.usec - tm.usec
-            else:
-                res.sec  = self.sec  - tm.sec - 1
-                res.usec = (self.usec + usec_per_sec) - tm.usec
-        else:
-            if tm.usec >= self.usec:
-                res.sec  = -(tm.sec  - self.sec)
-                res.usec = -(tm.usec - self.usec)
-            else:
-                res.sec  = -(tm.sec - self.sec - 1)
-                res.usec = -(tm.usec + usec_per_sec) + self.usec
-        return res
+    if self.sec >= tm.sec:
+      if self.usec >= tm.usec:
+        res.sec  = self.sec  - tm.sec
+        res.usec = self.usec - tm.usec
+      else:
+        res.sec  = self.sec  - tm.sec - 1
+        res.usec = (self.usec + usec_per_sec) - tm.usec
+    else:
+      if tm.usec >= self.usec:
+        res.sec  = -(tm.sec  - self.sec)
+        res.usec = -(tm.usec - self.usec)
+      else:
+        res.sec  = -(tm.sec - self.sec - 1)
+        res.usec = -(tm.usec + usec_per_sec) + self.usec
+    return res
 
     
-    def gettimeofday(self):
-        global usec_per_sec
-        tm = time.time()
-        tm_f       = float(tm - long(tm))     # 小数部の取り出し
-        self.sec   = long(float(tm) - float(tm_f))   # 整数部の取り出し
-        self.usec  = long(float(tm_f) * float(usec_per_sec)) # sec -> usec (micro second)
-        return OpenRTM_aist.TimeValue(self.sec, self.usec)
+  def gettimeofday(self):
+    global usec_per_sec
+    tm = time.time()
+    tm_f       = float(tm - long(tm))     # 小数部の取り出し
+    self.sec   = long(float(tm) - float(tm_f))   # 整数部の取り出し
+    self.usec  = long(float(tm_f) * float(usec_per_sec)) # sec -> usec (micro second)
+    return OpenRTM_aist.TimeValue(self.sec, self.usec)
 
+
+  def getTime(self):
+    return OpenRTM_aist.TimeValue(self.sec, self.usec)
+
+
 ##
 # TimeMeasure object
 #
@@ -125,128 +132,129 @@
 # deviation time for code execution.
 #
 class TimeMeasure:
+  """
+  """
 
-    ##
-    # @brief Time statictics object for profiling.
-    # 
-    # Constructor
-    #
-    def __init__(self, buflen=100):
-        self._countMax = buflen + 1
-        self._record = [OpenRTM_aist.TimeValue(0, 0) for i in range(self._countMax)]
-        self._begin  = Time().gettimeofday()
-        self._end  = Time().gettimeofday()
-        self._count = 0
-        self._recurred = False
-        self._interval = OpenRTM_aist.TimeValue(0.0)
-    
+  ##
+  # @brief Time statictics object for profiling.
+  # 
+  # Constructor
+  #
+  def __init__(self, buflen=100):
+    self._countMax = buflen + 1
+    self._record = [OpenRTM_aist.TimeValue(0, 0) for i in range(self._countMax)]
+    self._begin  = Time().gettimeofday()
+    self._end  = Time().gettimeofday()
+    self._count = 0
+    self._recurred = False
+    self._interval = OpenRTM_aist.TimeValue(0.0)
+    return
 
-    ##
-    # @brief Begin time measurement for time statistics.
-    #
-    # Begin time measurement for time statistics
-    #
-    def tick(self):
-        self._begin = Time().gettimeofday()
-    
+  ##
+  # @brief Begin time measurement for time statistics.
+  #
+  # Begin time measurement for time statistics
+  #
+  def tick(self):
+    self._begin = Time().gettimeofday()
+    return
 
-    ##
-    # @brief Finish time measurement for time statistics.
-    #
-    # End of time measurement for time statistics
-    #
-    def tack(self):
-        if self._begin.sec() == 0:
-            return
+  ##
+  # @brief Finish time measurement for time statistics.
+  #
+  # End of time measurement for time statistics
+  #
+  def tack(self):
+    if self._begin.sec() == 0:
+      return
 
-        self._interval = Time().gettimeofday() - self._begin
-        self._end = Time().gettimeofday()
-        self._record[self._count] = self._interval
-        self._count += 1
-        if self._count == self._countMax:
-            self._count = 0
-            self._recurred = True
-        
+    self._interval = Time().gettimeofday() - self._begin
+    self._end = Time().gettimeofday()
+    self._record[self._count] = self._interval
+    self._count += 1
+    if self._count == self._countMax:
+      self._count = 0
+      self._recurred = True
+    return
 
-    def interval(self):
-        return self._interval
+  def interval(self):
+    return self._interval
 
 
-    def reset(self):
-        self._count = 0
-        self._recurred = False
-        self._begin = OpenRTM_aist.TimeValue(0.0)
-
+  def reset(self):
+    self._count = 0
+    self._recurred = False
+    self._begin = OpenRTM_aist.TimeValue(0.0)
+    return
     
-    ##
-    # Get number of time measurement buffer
-    #
-    # @brief Get number of time measurement buffer.
-    #
-    #
-    def count(self):
-        if self._recurred:
-            return len(self._record)
-        else:
-            return self._count
-
+  ##
+  # Get number of time measurement buffer
+  #
+  # @brief Get number of time measurement buffer.
+  #
+  #
+  def count(self):
+    if self._recurred:
+      return len(self._record)
+    else:
+      return self._count
+    return
     
-    ##
-    # @brief Get total statistics.
-    # Get total statistics
-    # max_interval, min_interval, mean_interval [ns]
-    #
-    def getStatistics(self, max_interval=None, min_interval=None,
-                      mean_interval=None, stddev=None):
-        global ULLONG_MAX
+  ##
+  # @brief Get total statistics.
+  # Get total statistics
+  # max_interval, min_interval, mean_interval [ns]
+  #
+  def getStatistics(self, max_interval=None, min_interval=None,
+                    mean_interval=None, stddev=None):
+    global ULLONG_MAX
 
-        if not max_interval and not min_interval and not mean_interval and not stddev:
-            max_i  = [0.0]
-            min_i  = [0.0]
-            mean_i = [0.0]
-            stdd   = [0.0]
-            
-            return self.getStatistics(max_i, min_i, mean_i, stdd)
+    if not max_interval and not min_interval and not mean_interval and not stddev:
+      max_i  = [0.0]
+      min_i  = [0.0]
+      mean_i = [0.0]
+      stdd   = [0.0]
+      return self.getStatistics(max_i, min_i, mean_i, stdd)
 
-        max_interval[0] = 0.0
-        min_interval[0] = ULLONG_MAX
+    max_interval[0] = 0.0
+    min_interval[0] = ULLONG_MAX
 
-        sum_ = 0.0
-        sq_sum_ = 0.0
-        len_ = self.count()
+    sum_ = 0.0
+    sq_sum_ = 0.0
+    len_ = self.count()
         
-        if len_ == 0:
-            return False
+    if len_ == 0:
+      return False
 
-        for i in range(len_):
-            trecord_ = self._record[i].toDouble()
-            sum_ += trecord_
-            sq_sum_ += (trecord_ * trecord_)
-
-            if trecord_ > max_interval[0]:
-                max_interval[0] = trecord_
+    for i in range(len_):
+      trecord_ = self._record[i].toDouble()
+      sum_ += trecord_
+      sq_sum_ += (trecord_ * trecord_)
+      
+      if trecord_ > max_interval[0]:
+        max_interval[0] = trecord_
             
-            if trecord_ < min_interval[0]:
-                min_interval[0] = trecord_
+      if trecord_ < min_interval[0]:
+        min_interval[0] = trecord_
             
                 
-        mean_interval[0] = sum_ / len_
-        stddev[0] = math.sqrt(sq_sum_ / len_ - (mean_interval[0] * mean_interval[0]))
+    mean_interval[0] = sum_ / len_
+    stddev[0] = math.sqrt(sq_sum_ / len_ - (mean_interval[0] * mean_interval[0]))
 
-        return True
+    return True
         
-    
-    
-    class Statistics:
-        def __init__(self, max=None, min=None, mean=None, stdd=None):
-            if not max and not min and not mean and not stdd:
-                self._max_interval  = 0.0
-                self._min_interval  = 0.0
-                self._mean_interval = 0.0
-                self._std_deviation = 0.0
-                return
 
-            self._max_interval  = max
-            self._min_interval  = min
-            self._mean_interval = mean
-            self._std_deviation = stdd
+  class Statistics:
+    def __init__(self, max=None, min=None, mean=None, stdd=None):
+      if not max and not min and not mean and not stdd:
+        self._max_interval  = 0.0
+        self._min_interval  = 0.0
+        self._mean_interval = 0.0
+        self._std_deviation = 0.0
+        return
+
+      self._max_interval  = max
+      self._min_interval  = min
+      self._mean_interval = mean
+      self._std_deviation = stdd
+      return

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/TimeValue.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/TimeValue.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/TimeValue.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -1,5 +1,5 @@
 #!/usr/bin/env python
-# -#- coding: euc-jp -#-
+# -*- coding: euc-jp -*-
 
 
 ##

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/Timer.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/Timer.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/Timer.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -32,13 +32,19 @@
 #
 # @else
 #
+# @class Timer
+# @brief Timer class
+# 
+# Invoke the callback function of registered listener periodically
+# at the set cycle.
+#
+# @since 0.4.0
+#
 # @endif
 class Timer:
   """
   """
 
-
-
   ##
   # @if jp
   # @brief コンストラクタ
@@ -50,6 +56,12 @@
   #
   # @else
   #
+  # @brief Constructor
+  # 
+  # Constructor
+  #
+  # @param interval The interval of timer
+  #
   # @endif
   def __init__(self, interval):
     self._interval = interval
@@ -58,39 +70,63 @@
     self._tasks = []
     self._taskMutex = threading.RLock()
     self._thread = threading.Thread(target=self.run)
+    return
 
-
+  ##
+  # @if jp
+  # @brief デストラクタ
+  # 
+  # デストラクタ
+  #
+  # @else
+  # @brief Destructor
+  # 
+  # Destructor
+  #
+  # @endif
+  #
   def __del__(self):
-    #guard = OpenRTM_aist.ScopedLock(self._runningMutex)
     self._running = False
     try:
-      self._thread.join()
+      self.join()
     except:
       pass
+    self._thread = None
 
   def join(self):
     try:
       self._thread.join()
+      self._thread = threading.Thread(target=self.run)
     except:
       pass
 
+    return
+
   ##
   # @if jp
-  # @brief Timer タスク実行
+  # @brief Timer 用のスレッド実行関数
   #
-  # Timer 用新規スレッドから定期的に登録されたリスナーのメソッドを呼び出す。
+  # Timer 用のスレッド実行関数。
+  # 登録されたリスナーのコールバック関数を呼び出す。
   #
-  # @param self
+  # @return 実行結果
   #
   # @else
+  # @brief Thread execution function for Timer
   #
+  # Thread execution function for Timer.
+  # Invoke the callback function of registered listener.
+  #
+  # @return Execution result
+  #
   # @endif
   def run(self):
     while self._running:
       self.invoke()
       if self._interval.tv_sec != 0:
         time.sleep(self._interval.tv_sec)
-      time.sleep(self._interval.tv_usec/1000000.0)
+      elif self._interval.tv_usec:
+        time.sleep(self._interval.tv_usec/1000000.0)
     return 0
 
 
@@ -102,6 +138,10 @@
   #
   # @param self
   #
+  # @brief Start Timer task
+  #
+  # Create a new theread for Timer and start processing.
+  #
   # @else
   #
   # @endif
@@ -110,6 +150,7 @@
     if not self._running:
       self._running = True
       self._thread.start()
+    return
 
 
   ##
@@ -122,10 +163,17 @@
   #
   # @else
   #
+  # @brief Stop Timer task
+  #
+  # Stop Timer task.
+  #
   # @endif
   def stop(self):
     guard = OpenRTM_aist.ScopedLock(self._runningMutex)
-    self._running = False
+    if self._running:
+      self._running = False
+      self.join()
+    return
 
 
   ##
@@ -140,15 +188,24 @@
   #
   # @else
   #
+  # @brief Invoke Timer task
+  #
+  # Subtract the interval of timer from the waiting time for invocation
+  # of each registered listener.
+  # If the listener whose waiting time reached 0 exists, invoke the
+  # callback function.
+  #
   # @endif
   def invoke(self):
+    guard = OpenRTM_aist.ScopedLock(self._taskMutex)
     for i in range(len(self._tasks)):
       self._tasks[i].remains = self._tasks[i].remains - self._interval
       if self._tasks[i].remains.sign() <= 0.0:
+        self._tasks[i].remains = self._tasks[i].period
         self._tasks[i].listener.invoke()
-        self._tasks[i].remains = self._tasks[i].period
+    del guard
+    return
 
-
   ##
   # @if jp
   # @brief リスナー登録
@@ -166,6 +223,19 @@
   #
   # @else
   #
+  # @brief Register listener
+  #
+  # Register the listener of callback function invoked from this Timer by
+  # specifying the interval.
+  # If the same listener has already been regiseterd, the value specified
+  # the invocation interval of listener will be updated.
+  # 
+  #
+  # @param listener Listener for the registration
+  # @param tm The invocation interval of listener
+  #
+  # @return ID of the registerd listener
+  #
   # @endif
   # ListenerId registerListener(ListenerBase* listener, TimeValue tm);
   def registerListener(self, listener, tm):
@@ -195,6 +265,18 @@
   #
   # @else
   #
+  # @brief Register listener
+  #
+  # Register listener by specifying the object for callback, the method
+  # for callback and the invocation interval.
+  #
+  # @param obj Target object for callback
+  # @param cbf Target method for callback
+  # @param tm The invocation interval of listener
+  #
+  # @return ID of the registerd listener
+  #
+  #
   # @endif
   #  template <class ListenerClass>
   #  ListenerId registerListenerObj(ListenerClass* obj,
@@ -218,6 +300,16 @@
   #
   # @else
   #
+  # @brief Register listener
+  #
+  # Register listener by specifying the method for callback and the
+  # invocation interval.
+  #
+  # @param cbf Target method for callback
+  # @param tm The invocation interval of listener
+  #
+  # @return ID of the registerd listener
+  #
   # @endif
   # ListenerId registerListenerFunc(void (*cbf)(), TimeValue tm)
   def registerListenerFunc(self, cbf, tm):
@@ -238,6 +330,15 @@
   #
   # @else
   #
+  # @brief Unregister listener
+  #
+  # Unregister the listener specified by ID.
+  # If the listener specified by ID is not registerd, false will be returned.
+  #
+  # @param id ID of the unregisterd listener
+  #
+  # @return Unregistration result
+  #
   # @endif
   # bool unregisterListener(ListenerId id);
   def unregisterListener(self, id):
@@ -263,3 +364,4 @@
       self.listener = lb
       self.period = tm
       self.remains = tm
+      return

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/Typename.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/Typename.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/Typename.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -23,4 +23,4 @@
 
 ## const char* toTypename(value)
 def toTypename(value):
-  return str(any.to_any(value).typecode().name())
+  return str(value._NP_RepositoryId)

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/__init__.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/__init__.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/__init__.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -31,6 +31,7 @@
 from DataPortStatus import *
 from NumberingPolicy import *
 from Listener import *
+from ComponentActionListener import *
 from Typename import *
 from Guard import *
 from PeriodicTask import *
@@ -63,6 +64,10 @@
 from uuid import *
 from SdoConfiguration import *
 from SdoOrganization import *
+from SdoServiceConsumerBase import *
+from SdoServiceProviderBase import *
+from SdoServiceAdmin import *
+from ConfigurationListener import *
 from PeriodicECSharedComposite import *
 from RTCUtil import *
 from OutPortBase import *
@@ -77,6 +82,7 @@
 from InPortPushConnector import *
 from OutPort import *
 from PortCallBack import *
+from PortConnectListener import *
 from CorbaPort import *
 from OutPortConnector import *
 from OutPortCorbaCdrConsumer import *

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/docs/Doxyfile_en
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/docs/Doxyfile_en	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/docs/Doxyfile_en	2011-09-21 07:57:38 UTC (rev 479)
@@ -4,7 +4,7 @@
 # Project related configuration options
 #---------------------------------------------------------------------------
 DOXYFILE_ENCODING      = UTF-8
-PROJECT_NAME           = OpenRTM-aist-1.0.0-Python
+PROJECT_NAME           = OpenRTM-aist-1.1.0-Python
 PROJECT_NUMBER         = 
 OUTPUT_DIRECTORY       = ./ClassReference-en
 CREATE_SUBDIRS         = NO

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/docs/Doxyfile_jp
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/docs/Doxyfile_jp	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/docs/Doxyfile_jp	2011-09-21 07:57:38 UTC (rev 479)
@@ -4,7 +4,7 @@
 # Project related configuration options
 #---------------------------------------------------------------------------
 DOXYFILE_ENCODING      = UTF-8
-PROJECT_NAME           = OpenRTM-aist-1.0.0-Python
+PROJECT_NAME           = OpenRTM-aist-1.1.0-Python
 PROJECT_NUMBER         = 
 OUTPUT_DIRECTORY       = ./ClassReference-jp
 CREATE_SUBDIRS         = NO

Copied: trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/AutoTest/AutoTestComposite.py (from rev 478, branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/examples/AutoTest/AutoTestComposite.py)
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/AutoTest/AutoTestComposite.py	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/AutoTest/AutoTestComposite.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,51 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# -*- Python -*-
+
+import sys
+import time
+import socket
+
+from rtc_handle10_11 import *
+from CorbaNaming import *
+import RTM
+
+
+
+env = RtmEnv(sys.argv, ["localhost:2809"])
+
+## Get Manager object reference
+mgr_name = socket.gethostname()+".host_cxt/manager.mgr"
+naming = CorbaNaming(env.orb, "localhost:2809")
+manager = naming.resolve(mgr_name)._narrow(RTM.Manager)
+
+listo = env.name_space["localhost:2809"].list_obj()
+env.name_space['localhost:2809'].rtc_handles.keys()
+
+ns = env.name_space['localhost:2809']
+
+comp = ns.rtc_handles["PeriodicECSharedComposite0.rtc"]
+config = comp.rtc_ref.get_configuration()
+configset = config.get_configuration_sets()
+config_data = configset[0].configuration_data
+
+
+time.sleep(1)
+
+
+motor = ns.rtc_handles["Motor0.rtc"]
+sensor = ns.rtc_handles["Sensor0.rtc"]
+controller = ns.rtc_handles["Controller0.rtc"]
+loop_count = 1000
+for i in range(loop_count):
+  manager.create_component("PeriodicECSharedComposite?instance_name=aaa")
+  env.name_space["localhost:2809"].list_obj()
+  aaa=ns.rtc_handles[socket.gethostname()+".host_cxt/aaa.rtc"]
+  org=aaa.rtc_ref.get_owned_organizations()[0]
+  org.set_members ([motor.rtc_ref,sensor.rtc_ref,controller.rtc_ref])
+  time.sleep(1)
+  ret = org.remove_member("Motor0")
+  ret = org.remove_member("Sensor0")
+  ret = org.remove_member("Controller0")
+  aaa.rtc_ref.exit()
+  time.sleep(1)

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/AutoTest/AutoTestOut.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/AutoTest/AutoTestOut.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/AutoTest/AutoTestOut.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -82,7 +82,12 @@
     return RTC.RTC_OK
   
   def onActivated(self, ec_id):
-    self._file=open('original-data')
+    try:
+      self._file=open('original-data')
+    except:
+      print "Can not open 'original-data' file."
+      return RTC.RTC_ERROR
+
     return RTC.RTC_OK
   
   def onDeactivated(self, ec_id): 

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/AutoTest/ConnectTest.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/AutoTest/ConnectTest.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/AutoTest/ConnectTest.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -8,12 +8,13 @@
 ## コンポーネント接続テスト
 ##
 
-from rtc_handle import *
+from rtc_handle10_11 import *
 from BasicDataType_idl import *
 import time
 import commands
 import SDOPackage
 import os
+import sys
 
 ##--------------------------------------------------------------------
 g_test_name = "<< component connection test >>"
@@ -87,8 +88,8 @@
 
 ##--------------------------------------------------------------------
 ## 送受信結果判定関連
-g_diff_send_file = "/usr/share/OpenRTM-aist/examples/python/AutoTest/original-data"
-g_diff_recv_file = "/usr/share/OpenRTM-aist/examples/python/AutoTest/received-data"
+g_diff_send_file = "./original-data"
+g_diff_recv_file = "./received-data"
 g_check_message = g_diff_recv_file + " file not found."
 g_test_result_file = "./ResultTest.log"
 g_test_case = "case"

Copied: trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/AutoTest/gen_data.bat (from rev 478, branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/examples/AutoTest/gen_data.bat)
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/AutoTest/gen_data.bat	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/AutoTest/gen_data.bat	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,6 @@
+for /L %%i in (0,1,15) do (
+	echo %%i>>original-data
+	echo %RANDOM% %RANDOM% %RANDOM% %RANDOM% %RANDOM%>>original-data
+	echo message%%i>>original-data
+	echo.>>original-data
+)

Copied: trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/AutoTest/rtc_handle10_11.py (from rev 478, branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/examples/AutoTest/rtc_handle10_11.py)
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/AutoTest/rtc_handle10_11.py	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/AutoTest/rtc_handle10_11.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,483 @@
+#/usr/bin/env python
+# -*- coding: utf-8 -*-
+# -*- Python -*-
+
+import sys
+from omniORB import CORBA, URI
+# from omniORB import any
+from omniORB import any, cdrMarshal, cdrUnmarshal
+
+import OpenRTM_aist
+import RTC
+
+
+from CorbaNaming import *
+import SDOPackage
+# from EmbryonicRtc import *
+
+# class RtmEnv :
+#       rtm environment manager
+#       orb, naming service, rtc proxy list
+#
+class RtmEnv : 
+
+    def __init__(self, orb_args, nserver_names=["localhost"], 
+                                     orb=None, naming=None):
+        if not orb :
+            orb = CORBA.ORB_init(orb_args)
+        self.orb = orb
+        self.name_space = {}
+        if naming : # naming can specify only one naming service
+            self.name_space['default']=NameSpace(orb, naming=naming)
+        else :
+            for ns in nserver_names :
+              self.name_space[ns]=NameSpace(orb, server_name=ns)
+
+    def __del__(self):
+        self.orb.shutdown(wait_for_completion=CORBA.FALSE)
+        self.orb.destroy()
+#
+# class NameSpace :
+#       rtc_handles and object list in naming service
+#
+class NameSpace :
+    def __init__(self, orb, server_name=None, naming=None):
+        self.orb = orb
+        self.name = server_name
+        if naming :
+          self.naming = naming
+        else :
+          self.naming = CorbaNaming(self.orb, server_name) 
+
+        self.b_len = 10 # iteration cut off no.
+        self.rtc_handles = {}
+        self.obj_list = {}
+
+    def get_object_by_name(self, name, cl=RTC.RTObject):
+        ref = self.naming.resolveStr(name)
+        if ref is None: return None     # return CORBA.nil ?
+        if cl :
+            return ref._narrow(cl)
+        else :
+            return ref
+
+    def list_obj(self) :
+        self.rtc_handes = {}
+        self.obj_list = {}
+        return self.list_obj1(self.naming._rootContext, "")
+
+    def list_obj1(self, name_context, parent) :
+        if not name_context :
+            name_context = self.naming._rootContext 
+        rslt = []
+        b_list = name_context.list(self.b_len)
+        for bd in b_list[0] :
+            rslt = rslt + self.proc_bd(bd, name_context, parent)
+        if b_list[1] :  # iterator : there exists remaining.
+            t_list = b_list[1].next_n(self.b_len)
+            while t_list[0] :
+                for bd in t_list[1] :
+                    rslt = rslt + self.proc_bd(bd, name_context, parent)
+                t_list = b_list[1].next_n(self.b_len)
+        return rslt
+
+    def proc_bd(self, bd, name_context, parent) :
+#        print '-------------------------------------------------------------------'
+#        print 'bd= ', bd
+#        print 'name_context= ', name_context
+#        print 'parent= ', parent
+        rslt = []
+        pre = ""
+        if parent :
+            pre = parent + "/"
+        nam = pre + URI.nameToString(bd.binding_name)
+        if bd.binding_type == CosNaming.nobject :
+            tmp = name_context.resolve(bd.binding_name)
+            self.obj_list[nam]=tmp
+            print 'objcet '+nam+' was listed.'
+            try :
+                tmp = tmp._narrow(RTC.RTObject)
+            except :
+                print nam+' is not RTC.'
+                tmp = None
+            try :
+                if tmp :
+                   rslt = [[nam, tmp]]
+                   self.rtc_handles[nam]=RtcHandle(nam,self,tmp)
+                   print 'handle for '+nam+' was created.'
+                else :
+                   pass
+            except :
+                print nam+' is not alive.' , sys.exc_info()[0]
+                pass
+        else :
+            tmp = name_context.resolve(bd.binding_name)
+            tmp = tmp._narrow(CosNaming.NamingContext)
+            rslt = self.list_obj1(tmp, nam)
+        return rslt
+
+#
+# data conversion
+#
+def nvlist2dict(nvlist) :
+    rslt = {}
+    for tmp in nvlist :
+        rslt[tmp.name]=tmp.value.value()   # nv.value and any.value()
+    return rslt
+def dict2nvlist(dict) :
+    rslt = []
+    for tmp in dict.keys() :
+        rslt.append(SDOPackage.NameValue(tmp, any.to_any(dict[tmp])))
+    return rslt
+#
+#  connector, port, inport, outport, service
+#                
+
+class Connector :
+    def __init__(self, plist, name = None, id="", prop_dict={}) :
+       self.connectp=False
+       self.plist = plist
+       self.port_reflist = [tmp.port_profile.port_ref for tmp in plist]
+       if name :
+           self.name = name
+       else :
+           self.name = string.join([tmp.name for tmp in plist],'_')
+       self.prop_dict_req = prop_dict
+       self.prop_nvlist_req = dict2nvlist(self.prop_dict_req)
+       self.profile_req = RTC.ConnectorProfile(self.name, id, self.port_reflist, 
+                          self.prop_nvlist_req)
+       self.nego_prop()
+
+    def nego_prop(self) :
+       self.possible = True
+       for kk in self.def_prop :
+           if kk in self.prop_dict_req :
+               if not self.prop_dict_req[kk] :
+                   self.prop_dict_req[kk]=self.def_prop[kk]
+           else :
+                self.prop_dict_req[kk]=self.def_prop[kk]
+           for pp in self.plist :  
+               if not ((self.prop_dict_req[kk] in pp.prop[kk]) or 
+                                 ('Any' in    pp.prop[kk])) :
+                   print kk, self.prop_dict_req[kk]
+                   self.prop_dict_req[kk] = ""
+                   self.possible = False
+       self.prop_nvlist_req = dict2nvlist(self.prop_dict_req)
+       self.profile_req.properties = self.prop_nvlist_req
+       return self.possible
+
+    def connect(self) :
+#
+#   out and inout parameters are retuned as a tuple   
+#
+       if self.connectp == False :
+          ret, self.profile = self.port_reflist[0].connect(self.profile_req)
+          self.prop_nvlist = self.profile.properties
+          self.prop_dict = nvlist2dict(self.prop_nvlist)
+          if ret == RTC.RTC_OK :
+              self.connectp=True
+       else :
+          ret = "?"
+       return ret
+
+    def disconnect(self) :
+       if self.connectp == True :
+           ret = self.port_reflist[0].disconnect(self.profile.connector_id)
+       else :
+           ret = "?"
+       self.connectp = False
+       return ret
+
+class IOConnector(Connector) :
+    def __init__(self, plist, name = None, id="", prop_dict={}) :
+#      self.def_prop = {'dataport.dataflow_type':'Push' ,
+#                       'dataport.interface_type':'CORBA_Any' ,
+#                       'dataport.subscription_type':'Flush'}
+       self.def_prop = {'dataport.dataflow_type':'push',
+                        'dataport.interface_type':'corba_cdr' ,
+                        'dataport.subscription_type':'flush'}
+       Connector.__init__(self, plist, name, id, prop_dict)
+
+class ServiceConnector(Connector) :
+    def __init__(self, plist, name = None, id="", prop_dict={}) :
+       self.def_prop = {'port.port_type':'CorbaPort' }
+       Connector.__init__(self, plist, name, id, prop_dict)
+
+
+class Port :
+    def __init__(self, profile,nv_dict=None,handle=None) :
+        self.handle=handle
+        self.name=profile.name    
+        self.port_profile = profile
+        if not nv_dict :
+            nv_dict = nvlist2dict(profile.properties)
+        self.prop = nv_dict
+        self.con = None           # this must be set in each subclasses
+    def get_info(self) :
+        self.con.connect()
+        tmp1 = self.get_connections()
+        tmp2 = [pp.connector_id for pp in tmp1]
+        if self.con.profile.connector_id in tmp2 :
+            print "connecting"
+            self.con.disconnect()
+
+    def get_connections(self) :
+        return self.port_profile.port_ref.get_connector_profiles()
+
+class CorbaServer :
+    def __init__(self, profile, port) :
+        self.profile = profile
+        self.port = port
+        self.name = profile.instance_name
+        self.type = profile.type_name
+        self.ref = None
+        ref_key = 'port.' + self.type + '.' + self.name
+        self.ref=self.port.con.prop_dict[ref_key]
+        if isinstance(self.ref,str) :
+            self.ref=port.handle.env.orb.string_to_object(self.ref)
+#
+# if we import stubs before we create instances,
+# we rarely need to narrow the object references.
+# we need to specify global symbol table to evaluate class symbols.
+#
+    def narrow_ref(self, gls) :
+        if self.type.find('::') == -1 :
+            self.narrow_sym = eval('_GlobalIDL.' + self.type, gls)
+        else :
+            self.narrow_sym = eval(self.type.replace('::','.'), gls)
+        self.ref = self.ref._narrow(self.narrow_sym)
+
+class CorbaClient :
+    def __init__(self, profile) :
+        self.profile = profile
+        self.name = profile.instance_name
+        self.type = profile.type_name
+#
+# to connect to an outside corba client,
+# we need an implementation of the corresponding corba server.
+# but ....
+#
+
+class RtcService(Port) :
+    def __init__(self, profile,nv_dict=None, handle=None) :
+        Port.__init__(self, profile, nv_dict, handle)
+        self.con = ServiceConnector([self])
+        self.get_info()
+        self.provided={}
+        self.required={}
+        tmp = self.port_profile.interfaces
+        for itf in tmp :
+            if itf.polarity == RTC.PROVIDED :
+                self.provided[itf.instance_name] = CorbaServer(itf,self)
+            elif itf.polarity == RTC.REQUIRED :
+                self.required[itf.instance_name] = CorbaClient(itf)
+
+#    def open(self) :
+#        self.con.connect()
+#        self.provided={}
+#        self.required={}
+#        tmp = self.port_profile.interfaces
+#        for itf in tmp :
+#            if itf.polarity == RTC.PROVIDED :
+#                self.provided[itf.instance_name] = CorbaServer(itf,self)
+#            elif itf.polarity == RTC.REQUIRED :
+#                self.required[itf.instance_name] = CorbaClient(itf)
+
+#    def close(self) :
+#        return self.con.disconnect()
+def strip_data_class(data_class_str) :
+    tmp = data_class_str.split(':')
+    if len(tmp) == 1 :
+        return data_class_str
+    else :
+        tmp = tmp[1].split('/')
+        return tmp[1]
+
+class RtcInport(Port) :
+    def __init__(self, profile, nv_dict=None, handle=None) :
+        Port.__init__(self, profile, nv_dict, handle)
+        self.con = IOConnector([self], prop_dict={'dataport.dataflow_type':'push'})
+        self.get_info() 
+#       self.ref = self.con.prop_dict['dataport.corba_any.inport_ref']
+        self.ref = self.con.prop_dict['dataport.corba_cdr.inport_ref']
+#        self.data_class = eval('RTC.' + self.prop['dataport.data_type'])
+#        self.data_tc = eval('RTC._tc_' + self.prop['dataport.data_type'])
+        tmp=strip_data_class(self.prop['dataport.data_type'])
+        print tmp
+        self.data_class = eval('RTC.' + tmp)
+        self.data_tc = eval('RTC._tc_' + tmp)
+    def write(self,data) :
+#        self.ref.put(CORBA.Any(self.data_tc,
+#                         self.data_class(RTC.Time(0,0),data)))
+        self.ref.put(cdrMarshal(self.data_tc,
+                                self.data_class(RTC.Time(0,0),data), 1))
+    def open(self) :
+        self.con.connect()
+        self.ref = self.con.prop_dict['dataport.corba_cdr.inport_ref']
+
+    def close(self) :
+        return self.con.disconnect()
+
+class RtcOutport(Port) :
+    def __init__(self, profile,nv_dict=None, handle=None) :
+        Port.__init__(self, profile, nv_dict, handle)
+        con_prop_dict={'dataport.dataflow_type':'pull',
+		       'dataport.buffer.type':'ringbuffer',
+                       'dataport.buffer.read.empty_policy':'last',
+		       'dataport.buffer.length':'1'}
+        self.con = IOConnector([self], prop_dict=con_prop_dict)
+        self.get_info()
+#        if 'dataport.corba_any.outport_ref' in self.con.prop_dict :
+#          self.ref = self.con.prop_dict['dataport.corba_any.outport_ref']
+        if 'dataport.corba_cdr.outport_ref' in self.con.prop_dict :
+           self.ref = self.con.prop_dict['dataport.corba_cdr.outport_ref']
+        else :
+           self.ref=None
+#        self.data_class = eval('RTC.' + self.prop['dataport.data_type'])
+#        self.data_tc = eval('RTC._tc_' + self.prop['dataport.data_type'])
+        tmp=strip_data_class(self.prop['dataport.data_type'])
+        self.data_class = eval('RTC.' + tmp)
+        self.data_tc = eval('RTC._tc_' + tmp)
+
+    def read(self) :
+        if self.ref :
+           try :
+                tmp1=self.ref.get()
+           	tmp2= cdrUnmarshal(self.data_tc,tmp1[1], 1)
+#           return tmp2.data
+           	return tmp2
+           except :
+                return None
+        else :
+           print "not supported"
+           return None
+
+    def open(self) :
+        self.con.connect()
+        if 'dataport.corba_cdr.outport_ref' in self.con.prop_dict :
+           self.ref = self.con.prop_dict['dataport.corba_cdr.outport_ref']
+
+    def close(self) :
+        return self.con.disconnect()
+
+#
+# RtcHandle
+#
+class RtcHandle :
+  def __init__(self, name, env, ref=None) :
+    self.name = name
+    self.env = env
+    if ref :
+        self.rtc_ref = ref
+    else :
+        self.rtc_ref = env.naming.resolve(name)._narrow(RTC.RTObject)
+    self.conf_ref = None
+    self.retrieve_info()
+
+  def retrieve_info(self) :
+    self.conf_set={}
+    self.conf_set_data={}
+    self.port_refs = []
+    self.execution_contexts =[]
+    if self.rtc_ref :
+        self.conf_ref = self.rtc_ref.get_configuration()
+        conf_set = self.conf_ref.get_configuration_sets()
+        for cc in conf_set :
+            self.conf_set[cc.id]=cc
+            self.conf_set_data[cc.id]=nvlist2dict(cc.configuration_data)
+        self.profile = self.rtc_ref.get_component_profile()
+        self.prop = nvlist2dict(self.profile.properties)
+        #self.execution_contexts = self.rtc_ref.get_contexts()
+        self.execution_contexts = self.rtc_ref.get_owned_contexts()
+        self.port_refs = self.rtc_ref.get_ports()  
+    # this includes inports, outports and service ports
+    self.ports = {}
+    self.services = {}
+    self.inports = {}
+    self.outports = {}
+    for pp in self.port_refs :
+        tmp = pp.get_port_profile()
+        tmp_prop = nvlist2dict(tmp.properties)
+        tmp_name = tmp.name.lstrip(self.name.split('.')[0]).lstrip('.')
+        print 'port_name:', tmp_name
+#       self.ports[tmp.name]=Port(tmp, tmp_prop)
+        if tmp_prop['port.port_type']=='DataInPort' :
+            self.inports[tmp_name]=RtcInport(tmp,tmp_prop, self)
+#            self.inports[tmp.name]=Port(tmp, tmp_prop)
+        elif tmp_prop['port.port_type']=='DataOutPort' :
+            self.outports[tmp_name]=RtcOutport(tmp, tmp_prop, self)
+#            self.outports[tmp.name]=Port(tmp, tmp_prop)
+        elif tmp_prop['port.port_type']=='CorbaPort' :
+            self.services[tmp_name]=RtcService(tmp, tmp_prop, self)
+#            self.services[tmp.name]=Port(tmp, tmp_prop)
+
+  def set_conf(self,conf_set_name,param_name,value) :
+      conf_set=self.conf_set[conf_set_name]
+      conf_set_data=self.conf_set_data[conf_set_name]
+      conf_set_data[param_name]=value
+      conf_set.configuration_data=dict2nvlist(conf_set_data)
+#      self.conf_ref.set_configuration_set_values(conf_set_name,conf_set)
+      self.conf_ref.set_configuration_set_values(conf_set)
+  def set_conf_activate(self,conf_set_name,param_name,value) :
+      self.set_conf(conf_set_name,param_name,value)
+      self.conf_ref.activate_configuration_set(conf_set_name)
+  def activate(self):
+      return self.execution_contexts[0].activate_component(self.rtc_ref)
+  def deactivate(self):
+      return self.execution_contexts[0].deactivate_component(self.rtc_ref)
+  def reset(self):
+      return self.execution_contexts[0].reset_component(self.rtc_ref)
+  def get_state(self):
+      return self.execution_contexts[0].get_component_state(self.rtc_ref)
+
+#
+# pipe
+#  a pipe is an port (interface & implementation)
+#  for a port(an RtcInport or RtcOutport object) of an outside rtc.
+#  you need an empty rtc (comp) to create pipes.
+#  you can subscribe and communicate to the outside port with the pipe.
+#  
+#
+class InPipe() :
+  def __init__(self,comp, port) :
+    self.comp=comp
+    self.port=port
+    self.pname=port.name.replace('.','_')
+    self.pipe=comp.makeOutPort(self.pname,port.data_class(RTC.Time(0,0),[]),OpenRTM_aist.RingBuffer(1))
+    self.buf=getattr(comp,'_d_'+self.pname)
+    tmp = self.pipe.getPortProfile()
+    self.pipe_port = RtcOutport(tmp, nvlist2dict(tmp.properties))
+    self.con = IOConnector([self.pipe_port,self.port])
+  def connect(self):
+    return self.con.connect()
+  def disconnect(self):
+    return self.con.disconnect()
+  def write(self, data) :
+    self.buf.data=data
+    self.pipe.write()
+class OutPipe() :
+  def __init__(self,comp, port) :
+    self.comp=comp
+    self.port=port
+    self.pname=port.name.replace('.','_')
+    self.pipe=comp.makeInPort(self.pname,port.data_class(RTC.Time(0,0),[]),OpenRTM_aist.RingBuffer(1))
+    self.buf=getattr(comp,'_d_'+self.pname)
+    tmp = self.pipe.getPortProfile()
+    self.pipe_port = RtcInport(tmp, nvlist2dict(tmp.properties))
+    self.con = IOConnector([self.pipe_port,self.port])
+  def connect(self):
+    return self.con.connect()
+  def disconnect(self):
+    return self.con.disconnect()
+  def read(self) :
+    return self.pipe.read().data
+#
+#
+#
+def make_pipe(comp, handle) :
+  handle.in_pipe={}
+  for i_port in handle.inports :
+    handle.in_pipe[i_port]=InPipe(comp, handle.inports[i_port])
+  handle.out_pipe={}
+  for o_port in handle.outports :
+    handle.out_pipe[o_port]=OutPipe(comp, handle.outports[o_port])

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/ExtTrigger/Connector.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/ExtTrigger/Connector.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/ExtTrigger/Connector.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -39,8 +39,6 @@
   # activate ConsoleIn0
   eclisti = inobj.get_owned_contexts()
   eclisti[0].activate_component(inobj)
-  print "eclisti",eclisti
-  print "eclisti[0]",eclisti[0]
   ec0.setObject(eclisti[0])
 
 
@@ -85,8 +83,6 @@
       print "cmd? >",
       cmd = str(sys.stdin.readline())
       if cmd == "0\n":
-        print "ec0", ec0
-        print "ec0.ptr()", ec0._ptr()
         ec0._ptr().tick()
       elif cmd == "1\n":
         ec1._ptr().tick()

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/ExtTrigger/run.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/ExtTrigger/run.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/ExtTrigger/run.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -31,15 +31,19 @@
     os.system("python Connector.py")
 
 else:
-    status,term=commands.getstatusoutput("which kterm")
+    status,term=commands.getstatusoutput("which xterm")
+    term += " -e"
     if status != 0:
-        status,term=commands.getstatusoutput("which xterm")
+        status,term=commands.getstatusoutput("which kterm")
+        term += " -e"
 
     if status != 0:
         status,term=commands.getstatusoutput("which uxterm")
+        term += " -e"
 
     if status != 0:
         status,term=commands.getstatusoutput("which gnome-terminal")
+        term += " -x"
 
     if status != 0:
         print "No terminal program (kterm/xterm/gnome-terminal) exists."
@@ -54,8 +58,8 @@
         print "rtm-naming directory not exist."
         sys.exit(0)
 
-    os.system('python %s/rtm-naming.py'%path)
-    os.system('%s -e python ConsoleIn.py &'%term)
-    os.system('%s -e python ConsoleOut.py &'%term)
+    os.system('python %s/rtm-naming.py &'%path)
+    os.system('%s python ConsoleIn.py &'%term)
+    os.system('%s python ConsoleOut.py &'%term)
     time.sleep(1)
     os.system("python Connector.py")

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/MobileRobotCanvas/TkMobileRobotSimulator.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/MobileRobotCanvas/TkMobileRobotSimulator.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/MobileRobotCanvas/TkMobileRobotSimulator.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -30,21 +30,21 @@
 import OpenRTM_aist
 # This module's spesification
 # <rtc-template block="module_spec">
-mobilerobotcanvas_spec = ["implementation_id", "MobileRobotCanvas", 
-                          "type_name",         "MobileRobotCanvas", 
-                          "description",       "sample component for Python and Tkinter", 
-                          "version",           "1.0", 
-                          "vendor",            "Noriaki Ando, AIST", 
-                          "category",          "example", 
-                          "activity_type",     "DataFlowComponent", 
-                          "max_instance",      "10", 
-                          "language",          "Python", 
-                          "lang_type",         "SCRIPT",
-                          ""]
+tkmobilerobotsimulator_spec = ["implementation_id", "TkMobileRobotSimulator", 
+                               "type_name",         "TkMobileRobotSimulator", 
+                               "description",       "sample component for Python and Tkinter", 
+                               "version",           "1.0", 
+                               "vendor",            "Noriaki Ando, AIST", 
+                               "category",          "example", 
+                               "activity_type",     "DataFlowComponent", 
+                               "max_instance",      "10", 
+                               "language",          "Python", 
+                               "lang_type",         "SCRIPT",
+                               ""]
 # </rtc-template>
 
 
-class MobileRobotCanvas(OpenRTM_aist.DataFlowComponentBase):
+class TkMobileRobotSimulator(OpenRTM_aist.DataFlowComponentBase):
   def __init__(self, manager):
     OpenRTM_aist.DataFlowComponentBase.__init__(self, manager)
         
@@ -534,7 +534,7 @@
     self.wr = 0.0
     self.name = "DDMobileRobot" + str(self.__class__.count)
     self.__class__.count += 1 
-    self.comp = OpenRTM_aist.Manager.instance().createComponent("MobileRobotCanvas")
+    self.comp = OpenRTM_aist.Manager.instance().createComponent("TkMobileRobotSimulator")
 
     # properties
     self.rentry = StringVar()
@@ -554,7 +554,7 @@
   def __del__(self):
     try:
       self.comp.exit()
-      del(self.comp)
+      del self.comp
     except:
       pass
     self.delete()
@@ -935,13 +935,21 @@
     return xo, yo
 
 
+def TkMobileRobotSimulatorInit(manager):
+  profile = OpenRTM_aist.Properties(defaults_str=tkmobilerobotsimulator_spec)
+  manager.registerFactory(profile,
+                          TkMobileRobotSimulator,
+                          OpenRTM_aist.Delete)
+  return
+
+
 def main():
   m = TkMobileRobot(Tk())
   m.master.title("Tk Mobile Robot Simulator")
   mgr = OpenRTM_aist.Manager.init(sys.argv)
   mgr.activateManager()
-  profile = OpenRTM_aist.Properties(defaults_str=mobilerobotcanvas_spec)
-  mgr.registerFactory(profile, MobileRobotCanvas, OpenRTM_aist.Delete)
+  profile = OpenRTM_aist.Properties(defaults_str=tkmobilerobotsimulator_spec)
+  mgr.registerFactory(profile, TkMobileRobotSimulator, OpenRTM_aist.Delete)
   mgr.runManager(True)
   m.mainloop()
 

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/MobileRobotCanvas/rtc.conf
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/MobileRobotCanvas/rtc.conf	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/MobileRobotCanvas/rtc.conf	2011-09-21 07:57:38 UTC (rev 479)
@@ -1,3 +1,4 @@
 corba.nameservers: localhost
 naming.formats: %n.rtc
 logger.enable: NO
+manager.shutdown_on_nortcs: NO
\ No newline at end of file

Copied: trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/NXTRTC/NXTBrick20.py (from rev 395, branches/RELENG_1_0/OpenRTM-aist-Python/OpenRTM_aist/examples/NXTRTC/NXTBrick20.py)
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/NXTRTC/NXTBrick20.py	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/NXTRTC/NXTBrick20.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,127 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# -*- Python -*-
+
+import nxt.locator
+from nxt.sensor import *
+from nxt.motor import *
+import time
+
+class NXTBrick:
+  def __init__(self, bsock=None):
+    """
+    Ctor
+    Connecting to NXT brick and creating motor object, sensor object
+    and so on. Motor encoders will be reset.
+    """
+    if bsock:
+      self.sock = bsock
+    else:
+      self.sock = nxt.locator.find_one_brick()
+
+    self.motors = [Motor(self.sock, PORT_A),
+                   Motor(self.sock, PORT_B),
+                   Motor(self.sock, PORT_C)]
+            
+    self.sensors = [Touch(self.sock, PORT_1),
+                    Sound(self.sock, PORT_2),
+                    Light(self.sock, PORT_3),
+                    Ultrasonic(self.sock, PORT_4)]
+    self.resetPosition()
+
+  def close(self):
+    """
+    Finalizing connection with NXT brick.
+    """
+    self.sock.close()
+
+  def resetPosition(self, relative = 0):
+    """
+    Resetting encoders of NXT motors
+    """
+    for m in self.motors:
+      m.reset_position(relative)
+
+  def setMotors(self, vels):
+    """
+    This operation receives array and set them as motor power.  If the
+    number of vels items does not match with the number of motors,
+    smaller number of them will be taken and set respectively.
+    """
+    for i, v in enumerate(vels[:min(len(vels),len(self.motors))]):
+      self.motors[i].sync = 1
+      self.motors[i].run(max(min(v,127),-127))
+
+  def getMotors(self):
+    """
+    Getting motors' angle (degrees)
+    """
+    state = []
+    for m in self.motors:
+      stat = None
+      for i in range(3):
+        try:
+          stat = m.get_tacho().tacho_count
+          break
+        except:
+          time.sleep(0.01)
+          continue
+
+      if stat == None:
+        import sys
+        print "Unknown motor encoder error"
+        print sys.exc_info()[1]
+      state.append(stat)
+
+    return state
+
+
+  def getSensors(self):
+    """
+    Getting sensors' values. Data will be returned as array.
+    """
+    state = []
+    for s in self.sensors:
+      stat = None
+      for i in range(3):
+        try:
+          stat = s.get_sample()
+          break
+        except:
+          time.sleep(0.01)
+          continue
+      if stat == None:
+        import sys
+        print "Unknown sensor error"
+        print sys.exc_info()[1]
+      state.append(stat)
+
+    return state
+
+
+"""
+Test program
+It gives appropriate values to motors, and angles of motors are
+obtained and shown.  Sensor data are also obtained and shown.
+"""
+if __name__ == "__main__":
+  import time
+  nxt = NXTBrick()
+  print "connected"
+    
+  # Testing motors
+  for i in range(0):
+    nxt.setMotors([80,-80,80])
+    print "Motor: "
+    mstat = nxt.getMotors()
+    for i, m in enumerate(mstat):
+      print "(" , i, "): ", m
+    time.sleep(0.1)
+  nxt.setMotors([0,0,0])
+
+  # Testing sensors
+  for i in range(100):
+    sensors = ["Touch", "Sound", "Light", "USonic"]
+    sval = nxt.getSensors()
+    print sval
+    time.sleep(0.1)

Copied: trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/NXTRTC/NXTRTC20.py (from rev 395, branches/RELENG_1_0/OpenRTM-aist-Python/OpenRTM_aist/examples/NXTRTC/NXTRTC20.py)
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/NXTRTC/NXTRTC20.py	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/NXTRTC/NXTRTC20.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,150 @@
+#!/usr/bin/env python
+# -*- coding:utf-8 -*-
+# -*- Python -*-
+
+import sys
+import time
+sys.path.append(".")
+
+# Import RTM module
+import RTC
+import OpenRTM_aist
+
+
+# import NXTBrick class
+import NXTBrick20
+
+
+# This module's spesification
+# <rtc-template block="module_spec">
+nxtrtc_spec = ["implementation_id", "NXTRTC", 
+               "type_name",         "NXTRTC", 
+               "description",       "NXT sample component", 
+               "version",           "0.1", 
+               "vendor",            "AIST", 
+               "category",          "example", 
+               "activity_type",     "DataFlowComponent", 
+               "max_instance",      "10", 
+               "language",          "Python", 
+               "lang_type",         "SCRIPT",
+               "conf.default.map", "A,B",
+               ""]
+
+# </rtc-template>
+
+class NXTRTC(OpenRTM_aist.DataFlowComponentBase):
+  def __init__(self, manager):
+    OpenRTM_aist.DataFlowComponentBase.__init__(self, manager)
+
+    # initialize of configuration-data.
+    # <rtc-template block="configurations">
+    self._map = [['A', 'B']]
+    self._nxtbrick = None
+    self._mapping = {'A':0,'B':1,'C':2}
+     
+  def onInitialize(self):
+    # DataPorts initialization
+    # <rtc-template block="data_ports">
+    self._d_vel = RTC.TimedFloatSeq(RTC.Time(0,0),[])
+    self._velIn = OpenRTM_aist.InPort("vel", self._d_vel)
+    self.addInPort("vel",self._velIn)
+    self._d_pos = RTC.TimedFloatSeq(RTC.Time(0,0),[])
+    self._posOut = OpenRTM_aist.OutPort("pos", self._d_pos)
+    self.addOutPort("pos",self._posOut)
+    self._d_sens = RTC.TimedFloatSeq(RTC.Time(0,0),[])
+    self._sensOut = OpenRTM_aist.OutPort("sens", self._d_sens)
+    self.addOutPort("sens",self._sensOut)
+
+    # Bind variables and configuration variable
+    # <rtc-template block="bind_config">
+    self.bindParameter("map", self._map, "A,B")
+
+    # create NXTBrick object
+    try:
+      print "Connecting to NXT brick ...."
+      self._nxtbrick = NXTBrick20.NXTBrick()
+      print "Connection established."
+    except:
+      print "NXTBrick connection failed."
+      return RTC.RTC_ERROR
+
+    return RTC.RTC_OK
+
+  def onFinalize(self):
+    self._nxtbrick.close()
+
+  def onActivated(self, ec_id):
+    self._nxtbrick.setMotors([0,0,0])
+    # reset NXTBrick's position.
+    self._nxtbrick.resetPosition()
+    return RTC.RTC_OK
+
+  def onDeactivated(self, ec_id):
+    self._nxtbrick.setMotors([0,0,0])
+    # reset NXTBrick's position.
+    self._nxtbrick.resetPosition()
+
+    return RTC.RTC_OK
+
+  def onExecute(self, ec_id):
+    try:
+      # check new data.
+      if self._velIn.isNew():
+        # read velocity data from inport.
+        self._d_vel = self._velIn.read()
+        
+        vel_ = [0,0,0]
+        vel_[self._mapping[self._map[0][0]]] = self._d_vel.data[0]
+        vel_[self._mapping[self._map[0][1]]] = self._d_vel.data[1]
+        # set velocity
+        self._nxtbrick.setMotors(vel_)
+      else:
+        print "buffer empty"
+
+      # get sensor data.
+      sensor_   = self._nxtbrick.getSensors()
+      if sensor_:
+        self._d_sens.data = sensor_
+        # write sensor data to outport.
+        self._sensOut.write()
+
+      # get position data.
+      position_ = self._nxtbrick.getMotors()
+      if position_:
+        self._d_pos.data = \
+            [position_[self._mapping[self._map[0][0]]], \
+               position_[self._mapping[self._map[0][1]]]]
+        # write position data to outport.
+        self._posOut.write()
+    except:
+      print sys.exc_info()[1]
+
+    return RTC.RTC_OK
+
+
+
+def NXTRTCInit(manager):
+  profile = OpenRTM_aist.Properties(defaults_str=nxtrtc_spec)
+  manager.registerFactory(profile,
+                          NXTRTC,
+                          OpenRTM_aist.Delete)
+
+
+def MyModuleInit(manager):
+  NXTRTCInit(manager)
+
+  # Create a component
+  comp = manager.createComponent("NXTRTC")
+
+
+
+def main():
+  mgr = OpenRTM_aist.Manager.init(sys.argv)
+  mgr.setModuleInitProc(MyModuleInit)
+  mgr.activateManager()
+  mgr.runManager()
+
+if __name__ == "__main__":
+  main()
+
+

Copied: trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/NXTRTC/NXTRTC20_callback.py (from rev 395, branches/RELENG_1_0/OpenRTM-aist-Python/OpenRTM_aist/examples/NXTRTC/NXTRTC20_callback.py)
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/NXTRTC/NXTRTC20_callback.py	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/NXTRTC/NXTRTC20_callback.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,156 @@
+#!/usr/bin/env python
+# -*- coding:utf-8 -*-
+# -*- Python -*-
+
+import sys
+import time
+sys.path.append(".")
+
+# Import RTM module
+import RTC
+import OpenRTM_aist
+
+
+# import NXTBrick class
+import NXTBrick20
+
+
+# This module's spesification
+# <rtc-template block="module_spec">
+nxtrtc_spec = ["implementation_id", "NXTRTC", 
+               "type_name",         "NXTRTC", 
+               "description",       "NXT sample component", 
+               "version",           "0.1", 
+               "vendor",            "AIST", 
+               "category",          "example", 
+               "activity_type",     "DataFlowComponent", 
+               "max_instance",      "10", 
+               "language",          "Python", 
+               "lang_type",         "SCRIPT",
+               "conf.default.map", "A,B",
+               ""]
+
+# </rtc-template>
+
+# @class CallBackClass
+# @brief callback class
+#
+# when data is written in the buffer of InPort,
+# it is called.
+class CallBackClass:
+  def __init__(self, nxtbrick_, map_):
+    self._nxtbrick = nxtbrick_
+    self._map = map_
+    self._mapping = {'A':0,'B':1,'C':2}
+
+  def __call__(self, pData):
+    vel_ = [0,0,0]
+    vel_[self._mapping[self._map[0][0]]] = pData.data[0]
+    vel_[self._mapping[self._map[0][1]]] = pData.data[1]
+    # set velocity
+    self._nxtbrick.setMotors(vel_)
+
+
+class NXTRTC(OpenRTM_aist.DataFlowComponentBase):
+  def __init__(self, manager):
+    OpenRTM_aist.DataFlowComponentBase.__init__(self, manager)
+
+    # initialize of configuration-data.
+    # <rtc-template block="configurations">
+    self._map = [['A', 'B']]
+    self._nxtbrick = None
+    self._mapping = {'A':0,'B':1,'C':2}
+     
+  def onInitialize(self):
+    # DataPorts initialization
+    # <rtc-template block="data_ports">
+    self._d_vel = RTC.TimedFloatSeq(RTC.Time(0,0),[])
+    self._velIn = OpenRTM_aist.InPort("vel", self._d_vel)
+    self.addInPort("vel",self._velIn)
+    self._d_pos = RTC.TimedFloatSeq(RTC.Time(0,0),[])
+    self._posOut = OpenRTM_aist.OutPort("pos", self._d_pos)
+    self.addOutPort("pos",self._posOut)
+    self._d_sens = RTC.TimedFloatSeq(RTC.Time(0,0),[])
+    self._sensOut = OpenRTM_aist.OutPort("sens", self._d_sens)
+    self.addOutPort("sens",self._sensOut)
+
+    # Bind variables and configuration variable
+    # <rtc-template block="bind_config">
+    self.bindParameter("map", self._map, "A,B")
+
+    # create NXTBrick object
+    try:
+      print "Connecting to NXT brick ...."
+      self._nxtbrick = NXTBrick.NXTBrick()
+      print "Connection established."
+    except:
+      print "NXTBrick connection failed."
+      return RTC.RTC_ERROR
+
+    # set callback class
+    self._velIn.setOnWrite(CallBackClass(self._ntxbrick,self._map))
+
+    return RTC.RTC_OK
+
+  def onFinalize(self):
+    self._nxtbrick.close()
+
+  def onActivated(self, ec_id):
+    # reset NXTBrick's position.
+    self._nxtbrick.resetPosition()
+
+    return RTC.RTC_OK
+
+
+  def onDeactivated(self, ec_id):
+    # reset NXTBrick's position.
+    self._nxtbrick.resetPosition()
+
+    return RTC.RTC_OK
+
+
+  def onExecute(self, ec_id):
+    # get sensor data.
+    sensor_   = self._nxtbrick.getSensors()
+    if sensor_:
+      self._d_sens.data = sensor_
+      # write sensor data to outport.
+      self._sensOut.write()
+
+    # get position data.
+    position_ = self._nxtbrick.getMotors()
+    if position_:
+      self._d_pos.data = [position_[self._mapping[self._map[0][0]]],position_[self._mapping[self._map[0][1]]]]
+      # write position data to outport.
+      self._posOut.write()
+
+    return RTC.RTC_OK
+
+
+
+def NXTRTC_callbackInit(manager):
+  profile = OpenRTM_aist.Properties(defaults_str=nxtrtc_spec)
+  manager.registerFactory(profile,
+                          NXTRTC,
+                          OpenRTM_aist.Delete)
+
+
+def MyModuleInit(manager):
+  NXTRTC_callbackInit(manager)
+
+  # Create a component
+  comp = manager.createComponent("NXTRTC")
+
+
+
+def main():
+  mgr = OpenRTM_aist.Manager.init(len(sys.argv), sys.argv)
+  #mgr = OpenRTM_aist.Manager.init(sys.argv)
+  mgr.setModuleInitProc(MyModuleInit)
+  mgr.activateManager()
+  mgr.runManager()
+
+if __name__ == "__main__":
+  main()
+
+

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/SeqIO/SeqIn.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/SeqIO/SeqIn.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/SeqIO/SeqIn.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -28,19 +28,23 @@
 
 
   def onInitialize(self):
+    self._octet     = RTC.TimedOctet(RTC.Time(0,0),0)
     self._short     = RTC.TimedShort(RTC.Time(0,0),0)
     self._long      = RTC.TimedLong(RTC.Time(0,0),0)
     self._float     = RTC.TimedFloat(RTC.Time(0,0),0)
     self._double    = RTC.TimedDouble(RTC.Time(0,0),0)
+    self._octetSeq  = RTC.TimedOctetSeq(RTC.Time(0,0),[])
     self._shortSeq  = RTC.TimedShortSeq(RTC.Time(0,0),[])
     self._longSeq   = RTC.TimedLongSeq(RTC.Time(0,0),[])
     self._floatSeq  = RTC.TimedFloatSeq(RTC.Time(0,0),[])
     self._doubleSeq = RTC.TimedDoubleSeq(RTC.Time(0,0),[])
 
+    self._octetIn     = OpenRTM_aist.InPort("Octet", self._octet)
     self._shortIn     = OpenRTM_aist.InPort("Short", self._short)
     self._longIn      = OpenRTM_aist.InPort("Long", self._long)
     self._floatIn     = OpenRTM_aist.InPort("Float", self._float)
     self._doubleIn    = OpenRTM_aist.InPort("Double", self._double)
+    self._octetSeqIn  = OpenRTM_aist.InPort("OctetSeq", self._octetSeq)
     self._shortSeqIn  = OpenRTM_aist.InPort("ShortSeq", self._shortSeq)
     self._longSeqIn   = OpenRTM_aist.InPort("LongSeq", self._longSeq)
     self._floatSeqIn  = OpenRTM_aist.InPort("FloatSeq", self._floatSeq)
@@ -48,11 +52,13 @@
 
 
     # Set InPort buffer
+    self.addInPort("Octet", self._octetIn)
     self.addInPort("Short", self._shortIn)
     self.addInPort("Long", self._longIn)
     self.addInPort("Float", self._floatIn)
     self.addInPort("Double", self._doubleIn)
 
+    self.addInPort("OctetSeq", self._octetSeqIn)
     self.addInPort("ShortSeq", self._shortSeqIn)
     self.addInPort("LongSeq", self._longSeqIn)
     self.addInPort("FloatSeq", self._floatSeqIn)
@@ -61,37 +67,53 @@
 
 
   def onExecute(self, ec_id):
+    octet_  = self._octetIn.read()
     short_  = self._shortIn.read()
     long_   = self._longIn.read()
     float_  = self._floatIn.read()
     double_ = self._doubleIn.read()
 
+    octetSeq_  = self._octetSeqIn.read()
     shortSeq_  = self._shortSeqIn.read()
     longSeq_   = self._longSeqIn.read()
     floatSeq_  = self._floatSeqIn.read()
     doubleSeq_ = self._doubleSeqIn.read()
 
+    octetSize_  = len(octetSeq_.data)
     shortSize_  = len(shortSeq_.data)
     longSize_   = len(longSeq_.data)
     floatSize_  = len(floatSeq_.data)
     doubleSize_ = len(doubleSeq_.data)
 
-    maxsize = max(shortSize_, longSize_, floatSize_, doubleSize_)
+    octetSeqDisp_ = []
+    for i in range(octetSize_):
+      octetSeqDisp_.append(ord(octetSeq_.data[i]))
+
+    maxsize = max(octetSize_, shortSize_, longSize_, floatSize_, doubleSize_)
+    octetSeqDisp_   = octetSeqDisp_   + ['-'] * (maxsize - octetSize_)
     shortSeq_.data  = shortSeq_.data  + ['-'] * (maxsize - shortSize_)
     longSeq_.data   = longSeq_.data   + ['-'] * (maxsize - longSize_)
     floatSeq_.data  = floatSeq_.data  + ['-'] * (maxsize - floatSize_)
     doubleSeq_.data = doubleSeq_.data + ['-'] * (maxsize - doubleSize_)
 
-    print '%3.2s %10.8s %10.8s %10.8s %10.8s' \
-        % (' ', 'short', 'long', 'float', 'double')
-    print '%3.2s %10.8s %10.8s %10.8s %10.8s' \
-        % (' ', short_.data, long_.data, float_.data, double_.data)
-    print "---------------------------------------------------"
+    if 0x20 <= octet_.data < 0x7e :
+      octetDisp_ = chr(octet_.data)
+    else:
+      octetDisp_ = " "
+    print '%3.2s %10.8s %10.8s %10.8s %10.8s %10.8s' \
+        % (' ', 'octet', 'short', 'long', 'float', 'double')
+    print '%3.2s %7s[%s] %10.8s %10.8s %10.8s %10.8s' \
+        % (' ', octet_.data, octetDisp_, short_.data, long_.data, float_.data, double_.data)
+    print "-----------------------------------------------------------"
     print "                 Sequence Data                     "
-    print "---------------------------------------------------"
+    print "-----------------------------------------------------------"
     for i in range(maxsize):
-      print '%3.2s %10.8s %10.8s %10.8s %10.8s' \
-          % (i, shortSeq_.data[i], longSeq_.data[i], floatSeq_.data[i], doubleSeq_.data[i])
+      if 0x20 <= octetSeqDisp_[i] < 0x7e :
+        octetDisp_ = chr(octetSeqDisp_[i])
+      else:
+        octetDisp_ = " "
+      print '%3.2s %7s[%s] %10.8s %10.8s %10.8s %10.8s' \
+          % (i, octetSeqDisp_[i], octetDisp_, shortSeq_.data[i], longSeq_.data[i], floatSeq_.data[i], doubleSeq_.data[i])
 
     # Moving cursor (^[[nA : n lines upward)
     print "\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r"

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/SeqIO/SeqOut.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/SeqIO/SeqOut.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/SeqIO/SeqOut.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -30,19 +30,23 @@
     return
     
   def onInitialize(self):
+    self._octet     = RTC.TimedOctet(RTC.Time(0,0),0)
     self._short     = RTC.TimedShort(RTC.Time(0,0),0)
     self._long      = RTC.TimedLong(RTC.Time(0,0),0)
     self._float     = RTC.TimedFloat(RTC.Time(0,0),0)
     self._double    = RTC.TimedDouble(RTC.Time(0,0),0)
+    self._octetSeq  = RTC.TimedOctetSeq(RTC.Time(0,0),[])
     self._shortSeq  = RTC.TimedShortSeq(RTC.Time(0,0),[])
     self._longSeq   = RTC.TimedLongSeq(RTC.Time(0,0),[])
     self._floatSeq  = RTC.TimedFloatSeq(RTC.Time(0,0),[])
     self._doubleSeq = RTC.TimedDoubleSeq(RTC.Time(0,0),[])
 
+    self._octetOut     = OpenRTM_aist.OutPort("Octet", self._octet)
     self._shortOut     = OpenRTM_aist.OutPort("Short", self._short)
     self._longOut      = OpenRTM_aist.OutPort("Long", self._long)
     self._floatOut     = OpenRTM_aist.OutPort("Float", self._float)
     self._doubleOut    = OpenRTM_aist.OutPort("Double", self._double)
+    self._octetSeqOut  = OpenRTM_aist.OutPort("OctetSeq", self._octetSeq)
     self._shortSeqOut  = OpenRTM_aist.OutPort("ShortSeq", self._shortSeq)
     self._longSeqOut   = OpenRTM_aist.OutPort("LongSeq", self._longSeq)
     self._floatSeqOut  = OpenRTM_aist.OutPort("FloatSeq", self._floatSeq)
@@ -50,11 +54,13 @@
 
 
     # Set OutPort buffer
+    self.addOutPort("Octet", self._octetOut)
     self.addOutPort("Short", self._shortOut)
     self.addOutPort("Long", self._longOut)
     self.addOutPort("Float", self._floatOut)
     self.addOutPort("Double", self._doubleOut)
 
+    self.addOutPort("OctetSeq", self._octetSeqOut)
     self.addOutPort("ShortSeq", self._shortSeqOut)
     self.addOutPort("LongSeq", self._longSeqOut)
     self.addOutPort("FloatSeq", self._floatSeqOut)
@@ -63,40 +69,49 @@
 
 
   def onExecute(self, ec_id):
+    octetSeq  = ""
     shortSeq  = []
     longSeq   = []
     floatSeq  = []
     doubleSeq = []
 
+    self._octet.data = int(random.uniform(0x41, 0x4a))
     self._short.data = int(random.uniform(0, 10))
-    self._long.data = int(random.uniform(0, 10))
+    self._long.data = long(random.uniform(0, 10))
     self._float.data = float(random.uniform(0.0, 10.0))
     self._double.data = float(random.uniform(0.0, 10.0))
 
-    print "-:  short     long      float            double"
-    print "     ", self._short.data, "      ", self._long.data, "   ", self._float.data, "    ", self._double.data
-    print "---------------------------------------------------"
+    print '%3.2s   %10.8s %10.8s %10.8s %10.8s %10.8s' \
+        % (' ', 'octet', 'short', 'long', 'float', 'double')
+    print '%3.2s   %7s[%s] %10.8s %10.8s %10.8s %10.8s' \
+        % (' ', self._octet.data, chr(self._octet.data), self._short.data, self._long.data, self._float.data, self._double.data)
+    print "-------------------------------------------------------------"
     print "                 Sequence Data                     "
-    print "---------------------------------------------------"
+    print "-------------------------------------------------------------"
     for i in range(10):
+      octetSeq = octetSeq + chr(int(random.uniform(0x41, 0x4a)))
       shortSeq.append(int(random.uniform(0, 10)))
       longSeq.append(long(random.uniform(0, 10)))
       floatSeq.append(float(random.uniform(0.0, 10.0)))
       doubleSeq.append(float(random.uniform(0.0, 10.0)))
-      print str(i), " : ", shortSeq[i], "      ", longSeq[i], "    ", floatSeq[i], "    ", doubleSeq[i]
+      print '%3.2s : %7s[%s] %10.8s %10.8s %10.8s %10.8s' \
+          % (str(i), ord(octetSeq[i]), octetSeq[i], shortSeq[i], longSeq[i], floatSeq[i], doubleSeq[i])
 
     # Moving cursor (^[[nA : n lines upward)
     print "\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r"
         
+    self._octetSeq.data = octetSeq
     self._shortSeq.data = shortSeq
     self._longSeq.data = longSeq
     self._floatSeq.data = floatSeq
     self._doubleSeq.data = doubleSeq
 
+    self._octetOut.write()
     self._shortOut.write()
     self._longOut.write()
     self._floatOut.write()
     self._doubleOut.write()
+    self._octetSeqOut.write()
     self._shortSeqOut.write()
     self._longSeqOut.write()
     self._floatSeqOut.write()

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/SeqIO/gen.bat
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/SeqIO/gen.bat	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/SeqIO/gen.bat	2011-09-21 07:57:38 UTC (rev 479)
@@ -5,10 +5,12 @@
     --module-category=example^
     --module-comp-type=DataFlowComponent --module-act-type=SPORADIC^
     --module-max-inst=10^
+    --inport=Octet:TimedOctet^
     --inport=Short:TimedShort^
     --inport=Long:TimedLong^
     --inport=Float:TimedFloat^
     --inport=Double:TimedDouble^
+    --inport=OctetSeq:TimedOctetSeq^
     --inport=ShortSeq:TimedShortSeq^
     --inport=LongSeq:TimedLongSeq^
     --inport=FloatSeq:TimedFloatSeq^
@@ -21,10 +23,12 @@
     --module-category=example^
     --module-comp-type=DataFlowComponent --module-act-type=SPORADIC^
     --module-max-inst=10^
+    --outport=Octet:TimedOctet^
     --outport=Short:TimedShort^
     --outport=Long:TimedLong^
     --outport=Float:TimedFloat^
     --outport=Double:TimedDouble^
+    --outport=OctetSeq:TimedOctetSeq^
     --outport=ShortSeq:TimedShortSeq^
     --outport=LongSeq:TimedLongSeq^
     --outport=FloatSeq:TimedFloatSeq^

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/SeqIO/gen.sh
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/SeqIO/gen.sh	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/SeqIO/gen.sh	2011-09-21 07:57:38 UTC (rev 479)
@@ -7,10 +7,12 @@
     --module-category=example \
     --module-comp-type=DataFlowComponent --module-act-type=SPORADIC \
     --module-max-inst=10 \
+    --inport=Octet:TimedOctet \
     --inport=Short:TimedShort \
     --inport=Long:TimedLong \
     --inport=Float:TimedFloat \
     --inport=Double:TimedDouble \
+    --inport=OctetSeq:TimedOctetSeq \
     --inport=ShortSeq:TimedShortSeq \
     --inport=LongSeq:TimedLongSeq \
     --inport=FloatSeq:TimedFloatSeq \
@@ -23,10 +25,12 @@
     --module-category=example \
     --module-comp-type=DataFlowComponent --module-act-type=SPORADIC \
     --module-max-inst=10 \
+    --outport=Octet:TimedOctet \
     --outport=Short:TimedShort \
     --outport=Long:TimedLong \
     --outport=Float:TimedFloat \
     --outport=Double:TimedDouble \
+    --outport=OctetSeq:TimedOctetSeq \
     --outport=ShortSeq:TimedShortSeq \
     --outport=LongSeq:TimedLongSeq \
     --outport=FloatSeq:TimedFloatSeq \

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/SimpleIO/ConsoleOut.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/SimpleIO/ConsoleOut.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/SimpleIO/ConsoleOut.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -38,8 +38,22 @@
     print "------------------------------"
 
 
+class ConnListener(OpenRTM_aist.ConnectorListener):
+  def __init__(self, name):
+    self._name = name
 
+  def __del__(self):
+    print "dtor of ", self._name
 
+  def __call__(self, info):
+    print "------------------------------"
+    print "Listener:       ", self._name
+    print "Profile::name:  ", info.name
+    print "Profile::id:    ", info.id
+    print "------------------------------"
+
+
+
 class ConsoleOut(OpenRTM_aist.DataFlowComponentBase):
   def __init__(self, manager):
     OpenRTM_aist.DataFlowComponentBase.__init__(self, manager)
@@ -82,6 +96,11 @@
     self._inport.addConnectorDataListener(OpenRTM_aist.ConnectorDataListenerType.ON_RECEIVER_ERROR,
                                           DataListener("ON_RECEIVER_ERROR"))
 
+    self._inport.addConnectorListener(OpenRTM_aist.ConnectorListenerType.ON_CONNECT,
+                                      ConnListener("ON_CONNECT"))
+    self._inport.addConnectorListener(OpenRTM_aist.ConnectorListenerType.ON_DISCONNECT,
+                                      ConnListener("ON_DISCONNECT"))
+
     return RTC.RTC_OK
 
   def onExecute(self, ec_id):

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/SimpleIO/run.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/SimpleIO/run.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/SimpleIO/run.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -32,15 +32,19 @@
     os.system("python Connector.py")
 
   else:
-    status,term=commands.getstatusoutput("which kterm")
+    status,term=commands.getstatusoutput("which xterm")
+    term += " -e"
     if status != 0:
-      status,term=commands.getstatusoutput("which xterm")
+      status,term=commands.getstatusoutput("which kterm")
+      term += " -e"
 
     if status != 0:
       status,term=commands.getstatusoutput("which uxterm")
+      term += " -e"
       
     if status != 0:
       status,term=commands.getstatusoutput("which gnome-terminal")
+      term += " -x"
 
     if status != 0:
       print "No terminal program (kterm/xterm/gnome-terminal) exists."
@@ -55,9 +59,9 @@
       print "rtm-naming directory not exist."
       sys.exit(0)
 
-    os.system('python %s/rtm-naming.py'%path)
-    os.system('%s -e python ConsoleIn.py &'%term)
-    os.system('%s -e python ConsoleOut.py &'%term)
+    os.system('python %s/rtm-naming.py &'%path)
+    os.system('%s python ConsoleIn.py &'%term)
+    os.system('%s python ConsoleOut.py &'%term)
     time.sleep(3)
     os.system("python Connector.py")
 

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/SimpleService/MyService.idl
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/SimpleService/MyService.idl	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/SimpleService/MyService.idl	2011-09-21 07:57:38 UTC (rev 479)
@@ -1,12 +1,12 @@
 module SimpleService {
-typedef sequence<string> EchoList;
-typedef sequence<float> ValueList;
-interface MyService
-{
-  string echo(in string msg);
-  EchoList get_echo_history();
-  void set_value(in float value);
-  float get_value();
-  ValueList get_value_history();
+  typedef sequence<string> EchoList;
+  typedef sequence<float> ValueList;
+  interface MyService
+  {
+	string echo(in string msg);
+	EchoList get_echo_history();
+	void set_value(in float value);
+	float get_value();
+	ValueList get_value_history();
+  };
 };
-};

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/SimpleService/run.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/SimpleService/run.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/SimpleService/run.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -24,8 +24,8 @@
 plat=sys.platform
 
 if plat == "win32":
-    os.system("rd /S /Q _GlobalIDL")
-    os.system("rd /S /Q _GlobalIDL__POA")
+    os.system("rd /S /Q SimpleService")
+    os.system("rd /S /Q SimpleService__POA")
     os.system("omniidl.exe -bpython MyService.idl")
     os.system("start python ..\\..\\..\\bin\\rtm-naming.py")
     os.system("start python MyServiceConsumer.py")
@@ -34,17 +34,21 @@
     os.system("python Connector.py")
 
 else:
-    os.system('rm -rf _GlobalIDL*')
+    os.system('rm -rf SimpleService*')
     os.system('omniidl -bpython MyService.idl')
-    status,term=commands.getstatusoutput("which kterm")
+    status,term=commands.getstatusoutput("which xterm")
+    term += " -e"
     if status != 0:
-        status,term=commands.getstatusoutput("which xterm")
+        status,term=commands.getstatusoutput("which kterm")
+        term += " -e"
 
     if status != 0:
         status,term=commands.getstatusoutput("which uxterm")
+        term += " -e"
 
     if status != 0:
         status,term=commands.getstatusoutput("which gnome-terminal")
+        term += " -x"
 
     if status != 0:
         print "No terminal program (kterm/xterm/gnome-terminal) exists."
@@ -59,8 +63,8 @@
         print "rtm-naming directory not exist."
         sys.exit(0)
 
-    os.system('python %s/rtm-naming.py'%path)
-    os.system('%s -e python MyServiceConsumer.py &'%term)
-    os.system('%s -e python MyServiceProvider.py &'%term)
+    os.system('python %s/rtm-naming.py &'%path)
+    os.system('%s python MyServiceConsumer.py &'%term)
+    os.system('%s python MyServiceProvider.py &'%term)
     time.sleep(3)
     os.system("python Connector.py")

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/Slider_and_Motor/run.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/Slider_and_Motor/run.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/Slider_and_Motor/run.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -31,15 +31,19 @@
     os.system("python Connector.py")
 
 else:
-    status,term=commands.getstatusoutput("which kterm")
+    status,term=commands.getstatusoutput("which xterm")
+    term += " -e"
     if status != 0:
-        status,term=commands.getstatusoutput("which xterm")
+        status,term=commands.getstatusoutput("which kterm")
+        term += " -e"
 
     if status != 0:
         status,term=commands.getstatusoutput("which uxterm")
+        term += " -e"
 
     if status != 0:
         status,term=commands.getstatusoutput("which gnome-terminal")
+        term += " -x"
 
     if status != 0:
         print "No terminal program (kterm/xterm/gnome-terminal) exists."
@@ -54,8 +58,8 @@
         print "rtm-naming directory not exist."
         sys.exit(0)
 
-    os.system('python %s/rtm-naming.py'%path)
-    os.system('%s -e python SliderComp.py &'%term)
-    os.system('%s -e python TkMotorComp.py &'%term)
+    os.system('python %s/rtm-naming.py &'%path)
+    os.system('%s python SliderComp.py &'%term)
+    os.system('%s python TkMotorComp.py &'%term)
     time.sleep(3)
     os.system("python Connector.py")

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/TkLRFViewer/TkLRFViewer.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/TkLRFViewer/TkLRFViewer.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/TkLRFViewer/TkLRFViewer.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -50,26 +50,26 @@
 class LRFViewer(OpenRTM_aist.DataFlowComponentBase):
   def __init__(self, manager):
     OpenRTM_aist.DataFlowComponentBase.__init__(self, manager)
-        
+
     self.range_data = []
     self.start_point = 0
     self.end_point   = 768
+    self.angular_res = 0.0
     return
 
   def onInitialize(self):
-    self._d_range = RTC.TimedShortSeq(RTC.Time(0,0),[])
-    self._rangeIn = OpenRTM_aist.InPort("range_data", self._d_range)
-        
-    self._d_start = RTC.TimedShort(RTC.Time(0,0), 0)
-    self._startIn = OpenRTM_aist.InPort("start_point", self._d_start)
+    _pose3D = RTC.Pose3D(RTC.Point3D(0.0, 0.0, 0.0),
+                         RTC.Orientation3D(0.0, 0.0, 0.0))
+    _size3D = RTC.Size3D(0.0, 0.0, 0.0)
+    _geometry3D = RTC.Geometry3D(_pose3D, _size3D)
+    _rangerConfig = RTC.RangerConfig(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
+    self._d_rangeData = RTC.RangeData(RTC.Time(0,0),
+                                      [],
+                                      RTC.RangerGeometry(_geometry3D, []),
+                                      _rangerConfig)
 
-    self._d_end   = RTC.TimedShort(RTC.Time(0,0), 0)
-    self._endIn   = OpenRTM_aist.InPort("end_point", self._d_end)
-        
-    # Set InPort buffers
-    self.addInPort("range_data",  self._rangeIn)
-    self.addInPort("start_point", self._startIn)
-    self.addInPort("end_point",   self._endIn)
+    self._rangeDataIn = OpenRTM_aist.InPort("range_data", self._d_rangeData)
+    self.addInPort("range_data",  self._rangeDataIn)
 
     return RTC.RTC_OK
 
@@ -83,10 +83,12 @@
     return RTC.RTC_OK
 
   def onExecute(self, ec_id):
-    if self._rangeIn.isNew():
-      self.range_data = self._rangeIn.read().data
-      self.start_point = self._startIn.read().data
-      self.end_point = self._endIn.read().data
+    if self._rangeDataIn.isNew():
+      _rangeData = self._rangeDataIn.read()
+      self.range_data = _rangeData.ranges
+      self.start_point = _rangeData.config.minAngle
+      self.end_point = _rangeData.config.maxAngle
+      self.angular_res = _rangeData.config.angularRes
     time.sleep(0.01)
     return RTC.RTC_OK
 
@@ -99,7 +101,10 @@
   def get_end_point(self):
     return self.end_point
 
+  def get_angular_res(self):
+    return self.angular_res
 
+
 class ToggleItem:
   def __init__(self):
     self.active = True
@@ -175,7 +180,7 @@
   def draw(self):
     if self.active == False: return
     self.delete()
-
+    
     x_start = int(self.x0 % self.pitch)
     x_num   = int((self.width - x_start) / self.pitch) + 1
     for x in range(x_num):
@@ -207,7 +212,9 @@
     return
 
   def set_pitch(self, pitch):
-    self.pitch = pitch
+    if pitch != 0:
+      self.pitch = pitch
+
     self.draw()
     return
 
@@ -440,10 +447,11 @@
             
       # n: step number
       # d: length data
-      deg = (n + self.offset_step) * self.angle_per_step + self.beg_angle
-      th = deg * math.pi / 180
-      x = d * math.cos(th) / 10
-      y = d * math.sin(th) / 10
+      #deg = (n + self.offset_step) * self.angle_per_step + self.beg_angle
+      #th = deg * math.pi / 180
+      th = (n + self.offset_step) * self.angle_per_step + self.beg_angle
+      x = d * math.cos(th)
+      y = d * math.sin(th)
       pos.append(self.translate(x, y, 0, 0, 0))
     self.pre_data = data
     return pos
@@ -458,6 +466,19 @@
       rdata = self.source.get_range_data()
       if len(rdata) != 0:
         self.rdata = rdata
+
+      res = self.source.get_angular_res()
+      if res:
+        self.angle_per_step = res
+
+      beg_angle = self.source.get_start_point()
+      if beg_angle:
+        self.beg_angle = beg_angle
+
+      end_angle = self.source.get_end_point()
+      if end_angle:
+        self.end_angle = end_angle
+
     else:
       pass
     self.draw()

Deleted: trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/__init__.py
===================================================================
--- branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/ext/__init__.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/__init__.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -1 +0,0 @@
-# Empty file

Copied: trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/__init__.py (from rev 478, branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/ext/__init__.py)
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/__init__.py	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/__init__.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1 @@
+# Empty file

Deleted: trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/__init__.py
===================================================================
--- branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/__init__.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/__init__.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -1 +0,0 @@
-# Empty file

Copied: trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/__init__.py (from rev 478, branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/__init__.py)
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/__init__.py	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/__init__.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1 @@
+# Empty file

Deleted: trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/COCTestRTC.py
===================================================================
--- branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/COCTestRTC.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/COCTestRTC.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -1,134 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-# -*- Python -*-
-
-import sys
-
-import RTC
-import OpenRTM_aist
-
-coctestrtc_spec = ["implementation_id", "COCTestRTC",
-                  "type_name",         "COCTestRTC",
-                  "description",       "Console input component",
-                  "version",           "1.0",
-                  "vendor",            "Shinji Kurihara",
-                  "category",          "example",
-                  "activity_type",     "DataFlowComponent",
-                  "max_instance",      "10",
-                  "language",          "Python",
-                  "lang_type",         "script",
-                  ""]
-
-
-class DataListener(OpenRTM_aist.ConnectorDataListenerT):
-  def __init__(self, name):
-    self._name = name
-    
-  def __del__(self):
-    print "dtor of ", self._name
-
-  def __call__(self, info, cdrdata):
-    data = OpenRTM_aist.ConnectorDataListenerT.__call__(self, info, cdrdata, RTC.TimedLong(RTC.Time(0,0),0))
-    print "------------------------------"
-    print "Listener:       ", self._name
-    print "Profile::name:  ", info.name
-    print "Profile::id:    ", info.id
-    print "Data:           ", data.data
-    print "------------------------------"
-    
-class ConnListener(OpenRTM_aist.ConnectorListener):
-  def __init__(self, name):
-    self._name = name
-
-  def __del__(self):
-    print "dtor of ", self._name
-
-  def __call__(self, info):
-    print "------------------------------"
-    print "Listener:       ", self._name
-    print "Profile::name:  ", info.name
-    print "Profile::id:    ", info.id
-    print "------------------------------"
-
-
-class COCTestRTC(OpenRTM_aist.DataFlowComponentBase):
-  def __init__(self, manager):
-    OpenRTM_aist.DataFlowComponentBase.__init__(self, manager)
-    return
-
-  def onInitialize(self):
-    self._data = RTC.TimedLong(RTC.Time(0,0),0)
-    self._outport = OpenRTM_aist.OutPort("out", self._data)
-    # Set OutPort buffer
-    self.addOutPort("out", self._outport)
-    self._outport.addConnectorDataListener(OpenRTM_aist.ConnectorDataListenerType.ON_BUFFER_WRITE,
-                                           DataListener("ON_BUFFER_WRITE"))
-    self._outport.addConnectorDataListener(OpenRTM_aist.ConnectorDataListenerType.ON_BUFFER_FULL, 
-                                           DataListener("ON_BUFFER_FULL"))
-    self._outport.addConnectorDataListener(OpenRTM_aist.ConnectorDataListenerType.ON_BUFFER_WRITE_TIMEOUT, 
-                                           DataListener("ON_BUFFER_WRITE_TIMEOUT"))
-    self._outport.addConnectorDataListener(OpenRTM_aist.ConnectorDataListenerType.ON_BUFFER_OVERWRITE, 
-                                           DataListener("ON_BUFFER_OVERWRITE"))
-    self._outport.addConnectorDataListener(OpenRTM_aist.ConnectorDataListenerType.ON_BUFFER_READ, 
-                                           DataListener("ON_BUFFER_READ"))
-    self._outport.addConnectorDataListener(OpenRTM_aist.ConnectorDataListenerType.ON_SEND, 
-                                           DataListener("ON_SEND"))
-    self._outport.addConnectorDataListener(OpenRTM_aist.ConnectorDataListenerType.ON_RECEIVED,
-                                           DataListener("ON_RECEIVED"))
-    self._outport.addConnectorDataListener(OpenRTM_aist.ConnectorDataListenerType.ON_RECEIVER_FULL, 
-                                           DataListener("ON_RECEIVER_FULL"))
-    self._outport.addConnectorDataListener(OpenRTM_aist.ConnectorDataListenerType.ON_RECEIVER_TIMEOUT, 
-                                           DataListener("ON_RECEIVER_TIMEOUT"))
-    self._outport.addConnectorDataListener(OpenRTM_aist.ConnectorDataListenerType.ON_RECEIVER_ERROR,
-                                           DataListener("ON_RECEIVER_ERROR"))
-
-    self._outport.addConnectorListener(OpenRTM_aist.ConnectorListenerType.ON_CONNECT,
-                                       ConnListener("ON_CONNECT"))
-    self._outport.addConnectorListener(OpenRTM_aist.ConnectorListenerType.ON_DISCONNECT,
-                                       ConnListener("ON_DISCONNECT"))
-
-    return RTC.RTC_OK
-
-        
-  def onExecute(self, ec_id):
-    print "Please input number: ",
-    self._data.data = long(sys.stdin.readline())
-    OpenRTM_aist.setTimestamp(self._data)
-    print "Sending to subscriber: ", self._data.data
-    self._outport.write()
-    return RTC.RTC_OK
-
-
-def COCTestRTCInit(manager):
-  profile = OpenRTM_aist.Properties(defaults_str=coctestrtc_spec)
-  manager.registerFactory(profile,
-                          COCTestRTC,
-                          OpenRTM_aist.Delete)
-
-
-def MyModuleInit(manager):
-  COCTestRTCInit(manager)
-
-  # Create a component
-  comp = manager.createComponent("COCTestRTC")
-
-def main():
-  # Initialize manager
-  mgr = OpenRTM_aist.Manager.init(sys.argv)
-
-  # Set module initialization proceduer
-  # This procedure will be invoked in activateManager() function.
-  mgr.setModuleInitProc(MyModuleInit)
-
-  # Activate manager and register to naming service
-  mgr.activateManager()
-
-  # run the manager in blocking mode
-  # runManager(False) is the default
-  mgr.runManager()
-
-  # If you want to run the manager in non-blocking mode, do like this
-  # mgr.runManager(True)
-
-if __name__ == "__main__":
-  main()

Copied: trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/COCTestRTC.py (from rev 478, branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/COCTestRTC.py)
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/COCTestRTC.py	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/COCTestRTC.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,134 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# -*- Python -*-
+
+import sys
+
+import RTC
+import OpenRTM_aist
+
+coctestrtc_spec = ["implementation_id", "COCTestRTC",
+                  "type_name",         "COCTestRTC",
+                  "description",       "Console input component",
+                  "version",           "1.0",
+                  "vendor",            "Shinji Kurihara",
+                  "category",          "example",
+                  "activity_type",     "DataFlowComponent",
+                  "max_instance",      "10",
+                  "language",          "Python",
+                  "lang_type",         "script",
+                  ""]
+
+
+class DataListener(OpenRTM_aist.ConnectorDataListenerT):
+  def __init__(self, name):
+    self._name = name
+    
+  def __del__(self):
+    print "dtor of ", self._name
+
+  def __call__(self, info, cdrdata):
+    data = OpenRTM_aist.ConnectorDataListenerT.__call__(self, info, cdrdata, RTC.TimedLong(RTC.Time(0,0),0))
+    print "------------------------------"
+    print "Listener:       ", self._name
+    print "Profile::name:  ", info.name
+    print "Profile::id:    ", info.id
+    print "Data:           ", data.data
+    print "------------------------------"
+    
+class ConnListener(OpenRTM_aist.ConnectorListener):
+  def __init__(self, name):
+    self._name = name
+
+  def __del__(self):
+    print "dtor of ", self._name
+
+  def __call__(self, info):
+    print "------------------------------"
+    print "Listener:       ", self._name
+    print "Profile::name:  ", info.name
+    print "Profile::id:    ", info.id
+    print "------------------------------"
+
+
+class COCTestRTC(OpenRTM_aist.DataFlowComponentBase):
+  def __init__(self, manager):
+    OpenRTM_aist.DataFlowComponentBase.__init__(self, manager)
+    return
+
+  def onInitialize(self):
+    self._data = RTC.TimedLong(RTC.Time(0,0),0)
+    self._outport = OpenRTM_aist.OutPort("out", self._data)
+    # Set OutPort buffer
+    self.addOutPort("out", self._outport)
+    self._outport.addConnectorDataListener(OpenRTM_aist.ConnectorDataListenerType.ON_BUFFER_WRITE,
+                                           DataListener("ON_BUFFER_WRITE"))
+    self._outport.addConnectorDataListener(OpenRTM_aist.ConnectorDataListenerType.ON_BUFFER_FULL, 
+                                           DataListener("ON_BUFFER_FULL"))
+    self._outport.addConnectorDataListener(OpenRTM_aist.ConnectorDataListenerType.ON_BUFFER_WRITE_TIMEOUT, 
+                                           DataListener("ON_BUFFER_WRITE_TIMEOUT"))
+    self._outport.addConnectorDataListener(OpenRTM_aist.ConnectorDataListenerType.ON_BUFFER_OVERWRITE, 
+                                           DataListener("ON_BUFFER_OVERWRITE"))
+    self._outport.addConnectorDataListener(OpenRTM_aist.ConnectorDataListenerType.ON_BUFFER_READ, 
+                                           DataListener("ON_BUFFER_READ"))
+    self._outport.addConnectorDataListener(OpenRTM_aist.ConnectorDataListenerType.ON_SEND, 
+                                           DataListener("ON_SEND"))
+    self._outport.addConnectorDataListener(OpenRTM_aist.ConnectorDataListenerType.ON_RECEIVED,
+                                           DataListener("ON_RECEIVED"))
+    self._outport.addConnectorDataListener(OpenRTM_aist.ConnectorDataListenerType.ON_RECEIVER_FULL, 
+                                           DataListener("ON_RECEIVER_FULL"))
+    self._outport.addConnectorDataListener(OpenRTM_aist.ConnectorDataListenerType.ON_RECEIVER_TIMEOUT, 
+                                           DataListener("ON_RECEIVER_TIMEOUT"))
+    self._outport.addConnectorDataListener(OpenRTM_aist.ConnectorDataListenerType.ON_RECEIVER_ERROR,
+                                           DataListener("ON_RECEIVER_ERROR"))
+
+    self._outport.addConnectorListener(OpenRTM_aist.ConnectorListenerType.ON_CONNECT,
+                                       ConnListener("ON_CONNECT"))
+    self._outport.addConnectorListener(OpenRTM_aist.ConnectorListenerType.ON_DISCONNECT,
+                                       ConnListener("ON_DISCONNECT"))
+
+    return RTC.RTC_OK
+
+        
+  def onExecute(self, ec_id):
+    print "Please input number: ",
+    self._data.data = long(sys.stdin.readline())
+    OpenRTM_aist.setTimestamp(self._data)
+    print "Sending to subscriber: ", self._data.data
+    self._outport.write()
+    return RTC.RTC_OK
+
+
+def COCTestRTCInit(manager):
+  profile = OpenRTM_aist.Properties(defaults_str=coctestrtc_spec)
+  manager.registerFactory(profile,
+                          COCTestRTC,
+                          OpenRTM_aist.Delete)
+
+
+def MyModuleInit(manager):
+  COCTestRTCInit(manager)
+
+  # Create a component
+  comp = manager.createComponent("COCTestRTC")
+
+def main():
+  # Initialize manager
+  mgr = OpenRTM_aist.Manager.init(sys.argv)
+
+  # Set module initialization proceduer
+  # This procedure will be invoked in activateManager() function.
+  mgr.setModuleInitProc(MyModuleInit)
+
+  # Activate manager and register to naming service
+  mgr.activateManager()
+
+  # run the manager in blocking mode
+  # runManager(False) is the default
+  mgr.runManager()
+
+  # If you want to run the manager in non-blocking mode, do like this
+  # mgr.runManager(True)
+
+if __name__ == "__main__":
+  main()

Deleted: trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/ComponentObserver.idl
===================================================================
--- branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/ComponentObserver.idl	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/ComponentObserver.idl	2011-09-21 07:57:38 UTC (rev 479)
@@ -1,512 +0,0 @@
-// -*- IDL -*-
-/*!
- * @file ComponentObserver.idl
- * @brief Component observer SDO service
- * @date $Date$
- * @author Noriaki Ando <n-ando at aist.go.jp>
- *
- * Copyright (C) 2011
- *     Noriaki Ando
- *     Intelligent Systems Research Institute,
- *     National Institute of
- *         Advanced Industrial Science and Technology (AIST), Japan
- *     All rights reserved.
- *
- * $Id$
- *
- */
-
-#include <SDOPackage.idl>
-#include <RTC.idl>
-
-/*!
- * @if jp
- * @brief コンポーネント状態オブザーバインターフェース
- *
- * コンポーネントの状態を監視するためのオブザーバインターフェース。オブ
- * ザーバパターンに従い、外部ツールがコンポーネントにオブザーバオブジェ
- * クトをセットし、コンポーネントは各種内部状態変更時にをオブザーバオブ
- * ジェクトをコールし、オブザーバに対して変更を通知する。
- *
- * @since 1.1
- *
- * @else
- * @brief Component state observer interface
- *
- * This interface defines observer interface for component states.
- * According to the observer pattern, tools which want to observe
- * component state set observer objects to the RT-Component, and weh
- * RT-Component changes its status, the observer object is called and
- * notice the changes to tools.
- *
- *
- * @since 1.1
- * @endif
- */
-module OpenRTM
-{
-  /*!
-   * @if jp
-   *
-   * @brief 更新された状態の種類
-   * 
-   * ターゲットRTCで更新された状態の種類を分類する列挙型。
-   * 
-   * @else
-   *
-   * @brief A kind of updated status
-   * 
-   * This is a enumeration type to classify updated status in target RTC.
-   *
-   * @endif
-   */
-  enum StatusKind
-  {
-    /*!
-     * @if jp
-     *
-     * @brief コンポーネントプロファイル
-     * 
-     * コンポーネントプロファイル RTC::ComponentProfile が更新されたこ
-     * とを示す列挙型。
-     *
-     * RTC::ComponentProfile のメンバーのうち、instance_name,
-     * type_name, description, version, vendor, category はRTC動作中に
-     * 変更されることはない。これらが変更された場合には、
-     * ComponentObserver::updatestatus() の hint には、それぞれのメンバー
-     * 名が文字列で指定される。また、parent に対する変更は通知されない。
-     * さらに、properties に対する変更は、hint に "<key0>, <key1>,
-     * ..." の形で通知される。
-     *
-     * port_profiles に対する変更は、後述の PORT_PROFILE によって通知さ
-     * れるため、COMPONENT_PROFILE では通知されない。
-     *
-     * @else
-     *
-     * @brief Component profile
-     * 
-     * This is enumeration member to specify that the target
-     * component's RTC::componentProfile has been changed.
-     *
-     * In the member of RTC::ComponentProfile, instance_name,
-     * type_name, description, version, vendor, category are not
-     * modified during RTC running. If these members are changed, each
-     * member's name is specified in the
-     * ComponentObserver::updateStatus() 's hint argument. And,
-     * modification to parent is not notified. In the properties, the
-     * modification is notified as "<key0>, <key1>, ..." in the hint
-     * argument.
-     * 
-     * The modification to port_profiles is not notified as
-     * COMPONENT_PROFILE becauase it is notified as PORT_PROFILE.
-     *
-     * @endif
-     */
-    COMPONENT_PROFILE,
-    /*!
-     * @if jp
-     *
-     * @brief コンポーネントの状態
-     * 
-     * コンポーネントの状態が変化したことを示す列挙子。
-     *
-     * RTCにはECの状態として、INACTIVE_STATE, ACTIVE_STATE,
-     * ERROR_STATE があるが、この状態が変化したことを通知するための列挙
-     * 子。
-     *
-     * ComponentObserver::updatestatus() の hint には、状態と、どの実行
-     * コンテキストで変化があったかを知らせる以下の文字列が hint に引数
-     * として与えられる。
-     *
-     * hint: (INACTIVE, ACTIVE, ERROR):<Execution Context ID>
-     * 例:
-     *   ACTIVE:0 (デフォルトコンテキストでRTCがアクティブになった)
-     *   ERROR:1002 (実行コンテキスト1002でRTCがエラーになった)
-     *
-     * @else
-     *
-     * @brief Component status
-     * 
-     * This is INACTIVE_STATE, ACTIVE_STATE,
-     * ERROR_STATE status, and this enumerator specify a status of RTC changed.
-     *
-     * A status and ExecutionContext's id is specified in the argument of 
-     * ComponentObserver::updateStatus() 's hint.
-     *
-     * hint: (INACTIVE, ACTIVE, ERROR):<Execution Context ID>
-     * Example:
-     *   ACTIVE:0 (RTC is activated in the default ExecuionContext)
-     *   ERROR:1002 (RTC go to ERROR state in the EC of id 1002)
-     *
-     * @endif
-     */
-    RTC_STATUS,
-    /*!
-     * @if jp
-     *
-     * @brief ExecutionContextの状態
-     * 
-     * ExecutionContextの状態が変化したことを示す列挙子。
-     *
-     * RTCにECが attach/detach/rate_change/startup/shutdown されたことを
-     * 示す列挙子。
-     *
-     * ComponentObserver::updatestatus() の hint には、
-     * attach/detach/rate_change/startup/shutdow のいずれが行われたかと、
-     * 対象となるECのidが与えられる。
-     *
-     * hint: (ATTACHED, DETACHED, RATE_CHANGED, STARTUP,
-     *        SHUTDOWN):<Execution Context ID>
-     *
-     * 例:
-     *   ATTACHED:1002 (ECがアタッチされ、そのIDは1002)
-     *
-     * @else
-     *
-     * @brief The stauts of ExecutionContext
-     * 
-     * This is enumerator notifies that ExecutionContext is
-     * attach/detach/rate_change/startup/shutdown.  Attach or detach
-     * operation and target ExecutionContext's id is given in the
-     * argument of ComponentObserver::updateStatus() 's hint.
-     *
-     * hint: (ATTACHED, DETACHED, RATE_CHANGED, STARTUP,
-     *        SHUTDOWN):<Execution Context ID>
-     *
-     * Example:
-     *   ATTACHED:1002 (EC is attached and its ID is 1002)
-     *
-     * @endif
-     */
-    EC_STATUS,
-    /*!
-     * @if jp
-     *
-     * @brief Portの状態
-     * 
-     * Portの状態が変化したことを示す列挙子。Portの追加、削除、接続、切
-     * 断が行われたことを示す。ComponentObserver::updatestatus() の
-     * hint には、いずれかのアクションが行われたかと、対象となるポート
-     * の名前が与えられる。
-     *
-     * hint: (ADD, REMOVE, CONNECT, DISCONNECT):<port name>
-     * 例:
-     *   CONNECT:velocity (velocity ポートで接続が確立された)
-     *
-     * @else
-     *
-     * @brief The stauts of ports
-     * 
-     * This is enumerator which notifies that port is added, removed,
-     * connected and/or disconnected.  Which action is performed and
-     * target port's name is given to the hint argument in
-     * ComponentObserver::updateStatus() operation.
-     *
-     * hint: (ADD, REMOVE, CONNECT, DISCONNECT):<port name>
-     * Example:
-     *   CONNECT:velocity (A connection established in the velocity port)
-     *
-     * @endif
-     */
-    PORT_PROFILE,
-    /*!
-     * @if jp
-     *
-     * @brief Configurationの状態
-     * 
-     * Configurationの状態が変化したことを示す列挙子。Configurationに対
-     * して、コンフィギュレーションパラメータが更新された
-     * (UPDATE_CONFIG_PARAM)、コンフィギュレーションがセット(更新)さ
-     * れた (SET_CONFIG_SET)、コンフィギュレーションセットが追加された
-     * (ADD_CONFIG_SET)、コンフィギュレーションが更新された
-     * (UPDATE_CONFIG_SET)、コンフィギュレーションセットが削除された
-     * (REMOVE_CONFIG_SET)、コンフィギュレーションセットがアクティブに
-     * された (ACTIVATE_CONFIG_SET) といったアクションがあったことが通
-     * 知される。
-     *
-     * - UPDATE_CONFIG_PARAM: <config set name>.<config param name>
-     *   - SDOPackage::Configuration::set_configuration_parameter
-     * - SET_CONFIG_SET: <config set name>
-     *   - SDOPackage::Configuration::set_configuration_set_values
-     * - ADD_CONFIG_SET: <config set name>
-     *   - SDOPackage::Configuration::add_configuration_set
-     * - UPDATE_CONFIG_SET: <config set name>
-     *   - 内部のコンフィグセットを実際の変数に反映する
-     * - REMOVE_CONFIG_SET: <config set name>
-     *   - SDOPackage::Configuration::remove_configuration_set
-     * - ACTIVATE_CONFIG_SET:  <config set name>
-     *   - SDOPackage::Configuration::activate_configuration_set
-     * 
-     * @else
-     *
-     * @brief The stauts of ports
-     * 
-     * This is enumerator which notifies that configuration is
-     * changed.  To the configuration, a configuration parameter has
-     * been updated (UPDATE_CONFIG_PARAM), a configuration-set is set
-     * (SET_CONFIG_SET), a configuration set has been updated
-     * (UPDATE_CONFIG_SET), a configuration set has been added
-     * (ADD_CONFIG_SET) or removed (REMOVE_CONFIG_SET), the active
-     * configuration set has been changed (ACTIVATE_CONFIG_SET), these
-     * actions would be notified.
-     *
-     * - UPDATE_CONFIG_PARAM: <config set name>.<config param name>
-     *   - SDOPackage::Configuration::set_configuration_parameter
-     * - SET_CONFIG_SET: <config set name>
-     *   - SDOPackage::Configuration::set_configuration_set_values
-     * - ADD_CONFIG_SET: <config set name>
-     *   - SDOPackage::Configuration::add_configuration_set
-     * - UPDATE_CONFIG_SET: <config set name>
-     *   - Apply configuration-set values into actual variables.
-     * - REMOVE_CONFIG_SET: <config set name>
-     *   - SDOPackage::Configuration::remove_configuration_set
-     * - ACTIVATE_CONFIG_SET:  <config set name>
-     *   - SDOPackage::Configuration::activate_configuration_set
-     *
-     * @endif
-     */
-    CONFIGURATION,
-    /*!
-     * @if jp
-     *
-     * @brief ハートビートイベント
-     * 
-     * 当該RTCが生存していることをオブザーバー側に通知する列挙子。
-     *
-     * ハートビートを利用するかどうか、およびハートビートの周期は、
-     * ServiceProfile::properties の以下のプロパティによって与えられる。
-     *
-     * heartbeat.enable: YES/NO
-     * heartbeat.interval: x [s]
-     * 
-     * @else
-     *
-     * @brief The stauts of ports
-     * 
-     * This enumerator is heart beat notification.
-     *
-     * Whether if the heart-beat function is used is specified in the
-     * ServiceProfile::properties as the following properties.
-     *
-     * heartbeat.enable: YES/NO
-     * heartbeat.interval: x [s]
-     *
-     * @endif
-     */
-    HEARTBEAT,
-
-    STATUS_KIND_NUM
-  };
-
-  /*!
-   * @if jp
-   *
-   * @interface ComponentObserver
-   * 
-   * RTCの各種状態の更新を知らせるためのオブザーバーオブジェクトのため
-   * のインターフェース。SDO Service として、対象となるRTC/SDOに対して
-   * アタッチされ、RTC/SDO内の状態が変更された場合に、変更された状態の
-   * 種類とヒントを同時に通知する。ツールなどで、ポーリングによらずRTC
-   * の状態の変化を知りたい場合などに利用する。
-   *
-   * 想定している利用方法は以下のとおりである。
-   *
-   * -# SDO::get_configuration() により Configuration オブジェクトを取得
-   * -# Configuration::add_service_profile() によりTool側の
-   *     ComponentObserver を ServiceProfile により RTC に与える。
-   *     ServiceProfile のメンバーは以下のように設定すること
-   *   - id: UUID など一意なIDを設定する。削除時にも必要になるので、Tool
-   *     側ではIDを保持しておかなければならない。
-   *   - interface_type: 当該サービスのIFRのIDを文字列として指定。RTC側で
-   *     はこの文字列により当該サービスオブジェクトを受け入れるか決定す
-   *     るため指定は必須となる。
-   *   - properties: RTC側のサービスの受け入れ側に通知するプロパティを設
-   *     定する。このサービスでは、下記の heartbeat 関連のプロパティを
-   *     指定する。
-   *    - service: SDOService オブジェクトの参照を指定する。
-   * -# RTC側で状態の変化があった場合に update_status() オペレーション
-   *     が StatusKind および hint の文字列とともに呼び出される。Tool側
-   *     では、StatusKind と hint に基づき RTC のある部分の状態が変化し
-   *     たことを知り、必要な処理を行う。
-   * -# 最終的にComponentObserverオブジェクトが不要になった場合には、
-   *     Configuration::remove_service_profile() を id とともに呼び出し
-   *     RTC から削除する。
-   *
-   * <pre>
-   * 
-   *   [RTC]    [Configuration]           [Observer]    [Tool]
-   *     |            |                       |            |
-   *     |            | get_configuration()   |            |
-   *     |<------------------------------------------------|
-   *     |            |                       |            |
-   *     |            | add_service_profile(prof)          |
-   *     |            |<-----------------------------------|
-   *     |            |                       |            |
-   *     |            | update_status(kind, hint)          |
-   *     |----------------------------------->|            |
-   *     |            | update_status(kind, hint)          |
-   *     |----------------------------------->|            |
-   *     |            |       :               |            |
-   *     |            |                       |            |
-   *     |            | remove_service_profile(id)         |
-   *     |            |<-----------------------------------|
-   *     |            |                       |            |
-   *     |            |                       x            x
-   *
-   * </pre>
-   *
-   * なお、ServiceProfile::properties に指定するプロパティとしては、
-   *
-   * - observed_status: ALL or kind of status
-   * - heartbeat.enable: YES/NO
-   * - heartbeat.interval: x [s]
-   * 
-   * がある。
-   * 
-   * - observed_staus: ALL または状態の種類をカンマ区切りで指定
-   *   監視する状態を指定する。指定可能な状態を表す文字列は、
-   *   COMPONENT_PROFILE, RTC_STATUS, EC_STATUS, PORT_PROFILE,
-   *   CONFIGURATION 5種類である。監視したい対象をカンマで区切り複数指
-   *   定することができる。また、すべての状態を監視する場合、ALL を指定
-   *   することができる。指定文字列は大文字、小文字を問わない。
-   *
-   * - heartbeat.interval: 秒単位で数値で指定
-   *   ハートビートを送信する周期を秒単位で指定する。なお、指定した秒数
-   *   でハートビートが必ず送信される保証はない。したがって、RTCが死ん
-   *   だかどうかを確認するには、heartbeat.interval 数回分の時間を待つ
-   *   必要がある。
-   *
-   * - heartbeat.enable: YES または NOで指定
-   *   Tool側では、状態に変化があるまで RTC が生存しているかどうか知る
-   *   ことはできないため、突然RTCが死んだ場合には、これを知ることがで
-   *   きない。そこで、HEART_BEAT イベントを周期的にRTC側から送らせるこ
-   *   とができる。ハートビートを有効にするか否かをこのオプションで指定
-   *   する。
-   * 
-   * 
-   * @else
-   *
-   * @interface ComponentObserver
-   * 
-   * This is an interface to notify various status changed in RTC to
-   * others.  This is attached into a target RTC/SDO as a SDO service,
-   * and if an RTC/SDO's status change, a kind of changed status and
-   * its hints are notified to observers.  For example, it can be used
-   * to notify RTC's status changed without polling in certain tools.
-   *
-   * An assumed usage is as follows.
-   *
-   * -# SDO::get_configuration() is called to get a Configuration object
-   *
-   * -# Configuration::add_service_profile() is called by Tool.
-   *     A ComponentObserver in a ServiceProfile is given to RTC.
-   *     ServiceProfile members should be set as follows.
-   *
-   *    - id: UUID and other unique ID should be specified. Since this ID
-   *      is used when the service is removed, tools should remember
-   *      this ID.
-   *
-   *    - interface_type: IFR ID should be specified here. Since the RTC
-   *      decides if the given SDO service object can be accepted by
-   *      using the interface_type string, this member is mandatory.
-   * 
-   *    - properties: This member specifies properties to be notified to
-   *      RTC side. In this service, the following heartbeat related
-   *      properties should be specified.
-   *
-   *    - service: SDOService object reference should be specified.
-   * 
-   * -# If some changes happen in RTC, the update_status() operation
-   *    is called with StatusKind and hint string. RTC's status change
-   *    is notified to tool and some processes would be performed by
-   *    the tool according to the StatusKind and hint.
-   *
-   * -# Finally, When the ComponentObserver object becomes
-   *     unnecessary, Configuration::remove_service_profile() is called
-   *     with id and it is removed from RTC.
-   *
-   * <pre>
-   * 
-   *   [RTC]    [Configuration]           [Observer]    [Tool]
-   *     |            |                       |            |
-   *     |            | get_configuration()   |            |
-   *     |<------------------------------------------------|
-   *     |            |                       |            |
-   *     |            | add_service_profile(prof)          |
-   *     |            |<-----------------------------------|
-   *     |            |                       |            |
-   *     |            | update_status(kind, hint)          |
-   *     |----------------------------------->|            |
-   *     |            | update_status(kind, hint)          |
-   *     |----------------------------------->|            |
-   *     |            |       :               |            |
-   *     |            |                       |            |
-   *     |            | remove_service_profile(id)         |
-   *     |            |<-----------------------------------|
-   *     |            |                       |            |
-   *     |            |                       x            x
-   *
-   * </pre>
-   *
-   * Properties which is specified in ServiceProfile::properties is as follows.
-   *
-   * - observed_status: ALL or kind of status
-   * - heartbeat.enable: YES/NO
-   * - heartbeat.interval: x [s]
-   * 
-   *
-   * - observed_staus: ALL or comma separated status kinds This
-   *   property specifies kind of status to be observed. Available
-   *   kind of statuses are COMPONENT_PROFILE, RTC_STATUS, EC_STATUS,
-   *   PORT_PROFILE, CONFIGURATION. You can specify comma-separated
-   *   status list to be observed. And if you want to observe all the
-   *   status, you just specify ALL instead of all the status kind
-   *   list. Uppercase, lowercase and mixture are allowed in the
-   *   specified status kind.
-   *
-   * - heartbeat.enable: YES or NO
-   *
-   *   Since tools cannot know whether the RTC is alive or not until
-   *   status change happens, if the RTC suddenly died, the tools
-   *   cannot know it forever. To eliminate this problems, Observer
-   *   object can send periodic heartbeat signals to observers. The
-   *   heartbeat.enable option specifies whether the functionality is
-   *   activated or not.
-   *
-   * - heartbeat.interval: Heartbeat interval should be specified in
-   *   seconds.  This specification does not guarantee that heartbeat
-   *   signals precisely send back to observer. Therefore if you need
-   *   to decide whether an RTC died or not, you have to wait for
-   *   several heartbeat signals.
-   *
-   * @endif
-   */
-  interface ComponentObserver
-    : SDOPackage::SDOService
-  {
-    /*!
-     * @if jp
-     *
-     * @brief 状態が更新されたことを知らせる
-     * 
-     * 状態が更新されたことを知らせるオペレーション。status_kind によっ
-     * て更新された状態の種類、hint によってどのような状態が変更された
-     * かに関するヒントが与えられる。
-     *
-     * @param status_kind: StatusKind 型の状態の種類
-     * @param hint; StatusKind 毎に決まる状態変更に関するヒント
-     *
-     * @else
-     *
-     * @brief Notifies the status updated
-     *
-     * This operation notifies the updated status. The status_kind
-     * notifies kind of updated status, and the hint give some hint
-     * about updated status.
-     *
-     * @endif
-     */
-    oneway void update_status(in StatusKind status_kind, in string hint);
-  };
-
-};

Copied: trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/ComponentObserver.idl (from rev 478, branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/ComponentObserver.idl)
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/ComponentObserver.idl	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/ComponentObserver.idl	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,512 @@
+// -*- IDL -*-
+/*!
+ * @file ComponentObserver.idl
+ * @brief Component observer SDO service
+ * @date $Date$
+ * @author Noriaki Ando <n-ando at aist.go.jp>
+ *
+ * Copyright (C) 2011
+ *     Noriaki Ando
+ *     Intelligent Systems Research Institute,
+ *     National Institute of
+ *         Advanced Industrial Science and Technology (AIST), Japan
+ *     All rights reserved.
+ *
+ * $Id$
+ *
+ */
+
+#include <SDOPackage.idl>
+#include <RTC.idl>
+
+/*!
+ * @if jp
+ * @brief コンポーネント状態オブザーバインターフェース
+ *
+ * コンポーネントの状態を監視するためのオブザーバインターフェース。オブ
+ * ザーバパターンに従い、外部ツールがコンポーネントにオブザーバオブジェ
+ * クトをセットし、コンポーネントは各種内部状態変更時にをオブザーバオブ
+ * ジェクトをコールし、オブザーバに対して変更を通知する。
+ *
+ * @since 1.1
+ *
+ * @else
+ * @brief Component state observer interface
+ *
+ * This interface defines observer interface for component states.
+ * According to the observer pattern, tools which want to observe
+ * component state set observer objects to the RT-Component, and weh
+ * RT-Component changes its status, the observer object is called and
+ * notice the changes to tools.
+ *
+ *
+ * @since 1.1
+ * @endif
+ */
+module OpenRTM
+{
+  /*!
+   * @if jp
+   *
+   * @brief 更新された状態の種類
+   * 
+   * ターゲットRTCで更新された状態の種類を分類する列挙型。
+   * 
+   * @else
+   *
+   * @brief A kind of updated status
+   * 
+   * This is a enumeration type to classify updated status in target RTC.
+   *
+   * @endif
+   */
+  enum StatusKind
+  {
+    /*!
+     * @if jp
+     *
+     * @brief コンポーネントプロファイル
+     * 
+     * コンポーネントプロファイル RTC::ComponentProfile が更新されたこ
+     * とを示す列挙型。
+     *
+     * RTC::ComponentProfile のメンバーのうち、instance_name,
+     * type_name, description, version, vendor, category はRTC動作中に
+     * 変更されることはない。これらが変更された場合には、
+     * ComponentObserver::updatestatus() の hint には、それぞれのメンバー
+     * 名が文字列で指定される。また、parent に対する変更は通知されない。
+     * さらに、properties に対する変更は、hint に "<key0>, <key1>,
+     * ..." の形で通知される。
+     *
+     * port_profiles に対する変更は、後述の PORT_PROFILE によって通知さ
+     * れるため、COMPONENT_PROFILE では通知されない。
+     *
+     * @else
+     *
+     * @brief Component profile
+     * 
+     * This is enumeration member to specify that the target
+     * component's RTC::componentProfile has been changed.
+     *
+     * In the member of RTC::ComponentProfile, instance_name,
+     * type_name, description, version, vendor, category are not
+     * modified during RTC running. If these members are changed, each
+     * member's name is specified in the
+     * ComponentObserver::updateStatus() 's hint argument. And,
+     * modification to parent is not notified. In the properties, the
+     * modification is notified as "<key0>, <key1>, ..." in the hint
+     * argument.
+     * 
+     * The modification to port_profiles is not notified as
+     * COMPONENT_PROFILE becauase it is notified as PORT_PROFILE.
+     *
+     * @endif
+     */
+    COMPONENT_PROFILE,
+    /*!
+     * @if jp
+     *
+     * @brief コンポーネントの状態
+     * 
+     * コンポーネントの状態が変化したことを示す列挙子。
+     *
+     * RTCにはECの状態として、INACTIVE_STATE, ACTIVE_STATE,
+     * ERROR_STATE があるが、この状態が変化したことを通知するための列挙
+     * 子。
+     *
+     * ComponentObserver::updatestatus() の hint には、状態と、どの実行
+     * コンテキストで変化があったかを知らせる以下の文字列が hint に引数
+     * として与えられる。
+     *
+     * hint: (INACTIVE, ACTIVE, ERROR):<Execution Context ID>
+     * 例:
+     *   ACTIVE:0 (デフォルトコンテキストでRTCがアクティブになった)
+     *   ERROR:1002 (実行コンテキスト1002でRTCがエラーになった)
+     *
+     * @else
+     *
+     * @brief Component status
+     * 
+     * This is INACTIVE_STATE, ACTIVE_STATE,
+     * ERROR_STATE status, and this enumerator specify a status of RTC changed.
+     *
+     * A status and ExecutionContext's id is specified in the argument of 
+     * ComponentObserver::updateStatus() 's hint.
+     *
+     * hint: (INACTIVE, ACTIVE, ERROR):<Execution Context ID>
+     * Example:
+     *   ACTIVE:0 (RTC is activated in the default ExecuionContext)
+     *   ERROR:1002 (RTC go to ERROR state in the EC of id 1002)
+     *
+     * @endif
+     */
+    RTC_STATUS,
+    /*!
+     * @if jp
+     *
+     * @brief ExecutionContextの状態
+     * 
+     * ExecutionContextの状態が変化したことを示す列挙子。
+     *
+     * RTCにECが attach/detach/rate_change/startup/shutdown されたことを
+     * 示す列挙子。
+     *
+     * ComponentObserver::updatestatus() の hint には、
+     * attach/detach/rate_change/startup/shutdow のいずれが行われたかと、
+     * 対象となるECのidが与えられる。
+     *
+     * hint: (ATTACHED, DETACHED, RATE_CHANGED, STARTUP,
+     *        SHUTDOWN):<Execution Context ID>
+     *
+     * 例:
+     *   ATTACHED:1002 (ECがアタッチされ、そのIDは1002)
+     *
+     * @else
+     *
+     * @brief The stauts of ExecutionContext
+     * 
+     * This is enumerator notifies that ExecutionContext is
+     * attach/detach/rate_change/startup/shutdown.  Attach or detach
+     * operation and target ExecutionContext's id is given in the
+     * argument of ComponentObserver::updateStatus() 's hint.
+     *
+     * hint: (ATTACHED, DETACHED, RATE_CHANGED, STARTUP,
+     *        SHUTDOWN):<Execution Context ID>
+     *
+     * Example:
+     *   ATTACHED:1002 (EC is attached and its ID is 1002)
+     *
+     * @endif
+     */
+    EC_STATUS,
+    /*!
+     * @if jp
+     *
+     * @brief Portの状態
+     * 
+     * Portの状態が変化したことを示す列挙子。Portの追加、削除、接続、切
+     * 断が行われたことを示す。ComponentObserver::updatestatus() の
+     * hint には、いずれかのアクションが行われたかと、対象となるポート
+     * の名前が与えられる。
+     *
+     * hint: (ADD, REMOVE, CONNECT, DISCONNECT):<port name>
+     * 例:
+     *   CONNECT:velocity (velocity ポートで接続が確立された)
+     *
+     * @else
+     *
+     * @brief The stauts of ports
+     * 
+     * This is enumerator which notifies that port is added, removed,
+     * connected and/or disconnected.  Which action is performed and
+     * target port's name is given to the hint argument in
+     * ComponentObserver::updateStatus() operation.
+     *
+     * hint: (ADD, REMOVE, CONNECT, DISCONNECT):<port name>
+     * Example:
+     *   CONNECT:velocity (A connection established in the velocity port)
+     *
+     * @endif
+     */
+    PORT_PROFILE,
+    /*!
+     * @if jp
+     *
+     * @brief Configurationの状態
+     * 
+     * Configurationの状態が変化したことを示す列挙子。Configurationに対
+     * して、コンフィギュレーションパラメータが更新された
+     * (UPDATE_CONFIG_PARAM)、コンフィギュレーションがセット(更新)さ
+     * れた (SET_CONFIG_SET)、コンフィギュレーションセットが追加された
+     * (ADD_CONFIG_SET)、コンフィギュレーションが更新された
+     * (UPDATE_CONFIG_SET)、コンフィギュレーションセットが削除された
+     * (REMOVE_CONFIG_SET)、コンフィギュレーションセットがアクティブに
+     * された (ACTIVATE_CONFIG_SET) といったアクションがあったことが通
+     * 知される。
+     *
+     * - UPDATE_CONFIG_PARAM: <config set name>.<config param name>
+     *   - SDOPackage::Configuration::set_configuration_parameter
+     * - SET_CONFIG_SET: <config set name>
+     *   - SDOPackage::Configuration::set_configuration_set_values
+     * - ADD_CONFIG_SET: <config set name>
+     *   - SDOPackage::Configuration::add_configuration_set
+     * - UPDATE_CONFIG_SET: <config set name>
+     *   - 内部のコンフィグセットを実際の変数に反映する
+     * - REMOVE_CONFIG_SET: <config set name>
+     *   - SDOPackage::Configuration::remove_configuration_set
+     * - ACTIVATE_CONFIG_SET:  <config set name>
+     *   - SDOPackage::Configuration::activate_configuration_set
+     * 
+     * @else
+     *
+     * @brief The stauts of ports
+     * 
+     * This is enumerator which notifies that configuration is
+     * changed.  To the configuration, a configuration parameter has
+     * been updated (UPDATE_CONFIG_PARAM), a configuration-set is set
+     * (SET_CONFIG_SET), a configuration set has been updated
+     * (UPDATE_CONFIG_SET), a configuration set has been added
+     * (ADD_CONFIG_SET) or removed (REMOVE_CONFIG_SET), the active
+     * configuration set has been changed (ACTIVATE_CONFIG_SET), these
+     * actions would be notified.
+     *
+     * - UPDATE_CONFIG_PARAM: <config set name>.<config param name>
+     *   - SDOPackage::Configuration::set_configuration_parameter
+     * - SET_CONFIG_SET: <config set name>
+     *   - SDOPackage::Configuration::set_configuration_set_values
+     * - ADD_CONFIG_SET: <config set name>
+     *   - SDOPackage::Configuration::add_configuration_set
+     * - UPDATE_CONFIG_SET: <config set name>
+     *   - Apply configuration-set values into actual variables.
+     * - REMOVE_CONFIG_SET: <config set name>
+     *   - SDOPackage::Configuration::remove_configuration_set
+     * - ACTIVATE_CONFIG_SET:  <config set name>
+     *   - SDOPackage::Configuration::activate_configuration_set
+     *
+     * @endif
+     */
+    CONFIGURATION,
+    /*!
+     * @if jp
+     *
+     * @brief ハートビートイベント
+     * 
+     * 当該RTCが生存していることをオブザーバー側に通知する列挙子。
+     *
+     * ハートビートを利用するかどうか、およびハートビートの周期は、
+     * ServiceProfile::properties の以下のプロパティによって与えられる。
+     *
+     * heartbeat.enable: YES/NO
+     * heartbeat.interval: x [s]
+     * 
+     * @else
+     *
+     * @brief The stauts of ports
+     * 
+     * This enumerator is heart beat notification.
+     *
+     * Whether if the heart-beat function is used is specified in the
+     * ServiceProfile::properties as the following properties.
+     *
+     * heartbeat.enable: YES/NO
+     * heartbeat.interval: x [s]
+     *
+     * @endif
+     */
+    HEARTBEAT,
+
+    STATUS_KIND_NUM
+  };
+
+  /*!
+   * @if jp
+   *
+   * @interface ComponentObserver
+   * 
+   * RTCの各種状態の更新を知らせるためのオブザーバーオブジェクトのため
+   * のインターフェース。SDO Service として、対象となるRTC/SDOに対して
+   * アタッチされ、RTC/SDO内の状態が変更された場合に、変更された状態の
+   * 種類とヒントを同時に通知する。ツールなどで、ポーリングによらずRTC
+   * の状態の変化を知りたい場合などに利用する。
+   *
+   * 想定している利用方法は以下のとおりである。
+   *
+   * -# SDO::get_configuration() により Configuration オブジェクトを取得
+   * -# Configuration::add_service_profile() によりTool側の
+   *     ComponentObserver を ServiceProfile により RTC に与える。
+   *     ServiceProfile のメンバーは以下のように設定すること
+   *   - id: UUID など一意なIDを設定する。削除時にも必要になるので、Tool
+   *     側ではIDを保持しておかなければならない。
+   *   - interface_type: 当該サービスのIFRのIDを文字列として指定。RTC側で
+   *     はこの文字列により当該サービスオブジェクトを受け入れるか決定す
+   *     るため指定は必須となる。
+   *   - properties: RTC側のサービスの受け入れ側に通知するプロパティを設
+   *     定する。このサービスでは、下記の heartbeat 関連のプロパティを
+   *     指定する。
+   *    - service: SDOService オブジェクトの参照を指定する。
+   * -# RTC側で状態の変化があった場合に update_status() オペレーション
+   *     が StatusKind および hint の文字列とともに呼び出される。Tool側
+   *     では、StatusKind と hint に基づき RTC のある部分の状態が変化し
+   *     たことを知り、必要な処理を行う。
+   * -# 最終的にComponentObserverオブジェクトが不要になった場合には、
+   *     Configuration::remove_service_profile() を id とともに呼び出し
+   *     RTC から削除する。
+   *
+   * <pre>
+   * 
+   *   [RTC]    [Configuration]           [Observer]    [Tool]
+   *     |            |                       |            |
+   *     |            | get_configuration()   |            |
+   *     |<------------------------------------------------|
+   *     |            |                       |            |
+   *     |            | add_service_profile(prof)          |
+   *     |            |<-----------------------------------|
+   *     |            |                       |            |
+   *     |            | update_status(kind, hint)          |
+   *     |----------------------------------->|            |
+   *     |            | update_status(kind, hint)          |
+   *     |----------------------------------->|            |
+   *     |            |       :               |            |
+   *     |            |                       |            |
+   *     |            | remove_service_profile(id)         |
+   *     |            |<-----------------------------------|
+   *     |            |                       |            |
+   *     |            |                       x            x
+   *
+   * </pre>
+   *
+   * なお、ServiceProfile::properties に指定するプロパティとしては、
+   *
+   * - observed_status: ALL or kind of status
+   * - heartbeat.enable: YES/NO
+   * - heartbeat.interval: x [s]
+   * 
+   * がある。
+   * 
+   * - observed_staus: ALL または状態の種類をカンマ区切りで指定
+   *   監視する状態を指定する。指定可能な状態を表す文字列は、
+   *   COMPONENT_PROFILE, RTC_STATUS, EC_STATUS, PORT_PROFILE,
+   *   CONFIGURATION 5種類である。監視したい対象をカンマで区切り複数指
+   *   定することができる。また、すべての状態を監視する場合、ALL を指定
+   *   することができる。指定文字列は大文字、小文字を問わない。
+   *
+   * - heartbeat.interval: 秒単位で数値で指定
+   *   ハートビートを送信する周期を秒単位で指定する。なお、指定した秒数
+   *   でハートビートが必ず送信される保証はない。したがって、RTCが死ん
+   *   だかどうかを確認するには、heartbeat.interval 数回分の時間を待つ
+   *   必要がある。
+   *
+   * - heartbeat.enable: YES または NOで指定
+   *   Tool側では、状態に変化があるまで RTC が生存しているかどうか知る
+   *   ことはできないため、突然RTCが死んだ場合には、これを知ることがで
+   *   きない。そこで、HEART_BEAT イベントを周期的にRTC側から送らせるこ
+   *   とができる。ハートビートを有効にするか否かをこのオプションで指定
+   *   する。
+   * 
+   * 
+   * @else
+   *
+   * @interface ComponentObserver
+   * 
+   * This is an interface to notify various status changed in RTC to
+   * others.  This is attached into a target RTC/SDO as a SDO service,
+   * and if an RTC/SDO's status change, a kind of changed status and
+   * its hints are notified to observers.  For example, it can be used
+   * to notify RTC's status changed without polling in certain tools.
+   *
+   * An assumed usage is as follows.
+   *
+   * -# SDO::get_configuration() is called to get a Configuration object
+   *
+   * -# Configuration::add_service_profile() is called by Tool.
+   *     A ComponentObserver in a ServiceProfile is given to RTC.
+   *     ServiceProfile members should be set as follows.
+   *
+   *    - id: UUID and other unique ID should be specified. Since this ID
+   *      is used when the service is removed, tools should remember
+   *      this ID.
+   *
+   *    - interface_type: IFR ID should be specified here. Since the RTC
+   *      decides if the given SDO service object can be accepted by
+   *      using the interface_type string, this member is mandatory.
+   * 
+   *    - properties: This member specifies properties to be notified to
+   *      RTC side. In this service, the following heartbeat related
+   *      properties should be specified.
+   *
+   *    - service: SDOService object reference should be specified.
+   * 
+   * -# If some changes happen in RTC, the update_status() operation
+   *    is called with StatusKind and hint string. RTC's status change
+   *    is notified to tool and some processes would be performed by
+   *    the tool according to the StatusKind and hint.
+   *
+   * -# Finally, When the ComponentObserver object becomes
+   *     unnecessary, Configuration::remove_service_profile() is called
+   *     with id and it is removed from RTC.
+   *
+   * <pre>
+   * 
+   *   [RTC]    [Configuration]           [Observer]    [Tool]
+   *     |            |                       |            |
+   *     |            | get_configuration()   |            |
+   *     |<------------------------------------------------|
+   *     |            |                       |            |
+   *     |            | add_service_profile(prof)          |
+   *     |            |<-----------------------------------|
+   *     |            |                       |            |
+   *     |            | update_status(kind, hint)          |
+   *     |----------------------------------->|            |
+   *     |            | update_status(kind, hint)          |
+   *     |----------------------------------->|            |
+   *     |            |       :               |            |
+   *     |            |                       |            |
+   *     |            | remove_service_profile(id)         |
+   *     |            |<-----------------------------------|
+   *     |            |                       |            |
+   *     |            |                       x            x
+   *
+   * </pre>
+   *
+   * Properties which is specified in ServiceProfile::properties is as follows.
+   *
+   * - observed_status: ALL or kind of status
+   * - heartbeat.enable: YES/NO
+   * - heartbeat.interval: x [s]
+   * 
+   *
+   * - observed_staus: ALL or comma separated status kinds This
+   *   property specifies kind of status to be observed. Available
+   *   kind of statuses are COMPONENT_PROFILE, RTC_STATUS, EC_STATUS,
+   *   PORT_PROFILE, CONFIGURATION. You can specify comma-separated
+   *   status list to be observed. And if you want to observe all the
+   *   status, you just specify ALL instead of all the status kind
+   *   list. Uppercase, lowercase and mixture are allowed in the
+   *   specified status kind.
+   *
+   * - heartbeat.enable: YES or NO
+   *
+   *   Since tools cannot know whether the RTC is alive or not until
+   *   status change happens, if the RTC suddenly died, the tools
+   *   cannot know it forever. To eliminate this problems, Observer
+   *   object can send periodic heartbeat signals to observers. The
+   *   heartbeat.enable option specifies whether the functionality is
+   *   activated or not.
+   *
+   * - heartbeat.interval: Heartbeat interval should be specified in
+   *   seconds.  This specification does not guarantee that heartbeat
+   *   signals precisely send back to observer. Therefore if you need
+   *   to decide whether an RTC died or not, you have to wait for
+   *   several heartbeat signals.
+   *
+   * @endif
+   */
+  interface ComponentObserver
+    : SDOPackage::SDOService
+  {
+    /*!
+     * @if jp
+     *
+     * @brief 状態が更新されたことを知らせる
+     * 
+     * 状態が更新されたことを知らせるオペレーション。status_kind によっ
+     * て更新された状態の種類、hint によってどのような状態が変更された
+     * かに関するヒントが与えられる。
+     *
+     * @param status_kind: StatusKind 型の状態の種類
+     * @param hint; StatusKind 毎に決まる状態変更に関するヒント
+     *
+     * @else
+     *
+     * @brief Notifies the status updated
+     *
+     * This operation notifies the updated status. The status_kind
+     * notifies kind of updated status, and the hint give some hint
+     * about updated status.
+     *
+     * @endif
+     */
+    oneway void update_status(in StatusKind status_kind, in string hint);
+  };
+
+};

Deleted: trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/ComponentObserverConsumer.py
===================================================================
--- branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/ComponentObserverConsumer.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/ComponentObserverConsumer.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -1,926 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: euc-jp -*-
-
-##
-# @file ComponentObserverConsumer.py
-# @brief Component observer SDO service consumer implementation
-# @date $Date$
-# @author Noriaki Ando <n-ando at aist.go.jp> and Shinji Kurihara
-#
-# Copyright (C) 2011
-#     Noriaki Ando
-#     Intelligent Systems Research Institute,
-#     National Institute of
-#         Advanced Industrial Science and Technology (AIST), Japan
-#     All rights reserved.
-#
-
-import sys
-sys.path.insert(1,".")
-
-import RTC
-import OpenRTM
-import OpenRTM_aist
-
-##
-# @if jp
-# @else
-# @endif
-#
-class ComponentObserverConsumer(OpenRTM_aist.SdoServiceConsumerBase):
-  """
-  """
-
-  ##
-  # @if jp
-  # @brief ctor of ComponentObserverConsumer
-  # @else
-  # @brief ctor of ComponentObserverConsumer
-  # @endif
-  #
-  def __init__(self):
-    self._rtobj = None
-    self._profile = None
-    self._observer = OpenRTM_aist.CorbaConsumer(interfaceType=OpenRTM.ComponentObserver)
-    self._observed = [ False for i in range(OpenRTM.STATUS_KIND_NUM._v)]
-
-    self._compstat = self.CompStatMsg(self)
-    self._portaction = self.PortAction(self)
-    self._ecaction = self.ECAction(self)
-    self._configMsg = self.ConfigAction(self)
-
-    self._interval = OpenRTM_aist.TimeValue(1, 0)
-    self._heartbeat = False
-    self._hblistenerid = None
-
-    # このタイマーはいずれグローバルなタイマにおきかえる
-    self._timer = OpenRTM_aist.Timer(self._interval)
-    return
-
-
-  ##
-  # @if jp
-  # @brief dtor
-  # @else
-  # @brief dtor
-  # @endif
-  #
-  def __del__(self):
-    self.unsetComponentProfileListeners()
-    self.unsetComponentStatusListeners()
-    self.unsetPortProfileListeners()
-    self.unsetExecutionContextListeners()
-    self.unsetConfigurationListeners()
-    self.unsetHeartbeat()
-    del self._timer
-    return
-
-
-  ##
-  # @if jp
-  # @brief 初期化
-  # @else
-  # @brief Initialization
-  # @endif
-  #
-  # virtual bool init(RTObject_impl& rtobj,
-  #                   const SDOPackage::ServiceProfile& profile);
-  def init(self, rtobj, profile):
-    if not self._observer.setObject(profile.service):
-      # narrowing failed
-      return False
-
-    self._rtobj = rtobj
-    self._profile = profile
-    prop = OpenRTM_aist.Properties()
-    OpenRTM_aist.NVUtil.copyToProperties(prop, profile.properties)
-    self.setHeartbeat(prop)
-    self.setListeners(prop)
-    return True
-
-
-  ##
-  # @if jp
-  # @brief 再初期化
-  # @else
-  # @brief Re-initialization
-  # @endif
-  #
-  # virtual bool reinit(const SDOPackage::ServiceProfile& profile);
-  def reinit(self, profile):
-    if not self._observer._ptr()._is_equivalent(profile.service):
-      tmp = OpenRTM_aist.CorbaConsumer(interfaceType=OpenRTM.ComponentObserver)
-      if not tmp.setObject(profile.service):
-        return False
-      self._observer.releaseObject()
-      self._observer.setObject(profile.service)
-
-    self._profile= profile
-    prop = OpenRTM_aist.Properties()
-    OpenRTM_aist.NVUtil.copyToProperties(prop, profile.properties)
-    self.setHeartbeat(prop)
-    self.setListeners(prop)
-    return True
-
-
-  ##
-  # @if jp
-  # @brief ServiceProfile を取得する
-  # @else
-  # @brief getting ServiceProfile
-  # @endif
-  #
-  # virtual const SDOPackage::ServiceProfile& getProfile() const;
-  def getProfile(self):
-    return self._profile
-
-    
-  ##
-  # @if jp
-  # @brief 終了処理
-  # @else
-  # @brief Finalization
-  # @endif
-  #
-  # virtual void finalize();
-  def finalize(self):
-    self.unsetComponentProfileListeners()
-    self.unsetComponentStatusListeners()
-    self.unsetPortProfileListeners()
-    self.unsetExecutionContextListeners()
-    self.unsetConfigurationListeners()
-    self.unsetHeartbeat()
-    return
-
-
-  ##
-  # @if jp
-  # @brief リモートオブジェクトコール
-  # @else
-  # @brief Calling remote object
-  # @endif
-  #
-  # inline void updateStatus(OpenRTM::StatusKind statuskind, const char* msg)
-  def updateStatus(self, statuskind, msg):
-    try:
-      self._observer._ptr().update_status(statuskind, msg)
-    except:
-      self._rtobj.removeSdoServiceConsumer(self._profile.id)
-    return
-
-  ##
-  # @if jp
-  # @brief Kindを文字列へ変換する
-  # @else
-  # @brief Converting kind to string
-  # @endif
-  #
-  # inline const char* toString(OpenRTM::StatusKind kind)
-  def toString(self, kind):
-    kinds = ["COMPONENT_PROFILE",
-             "RTC_STATUS",
-             "EC_STATUS",
-             "PORT_PROFILE",
-             "CONFIGURATION",
-             "HEARTBEAT"]
-    if kind._v < OpenRTM.STATUS_KIND_NUM._v:
-      return kinds[kind._v]
-    return ""
-
-
-  ##
-  # @if jp
-  # @brief RTObjectへのリスナ接続処理
-  # @else
-  # @brief Connectiong listeners to RTObject
-  # @endif
-  #
-  # void setListeners(coil::Properties& prop);
-  def setListeners(self, prop):
-    if not prop.getProperty("observed_status"):
-      prop.setProperty("observed_status", "ALL")
-
-    observed_ = [s.strip() for s in prop.getProperty("observed_status").split(",")]
-    flags_ = [ False for i in range(OpenRTM.STATUS_KIND_NUM._v) ]
-
-    for i in range(len(observed_)):
-      observed_[i] = observed_[i].upper()
-      if observed_[i] == "COMPONENT_PROFILE":
-        flags_[OpenRTM.COMPONENT_PROFILE._v] = True
-      elif observed_[i] == "RTC_STATUS":
-        flags_[OpenRTM.RTC_STATUS._v] = True
-      elif observed_[i] == "EC_STATUS":
-        flags_[OpenRTM.EC_STATUS._v] = True
-      elif observed_[i] == "PORT_PROFILE":
-        flags_[OpenRTM.PORT_PROFILE._v] = True
-      elif observed_[i] == "CONFIGURATION":
-        flags_[OpenRTM.CONFIGURATION._v] = True
-      elif observed_[i] == "ALL":
-        for j in range(OpenRTM.STATUS_KIND_NUM._v):
-          flags_[j] = True
-        break
-  
-    self.switchListeners(flags_[OpenRTM.COMPONENT_PROFILE._v],
-                         self._observed,
-                         OpenRTM.COMPONENT_PROFILE._v,
-                         self.setComponentProfileListeners,
-                         self.unsetComponentProfileListeners)
-
-    self.switchListeners(flags_[OpenRTM.RTC_STATUS._v],
-                         self._observed,
-                         OpenRTM.RTC_STATUS._v,
-                         self.setComponentStatusListeners,
-                         self.unsetComponentStatusListeners)
-
-    self.switchListeners(flags_[OpenRTM.EC_STATUS._v],
-                         self._observed,
-                         OpenRTM.EC_STATUS._v,
-                         self.setExecutionContextListeners,
-                         self.unsetExecutionContextListeners)
-
-    self.switchListeners(flags_[OpenRTM.PORT_PROFILE._v],
-                         self._observed,
-                         OpenRTM.PORT_PROFILE._v,
-                         self.setPortProfileListeners,
-                         self.unsetPortProfileListeners)
-
-    self.switchListeners(flags_[OpenRTM.CONFIGURATION._v],
-                         self._observed,
-                         OpenRTM.CONFIGURATION._v,
-                         self.setConfigurationListeners,
-                         self.unsetConfigurationListeners)
-
-    return
-
-
-  ##
-  # @if jp
-  # @brief リスナ接続・切断スイッチング処理
-  # @else
-  # @brief Switching listeners connecting/disconnecting
-  # @endif
-  #
-  # void switchListeners(bool& next, bool& pre,
-  #                      void (ComponentObserverConsumer::*setfunc)(), 
-  #                      void (ComponentObserverConsumer::*unsetfunc)());
-  def switchListeners(self, next, pre, pre_idx, setfunc, unsetfunc):
-    if (not pre[pre_idx]) and next:
-      setfunc()
-      pre[pre_idx] = True
-    elif pre[pre_idx] and (not next):
-      unsetfunc()
-      pre[pre_idx] = False
-
-    return
-
-
-  #============================================================
-  # Heartbeat related functions
-
-  ##
-  # @if jp
-  # @brief ハートビートをオブザーバに伝える
-  # @else
-  # @brief Sending a heartbeart signal to observer
-  # @endif
-  #
-  # void heartbeat();
-  def heartbeat(self):
-    self.updateStatus(OpenRTM.HEARTBEAT, "")
-    return
-
-
-  ##
-  # @if jp
-  # @brief ハートビートを設定する
-  # @else
-  # @brief Setting heartbeat
-  # @endif
-  #
-  # void setHeartbeat(coil::Properties& prop);
-  def setHeartbeat(self, prop):
-    if OpenRTM_aist.toBool(prop.getProperty("heartbeat.enable"), "YES", "NO", False):
-      interval_ = prop.getProperty("heartbeat.interval")
-      if not interval_:
-        self._interval.set_time(1.0)
-      else:
-        tmp_ = float(interval_)
-        self._interval.set_time(tmp_)
-
-      tm_ = self._interval
-      self._hblistenerid = self._timer.registerListenerObj(self,
-                                                           ComponentObserverConsumer.heartbeat,
-                                                           tm_)
-      if not self._heartbeat:
-        self._timer.start()
-        self._heartbeat = True
-
-    else:
-      if self._heartbeat and self._hblistenerid:
-        self.unsetHeartbeat()
-
-    return
-
-
-  ##
-  # @if jp
-  # @brief ハートビートを解除する
-  # @else
-  # @brief Unsetting heartbeat
-  # @endif
-  #
-  # void unsetHeartbeat();
-  def unsetHeartbeat(self):
-    self._timer.unregisterListener(self._hblistenerid)
-    self._hblistenerid = 0
-    self._timer.stop()
-    self._heartbeat = False
-    return
-
-
-  #============================================================
-  # Component status related functions
-  
-  ##
-  # @if jp
-  # @brief RTC状態変化リスナの設定処理
-  # @else
-  # @brief Setting RTC status listeners
-  # @endif
-  #
-  # void setComponentStatusListeners();
-  def setComponentStatusListeners(self):
-    postclistener_ = OpenRTM_aist.PostComponentActionListenerType
-    if not self._compstat.activatedListener:
-      self._compstat.activatedListener = \
-          self._rtobj.addPostComponentActionListener(postclistener_.POST_ON_ACTIVATED,
-                                                     self._compstat.onActivated)
-    if not self._compstat.deactivatedListener:
-      self._compstat.deactivatedListener = \
-          self._rtobj.addPostComponentActionListener(postclistener_.POST_ON_DEACTIVATED,
-                                                     self._compstat.onDeactivated)
-
-    if not self._compstat.resetListener:
-      self._compstat.resetListener = \
-          self._rtobj.addPostComponentActionListener(postclistener_.POST_ON_RESET,
-                                                     self._compstat.onReset)
-
-    if not self._compstat.abortingListener:
-      self._compstat.abortingListener = \
-          self._rtobj.addPostComponentActionListener(postclistener_.POST_ON_ABORTING,
-                                                     self._compstat.onAborting)
-
-    if not self._compstat.finalizeListener:
-      self._compstat.finalizeListener = \
-          self._rtobj.addPostComponentActionListener(postclistener_.POST_ON_FINALIZE,
-                                                     self._compstat.onFinalize)
-
-    return
-
-  
-  ##
-  # @if jp
-  # @brief RTC状態変化リスナの解除処理
-  # @else
-  # @brief Unsetting RTC status listeners
-  # @endif
-  #
-  # void unsetComponentStatusListeners();
-  def unsetComponentStatusListeners(self):
-    postclistener_ = OpenRTM_aist.PostComponentActionListenerType
-    if self._compstat.activatedListener:
-      self._rtobj.removePostComponentActionListener(postclistener_.POST_ON_ACTIVATED,
-                                                    self._compstat.activatedListener)
-      self._compstat.activatedListener = None
-
-    if self._compstat.deactivatedListener:
-      self._rtobj.removePostComponentActionListener(postclistener_.POST_ON_DEACTIVATED,
-                                                    self._compstat.deactivatedListener)
-      self._compstat.deactivatedListener = None
-
-    if self._compstat.resetListener:
-      self._rtobj.removePostComponentActionListener(postclistener_.POST_ON_RESET,
-                                                    self._compstat.resetListener)
-      self._compstat.resetListener = None
-
-    if self._compstat.abortingListener:
-      self._rtobj.removePostComponentActionListener(postclistener_.POST_ON_ABORTING,
-                                                    self._compstat.abortingListener)
-      self._compstat.abortingListener = None
-
-    if self._compstat.finalizeListener:
-      self._rtobj.removePostComponentActionListener(postclistener_.POST_ON_FINALIZE,
-                                                    self._compstat.finalizeListener)
-      self._compstat.finalizeListener = None
-
-    return
-
-
-  #============================================================
-  # Port profile related functions
-
-  ##
-  # @if jp
-  # @brief Portプロファイル変化リスナの設定処理
-  # @else
-  # @brief Setting port profile listener
-  # @endif
-  #
-  # void setPortProfileListeners();
-  def setPortProfileListeners(self):
-    plistener_ = OpenRTM_aist.PortActionListenerType
-    if not self._portaction.portAddListener:
-      self._portaction.portAddListener = \
-          self._rtobj.addPortActionListener(plistener_.ADD_PORT,
-                                            self._portaction.onAddPort)
-
-    if not self._portaction.portRemoveListener:
-      self._portaction.portRemoveListener = \
-          self._rtobj.addPortActionListener(plistener_.REMOVE_PORT,
-                                            self._portaction.onRemovePort)
-
-    pclistener_ = OpenRTM_aist.PortConnectRetListenerType
-    if not self._portaction.portConnectListener:
-      self._portaction.portConnectListener = \
-          self._rtobj.addPortConnectRetListener(pclistener_.ON_CONNECTED,
-                                                self._portaction.onConnect)
-
-    if not self._portaction.portDisconnectListener:
-      self._portaction.portDisconnectListener = \
-          self._rtobj.addPortConnectRetListener(pclistener_.ON_DISCONNECTED,
-                                                self._portaction.onDisconnect)
-
-    return
-
-  ##
-  # @if jp
-  # @brief Portプロファイル変化リスナの解除処理
-  # @else
-  # @brief Unsetting port profile listener
-  # @endif
-  #
-  # void unsetPortProfileListeners();
-  def unsetPortProfileListeners(self):
-    plistener_ = OpenRTM_aist.PortActionListenerType
-    if self._portaction.portAddListener:
-      self._rtobj.removePortActionListener(plistener_.ADD_PORT,
-                                           self._portaction.portAddListener)
-      self._portaction.portAddListener = None
-
-    if self._portaction.portRemoveListener:
-      self._rtobj.removePortActionListener(plistener_.REMOVE_PORT,
-                                           self._portaction.portRemoveListener)
-      self._portaction.portRemoveListener = None
-
-    pclistener_ = OpenRTM_aist.PortConnectRetListenerType
-    if self._portaction.portConnectListener:
-      self._rtobj.removePortConnectRetListener(pclistener_.ON_CONNECTED,
-                                               self._portaction.portConnectListener)
-      self._portaction.portConnectListener = None
-
-    if self._portaction.portDisconnectListener:
-      self._rtobj.removePortConnectRetListener(pclistener_.ON_DISCONNECTED,
-                                               self._portaction.portDisconnectListener)
-      self._portaction.portDisconnectListener = None
-
-    return
-
-
-  #============================================================
-  # EC profile related functions
-   
-  ##
-  # @if jp
-  # @brief ECの状態変化リスナの設定
-  # @else
-  # @brief Setting EC status listener
-  # @endif
-  #
-  # void setExecutionContextListeners();
-  def setExecutionContextListeners(self):
-    ectype_ = OpenRTM_aist.ExecutionContextActionListenerType
-    if not self._ecaction.ecAttached:
-      self._ecaction.ecAttached = \
-          self._rtobj.addExecutionContextActionListener(ectype_.EC_ATTACHED,
-                                                        self._ecaction.onAttached)
-
-    if not self._ecaction.ecDetached:
-      self._ecaction.ecDetached = \
-          self._rtobj.addExecutionContextActionListener(ectype_.EC_DETACHED,
-                                                        self._ecaction.onDetached)
-
-    pcaltype_ = OpenRTM_aist.PostComponentActionListenerType
-    if not self._ecaction.ecRatechanged:
-      self._ecaction.ecRatechanged = \
-          self._rtobj.addPostComponentActionListener(pcaltype_.POST_ON_RATE_CHANGED,
-                                                     self._ecaction.onRateChanged)
-
-    if not self._ecaction.ecStartup:
-      self._ecaction.ecStartup = \
-          self._rtobj.addPostComponentActionListener(pcaltype_.POST_ON_STARTUP,
-                                                     self._ecaction.onStartup)
-
-    if not self._ecaction.ecShutdown:
-      self._ecaction.ecShutdown = \
-          self._rtobj.addPostComponentActionListener(pcaltype_.POST_ON_SHUTDOWN,
-                                                     self._ecaction.onShutdown)
-
-    return
-
-
-  ##
-  # @if jp
-  # @brief ECの状態変化リスナの解除
-  # @else
-  # @brief Unsetting EC status listener
-  # @endif
-  #
-  # void unsetExecutionContextListeners();
-  def unsetExecutionContextListeners(self):
-    ectype_ = OpenRTM_aist.ExecutionContextActionListenerType
-    if self._ecaction.ecAttached:
-      self._rtobj.removeExecutionContextActionListener(ectype_.EC_ATTACHED,
-                                                       self._ecaction.ecAttached)
-
-    if self._ecaction.ecDetached:
-      self._rtobj.removeExecutionContextActionListener(ectype_.EC_ATTACHED,
-                                                       self._ecaction.ecDetached)
-
-    pcaltype_ = OpenRTM_aist.PostComponentActionListenerType
-    if self._ecaction.ecRatechanged:
-      self._rtobj.removePostComponentActionListener(pcaltype_.POST_ON_RATE_CHANGED,
-                                                    self._ecaction.ecRatechanged)
-
-    if self._ecaction.ecStartup:
-      self._rtobj.removePostComponentActionListener(pcaltype_.POST_ON_STARTUP,
-                                                    self._ecaction.ecStartup)
-
-    if self._ecaction.ecShutdown:
-      self._rtobj.removePostComponentActionListener(pcaltype_.POST_ON_SHUTDOWN,
-                                                    self._ecaction.ecShutdown)
-
-    return
-
-
-  #============================================================
-  # ComponentProfile related functions
-
-  ##
-  # @if jp
-  # @brief ComponentProfile状態変化リスナの設定
-  # @else
-  # @brief Setting ComponentProfile listener
-  # @endif
-  #
-  # void setComponentProfileListeners();
-  def setComponentProfileListeners(self):
-    pass
-
-
-  ##
-  # @if jp
-  # @brief ComponentProfile状態変化リスナの解除
-  # @else
-  # @brief Unsetting ComponentProfile listener
-  # @endif
-  #
-  # void unsetComponentProfileListeners();
-  def unsetComponentProfileListeners(self):
-    pass
-
-
-  #============================================================
-  # Configuration related functions
-
-  ##
-  # @if jp
-  # @brief Configuration状態変化リスナの設定
-  # @else
-  # @brief Setting Configuration listener
-  # @endif
-  #
-  # void setConfigurationListeners();
-  def setConfigurationListeners(self):
-    confprmlistenertype_ = OpenRTM_aist.ConfigurationParamListenerType
-    self._configMsg.updateConfigParamListener = \
-        self._rtobj.addConfigurationParamListener(confprmlistenertype_.ON_UPDATE_CONFIG_PARAM,
-                                                  self._configMsg.updateConfigParam)
-
-    confsetlistenertype_ = OpenRTM_aist.ConfigurationSetListenerType
-    self._configMsg.setConfigSetListener = \
-        self._rtobj.addConfigurationSetListener(confsetlistenertype_.ON_SET_CONFIG_SET,
-                                                self._configMsg.setConfigSet)
-
-    self._configMsg.addConfigSetListener = \
-        self._rtobj.addConfigurationSetListener(confsetlistenertype_.ON_ADD_CONFIG_SET,
-                                                self._configMsg.addConfigSet)
-
-    confsetnamelistenertype_ = OpenRTM_aist.ConfigurationSetNameListenerType
-    self._configMsg.updateConfigSetListener = \
-        self._rtobj.addConfigurationSetNameListener(confsetnamelistenertype_.ON_UPDATE_CONFIG_SET,
-                                                    self._configMsg.updateConfigSet)
-
-    self._configMsg.removeConfigSetListener = \
-        self._rtobj.addConfigurationSetNameListener(confsetnamelistenertype_.ON_REMOVE_CONFIG_SET,
-                                                    self._configMsg.removeConfigSet)
-    self._configMsg.activateConfigSetListener = \
-        self._rtobj.addConfigurationSetNameListener(confsetnamelistenertype_.ON_ACTIVATE_CONFIG_SET,
-                                                    self._configMsg.activateConfigSet)
-    return
-
-
-  ##
-  # @if jp
-  # @brief Configuration状態変化リスナの解除
-  # @else
-  # @brief Unsetting Configurationlistener
-  # @endif
-  #
-  # void unsetConfigurationListeners();
-  def unsetConfigurationListeners(self):
-    confprmlistenertype_ = OpenRTM_aist.ConfigurationParamListenerType
-    if self._configMsg.updateConfigParamListener:
-      self._rtobj.removeConfigurationParamListener(confprmlistenertype_.ON_UPDATE_CONFIG_PARAM,
-                                                   self._configMsg.updateConfigParamListener)
-      self._configMsg.updateConfigParamListener = None
-
-    confsetlistenertype_ = OpenRTM_aist.ConfigurationSetListenerType
-    if self._configMsg.setConfigSetListener:
-      self._rtobj.removeConfigurationSetListener(confsetlistenertype_.ON_SET_CONFIG_SET,
-                                                 self._configMsg.setConfigSetListener)
-      self._configMsg.setConfigSetListener = None
-
-    if self._configMsg.addConfigSetListener:
-      self._rtobj.removeConfigurationSetListener(confsetlistenertype_.ON_ADD_CONFIG_SET,
-                                                 self._configMsg.addConfigSetListener)
-      self._configMsg.addConfigSetListener = None
-
-    confsetnamelistenertype_ = OpenRTM_aist.ConfigurationSetNameListenerType
-    if self._configMsg.updateConfigSetListener:
-      self._rtobj.removeConfigurationSetNameListener(confsetnamelistenertype_.ON_UPDATE_CONFIG_SET,
-                                                     self._configMsg.updateConfigSetListener)
-      self._configMsg.updateConfigSetListener = None
-
-    if self._configMsg.removeConfigSetListener:
-      self._rtobj.removeConfigurationSetNameListener(confsetnamelistenertype_.ON_REMOVE_CONFIG_SET,
-                                                     self._configMsg.removeConfigSetListener)
-      self._configMsg.removeConfigSetListener = None
-
-    if self._configMsg.activateConfigSetListener:
-      self._rtobj.removeConfigurationSetNameListener(confsetnamelistenertype_.ON_ACTIVATE_CONFIG_SET,
-                                                     self._configMsg.activateConfigSetListener)
-      self._configMsg.activateConfigSetListener = None
-
-    return
-
-
-  ##
-  # @if jp
-  # @brief PostComponentActionListener class
-  # @else
-  # @brief PostComponentActionListener class
-  # @endif
-  #
-  class CompStatMsg:
-    """
-    """
-
-    #CompStatMsg(ComponentObserverConsumer& coc)
-    def __init__(self, coc):
-      self.activatedListener = None
-      self.deactivatedListener = None
-      self.resetListener = None
-      self.abortingListener = None
-      self.finalizeListener = None
-      self._coc = coc
-      return
-
-    def __del__(self):
-      del self._coc
-      return
-
-    #void onGeneric(const char* msgprefix, UniqueId ec_id, ReturnCode_t ret)
-    def onGeneric(self, msgprefix, ec_id, ret):
-      if ret == RTC.RTC_OK:
-        msg_ = msgprefix
-        msg_ += str(ec_id)
-        self._coc.updateStatus(OpenRTM.RTC_STATUS, msg_)
-      return
-
-    #void onActivated(UniqueId ec_id, ReturnCode_t ret)
-    def onActivated(self, ec_id, ret):
-      self.onGeneric("ACTIVE:", ec_id, ret)
-      return
-
-    #void onDeactivated(UniqueId ec_id, ReturnCode_t ret)
-    def onDeactivated(self, ec_id, ret):
-      self.onGeneric("INACTIVE:", ec_id, ret)
-      return
-
-    #void onReset(UniqueId ec_id, ReturnCode_t ret)
-    def onReset(self, ec_id, ret):
-      self.onGeneric("INACTIVE:", ec_id, ret)
-      return
-
-    #void onAborting(UniqueId ec_id, ReturnCode_t ret)
-    def onAborting(self, ec_id, ret):
-      self.onGeneric("ERROR:", ec_id, ret)
-      return
-
-    #void onFinalize(UniqueId ec_id, ReturnCode_t ret)
-    def onFinalize(self, ec_id, ret):
-      self.onGeneric("FINALIZE:", ec_id, ret)
-      return
-
-  ##
-  # @if jp
-  # @brief PortActionListener
-  # @else
-  # @brief PortActionListener
-  # @endif
-  #
-  class PortAction:
-    """
-    """
-
-    #PortAction(ComponentObserverConsumer& coc)
-    def __init__(self, coc):
-      self.portAddListener = None
-      self.portRemoveListener = None
-      self.portConnectListener = None
-      self.portDisconnectListener = None
-      self._coc = coc
-      return
-
-    def __del__(self):
-      del self._coc
-      return
-
-    #void onGeneric(const char* _msg, const char* portname)
-    def onGeneric(self, _msg, portname):
-      msg_ = _msg
-      msg_ += portname
-      self._coc.updateStatus(OpenRTM.PORT_PROFILE, msg_)
-      return
-
-    #void onAddPort(const ::RTC::PortProfile& pprof)
-    def onAddPort(self, pprof):
-      self.onGeneric("ADD:", str(pprof.name))
-      return
-
-    #void onRemovePort(const ::RTC::PortProfile& pprof)
-    def onRemovePort(self, pprof):
-      self.onGeneric("REMOVE:", str(pprof.name))
-      return
-
-    #void onConnect(const char* portname,
-    #                 ::RTC::ConnectorProfile& pprof, ReturnCode_t ret)
-    def onConnect(self, portname, pprof, ret):
-      if ret == RTC.RTC_OK:
-        self.onGeneric("CONNECT:", portname)
-      return
-
-    #void onDisconnect(const char* portname,
-    #                  ::RTC::ConnectorProfile& pprof, ReturnCode_t ret)
-    def onDisconnect(self, portname, pprof, ret):
-      if ret == RTC.RTC_OK:
-        self.onGeneric("DISCONNECT:", portname)
-      return
-
-
-  ##
-  # @if jp
-  # @brief ExecutionContextActionListener
-  # @else
-  # @brief ExecutionContextActionListener
-  # @endif
-  #
-  class ECAction:
-    """
-    """
-
-    #ECAction(ComponentObserverConsumer& coc)
-    def __init__(self, coc):
-      self.ecAttached = None
-      self.ecDetached = None
-      self.ecRatechanged = None
-      self.ecStartup = None
-      self.ecShutdown = None
-      self._coc = coc
-      return
-
-    def __del__(self):
-      del self._coc
-      return
-
-    #void onGeneric(const char* _msg, UniqueId ec_id)
-    def onGeneric(self, _msg, ec_id):
-      msg_ = _msg + str(ec_id)
-      self._coc.updateStatus(OpenRTM.EC_STATUS, msg_)
-      return
-
-    #void onAttached(UniqueId ec_id)
-    def onAttached(self, ec_id):
-      self.onGeneric("ATTACHED:", ec_id)
-      return
-
-    #void onDetached(UniqueId ec_id)
-    def onDetached(self, ec_id):
-      self.onGeneric("DETACHED:", ec_id)
-      return
-
-    #void onRateChanged(UniqueId ec_id, ReturnCode_t ret)
-    def onRateChanged(self, ec_id, ret):
-      if ret == RTC.RTC_OK:
-        self.onGeneric("RATE_CHANGED:", ec_id)
-      return
-
-    #void onStartup(UniqueId ec_id, ReturnCode_t ret)
-    def onStartup(self, ec_id, ret):
-      if ret == RTC.RTC_OK:
-        self.onGeneric("STARTUP:", ec_id)
-      return
-
-    #void onShutdown(UniqueId ec_id, ReturnCode_t ret)
-    def onShutdown(self, ec_id, ret):
-      if ret == RTC.RTC_OK:
-        self.onGeneric("SHUTDOWN:", ec_id)
-      return
-
-
-  ##
-  # @if jp
-  # @brief ConfigActionListener
-  # @else
-  # @brief ConfigActionListener
-  # @endif
-  #
-  class ConfigAction:
-    """
-    """
-
-    #ConfigAction(ComponentObserverConsumer& coc)
-    def __init__(self, coc):
-      self.updateConfigParamListener = None
-      self.setConfigSetListener = None
-      self.addConfigSetListener = None
-      self.updateConfigSetListener = None
-      self.removeConfigSetListener = None
-      self.activateConfigSetListener = None
-      self._coc = coc
-
-    def __del__(self):
-      del self._coc
-      return
-
-    #void updateConfigParam(const char* configsetname,
-    #                       const char* configparamname)
-    def updateConfigParam(self, configsetname, configparamname):
-      msg_ = "UPDATE_CONFIG_PARAM: "
-      msg_ += configsetname
-      msg_ += "."
-      msg_ += configparamname
-      self._coc.updateStatus(OpenRTM.CONFIGURATION, msg_)
-      return
-
-    #void setConfigSet(const coil::Properties& config_set)
-    def setConfigSet(self, config_set):
-      msg_ = "SET_CONFIG_SET: "
-      msg_ += config_set.getName()
-      self._coc.updateStatus(OpenRTM.CONFIGURATION, msg_)
-      return
-
-    #void addConfigSet(const coil::Properties& config_set)
-    def addConfigSet(self, config_set):
-      msg_ = "ADD_CONFIG_SET: "
-      msg_ += config_set.getName()
-      self._coc.updateStatus(OpenRTM.CONFIGURATION, msg_)
-      return
-
-    #void updateConfigSet(const char* config_set_name)
-    def updateConfigSet(self, config_set_name):
-      msg_ = "UPDATE_CONFIG_SET: "
-      msg_ += config_set_name
-      self._coc.updateStatus(OpenRTM.CONFIGURATION, msg_)
-      return
-
-    #void removeConfigSet(const char* config_set_name)
-    def removeConfigSet(self, config_set_name):
-      msg_ = "REMOVE_CONFIG_SET: "
-      msg_ += config_set_name
-      self._coc.updateStatus(OpenRTM.CONFIGURATION, msg_)
-      return
-
-    #void activateConfigSet(const char* config_set_name)
-    def activateConfigSet(self, config_set_name):
-      msg_ = "ACTIVATE_CONFIG_SET: "
-      msg_ += config_set_name
-      self._coc.updateStatus(OpenRTM.CONFIGURATION, msg_)
-      return
-
-def ComponentObserverConsumerInit(mgr=None):
-  factory = OpenRTM_aist.SdoServiceConsumerFactory.instance()
-  factory.addFactory(OpenRTM.ComponentObserver._NP_RepositoryId,
-                     ComponentObserverConsumer,
-                     OpenRTM_aist.Delete)
-  return

Copied: trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/ComponentObserverConsumer.py (from rev 478, branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/ComponentObserverConsumer.py)
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/ComponentObserverConsumer.py	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/ComponentObserverConsumer.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,926 @@
+#!/usr/bin/env python
+# -*- coding: euc-jp -*-
+
+##
+# @file ComponentObserverConsumer.py
+# @brief Component observer SDO service consumer implementation
+# @date $Date$
+# @author Noriaki Ando <n-ando at aist.go.jp> and Shinji Kurihara
+#
+# Copyright (C) 2011
+#     Noriaki Ando
+#     Intelligent Systems Research Institute,
+#     National Institute of
+#         Advanced Industrial Science and Technology (AIST), Japan
+#     All rights reserved.
+#
+
+import sys
+sys.path.insert(1,".")
+
+import RTC
+import OpenRTM
+import OpenRTM_aist
+
+##
+# @if jp
+# @else
+# @endif
+#
+class ComponentObserverConsumer(OpenRTM_aist.SdoServiceConsumerBase):
+  """
+  """
+
+  ##
+  # @if jp
+  # @brief ctor of ComponentObserverConsumer
+  # @else
+  # @brief ctor of ComponentObserverConsumer
+  # @endif
+  #
+  def __init__(self):
+    self._rtobj = None
+    self._profile = None
+    self._observer = OpenRTM_aist.CorbaConsumer(interfaceType=OpenRTM.ComponentObserver)
+    self._observed = [ False for i in range(OpenRTM.STATUS_KIND_NUM._v)]
+
+    self._compstat = self.CompStatMsg(self)
+    self._portaction = self.PortAction(self)
+    self._ecaction = self.ECAction(self)
+    self._configMsg = self.ConfigAction(self)
+
+    self._interval = OpenRTM_aist.TimeValue(1, 0)
+    self._heartbeat = False
+    self._hblistenerid = None
+
+    # このタイマーはいずれグローバルなタイマにおきかえる
+    self._timer = OpenRTM_aist.Timer(self._interval)
+    return
+
+
+  ##
+  # @if jp
+  # @brief dtor
+  # @else
+  # @brief dtor
+  # @endif
+  #
+  def __del__(self):
+    self.unsetComponentProfileListeners()
+    self.unsetComponentStatusListeners()
+    self.unsetPortProfileListeners()
+    self.unsetExecutionContextListeners()
+    self.unsetConfigurationListeners()
+    self.unsetHeartbeat()
+    del self._timer
+    return
+
+
+  ##
+  # @if jp
+  # @brief 初期化
+  # @else
+  # @brief Initialization
+  # @endif
+  #
+  # virtual bool init(RTObject_impl& rtobj,
+  #                   const SDOPackage::ServiceProfile& profile);
+  def init(self, rtobj, profile):
+    if not self._observer.setObject(profile.service):
+      # narrowing failed
+      return False
+
+    self._rtobj = rtobj
+    self._profile = profile
+    prop = OpenRTM_aist.Properties()
+    OpenRTM_aist.NVUtil.copyToProperties(prop, profile.properties)
+    self.setHeartbeat(prop)
+    self.setListeners(prop)
+    return True
+
+
+  ##
+  # @if jp
+  # @brief 再初期化
+  # @else
+  # @brief Re-initialization
+  # @endif
+  #
+  # virtual bool reinit(const SDOPackage::ServiceProfile& profile);
+  def reinit(self, profile):
+    if not self._observer._ptr()._is_equivalent(profile.service):
+      tmp = OpenRTM_aist.CorbaConsumer(interfaceType=OpenRTM.ComponentObserver)
+      if not tmp.setObject(profile.service):
+        return False
+      self._observer.releaseObject()
+      self._observer.setObject(profile.service)
+
+    self._profile= profile
+    prop = OpenRTM_aist.Properties()
+    OpenRTM_aist.NVUtil.copyToProperties(prop, profile.properties)
+    self.setHeartbeat(prop)
+    self.setListeners(prop)
+    return True
+
+
+  ##
+  # @if jp
+  # @brief ServiceProfile を取得する
+  # @else
+  # @brief getting ServiceProfile
+  # @endif
+  #
+  # virtual const SDOPackage::ServiceProfile& getProfile() const;
+  def getProfile(self):
+    return self._profile
+
+    
+  ##
+  # @if jp
+  # @brief 終了処理
+  # @else
+  # @brief Finalization
+  # @endif
+  #
+  # virtual void finalize();
+  def finalize(self):
+    self.unsetComponentProfileListeners()
+    self.unsetComponentStatusListeners()
+    self.unsetPortProfileListeners()
+    self.unsetExecutionContextListeners()
+    self.unsetConfigurationListeners()
+    self.unsetHeartbeat()
+    return
+
+
+  ##
+  # @if jp
+  # @brief リモートオブジェクトコール
+  # @else
+  # @brief Calling remote object
+  # @endif
+  #
+  # inline void updateStatus(OpenRTM::StatusKind statuskind, const char* msg)
+  def updateStatus(self, statuskind, msg):
+    try:
+      self._observer._ptr().update_status(statuskind, msg)
+    except:
+      self._rtobj.removeSdoServiceConsumer(self._profile.id)
+    return
+
+  ##
+  # @if jp
+  # @brief Kindを文字列へ変換する
+  # @else
+  # @brief Converting kind to string
+  # @endif
+  #
+  # inline const char* toString(OpenRTM::StatusKind kind)
+  def toString(self, kind):
+    kinds = ["COMPONENT_PROFILE",
+             "RTC_STATUS",
+             "EC_STATUS",
+             "PORT_PROFILE",
+             "CONFIGURATION",
+             "HEARTBEAT"]
+    if kind._v < OpenRTM.STATUS_KIND_NUM._v:
+      return kinds[kind._v]
+    return ""
+
+
+  ##
+  # @if jp
+  # @brief RTObjectへのリスナ接続処理
+  # @else
+  # @brief Connectiong listeners to RTObject
+  # @endif
+  #
+  # void setListeners(coil::Properties& prop);
+  def setListeners(self, prop):
+    if not prop.getProperty("observed_status"):
+      prop.setProperty("observed_status", "ALL")
+
+    observed_ = [s.strip() for s in prop.getProperty("observed_status").split(",")]
+    flags_ = [ False for i in range(OpenRTM.STATUS_KIND_NUM._v) ]
+
+    for i in range(len(observed_)):
+      observed_[i] = observed_[i].upper()
+      if observed_[i] == "COMPONENT_PROFILE":
+        flags_[OpenRTM.COMPONENT_PROFILE._v] = True
+      elif observed_[i] == "RTC_STATUS":
+        flags_[OpenRTM.RTC_STATUS._v] = True
+      elif observed_[i] == "EC_STATUS":
+        flags_[OpenRTM.EC_STATUS._v] = True
+      elif observed_[i] == "PORT_PROFILE":
+        flags_[OpenRTM.PORT_PROFILE._v] = True
+      elif observed_[i] == "CONFIGURATION":
+        flags_[OpenRTM.CONFIGURATION._v] = True
+      elif observed_[i] == "ALL":
+        for j in range(OpenRTM.STATUS_KIND_NUM._v):
+          flags_[j] = True
+        break
+  
+    self.switchListeners(flags_[OpenRTM.COMPONENT_PROFILE._v],
+                         self._observed,
+                         OpenRTM.COMPONENT_PROFILE._v,
+                         self.setComponentProfileListeners,
+                         self.unsetComponentProfileListeners)
+
+    self.switchListeners(flags_[OpenRTM.RTC_STATUS._v],
+                         self._observed,
+                         OpenRTM.RTC_STATUS._v,
+                         self.setComponentStatusListeners,
+                         self.unsetComponentStatusListeners)
+
+    self.switchListeners(flags_[OpenRTM.EC_STATUS._v],
+                         self._observed,
+                         OpenRTM.EC_STATUS._v,
+                         self.setExecutionContextListeners,
+                         self.unsetExecutionContextListeners)
+
+    self.switchListeners(flags_[OpenRTM.PORT_PROFILE._v],
+                         self._observed,
+                         OpenRTM.PORT_PROFILE._v,
+                         self.setPortProfileListeners,
+                         self.unsetPortProfileListeners)
+
+    self.switchListeners(flags_[OpenRTM.CONFIGURATION._v],
+                         self._observed,
+                         OpenRTM.CONFIGURATION._v,
+                         self.setConfigurationListeners,
+                         self.unsetConfigurationListeners)
+
+    return
+
+
+  ##
+  # @if jp
+  # @brief リスナ接続・切断スイッチング処理
+  # @else
+  # @brief Switching listeners connecting/disconnecting
+  # @endif
+  #
+  # void switchListeners(bool& next, bool& pre,
+  #                      void (ComponentObserverConsumer::*setfunc)(), 
+  #                      void (ComponentObserverConsumer::*unsetfunc)());
+  def switchListeners(self, next, pre, pre_idx, setfunc, unsetfunc):
+    if (not pre[pre_idx]) and next:
+      setfunc()
+      pre[pre_idx] = True
+    elif pre[pre_idx] and (not next):
+      unsetfunc()
+      pre[pre_idx] = False
+
+    return
+
+
+  #============================================================
+  # Heartbeat related functions
+
+  ##
+  # @if jp
+  # @brief ハートビートをオブザーバに伝える
+  # @else
+  # @brief Sending a heartbeart signal to observer
+  # @endif
+  #
+  # void heartbeat();
+  def heartbeat(self):
+    self.updateStatus(OpenRTM.HEARTBEAT, "")
+    return
+
+
+  ##
+  # @if jp
+  # @brief ハートビートを設定する
+  # @else
+  # @brief Setting heartbeat
+  # @endif
+  #
+  # void setHeartbeat(coil::Properties& prop);
+  def setHeartbeat(self, prop):
+    if OpenRTM_aist.toBool(prop.getProperty("heartbeat.enable"), "YES", "NO", False):
+      interval_ = prop.getProperty("heartbeat.interval")
+      if not interval_:
+        self._interval.set_time(1.0)
+      else:
+        tmp_ = float(interval_)
+        self._interval.set_time(tmp_)
+
+      tm_ = self._interval
+      self._hblistenerid = self._timer.registerListenerObj(self,
+                                                           ComponentObserverConsumer.heartbeat,
+                                                           tm_)
+      if not self._heartbeat:
+        self._timer.start()
+        self._heartbeat = True
+
+    else:
+      if self._heartbeat and self._hblistenerid:
+        self.unsetHeartbeat()
+
+    return
+
+
+  ##
+  # @if jp
+  # @brief ハートビートを解除する
+  # @else
+  # @brief Unsetting heartbeat
+  # @endif
+  #
+  # void unsetHeartbeat();
+  def unsetHeartbeat(self):
+    self._timer.unregisterListener(self._hblistenerid)
+    self._hblistenerid = 0
+    self._timer.stop()
+    self._heartbeat = False
+    return
+
+
+  #============================================================
+  # Component status related functions
+  
+  ##
+  # @if jp
+  # @brief RTC状態変化リスナの設定処理
+  # @else
+  # @brief Setting RTC status listeners
+  # @endif
+  #
+  # void setComponentStatusListeners();
+  def setComponentStatusListeners(self):
+    postclistener_ = OpenRTM_aist.PostComponentActionListenerType
+    if not self._compstat.activatedListener:
+      self._compstat.activatedListener = \
+          self._rtobj.addPostComponentActionListener(postclistener_.POST_ON_ACTIVATED,
+                                                     self._compstat.onActivated)
+    if not self._compstat.deactivatedListener:
+      self._compstat.deactivatedListener = \
+          self._rtobj.addPostComponentActionListener(postclistener_.POST_ON_DEACTIVATED,
+                                                     self._compstat.onDeactivated)
+
+    if not self._compstat.resetListener:
+      self._compstat.resetListener = \
+          self._rtobj.addPostComponentActionListener(postclistener_.POST_ON_RESET,
+                                                     self._compstat.onReset)
+
+    if not self._compstat.abortingListener:
+      self._compstat.abortingListener = \
+          self._rtobj.addPostComponentActionListener(postclistener_.POST_ON_ABORTING,
+                                                     self._compstat.onAborting)
+
+    if not self._compstat.finalizeListener:
+      self._compstat.finalizeListener = \
+          self._rtobj.addPostComponentActionListener(postclistener_.POST_ON_FINALIZE,
+                                                     self._compstat.onFinalize)
+
+    return
+
+  
+  ##
+  # @if jp
+  # @brief RTC状態変化リスナの解除処理
+  # @else
+  # @brief Unsetting RTC status listeners
+  # @endif
+  #
+  # void unsetComponentStatusListeners();
+  def unsetComponentStatusListeners(self):
+    postclistener_ = OpenRTM_aist.PostComponentActionListenerType
+    if self._compstat.activatedListener:
+      self._rtobj.removePostComponentActionListener(postclistener_.POST_ON_ACTIVATED,
+                                                    self._compstat.activatedListener)
+      self._compstat.activatedListener = None
+
+    if self._compstat.deactivatedListener:
+      self._rtobj.removePostComponentActionListener(postclistener_.POST_ON_DEACTIVATED,
+                                                    self._compstat.deactivatedListener)
+      self._compstat.deactivatedListener = None
+
+    if self._compstat.resetListener:
+      self._rtobj.removePostComponentActionListener(postclistener_.POST_ON_RESET,
+                                                    self._compstat.resetListener)
+      self._compstat.resetListener = None
+
+    if self._compstat.abortingListener:
+      self._rtobj.removePostComponentActionListener(postclistener_.POST_ON_ABORTING,
+                                                    self._compstat.abortingListener)
+      self._compstat.abortingListener = None
+
+    if self._compstat.finalizeListener:
+      self._rtobj.removePostComponentActionListener(postclistener_.POST_ON_FINALIZE,
+                                                    self._compstat.finalizeListener)
+      self._compstat.finalizeListener = None
+
+    return
+
+
+  #============================================================
+  # Port profile related functions
+
+  ##
+  # @if jp
+  # @brief Portプロファイル変化リスナの設定処理
+  # @else
+  # @brief Setting port profile listener
+  # @endif
+  #
+  # void setPortProfileListeners();
+  def setPortProfileListeners(self):
+    plistener_ = OpenRTM_aist.PortActionListenerType
+    if not self._portaction.portAddListener:
+      self._portaction.portAddListener = \
+          self._rtobj.addPortActionListener(plistener_.ADD_PORT,
+                                            self._portaction.onAddPort)
+
+    if not self._portaction.portRemoveListener:
+      self._portaction.portRemoveListener = \
+          self._rtobj.addPortActionListener(plistener_.REMOVE_PORT,
+                                            self._portaction.onRemovePort)
+
+    pclistener_ = OpenRTM_aist.PortConnectRetListenerType
+    if not self._portaction.portConnectListener:
+      self._portaction.portConnectListener = \
+          self._rtobj.addPortConnectRetListener(pclistener_.ON_CONNECTED,
+                                                self._portaction.onConnect)
+
+    if not self._portaction.portDisconnectListener:
+      self._portaction.portDisconnectListener = \
+          self._rtobj.addPortConnectRetListener(pclistener_.ON_DISCONNECTED,
+                                                self._portaction.onDisconnect)
+
+    return
+
+  ##
+  # @if jp
+  # @brief Portプロファイル変化リスナの解除処理
+  # @else
+  # @brief Unsetting port profile listener
+  # @endif
+  #
+  # void unsetPortProfileListeners();
+  def unsetPortProfileListeners(self):
+    plistener_ = OpenRTM_aist.PortActionListenerType
+    if self._portaction.portAddListener:
+      self._rtobj.removePortActionListener(plistener_.ADD_PORT,
+                                           self._portaction.portAddListener)
+      self._portaction.portAddListener = None
+
+    if self._portaction.portRemoveListener:
+      self._rtobj.removePortActionListener(plistener_.REMOVE_PORT,
+                                           self._portaction.portRemoveListener)
+      self._portaction.portRemoveListener = None
+
+    pclistener_ = OpenRTM_aist.PortConnectRetListenerType
+    if self._portaction.portConnectListener:
+      self._rtobj.removePortConnectRetListener(pclistener_.ON_CONNECTED,
+                                               self._portaction.portConnectListener)
+      self._portaction.portConnectListener = None
+
+    if self._portaction.portDisconnectListener:
+      self._rtobj.removePortConnectRetListener(pclistener_.ON_DISCONNECTED,
+                                               self._portaction.portDisconnectListener)
+      self._portaction.portDisconnectListener = None
+
+    return
+
+
+  #============================================================
+  # EC profile related functions
+   
+  ##
+  # @if jp
+  # @brief ECの状態変化リスナの設定
+  # @else
+  # @brief Setting EC status listener
+  # @endif
+  #
+  # void setExecutionContextListeners();
+  def setExecutionContextListeners(self):
+    ectype_ = OpenRTM_aist.ExecutionContextActionListenerType
+    if not self._ecaction.ecAttached:
+      self._ecaction.ecAttached = \
+          self._rtobj.addExecutionContextActionListener(ectype_.EC_ATTACHED,
+                                                        self._ecaction.onAttached)
+
+    if not self._ecaction.ecDetached:
+      self._ecaction.ecDetached = \
+          self._rtobj.addExecutionContextActionListener(ectype_.EC_DETACHED,
+                                                        self._ecaction.onDetached)
+
+    pcaltype_ = OpenRTM_aist.PostComponentActionListenerType
+    if not self._ecaction.ecRatechanged:
+      self._ecaction.ecRatechanged = \
+          self._rtobj.addPostComponentActionListener(pcaltype_.POST_ON_RATE_CHANGED,
+                                                     self._ecaction.onRateChanged)
+
+    if not self._ecaction.ecStartup:
+      self._ecaction.ecStartup = \
+          self._rtobj.addPostComponentActionListener(pcaltype_.POST_ON_STARTUP,
+                                                     self._ecaction.onStartup)
+
+    if not self._ecaction.ecShutdown:
+      self._ecaction.ecShutdown = \
+          self._rtobj.addPostComponentActionListener(pcaltype_.POST_ON_SHUTDOWN,
+                                                     self._ecaction.onShutdown)
+
+    return
+
+
+  ##
+  # @if jp
+  # @brief ECの状態変化リスナの解除
+  # @else
+  # @brief Unsetting EC status listener
+  # @endif
+  #
+  # void unsetExecutionContextListeners();
+  def unsetExecutionContextListeners(self):
+    ectype_ = OpenRTM_aist.ExecutionContextActionListenerType
+    if self._ecaction.ecAttached:
+      self._rtobj.removeExecutionContextActionListener(ectype_.EC_ATTACHED,
+                                                       self._ecaction.ecAttached)
+
+    if self._ecaction.ecDetached:
+      self._rtobj.removeExecutionContextActionListener(ectype_.EC_ATTACHED,
+                                                       self._ecaction.ecDetached)
+
+    pcaltype_ = OpenRTM_aist.PostComponentActionListenerType
+    if self._ecaction.ecRatechanged:
+      self._rtobj.removePostComponentActionListener(pcaltype_.POST_ON_RATE_CHANGED,
+                                                    self._ecaction.ecRatechanged)
+
+    if self._ecaction.ecStartup:
+      self._rtobj.removePostComponentActionListener(pcaltype_.POST_ON_STARTUP,
+                                                    self._ecaction.ecStartup)
+
+    if self._ecaction.ecShutdown:
+      self._rtobj.removePostComponentActionListener(pcaltype_.POST_ON_SHUTDOWN,
+                                                    self._ecaction.ecShutdown)
+
+    return
+
+
+  #============================================================
+  # ComponentProfile related functions
+
+  ##
+  # @if jp
+  # @brief ComponentProfile状態変化リスナの設定
+  # @else
+  # @brief Setting ComponentProfile listener
+  # @endif
+  #
+  # void setComponentProfileListeners();
+  def setComponentProfileListeners(self):
+    pass
+
+
+  ##
+  # @if jp
+  # @brief ComponentProfile状態変化リスナの解除
+  # @else
+  # @brief Unsetting ComponentProfile listener
+  # @endif
+  #
+  # void unsetComponentProfileListeners();
+  def unsetComponentProfileListeners(self):
+    pass
+
+
+  #============================================================
+  # Configuration related functions
+
+  ##
+  # @if jp
+  # @brief Configuration状態変化リスナの設定
+  # @else
+  # @brief Setting Configuration listener
+  # @endif
+  #
+  # void setConfigurationListeners();
+  def setConfigurationListeners(self):
+    confprmlistenertype_ = OpenRTM_aist.ConfigurationParamListenerType
+    self._configMsg.updateConfigParamListener = \
+        self._rtobj.addConfigurationParamListener(confprmlistenertype_.ON_UPDATE_CONFIG_PARAM,
+                                                  self._configMsg.updateConfigParam)
+
+    confsetlistenertype_ = OpenRTM_aist.ConfigurationSetListenerType
+    self._configMsg.setConfigSetListener = \
+        self._rtobj.addConfigurationSetListener(confsetlistenertype_.ON_SET_CONFIG_SET,
+                                                self._configMsg.setConfigSet)
+
+    self._configMsg.addConfigSetListener = \
+        self._rtobj.addConfigurationSetListener(confsetlistenertype_.ON_ADD_CONFIG_SET,
+                                                self._configMsg.addConfigSet)
+
+    confsetnamelistenertype_ = OpenRTM_aist.ConfigurationSetNameListenerType
+    self._configMsg.updateConfigSetListener = \
+        self._rtobj.addConfigurationSetNameListener(confsetnamelistenertype_.ON_UPDATE_CONFIG_SET,
+                                                    self._configMsg.updateConfigSet)
+
+    self._configMsg.removeConfigSetListener = \
+        self._rtobj.addConfigurationSetNameListener(confsetnamelistenertype_.ON_REMOVE_CONFIG_SET,
+                                                    self._configMsg.removeConfigSet)
+    self._configMsg.activateConfigSetListener = \
+        self._rtobj.addConfigurationSetNameListener(confsetnamelistenertype_.ON_ACTIVATE_CONFIG_SET,
+                                                    self._configMsg.activateConfigSet)
+    return
+
+
+  ##
+  # @if jp
+  # @brief Configuration状態変化リスナの解除
+  # @else
+  # @brief Unsetting Configurationlistener
+  # @endif
+  #
+  # void unsetConfigurationListeners();
+  def unsetConfigurationListeners(self):
+    confprmlistenertype_ = OpenRTM_aist.ConfigurationParamListenerType
+    if self._configMsg.updateConfigParamListener:
+      self._rtobj.removeConfigurationParamListener(confprmlistenertype_.ON_UPDATE_CONFIG_PARAM,
+                                                   self._configMsg.updateConfigParamListener)
+      self._configMsg.updateConfigParamListener = None
+
+    confsetlistenertype_ = OpenRTM_aist.ConfigurationSetListenerType
+    if self._configMsg.setConfigSetListener:
+      self._rtobj.removeConfigurationSetListener(confsetlistenertype_.ON_SET_CONFIG_SET,
+                                                 self._configMsg.setConfigSetListener)
+      self._configMsg.setConfigSetListener = None
+
+    if self._configMsg.addConfigSetListener:
+      self._rtobj.removeConfigurationSetListener(confsetlistenertype_.ON_ADD_CONFIG_SET,
+                                                 self._configMsg.addConfigSetListener)
+      self._configMsg.addConfigSetListener = None
+
+    confsetnamelistenertype_ = OpenRTM_aist.ConfigurationSetNameListenerType
+    if self._configMsg.updateConfigSetListener:
+      self._rtobj.removeConfigurationSetNameListener(confsetnamelistenertype_.ON_UPDATE_CONFIG_SET,
+                                                     self._configMsg.updateConfigSetListener)
+      self._configMsg.updateConfigSetListener = None
+
+    if self._configMsg.removeConfigSetListener:
+      self._rtobj.removeConfigurationSetNameListener(confsetnamelistenertype_.ON_REMOVE_CONFIG_SET,
+                                                     self._configMsg.removeConfigSetListener)
+      self._configMsg.removeConfigSetListener = None
+
+    if self._configMsg.activateConfigSetListener:
+      self._rtobj.removeConfigurationSetNameListener(confsetnamelistenertype_.ON_ACTIVATE_CONFIG_SET,
+                                                     self._configMsg.activateConfigSetListener)
+      self._configMsg.activateConfigSetListener = None
+
+    return
+
+
+  ##
+  # @if jp
+  # @brief PostComponentActionListener class
+  # @else
+  # @brief PostComponentActionListener class
+  # @endif
+  #
+  class CompStatMsg:
+    """
+    """
+
+    #CompStatMsg(ComponentObserverConsumer& coc)
+    def __init__(self, coc):
+      self.activatedListener = None
+      self.deactivatedListener = None
+      self.resetListener = None
+      self.abortingListener = None
+      self.finalizeListener = None
+      self._coc = coc
+      return
+
+    def __del__(self):
+      del self._coc
+      return
+
+    #void onGeneric(const char* msgprefix, UniqueId ec_id, ReturnCode_t ret)
+    def onGeneric(self, msgprefix, ec_id, ret):
+      if ret == RTC.RTC_OK:
+        msg_ = msgprefix
+        msg_ += str(ec_id)
+        self._coc.updateStatus(OpenRTM.RTC_STATUS, msg_)
+      return
+
+    #void onActivated(UniqueId ec_id, ReturnCode_t ret)
+    def onActivated(self, ec_id, ret):
+      self.onGeneric("ACTIVE:", ec_id, ret)
+      return
+
+    #void onDeactivated(UniqueId ec_id, ReturnCode_t ret)
+    def onDeactivated(self, ec_id, ret):
+      self.onGeneric("INACTIVE:", ec_id, ret)
+      return
+
+    #void onReset(UniqueId ec_id, ReturnCode_t ret)
+    def onReset(self, ec_id, ret):
+      self.onGeneric("INACTIVE:", ec_id, ret)
+      return
+
+    #void onAborting(UniqueId ec_id, ReturnCode_t ret)
+    def onAborting(self, ec_id, ret):
+      self.onGeneric("ERROR:", ec_id, ret)
+      return
+
+    #void onFinalize(UniqueId ec_id, ReturnCode_t ret)
+    def onFinalize(self, ec_id, ret):
+      self.onGeneric("FINALIZE:", ec_id, ret)
+      return
+
+  ##
+  # @if jp
+  # @brief PortActionListener
+  # @else
+  # @brief PortActionListener
+  # @endif
+  #
+  class PortAction:
+    """
+    """
+
+    #PortAction(ComponentObserverConsumer& coc)
+    def __init__(self, coc):
+      self.portAddListener = None
+      self.portRemoveListener = None
+      self.portConnectListener = None
+      self.portDisconnectListener = None
+      self._coc = coc
+      return
+
+    def __del__(self):
+      del self._coc
+      return
+
+    #void onGeneric(const char* _msg, const char* portname)
+    def onGeneric(self, _msg, portname):
+      msg_ = _msg
+      msg_ += portname
+      self._coc.updateStatus(OpenRTM.PORT_PROFILE, msg_)
+      return
+
+    #void onAddPort(const ::RTC::PortProfile& pprof)
+    def onAddPort(self, pprof):
+      self.onGeneric("ADD:", str(pprof.name))
+      return
+
+    #void onRemovePort(const ::RTC::PortProfile& pprof)
+    def onRemovePort(self, pprof):
+      self.onGeneric("REMOVE:", str(pprof.name))
+      return
+
+    #void onConnect(const char* portname,
+    #                 ::RTC::ConnectorProfile& pprof, ReturnCode_t ret)
+    def onConnect(self, portname, pprof, ret):
+      if ret == RTC.RTC_OK:
+        self.onGeneric("CONNECT:", portname)
+      return
+
+    #void onDisconnect(const char* portname,
+    #                  ::RTC::ConnectorProfile& pprof, ReturnCode_t ret)
+    def onDisconnect(self, portname, pprof, ret):
+      if ret == RTC.RTC_OK:
+        self.onGeneric("DISCONNECT:", portname)
+      return
+
+
+  ##
+  # @if jp
+  # @brief ExecutionContextActionListener
+  # @else
+  # @brief ExecutionContextActionListener
+  # @endif
+  #
+  class ECAction:
+    """
+    """
+
+    #ECAction(ComponentObserverConsumer& coc)
+    def __init__(self, coc):
+      self.ecAttached = None
+      self.ecDetached = None
+      self.ecRatechanged = None
+      self.ecStartup = None
+      self.ecShutdown = None
+      self._coc = coc
+      return
+
+    def __del__(self):
+      del self._coc
+      return
+
+    #void onGeneric(const char* _msg, UniqueId ec_id)
+    def onGeneric(self, _msg, ec_id):
+      msg_ = _msg + str(ec_id)
+      self._coc.updateStatus(OpenRTM.EC_STATUS, msg_)
+      return
+
+    #void onAttached(UniqueId ec_id)
+    def onAttached(self, ec_id):
+      self.onGeneric("ATTACHED:", ec_id)
+      return
+
+    #void onDetached(UniqueId ec_id)
+    def onDetached(self, ec_id):
+      self.onGeneric("DETACHED:", ec_id)
+      return
+
+    #void onRateChanged(UniqueId ec_id, ReturnCode_t ret)
+    def onRateChanged(self, ec_id, ret):
+      if ret == RTC.RTC_OK:
+        self.onGeneric("RATE_CHANGED:", ec_id)
+      return
+
+    #void onStartup(UniqueId ec_id, ReturnCode_t ret)
+    def onStartup(self, ec_id, ret):
+      if ret == RTC.RTC_OK:
+        self.onGeneric("STARTUP:", ec_id)
+      return
+
+    #void onShutdown(UniqueId ec_id, ReturnCode_t ret)
+    def onShutdown(self, ec_id, ret):
+      if ret == RTC.RTC_OK:
+        self.onGeneric("SHUTDOWN:", ec_id)
+      return
+
+
+  ##
+  # @if jp
+  # @brief ConfigActionListener
+  # @else
+  # @brief ConfigActionListener
+  # @endif
+  #
+  class ConfigAction:
+    """
+    """
+
+    #ConfigAction(ComponentObserverConsumer& coc)
+    def __init__(self, coc):
+      self.updateConfigParamListener = None
+      self.setConfigSetListener = None
+      self.addConfigSetListener = None
+      self.updateConfigSetListener = None
+      self.removeConfigSetListener = None
+      self.activateConfigSetListener = None
+      self._coc = coc
+
+    def __del__(self):
+      del self._coc
+      return
+
+    #void updateConfigParam(const char* configsetname,
+    #                       const char* configparamname)
+    def updateConfigParam(self, configsetname, configparamname):
+      msg_ = "UPDATE_CONFIG_PARAM: "
+      msg_ += configsetname
+      msg_ += "."
+      msg_ += configparamname
+      self._coc.updateStatus(OpenRTM.CONFIGURATION, msg_)
+      return
+
+    #void setConfigSet(const coil::Properties& config_set)
+    def setConfigSet(self, config_set):
+      msg_ = "SET_CONFIG_SET: "
+      msg_ += config_set.getName()
+      self._coc.updateStatus(OpenRTM.CONFIGURATION, msg_)
+      return
+
+    #void addConfigSet(const coil::Properties& config_set)
+    def addConfigSet(self, config_set):
+      msg_ = "ADD_CONFIG_SET: "
+      msg_ += config_set.getName()
+      self._coc.updateStatus(OpenRTM.CONFIGURATION, msg_)
+      return
+
+    #void updateConfigSet(const char* config_set_name)
+    def updateConfigSet(self, config_set_name):
+      msg_ = "UPDATE_CONFIG_SET: "
+      msg_ += config_set_name
+      self._coc.updateStatus(OpenRTM.CONFIGURATION, msg_)
+      return
+
+    #void removeConfigSet(const char* config_set_name)
+    def removeConfigSet(self, config_set_name):
+      msg_ = "REMOVE_CONFIG_SET: "
+      msg_ += config_set_name
+      self._coc.updateStatus(OpenRTM.CONFIGURATION, msg_)
+      return
+
+    #void activateConfigSet(const char* config_set_name)
+    def activateConfigSet(self, config_set_name):
+      msg_ = "ACTIVATE_CONFIG_SET: "
+      msg_ += config_set_name
+      self._coc.updateStatus(OpenRTM.CONFIGURATION, msg_)
+      return
+
+def ComponentObserverConsumerInit(mgr=None):
+  factory = OpenRTM_aist.SdoServiceConsumerFactory.instance()
+  factory.addFactory(OpenRTM.ComponentObserver._NP_RepositoryId,
+                     ComponentObserverConsumer,
+                     OpenRTM_aist.Delete)
+  return

Deleted: trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/__init__.py
===================================================================
--- branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/__init__.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/__init__.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -1 +0,0 @@
-# Empty file

Copied: trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/__init__.py (from rev 478, branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/__init__.py)
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/__init__.py	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/__init__.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1 @@
+# Empty file

Deleted: trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/doxygen_idlref.conf
===================================================================
--- branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/doxygen_idlref.conf	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/doxygen_idlref.conf	2011-09-21 07:57:38 UTC (rev 479)
@@ -1,1122 +0,0 @@
-# Doxyfile 1.3.6
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project
-#
-# All text after a hash (#) is considered a comment and will be ignored
-# The format is:
-#       TAG = value [value, ...]
-# For lists items can also be appended using:
-#       TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (" ")
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-DOXYFILE_ENCODING      = EUC-JP
-INPUT_ENCODING         = EUC-JP
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded 
-# by quotes) that should identify the project.
-
-PROJECT_NAME           = ComponentObserver
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number. 
-# This could be handy for archiving the generated documentation or 
-# if some version control system is used.
-
-PROJECT_NUMBER         = 1.0.0
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
-# base path where the generated documentation will be put. 
-# If a relative path is entered, it will be relative to the location 
-# where doxygen was started. If left blank the current directory will be used.
-
-OUTPUT_DIRECTORY       = doc
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all 
-# documentation generated by doxygen is written. Doxygen will use this 
-# information to generate all constant output in the proper language. 
-# The default language is English, other supported languages are: 
-# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, 
-# Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en 
-# (Japanese with English messages), Korean, Korean-en, Norwegian, Polish, Portuguese, 
-# Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian.
-
-OUTPUT_LANGUAGE        = Japanese
-
-# This tag can be used to specify the encoding used in the generated output. 
-# The encoding is not always determined by the language that is chosen, 
-# but also whether or not the output is meant for Windows or non-Windows users. 
-# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES 
-# forces the Windows encoding (this is the default for the Windows binary), 
-# whereas setting the tag to NO uses a Unix-style encoding (the default for 
-# all platforms other than Windows).
-
-USE_WINDOWS_ENCODING   = NO
-
-# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 
-# include brief member descriptions after the members that are listed in 
-# the file and class documentation (similar to JavaDoc). 
-# Set to NO to disable this.
-
-BRIEF_MEMBER_DESC      = YES
-
-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 
-# the brief description of a member or function before the detailed description. 
-# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 
-# brief descriptions will be completely suppressed.
-
-REPEAT_BRIEF           = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator 
-# that is used to form the text in various listings. Each string 
-# in this list, if found as the leading text of the brief description, will be 
-# stripped from the text and the result after processing the whole list, is used 
-# as the annotated text. Otherwise, the brief description is used as-is. If left 
-# blank, the following values are used ("$name" is automatically replaced with the 
-# name of the entity): "The $name class" "The $name widget" "The $name file" 
-# "is" "provides" "specifies" "contains" "represents" "a" "an" "the"
-
-ABBREVIATE_BRIEF       = 
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 
-# Doxygen will generate a detailed section even if there is only a brief 
-# description.
-
-ALWAYS_DETAILED_SEC    = NO
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited 
-# members of a class in the documentation of that class as if those members were 
-# ordinary class members. Constructors, destructors and assignment operators of 
-# the base classes will not be shown.
-
-INLINE_INHERITED_MEMB  = YES
-
-# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 
-# path before files name in the file list and in the header files. If set 
-# to NO the shortest path that makes the file name unique will be used.
-
-FULL_PATH_NAMES        = NO
-
-# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 
-# can be used to strip a user-defined part of the path. Stripping is 
-# only done if one of the specified strings matches the left-hand part of 
-# the path. It is allowed to use relative paths in the argument list. 
-# If left blank the directory from which doxygen is run is used as the 
-# path to strip.
-
-STRIP_FROM_PATH        = 
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 
-# (but less readable) file names. This can be useful is your file systems 
-# doesn't support long names like on DOS, Mac, or CD-ROM.
-
-SHORT_NAMES            = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 
-# will interpret the first line (until the first dot) of a JavaDoc-style 
-# comment as the brief description. If set to NO, the JavaDoc 
-# comments will behave just like the Qt-style comments (thus requiring an 
-# explicit @brief command for a brief description.
-
-JAVADOC_AUTOBRIEF      = NO
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 
-# treat a multi-line C++ special comment block (i.e. a block of //! or /// 
-# comments) as a brief description. This used to be the default behaviour. 
-# The new default is to treat a multi-line C++ comment block as a detailed 
-# description. Set this tag to YES if you prefer the old behaviour instead.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the DETAILS_AT_TOP tag is set to YES then Doxygen 
-# will output the detailed description near the top, like JavaDoc.
-# If set to NO, the detailed description appears after the member 
-# documentation.
-
-DETAILS_AT_TOP         = NO
-
-# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 
-# member inherits the documentation from any documented member that it 
-# re-implements.
-
-INHERIT_DOCS           = YES
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 
-# tag is set to YES, then doxygen will reuse the documentation of the first 
-# member in the group (if any) for the other members of the group. By default 
-# all members of a group must be documented explicitly.
-
-DISTRIBUTE_GROUP_DOC   = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab. 
-# Doxygen uses this value to replace tabs by spaces in code fragments.
-
-TAB_SIZE               = 8
-
-# This tag can be used to specify a number of aliases that acts 
-# as commands in the documentation. An alias has the form "name=value". 
-# For example adding "sideeffect=\par Side Effects:\n" will allow you to 
-# put the command \sideeffect (or @sideeffect) in the documentation, which 
-# will result in a user-defined paragraph with heading "Side Effects:". 
-# You can put \n's in the value part of an alias to insert newlines.
-
-ALIASES                = "english=@if en" \
-                         end_eng=@endif \
-                         "japanese=@if ja" \
-                         end_ja=@endif
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources 
-# only. Doxygen will then generate output that is more tailored for C. 
-# For instance, some of the names that are used will be different. The list 
-# of all members will be omitted, etc.
-
-OPTIMIZE_OUTPUT_FOR_C  = NO
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources 
-# only. Doxygen will then generate output that is more tailored for Java. 
-# For instance, namespaces will be presented as packages, qualified scopes 
-# will look different, etc.
-
-OPTIMIZE_OUTPUT_JAVA   = NO
-
-# Set the SUBGROUPING tag to YES (the default) to allow class member groups of 
-# the same type (for instance a group of public functions) to be put as a 
-# subgroup of that type (e.g. under the Public Functions section). Set it to 
-# NO to prevent subgrouping. Alternatively, this can be done per class using 
-# the \nosubgrouping command.
-
-SUBGROUPING            = YES
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 
-# documentation are documented, even if no documentation was available. 
-# Private class members and static file members will be hidden unless 
-# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
-
-EXTRACT_ALL            = YES
-
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 
-# will be included in the documentation.
-
-EXTRACT_PRIVATE        = NO
-
-# If the EXTRACT_STATIC tag is set to YES all static members of a file 
-# will be included in the documentation.
-
-EXTRACT_STATIC         = YES
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 
-# defined locally in source files will be included in the documentation. 
-# If set to NO only classes defined in header files are included.
-
-EXTRACT_LOCAL_CLASSES  = YES
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 
-# undocumented members of documented classes, files or namespaces. 
-# If set to NO (the default) these members will be included in the 
-# various overviews, but no documentation section is generated. 
-# This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_MEMBERS     = NO
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 
-# undocumented classes that are normally visible in the class hierarchy. 
-# If set to NO (the default) these classes will be included in the various 
-# overviews. This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_CLASSES     = NO
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 
-# friend (class|struct|union) declarations. 
-# If set to NO (the default) these declarations will be included in the 
-# documentation.
-
-HIDE_FRIEND_COMPOUNDS  = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 
-# documentation blocks found inside the body of a function. 
-# If set to NO (the default) these blocks will be appended to the 
-# function's detailed documentation block.
-
-HIDE_IN_BODY_DOCS      = NO
-
-# The INTERNAL_DOCS tag determines if documentation 
-# that is typed after a \internal command is included. If the tag is set 
-# to NO (the default) then the documentation will be excluded. 
-# Set it to YES to include the internal documentation.
-
-INTERNAL_DOCS          = NO
-
-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 
-# file names in lower-case letters. If set to YES upper-case letters are also 
-# allowed. This is useful if you have classes or files whose names only differ 
-# in case and if your file system supports case sensitive file names. Windows 
-# users are advised to set this option to NO.
-
-CASE_SENSE_NAMES       = YES
-
-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 
-# will show members with their full class and namespace scopes in the 
-# documentation. If set to YES the scope will be hidden.
-
-HIDE_SCOPE_NAMES       = NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 
-# will put a list of the files that are included by a file in the documentation 
-# of that file.
-
-SHOW_INCLUDE_FILES     = YES
-
-# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 
-# is inserted in the documentation for inline members.
-
-INLINE_INFO            = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 
-# will sort the (detailed) documentation of file and class members 
-# alphabetically by member name. If set to NO the members will appear in 
-# declaration order.
-
-SORT_MEMBER_DOCS       = YES
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the 
-# brief documentation of file, namespace and class members alphabetically 
-# by member name. If set to NO (the default) the members will appear in 
-# declaration order.
-
-SORT_BRIEF_DOCS        = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be 
-# sorted by fully-qualified names, including namespaces. If set to 
-# NO (the default), the class list will be sorted only by class name, 
-# not including the namespace part. 
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the 
-# alphabetical list.
-
-SORT_BY_SCOPE_NAME     = NO
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or 
-# disable (NO) the todo list. This list is created by putting \todo 
-# commands in the documentation.
-
-GENERATE_TODOLIST      = YES
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or 
-# disable (NO) the test list. This list is created by putting \test 
-# commands in the documentation.
-
-GENERATE_TESTLIST      = YES
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or 
-# disable (NO) the bug list. This list is created by putting \bug 
-# commands in the documentation.
-
-GENERATE_BUGLIST       = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 
-# disable (NO) the deprecated list. This list is created by putting 
-# \deprecated commands in the documentation.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional 
-# documentation sections, marked by \if sectionname ... \endif.
-
-ENABLED_SECTIONS       = jp
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines 
-# the initial value of a variable or define consists of for it to appear in 
-# the documentation. If the initializer consists of more lines than specified 
-# here it will be hidden. Use a value of 0 to hide initializers completely. 
-# The appearance of the initializer of individual variables and defines in the 
-# documentation can be controlled using \showinitializer or \hideinitializer 
-# command in the documentation regardless of this setting.
-
-MAX_INITIALIZER_LINES  = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated 
-# at the bottom of the documentation of classes and structs. If set to YES the 
-# list will mention the files that were used to generate the documentation.
-
-SHOW_USED_FILES        = YES
-
-#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated 
-# by doxygen. Possible values are YES and NO. If left blank NO is used.
-
-QUIET                  = NO
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are 
-# generated by doxygen. Possible values are YES and NO. If left blank 
-# NO is used.
-
-WARNINGS               = YES
-
-# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
-# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
-# automatically be disabled.
-
-WARN_IF_UNDOCUMENTED   = YES
-
-# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
-# potential errors in the documentation, such as not documenting some 
-# parameters in a documented function, or documenting parameters that 
-# don't exist or using markup commands wrongly.
-
-WARN_IF_DOC_ERROR      = YES
-
-# The WARN_FORMAT tag determines the format of the warning messages that 
-# doxygen can produce. The string should contain the $file, $line, and $text 
-# tags, which will be replaced by the file and line number from which the 
-# warning originated and the warning text.
-
-WARN_FORMAT            = "$file:$line: $text"
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning 
-# and error messages should be written. If left blank the output is written 
-# to stderr.
-
-WARN_LOGFILE           = 
-
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag can be used to specify the files and/or directories that contain 
-# documented source files. You may enter file names like "myfile.cpp" or 
-# directories like "/usr/src/myproject". Separate the files or directories 
-# with spaces.
-
-INPUT                  = ./
-
-# If the value of the INPUT tag contains directories, you can use the 
-# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
-# and *.h) to filter out the source-files in the directories. If left 
-# blank the following patterns are tested: 
-# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp 
-# *.h++ *.idl *.odl *.cs *.php *.php3 *.inc
-
-FILE_PATTERNS          = ComponentObserver.idl
-
-# The RECURSIVE tag can be used to turn specify whether or not subdirectories 
-# should be searched for input files as well. Possible values are YES and NO. 
-# If left blank NO is used.
-
-RECURSIVE              = NO
-
-# The EXCLUDE tag can be used to specify files and/or directories that should 
-# excluded from the INPUT source files. This way you can easily exclude a 
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-
-EXCLUDE                = 
-
-# The EXCLUDE_SYMLINKS tag can be used select whether or not files or directories 
-# that are symbolic links (a Unix filesystem feature) are excluded from the input.
-
-EXCLUDE_SYMLINKS       = NO
-
-# If the value of the INPUT tag contains directories, you can use the 
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
-# certain files from those directories.
-
-EXCLUDE_PATTERNS       = 
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or 
-# directories that contain example code fragments that are included (see 
-# the \include command).
-
-EXAMPLE_PATH           = 
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the 
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
-# and *.h) to filter out the source-files in the directories. If left 
-# blank all files are included.
-
-EXAMPLE_PATTERNS       = 
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 
-# searched for input files to be used with the \include or \dontinclude 
-# commands irrespective of the value of the RECURSIVE tag. 
-# Possible values are YES and NO. If left blank NO is used.
-
-EXAMPLE_RECURSIVE      = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or 
-# directories that contain image that are included in the documentation (see 
-# the \image command).
-
-IMAGE_PATH             = 
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should 
-# invoke to filter for each input file. Doxygen will invoke the filter program 
-# by executing (via popen()) the command <filter> <input-file>, where <filter> 
-# is the value of the INPUT_FILTER tag, and <input-file> is the name of an 
-# input file. Doxygen will then use the output that the filter program writes 
-# to standard output.
-
-INPUT_FILTER           = 
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 
-# INPUT_FILTER) will be used to filter the input files when producing source 
-# files to browse (i.e. when SOURCE_BROWSER is set to YES).
-
-FILTER_SOURCE_FILES    = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
-# be generated. Documented entities will be cross-referenced with these sources. 
-# Note: To get rid of all source code in the generated output, make sure also 
-# VERBATIM_HEADERS is set to NO.
-
-SOURCE_BROWSER         = NO
-
-# Setting the INLINE_SOURCES tag to YES will include the body 
-# of functions and classes directly in the documentation.
-
-INLINE_SOURCES         = NO
-
-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
-# doxygen to hide any special comment blocks from generated source code 
-# fragments. Normal C and C++ comments will always remain visible.
-
-STRIP_CODE_COMMENTS    = YES
-
-# If the REFERENCED_BY_RELATION tag is set to YES (the default) 
-# then for each documented function all documented 
-# functions referencing it will be listed.
-
-REFERENCED_BY_RELATION = YES
-
-# If the REFERENCES_RELATION tag is set to YES (the default) 
-# then for each documented function all documented entities 
-# called/used by that function will be listed.
-
-REFERENCES_RELATION    = YES
-
-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
-# will generate a verbatim copy of the header file for each class for 
-# which an include is specified. Set to NO to disable this.
-
-VERBATIM_HEADERS       = YES
-
-#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
-# of all compounds will be generated. Enable this if the project 
-# contains a lot of classes, structs, unions or interfaces.
-
-ALPHABETICAL_INDEX     = NO
-
-# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 
-# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 
-# in which this list will be split (can be a number in the range [1..20])
-
-COLS_IN_ALPHA_INDEX    = 5
-
-# In case all classes in a project start with a common prefix, all 
-# classes will be put under the same header in the alphabetical index. 
-# The IGNORE_PREFIX tag can be used to specify one or more prefixes that 
-# should be ignored while generating the index headers.
-
-IGNORE_PREFIX          = 
-
-#---------------------------------------------------------------------------
-# configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
-# generate HTML output.
-
-GENERATE_HTML          = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `html' will be used as the default path.
-
-HTML_OUTPUT            = html
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
-# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
-# doxygen will generate files with .html extension.
-
-HTML_FILE_EXTENSION    = .html
-
-# The HTML_HEADER tag can be used to specify a personal HTML header for 
-# each generated HTML page. If it is left blank doxygen will generate a 
-# standard header.
-
-HTML_HEADER            = 
-
-# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
-# each generated HTML page. If it is left blank doxygen will generate a 
-# standard footer.
-
-HTML_FOOTER            = 
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
-# style sheet that is used by each HTML page. It can be used to 
-# fine-tune the look of the HTML output. If the tag is left blank doxygen 
-# will generate a default style sheet. Note that doxygen will try to copy 
-# the style sheet file to the HTML output directory, so don't put your own 
-# stylesheet in the HTML output directory as well, or it will be erased!
-
-HTML_STYLESHEET        = 
-
-# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
-# files or namespaces will be aligned in HTML using tables. If set to 
-# NO a bullet list will be used.
-
-HTML_ALIGN_MEMBERS     = YES
-
-# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
-# will be generated that can be used as input for tools like the 
-# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) 
-# of the generated HTML documentation.
-
-GENERATE_HTMLHELP      = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
-# be used to specify the file name of the resulting .chm file. You 
-# can add a path in front of the file if the result should not be 
-# written to the html output directory.
-
-CHM_FILE               = 
-
-# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
-# be used to specify the location (absolute path including file name) of 
-# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
-# the HTML help compiler on the generated index.hhp.
-
-HHC_LOCATION           = 
-
-# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
-# controls if a separate .chi index file is generated (YES) or that 
-# it should be included in the master .chm file (NO).
-
-GENERATE_CHI           = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
-# controls whether a binary table of contents is generated (YES) or a 
-# normal table of contents (NO) in the .chm file.
-
-BINARY_TOC             = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members 
-# to the contents of the HTML help documentation and to the tree view.
-
-TOC_EXPAND             = NO
-
-# The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
-# top of each HTML page. The value NO (the default) enables the index and 
-# the value YES disables it.
-
-DISABLE_INDEX          = NO
-
-# This tag can be used to set the number of enum values (range [1..20]) 
-# that doxygen will group on one line in the generated HTML documentation.
-
-ENUM_VALUES_PER_LINE   = 4
-
-# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
-# generated containing a tree-like index structure (just like the one that 
-# is generated for HTML Help). For this to work a browser that supports 
-# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
-# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
-# probably better off using the HTML help feature.
-
-GENERATE_TREEVIEW      = NO
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
-# used to set the initial width (in pixels) of the frame in which the tree 
-# is shown.
-
-TREEVIEW_WIDTH         = 250
-
-#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
-# generate Latex output.
-
-GENERATE_LATEX         = YES
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `latex' will be used as the default path.
-
-LATEX_OUTPUT           = platex
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
-# invoked. If left blank `latex' will be used as the default command name.
-
-LATEX_CMD_NAME         = platex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
-# generate index for LaTeX. If left blank `makeindex' will be used as the 
-# default command name.
-
-MAKEINDEX_CMD_NAME     = makeindex
-
-# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
-# LaTeX documents. This may be useful for small projects and may help to 
-# save some trees in general.
-
-COMPACT_LATEX          = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used 
-# by the printer. Possible values are: a4, a4wide, letter, legal and 
-# executive. If left blank a4wide will be used.
-
-PAPER_TYPE             = a4wide
-
-# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
-# packages that should be included in the LaTeX output.
-
-EXTRA_PACKAGES         = 
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
-# the generated latex document. The header should contain everything until 
-# the first chapter. If it is left blank doxygen will generate a 
-# standard header. Notice: only use this tag if you know what you are doing!
-
-LATEX_HEADER           = 
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
-# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
-# contain links (just like the HTML output) instead of page references 
-# This makes the output suitable for online browsing using a pdf viewer.
-
-PDF_HYPERLINKS         = NO
-
-# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
-# plain latex in the generated Makefile. Set this option to YES to get a 
-# higher quality PDF documentation.
-
-USE_PDFLATEX           = NO
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
-# command to the generated LaTeX files. This will instruct LaTeX to keep 
-# running if errors occur, instead of asking the user for help. 
-# This option is also used when generating formulas in HTML.
-
-LATEX_BATCHMODE        = NO
-
-# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
-# include the index chapters (such as File Index, Compound Index, etc.) 
-# in the output.
-
-LATEX_HIDE_INDICES     = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the RTF output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
-# The RTF output is optimized for Word 97 and may not look very pretty with 
-# other RTF readers or editors.
-
-GENERATE_RTF           = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `rtf' will be used as the default path.
-
-RTF_OUTPUT             = rtf
-
-# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
-# RTF documents. This may be useful for small projects and may help to 
-# save some trees in general.
-
-COMPACT_RTF            = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
-# will contain hyperlink fields. The RTF file will 
-# contain links (just like the HTML output) instead of page references. 
-# This makes the output suitable for online browsing using WORD or other 
-# programs which support those fields. 
-# Note: wordpad (write) and others do not support links.
-
-RTF_HYPERLINKS         = NO
-
-# Load stylesheet definitions from file. Syntax is similar to doxygen's 
-# config file, i.e. a series of assignments. You only have to provide 
-# replacements, missing definitions are set to their default value.
-
-RTF_STYLESHEET_FILE    = 
-
-# Set optional variables used in the generation of an rtf document. 
-# Syntax is similar to doxygen's config file.
-
-RTF_EXTENSIONS_FILE    = 
-
-#---------------------------------------------------------------------------
-# configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
-# generate man pages
-
-GENERATE_MAN           = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `man' will be used as the default path.
-
-MAN_OUTPUT             = man
-
-# The MAN_EXTENSION tag determines the extension that is added to 
-# the generated man pages (default is the subroutine's section .3)
-
-MAN_EXTENSION          = .3
-
-# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
-# then it will generate one additional man file for each entity 
-# documented in the real man page(s). These additional files 
-# only source the real man page, but without them the man command 
-# would be unable to find the correct page. The default is NO.
-
-MAN_LINKS              = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the XML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES Doxygen will 
-# generate an XML file that captures the structure of 
-# the code including all documentation.
-
-GENERATE_XML           = NO
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `xml' will be used as the default path.
-
-XML_OUTPUT             = xml
-
-# The XML_SCHEMA tag can be used to specify an XML schema, 
-# which can be used by a validating XML parser to check the 
-# syntax of the XML files.
-
-XML_SCHEMA             = 
-
-# The XML_DTD tag can be used to specify an XML DTD, 
-# which can be used by a validating XML parser to check the 
-# syntax of the XML files.
-
-XML_DTD                = 
-
-# If the XML_PROGRAMLISTING tag is set to YES Doxygen will 
-# dump the program listings (including syntax highlighting 
-# and cross-referencing information) to the XML output. Note that 
-# enabling this will significantly increase the size of the XML output.
-
-XML_PROGRAMLISTING     = YES
-
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
-# generate an AutoGen Definitions (see autogen.sf.net) file 
-# that captures the structure of the code including all 
-# documentation. Note that this feature is still experimental 
-# and incomplete at the moment.
-
-GENERATE_AUTOGEN_DEF   = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
-# generate a Perl module file that captures the structure of 
-# the code including all documentation. Note that this 
-# feature is still experimental and incomplete at the 
-# moment.
-
-GENERATE_PERLMOD       = NO
-
-# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
-# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
-# to generate PDF and DVI output from the Perl module output.
-
-PERLMOD_LATEX          = NO
-
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
-# nicely formatted so it can be parsed by a human reader.  This is useful 
-# if you want to understand what is going on.  On the other hand, if this 
-# tag is set to NO the size of the Perl module output will be much smaller 
-# and Perl will parse it just the same.
-
-PERLMOD_PRETTY         = YES
-
-# The names of the make variables in the generated doxyrules.make file 
-# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
-# This is useful so different doxyrules.make files included by the same 
-# Makefile don't overwrite each other's variables.
-
-PERLMOD_MAKEVAR_PREFIX = 
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor   
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
-# evaluate all C-preprocessor directives found in the sources and include 
-# files.
-
-ENABLE_PREPROCESSING   = YES
-
-# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
-# names in the source code. If set to NO (the default) only conditional 
-# compilation will be performed. Macro expansion can be done in a controlled 
-# way by setting EXPAND_ONLY_PREDEF to YES.
-
-MACRO_EXPANSION        = NO
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
-# then the macro expansion is limited to the macros specified with the 
-# PREDEFINED and EXPAND_AS_PREDEFINED tags.
-
-EXPAND_ONLY_PREDEF     = NO
-
-# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
-# in the INCLUDE_PATH (see below) will be search if a #include is found.
-
-SEARCH_INCLUDES        = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that 
-# contain include files that are not input files but should be processed by 
-# the preprocessor.
-
-INCLUDE_PATH           = 
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
-# patterns (like *.h and *.hpp) to filter out the header-files in the 
-# directories. If left blank, the patterns specified with FILE_PATTERNS will 
-# be used.
-
-INCLUDE_FILE_PATTERNS  = 
-
-# The PREDEFINED tag can be used to specify one or more macro names that 
-# are defined before the preprocessor is started (similar to the -D option of 
-# gcc). The argument of the tag is a list of macros of the form: name 
-# or name=definition (no spaces). If the definition and the = are 
-# omitted =1 is assumed.
-
-PREDEFINED             = 
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
-# this tag can be used to specify a list of macro names that should be expanded. 
-# The macro definition that is found in the sources will be used. 
-# Use the PREDEFINED tag if you want to use a different macro definition.
-
-EXPAND_AS_DEFINED      = 
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
-# doxygen's preprocessor will remove all function-like macros that are alone 
-# on a line, have an all uppercase name, and do not end with a semicolon. Such 
-# function macros are typically used for boiler-plate code, and will confuse the 
-# parser if not removed.
-
-SKIP_FUNCTION_MACROS   = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to external references   
-#---------------------------------------------------------------------------
-
-# The TAGFILES option can be used to specify one or more tagfiles. 
-# Optionally an initial location of the external documentation 
-# can be added for each tagfile. The format of a tag file without 
-# this location is as follows: 
-#   TAGFILES = file1 file2 ... 
-# Adding location for the tag files is done as follows: 
-#   TAGFILES = file1=loc1 "file2 = loc2" ... 
-# where "loc1" and "loc2" can be relative or absolute paths or 
-# URLs. If a location is present for each tag, the installdox tool 
-# does not have to be run to correct the links.
-# Note that each tag file must have a unique name
-# (where the name does NOT include the path)
-# If a tag file is not located in the directory in which doxygen 
-# is run, you must also specify the path to the tagfile here.
-
-TAGFILES               = 
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
-# a tag file that is based on the input files it reads.
-
-GENERATE_TAGFILE       = 
-
-# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
-# in the class index. If set to NO only the inherited external classes 
-# will be listed.
-
-ALLEXTERNALS           = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
-# in the modules index. If set to NO, only the current project's groups will 
-# be listed.
-
-EXTERNAL_GROUPS        = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script 
-# interpreter (i.e. the result of `which perl').
-
-PERL_PATH              = /usr/bin/perl
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool   
-#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
-# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base or 
-# super classes. Setting the tag to NO turns the diagrams off. Note that this 
-# option is superseded by the HAVE_DOT option below. This is only a fallback. It is 
-# recommended to install and use dot, since it yields more powerful graphs.
-
-CLASS_DIAGRAMS         = YES
-
-# If set to YES, the inheritance and collaboration graphs will hide 
-# inheritance and usage relations if the target is undocumented 
-# or is not a class.
-
-HIDE_UNDOC_RELATIONS   = YES
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
-# available from the path. This tool is part of Graphviz, a graph visualization 
-# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
-# have no effect if this option is set to NO (the default)
-
-HAVE_DOT               = NO
-
-# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
-# will generate a graph for each documented class showing the direct and 
-# indirect inheritance relations. Setting this tag to YES will force the 
-# the CLASS_DIAGRAMS tag to NO.
-
-CLASS_GRAPH            = YES
-
-# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
-# will generate a graph for each documented class showing the direct and 
-# indirect implementation dependencies (inheritance, containment, and 
-# class references variables) of the class with other documented classes.
-
-COLLABORATION_GRAPH    = YES
-
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
-# collaboration diagrams in a style similar to the OMG's Unified Modeling 
-# Language.
-
-UML_LOOK               = NO
-
-# If set to YES, the inheritance and collaboration graphs will show the 
-# relations between templates and their instances.
-
-TEMPLATE_RELATIONS     = YES
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
-# tags are set to YES then doxygen will generate a graph for each documented 
-# file showing the direct and indirect include dependencies of the file with 
-# other documented files.
-
-INCLUDE_GRAPH          = YES
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
-# HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
-# documented header file showing the documented files that directly or 
-# indirectly include this file.
-
-INCLUDED_BY_GRAPH      = YES
-
-# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will 
-# generate a call dependency graph for every global function or class method. 
-# Note that enabling this option will significantly increase the time of a run. 
-# So in most cases it will be better to enable call graphs for selected 
-# functions only using the \callgraph command.
-
-CALL_GRAPH             = NO
-
-# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
-# will graphical hierarchy of all classes instead of a textual one.
-
-GRAPHICAL_HIERARCHY    = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
-# generated by dot. Possible values are png, jpg, or gif
-# If left blank png will be used.
-
-DOT_IMAGE_FORMAT       = png
-
-# The tag DOT_PATH can be used to specify the path where the dot tool can be 
-# found. If left blank, it is assumed the dot tool can be found on the path.
-
-DOT_PATH               = 
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that 
-# contain dot files that are included in the documentation (see the 
-# \dotfile command).
-
-DOTFILE_DIRS           = 
-
-# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width 
-# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
-# this value, doxygen will try to truncate the graph, so that it fits within 
-# the specified constraint. Beware that most browsers cannot cope with very 
-# large images.
-
-MAX_DOT_GRAPH_WIDTH    = 1024
-
-# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height 
-# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
-# this value, doxygen will try to truncate the graph, so that it fits within 
-# the specified constraint. Beware that most browsers cannot cope with very 
-# large images.
-
-MAX_DOT_GRAPH_HEIGHT   = 1024
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the 
-# graphs generated by dot. A depth value of 3 means that only nodes reachable 
-# from the root by following a path via at most 3 edges will be shown. Nodes that 
-# lay further from the root node will be omitted. Note that setting this option to 
-# 1 or 2 may greatly reduce the computation time needed for large code bases. Also 
-# note that a graph may be further truncated if the graph's image dimensions are 
-# not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH and MAX_DOT_GRAPH_HEIGHT). 
-# If 0 is used for the depth value (the default), the graph is not depth-constrained.
-
-MAX_DOT_GRAPH_DEPTH    = 0
-
-# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
-# generate a legend page explaining the meaning of the various boxes and 
-# arrows in the dot generated graphs.
-
-GENERATE_LEGEND        = YES
-
-# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
-# remove the intermediate dot files that are used to generate 
-# the various graphs.
-
-DOT_CLEANUP            = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to the search engine   
-#---------------------------------------------------------------------------
-
-# The SEARCHENGINE tag specifies whether or not a search engine should be 
-# used. If set to NO the values of all tags below this one will be ignored.
-
-SEARCHENGINE           = NO

Copied: trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/doxygen_idlref.conf (from rev 478, branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/doxygen_idlref.conf)
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/doxygen_idlref.conf	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/doxygen_idlref.conf	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,1122 @@
+# Doxyfile 1.3.6
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+#       TAG = value [value, ...]
+# For lists items can also be appended using:
+#       TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+DOXYFILE_ENCODING      = EUC-JP
+INPUT_ENCODING         = EUC-JP
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded 
+# by quotes) that should identify the project.
+
+PROJECT_NAME           = ComponentObserver
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number. 
+# This could be handy for archiving the generated documentation or 
+# if some version control system is used.
+
+PROJECT_NUMBER         = 1.0.0
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
+# base path where the generated documentation will be put. 
+# If a relative path is entered, it will be relative to the location 
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY       = doc
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all 
+# documentation generated by doxygen is written. Doxygen will use this 
+# information to generate all constant output in the proper language. 
+# The default language is English, other supported languages are: 
+# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, 
+# Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en 
+# (Japanese with English messages), Korean, Korean-en, Norwegian, Polish, Portuguese, 
+# Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian.
+
+OUTPUT_LANGUAGE        = Japanese
+
+# This tag can be used to specify the encoding used in the generated output. 
+# The encoding is not always determined by the language that is chosen, 
+# but also whether or not the output is meant for Windows or non-Windows users. 
+# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES 
+# forces the Windows encoding (this is the default for the Windows binary), 
+# whereas setting the tag to NO uses a Unix-style encoding (the default for 
+# all platforms other than Windows).
+
+USE_WINDOWS_ENCODING   = NO
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 
+# include brief member descriptions after the members that are listed in 
+# the file and class documentation (similar to JavaDoc). 
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC      = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 
+# the brief description of a member or function before the detailed description. 
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF           = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator 
+# that is used to form the text in various listings. Each string 
+# in this list, if found as the leading text of the brief description, will be 
+# stripped from the text and the result after processing the whole list, is used 
+# as the annotated text. Otherwise, the brief description is used as-is. If left 
+# blank, the following values are used ("$name" is automatically replaced with the 
+# name of the entity): "The $name class" "The $name widget" "The $name file" 
+# "is" "provides" "specifies" "contains" "represents" "a" "an" "the"
+
+ABBREVIATE_BRIEF       = 
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 
+# Doxygen will generate a detailed section even if there is only a brief 
+# description.
+
+ALWAYS_DETAILED_SEC    = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited 
+# members of a class in the documentation of that class as if those members were 
+# ordinary class members. Constructors, destructors and assignment operators of 
+# the base classes will not be shown.
+
+INLINE_INHERITED_MEMB  = YES
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 
+# path before files name in the file list and in the header files. If set 
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES        = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 
+# can be used to strip a user-defined part of the path. Stripping is 
+# only done if one of the specified strings matches the left-hand part of 
+# the path. It is allowed to use relative paths in the argument list. 
+# If left blank the directory from which doxygen is run is used as the 
+# path to strip.
+
+STRIP_FROM_PATH        = 
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 
+# (but less readable) file names. This can be useful is your file systems 
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES            = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 
+# will interpret the first line (until the first dot) of a JavaDoc-style 
+# comment as the brief description. If set to NO, the JavaDoc 
+# comments will behave just like the Qt-style comments (thus requiring an 
+# explicit @brief command for a brief description.
+
+JAVADOC_AUTOBRIEF      = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 
+# treat a multi-line C++ special comment block (i.e. a block of //! or /// 
+# comments) as a brief description. This used to be the default behaviour. 
+# The new default is to treat a multi-line C++ comment block as a detailed 
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the DETAILS_AT_TOP tag is set to YES then Doxygen 
+# will output the detailed description near the top, like JavaDoc.
+# If set to NO, the detailed description appears after the member 
+# documentation.
+
+DETAILS_AT_TOP         = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 
+# member inherits the documentation from any documented member that it 
+# re-implements.
+
+INHERIT_DOCS           = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 
+# tag is set to YES, then doxygen will reuse the documentation of the first 
+# member in the group (if any) for the other members of the group. By default 
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC   = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab. 
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE               = 8
+
+# This tag can be used to specify a number of aliases that acts 
+# as commands in the documentation. An alias has the form "name=value". 
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to 
+# put the command \sideeffect (or @sideeffect) in the documentation, which 
+# will result in a user-defined paragraph with heading "Side Effects:". 
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES                = "english=@if en" \
+                         end_eng=@endif \
+                         "japanese=@if ja" \
+                         end_ja=@endif
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources 
+# only. Doxygen will then generate output that is more tailored for C. 
+# For instance, some of the names that are used will be different. The list 
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C  = NO
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources 
+# only. Doxygen will then generate output that is more tailored for Java. 
+# For instance, namespaces will be presented as packages, qualified scopes 
+# will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA   = NO
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of 
+# the same type (for instance a group of public functions) to be put as a 
+# subgroup of that type (e.g. under the Public Functions section). Set it to 
+# NO to prevent subgrouping. Alternatively, this can be done per class using 
+# the \nosubgrouping command.
+
+SUBGROUPING            = YES
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 
+# documentation are documented, even if no documentation was available. 
+# Private class members and static file members will be hidden unless 
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL            = YES
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 
+# will be included in the documentation.
+
+EXTRACT_PRIVATE        = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file 
+# will be included in the documentation.
+
+EXTRACT_STATIC         = YES
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 
+# defined locally in source files will be included in the documentation. 
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES  = YES
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 
+# undocumented members of documented classes, files or namespaces. 
+# If set to NO (the default) these members will be included in the 
+# various overviews, but no documentation section is generated. 
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS     = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 
+# undocumented classes that are normally visible in the class hierarchy. 
+# If set to NO (the default) these classes will be included in the various 
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES     = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 
+# friend (class|struct|union) declarations. 
+# If set to NO (the default) these declarations will be included in the 
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS  = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 
+# documentation blocks found inside the body of a function. 
+# If set to NO (the default) these blocks will be appended to the 
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS      = NO
+
+# The INTERNAL_DOCS tag determines if documentation 
+# that is typed after a \internal command is included. If the tag is set 
+# to NO (the default) then the documentation will be excluded. 
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS          = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 
+# file names in lower-case letters. If set to YES upper-case letters are also 
+# allowed. This is useful if you have classes or files whose names only differ 
+# in case and if your file system supports case sensitive file names. Windows 
+# users are advised to set this option to NO.
+
+CASE_SENSE_NAMES       = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 
+# will show members with their full class and namespace scopes in the 
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES       = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 
+# will put a list of the files that are included by a file in the documentation 
+# of that file.
+
+SHOW_INCLUDE_FILES     = YES
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 
+# is inserted in the documentation for inline members.
+
+INLINE_INFO            = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 
+# will sort the (detailed) documentation of file and class members 
+# alphabetically by member name. If set to NO the members will appear in 
+# declaration order.
+
+SORT_MEMBER_DOCS       = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the 
+# brief documentation of file, namespace and class members alphabetically 
+# by member name. If set to NO (the default) the members will appear in 
+# declaration order.
+
+SORT_BRIEF_DOCS        = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be 
+# sorted by fully-qualified names, including namespaces. If set to 
+# NO (the default), the class list will be sorted only by class name, 
+# not including the namespace part. 
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the 
+# alphabetical list.
+
+SORT_BY_SCOPE_NAME     = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or 
+# disable (NO) the todo list. This list is created by putting \todo 
+# commands in the documentation.
+
+GENERATE_TODOLIST      = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or 
+# disable (NO) the test list. This list is created by putting \test 
+# commands in the documentation.
+
+GENERATE_TESTLIST      = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or 
+# disable (NO) the bug list. This list is created by putting \bug 
+# commands in the documentation.
+
+GENERATE_BUGLIST       = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 
+# disable (NO) the deprecated list. This list is created by putting 
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional 
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS       = jp
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines 
+# the initial value of a variable or define consists of for it to appear in 
+# the documentation. If the initializer consists of more lines than specified 
+# here it will be hidden. Use a value of 0 to hide initializers completely. 
+# The appearance of the initializer of individual variables and defines in the 
+# documentation can be controlled using \showinitializer or \hideinitializer 
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES  = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated 
+# at the bottom of the documentation of classes and structs. If set to YES the 
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES        = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated 
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET                  = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are 
+# generated by doxygen. Possible values are YES and NO. If left blank 
+# NO is used.
+
+WARNINGS               = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED   = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
+# potential errors in the documentation, such as not documenting some 
+# parameters in a documented function, or documenting parameters that 
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR      = YES
+
+# The WARN_FORMAT tag determines the format of the warning messages that 
+# doxygen can produce. The string should contain the $file, $line, and $text 
+# tags, which will be replaced by the file and line number from which the 
+# warning originated and the warning text.
+
+WARN_FORMAT            = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning 
+# and error messages should be written. If left blank the output is written 
+# to stderr.
+
+WARN_LOGFILE           = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain 
+# documented source files. You may enter file names like "myfile.cpp" or 
+# directories like "/usr/src/myproject". Separate the files or directories 
+# with spaces.
+
+INPUT                  = ./
+
+# If the value of the INPUT tag contains directories, you can use the 
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
+# and *.h) to filter out the source-files in the directories. If left 
+# blank the following patterns are tested: 
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp 
+# *.h++ *.idl *.odl *.cs *.php *.php3 *.inc
+
+FILE_PATTERNS          = ComponentObserver.idl
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories 
+# should be searched for input files as well. Possible values are YES and NO. 
+# If left blank NO is used.
+
+RECURSIVE              = NO
+
+# The EXCLUDE tag can be used to specify files and/or directories that should 
+# excluded from the INPUT source files. This way you can easily exclude a 
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+
+EXCLUDE                = 
+
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or directories 
+# that are symbolic links (a Unix filesystem feature) are excluded from the input.
+
+EXCLUDE_SYMLINKS       = NO
+
+# If the value of the INPUT tag contains directories, you can use the 
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
+# certain files from those directories.
+
+EXCLUDE_PATTERNS       = 
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or 
+# directories that contain example code fragments that are included (see 
+# the \include command).
+
+EXAMPLE_PATH           = 
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the 
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
+# and *.h) to filter out the source-files in the directories. If left 
+# blank all files are included.
+
+EXAMPLE_PATTERNS       = 
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 
+# searched for input files to be used with the \include or \dontinclude 
+# commands irrespective of the value of the RECURSIVE tag. 
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE      = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or 
+# directories that contain image that are included in the documentation (see 
+# the \image command).
+
+IMAGE_PATH             = 
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should 
+# invoke to filter for each input file. Doxygen will invoke the filter program 
+# by executing (via popen()) the command <filter> <input-file>, where <filter> 
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an 
+# input file. Doxygen will then use the output that the filter program writes 
+# to standard output.
+
+INPUT_FILTER           = 
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 
+# INPUT_FILTER) will be used to filter the input files when producing source 
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES    = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
+# be generated. Documented entities will be cross-referenced with these sources. 
+# Note: To get rid of all source code in the generated output, make sure also 
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER         = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body 
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES         = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
+# doxygen to hide any special comment blocks from generated source code 
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS    = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES (the default) 
+# then for each documented function all documented 
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = YES
+
+# If the REFERENCES_RELATION tag is set to YES (the default) 
+# then for each documented function all documented entities 
+# called/used by that function will be listed.
+
+REFERENCES_RELATION    = YES
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
+# will generate a verbatim copy of the header file for each class for 
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS       = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
+# of all compounds will be generated. Enable this if the project 
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX     = NO
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX    = 5
+
+# In case all classes in a project start with a common prefix, all 
+# classes will be put under the same header in the alphabetical index. 
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that 
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX          = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
+# generate HTML output.
+
+GENERATE_HTML          = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT            = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION    = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard header.
+
+HTML_HEADER            = 
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard footer.
+
+HTML_FOOTER            = 
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
+# style sheet that is used by each HTML page. It can be used to 
+# fine-tune the look of the HTML output. If the tag is left blank doxygen 
+# will generate a default style sheet. Note that doxygen will try to copy 
+# the style sheet file to the HTML output directory, so don't put your own 
+# stylesheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET        = 
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
+# files or namespaces will be aligned in HTML using tables. If set to 
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS     = YES
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
+# will be generated that can be used as input for tools like the 
+# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) 
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP      = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
+# be used to specify the file name of the resulting .chm file. You 
+# can add a path in front of the file if the result should not be 
+# written to the html output directory.
+
+CHM_FILE               = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
+# be used to specify the location (absolute path including file name) of 
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION           = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
+# controls if a separate .chi index file is generated (YES) or that 
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI           = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
+# controls whether a binary table of contents is generated (YES) or a 
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC             = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members 
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND             = NO
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
+# top of each HTML page. The value NO (the default) enables the index and 
+# the value YES disables it.
+
+DISABLE_INDEX          = NO
+
+# This tag can be used to set the number of enum values (range [1..20]) 
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE   = 4
+
+# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
+# generated containing a tree-like index structure (just like the one that 
+# is generated for HTML Help). For this to work a browser that supports 
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
+# probably better off using the HTML help feature.
+
+GENERATE_TREEVIEW      = NO
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
+# used to set the initial width (in pixels) of the frame in which the tree 
+# is shown.
+
+TREEVIEW_WIDTH         = 250
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
+# generate Latex output.
+
+GENERATE_LATEX         = YES
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT           = platex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME         = platex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
+# generate index for LaTeX. If left blank `makeindex' will be used as the 
+# default command name.
+
+MAKEINDEX_CMD_NAME     = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
+# LaTeX documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_LATEX          = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used 
+# by the printer. Possible values are: a4, a4wide, letter, legal and 
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE             = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES         = 
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
+# the generated latex document. The header should contain everything until 
+# the first chapter. If it is left blank doxygen will generate a 
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER           = 
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
+# contain links (just like the HTML output) instead of page references 
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS         = NO
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
+# plain latex in the generated Makefile. Set this option to YES to get a 
+# higher quality PDF documentation.
+
+USE_PDFLATEX           = NO
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
+# command to the generated LaTeX files. This will instruct LaTeX to keep 
+# running if errors occur, instead of asking the user for help. 
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE        = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
+# include the index chapters (such as File Index, Compound Index, etc.) 
+# in the output.
+
+LATEX_HIDE_INDICES     = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
+# The RTF output is optimized for Word 97 and may not look very pretty with 
+# other RTF readers or editors.
+
+GENERATE_RTF           = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT             = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
+# RTF documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_RTF            = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
+# will contain hyperlink fields. The RTF file will 
+# contain links (just like the HTML output) instead of page references. 
+# This makes the output suitable for online browsing using WORD or other 
+# programs which support those fields. 
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS         = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's 
+# config file, i.e. a series of assignments. You only have to provide 
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE    = 
+
+# Set optional variables used in the generation of an rtf document. 
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE    = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
+# generate man pages
+
+GENERATE_MAN           = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT             = man
+
+# The MAN_EXTENSION tag determines the extension that is added to 
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION          = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
+# then it will generate one additional man file for each entity 
+# documented in the real man page(s). These additional files 
+# only source the real man page, but without them the man command 
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS              = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will 
+# generate an XML file that captures the structure of 
+# the code including all documentation.
+
+GENERATE_XML           = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT             = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_SCHEMA             = 
+
+# The XML_DTD tag can be used to specify an XML DTD, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_DTD                = 
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will 
+# dump the program listings (including syntax highlighting 
+# and cross-referencing information) to the XML output. Note that 
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING     = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
+# generate an AutoGen Definitions (see autogen.sf.net) file 
+# that captures the structure of the code including all 
+# documentation. Note that this feature is still experimental 
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF   = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
+# generate a Perl module file that captures the structure of 
+# the code including all documentation. Note that this 
+# feature is still experimental and incomplete at the 
+# moment.
+
+GENERATE_PERLMOD       = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX          = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
+# nicely formatted so it can be parsed by a human reader.  This is useful 
+# if you want to understand what is going on.  On the other hand, if this 
+# tag is set to NO the size of the Perl module output will be much smaller 
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY         = YES
+
+# The names of the make variables in the generated doxyrules.make file 
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
+# This is useful so different doxyrules.make files included by the same 
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX = 
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor   
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
+# evaluate all C-preprocessor directives found in the sources and include 
+# files.
+
+ENABLE_PREPROCESSING   = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
+# names in the source code. If set to NO (the default) only conditional 
+# compilation will be performed. Macro expansion can be done in a controlled 
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION        = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
+# then the macro expansion is limited to the macros specified with the 
+# PREDEFINED and EXPAND_AS_PREDEFINED tags.
+
+EXPAND_ONLY_PREDEF     = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES        = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that 
+# contain include files that are not input files but should be processed by 
+# the preprocessor.
+
+INCLUDE_PATH           = 
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
+# patterns (like *.h and *.hpp) to filter out the header-files in the 
+# directories. If left blank, the patterns specified with FILE_PATTERNS will 
+# be used.
+
+INCLUDE_FILE_PATTERNS  = 
+
+# The PREDEFINED tag can be used to specify one or more macro names that 
+# are defined before the preprocessor is started (similar to the -D option of 
+# gcc). The argument of the tag is a list of macros of the form: name 
+# or name=definition (no spaces). If the definition and the = are 
+# omitted =1 is assumed.
+
+PREDEFINED             = 
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
+# this tag can be used to specify a list of macro names that should be expanded. 
+# The macro definition that is found in the sources will be used. 
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED      = 
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
+# doxygen's preprocessor will remove all function-like macros that are alone 
+# on a line, have an all uppercase name, and do not end with a semicolon. Such 
+# function macros are typically used for boiler-plate code, and will confuse the 
+# parser if not removed.
+
+SKIP_FUNCTION_MACROS   = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references   
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles. 
+# Optionally an initial location of the external documentation 
+# can be added for each tagfile. The format of a tag file without 
+# this location is as follows: 
+#   TAGFILES = file1 file2 ... 
+# Adding location for the tag files is done as follows: 
+#   TAGFILES = file1=loc1 "file2 = loc2" ... 
+# where "loc1" and "loc2" can be relative or absolute paths or 
+# URLs. If a location is present for each tag, the installdox tool 
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen 
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES               = 
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE       = 
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
+# in the class index. If set to NO only the inherited external classes 
+# will be listed.
+
+ALLEXTERNALS           = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
+# in the modules index. If set to NO, only the current project's groups will 
+# be listed.
+
+EXTERNAL_GROUPS        = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script 
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH              = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool   
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base or 
+# super classes. Setting the tag to NO turns the diagrams off. Note that this 
+# option is superseded by the HAVE_DOT option below. This is only a fallback. It is 
+# recommended to install and use dot, since it yields more powerful graphs.
+
+CLASS_DIAGRAMS         = YES
+
+# If set to YES, the inheritance and collaboration graphs will hide 
+# inheritance and usage relations if the target is undocumented 
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS   = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
+# available from the path. This tool is part of Graphviz, a graph visualization 
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT               = NO
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect inheritance relations. Setting this tag to YES will force the 
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH            = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect implementation dependencies (inheritance, containment, and 
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH    = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
+# collaboration diagrams in a style similar to the OMG's Unified Modeling 
+# Language.
+
+UML_LOOK               = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the 
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS     = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
+# tags are set to YES then doxygen will generate a graph for each documented 
+# file showing the direct and indirect include dependencies of the file with 
+# other documented files.
+
+INCLUDE_GRAPH          = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
+# documented header file showing the documented files that directly or 
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH      = YES
+
+# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will 
+# generate a call dependency graph for every global function or class method. 
+# Note that enabling this option will significantly increase the time of a run. 
+# So in most cases it will be better to enable call graphs for selected 
+# functions only using the \callgraph command.
+
+CALL_GRAPH             = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY    = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT       = png
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be 
+# found. If left blank, it is assumed the dot tool can be found on the path.
+
+DOT_PATH               = 
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that 
+# contain dot files that are included in the documentation (see the 
+# \dotfile command).
+
+DOTFILE_DIRS           = 
+
+# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width 
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
+# this value, doxygen will try to truncate the graph, so that it fits within 
+# the specified constraint. Beware that most browsers cannot cope with very 
+# large images.
+
+MAX_DOT_GRAPH_WIDTH    = 1024
+
+# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height 
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
+# this value, doxygen will try to truncate the graph, so that it fits within 
+# the specified constraint. Beware that most browsers cannot cope with very 
+# large images.
+
+MAX_DOT_GRAPH_HEIGHT   = 1024
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the 
+# graphs generated by dot. A depth value of 3 means that only nodes reachable 
+# from the root by following a path via at most 3 edges will be shown. Nodes that 
+# lay further from the root node will be omitted. Note that setting this option to 
+# 1 or 2 may greatly reduce the computation time needed for large code bases. Also 
+# note that a graph may be further truncated if the graph's image dimensions are 
+# not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH and MAX_DOT_GRAPH_HEIGHT). 
+# If 0 is used for the depth value (the default), the graph is not depth-constrained.
+
+MAX_DOT_GRAPH_DEPTH    = 0
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
+# generate a legend page explaining the meaning of the various boxes and 
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND        = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
+# remove the intermediate dot files that are used to generate 
+# the various graphs.
+
+DOT_CLEANUP            = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine   
+#---------------------------------------------------------------------------
+
+# The SEARCHENGINE tag specifies whether or not a search engine should be 
+# used. If set to NO the values of all tags below this one will be ignored.
+
+SEARCHENGINE           = NO

Deleted: trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/rtc.conf
===================================================================
--- branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/rtc.conf	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/rtc.conf	2011-09-21 07:57:38 UTC (rev 479)
@@ -1,8 +0,0 @@
-corba.nameservers: localhost
-naming.formats: %n.rtc
-logger.enable: NO
-logger.log_level: VERBOSE
-#logger.file_name: rtc%p.log,    STDOUT
-#manager.naming_formats: %n.mgr
-manager.modules.load_path:  .
-manager.modules.preload: ComponentObserverConsumer

Copied: trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/rtc.conf (from rev 478, branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/rtc.conf)
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/rtc.conf	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/rtc.conf	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,8 @@
+corba.nameservers: localhost
+naming.formats: %n.rtc
+logger.enable: NO
+logger.log_level: VERBOSE
+#logger.file_name: rtc%p.log,    STDOUT
+#manager.naming_formats: %n.mgr
+manager.modules.load_path:  .
+manager.modules.preload: ComponentObserverConsumer

Deleted: trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/setup.bat
===================================================================
--- branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/setup.bat	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/setup.bat	2011-09-21 07:57:38 UTC (rev 479)
@@ -1,15 +0,0 @@
- at echo off
-echo "<<< ComponentObserverConsumer setup start >>>"
-
-set idlfiles=BasicDataType.idl DataPort.idl ExtendedDataTypes.idl InterfaceDataTypes.idl OpenRTM.idl RTC.idl SDOPackage.idl
-
-rem # idl file copy
-for %%x in (%idlfiles%) do copy ..\..\..\RTM_IDL\%%x .
-
-rem # idl file compile
-set idlfiles=%idlfiles% ComponentObserver.idl
-for %%x in (%idlfiles%) do omniidl -I. -bpython %%x
-
-echo "<<< ComponentObserverConsumer setup Complete >>>"
-echo ""
-

Copied: trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/setup.bat (from rev 478, branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/setup.bat)
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/setup.bat	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/setup.bat	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,15 @@
+ at echo off
+echo "<<< ComponentObserverConsumer setup start >>>"
+
+set idlfiles=BasicDataType.idl DataPort.idl ExtendedDataTypes.idl InterfaceDataTypes.idl OpenRTM.idl RTC.idl SDOPackage.idl
+
+rem # idl file copy
+for %%x in (%idlfiles%) do copy ..\..\..\RTM_IDL\%%x .
+
+rem # idl file compile
+set idlfiles=%idlfiles% ComponentObserver.idl
+for %%x in (%idlfiles%) do omniidl -I. -bpython %%x
+
+echo "<<< ComponentObserverConsumer setup Complete >>>"
+echo ""
+

Deleted: trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/setup.sh
===================================================================
--- branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/setup.sh	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/setup.sh	2011-09-21 07:57:38 UTC (rev 479)
@@ -1,19 +0,0 @@
-#!/bin/sh
-
-echo "<<< ComponentObserverConsumer Test setup start >>>"
-
-# idl file copy
-cp -pf ../../../RTM_IDL/BasicDataType.idl .
-cp -pf ../../../RTM_IDL/DataPort.idl .
-cp -pf ../../../RTM_IDL/ExtendedDataTypes.idl .
-cp -pf ../../../RTM_IDL/InterfaceDataTypes.idl .
-cp -pf ../../../RTM_IDL/OpenRTM.idl .
-cp -pf ../../../RTM_IDL/RTC.idl .
-cp -pf ../../../RTM_IDL/SDOPackage.idl .
-
-# idl file compile
-omniidl -bpython *.idl
-
-echo "<<< ComponentObserverConsumer Test setup Complete >>>"
-echo ""
-

Copied: trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/setup.sh (from rev 478, branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/setup.sh)
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/setup.sh	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/setup.sh	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+echo "<<< ComponentObserverConsumer Test setup start >>>"
+
+# idl file copy
+cp -pf ../../../RTM_IDL/BasicDataType.idl .
+cp -pf ../../../RTM_IDL/DataPort.idl .
+cp -pf ../../../RTM_IDL/ExtendedDataTypes.idl .
+cp -pf ../../../RTM_IDL/InterfaceDataTypes.idl .
+cp -pf ../../../RTM_IDL/OpenRTM.idl .
+cp -pf ../../../RTM_IDL/RTC.idl .
+cp -pf ../../../RTM_IDL/SDOPackage.idl .
+
+# idl file compile
+omniidl -bpython *.idl
+
+echo "<<< ComponentObserverConsumer Test setup Complete >>>"
+echo ""
+

Deleted: trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/ComponentObserverProvider.py
===================================================================
--- branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/ComponentObserverProvider.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/ComponentObserverProvider.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -1,63 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: euc-jp -*-
-
-##
-# @file ComponentObserverProvider.py
-# @brief test for ComponentObserverConsumer
-# @date $Date$
-# @author Shinji Kurihara
-#
-# Copyright (C) 2011
-#     Noriaki Ando
-#     Intelligent Systems Research Institute,
-#     National Institute of
-#         Advanced Industrial Science and Technology (AIST), Japan
-#     All rights reserved.
-#
-
-import sys
-
-from omniORB import CORBA, PortableServer
-import RTC
-import OpenRTM, OpenRTM__POA
-import SDOPackage
-import OpenRTM_aist
-
-class ComponentObserver_i(OpenRTM__POA.ComponentObserver):
-  def __init__(self):
-    pass
-
-  def update_status(self, status_kind, hint):
-    print "update_status: ", status_kind, ", ", hint
-    return
-
-def main():
-  orb = CORBA.ORB_init(sys.argv)
-  poa = orb.resolve_initial_references("RootPOA")
-  poa._get_the_POAManager().activate()
-  naming = OpenRTM_aist.CorbaNaming(orb, "localhost")
-  servant = ComponentObserver_i()
-  oid = poa.servant_to_id(servant)
-  provider = poa.id_to_reference(oid)
-
-  rtc = naming.resolve("ConsoleIn0.rtc")._narrow(RTC.RTObject)
-  config = rtc.get_configuration()
-  properties = [OpenRTM_aist.NVUtil.newNV("heartbeat.enable","YES"),
-                OpenRTM_aist.NVUtil.newNV("heartbeat.interval","10"),
-                OpenRTM_aist.NVUtil.newNV("observed_status","ALL")]
-
-  id = OpenRTM_aist.toTypename(servant)
-  sprof = SDOPackage.ServiceProfile("test_id", id,
-                                    properties, provider)
-
-  ret = config.add_service_profile(sprof)
-  flag = True
-  print "If you exit program, please input 'q'."
-  sys.stdin.readline()
-  ret = config.remove_service_profile("test_id")
-  print "test program end. ret : ", ret
-  return
-    
-############### test #################
-if __name__ == '__main__':
-  main()

Copied: trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/ComponentObserverProvider.py (from rev 478, branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/ComponentObserverProvider.py)
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/ComponentObserverProvider.py	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/ComponentObserverProvider.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,63 @@
+#!/usr/bin/env python
+# -*- coding: euc-jp -*-
+
+##
+# @file ComponentObserverProvider.py
+# @brief test for ComponentObserverConsumer
+# @date $Date$
+# @author Shinji Kurihara
+#
+# Copyright (C) 2011
+#     Noriaki Ando
+#     Intelligent Systems Research Institute,
+#     National Institute of
+#         Advanced Industrial Science and Technology (AIST), Japan
+#     All rights reserved.
+#
+
+import sys
+
+from omniORB import CORBA, PortableServer
+import RTC
+import OpenRTM, OpenRTM__POA
+import SDOPackage
+import OpenRTM_aist
+
+class ComponentObserver_i(OpenRTM__POA.ComponentObserver):
+  def __init__(self):
+    pass
+
+  def update_status(self, status_kind, hint):
+    print "update_status: ", status_kind, ", ", hint
+    return
+
+def main():
+  orb = CORBA.ORB_init(sys.argv)
+  poa = orb.resolve_initial_references("RootPOA")
+  poa._get_the_POAManager().activate()
+  naming = OpenRTM_aist.CorbaNaming(orb, "localhost")
+  servant = ComponentObserver_i()
+  oid = poa.servant_to_id(servant)
+  provider = poa.id_to_reference(oid)
+
+  rtc = naming.resolve("ConsoleIn0.rtc")._narrow(RTC.RTObject)
+  config = rtc.get_configuration()
+  properties = [OpenRTM_aist.NVUtil.newNV("heartbeat.enable","YES"),
+                OpenRTM_aist.NVUtil.newNV("heartbeat.interval","10"),
+                OpenRTM_aist.NVUtil.newNV("observed_status","ALL")]
+
+  id = OpenRTM_aist.toTypename(servant)
+  sprof = SDOPackage.ServiceProfile("test_id", id,
+                                    properties, provider)
+
+  ret = config.add_service_profile(sprof)
+  flag = True
+  print "If you exit program, please input 'q'."
+  sys.stdin.readline()
+  ret = config.remove_service_profile("test_id")
+  print "test program end. ret : ", ret
+  return
+    
+############### test #################
+if __name__ == '__main__':
+  main()

Deleted: trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/__init__.py
===================================================================
--- branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/__init__.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/__init__.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -1 +0,0 @@
-# Empty file

Copied: trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/__init__.py (from rev 478, branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/__init__.py)
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/__init__.py	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/__init__.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1 @@
+# Empty file

Deleted: trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/setup.bat
===================================================================
--- branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/setup.bat	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/setup.bat	2011-09-21 07:57:38 UTC (rev 479)
@@ -1,17 +0,0 @@
- at echo off
-echo "<<< ComponentObserverConsumer Test setup start >>>"
-
-set idlfiles=BasicDataType.idl DataPort.idl OpenRTM.idl RTC.idl SDOPackage.idl
-
-rem # idl file copy
-for %%x in (%idlfiles%) do copy ..\..\..\..\RTM_IDL\%%x .
-
-copy ..\ComponentObserver.idl .
-
-rem # idl file compile
-set idlfiles=%idlfiles% ComponentObserver.idl
-for %%x in (%idlfiles%) do omniidl -I. -bpython %%x
-
-echo "<<< ComponentObserverConsumer Test setup Complete >>>"
-echo ""
-

Copied: trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/setup.bat (from rev 478, branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/setup.bat)
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/setup.bat	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/setup.bat	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,17 @@
+ at echo off
+echo "<<< ComponentObserverConsumer Test setup start >>>"
+
+set idlfiles=BasicDataType.idl DataPort.idl OpenRTM.idl RTC.idl SDOPackage.idl
+
+rem # idl file copy
+for %%x in (%idlfiles%) do copy ..\..\..\..\RTM_IDL\%%x .
+
+copy ..\ComponentObserver.idl .
+
+rem # idl file compile
+set idlfiles=%idlfiles% ComponentObserver.idl
+for %%x in (%idlfiles%) do omniidl -I. -bpython %%x
+
+echo "<<< ComponentObserverConsumer Test setup Complete >>>"
+echo ""
+

Deleted: trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/setup.sh
===================================================================
--- branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/setup.sh	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/setup.sh	2011-09-21 07:57:38 UTC (rev 479)
@@ -1,18 +0,0 @@
-#!/bin/sh
-
-echo "<<< ComponentObserverConsumer Test setup start >>>"
-
-# idl file copy
-cp -pf ../../../../RTM_IDL/BasicDataType.idl .
-cp -pf ../../../../RTM_IDL/DataPort.idl .
-cp -pf ../../../../RTM_IDL/OpenRTM.idl .
-cp -pf ../../../../RTM_IDL/RTC.idl .
-cp -pf ../../../../RTM_IDL/SDOPackage.idl .
-cp -pf ../ComponentObserver.idl .
-
-# idl file compile
-omniidl -bpython *.idl
-
-echo "<<< ComponentObserverConsumer Test setup Complete >>>"
-echo ""
-

Copied: trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/setup.sh (from rev 478, branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/setup.sh)
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/setup.sh	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/setup.sh	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+echo "<<< ComponentObserverConsumer Test setup start >>>"
+
+# idl file copy
+cp -pf ../../../../RTM_IDL/BasicDataType.idl .
+cp -pf ../../../../RTM_IDL/DataPort.idl .
+cp -pf ../../../../RTM_IDL/OpenRTM.idl .
+cp -pf ../../../../RTM_IDL/RTC.idl .
+cp -pf ../../../../RTM_IDL/SDOPackage.idl .
+cp -pf ../ComponentObserver.idl .
+
+# idl file compile
+omniidl -bpython *.idl
+
+echo "<<< ComponentObserverConsumer Test setup Complete >>>"
+echo ""
+

Deleted: trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/test_ComponentObserverConsumer.py
===================================================================
--- branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/test_ComponentObserverConsumer.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/test_ComponentObserverConsumer.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -1,206 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: euc-jp -*-
-
-##
-# @file test_ComponentObserverConsumer.py
-# @brief test for ComponentObserverConsumer
-# @date $Date$
-# @author Shinji Kurihara
-#
-# Copyright (C) 2011
-#     Noriaki Ando
-#     Intelligent Systems Research Institute,
-#     National Institute of
-#         Advanced Industrial Science and Technology (AIST), Japan
-#     All rights reserved.
-#
-
-import sys
-sys.path.insert(1,"../")
-
-import unittest
-import time
-
-from omniORB import CORBA, PortableServer
-import RTC
-import OpenRTM, OpenRTM__POA
-import SDOPackage
-import OpenRTM_aist
-
-from ComponentObserverConsumer import *
-
-class ComponentObserver_i(OpenRTM__POA.ComponentObserver):
-  def __init__(self):
-    pass
-
-  def update_status(self, status_kind, hint):
-    print "update_status: ", status_kind, ", ", hint
-    return
-
-
-class MockRTC(OpenRTM_aist.RTObject_impl):
-  def __init__(self):
-    self._orb = CORBA.ORB_init()
-    self._poa = self._orb.resolve_initial_references("RootPOA")
-    OpenRTM_aist.RTObject_impl.__init__(self, orb=self._orb, poa=self._poa)
-    pass
-
-##
-# @if jp
-# @else
-# @endif
-#
-class TestComponentObserverConsumer(unittest.TestCase):
-  """
-  """
-
-  def setUp(self):
-    self._orb = CORBA.ORB_init(sys.argv)
-    self._poa = self._orb.resolve_initial_references("RootPOA")
-    self._poa._get_the_POAManager().activate()
-    self.coc = ComponentObserverConsumer()
-    servant_ = ComponentObserver_i()
-    mgr_ = OpenRTM_aist.Manager.instance()
-    oid_ = mgr_.getPOA().servant_to_id(servant_)
-    self._provider = mgr_.getPOA().id_to_reference(oid_)
-    self._mock = MockRTC()
-    self._properties = [OpenRTM_aist.NVUtil.newNV("heartbeat.enable","YES"),
-                        OpenRTM_aist.NVUtil.newNV("heartbeat.interval","0.1"),
-                        OpenRTM_aist.NVUtil.newNV("observed_status","ALL")]
-    self._sprof = SDOPackage.ServiceProfile("test_id", "interface_type",
-                                            self._properties, self._provider)
-    self.coc.init(self._mock, self._sprof)
-    return
-
-  def tearDown(self):
-    self.coc.finalize()
-    del self.coc
-    self._mock.exit()
-    time.sleep(0.1)
-    OpenRTM_aist.Manager.instance().shutdownManager()
-    return
-
-
-  def test_reinit(self):
-    self.assertEqual(self.coc.reinit(self._sprof), True)
-    return
-
-
-  def test_getProfile(self):
-    self.coc.getProfile()
-    return
-
-
-  def test_finalize(self):
-    self.coc.finalize()
-    return
-
-
-  def test_updateStatus(self):
-    self.coc.updateStatus(OpenRTM.COMPONENT_PROFILE, "update Component profile")
-    return
-
-
-  def test_toString(self):
-    self.assertEqual("COMPONENT_PROFILE",self.coc.toString(OpenRTM.COMPONENT_PROFILE))
-    self.assertEqual("RTC_STATUS",self.coc.toString(OpenRTM.RTC_STATUS))
-    self.assertEqual("EC_STATUS",self.coc.toString(OpenRTM.EC_STATUS))
-    self.assertEqual("PORT_PROFILE",self.coc.toString(OpenRTM.PORT_PROFILE))
-    self.assertEqual("CONFIGURATION",self.coc.toString(OpenRTM.CONFIGURATION))
-    self.assertEqual("HEARTBEAT",self.coc.toString(OpenRTM.HEARTBEAT))
-    return
-
-
-  def test_setListeners(self):
-    prop = OpenRTM_aist.Properties()
-    prop.setProperty("observed_status", 
-                     "component_profile, rtc_status, port_profile, \
-                      ec_status, port_profile , configuration")
-    self.coc.setListeners(prop)
-    return
-
-
-  def setfunc(self):
-    print "setfunc"
-    return
-
-  def unsetfunc(self):
-    print "unsetfunc"
-    return
-
-  def test_switchListeners(self):
-    self.coc.switchListeners(True, [True], 0, self.setfunc, self. unsetfunc)
-    self.coc.switchListeners(True, [False], 0, self.setfunc, self. unsetfunc)
-    self.coc.switchListeners(False, [True], 0, self.setfunc, self. unsetfunc)
-    self.coc.switchListeners(False, [False], 0, self.setfunc, self. unsetfunc)
-    return
-
-
-  def test_heartbeat(self):
-    self.coc.heartbeat()
-    return
-
-
-  def test_setHeartbeat(self):
-    prop = OpenRTM_aist.Properties()
-    prop.setProperty("heartbeat.enable","NO")
-    prop.setProperty("heartbeat.interval","1.0")
-    self.coc.setHeartbeat(prop)
-    prop = OpenRTM_aist.Properties()
-    prop.setProperty("heartbeat.enable","YES")
-    prop.setProperty("heartbeat.interval","0.01")
-    self.coc.setHeartbeat(prop)
-    prop = OpenRTM_aist.Properties()
-    prop.setProperty("heartbeat.enable","YES")
-    self.coc.setHeartbeat(prop)
-    return
-
-
-  def test_unsetHeartbeat(self):
-    self.coc.unsetHeartbeat()
-    return
-
-
-  def test_setComponentStatusListeners(self):
-    self.coc.setComponentStatusListeners()
-    return
-
-  
-  def test_unsetComponentStatusListeners(self):
-    self.coc.unsetComponentStatusListeners()
-    return
-
-
-  def test_setPortProfileListeners(self):
-    self.coc.setPortProfileListeners()
-    return
-
-
-  def test_unsetPortProfileListeners(self):
-    self.coc.unsetPortProfileListeners()
-    return
-
-
-  def test_setExecutionContextListeners(self):
-    self.coc.setExecutionContextListeners()
-    return
-
-
-  def test_unsetExecutionContextListeners(self):
-    self.coc.unsetExecutionContextListeners()
-    return
-
-
-  def test_setConfigurationListeners(self):
-    self.coc.setConfigurationListeners()
-    return
-
-
-  def test_unsetConfigurationListeners(self):
-    self.coc.unsetConfigurationListeners()
-    return
-
-
-############### test #################
-if __name__ == '__main__':
-        unittest.main()

Copied: trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/test_ComponentObserverConsumer.py (from rev 478, branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/test_ComponentObserverConsumer.py)
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/test_ComponentObserverConsumer.py	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/ext/sdo/observer/test/test_ComponentObserverConsumer.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,206 @@
+#!/usr/bin/env python
+# -*- coding: euc-jp -*-
+
+##
+# @file test_ComponentObserverConsumer.py
+# @brief test for ComponentObserverConsumer
+# @date $Date$
+# @author Shinji Kurihara
+#
+# Copyright (C) 2011
+#     Noriaki Ando
+#     Intelligent Systems Research Institute,
+#     National Institute of
+#         Advanced Industrial Science and Technology (AIST), Japan
+#     All rights reserved.
+#
+
+import sys
+sys.path.insert(1,"../")
+
+import unittest
+import time
+
+from omniORB import CORBA, PortableServer
+import RTC
+import OpenRTM, OpenRTM__POA
+import SDOPackage
+import OpenRTM_aist
+
+from ComponentObserverConsumer import *
+
+class ComponentObserver_i(OpenRTM__POA.ComponentObserver):
+  def __init__(self):
+    pass
+
+  def update_status(self, status_kind, hint):
+    print "update_status: ", status_kind, ", ", hint
+    return
+
+
+class MockRTC(OpenRTM_aist.RTObject_impl):
+  def __init__(self):
+    self._orb = CORBA.ORB_init()
+    self._poa = self._orb.resolve_initial_references("RootPOA")
+    OpenRTM_aist.RTObject_impl.__init__(self, orb=self._orb, poa=self._poa)
+    pass
+
+##
+# @if jp
+# @else
+# @endif
+#
+class TestComponentObserverConsumer(unittest.TestCase):
+  """
+  """
+
+  def setUp(self):
+    self._orb = CORBA.ORB_init(sys.argv)
+    self._poa = self._orb.resolve_initial_references("RootPOA")
+    self._poa._get_the_POAManager().activate()
+    self.coc = ComponentObserverConsumer()
+    servant_ = ComponentObserver_i()
+    mgr_ = OpenRTM_aist.Manager.instance()
+    oid_ = mgr_.getPOA().servant_to_id(servant_)
+    self._provider = mgr_.getPOA().id_to_reference(oid_)
+    self._mock = MockRTC()
+    self._properties = [OpenRTM_aist.NVUtil.newNV("heartbeat.enable","YES"),
+                        OpenRTM_aist.NVUtil.newNV("heartbeat.interval","0.1"),
+                        OpenRTM_aist.NVUtil.newNV("observed_status","ALL")]
+    self._sprof = SDOPackage.ServiceProfile("test_id", "interface_type",
+                                            self._properties, self._provider)
+    self.coc.init(self._mock, self._sprof)
+    return
+
+  def tearDown(self):
+    self.coc.finalize()
+    del self.coc
+    self._mock.exit()
+    time.sleep(0.1)
+    OpenRTM_aist.Manager.instance().shutdownManager()
+    return
+
+
+  def test_reinit(self):
+    self.assertEqual(self.coc.reinit(self._sprof), True)
+    return
+
+
+  def test_getProfile(self):
+    self.coc.getProfile()
+    return
+
+
+  def test_finalize(self):
+    self.coc.finalize()
+    return
+
+
+  def test_updateStatus(self):
+    self.coc.updateStatus(OpenRTM.COMPONENT_PROFILE, "update Component profile")
+    return
+
+
+  def test_toString(self):
+    self.assertEqual("COMPONENT_PROFILE",self.coc.toString(OpenRTM.COMPONENT_PROFILE))
+    self.assertEqual("RTC_STATUS",self.coc.toString(OpenRTM.RTC_STATUS))
+    self.assertEqual("EC_STATUS",self.coc.toString(OpenRTM.EC_STATUS))
+    self.assertEqual("PORT_PROFILE",self.coc.toString(OpenRTM.PORT_PROFILE))
+    self.assertEqual("CONFIGURATION",self.coc.toString(OpenRTM.CONFIGURATION))
+    self.assertEqual("HEARTBEAT",self.coc.toString(OpenRTM.HEARTBEAT))
+    return
+
+
+  def test_setListeners(self):
+    prop = OpenRTM_aist.Properties()
+    prop.setProperty("observed_status", 
+                     "component_profile, rtc_status, port_profile, \
+                      ec_status, port_profile , configuration")
+    self.coc.setListeners(prop)
+    return
+
+
+  def setfunc(self):
+    print "setfunc"
+    return
+
+  def unsetfunc(self):
+    print "unsetfunc"
+    return
+
+  def test_switchListeners(self):
+    self.coc.switchListeners(True, [True], 0, self.setfunc, self. unsetfunc)
+    self.coc.switchListeners(True, [False], 0, self.setfunc, self. unsetfunc)
+    self.coc.switchListeners(False, [True], 0, self.setfunc, self. unsetfunc)
+    self.coc.switchListeners(False, [False], 0, self.setfunc, self. unsetfunc)
+    return
+
+
+  def test_heartbeat(self):
+    self.coc.heartbeat()
+    return
+
+
+  def test_setHeartbeat(self):
+    prop = OpenRTM_aist.Properties()
+    prop.setProperty("heartbeat.enable","NO")
+    prop.setProperty("heartbeat.interval","1.0")
+    self.coc.setHeartbeat(prop)
+    prop = OpenRTM_aist.Properties()
+    prop.setProperty("heartbeat.enable","YES")
+    prop.setProperty("heartbeat.interval","0.01")
+    self.coc.setHeartbeat(prop)
+    prop = OpenRTM_aist.Properties()
+    prop.setProperty("heartbeat.enable","YES")
+    self.coc.setHeartbeat(prop)
+    return
+
+
+  def test_unsetHeartbeat(self):
+    self.coc.unsetHeartbeat()
+    return
+
+
+  def test_setComponentStatusListeners(self):
+    self.coc.setComponentStatusListeners()
+    return
+
+  
+  def test_unsetComponentStatusListeners(self):
+    self.coc.unsetComponentStatusListeners()
+    return
+
+
+  def test_setPortProfileListeners(self):
+    self.coc.setPortProfileListeners()
+    return
+
+
+  def test_unsetPortProfileListeners(self):
+    self.coc.unsetPortProfileListeners()
+    return
+
+
+  def test_setExecutionContextListeners(self):
+    self.coc.setExecutionContextListeners()
+    return
+
+
+  def test_unsetExecutionContextListeners(self):
+    self.coc.unsetExecutionContextListeners()
+    return
+
+
+  def test_setConfigurationListeners(self):
+    self.coc.setConfigurationListeners()
+    return
+
+
+  def test_unsetConfigurationListeners(self):
+    self.coc.unsetConfigurationListeners()
+    return
+
+
+############### test #################
+if __name__ == '__main__':
+        unittest.main()

Copied: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/BasicDataType.idl (from rev 478, branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/test/BasicDataType.idl)
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/BasicDataType.idl	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/BasicDataType.idl	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,189 @@
+// -*- IDL -*-
+/*!
+ * @file DataType.idl
+ * @brief Basic Data Type definition
+ * @date $Date: 2007-01-09 15:36:29 $
+ * @author Noriaki Ando <n-ando at aist.go.jp>
+ *
+ * Copyright (C) 2003-2006
+ *     Task-intelligence Research Group,
+ *     Intelligent Systems Research Institute,
+ *     National Institute of
+ *         Advanced Industrial Science and Technology (AIST), Japan
+ *     All rights reserved.
+ *
+ * $Id: BasicDataType.idl 1580 2009-12-07 08:54:10Z kurihara $
+ *
+ */
+
+#ifndef BasicDataType_idl
+#define BasicDataType_idl
+
+module RTC {
+  //------------------------------------------------------------
+  // Basic data type definition
+  //------------------------------------------------------------
+  struct Time
+  {
+        unsigned long sec;    // sec
+        unsigned long nsec;   // nano sec
+  };
+
+  struct TimedState
+  {
+	Time tm;
+	short data;
+  };
+
+  struct TimedShort
+  {
+	Time tm;
+	short data;
+  };
+
+  struct TimedLong
+  {
+	Time tm;
+	long data;
+  };
+
+  struct TimedUShort
+  {
+	Time tm;
+	unsigned short data;
+  };
+
+  struct TimedULong
+  {
+	Time tm;
+	unsigned long data;
+  };
+
+  struct TimedFloat
+  {
+	Time tm;
+	float data;
+  };
+
+  struct TimedDouble
+  {
+	Time tm;
+	double data;
+  };
+
+  struct TimedChar
+  {
+	Time tm;
+	char data;
+  };
+
+  struct TimedWChar
+  {
+	Time tm;
+	wchar data;
+  };
+
+  struct TimedBoolean
+  {
+	Time tm;
+	boolean data;
+  };
+
+  struct TimedOctet
+  {
+	Time tm;
+	octet data;
+  };
+
+  struct TimedString
+  {
+	Time tm;
+	string data;
+  };
+
+
+  struct TimedWString
+  {
+	Time tm;
+	wstring data;
+  };
+
+
+  /*!
+   * Sequence data type
+   */
+  struct TimedShortSeq
+  {
+	Time tm;
+	sequence<short> data;
+  };
+
+  struct TimedLongSeq
+  {
+	Time tm;
+	sequence<long> data;
+  };
+
+  struct TimedUShortSeq
+  {
+	Time tm;
+	sequence<unsigned short> data;
+  };
+
+  struct TimedULongSeq
+  {
+	Time tm;
+	sequence<unsigned long> data;
+  };
+
+  struct TimedFloatSeq
+  {
+	Time tm;
+	sequence<float> data;
+  };
+
+  struct TimedDoubleSeq
+  {
+	Time tm;
+	sequence<double> data;
+  };
+
+  struct TimedCharSeq
+  {
+	Time tm;
+	sequence<char> data;
+  };
+
+  struct TimedWCharSeq
+  {
+	Time tm;
+	sequence<wchar> data;
+  };
+
+  struct TimedBooleanSeq
+  {
+	Time tm;
+	sequence<boolean> data;
+  };
+
+  struct TimedOctetSeq
+  {
+	Time tm;
+	sequence<octet> data;
+  };
+
+  struct TimedStringSeq
+  {
+	Time tm;
+	sequence<string> data;
+  };
+  
+  struct TimedWStringSeq
+  {
+	Time tm;
+	sequence<wstring> data;
+  };
+  
+};
+
+#endif // end of BasicDataType_idl

Copied: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/ComponentActionListenerTestComp.py (from rev 478, branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/test/ComponentActionListenerTestComp.py)
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/ComponentActionListenerTestComp.py	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/ComponentActionListenerTestComp.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,369 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# -*- Python -*-
+
+import sys
+
+import OpenRTM
+import RTC
+import OpenRTM_aist
+
+consolein_spec = ["implementation_id", "ConsoleIn",
+                  "type_name",         "ConsoleIn",
+                  "description",       "Console input component",
+                  "version",           "1.0",
+                  "vendor",            "Shinji Kurihara",
+                  "category",          "example",
+                  "activity_type",     "DataFlowComponent",
+                  "max_instance",      "10",
+                  "language",          "Python",
+                  "lang_type",         "script",
+                  ""]
+
+
+class DataListener(OpenRTM_aist.ConnectorDataListenerT):
+  def __init__(self, name):
+    self._name = name
+    
+  def __del__(self):
+    print "dtor of ", self._name
+
+  def __call__(self, info, cdrdata):
+    data = OpenRTM_aist.ConnectorDataListenerT.__call__(self, info, cdrdata, RTC.TimedLong(RTC.Time(0,0),0))
+    print "------------------------------"
+    print "Listener:       ", self._name
+    print "Profile::name:  ", info.name
+    print "Profile::id:    ", info.id
+    print "Data:           ", data.data
+    print "------------------------------"
+    
+class ConnListener(OpenRTM_aist.ConnectorListener):
+  def __init__(self, name):
+    self._name = name
+
+  def __del__(self):
+    print "dtor of ", self._name
+
+  def __call__(self, info):
+    print "------------------------------"
+    print "Listener:       ", self._name
+    print "Profile::name:  ", info.name
+    print "Profile::id:    ", info.id
+    print "------------------------------"
+
+
+class ConsoleIn(OpenRTM_aist.DataFlowComponentBase):
+  def __init__(self, manager):
+    OpenRTM_aist.DataFlowComponentBase.__init__(self, manager)
+    self.addPreComponentActionListener(OpenRTM_aist.PreComponentActionListenerType.PRE_ON_INITIALIZE,
+                                       self.preOnInitializeFunc)
+    self.addExecutionContextActionListener(OpenRTM_aist.ExecutionContextActionListenerType.EC_ATTACHED,
+                                           self.onAttachExecutionContextFunc)
+    self.addExecutionContextActionListener(OpenRTM_aist.ExecutionContextActionListenerType.EC_DETACHED,
+                                           self.onDetachExecutionContextFunc)
+
+    return
+
+  def preOnInitializeFunc(self, ec_id):
+    print "preOnInitializeFunc"
+    return
+
+  def preOnFinalizeFunc(self, ec_id):
+    print "preOnFinalizeFunc"
+    return
+
+  def preOnStartupFunc(self, ec_id):
+    print "preOnStartupFunc"
+    return
+
+  def preOnShutdownFunc(self, ec_id):
+    print "preOnShutdownFunc"
+    return
+
+  def preOnActivatedFunc(self, ec_id):
+    print "preOnActivatedFunc"
+    return
+
+  def preOnDeactivatedFunc(self, ec_id):
+    print "preOnDeactivatedFunc"
+    return
+
+  def preOnAbortingFunc(self, ec_id):
+    print "preOnAbortingFunc"
+    return
+
+  def preOnErrorFunc(self, ec_id):
+    print "preOnErrorFunc"
+    return
+
+  def preOnResetFunc(self, ec_id):
+    print "preOnResetFunc"
+    return
+
+  def preOnExecuteFunc(self, ec_id):
+    print "preOnExecuteFunc"
+    return
+
+  def preOnStateUpdateFunc(self, ec_id):
+    print "preOnStateUpdateFunc"
+    return
+    
+  def preOnRateChangedFunc(self, ec_id):
+    print "preOnRateChangedFunc"
+    return
+    
+  def postOnInitializeFunc(self, ec_id, ret):
+    print "postOnInitializeFunc, ret: ", ret
+    return
+    
+  def postOnFinalizeFunc(self, ec_id, ret):
+    print "postOnFinalizeFunc, ret: ", ret
+    return
+    
+  def postOnStartupFunc(self, ec_id, ret):
+    print "postOnStartupFunc, ret: ", ret
+    return
+    
+  def postOnShutdownFunc(self, ec_id, ret):
+    print "postOnShutdownFunc, ret: ", ret
+    return
+    
+  def postOnActivatedFunc(self, ec_id, ret):
+    print "postOnActivatedFunc, ret: ", ret
+    return
+    
+  def postOnDeactivatedFunc(self, ec_id, ret):
+    print "postOnDeactivatedFunc, ret: ", ret
+    return
+    
+  def postOnAbortingFunc(self, ec_id, ret):
+    print "postOnAbortingFunc, ret: ", ret
+    return
+    
+  def postOnErrorFunc(self, ec_id, ret):
+    print "postOnErrorFunc, ret: ", ret
+    return
+    
+  def postOnResetFunc(self, ec_id, ret):
+    print "postOnResetFunc, ret: ", ret
+    return
+    
+  def postOnExecuteFunc(self, ec_id, ret):
+    print "postOnExecuteFunc, ret: ", ret
+    return
+    
+  def postOnStateUpdateFunc(self, ec_id, ret):
+    print "postOnStateUpdateFunc, ret: ", ret
+    return
+    
+  def postOnRateChangedFunc(self, ec_id, ret):
+    print "postOnRateChangedFunc, ret: ", ret
+    return
+    
+  def onAddPortFunc(self, pprof):
+    print "onAddPortFunc"
+    return
+    
+  def onRemovePortFunc(self, pprof):
+    print "onRemovePortFunc"
+    return
+    
+  def onAttachExecutionContextFunc(self, ec_id):
+    print "onAttachExecutionContextFunc"
+    return
+    
+  def onDetachExecutionContextFunc(self, ec_id):
+    print "onDetachExecutionContextFunc"
+    return
+
+
+  def onNotifyConnectFunc(self, pname, prof):
+    print "onNotifyConnectFunc pname: ",pname
+    return
+
+  def onNotifyDisconnectFunc(self, pname, prof):
+    print "onNotifyDisconnectFunc pname: ",pname
+    return
+
+  def onUnsubscribeInterfacesFunc(self, pname, profile):
+    print "onUnsubscribeInterfacesFunc pname: ", pname
+    return
+
+  def onPublishInterfacesFunc(self, portname, profile, ret):
+    print "onPublishInterfacesFunc pname: ", portname, " ret: ", ret
+    return
+
+  def onConnectNextportFunc(self, portname, profile, ret):
+    print "onConnectNextportFunc pname: ", portname, " ret: ", ret
+    return
+
+  def onSubscribeInterfacesFunc(self, portname, profile, ret):
+    print "onSubscribeInterfacesFunc pname: ", portname, " ret: ", ret
+    return
+
+  def onConnectedFunc(self, portname, profile, ret):
+    print "onConnectedFunc pname: ", portname, " ret: ", ret
+    return
+
+  def onDisconnectNextportFunc(self, portname, profile, ret):
+    print "onDisconnectNextportFunc pname: ", portname, " ret: ", ret
+    return
+
+  def onDisconnectedFunc(self, portname, profile, ret):
+    print "onDisconnectedFunc pname: ", portname, " ret: ", ret
+    return
+
+
+  def onInitialize(self):
+    self.addPreComponentActionListener(OpenRTM_aist.PreComponentActionListenerType.PRE_ON_FINALIZE,
+                                       self.preOnFinalizeFunc)
+    self.addPreComponentActionListener(OpenRTM_aist.PreComponentActionListenerType.PRE_ON_STARTUP,
+                                       self.preOnStartupFunc)
+    self.addPreComponentActionListener(OpenRTM_aist.PreComponentActionListenerType.PRE_ON_SHUTDOWN,
+                                       self.preOnShutdownFunc)
+    self.addPreComponentActionListener(OpenRTM_aist.PreComponentActionListenerType.PRE_ON_ACTIVATED,
+                                       self.preOnActivatedFunc)
+    self.addPreComponentActionListener(OpenRTM_aist.PreComponentActionListenerType.PRE_ON_DEACTIVATED,
+                                       self.preOnDeactivatedFunc)
+    self.addPreComponentActionListener(OpenRTM_aist.PreComponentActionListenerType.PRE_ON_ABORTING,
+                                       self.preOnAbortingFunc)
+    self.addPreComponentActionListener(OpenRTM_aist.PreComponentActionListenerType.PRE_ON_ERROR,
+                                       self.preOnErrorFunc)
+    self.addPreComponentActionListener(OpenRTM_aist.PreComponentActionListenerType.PRE_ON_RESET,
+                                       self.preOnResetFunc)
+    self.addPreComponentActionListener(OpenRTM_aist.PreComponentActionListenerType.PRE_ON_EXECUTE,
+                                       self.preOnExecuteFunc)
+    self.addPreComponentActionListener(OpenRTM_aist.PreComponentActionListenerType.PRE_ON_STATE_UPDATE,
+                                       self.preOnStateUpdateFunc)
+    self.addPreComponentActionListener(OpenRTM_aist.PreComponentActionListenerType.PRE_ON_RATE_CHANGED,
+                                       self.preOnRateChangedFunc)
+
+    self.addPostComponentActionListener(OpenRTM_aist.PostComponentActionListenerType.POST_ON_INITIALIZE,
+                                        self.postOnInitializeFunc)
+    self.addPostComponentActionListener(OpenRTM_aist.PostComponentActionListenerType.POST_ON_FINALIZE,
+                                        self.postOnFinalizeFunc)
+    self.addPostComponentActionListener(OpenRTM_aist.PostComponentActionListenerType.POST_ON_STARTUP,
+                                        self.postOnStartupFunc)
+    self.addPostComponentActionListener(OpenRTM_aist.PostComponentActionListenerType.POST_ON_SHUTDOWN,
+                                        self.postOnShutdownFunc)
+    self.addPostComponentActionListener(OpenRTM_aist.PostComponentActionListenerType.POST_ON_ACTIVATED,
+                                        self.postOnActivatedFunc)
+    self.addPostComponentActionListener(OpenRTM_aist.PostComponentActionListenerType.POST_ON_DEACTIVATED,
+                                        self.postOnDeactivatedFunc)
+    self.addPostComponentActionListener(OpenRTM_aist.PostComponentActionListenerType.POST_ON_ABORTING,
+                                        self.postOnAbortingFunc)
+    self.addPostComponentActionListener(OpenRTM_aist.PostComponentActionListenerType.POST_ON_ERROR,
+                                        self.postOnErrorFunc)
+    self.addPostComponentActionListener(OpenRTM_aist.PostComponentActionListenerType.POST_ON_RESET,
+                                        self.postOnResetFunc)
+    self.addPostComponentActionListener(OpenRTM_aist.PostComponentActionListenerType.POST_ON_EXECUTE,
+                                        self.postOnExecuteFunc)
+    self.addPostComponentActionListener(OpenRTM_aist.PostComponentActionListenerType.POST_ON_STATE_UPDATE,
+                                        self.postOnStateUpdateFunc)
+    self.addPostComponentActionListener(OpenRTM_aist.PostComponentActionListenerType.POST_ON_RATE_CHANGED,
+                                        self.postOnRateChangedFunc)
+
+    self.addPortActionListener(OpenRTM_aist.PortActionListenerType.ADD_PORT,
+                               self.onAddPortFunc)
+    self.addPortActionListener(OpenRTM_aist.PortActionListenerType.REMOVE_PORT,
+                               self.onRemovePortFunc)
+
+
+    self.addPortConnectListener(OpenRTM_aist.PortConnectListenerType.ON_NOTIFY_CONNECT,
+                                self.onNotifyConnectFunc)
+    self.addPortConnectListener(OpenRTM_aist.PortConnectListenerType.ON_NOTIFY_DISCONNECT,
+                                self.onNotifyDisconnectFunc)
+    self.addPortConnectListener(OpenRTM_aist.PortConnectListenerType.ON_UNSUBSCRIBE_INTERFACES,
+                                self.onUnsubscribeInterfacesFunc)
+
+    self.addPortConnectRetListener(OpenRTM_aist.PortConnectRetListenerType.ON_PUBLISH_INTERFACES,
+                                   self.onPublishInterfacesFunc)
+    self.addPortConnectRetListener(OpenRTM_aist.PortConnectRetListenerType.ON_CONNECT_NEXTPORT,
+                                   self.onConnectNextportFunc)
+    self.addPortConnectRetListener(OpenRTM_aist.PortConnectRetListenerType.ON_SUBSCRIBE_INTERFACES,
+                                   self.onSubscribeInterfacesFunc)
+    self.addPortConnectRetListener(OpenRTM_aist.PortConnectRetListenerType.ON_CONNECTED,
+                                   self.onConnectedFunc)
+    self.addPortConnectRetListener(OpenRTM_aist.PortConnectRetListenerType.ON_DISCONNECT_NEXT,
+                                   self.onDisconnectNextportFunc)
+    self.addPortConnectRetListener(OpenRTM_aist.PortConnectRetListenerType.ON_DISCONNECTED,
+                                   self.onDisconnectedFunc)
+
+
+    self._data = RTC.TimedLong(RTC.Time(0,0),0)
+    self._outport = OpenRTM_aist.OutPort("out", self._data)
+    # Set OutPort buffer
+    self.addOutPort("out", self._outport)
+    self._outport.addConnectorDataListener(OpenRTM_aist.ConnectorDataListenerType.ON_BUFFER_WRITE,
+                                           DataListener("ON_BUFFER_WRITE"))
+    self._outport.addConnectorDataListener(OpenRTM_aist.ConnectorDataListenerType.ON_BUFFER_FULL, 
+                                           DataListener("ON_BUFFER_FULL"))
+    self._outport.addConnectorDataListener(OpenRTM_aist.ConnectorDataListenerType.ON_BUFFER_WRITE_TIMEOUT, 
+                                           DataListener("ON_BUFFER_WRITE_TIMEOUT"))
+    self._outport.addConnectorDataListener(OpenRTM_aist.ConnectorDataListenerType.ON_BUFFER_OVERWRITE, 
+                                           DataListener("ON_BUFFER_OVERWRITE"))
+    self._outport.addConnectorDataListener(OpenRTM_aist.ConnectorDataListenerType.ON_BUFFER_READ, 
+                                           DataListener("ON_BUFFER_READ"))
+    self._outport.addConnectorDataListener(OpenRTM_aist.ConnectorDataListenerType.ON_SEND, 
+                                           DataListener("ON_SEND"))
+    self._outport.addConnectorDataListener(OpenRTM_aist.ConnectorDataListenerType.ON_RECEIVED,
+                                           DataListener("ON_RECEIVED"))
+    self._outport.addConnectorDataListener(OpenRTM_aist.ConnectorDataListenerType.ON_RECEIVER_FULL, 
+                                           DataListener("ON_RECEIVER_FULL"))
+    self._outport.addConnectorDataListener(OpenRTM_aist.ConnectorDataListenerType.ON_RECEIVER_TIMEOUT, 
+                                           DataListener("ON_RECEIVER_TIMEOUT"))
+    self._outport.addConnectorDataListener(OpenRTM_aist.ConnectorDataListenerType.ON_RECEIVER_ERROR,
+                                           DataListener("ON_RECEIVER_ERROR"))
+
+    self._outport.addConnectorListener(OpenRTM_aist.ConnectorListenerType.ON_CONNECT,
+                                       ConnListener("ON_CONNECT"))
+    self._outport.addConnectorListener(OpenRTM_aist.ConnectorListenerType.ON_DISCONNECT,
+                                       ConnListener("ON_DISCONNECT"))
+
+    return RTC.RTC_OK
+
+        
+  def onExecute(self, ec_id):
+    print "Please input number: ",
+    self._data.data = long(sys.stdin.readline())
+    if self._data.data == 9:
+      return RTC.RTC_ERROR
+    OpenRTM_aist.setTimestamp(self._data)
+    print "Sending to subscriber: ", self._data.data
+    self._outport.write()
+    return RTC.RTC_OK
+
+
+def ConsoleInInit(manager):
+  profile = OpenRTM_aist.Properties(defaults_str=consolein_spec)
+  manager.registerFactory(profile,
+                          ConsoleIn,
+                          OpenRTM_aist.Delete)
+
+
+def MyModuleInit(manager):
+  ConsoleInInit(manager)
+
+  # Create a component
+  comp = manager.createComponent("ConsoleIn")
+
+def main():
+  # Initialize manager
+  mgr = OpenRTM_aist.Manager.init(sys.argv)
+
+  # Set module initialization proceduer
+  # This procedure will be invoked in activateManager() function.
+  mgr.setModuleInitProc(MyModuleInit)
+
+  # Activate manager and register to naming service
+  mgr.activateManager()
+
+  # run the manager in blocking mode
+  # runManager(False) is the default
+  mgr.runManager()
+
+  # If you want to run the manager in non-blocking mode, do like this
+  # mgr.runManager(True)
+
+if __name__ == "__main__":
+  main()

Copied: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/ComponentObserver.idl (from rev 478, branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/test/ComponentObserver.idl)
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/ComponentObserver.idl	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/ComponentObserver.idl	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,512 @@
+// -*- IDL -*-
+/*!
+ * @file ComponentObserver.idl
+ * @brief Component observer SDO service
+ * @date $Date$
+ * @author Noriaki Ando <n-ando at aist.go.jp>
+ *
+ * Copyright (C) 2011
+ *     Noriaki Ando
+ *     Intelligent Systems Research Institute,
+ *     National Institute of
+ *         Advanced Industrial Science and Technology (AIST), Japan
+ *     All rights reserved.
+ *
+ * $Id$
+ *
+ */
+
+#include "SDOPackage.idl"
+#include "RTC.idl"
+
+/*!
+ * @if jp
+ * @brief コンポーネント状態オブザーバインターフェース
+ *
+ * コンポーネントの状態を監視するためのオブザーバインターフェース。オブ
+ * ザーバパターンに従い、外部ツールがコンポーネントにオブザーバオブジェ
+ * クトをセットし、コンポーネントは各種内部状態変更時にをオブザーバオブ
+ * ジェクトをコールし、オブザーバに対して変更を通知する。
+ *
+ * @since 1.1
+ *
+ * @else
+ * @brief Component state observer interface
+ *
+ * This interface defines observer interface for component states.
+ * According to the observer pattern, tools which want to observe
+ * component state set observer objects to the RT-Component, and weh
+ * RT-Component changes its status, the observer object is called and
+ * notice the changes to tools.
+ *
+ *
+ * @since 1.1
+ * @endif
+ */
+module OpenRTM
+{
+  /*!
+   * @if jp
+   *
+   * @brief 更新された状態の種類
+   * 
+   * ターゲットRTCで更新された状態の種類を分類する列挙型。
+   * 
+   * @else
+   *
+   * @brief A kind of updated status
+   * 
+   * This is a enumeration type to classify updated status in target RTC.
+   *
+   * @endif
+   */
+  enum StatusKind
+  {
+    /*!
+     * @if jp
+     *
+     * @brief コンポーネントプロファイル
+     * 
+     * コンポーネントプロファイル RTC::ComponentProfile が更新されたこ
+     * とを示す列挙型。
+     *
+     * RTC::ComponentProfile のメンバーのうち、instance_name,
+     * type_name, description, version, vendor, category はRTC動作中に
+     * 変更されることはない。これらが変更された場合には、
+     * ComponentObserver::updatestatus() の hint には、それぞれのメンバー
+     * 名が文字列で指定される。また、parent に対する変更は通知されない。
+     * さらに、properties に対する変更は、hint に "<key0>, <key1>,
+     * ..." の形で通知される。
+     *
+     * port_profiles に対する変更は、後述の PORT_PROFILE によって通知さ
+     * れるため、COMPONENT_PROFILE では通知されない。
+     *
+     * @else
+     *
+     * @brief Component profile
+     * 
+     * This is enumeration member to specify that the target
+     * component's RTC::componentProfile has been changed.
+     *
+     * In the member of RTC::ComponentProfile, instance_name,
+     * type_name, description, version, vendor, category are not
+     * modified during RTC running. If these members are changed, each
+     * member's name is specified in the
+     * ComponentObserver::updateStatus() 's hint argument. And,
+     * modification to parent is not notified. In the properties, the
+     * modification is notified as "<key0>, <key1>, ..." in the hint
+     * argument.
+     * 
+     * The modification to port_profiles is not notified as
+     * COMPONENT_PROFILE becauase it is notified as PORT_PROFILE.
+     *
+     * @endif
+     */
+    COMPONENT_PROFILE,
+    /*!
+     * @if jp
+     *
+     * @brief コンポーネントの状態
+     * 
+     * コンポーネントの状態が変化したことを示す列挙子。
+     *
+     * RTCにはECの状態として、INACTIVE_STATE, ACTIVE_STATE,
+     * ERROR_STATE があるが、この状態が変化したことを通知するための列挙
+     * 子。
+     *
+     * ComponentObserver::updatestatus() の hint には、状態と、どの実行
+     * コンテキストで変化があったかを知らせる以下の文字列が hint に引数
+     * として与えられる。
+     *
+     * hint: (INACTIVE, ACTIVE, ERROR):<Execution Context ID>
+     * 例:
+     *   ACTIVE:0 (デフォルトコンテキストでRTCがアクティブになった)
+     *   ERROR:1002 (実行コンテキスト1002でRTCがエラーになった)
+     *
+     * @else
+     *
+     * @brief Component status
+     * 
+     * This is INACTIVE_STATE, ACTIVE_STATE,
+     * ERROR_STATE status, and this enumerator specify a status of RTC changed.
+     *
+     * A status and ExecutionContext's id is specified in the argument of 
+     * ComponentObserver::updateStatus() 's hint.
+     *
+     * hint: (INACTIVE, ACTIVE, ERROR):<Execution Context ID>
+     * Example:
+     *   ACTIVE:0 (RTC is activated in the default ExecuionContext)
+     *   ERROR:1002 (RTC go to ERROR state in the EC of id 1002)
+     *
+     * @endif
+     */
+    RTC_STATUS,
+    /*!
+     * @if jp
+     *
+     * @brief ExecutionContextの状態
+     * 
+     * ExecutionContextの状態が変化したことを示す列挙子。
+     *
+     * RTCにECが attach/detach/rate_change/startup/shutdown されたことを
+     * 示す列挙子。
+     *
+     * ComponentObserver::updatestatus() の hint には、
+     * attach/detach/rate_change/startup/shutdow のいずれが行われたかと、
+     * 対象となるECのidが与えられる。
+     *
+     * hint: (ATTACHED, DETACHED, RATE_CHANGED, STARTUP,
+     *        SHUTDOWN):<Execution Context ID>
+     *
+     * 例:
+     *   ATTACHED:1002 (ECがアタッチされ、そのIDは1002)
+     *
+     * @else
+     *
+     * @brief The stauts of ExecutionContext
+     * 
+     * This is enumerator notifies that ExecutionContext is
+     * attach/detach/rate_change/startup/shutdown.  Attach or detach
+     * operation and target ExecutionContext's id is given in the
+     * argument of ComponentObserver::updateStatus() 's hint.
+     *
+     * hint: (ATTACHED, DETACHED, RATE_CHANGED, STARTUP,
+     *        SHUTDOWN):<Execution Context ID>
+     *
+     * Example:
+     *   ATTACHED:1002 (EC is attached and its ID is 1002)
+     *
+     * @endif
+     */
+    EC_STATUS,
+    /*!
+     * @if jp
+     *
+     * @brief Portの状態
+     * 
+     * Portの状態が変化したことを示す列挙子。Portの追加、削除、接続、切
+     * 断が行われたことを示す。ComponentObserver::updatestatus() の
+     * hint には、いずれかのアクションが行われたかと、対象となるポート
+     * の名前が与えられる。
+     *
+     * hint: (ADD, REMOVE, CONNECT, DISCONNECT):<port name>
+     * 例:
+     *   CONNECT:velocity (velocity ポートで接続が確立された)
+     *
+     * @else
+     *
+     * @brief The stauts of ports
+     * 
+     * This is enumerator which notifies that port is added, removed,
+     * connected and/or disconnected.  Which action is performed and
+     * target port's name is given to the hint argument in
+     * ComponentObserver::updateStatus() operation.
+     *
+     * hint: (ADD, REMOVE, CONNECT, DISCONNECT):<port name>
+     * Example:
+     *   CONNECT:velocity (A connection established in the velocity port)
+     *
+     * @endif
+     */
+    PORT_PROFILE,
+    /*!
+     * @if jp
+     *
+     * @brief Configurationの状態
+     * 
+     * Configurationの状態が変化したことを示す列挙子。Configurationに対
+     * して、コンフィギュレーションパラメータが更新された
+     * (UPDATE_CONFIG_PARAM)、コンフィギュレーションがセット(更新)さ
+     * れた (SET_CONFIG_SET)、コンフィギュレーションセットが追加された
+     * (ADD_CONFIG_SET)、コンフィギュレーションが更新された
+     * (UPDATE_CONFIG_SET)、コンフィギュレーションセットが削除された
+     * (REMOVE_CONFIG_SET)、コンフィギュレーションセットがアクティブに
+     * された (ACTIVATE_CONFIG_SET) といったアクションがあったことが通
+     * 知される。
+     *
+     * - UPDATE_CONFIG_PARAM: <config set name>.<config param name>
+     *   - SDOPackage::Configuration::set_configuration_parameter
+     * - SET_CONFIG_SET: <config set name>
+     *   - SDOPackage::Configuration::set_configuration_set_values
+     * - ADD_CONFIG_SET: <config set name>
+     *   - SDOPackage::Configuration::add_configuration_set
+     * - UPDATE_CONFIG_SET: <config set name>
+     *   - 内部のコンフィグセットを実際の変数に反映する
+     * - REMOVE_CONFIG_SET: <config set name>
+     *   - SDOPackage::Configuration::remove_configuration_set
+     * - ACTIVATE_CONFIG_SET:  <config set name>
+     *   - SDOPackage::Configuration::activate_configuration_set
+     * 
+     * @else
+     *
+     * @brief The stauts of ports
+     * 
+     * This is enumerator which notifies that configuration is
+     * changed.  To the configuration, a configuration parameter has
+     * been updated (UPDATE_CONFIG_PARAM), a configuration-set is set
+     * (SET_CONFIG_SET), a configuration set has been updated
+     * (UPDATE_CONFIG_SET), a configuration set has been added
+     * (ADD_CONFIG_SET) or removed (REMOVE_CONFIG_SET), the active
+     * configuration set has been changed (ACTIVATE_CONFIG_SET), these
+     * actions would be notified.
+     *
+     * - UPDATE_CONFIG_PARAM: <config set name>.<config param name>
+     *   - SDOPackage::Configuration::set_configuration_parameter
+     * - SET_CONFIG_SET: <config set name>
+     *   - SDOPackage::Configuration::set_configuration_set_values
+     * - ADD_CONFIG_SET: <config set name>
+     *   - SDOPackage::Configuration::add_configuration_set
+     * - UPDATE_CONFIG_SET: <config set name>
+     *   - Apply configuration-set values into actual variables.
+     * - REMOVE_CONFIG_SET: <config set name>
+     *   - SDOPackage::Configuration::remove_configuration_set
+     * - ACTIVATE_CONFIG_SET:  <config set name>
+     *   - SDOPackage::Configuration::activate_configuration_set
+     *
+     * @endif
+     */
+    CONFIGURATION,
+    /*!
+     * @if jp
+     *
+     * @brief ハートビートイベント
+     * 
+     * 当該RTCが生存していることをオブザーバー側に通知する列挙子。
+     *
+     * ハートビートを利用するかどうか、およびハートビートの周期は、
+     * ServiceProfile::properties の以下のプロパティによって与えられる。
+     *
+     * heartbeat.enable: YES/NO
+     * heartbeat.interval: x [s]
+     * 
+     * @else
+     *
+     * @brief The stauts of ports
+     * 
+     * This enumerator is heart beat notification.
+     *
+     * Whether if the heart-beat function is used is specified in the
+     * ServiceProfile::properties as the following properties.
+     *
+     * heartbeat.enable: YES/NO
+     * heartbeat.interval: x [s]
+     *
+     * @endif
+     */
+    HEARTBEAT,
+
+    STATUS_KIND_NUM
+  };
+
+  /*!
+   * @if jp
+   *
+   * @interface ComponentObserver
+   * 
+   * RTCの各種状態の更新を知らせるためのオブザーバーオブジェクトのため
+   * のインターフェース。SDO Service として、対象となるRTC/SDOに対して
+   * アタッチされ、RTC/SDO内の状態が変更された場合に、変更された状態の
+   * 種類とヒントを同時に通知する。ツールなどで、ポーリングによらずRTC
+   * の状態の変化を知りたい場合などに利用する。
+   *
+   * 想定している利用方法は以下のとおりである。
+   *
+   * -# SDO::get_configuration() により Configuration オブジェクトを取得
+   * -# Configuration::add_service_profile() によりTool側の
+   *     ComponentObserver を ServiceProfile により RTC に与える。
+   *     ServiceProfile のメンバーは以下のように設定すること
+   *   - id: UUID など一意なIDを設定する。削除時にも必要になるので、Tool
+   *     側ではIDを保持しておかなければならない。
+   *   - interface_type: 当該サービスのIFRのIDを文字列として指定。RTC側で
+   *     はこの文字列により当該サービスオブジェクトを受け入れるか決定す
+   *     るため指定は必須となる。
+   *   - properties: RTC側のサービスの受け入れ側に通知するプロパティを設
+   *     定する。このサービスでは、下記の heartbeat 関連のプロパティを
+   *     指定する。
+   *    - service: SDOService オブジェクトの参照を指定する。
+   * -# RTC側で状態の変化があった場合に update_status() オペレーション
+   *     が StatusKind および hint の文字列とともに呼び出される。Tool側
+   *     では、StatusKind と hint に基づき RTC のある部分の状態が変化し
+   *     たことを知り、必要な処理を行う。
+   * -# 最終的にComponentObserverオブジェクトが不要になった場合には、
+   *     Configuration::remove_service_profile() を id とともに呼び出し
+   *     RTC から削除する。
+   *
+   * <pre>
+   * 
+   *   [RTC]    [Configuration]           [Observer]    [Tool]
+   *     |            |                       |            |
+   *     |            | get_configuration()   |            |
+   *     |<------------------------------------------------|
+   *     |            |                       |            |
+   *     |            | add_service_profile(prof)          |
+   *     |            |<-----------------------------------|
+   *     |            |                       |            |
+   *     |            | update_status(kind, hint)          |
+   *     |----------------------------------->|            |
+   *     |            | update_status(kind, hint)          |
+   *     |----------------------------------->|            |
+   *     |            |       :               |            |
+   *     |            |                       |            |
+   *     |            | remove_service_profile(id)         |
+   *     |            |<-----------------------------------|
+   *     |            |                       |            |
+   *     |            |                       x            x
+   *
+   * </pre>
+   *
+   * なお、ServiceProfile::properties に指定するプロパティとしては、
+   *
+   * - observed_status: ALL or kind of status
+   * - heartbeat.enable: YES/NO
+   * - heartbeat.interval: x [s]
+   * 
+   * がある。
+   * 
+   * - observed_staus: ALL または状態の種類をカンマ区切りで指定
+   *   監視する状態を指定する。指定可能な状態を表す文字列は、
+   *   COMPONENT_PROFILE, RTC_STATUS, EC_STATUS, PORT_PROFILE,
+   *   CONFIGURATION 5種類である。監視したい対象をカンマで区切り複数指
+   *   定することができる。また、すべての状態を監視する場合、ALL を指定
+   *   することができる。指定文字列は大文字、小文字を問わない。
+   *
+   * - heartbeat.interval: 秒単位で数値で指定
+   *   ハートビートを送信する周期を秒単位で指定する。なお、指定した秒数
+   *   でハートビートが必ず送信される保証はない。したがって、RTCが死ん
+   *   だかどうかを確認するには、heartbeat.interval 数回分の時間を待つ
+   *   必要がある。
+   *
+   * - heartbeat.enable: YES または NOで指定
+   *   Tool側では、状態に変化があるまで RTC が生存しているかどうか知る
+   *   ことはできないため、突然RTCが死んだ場合には、これを知ることがで
+   *   きない。そこで、HEART_BEAT イベントを周期的にRTC側から送らせるこ
+   *   とができる。ハートビートを有効にするか否かをこのオプションで指定
+   *   する。
+   * 
+   * 
+   * @else
+   *
+   * @interface ComponentObserver
+   * 
+   * This is an interface to notify various status changed in RTC to
+   * others.  This is attached into a target RTC/SDO as a SDO service,
+   * and if an RTC/SDO's status change, a kind of changed status and
+   * its hints are notified to observers.  For example, it can be used
+   * to notify RTC's status changed without polling in certain tools.
+   *
+   * An assumed usage is as follows.
+   *
+   * -# SDO::get_configuration() is called to get a Configuration object
+   *
+   * -# Configuration::add_service_profile() is called by Tool.
+   *     A ComponentObserver in a ServiceProfile is given to RTC.
+   *     ServiceProfile members should be set as follows.
+   *
+   *    - id: UUID and other unique ID should be specified. Since this ID
+   *      is used when the service is removed, tools should remember
+   *      this ID.
+   *
+   *    - interface_type: IFR ID should be specified here. Since the RTC
+   *      decides if the given SDO service object can be accepted by
+   *      using the interface_type string, this member is mandatory.
+   * 
+   *    - properties: This member specifies properties to be notified to
+   *      RTC side. In this service, the following heartbeat related
+   *      properties should be specified.
+   *
+   *    - service: SDOService object reference should be specified.
+   * 
+   * -# If some changes happen in RTC, the update_status() operation
+   *    is called with StatusKind and hint string. RTC's status change
+   *    is notified to tool and some processes would be performed by
+   *    the tool according to the StatusKind and hint.
+   *
+   * -# Finally, When the ComponentObserver object becomes
+   *     unnecessary, Configuration::remove_service_profile() is called
+   *     with id and it is removed from RTC.
+   *
+   * <pre>
+   * 
+   *   [RTC]    [Configuration]           [Observer]    [Tool]
+   *     |            |                       |            |
+   *     |            | get_configuration()   |            |
+   *     |<------------------------------------------------|
+   *     |            |                       |            |
+   *     |            | add_service_profile(prof)          |
+   *     |            |<-----------------------------------|
+   *     |            |                       |            |
+   *     |            | update_status(kind, hint)          |
+   *     |----------------------------------->|            |
+   *     |            | update_status(kind, hint)          |
+   *     |----------------------------------->|            |
+   *     |            |       :               |            |
+   *     |            |                       |            |
+   *     |            | remove_service_profile(id)         |
+   *     |            |<-----------------------------------|
+   *     |            |                       |            |
+   *     |            |                       x            x
+   *
+   * </pre>
+   *
+   * Properties which is specified in ServiceProfile::properties is as follows.
+   *
+   * - observed_status: ALL or kind of status
+   * - heartbeat.enable: YES/NO
+   * - heartbeat.interval: x [s]
+   * 
+   *
+   * - observed_staus: ALL or comma separated status kinds This
+   *   property specifies kind of status to be observed. Available
+   *   kind of statuses are COMPONENT_PROFILE, RTC_STATUS, EC_STATUS,
+   *   PORT_PROFILE, CONFIGURATION. You can specify comma-separated
+   *   status list to be observed. And if you want to observe all the
+   *   status, you just specify ALL instead of all the status kind
+   *   list. Uppercase, lowercase and mixture are allowed in the
+   *   specified status kind.
+   *
+   * - heartbeat.enable: YES or NO
+   *
+   *   Since tools cannot know whether the RTC is alive or not until
+   *   status change happens, if the RTC suddenly died, the tools
+   *   cannot know it forever. To eliminate this problems, Observer
+   *   object can send periodic heartbeat signals to observers. The
+   *   heartbeat.enable option specifies whether the functionality is
+   *   activated or not.
+   *
+   * - heartbeat.interval: Heartbeat interval should be specified in
+   *   seconds.  This specification does not guarantee that heartbeat
+   *   signals precisely send back to observer. Therefore if you need
+   *   to decide whether an RTC died or not, you have to wait for
+   *   several heartbeat signals.
+   *
+   * @endif
+   */
+  interface ComponentObserver
+    : SDOPackage::SDOService
+  {
+    /*!
+     * @if jp
+     *
+     * @brief 状態が更新されたことを知らせる
+     * 
+     * 状態が更新されたことを知らせるオペレーション。status_kind によっ
+     * て更新された状態の種類、hint によってどのような状態が変更された
+     * かに関するヒントが与えられる。
+     *
+     * @param status_kind: StatusKind 型の状態の種類
+     * @param hint; StatusKind 毎に決まる状態変更に関するヒント
+     *
+     * @else
+     *
+     * @brief Notifies the status updated
+     *
+     * This operation notifies the updated status. The status_kind
+     * notifies kind of updated status, and the hint give some hint
+     * about updated status.
+     *
+     * @endif
+     */
+    oneway void update_status(in StatusKind status_kind, in string hint);
+  };
+
+};

Copied: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/DataPort.idl (from rev 478, branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/test/DataPort.idl)
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/DataPort.idl	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/DataPort.idl	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,48 @@
+// -*- IDL -*-
+/*!
+ * @file DataPort.idl
+ * @brief DataPort interface definition
+ * @date $Date: 2007-01-09 15:40:14 $
+ * @author Noriaki Ando <n-ando at aist.go.jp>
+ *
+ * Copyright (C) 2006
+ *     Noriaki Ando
+ *     Task-intelligence Research Group,
+ *     Intelligent Systems Research Institute,
+ *     National Institute of
+ *         Advanced Industrial Science and Technology (AIST), Japan
+ *
+ *     All rights reserved.
+ *
+ * $Id: DataPort.idl 1597 2009-12-22 02:26:17Z n-ando $
+ *
+ */
+
+#ifndef DataInPort_idl
+#define DataInPort_idl
+
+module OpenRTM
+{
+  enum PortStatus
+  {
+    PORT_OK,
+    PORT_ERROR,
+    BUFFER_FULL,
+    BUFFER_EMPTY,
+    BUFFER_TIMEOUT,
+    UNKNOWN_ERROR
+  };
+
+  typedef sequence<octet> CdrData;
+
+  interface InPortCdr
+  {
+    PortStatus put(in CdrData data);
+  };
+
+  interface OutPortCdr
+  {
+    PortStatus get(out CdrData data);
+  };
+};
+#endif

Copied: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/MySdoServiceConsumer.py (from rev 478, branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/test/MySdoServiceConsumer.py)
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/MySdoServiceConsumer.py	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/MySdoServiceConsumer.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,54 @@
+#!/usr/bin/env python
+# -*- Python -*-
+
+
+## \file MySdoServiceConsumer.py
+## \brief test for SdoServiceConsumer class
+## \date $Date: $
+## \author Shinji Kurihara
+#
+# Copyright (C) 2011
+#     Task-intelligence Research Group,
+#     Intelligent Systems Research Institute,
+#     National Institute of
+#         Advanced Industrial Science and Technology (AIST), Japan
+#     All rights reserved.
+#
+
+import sys
+sys.path.insert(1,"../")
+sys.path.insert(1,"../RTM_IDL")
+import OpenRTM_aist
+import OpenRTM
+
+
+class MySdoServiceConsumer(OpenRTM_aist.SdoServiceConsumerBase):
+  def __init__(self):
+    self._profile = None
+    self._rtobj = None
+    return
+
+  def __del__(self):
+    return
+
+  def init(self, rtobj, profile):
+    self._rtobj = rtobj
+    self._profile = profile
+    return True
+
+  def reinit(self, profile):
+    return
+
+  def getProfile(self):
+    return self._profile
+
+  def finalize(self):
+    return
+
+
+def MySdoServiceConsumerInit(manager):
+  factory = OpenRTM_aist.SdoServiceConsumerFactory.instance()
+  factory.addFactory(OpenRTM_aist.toTypename(OpenRTM.ComponentObserver),
+                     MySdoServiceConsumer,
+                     OpenRTM_aist.Delete)
+  return

Copied: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/OpenRTM.idl (from rev 478, branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/test/OpenRTM.idl)
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/OpenRTM.idl	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/OpenRTM.idl	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,64 @@
+// -*- IDL -*-
+/*!
+ * @file OpenRTM.idl
+ * @brief OpenRTM interface definition
+ * @date $Date: 2007-09-21 09:19:33 $
+ * @author Noriaki Ando <n-ando at aist.go.jp>
+ *
+ * Copyright (C) 2007
+ *     Task-intelligence Research Group,
+ *     Intelligent Systems Research Institute,
+ *     National Institute of
+ *         Advanced Industrial Science and Technology (AIST), Japan
+ *     All rights reserved.
+ *
+ * $Id: OpenRTM.idl 1338 2009-05-18 05:58:25Z n-ando $
+ *
+ */
+
+#include "RTC.idl"
+
+#pragma prefix "openrtm.aist.go.jp"
+
+module OpenRTM
+{
+
+  interface DataFlowComponent
+    : RTC::RTObject, RTC::DataFlowComponent
+  {
+  };
+
+//  interface FiniteStateMachineComponent
+//    : RTC::RTObject, RTC::FsmParticipant
+//  {
+//  };
+//
+//  interface DataFlowFiniteStateMachineComponent
+//    : RTC::RTObject, RTC::DataFlowComponent, RTC::FsmParticipant
+//  {
+//  };
+//
+//  interface DataFlowMultiModeComponent
+//    : RTC::RTObject, RTC::DataFlowComponent, RTC::MultiModeObject
+//  {
+//  };
+//
+//  interface FiniteStateMachineMultiModeComponent
+//    : RTC::RTObject, RTC::FsmParticipant, RTC::MultiModeObject
+//  {
+//  };
+//
+//  interface DataFlowFiniteStateMachineMultiModeComponent
+//    : RTC::RTObject, RTC::DataFlowComponent,
+//    RTC::FsmParticipant, RTC::MultiModeObject
+//  {
+//  };
+
+
+  interface ExtTrigExecutionContextService
+    : RTC::ExecutionContextService
+  {
+    void tick();
+  };
+
+};

Copied: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/RTC.idl (from rev 478, branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/test/RTC.idl)
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/RTC.idl	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/RTC.idl	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,2649 @@
+// RTC.idl
+
+#include "SDOPackage.idl"
+
+#pragma prefix "omg.org"
+
+#define EXECUTION_HANDLE_TYPE_NATIVE long
+
+module RTC
+{
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief ExecutionContextHandle_t
+   *
+   * @section Description
+   *
+   * This data type represents the association between an RTC and an
+   * ExecutionContext in which it participates.
+   * 
+   * @section Semantics
+   *
+   * This is an opaque DataType. It has no attributes or operations.
+   *
+   * @endif
+   */
+  typedef EXECUTION_HANDLE_TYPE_NATIVE ExecutionContextHandle_t;
+
+  typedef SDOPackage::UniqueIdentifier UniqueIdentifier;
+  typedef SDOPackage::NVList NVList;
+  
+  /*!
+   * @if jp
+   * @brief ReturnCode_t
+   *
+   * OMG RTC 1.0 仕様中の多くのオペレーションは、クラインとに対して考え
+   * られるエラー状態を報告する必要がある。これは、ReturnCode_t型の所謂
+   * リターンコードにより行われる。
+   *
+   * OMG RTC 1.0 の PIM 内において、ReturnCode_t型の値を返さないオペレーションは
+   * それらの戻り値の型に依存して、次の方法によりエラーを報告するものとする。
+   * -オペレーションが正数値を返す場合 (OMG RTC 1.0 Section 5.2.2.6.4 の
+   *  get_rateのように)、負数値を返すことによりエラーを示すものとする。
+   * - オペレーションがオブジェクトリファレンス(RTObject::get_component_profile
+   *   OMG RTC 1.0 5.4.2.2.1を参照) を通常返す場合、nil参照を返すことにより
+   *   エラーを示すものとする。
+   *
+   * @else
+   * @brief ReturnCode_t
+   *
+   * A number of operations in this specification will need to report
+   * potential error conditions to their clients. This task shall be
+   * accomplished by means of operation "return codes" of type
+   * ReturnCode_t
+   *
+   * Operations in the PIM that do not return a value of type
+   * ReturnCode_t shall report errors in the following ways, depending
+   * on their return type:
+   * - If an operation normally returns a positive numerical value (such as
+   *   get_rate, see [OMG RTC 1.0 Section 5.2.2.6.4]), it shall indicate
+   *   failure by returning a negative value.
+   * - If an operation normally returns an object reference (such as
+   *   RTObject::get_component_profile, see [OMG RTC 1.0 Section 5.4.2.2.1]),
+   *   it shall indicate failure by returning a nil reference.
+   *
+   * @param RTC_OK The operation completed successfully.
+   * @param RTC_ERROR The operation failed with a generic, unspecified error.
+   * @param BAD_PARAMETER The operation failed because an illegal argument was
+   *        passed to it.
+   * @param UNSUPPORTED The operation is unsupported by the implementation
+   *        (e.g., it belongs to a compliance point that is not implemented).
+   * @param OUT_OF_RESOURCES The target of the operation ran out of the
+   *        resources needed to complete the operation.
+   * @param PRECONDITION_NOT_MET A pre-condition for the operation was not met.
+   *
+   * @endif
+   */
+  enum ReturnCode_t
+  {
+    RTC_OK,
+    RTC_ERROR,
+    BAD_PARAMETER,
+    UNSUPPORTED,
+    OUT_OF_RESOURCES,
+    PRECONDITION_NOT_MET
+  };
+
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief LifeCycleState
+   *
+   * @section Description
+   * LifeCycleState is an enumeration of the states in the lifecycle above.
+   *
+   * @endif
+   */
+  enum LifeCycleState
+  {
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief CREATED
+     *
+     * @section Description
+     *
+     * The RTC object has been instantiated but not yet fully initialized.
+     * @endif
+     */
+    CREATED_STATE,
+
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief INACTIVE
+     *
+     * @section Description
+     *
+     * The RTC is Alive but is not being invoked in any execution
+     * context (see Section 5.2.2.5), regardless of whether the context
+     * is Running or not.
+     *
+     * @section Semantics
+     *
+     * An instance of this state exists for each execution context in
+     * which the RTC participates. If the RTC does not participate in
+     * any execution context, a single instance of this state exists.
+     *
+     * @endif
+     */
+    INACTIVE_STATE,
+
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief ACTIVE
+     *
+     * @section Description
+     *
+     * The RTC is Alive and will be invoked in the execution context
+     * if the context is Running.
+     *
+     * @section Semantics
+     * 
+     * An instance of this state exists for each execution context in
+     * which the RTC participates. If the RTC does not participate in
+     * any execution context, this state shall never be observed.
+     *
+     * @endif
+     */
+    ACTIVE_STATE,
+
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief ERROR
+     *
+     * @section Description
+     *
+     * The RTC has encountered a problem in a given execution context
+     * and cannot continue functioning in that context without being
+     * reset.
+     *
+     * @endif
+     */
+    ERROR_STATE
+  };
+  
+  interface ExecutionContext;
+  typedef sequence<ExecutionContext> ExecutionContextList;
+
+  /*!
+   * @if jp
+   * @brief
+   * @else
+   * @brief ComponentAction
+   *
+   * @section Description
+   *
+   * The ComponentAction interface provides callbacks corresponding to
+   * the execution of the lifecycle operations of LightweightRTObject
+   * (see Section 5.2.2.2) and ExecutionContext (see Section
+   * 5.2.2.5). An RTC developer may implement these callback
+   * operations in order to execute application-specific logic
+   * pointing response to those transitions.
+   *
+   * @section Semantics
+   *
+   * Clients of an RTC are not expected to invoke these operations
+   * directly; they are provided for the benefit of the RTC middleware
+   * implementation.
+   *
+   * @endif
+   */
+  interface ComponentAction
+  {
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief on_initialize
+     *
+     * @section Description
+     *
+     * The RTC has been initialized and entered the Alive state.
+     *
+     * @section Semantics
+     *
+     * Any RTC-specific initialization logic should be performed here.
+     *
+     * @endif
+     */
+    ReturnCode_t on_initialize();
+
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief on_finalize
+     *
+     * @section Description
+     *
+     * The RTC is being destroyed.
+     *
+     * @section Semantics
+     *
+     * Any final RTC-specific tear-down logic should be performed here.
+     *
+     * @endif
+     */
+    ReturnCode_t on_finalize();
+
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief on_startup
+     *
+     * @section Description
+     *
+     * The given execution context, in which the RTC is participating,
+     * has transitioned from Stopped to Running.
+     *
+     * @endif
+     */
+    ReturnCode_t on_startup(in ExecutionContextHandle_t exec_handle);
+
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief on_shutdown
+     *
+     * @section Description
+     *
+     * The given execution context, in which the RTC is participating,
+     * has transitioned from Running to Stopped.
+     *
+     * @endif
+     */
+    ReturnCode_t on_shutdown(in ExecutionContextHandle_t exec_handle);
+
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief on_activated
+     *
+     * @section Description
+     *
+     * The RTC has been activated in the given execution context.
+     *
+     * @endif
+     */
+    ReturnCode_t on_activated(in ExecutionContextHandle_t exec_handle);
+
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief on_deactivated
+     *
+     * @section Description
+     *
+     * The RTC has been deactivated in the given execution context.
+     *
+     * @endif
+     */
+    ReturnCode_t on_deactivated(in ExecutionContextHandle_t exec_handle);
+
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief on_aborting
+     *
+     * @section Description
+     *
+     * The RTC is transitioning from the Active state to the Error
+     * state in some execution context.
+     *
+     * @section Semantics
+     *
+     * This callback is invoked only a single time for time that the
+     * RTC transitions into the Error state from another state. This
+     * behavior is in contrast to that of on_error.  
+     *
+     * @endif
+     */
+    ReturnCode_t on_aborting(in ExecutionContextHandle_t exec_handle);
+
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief on_error
+     *
+     * @section Description
+     *
+     * The RTC remains in the Error state.
+     *
+     * @section Semantics
+     *
+     * If the RTC is in the Error state relative to some execution
+     * context when it would otherwise be invoked from that context
+     * (according to the context’s ExecutionKind), this callback
+     * shall be invoked instead. For example,
+     *
+     * - If the ExecutionKind is PERIODIC, this operation shall be
+     *   invoked in sorted order at the rate of the context instead of
+     *   DataFlowComponentAction::on_execute and on_state_update.
+     *
+     * - If the ExecutionKind is EVENT_DRIVEN, this operation shall be
+     *   invoked whenever FsmParticipantAction::on_action would
+     *   otherwise have been invoked.
+     *
+     * @endif
+     */
+    ReturnCode_t on_error(in ExecutionContextHandle_t exec_handle);
+
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief on_reset
+     *
+     * @section Description
+     *
+     * The RTC is in the Error state. An attempt is being made to
+     * recover it such that it can return to the Inactive state.
+     *
+     * @section Semantics
+     *
+     * If the RTC was successfully recovered and can safely return to
+     * the Inactive state, this method shall complete with
+     * ReturnCode_t::OK. Any other result shall indicate that the RTC
+     * should remain in the Error state.
+     *
+     * @endif
+     */
+    ReturnCode_t on_reset(in ExecutionContextHandle_t exec_handle);
+  };
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief LightweightRTObject
+   * 
+   * @section Description
+   *
+   * This interface is realized by all lightweight RTCs (as required
+   * by the lightweightRTComponent stereotype). It defines the states
+   * and transitions through which all RTCs will pass from the time
+   * they are created until the time they are destroyed.
+   *
+   * @section Semantics
+   * @subsection Initialization
+   *
+   * An RTC begins in the Created state; at this point, it has been
+   * instantiated but not yet fully initialized. Note that this state
+   * is highly implementation-dependent. For example, it may
+   * correspond to the invocation of a constructor in languages that
+   * support that concept, but not all languages do. Furthermore, how
+   * soon this state is entered before initialize is invoked is
+   * implementation-dependent. Therefore, it should be relied on by
+   * RTC implementers only to the minimum extent possible.  An RTC
+   * that has completed its initialization and has not been finalized
+   * is said to be Alive.
+   *
+   * @subsection Execution Context
+   *
+   * An RTC in the Alive state may participate in any number of
+   * execution contexts (see Section 5.2.2.5 ). These contexts shall
+   * be represented to an RTC as distinct instances of the
+   * ExecutionContext class. The ExecutionContext manages the behavior
+   * of each RTC that participates in it. This relationship is defined
+   * by the following state machine, which is embedded within the
+   * ExecutionContext's own lifecycle (see Figure 5.5 ). Each
+   * participating RTC is represented as a separate parallel region.
+   *
+   * Relative to a given execution context, an RTC may either be
+   * Active, Inactive, or in Error. When the RTC is Active in a
+   * Running execution context, the ComponentAction callbacks (see
+   * Section 5.2.2.4) shall be invoked as appropriate for the context’
+   * s ExecutionKind. The callbacks shall not be invoked relative to
+   * that context when either the RTC is Inactive in that context or
+   * the context is Stopped. (Note that starting and stopping an
+   * execution context shall not impact whether its participating RTCs
+   * are Active or Inactive.)  It may be that a given RTC does not
+   * directly participate in any execution contexts. Such an RTC is
+   * referred to as passive.  A passive RTC may provide services to
+   * other components upon request. At any other time, it shall not be
+   * required to perform any ongoing activity of its own; therefore,
+   * instances of such an RTC typically exist only as parts (directly
+   * or indirectly) of a containing active RTC.
+   *
+   * @subsection Error Handling
+   *
+   * If an operation fails while the RTC is Active in a given
+   * execution context, the RTC will transition to the Error state
+   * corresponding to that context. While the RTC is in Error, the
+   * ComponentAction::on_error callback will be invoked in place of
+   * those callbacks that would otherwise have been invoked according
+   * to the context’s ExecutionKind. For example, if the kind is
+   * PERIODIC, on_error shall be invoked instead of the pair of
+   * on_execute, and on_state_update.  When an RTC is in Error, it may
+   * be reset. If resetting is successful, the RTC shall return to the
+   * Inactive state. If resetting is unsuccessful, it shall remain in
+   * the Error state.
+   * 
+   * @endif
+   */
+  interface LightweightRTObject
+    : ComponentAction
+  {
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief initialize
+     *
+     * @section Description
+     * Initialize the RTC that realizes this interface.
+     *
+     * @section Semantics
+     * The invocation of this operation shall result in the invocation
+     * of the callback ComponentAction::on_initialize.
+     *
+     * @section Constraints
+     *
+     * - An RTC may be initialized only while it is in the Created
+     *   state. Any attempt to invoke this operation while in another
+     *   state shall fail with ReturnCode_t::PRECONDITION_NOT_MET.
+     * - Application developers are not expected to call this operation
+     *   directly; it exists for use by the RTC infrastructure.
+     *
+     * @endif
+     */
+    ReturnCode_t initialize();
+
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief finalize
+     *
+     * @section Description
+     *
+     * Finalize the RTC that realizes this interface, preparing it for
+     * destruction.
+     *
+     * @section Semantics
+     *
+     * This invocation of this operation shall result in the
+     * invocation of the callback ComponentAction::on_finalize
+     *
+     * @section Constraints
+     *
+     * - An RTC may not be finalized while it is participating in any
+     *   execution context. It must first be removed with
+     *   ExecutionContextOperations::remove_component. Otherwise, this
+     *   operation shall fail with
+     *   ReturnCode_t::PRECONDITION_NOT_MET. See Figure 5.9.
+     *
+     * - An RTC may not be finalized while it is in the Created state. Any
+     *   attempt to invoke this operation while in that state shall fail with
+     *   ReturnCode_t::PRECONDITION_NOT_MET.
+     *
+     * - Application developers are not expected to call this operation
+     *   directly; it exists for use by the RTC infrastructure.
+     *
+     * @endif
+     */
+    ReturnCode_t finalize();
+
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief is_alive
+     * 
+     * @section Description
+     *
+     * A component is alive or not regardless of the execution context
+     * from which it is observed. However, whether or not it is
+     * Active, Inactive, or in Error is dependent on the execution
+     * context(s) (see Figure 5.7) in which it is running. That is, it
+     * may be Active in one context but Inactive in
+     * another. Therefore, this operation shall report whether this
+     * RTC is either Active, Inactive, or in Error; which of those
+     * states a component is in with respect to a particular context
+     * may be queried from the context itself.
+     *
+     * @endif
+     *
+     */
+    boolean is_alive(in ExecutionContext exec_context);
+
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief exit
+     *
+     * @section Description
+     *
+     * Stop the RTC’s execution context(s) and finalize it along with
+     * its contents.
+     *
+     * @section Semantics
+     *
+     * Any execution contexts for which the RTC is the owner shall be
+     * stopped.  If the RTC participates in any execution contexts
+     * belonging to another RTC that contains it, directly or
+     * indirectly (i.e., the containing RTC is the owner of the
+     * ExecutionContext), it shall be deactivated in those contexts.
+     * After the RTC is no longer Active in any Running execution
+     * context, it and any RTCs contained transitively within it shall
+     * be finalized.
+     *
+     * @section Constraints
+     *
+     * An RTC cannot be exited if it has not yet been initialized. Any
+     * attempt to exit an RTC that is in the Created state shall fail
+     * with ReturnCode_t::PRECONDITION_NOT_MET.  
+     *
+     * @endif
+     */
+    ReturnCode_t exit();
+
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief attach_context
+     *
+     * @section Description
+     *
+     * Inform this RTC that it is participating in the given execution
+     * context. Return a handle that represents the association of
+     * this RTC with the context.
+     *
+     * @section Semantics
+     *
+     * This operation is intended to be invoked by
+     * ExecutionContextOperations::add_component (see Section
+     * 5.2.2.6.6). It is not intended for use by other clients.
+     *
+     * @endif
+     */
+    ExecutionContextHandle_t attach_context(in ExecutionContext exec_context);
+
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief detach_context
+     * @section Description
+     * 
+     * Inform this RTC that it is no longer participating in the given
+     * execution context.
+     *
+     * @section Semantics
+     * 
+     * This operation is intended to be invoked by
+     * ExecutionContextOperations::remove_component (see Section
+     * 5.2.2.6.7). It is not intended for use by other clients.
+     *
+     * @section Constraints
+     *
+     * - This operation may not be invoked if this RTC is not already
+     *   participating in the execution context. Such a call shall fail
+     *   with ReturnCode_t::PRECONDITION_NOT_MET.
+     *
+     * - This operation may not be invoked if this RTC is Active in
+     *   the indicated execution context. Otherwise, it shall fail with
+     *   ReturnCode_t::PRECONDITION_NOT_MET.
+     *
+     * @endif
+     */
+    ReturnCode_t detach_context(in ExecutionContextHandle_t exec_handle);
+
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief get_context
+     *
+     * @section Description
+     *
+     * Obtain a reference to the execution context represented by the
+     * given handle.
+     *
+     * @section Semantics
+     *
+     * The mapping from handle to context is specific to a particular
+     * RTC instance. The given handle must have been obtained by a
+     * previous call to attach_context on this RTC.
+     *
+     * @endif
+     */
+    ExecutionContext get_context(in ExecutionContextHandle_t exec_handle);
+
+    /*!
+     * @if jp
+     * @brief get_owned_contexts
+     *
+     * @section Description 
+     *
+     * この RTC が所有する ExecutionContext のリストを取得する。
+     * 
+     * @else
+     * @brief get_owned_contexts
+     *
+     * @section Description 
+     *
+     * This operation returns a list of all execution contexts owned
+     * by this RTC.
+     *
+     * @endif
+     */
+    ExecutionContextList get_owned_contexts();
+
+    /*!
+     * @if jp
+     * @brief get_participating_contexts
+     *  
+     * @section Description
+     *
+     * この RTC が参加しているすべての ExecutionContext のリストを取得する。
+     *
+     * @section Semantics
+     *
+     * このリストに含まれる実行コンテキストは、attach_context が呼び出
+     * されるごとに、リストに追加され、detach_context が呼び出されるご
+     * とに、リストから削除される。
+     *
+     * @else
+     * @brief* get_participating_contexts
+     *
+     * @section Description
+     *
+     * This operation returns a list of all execution contexts in
+     * which this RTC participates.
+     *
+     * @section Semantics
+     *
+     * Each call to attach_context causes the provided context to be
+     * added to this list. Each call to detach_context causes the
+     * provided context to be removed from this list.
+     *
+     * @endif
+     */
+    ExecutionContextList get_participating_contexts();
+    
+    /*!
+     * @if jp
+     * ### [誤植] RTC.idl には含まれていないがPIMには含まれている。
+     * ### PIMが正しい。
+     *
+     * @brief 
+     * @else
+     * @brief get_context_handle
+     *
+     * @section Description
+     * 
+     * This operation returns a handle that is associated with the given
+     * execution context.
+     *
+     * @endif
+     */
+    ExecutionContextHandle_t get_context_handle(in ExecutionContext cxt);
+  };
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief ExecutionKind
+   * 
+   * @sectioni Description
+   *
+   * The ExecutionKind enumeration defines the execution semantics
+   * (see Section 5.3) of the RTCs that participate in an execution
+   * context.
+   *
+   * @endif
+   */
+  enum ExecutionKind
+  {
+    /*!
+     * @if jp
+     * @brief 
+     *
+     * @else
+     * @brief PERIODIC
+     *
+     * @section Description
+     *
+     * The participant RTCs are executing according to periodic
+     * sampled data semantics (see Section 5.3.1).
+     * 
+     * @endif
+     */
+    PERIODIC,
+    /*!
+     * @if jp
+     * @brief 
+     *
+     * @else
+     * @brief EVENT_DRIVEN
+     *
+     * @section Description
+     *
+     * The participant RTCs are executing according to stimulus
+     * response semantics (see Section 5.3.2).
+     * 
+     * @endif
+     */
+    EVENT_DRIVEN,
+    /*!
+     * @if jp
+     * @brief 
+     *
+     * @else
+     * @brief OTHER
+     *
+     * @section Description
+     *
+     * The participant RTCs are executing according to some semantics
+     * not defined by this specification.
+     * 
+     * @endif
+     */
+    OTHER
+  };
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief ExecutionContext
+   *
+   * @section Description
+   *
+   * An ExecutionContext allows the business logic of an RTC to be
+   * decoupled from the thread of control in which it is executed. The
+   * context represents a logical thread of control and is provided to
+   * RTCs at runtime as an argument to various operations, allowing
+   * them to query and modify their own state, and that of other RTCs
+   * executing within the same context, in the lifecycle.  This
+   * separation of concerns is important for two primary reasons:
+   *
+   * - Large number of components may collaborate tightly within a
+   * single node or process. If each component were to run within its
+   * own thread of control, the infrastructure may not be able to
+   * satisfy the timeliness and determinism requirements of real-time
+   * applications due to the large number of threads and the required
+   * synchronization between them.
+   *
+   * - A single application may carry out a number of independent
+   * tasks that require different execution rates. For example, it may
+   * need to sample a sensor periodically at a very high rate and update a
+   * user interface at a much lower rate.
+   *
+   * @section Semantics
+   *
+   * The state machine of an ExecutionContext has two parts. The
+   * behavior of the ExecutionContext itself is defined by the upper
+   * region in the above figure. The behavior of the RTCs that
+   * participate in the context is defined by the lower region. The
+   * contents of that region are displayed in more detail in Figure
+   * 5.5 in Section 5.2.2.2.  Ownership and Participation Each
+   * execution context is owned by a single RTC and may be used to
+   * execute that RTC and the RTCs contained within it, directly or
+   * indirectly. An RTC that owns one or more execution contexts is
+   * known as an autonomous RTC.  An autonomous RTC and some subset of
+   * the RTCs within it (to be defined by the application developer)
+   * shall be executed by the infrastructure according to the context’
+   * s execution kind, which defines when each RTC’s operations will
+   * be invoked when and in which order. These RTCs are said to
+   * participate in the context. The available execution kinds are
+   * described in Section 5.2.2.7.  The relationship between RTCs and
+   * execution contexts may be many-to-many in the general case:
+   * multiple RTCs may be invoked from the same execution context, and
+   * a single RTC may be invoked from multiple contexts. In the case
+   * where multiple RTCs are invoked from the same context, starting
+   * or stopping the context shall result in the corresponding
+   * lifecycle transitions for all of those components.
+   *
+   * @section Logical and Physical Threads
+   *
+   * Although an execution context represents a logical thread of
+   * control, the choice of how it maps to a physical thread shall be
+   * left to the application’s deployment
+   * environment. Implementations may elect to associate contexts with
+   * threads with a one-to-one mapping, to serve multiple contexts
+   * from a single thread, or by any other means. In the case where a
+   * given RTC may be invoked from multiple contexts, concurrency
+   * management is implementation-dependent.
+   *
+   * @endif
+   */
+  interface ExecutionContext
+  {
+    
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief is_running
+     * @section Description
+     *
+     * This operation shall return true if the context is in the
+     * Running state.
+     *
+     * @section Semantics
+     *
+     * While the context is Running, all Active RTCs participating in
+     * the context shall be executed according to the context’s
+     * execution kind.  
+     *
+     * @endif
+     */
+    boolean is_running();
+    
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     *
+     * @brief start
+     *
+     * @section Description
+     *
+     * Request that the context enter the Running state. Once the
+     * state transition occurs, the ComponentAction::on_startup
+     * operation (see Section 5.2.2.4.3) will be invoked.  @section *
+     *
+     * @section Semantics
+     *
+     * An execution context may not be started
+     * until the RT components that participate in it have been
+     * initialized. An execution context may be started and stopped
+     * multiple times.
+     *
+     * @section Constraints
+     *
+     * - This operation shall fail with
+     * ReturnCode_t::PRECONDITION_NOT_MET if the context is not in the
+     * Stopped state.
+     *
+     * - This operation shall fail with
+     * ReturnCode_t::PRECONDITION_NOT_MET if any of the participating
+     * components are not in their Alive state.
+     *
+     * @endif
+     */
+    ReturnCode_t start();
+    
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief stop
+     *
+     * @section Description
+     *
+     * Request that the context enter the Stopped state. Once the
+     * transition occurs, the ComponentAction::on_shutdown operation
+     * (see Section 5.2.2.4.4) will be invoked.
+     *
+     * @section Semantics
+     *
+     * An execution context must be stopped before the RT components
+     * that participate in it are finalized.
+     *
+     * An execution context may be started and stopped multiple times.
+     *
+     * @section Constraints
+     *
+     * - This operation shall fail with
+     * ReturnCode_t::PRECONDITION_NOT_MET if the context is not in the
+     * Running state.
+     *
+     * @endif
+     */
+    ReturnCode_t stop();
+    
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief get_rate
+     *
+     * @section Description
+     *
+     * This operation shall return the rate (in hertz) at which its
+     * Active participating RTCs are being invoked.
+     *
+     * @section Semantics
+     *
+     * An implementation is permitted to perform some periodic or
+     * quasi-periodic processing within an execution context with an
+     * ExecutionKind other than PERIODIC. In such a case, the result
+     * of this operation is implementation-defined. If no periodic
+     * processing of any kind is taking place within the context, this
+     * operation shall fail as described in Section 5.2.1.
+     *
+     * @section Constraints
+     *
+     * - If the context has an ExecutionKind of PERIODIC, this
+     *   operation shall return a rate greater than zero.
+     *
+     * @endif
+     */
+    double get_rate();
+    
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief set_rate
+     *
+     * @section Description
+     *
+     * This operation shall set the rate (in hertz) at which this
+     * context’s Active participating RTCs are being called.
+     *
+     * @section Semantics
+     *
+     * If the execution kind of the context is PERIODIC, a rate change
+     * shall result in the invocation of on_rate_changed on any RTCs
+     * realizing DataFlowComponentAction that are registered with any
+     * RTCs participating in the context.  An implementation is
+     * permitted to perform some periodic or quasi-periodic processing
+     * within an execution context with an ExecutionKind other than
+     * PERIODIC. If such is the case, and the implementation reports a
+     * rate from get_rate, this operation shall set that rate
+     * successfully provided that the given rate is valid. If no
+     * periodic processing of any kind is taking place within the
+     * context, this operation shall fail with
+     * ReturnCode_t::UNSUPPORTED.
+     *
+     * @section Constraints
+     *
+     * - The given rate must be greater than zero. Otherwise, this
+     * operation shall fail with ReturnCode_t::BAD_PARAMETER.
+     *
+     * @endif
+     */
+    ReturnCode_t set_rate(in double rate);
+    
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief add_component
+     *
+     * @section Description
+     *
+     * The operation causes the given RTC to begin participating in
+     * the execution context.
+     *
+     * @section Semantics
+     *
+     * The newly added RTC will receive a call to
+     * LightweightRTComponent::attach_context (see Section 5.2.2.2.5)
+     * and then enter the Inactive state. 
+     * 
+     * @section Constraints
+     * 
+     * - If the ExecutionKind of this context is PERIODIC, the RTC
+     * must be a data flow component (see Section 5.3.1.1).
+     * Otherwise, this operation shall fail with
+     * ReturnCode_t::PRECONDITION_NOT_MET.
+     * 
+     * - If the ExecutionKind of this context is EVENT_DRIVEN, the RTC
+     * must be an FSM participant (see Section 5.3.2.3).  Otherwise,
+     * this operation shall fail with
+     * ReturnCode_t::PRECONDITION_NOT_MET.
+     *
+     * @endif
+     */
+    ReturnCode_t add_component(in LightweightRTObject comp);
+    
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief remove_component
+     *
+     * @section Description
+     *
+     * This operation causes a participant RTC to stop participating
+     * in the execution context.
+     *
+     * @section Semantics
+     *
+     * The removed RTC will receive a call to
+     * LightweightRTComponent::detach_context (see Section 5.2.2.2.6).
+     *
+     * @section Constraints
+     *
+     * - If the given RTC is not currently participating in the
+     * execution context, this operation shall fail with
+     * ReturnCode_t::BAD_PARAMETER.
+     * 
+     * - An RTC must be deactivated before it can be removed from an
+     * execution context. If the given RTC is participating in the
+     * execution context but is still in the Active state, this
+     * operation shall fail with ReturnCode_t::PRECONDITION_NOT_MET.
+     *
+     * @endif
+     */
+    ReturnCode_t remove_component(in LightweightRTObject comp);
+    
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief activate_component
+     *
+     * @section Description
+     *
+     * The given participant RTC is Inactive and is therefore not
+     * being invoked according to the execution context’s execution
+     * kind. This operation shall cause the RTC to transition to the
+     * Active state such that it may subsequently be invoked in this
+     * execution context.
+     *
+     * @section Semantics
+     *
+     * The callback on_activate shall be called as a result of calling
+     * this operation. This operation shall not return until the
+     * callback has returned, and shall result in an error if the
+     * callback does.  The following figure is a non-normative example
+     * sequence diagram for activate_component.
+     *
+     * @section Constraints
+     *
+     * - An execution context can only activate its participant
+     *   components. If the given RTC is not participating in the
+     *   execution context, this operation shall fail with
+     *   ReturnCode_t::BAD_PARAMETER.
+     *
+     * - An RTC that is in the Error state cannot be activated until
+     *   after it has been reset. If the given RTC is in the Error
+     *   state, this operation shall fail with
+     *   ReturnCode_t::PRECONDITION_NOT_MET.
+     *
+     * - This operation shall fail with ReturnCode_t::BAD_PARAMETER if
+     *   the given component is not in its Alive state.
+     *
+     * @endif
+     */
+    ReturnCode_t activate_component(in LightweightRTObject comp);
+    
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief deactivate_component
+     *
+     * @section Description
+     *
+     * The given RTC is Active in the execution context. Cause it to
+     * transition to the Inactive state such that it will not be
+     * subsequently invoked from the context unless and until it is
+     * activated again.
+     *
+     * @section Semantics
+     *
+     * The callback on_deactivate shall be called as a result of
+     * calling this operation. This operation shall not return until
+     * the callback has returned, and shall result in an error if the
+     * callback does.  The following figure is a non-normative example
+     * sequence diagram for deactivate_component.
+     *
+     * @section Constraints
+     *
+     * - An execution context can only deactivate its participant
+     * components. If the given RTC is not participating in the
+     * execution context, this operation shall fail with
+     * ReturnCode_t::BAD_PARAMETER.
+     *
+     * - This operation shall fail with ReturnCode_t::BAD_PARAMETER if
+     * the given component is not in its Alive state.
+     *
+     * @endif
+     */
+    ReturnCode_t deactivate_component(in LightweightRTObject comp);
+    
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief reset_component
+     *
+     * @section Description
+     *
+     * Attempt to recover the RTC when it is in Error.
+     *
+     * @section Semantics
+     *
+     * The ComponentAction::on_reset callback shall be invoked. This
+     * operation shall not return until the callback has returned, and
+     * shall result in an error if the callback does. If possible, the
+     * RTC developer should implement that callback such that the RTC
+     * may be returned to a valid state.  * If this operation fails,
+     * the RTC will remain in Error.
+     *
+     * @section Constraints
+     *
+     * - An RTC may only be reset in an execution context in which it
+     *   is in error. If the RTC is not in Error in the identified
+     *   context, this operation shall fail with
+     *   ReturnCode_t::PRECONDITION_NOT_MET. However, that failure shall
+     *   not cause the RTC to enter the Error state.
+     *
+     * - An RTC may not be reset while in the Created state. Any
+     *   attempt to invoke this operation while the RTC is in that state
+     *   shall fail with ReturnCode_t::PRECONDITION_NOT_MET. However,
+     *   that failure shall not cause the RTC to enter the Error state.
+     *
+     * @endif
+     */
+    ReturnCode_t reset_component(in LightweightRTObject comp);
+    
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief get_component_state
+     *
+     * @section Description
+     *
+     * This operation shall report the LifeCycleState of the given
+     * participant RTC.
+     *
+     * @section Constraints
+     *
+     * - The given RTC must be Alive.
+     *
+     * - The given RTC must be a participant in the target execution context.
+     *
+     * - The LifeCycleState returned by this operation shall be one of
+     *   LifeCycleState::INACTIVE, ACTIVE, or ERROR.
+     *
+     * @endif
+     */
+    LifeCycleState get_component_state(in LightweightRTObject comp);
+    
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief get_kind
+     *
+     * @section Description
+     *
+     * This operation shall report the execution kind of the execution
+     * context.
+     *
+     * @endif
+     */
+    ExecutionKind get_kind();
+  };
+  
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief DataFlowComponentAction
+   *
+   * @section Description
+   *
+   * DataFlowComponentAction is a companion to ComponentAction (see
+   * Section 5.2.2.4) that provides additional callbacks for
+   * intercepting the two execution passes defined in Section
+   * 5.3.1.1.2.
+   *
+   * @endif
+   */
+  interface DataFlowComponentAction
+  {
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief on_execute
+     * @section Description
+     *
+     * This operation will be invoked periodically at the rate of the
+     * given execution context as long as the following conditions
+     * hold:
+     *
+     * - The RTC is Active.
+     *
+     * - The given execution context is Running.
+     *
+     * @section Semantics
+     *
+     This callback occurs during the first execution pass.
+     *
+     * @section Constraints
+     *
+     * - The execution context of the given context shall be PERIODIC.
+     *
+     * @endif
+     */
+    ReturnCode_t on_execute(in ExecutionContextHandle_t exec_handle);
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief on_state_update
+     *
+     * @section Description
+     *
+     * This operation will be invoked periodically at the rate of the
+     * given execution context as long as the following conditions hold:
+     *
+     * - The RTC is Active.
+     *
+     * - The given execution context is Running.
+     *
+     * @section Semantics
+     *
+     * This callback occurs during the second execution pass.
+     *
+     * @section Constraints
+     *
+     * - The execution context of the given context shall be PERIODIC.
+     *
+     *
+     * @endif
+     */
+    ReturnCode_t on_state_update(in ExecutionContextHandle_t exec_handle);
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief on_rate_changed
+     *
+     * @section Description
+     *
+     * This operation is a notification that the rate of the indicated
+     * execution context (see Section 5.2.2.6.4) has changed.
+     *
+     * @section Constraints
+     *
+     * - The execution context of the given context shall be PERIODIC.
+     *
+     *
+     * @endif
+     */
+    ReturnCode_t on_rate_changed(in ExecutionContextHandle_t exec_handle);
+  };
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief dataFlowComponent
+   *
+   * @section Description
+   *
+   * The dataFlowComponent stereotype may be applied to a component
+   * type to indicate that its instances should be executed in sorted
+   * order by a periodic execution context.
+   *
+   * @section Constraints
+   *
+   * - An instance of a component extended by the dataFlowComponent
+   *   stereotype must participate in at least one * execution context
+   *   of kind PERIODIC, which shall also be used for the execution of
+   *   any contained data flow components.
+   *
+   * - A component extended by dataFlowComponent must realize the
+   *   interface DataFlowComponentAction.
+   *
+   *
+   * @endif
+   */
+  interface DataFlowComponent
+    : LightweightRTObject, DataFlowComponentAction
+  {
+  };
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief fsm
+   *
+   * @section Description
+   *
+   * Applying the fsm stereotype to a component implies the ability to
+   * define component-specific states and transitions.
+   *
+   * @section Semantics
+   *
+   * In creating a state machine such as is depicted in Figure 5.22,
+   * the RTC developer is implicitly defining the Active state to be a
+   * submachine state.  * The BehaviorStateMachines package described
+   * in [UML] is considered the normative definition of a state
+   * machine.
+   *
+   * @endif
+   */
+  interface Fsm
+    : LightweightRTObject
+  {
+  };
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief FsmParticipantAction
+   *
+   * @section Description
+   *
+   * FsmParticipantAction is companion to ComponentAction (see Section
+   * 5.2.2.4) that is intended for use with FSM participant RTCs. It
+   * adds a callback for the interception of state transitions, state
+   * entries, and state exits.
+   *
+   * @endif
+   */
+  interface FsmParticipantAction
+  {
+    
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief on_action
+     *
+     * @section Description
+     *
+     * The indicated FSM participant RTC has been invoked as a result
+     * of a transition, state entry, or state exit in its containing
+     * FSM.
+     *
+     * @section Constraints
+     *
+     * - The given execution context shall be of kind EVENT_DRIVEN.
+        *
+     * @endif
+     */
+    ReturnCode_t on_action(in ExecutionContextHandle_t exec_handle);
+  };
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief 
+   * @endif
+   */
+  interface FsmParticipant
+    : LightweightRTObject, FsmParticipantAction
+  {
+  };
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief Mode
+   *
+   * @section Description
+   *
+   * Each mode defined by a given RTC shall be represented by an
+   * instance of Mode.
+   *
+   * @endif
+   */
+  interface Mode
+  {
+  };
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief ModeCapable
+   *
+   * @section Description
+   *
+   * The ModeCapable interface provides access to an object’s modes
+   * and a means to set the current mode.
+   *
+   * @section Semantics
+   *
+   * A given RTC may support multiple modes as well as multiple
+   * execution contexts. In such a case, a request for a mode change
+   * (e.g., from "cruise control on" to "cruise control off") may
+   * come asynchronously with respect to one or more of those
+   * execution contexts. The mode of an RTC may therefore be observed
+   * to be different from one execution context to another.  - A mode
+   * is pending in a given execution context when a mode change has
+   * been requested but the new mode has not yet been observed by that
+   * context.
+   *
+   * - The new mode has been committed in a given execution context
+   *   when the context finally observes the new mode.
+   *
+   * - The new mode has stabilized once it has been committed in all
+   *   execution contexts in which the RTC participates.
+   *
+   * Figure 5.26 depicts a state machine that describes mode
+   * changes. Each parallel region in the composite state Mode Pending
+   * represents an execution context. The trigger "sample" within
+   * that state is considered to have occurred: - …just before the
+   * next call to on_execute (see Section 5.3.1.2.1) in the case where
+   * immediate is false and the execution kind is PERIODIC, …
+   *
+   * - …just before the processing of the next stimulus in the case
+   *   where immediate is false and the execution kind is
+   *   EVENT_DRIVEN, or …- …immediately in all other cases.
+   *
+   * @endif
+   */
+  interface ModeCapable
+  {
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief get_default_mode
+     *
+     * @section Description
+     *
+     * This operation shall return the mode in which the RTC shall be
+     * when no other mode has been set.
+     *
+     * @section Constraints
+     *
+     * - This operation shall not return nil.
+     *
+     * @endif
+     */
+    Mode get_default_mode();
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief get_current_mode
+     *
+     * @section Description
+     *
+     * This operation shall return the last mode to have
+     * stabilized. If no mode has been explicitly set, the current
+     * mode shall be the default mode.
+     *
+     * @section Constraints
+     *
+     * - This operation shall never return nil.
+     *
+     * @endif
+     */
+    Mode get_current_mode();
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief get_current_mode_in_context
+     *
+     * @section Description
+     *
+     * This operation returns the current mode of the component as
+     * seen by the indicated execution context.
+     *
+     * @section Semantics
+     *
+     * The manner in which this property changes is described in Figure 5.26.
+     *
+     * @endif
+     */
+    Mode get_current_mode_in_context(in ExecutionContext exec_context);
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief get_pending_mode
+     *
+     * @section Description
+     *
+     * This operation shall return the last mode to have been passed
+     * to set_mode that has not yet stabilized. Once the RTC’s mode
+     * has stabilized, this operation shall return nil.
+     *
+     * @endif
+     */
+    Mode get_pending_mode();
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief get_pending_mode_in_context
+     *
+     * @section Description
+     *
+     * If the last mode to be requested by a call to set_mode is
+     * different than the current mode as seen by the indicated
+     * execution context (see get_current_mode_in_context), this
+     * operation returns the former. If the requested mode has already
+     * been seen in that context, it returns nil.
+     *
+     * @section Semantics
+     *
+     * See Figure 5.26 for a description of how the pending mode
+     * relates to the current mode within a given execution context.
+     *
+     * @endif
+     */
+    Mode get_pending_mode_in_context(in ExecutionContext exec_context);
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief set_mode
+     *
+     * @section Description
+     *
+     * This operation shall request that the RTC change to the indicated mode.
+     *
+     * @section Semantics
+     *
+     * Usually, the new mode will be pending in each execution context
+     * in which the component executes until the next sample period
+     * (if the execution kind is PERIODIC); at that point it will
+     * become the current mode in that context and there will no
+     * longer be a pending mode. However, in some cases it is
+     * important for a mode change to take place immediately; for
+     * example, a serious fault has occurred and the component must
+     * enter an emergency mode to ensure fail-safe behavior in a
+     * safety-critical system. In such a case, immediate should be
+     * true and the mode change will take place in all contexts
+     * without waiting for the next sample period.
+     *
+     * @endif
+     */
+    ReturnCode_t set_mode(in Mode new_mode,
+			  in boolean immediate);
+  };
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief MultiModeComponentAction
+   *
+   * MultiModeComponentAction is a companion to ComponentAction that
+   is realized by RTCs that support multiple modes.
+   *
+   * @endif
+   */
+  interface MultiModeComponentAction
+  {
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief on_mode_changed
+     *
+     * @section Description
+     *
+     * This callback is invoked each time the observed mode of a
+     * component has changed with respect to a particular execution
+     * context.
+     *
+     * @section Semantics
+     *
+     * If the context is PERIODIC, this callback shall come before the
+     * next call to on_execute (see Section 5.3.1.2.1) within that
+     * context.  The new mode can be retrieved with
+     * get_current_mode_in_context. If the result is the same as the
+     * result of get_current_mode, the mode has stabilized.
+     *
+     * @endif
+     */
+    ReturnCode_t on_mode_changed(in ExecutionContextHandle_t exec_handle);
+  };
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief 
+   * @endif
+   */
+  interface MultiModeObject
+    : LightweightRTObject, ModeCapable, MultiModeComponentAction
+  {
+  };
+  
+  interface RTObject;
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief PortInterfacePolarity
+   *
+   * @section Description
+   *
+   * The PortInterfacePolarity enumeration identifies exposed
+   * interface instances as provided or required.  @endif
+   */
+  enum PortInterfacePolarity
+  {
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief PROVIDED
+     *
+     * @section Description
+     *
+     * The target interface is provided as an output by the target
+     * port.
+     *
+     * @endif
+     */
+    PROVIDED,
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief REQUIRED
+     *
+     * @section Description
+     *
+     * The target interface is required as an input by the target port.
+     *
+     * @endif
+     */
+    REQUIRED
+  };
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief PortInterfaceProfile
+   *
+   * @section Description
+   *
+   * PortInterfaceProfile describes an instance of a particular
+   * interface as it is exposed by a particular port. These objects
+   * are referred to below as the "target interface" and "target
+   * port" respectively.
+   *
+   * @endif
+   */
+  struct PortInterfaceProfile
+  {
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief instance_name
+     *
+     * @section Description
+     *
+     * This attribute stores the name of the target interface instance.
+     *
+     * @endif
+     */
+    string instance_name;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief type_name
+     *
+     * @section Description
+     *
+     * This attribute stores the name of the target interface type.
+     *
+     * @endif
+     */
+    string type_name;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief polarity
+     *
+     * @section Description
+     *
+     * This attribute indicates whether the target interface instance
+     * is provided or required by the RTC.
+     *
+     * @endif
+     */
+    PortInterfacePolarity polarity;
+  };
+  
+  typedef sequence<PortInterfaceProfile> PortInterfaceProfileList;
+  
+  interface PortService;
+  typedef sequence<PortService> PortServiceList;
+  typedef sequence<RTObject> RTCList;
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief ConnectorProfile
+   *
+   * @section Description
+   *
+   * The ConnectorProfile contains information about a connection
+   * between the ports of collaborating RTCs.
+   *
+   * @endif
+   */
+  struct ConnectorProfile
+  {
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief name
+     *
+     * @section Description
+     *
+     * This attribute contains the name of this connection.
+     *
+     * @endif
+     */
+    string name;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief connector_id
+     *
+     * @section Description
+     *
+     * Each connector has a unique identifier that is assigned when
+     * connection is established. This attribute stores that
+     * identifier.
+     *
+     * @endif
+     */
+    UniqueIdentifier connector_id;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief ports
+     *
+     * @section Description
+     *
+     * This field stores references to all ports connected by the
+     * target connector.
+     *
+     * @endif
+     */
+    PortServiceList ports;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief properties
+     *
+     * @section Description
+     *
+     * This attribute contains additional properties of the connection.
+     *
+     * @section Semantics
+     *
+     * This attribute provides implementations the opportunity to
+     * describe additional characteristics of a particular connection
+     * that are outside of the scope of this specification.
+     *
+     * @endif
+     */
+    NVList properties;
+  };
+  
+  typedef sequence<ConnectorProfile> ConnectorProfileList;
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief PortProfile
+   *
+   * @section Description
+   *
+   * A PortProfile describes a port of an RTC (referred to as the
+   * "target" RTC). This port is referred to as the "target" port.
+   * From this profile, other components and tools can obtain Port’s
+   * name, type, object reference, and so on.
+   *
+   * @endif
+   */
+  struct PortProfile
+  {
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief name
+     *
+     * @section Description
+     *
+     * This attribute contains the name of the target port.
+     *
+     * @section Semantics
+     *
+     * Ports owned by an RTC are distinguished by their
+     * names. Therefore, this name should be unique within the target
+     * RTC.
+     *
+     * @endif
+     */
+    string name;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief interfaces
+     *
+     * @section Description
+     *
+     * This attribute contains the name and polarity of each interface
+     * exposed by the target port.
+     *
+     * @endif
+     */
+    PortInterfaceProfileList interfaces;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief port_ref
+     *
+     * @section Description
+     *
+     * This attributes contains a reference to the target port.
+     *
+     * @endif
+     */
+    PortService port_ref;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief connector_profiles
+     *
+     * @section Description
+     *
+     * This attribute contains a collection of profiles describing the
+     * connections to the target port.
+     *
+     * @endif
+     */
+    ConnectorProfileList connector_profiles;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief owner
+     *
+     * @section Description
+     *
+     * This attribute contains a reference to the target RTC.
+     *
+     * @endif
+     */
+    RTObject owner;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief properties
+     *
+     * @section Description
+     *
+     * This attribute contains additional properties of the port.
+     *
+     * @section Semantics
+     *
+     * This attribute provides implementations the opportunity to
+     * describe additional characteristics of a particular port that
+     * are otherwise outside of the scope of this specification.
+     *
+     * @endif
+     */
+    NVList properties;
+  };
+  
+  typedef sequence<PortProfile> PortProfileList;
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief 
+   * @endif
+   */
+  struct ExecutionContextProfile
+  {
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief kind
+     *
+     * @section Description
+     *
+     * This attribute stores the context’s ExecutionKind.
+     *
+     * @endif
+     */
+    ExecutionKind kind;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief rate
+     *
+     * @section Description
+     *
+     * This attribute stores execution rate.
+     *
+     * @section Semantics
+     *
+     * If the execution kind is not PERIODIC, the value here may not
+     * be valid (and should be negative in that case). See
+     * ExecutionContext::get_rate (see Section 5.2.2.6.4) and set_rate
+     * (see Section 5.2.2.6.5) for more information.
+     *
+     * @endif
+     */
+    double rate;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief owner
+     *
+     * @section Description
+     *
+     * This attribute stores a reference to the RTC that owns the context.
+     *
+     * @endif
+     */
+    RTObject owner;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief participants
+     *
+     * @section Description
+     *
+     * This attribute stores references to the context’s participant RTCs.
+     *
+     * @endif
+     */
+    RTCList participants;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief properties
+     *
+     * @section Description
+     *
+     * This attribute contains additional properties of the execution
+     * context.
+     *
+     * @section Semantics
+     *
+     * This attribute provides implementations the opportunity to
+     * describe additional characteristics of a particular execution
+     * context that are outside the scope of this specification.
+     *
+     * @endif
+     */
+    NVList properties;
+  };
+  
+  typedef sequence<ExecutionContextProfile>
+  ExecutionContextProfileList;
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief FsmObject
+   *
+   * @section Description
+   *
+   * The FsmObject interface allows programs to send stimuli to a
+   * finite state machine, possibly causing it to change states.
+   *
+   * @endif
+   */
+  interface FsmObject
+  {
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief send_stimulus
+     *
+     * @section Description
+     *
+     * Send a stimulus to an FSM that realizes this interface.
+     *
+     * @section Semantics
+     *
+     * If the stimulus corresponds to any outgoing transition of the
+     * current state, that transition shall be taken and the state
+     * shall change. Any FSM participants associated with the exit of
+     * the current state, the transition to the new state, or the
+     * entry to the new state shall be invoked. If the stimulus does
+     * not correspond to any such transition, this operation shall
+     * succeed but have no effect.  
+     *
+     * If the given execution context is a non-nil reference to a
+     * context in which this FSM participates, the transition shall be
+     * executed in that context. If the argument is nil, the FSM shall
+     * choose an EVENT_DRIVEN context in which to execute the
+     * transition. If the argument is non-nil, but this FSM does not
+     * participate in the given context, this operation shall fail
+     * with * ReturnCode_t::BAD_PARAMETER.
+     *
+     * @section Constraints
+     *
+     * - The given execution context shall be of kind EVENT_DRIVEN.
+     *
+     * @endif
+     */
+    ReturnCode_t send_stimulus(in string message,
+			       in ExecutionContextHandle_t exec_handle);
+  };
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief FsmBehaviorProfile
+   *
+   * @section Description
+   *
+   * FsmBehaviorProfile represents the association of an FSM
+   * participant with a transition, state entry, or state exit in an
+   * FSM.
+   *
+   * @section Semantics
+   *
+   * The assignment of identifiers to particular transitions, state
+   * entries, or state exits is implementation-dependent.
+   *
+   * @endif
+   */
+  struct FsmBehaviorProfile
+  {
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief action_component
+     *
+     * @section Description
+     *
+     * This attribute stores a reference to the FSM participant that
+     * is invoked when the containing Fsm receives a message
+     * distinguished by id.
+     *
+     * @endif
+     */
+    FsmParticipantAction action_component;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief id
+     *
+     * @section Description
+     *
+     * This attribute stores the message identifier.
+     *
+     * @endif
+     */
+    UniqueIdentifier id;
+  };
+  
+  typedef sequence<FsmBehaviorProfile> FsmBehaviorProfileList;
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief FsmProfile
+   *
+   * @section Description
+   *
+   * The FsmProfile describes the correspondence between an FSM and
+   * its contained FSM participants. This Profile is necessary for
+   * Stimulus Response Processing.
+   *
+   * @endif
+   */
+  struct FsmProfile
+  {
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief behavior_profiles
+     *
+     * @section Description
+     *
+     * This attribute lists the correspondences between an FSM and its
+     * contained FSM participants.
+     *
+     * @endif
+     */
+    FsmBehaviorProfileList behavior_profiles;
+  };
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief FsmService
+   *
+   * @section Description
+   *
+   * The FsmService interface defines operations necessary for
+   * Stimulus Response Processing as an SDO service.
+   *
+   * @endif
+   */
+  interface FsmService
+    : SDOPackage::SDOService
+  {
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief get_fsm_profile
+     *
+     * @section Description
+     *
+     * Get the current state of the FSM.
+     *
+     * @section Semantics
+     *
+     * Modifications to the object returned by this operation will not
+     * be reflected in the FSM until and unless set_fsm_profile is
+     * called.
+     *
+     * @endif
+     */
+    FsmProfile get_fsm_profile();
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief set_fsm_profile
+     *
+     * @section Description
+     *
+     * This operation will be used to modify the behavior of an FSM as
+     * described in Stimulus Response Processing.
+     *
+     * @endif
+     */
+    ReturnCode_t set_fsm_profile(in FsmProfile fsm_profile);
+  };
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief ComponentProfile
+   *
+   * @section Description
+   *
+   * ComponentProfile represents the static state of an RTC that is
+   * referred to here as the "target" RTC.
+   *
+   * @endif
+   */
+  struct ComponentProfile
+  {
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief instance_name
+     *
+     * @section Description
+     *
+     * This attribute shall contain the name of the target RTC instance.
+     *
+     * @section Semantics
+     *
+     * The instance_name should be unique among RTC instances
+     * contained within the same containing component.
+     *
+     * @endif
+     */
+    string instance_name;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief type_name
+     *
+     * @section Description
+     *
+     * This attribute shall contain the name of the target RTC class.
+     *
+     * @section Semantics
+     *
+     * Each RTC class must have a name that is unique within an
+     * application.
+     *
+     * @endif
+     */
+    string type_name;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief description
+     *
+     * @section Description
+     *
+     * This attribute shall briefly describe the target RTC for the
+     * benefit of a human operator.
+     *
+     * @endif
+     */
+    string description;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief version
+     *
+     * @section Description
+     *
+     * This attribute shall contain the version number of the target
+     * RTC class.
+     *
+     * @section Semantics
+     *
+     * The format of the version number is outside of the scope of
+     * this specification.
+     *
+     * @endif
+     */
+    string version;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief vendor
+     *
+     * @section Description
+     *
+     * The name of the individual or organization that produced the
+     * target RTC class.
+     *
+     * @endif
+     */
+    string vendor;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief category
+     *
+     * @section Description
+     *
+     * This attribute contains the name of a "category" or group to
+     * which the target RTC belongs.
+     *
+     *
+     * @endif
+     */
+    string category;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief port_profiles
+     *
+     * @section Description
+     *
+     * This attribute contains a list of PortProfiles that describe
+     * the ports of the target RTC.
+     *
+     * @section Semantics
+     *
+     * There shall be a one-to-one correspondence between the members
+     * of this list and the ports of the target RTC.
+     *
+     *
+     * @endif
+     */
+    PortProfileList port_profiles;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief parent
+     *
+     * @section Description
+     *
+     * This attribute contains a reference to the RTC that contains
+     * the target RTC instance. If the target RTC instance is not
+     * owned by any other RTC, this field stores a nil reference.
+     *
+     * @endif
+     */
+    RTObject parent;
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief properties
+     *
+     * @section Description
+     *
+     * This attribute contains additional properties of the target RTC.
+     *
+     * @section Semantics
+     *
+     * This attribute provides implementations the opportunity to
+     * describe additional characteristics of a particular RTC that
+     * are otherwise outside of the scope of this specification.
+     *
+     * @endif
+     */
+    NVList properties;
+  };
+  
+  typedef sequence<ComponentProfile> ComponentProfileList;
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief PortService
+   *
+   * @section Description
+   *
+   * An instance of the PortService interface represents a port (i.e.,
+   * UML::Composite Structures::Ports::Port) of an RTC. It provides
+   * operations that allow it to be connected to and disconnected from
+   * other ports.
+   *
+   * @section Semantics
+   *
+   * A port service can support unidirectional or bidirectional
+   * communication.  A port service may allow for a service-oriented
+   * connection, in which other connected ports, invoke methods on
+   * it. It may also allow for a data-centric connection, in which
+   * data values are streamed in or out. In either case, the
+   * connection is described by an instance of
+   * ConnectorProfile. However, the behavioral contracts of such
+   * connections are dependent on the interfaces exposed by the ports
+   * and are not described normatively by this specification.
+   *
+   * @endif
+   */
+  interface PortService
+    : SDOPackage::SDOService
+  {
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief get_port_profile
+     *
+     * @section Description
+     *
+     * This operation returns the PortProfile of the PortService.
+     *
+     * @endif
+     */
+    PortProfile get_port_profile();
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief get_connector_profiles
+     *
+     * @section Description
+     *
+     * This operation returns a list of the ConnectorProfiles of the
+     * PortService.
+     *
+     * @endif
+     */ 
+    ConnectorProfileList get_connector_profiles();
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief get_connector_profiles
+     *
+     * @section Description
+     *
+     * This operation returns a list of the ConnectorProfiles of the
+     * PortService.
+     *
+     * @endif
+     */
+    ConnectorProfile get_connector_profile(in UniqueIdentifier connector_id);
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief connect
+     *
+     * @section Description
+     *
+     * This operation establishes connection between this port and the
+     * peer ports according to given ConnectionProfile.
+     *
+     * @section Semantics
+     *
+     * A ConnectorProfile has a sequence of port references. This port
+     * invokes the notify_connect operation of one of the ports
+     * included in the sequence. It follows that the notification of
+     * connection is propagated by the notify_connect operation with
+     * ConnectorProfile. This operation returns ConnectorProfile
+     * return value and returns ReturnCode_t as return codes.
+     *
+     * @endif
+     */
+    ReturnCode_t connect(inout ConnectorProfile connector_profile);
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief disconnect
+     *
+     * @section Description
+     *
+     * This operation destroys the connection between this port and
+     * its peer ports using the ID that was given when the connection
+     * was established.
+     *
+     * @section Semantics
+     *
+     * This port invokes the notify_disconnect operation of one of the
+     * ports included in the sequence of the ConnectorProfile stored
+     * when the connection was established. The notification of
+     * disconnection is propagated by the notify_disconnect operation.
+     *
+     * @endif
+     */
+    ReturnCode_t disconnect(in UniqueIdentifier connector_id);
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief disconnect_all
+     *
+     * @section Description
+     *
+     * This operation destroys all connection channels owned by the
+     * PortService.
+     *
+     * @endif
+     */
+    ReturnCode_t disconnect_all();
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief notify_connect
+     *
+     * @section Description
+     *
+     * This operation notifies this PortService of the connection
+     * between its corresponding port and the other ports and
+     * propagates the given ConnectionProfile.
+     *
+     * @section Semantics
+     *
+     * A ConnectorProfile has a sequence of port references. This
+     * PortService stores the ConnectorProfile and invokes the
+     * notify_connect operation of the next PortService in the
+     * sequence. As ports are added to the connector, PortService
+     * references are added to the ConnectorProfile and provided to
+     * the caller. In this way, notification of connection is
+     * propagated with the ConnectorProfile.
+     *
+     * @endif
+     */
+    ReturnCode_t notify_connect(inout ConnectorProfile connector_profile);
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief notify_disconnect
+     *
+     * @section Description
+     *
+     * This operation notifies a PortService of a disconnection
+     * between its corresponding port and the other ports. The
+     * disconnected connector is identified by the given ID, which was
+     * given when the connection was established.
+     *
+     * @section Semantics
+     *
+     * This port invokes the notify_disconnect operation of the next
+     * PortService in the sequence of the ConnectorProfile that was
+     * stored when the connection was established. As ports are
+     * disconnected, PortService references are removed from the
+     * ConnectorProfile. In this way, the notification of
+     * disconnection is propagated by the notify_disconnect operation.
+     *
+     * @endif
+     */
+    ReturnCode_t notify_disconnect(in UniqueIdentifier connector_id);
+  };
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief ExecutionContextService
+   *
+   * @section Description
+   *
+   * An ExecutionContextService exposes an ExecutionContext as an SDO
+   * service such that the context may be controlled remotely.
+   *
+   * @section Semantics
+   *
+   * Depending on the implementation, this interface may itself be an
+   * execution context (that is, it may be passed to the operations of
+   * ComponentAction) or it may represent a remote execution context
+   * that is not of type ExecutionContextService.  @endif
+   */
+  interface ExecutionContextService
+    : ExecutionContext, SDOPackage::SDOService
+  {
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief get_profile
+     *
+     * @section Description
+     *
+     * This operation provides a profile "descriptor" for the
+     * execution context.
+     *
+     * @endif
+     */
+    ExecutionContextProfile get_profile();
+  };
+  
+  typedef sequence<ExecutionContextService>
+  ExecutionContextServiceList;
+  
+  /*!
+   * @if jp
+   * @brief 
+   * @else
+   * @brief RTObject
+   *
+   * @section Description
+   *
+   * The RTObject interface defines the operations that all SDO-based
+   * RTCs must provide. It is required by the rtComponent stereotype.
+   *
+   * @endif
+   */
+  interface RTObject
+    : LightweightRTObject, SDOPackage::SDO
+  {
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief get_component_profile
+     *
+     * @section Description
+     *
+     * This operation returns the ComponentProfile of the RTC.
+     *
+     * @endif
+     */
+    ComponentProfile get_component_profile();
+    /*!
+     * @if jp
+     * @brief 
+     * @else
+     * @brief get_ports
+     *
+     * @section Description
+     *
+     * This operation returns a list of the RTCs ports.
+     *
+     * @endif
+     */
+    PortServiceList get_ports();
+  };
+};
+

Copied: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/SDOPackage.idl (from rev 478, branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/test/SDOPackage.idl)
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/SDOPackage.idl	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/SDOPackage.idl	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,294 @@
+//Platform Independent Model (PIM) and Platform Specific Model (PSM)
+//for Super Distributed Objects (SDO) Specification, v1.1 - OMG IDL Summary File
+//Object Management Group, Inc.
+//Copyright (c) 2003, Fraunhofer FOKUS
+//Copyright (c) 2003, Hitachi, Ltd.
+//The companies listed above have granted to the Object Management Group, Inc. 
+//(OMG) a nonexclusive, royalty-free, paid up, worldwide license to copy and 
+//distribute this document and to modify this document and distribute copies of 
+//the modified version. Each of the copyright holders listed above has agreed 
+//that no person shall be deemed to have infringed the copyright in the included 
+//material of any such copyright holder by reason of having used the 
+//specification set forth herein or having conformed any computer software to 
+//the specification. 
+//
+//This file contains OMG IDL from the Naming Service Specification, v1.2.
+//OMG regularly publishes a summary file that contains all the "code" parts of 
+//an OMG formal document. Every formal document line that is IDL, PIDL, or 
+//language code is included in the summary file. The reason for such a listing 
+//is to give readers an electronic version of the "code" so that they can 
+//extract pieces of it. Readers might want to test an example, include it in 
+//their own code, or use it for documentation purposes. Having the code lines 
+//available electronically means there is less likelihood of a transcription 
+//error. 
+//
+// ver 1.0  formal/2004-11-02
+// ver 1.1  (RTF report: dtc/2008-03-05)
+//
+//SDOPackage.idl
+
+#ifndef    _SDO_PACKAGE_IDL_
+#define    _SDO_PACKAGE_IDL_
+
+#ifdef TAO_IDL
+#include <orb.idl>
+#endif
+#ifdef USE_MONITORING
+#include <CosNotifyComm.idl>
+#endif
+#ifndef ORBIT2_IDL
+#define TypeCode CORBA::TypeCode
+#endif
+/** CORBA specific model for SDOs */
+
+#pragma prefix "org.omg"
+#define exception_body { string description; }
+
+module SDOPackage
+{
+  interface SDO;
+  interface SDOService;
+  interface SDOSystemElement;
+  interface Configuration;
+  interface Monitoring;
+  interface Organization;
+  
+  /** ------- Data Types -------*/
+  typedef sequence<string>       StringList;
+  typedef sequence<SDO>          SDOList;
+  typedef sequence<Organization> OrganizationList;
+  typedef string                 UniqueIdentifier;
+
+  struct NameValue
+  {
+    string name;
+    any value;
+  };
+
+  typedef sequence<NameValue>   NVList;
+
+  enum NumericType
+  {
+    SHORT_TYPE,
+    LONG_TYPE,
+    FLOAT_TYPE,
+    DOUBLE_TYPE
+  };
+
+  union Numeric switch (NumericType)
+  {
+  case SHORT_TYPE:  short short_value;
+  case LONG_TYPE: long long_value;
+  case FLOAT_TYPE: float float_value;
+  case DOUBLE_TYPE: double double_value;
+  };
+
+  struct EnumerationType
+  {
+    StringList enumerated_values;
+  };
+
+  struct RangeType
+  {
+    Numeric min;
+    Numeric max;
+    boolean min_inclusive;
+    boolean max_inclusive;
+  };
+
+  struct IntervalType
+  {
+    Numeric min;
+    Numeric max;
+    boolean min_inclusive;
+    boolean max_inclusive;
+    Numeric step;
+  };
+
+  enum ComplexDataType
+  {
+    ENUMERATION, RANGE, INTERVAL
+  };
+
+  union AllowedValues switch (ComplexDataType)
+  {
+  case ENUMERATION:    EnumerationType allowed_enum;
+  case INTERVAL:       IntervalType allowed_interval;
+  case RANGE:          RangeType   allowed_range;
+  };
+
+  struct Parameter
+  {
+    string         name;
+    TypeCode       type;
+    AllowedValues  allowed_values;
+  };
+
+  typedef sequence<Parameter> ParameterList;
+  struct OrganizationProperty
+  {
+    NVList properties;
+  };
+  enum DependencyType
+  {
+    OWN,
+    OWNED,
+    NO_DEPENDENCY
+  };
+
+  struct DeviceProfile
+  {
+    string device_type;
+    string manufacturer;
+    string model;
+    string version;
+    NVList properties;
+  };
+
+  struct ServiceProfile
+  {
+    string id;
+    string interface_type;
+    NVList properties;
+    SDOService service;
+  };
+
+  typedef sequence <ServiceProfile> ServiceProfileList;
+  struct ConfigurationSet
+  {
+    string id;
+    string description;
+    NVList configuration_data;
+  };
+
+  typedef sequence<ConfigurationSet> ConfigurationSetList;
+
+
+  /** ------- Exceptions -------*/
+  exception NotAvailable             exception_body;
+  exception InterfaceNotImplemented  exception_body;
+  exception InvalidParameter         exception_body;
+  exception InternalError            exception_body;
+  
+  /** ------- Interfaces -------*/
+  interface SDOSystemElement
+  {
+    OrganizationList get_owned_organizations()
+      raises (NotAvailable,InternalError);
+  };
+  interface SDO : SDOSystemElement
+  {
+    UniqueIdentifier get_sdo_id()
+      raises (NotAvailable, InternalError);
+    string get_sdo_type()
+      raises (NotAvailable, InternalError);
+    DeviceProfile get_device_profile ()
+      raises (NotAvailable, InternalError);
+    ServiceProfileList get_service_profiles ()
+      raises (NotAvailable, InternalError);
+    ServiceProfile get_service_profile (in UniqueIdentifier id)
+      raises (InvalidParameter, NotAvailable, InternalError);
+    SDOService get_sdo_service (in UniqueIdentifier id) 
+      raises (InvalidParameter, NotAvailable, InternalError);
+    Configuration get_configuration ()
+      raises (InterfaceNotImplemented, NotAvailable, InternalError);
+    Monitoring get_monitoring ()
+      raises (InterfaceNotImplemented, NotAvailable, InternalError);
+    OrganizationList get_organizations ()
+      raises (NotAvailable, InternalError);
+    NVList get_status_list ()
+      raises (NotAvailable, InternalError);
+    any get_status (in string nme)
+      raises (InvalidParameter, NotAvailable, InternalError);
+  };
+
+
+  interface Configuration
+  {
+    boolean set_device_profile (in DeviceProfile dProfile)
+      raises (InvalidParameter, NotAvailable, InternalError);
+    boolean add_service_profile (in ServiceProfile sProfile)
+      raises (InvalidParameter, NotAvailable, InternalError);
+    boolean add_organization (in Organization organization_object)
+      raises (InvalidParameter, NotAvailable, InternalError);
+    boolean remove_service_profile (in UniqueIdentifier id)
+      raises (InvalidParameter, NotAvailable, InternalError);
+    boolean remove_organization (in UniqueIdentifier organization_id)
+      raises (InvalidParameter, NotAvailable, InternalError);
+    ParameterList get_configuration_parameters ()
+      raises (NotAvailable, InternalError);
+    NVList get_configuration_parameter_values ()
+      raises (NotAvailable, InternalError);
+    any get_configuration_parameter_value (in string name)
+      raises (InvalidParameter, NotAvailable, InternalError);
+    boolean set_configuration_parameter (in string name,
+                                         in any value)
+      raises (InvalidParameter, NotAvailable, InternalError);
+    ConfigurationSetList get_configuration_sets ()
+      raises (NotAvailable, InternalError);
+    ConfigurationSet get_configuration_set (in UniqueIdentifier config_id)
+      raises (NotAvailable, InternalError);
+    boolean set_configuration_set_values (in ConfigurationSet configuration_set)
+      raises (InvalidParameter, NotAvailable, InternalError);
+    ConfigurationSet get_active_configuration_set ()
+      raises (NotAvailable, InternalError);
+    boolean add_configuration_set (in ConfigurationSet configuration_set)
+      raises (InvalidParameter, NotAvailable, InternalError);
+    boolean remove_configuration_set (in UniqueIdentifier config_id)
+      raises (InvalidParameter, NotAvailable, InternalError);
+    boolean activate_configuration_set (in UniqueIdentifier config_id)
+      raises (InvalidParameter, NotAvailable, InternalError);
+  };
+
+
+#ifdef USE_MONITORING
+  interface Monitoring : CosNotifyComm::StructuredPushConsumer,
+    CosNotifyComm::StructuredPushSupplier
+  {
+    any get_monitoring_parameter_value (in string name)
+      raises (InvalidParameter, NotAvailable, InternalError);
+    ParameterList get_monitoring_parameters ()
+      raises (NotAvailable, InternalError);
+    NVList get_monitoring_parameter_values ()
+      raises (NotAvailable, InternalError);
+  };
+#else
+  interface Monitoring {};
+#endif
+
+  interface SDOService {};
+  
+  interface Organization
+  {
+    UniqueIdentifier get_organization_id ()
+      raises (InvalidParameter, NotAvailable, InternalError);
+    OrganizationProperty get_organization_property ()
+      raises (NotAvailable, InternalError);
+    any get_organization_property_value (in string name)
+      raises (InvalidParameter, NotAvailable, InternalError);
+    boolean add_organization_property (in OrganizationProperty organization_property)
+      raises (InvalidParameter, NotAvailable, InternalError);
+    boolean set_organization_property_value (in string name,
+                                             in any value)
+      raises (InvalidParameter, NotAvailable, InternalError);
+    boolean remove_organization_property ( in string name )
+      raises (InvalidParameter, NotAvailable, InternalError);
+    SDOSystemElement get_owner ()
+      raises (NotAvailable, InternalError);
+    boolean set_owner (in SDOSystemElement sdo) 
+      raises (InvalidParameter, NotAvailable, InternalError);
+    SDOList get_members ()
+      raises (NotAvailable, InternalError);
+    boolean set_members (in SDOList sdos) 
+      raises (InvalidParameter, NotAvailable, InternalError);
+    boolean add_members ( in SDOList sdo_list)
+      raises (InvalidParameter, NotAvailable, InternalError);
+    boolean remove_member (in UniqueIdentifier id)
+      raises (InvalidParameter, NotAvailable, InternalError);
+    DependencyType get_dependency()
+      raises (NotAvailable, InternalError);
+    boolean set_dependency (in DependencyType dependency) 
+      raises (NotAvailable, InternalError);
+  };
+};
+#endif //_SDO_PACKAGE_IDL_

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/hoge.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/hoge.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/hoge.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -1,6 +1,18 @@
 #!/usr/bin/env python
 # -*- Python -*-
 
+hoge_spec = ["implementation_id", "hoge",
+             "type_name",         "hoge",
+             "description",       "hoge component",
+             "version",           "1.0",
+             "vendor",            "Shinji Kurihara",
+             "category",          "example",
+             "activity_type",     "DataFlowComponent",
+             "max_instance",      "10",
+             "language",          "Python",
+             "lang_type",         "script",
+             ""]
+
 class HOGE:
     def __init__(self):
         pass

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/rtc.conf
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/rtc.conf	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/rtc.conf	2011-09-21 07:57:38 UTC (rev 479)
@@ -2,4 +2,5 @@
 naming.formats: %n.rtc
 logger.log_level: PARANOID
 example.TestComp.config_file: configsample.conf
-manager.modules.preload: ConfigSample
\ No newline at end of file
+manager.modules.preload: ConfigSample
+manager.shutdown_on_nortcs: NO
\ No newline at end of file

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_All.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_All.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_All.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -14,6 +14,7 @@
 from test_ExtTrigExecutionContext import *
 from test_Factory import *
 from test_InPort import *
+from test_InPortBase import *
 from test_InPortProvider import *
 from test_Listener import *
 from test_Manager import *
@@ -26,7 +27,7 @@
 from test_OutPort import *
 from test_OutPortBase import *
 from test_OutPortProvider import *
-#from test_PeriodicExecutionContext import *
+from test_PeriodicExecutionContext import *
 from test_PortAdmin import *
 from test_PortBase import *
 from test_Properties import *
@@ -34,7 +35,7 @@
 from test_PublisherPeriodic import *
 from test_RingBuffer import *
 from test_RTCUtil import *
-#from test_RTObject import *
+from test_RTObject import *
 from test_SdoConfiguration import *
 from test_SdoOrganization import *
 from test_SdoService import *
@@ -60,43 +61,43 @@
   test_support.run_unittest(
     TestNullBuffer,
     TestConfigAdmin,
-    TestCORBA_SeqUtil,
-    TestCorbaConsumer,
-    TestCorbaNaming,
-    TestCorbaPort,
-    TestECFactoryPython,
-    TestExtTrigExecutionContext,
-    TestFactoryPython,
-    TestInPort,
-    TestInPortProvider,
-    TestListener,
-    TestManager,
-    TestManagerConfig,
-    TestModuleManager,
-    TestNamingOnCorba,
-    TestDefaultNumberingPolicy,
-    TestNVUtil,
-    TestObjectManager,
-    TestOutPort,
-    TestOutPortBase,
-    TestOutPortProvider,
-#    TestPeriodicExecutionContext,
-    TestPortAdmin,
+    TestCORBA_SeqUtil, 
+    TestCorbaConsumer, 
+    TestCorbaNaming, 
+    TestCorbaPort, 
+    TestECFactoryPython, 
+    TestExtTrigExecutionContext, 
+    TestFactoryPython, 
+    TestInPort, 
+    TestInPortBase, 
+    TestInPortProvider, 
+    TestListener, 
+    TestManagerConfig, 
+    TestModuleManager, 
+    TestDefaultNumberingPolicy, 
+    TestNVUtil, 
+    TestObjectManager, 
+    TestOutPort, 
+    TestOutPortBase, 
+    TestOutPortProvider, 
+    TestPeriodicExecutionContext, 
+    TestPortAdmin, 
     TestPortBase,
     TestProperties,
-    TestPublisherNew,
-    TestPublisherPeriodic,
+    TestPublisherNew, 
+    TestPublisherPeriodic, 
     TestRingBuffer,
-    TestRTCUtil,
-#    TestRTObject_impl,
+    TestRTCUtil, 
+    TestRTObject_impl, 
     TestConfiguration_impl,
     TestOrganization_impl,
     TestSDOServiceProfile,
     TestStateMachine,
     TestStringUtil,
-    TestLogbuf,
+    TestLogger,
     TestTimer,
     TestTimeValue,
+    TestManager,
     )
 
 if __name__ == '__main__':

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_BufferBase.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_BufferBase.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_BufferBase.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -19,53 +19,57 @@
 sys.path.insert(1,"../")
 
 import unittest
+import OpenRTM_aist
 
 from BufferBase import *
 
 class TestNullBuffer(unittest.TestCase):
-	def setUp(self):
-		self.nb = NullBuffer()
-		self.nb.init(100)
+  def setUp(self):
+    self.nb = NullBuffer()
+    self.nb.init(100)
 
+  def tearDown(self):
+    OpenRTM_aist.Manager.instance().shutdownManager()
+    return
 
-	def test_length(self):
-		self.assertEqual(self.nb.length(),1)
+  def test_length(self):
+    self.assertEqual(self.nb.length(),1)
 
 
-	def test_write(self):
-		data=[0]
-		# test long
-		self.assertEqual(self.nb.write(10000), True)
-		self.nb.read(data)
-		self.assertEqual(data[0], 10000)
+  def test_write(self):
+    data=[0]
+    # test long
+    self.assertEqual(self.nb.write(10000), True)
+    self.nb.read(data)
+    self.assertEqual(data[0], 10000)
 
-		# test float
-		self.assertEqual(self.nb.write(1.2345), True)
-		self.nb.read(data)
-		self.assertEqual(data[0], 1.2345)
+    # test float
+    self.assertEqual(self.nb.write(1.2345), True)
+    self.nb.read(data)
+    self.assertEqual(data[0], 1.2345)
 
-		# test string
-		self.assertEqual(self.nb.write("test"), True)
-		self.nb.read(data)
-		self.assertEqual(data[0], "test")
-		
-		# test list
-		self.assertEqual(self.nb.write([1,2,3]), True)
-		self.nb.read(data)
-		self.assertEqual(data[0], [1,2,3])
+    # test string
+    self.assertEqual(self.nb.write("test"), True)
+    self.nb.read(data)
+    self.assertEqual(data[0], "test")
+    
+    # test list
+    self.assertEqual(self.nb.write([1,2,3]), True)
+    self.nb.read(data)
+    self.assertEqual(data[0], [1,2,3])
 
 
-	def test_isEmpty(self):
-		self.assertEqual(self.nb.isEmpty(),False)
+  def test_isEmpty(self):
+    self.assertEqual(self.nb.isEmpty(),False)
 
 
-	def test_isNew(self):
-		data=[0]
-		self.assertEqual(self.nb.isNew(),False)
-		self.nb.read(data)
-		self.assertEqual(self.nb.isNew(),False)
-		self.assertEqual(self.nb.write(10000), True)
-		self.assertEqual(self.nb.isNew(),True)
+  def test_isNew(self):
+    data=[0]
+    self.assertEqual(self.nb.isNew(),False)
+    self.nb.read(data)
+    self.assertEqual(self.nb.isNew(),False)
+    self.assertEqual(self.nb.write(10000), True)
+    self.assertEqual(self.nb.isNew(),True)
 
 
 ############### test #################

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_CORBA_SeqUtil.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_CORBA_SeqUtil.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_CORBA_SeqUtil.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -19,109 +19,113 @@
 sys.path.insert(1,"../")
 
 import unittest
+import OpenRTM_aist
 
 import CORBA_SeqUtil
 
 class FunctorAdd:
-	def __init__(self, lists):
-		self._list = lists
+  def __init__(self, lists):
+    self._list = lists
 
-	def __call__(self, obj):
-		self._list.append(obj)
+  def __call__(self, obj):
+    self._list.append(obj)
 
 class Property:
-	def __init__(self,id_):
-		self.id =id_
-	
+  def __init__(self,id_):
+    self.id =id_
+  
 class FunctorFind:
-	def __init__(self, id):
-		self._id = id
+  def __init__(self, id):
+    self._id = id
 
-	def __call__(self, prof):
-		return self._id == prof.id
-		
+  def __call__(self, prof):
+    return self._id == prof.id
+    
 
 
 class TestCORBA_SeqUtil(unittest.TestCase):
-	def setUp(self):
-		pass
-	
+  def setUp(self):
+    pass
+  
+  def tearDown(self):
+    OpenRTM_aist.Manager.instance().shutdownManager()
+    return
 
-	def test_for_each(self):
-		list_ = [0,1,2]
-		func_ = FunctorAdd(list_)
-		add_ = [3,4,5,6,7]
-		CORBA_SeqUtil.for_each(add_,func_)
-		self.assertEqual(list_, [0,1,2,3,4,5,6,7])
-		
+  def test_for_each(self):
+    list_ = [0,1,2]
+    func_ = FunctorAdd(list_)
+    add_ = [3,4,5,6,7]
+    CORBA_SeqUtil.for_each(add_,func_)
+    self.assertEqual(list_, [0,1,2,3,4,5,6,7])
+    
 
-	def test_find(self):
-		prof = [Property(100),Property(200),Property(300)]
-		index = CORBA_SeqUtil.find(prof,FunctorFind(300))
-		self.assertEqual(index, 2)
+  def test_find(self):
+    prof = [Property(100),Property(200),Property(300)]
+    index = CORBA_SeqUtil.find(prof,FunctorFind(300))
+    self.assertEqual(index, 2)
 
-		index = CORBA_SeqUtil.find(prof,FunctorFind(3000))
-		self.assertEqual(index, -1)
+    index = CORBA_SeqUtil.find(prof,FunctorFind(3000))
+    self.assertEqual(index, -1)
 
-	
-	def test_push_back(self):
-		list_ = [0,1,2,3]
-		CORBA_SeqUtil.push_back(list_,100)
-		self.assertEqual(list_, [0,1,2,3,100])
+  
+  def test_push_back(self):
+    list_ = [0,1,2,3]
+    CORBA_SeqUtil.push_back(list_,100)
+    self.assertEqual(list_, [0,1,2,3,100])
 
-	
-	def test_push_back_list(self):
-		list1 = [0,1,2]
-		list2 = [3,4,5,6,7]
-		CORBA_SeqUtil.push_back_list(list1,list2)
-		self.assertEqual(list1, [0,1,2,3,4,5,6,7])
+  
+  def test_push_back_list(self):
+    list1 = [0,1,2]
+    list2 = [3,4,5,6,7]
+    CORBA_SeqUtil.push_back_list(list1,list2)
+    self.assertEqual(list1, [0,1,2,3,4,5,6,7])
 
 
-	def test_insert(self):
-		list_ = [0,1,2]
-		CORBA_SeqUtil.insert(list_, "INS", 1)
-		self.assertEqual(list_, [0,"INS",1,2])
+  def test_insert(self):
+    list_ = [0,1,2]
+    CORBA_SeqUtil.insert(list_, "INS", 1)
+    self.assertEqual(list_, [0,"INS",1,2])
 
-		CORBA_SeqUtil.insert(list_, 10, 100)
-		self.assertEqual(list_, [0,"INS",1,2,10])
+    CORBA_SeqUtil.insert(list_, 10, 100)
+    self.assertEqual(list_, [0,"INS",1,2,10])
 
 
-	def test_front(self):
-		list_ = [3,4,5,6]
-		self.assertEqual(CORBA_SeqUtil.front(list_),3)
-		
+  def test_front(self):
+    list_ = [3,4,5,6]
+    self.assertEqual(CORBA_SeqUtil.front(list_),3)
+    
 
-	def test_back(self):
-		list_ = [3,4,5,6]
-		self.assertEqual(CORBA_SeqUtil.back(list_),6)
+  def test_back(self):
+    list_ = [3,4,5,6]
+    self.assertEqual(CORBA_SeqUtil.back(list_),6)
 
 
-	def test_erase(self):
-		list_ = [9,8,7,6]
-		CORBA_SeqUtil.erase(list_, 10)
-		self.assertEqual(list_, [9,8,7,6])
+  def test_erase(self):
+    list_ = [9,8,7,6]
+    CORBA_SeqUtil.erase(list_, 10)
+    self.assertEqual(list_, [9,8,7,6])
 
-		CORBA_SeqUtil.erase(list_, 1)
-		self.assertEqual(list_, [9,7,6])
+    CORBA_SeqUtil.erase(list_, 1)
+    self.assertEqual(list_, [9,7,6])
 
 
-	def test_erase_if(self):
-		prof = [Property(100),Property(200),Property(300)]
-		CORBA_SeqUtil.erase_if(prof,FunctorFind(999))
-		self.assertEqual(len(prof), 3)
-		
-		CORBA_SeqUtil.erase_if(prof,FunctorFind(200))
-		self.assertEqual(len(prof), 2)
-		
+  def test_erase_if(self):
+    prof = [Property(100),Property(200),Property(300)]
+    CORBA_SeqUtil.erase_if(prof,FunctorFind(999))
+    self.assertEqual(len(prof), 3)
+    
+    CORBA_SeqUtil.erase_if(prof,FunctorFind(200))
+    self.assertEqual(len(prof), 2)
+    
 
-	def test_clear(self):
-		list_ = [0,1,2,3,4,5]
-		CORBA_SeqUtil.clear(list_)
-		self.assertEqual(list_,[])
+  def test_clear(self):
+    list_ = [0,1,2,3,4,5]
+    CORBA_SeqUtil.clear(list_)
+    self.assertEqual(list_,[])
 
 
-	def test_refToVstring(self):
-		pass
+  def test_refToVstring(self):
+    pass
 
 
 ############### test #################

Copied: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_ComponentActionListener.py (from rev 478, branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/test/test_ComponentActionListener.py)
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_ComponentActionListener.py	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_ComponentActionListener.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,229 @@
+#!/usr/bin/env python
+# -*- coding: euc-jp -*-
+
+##
+# @file test_ComponentActionListener.py
+# @brief test for ComponentActionListener class
+# @date $Date$
+# @author Shinji Kurihara
+#
+# Copyright (C) 2011
+#     Intelligent Systems Research Institute,
+#     National Institute of
+#         Advanced Industrial Science and Technology (AIST), Japan
+#     All rights reserved.
+
+
+import sys
+sys.path.insert(1,"../")
+
+import unittest
+
+from ComponentActionListener import *
+import OpenRTM_aist
+
+class MockPreComponentActionListener(PreComponentActionListener):
+  def __init__(self):
+    PreComponentActionListener.__init__(self)
+    return
+
+  def __call__(self,id):
+    return id
+
+
+class MockPostComponentActionListener(PostComponentActionListener):
+  def __init__(self):
+    PostComponentActionListener.__init__(self)
+    return
+
+  def __call__(self,id,ret):
+    return id,ret
+
+
+class MockPortActionListener(PortActionListener):
+  def __init__(self):
+    PortActionListener.__init__(self)
+    return
+
+  def __call__(self, pprof):
+    return pprof
+
+
+class MockExecutionContextActionListener(ExecutionContextActionListener):
+  def __init__(self):
+    ExecutionContextActionListener.__init__(self)
+    return
+
+  def __call__(self, ec_id):
+    return ec_id
+
+
+class TestListener(unittest.TestCase):
+  def setUp(self):
+    return
+
+  def tearDown(self):
+    OpenRTM_aist.Manager.instance().shutdownManager()
+    return
+
+  def test_PreComponentActionListener_toString(self):
+    self.assertEqual("PRE_ON_INITIALIZE",
+                    PreComponentActionListener.toString(
+        PreComponentActionListenerType.PRE_ON_INITIALIZE))
+    
+    self.assertEqual("PRE_ON_FINALIZE",
+                    PreComponentActionListener.toString(
+        PreComponentActionListenerType.PRE_ON_FINALIZE))
+
+    self.assertEqual("PRE_ON_STARTUP",
+                    PreComponentActionListener.toString(
+        PreComponentActionListenerType.PRE_ON_STARTUP))
+
+    self.assertEqual("PRE_ON_SHUTDOWN",
+                    PreComponentActionListener.toString(
+        PreComponentActionListenerType.PRE_ON_SHUTDOWN))
+
+    self.assertEqual("PRE_ON_ACTIVATED",
+                    PreComponentActionListener.toString(
+        PreComponentActionListenerType.PRE_ON_ACTIVATED))
+
+    self.assertEqual("PRE_ON_DEACTIVATED",
+                    PreComponentActionListener.toString(
+        PreComponentActionListenerType.PRE_ON_DEACTIVATED))
+
+    self.assertEqual("PRE_ON_ABORTING",
+                    PreComponentActionListener.toString(
+        PreComponentActionListenerType.PRE_ON_ABORTING))
+
+    self.assertEqual("PRE_ON_ERROR",
+                    PreComponentActionListener.toString(
+        PreComponentActionListenerType.PRE_ON_ERROR))
+
+    self.assertEqual("PRE_ON_RESET",
+                    PreComponentActionListener.toString(
+        PreComponentActionListenerType.PRE_ON_RESET))
+
+    self.assertEqual("PRE_ON_EXECUTE",
+                    PreComponentActionListener.toString(
+        PreComponentActionListenerType.PRE_ON_EXECUTE))
+
+    self.assertEqual("PRE_ON_STATE_UPDATE",
+                    PreComponentActionListener.toString(
+        PreComponentActionListenerType.PRE_ON_STATE_UPDATE))
+
+    self.assertEqual("PRE_ON_RATE_CHANGED",
+                    PreComponentActionListener.toString(
+        PreComponentActionListenerType.PRE_ON_RATE_CHANGED))
+
+    return
+
+  def test_PostComponentActionListener_toString(self):
+    self.assertEqual("POST_ON_INITIALIZE",
+                    PostComponentActionListener.toString(
+        PostComponentActionListenerType.POST_ON_INITIALIZE))
+    
+    self.assertEqual("POST_ON_FINALIZE",
+                    PostComponentActionListener.toString(
+        PostComponentActionListenerType.POST_ON_FINALIZE))
+
+    self.assertEqual("POST_ON_STARTUP",
+                    PostComponentActionListener.toString(
+        PostComponentActionListenerType.POST_ON_STARTUP))
+
+    self.assertEqual("POST_ON_SHUTDOWN",
+                    PostComponentActionListener.toString(
+        PostComponentActionListenerType.POST_ON_SHUTDOWN))
+
+    self.assertEqual("POST_ON_ACTIVATED",
+                    PostComponentActionListener.toString(
+        PostComponentActionListenerType.POST_ON_ACTIVATED))
+
+    self.assertEqual("POST_ON_DEACTIVATED",
+                    PostComponentActionListener.toString(
+        PostComponentActionListenerType.POST_ON_DEACTIVATED))
+
+    self.assertEqual("POST_ON_ABORTING",
+                    PostComponentActionListener.toString(
+        PostComponentActionListenerType.POST_ON_ABORTING))
+
+    self.assertEqual("POST_ON_ERROR",
+                    PostComponentActionListener.toString(
+        PostComponentActionListenerType.POST_ON_ERROR))
+
+    self.assertEqual("POST_ON_RESET",
+                    PostComponentActionListener.toString(
+        PostComponentActionListenerType.POST_ON_RESET))
+
+    self.assertEqual("POST_ON_EXECUTE",
+                    PostComponentActionListener.toString(
+        PostComponentActionListenerType.POST_ON_EXECUTE))
+
+    self.assertEqual("POST_ON_STATE_UPDATE",
+                    PostComponentActionListener.toString(
+        PostComponentActionListenerType.POST_ON_STATE_UPDATE))
+
+    self.assertEqual("POST_ON_RATE_CHANGED",
+                    PostComponentActionListener.toString(
+        PostComponentActionListenerType.POST_ON_RATE_CHANGED))
+
+    return
+
+  def test_PortActionListener_toString(self):
+    self.assertEqual("ADD_PORT",
+                    PortActionListener.toString(
+        PortActionListenerType.ADD_PORT))
+
+    self.assertEqual("REMOVE_PORT",
+                    PortActionListener.toString(
+        PortActionListenerType.REMOVE_PORT))
+
+    return
+
+  def test_ExecutionContextActionListener_toString(self):
+    self.assertEqual("ATTACH_EC",
+                    ExecutionContextActionListener.toString(
+        ExecutionContextActionListenerType.EC_ATTACHED))
+
+    self.assertEqual("DETACH_EC",
+                    ExecutionContextActionListener.toString(
+        ExecutionContextActionListenerType.EC_DETACHED))
+
+    return
+
+
+  def test_PreComponentActionListenerHolder(self):
+    preactions = ComponentActionListeners()
+    listener = MockPreComponentActionListener()
+    preactions.preaction_[0].addListener(listener,True)
+    preactions.preaction_[0].notify("test precomp ec_id")
+    preactions.preaction_[0].removeListener(listener)
+    return
+
+  def test_PostComponentActionListenerHolder(self):
+    postactions = ComponentActionListeners()
+    listener = MockPostComponentActionListener()
+    postactions.postaction_[0].addListener(listener,True)
+    postactions.postaction_[0].notify("test postcomp ec_id",True)
+    postactions.postaction_[0].removeListener(listener)
+    return
+
+  def test_PortActionListenerHolder(self):
+    portactions = ComponentActionListeners()
+    listener = MockPortActionListener()
+    portactions.portaction_[0].addListener(listener,True)
+    portactions.portaction_[0].notify("test port pprof")
+    portactions.portaction_[0].removeListener(listener)
+    return
+
+  def test_ExecutionContextActionListenerHolder(self):
+    ecactions = ComponentActionListeners()
+    listener = MockExecutionContextActionListener()
+    ecactions.ecaction_[0].addListener(listener,True)
+    ecactions.ecaction_[0].notify("test ec ec_id")
+    ecactions.ecaction_[0].removeListener(listener)
+    return
+
+
+############### test #################
+if __name__ == '__main__':
+  unittest.main()

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_ConfigAdmin.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_ConfigAdmin.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_ConfigAdmin.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -23,222 +23,297 @@
 from ConfigAdmin import *
 
 configsample_spec = ["implementation_id", "ConfigSample",
-		     "type_name",         "ConfigSample",
-		     "description",       "Configuration example component",
-		     "version",           "1.0",
-		     "vendor",            "Shinji Kurihara, AIST",
-		     "category",          "example",
-		     "activity_type",     "DataFlowComponent",
-		     "max_instance",      "10",
-		     "language",          "C++",
-		     "lang_type",         "compile",
-		     # Configuration variables
-		     "conf.default.int_param0", "0",
-		     "conf.default.int_param1", "1",
-		     "conf.default.double_param0", "0.11",
-		     "conf.default.double_param1", "9.9",
-		     "conf.default.str_param0", "hoge",
-		     "conf.default.str_param1", "dara",
-		     "conf.default.vector_param0", "0.0,1.0,2.0,3.0,4.0",
-		     ""]
+         "type_name",         "ConfigSample",
+         "description",       "Configuration example component",
+         "version",           "1.0",
+         "vendor",            "Shinji Kurihara, AIST",
+         "category",          "example",
+         "activity_type",     "DataFlowComponent",
+         "max_instance",      "10",
+         "language",          "C++",
+         "lang_type",         "compile",
+         # Configuration variables
+         "conf.default.int_param0", "0",
+         "conf.default.int_param1", "1",
+         "conf.default.double_param0", "0.11",
+         "conf.default.double_param1", "9.9",
+         "conf.default.str_param0", "hoge",
+         "conf.default.str_param1", "dara",
+         "conf.default.vector_param0", "0.0,1.0,2.0,3.0,4.0",
+         ""]
 
 configsample_mode_spec = ["conf.default.int_param0", "10",
-			  "conf.default.int_param1", "11",
-			  "conf.default.double_param0", "0.22",
-			  "conf.default.double_param1", "9999.9",
-			  "conf.default.str_param0", "hogehoge",
-			  "conf.default.str_param1", "daradaradata",
-			  "conf.default.vector_param0", "0.1,1.1,2.1,3.1,4.1",
-			  ""]
+        "conf.default.int_param1", "11",
+        "conf.default.double_param0", "0.22",
+        "conf.default.double_param1", "9999.9",
+        "conf.default.str_param0", "hogehoge",
+        "conf.default.str_param1", "daradaradata",
+        "conf.default.vector_param0", "0.1,1.1,2.1,3.1,4.1",
+        ""]
 
 configsample_add_spec = ["conf.mode0.int_param0", "10",
-			 "conf.mode0.int_param1", "11",
-			 "conf.mode0.double_param0", "0.22",
-			 "conf.mode0.double_param1", "9999.9",
-			 "conf.mode0.str_param0", "hogehoge",
-			 "conf.mode0.str_param1", "daradaradata",
-			 "conf.mode0.vector_param0", "0.1,1.1,2.1,3.1,4.1",
-			 ""]
+       "conf.mode0.int_param1", "11",
+       "conf.mode0.double_param0", "0.22",
+       "conf.mode0.double_param1", "9999.9",
+       "conf.mode0.str_param0", "hogehoge",
+       "conf.mode0.str_param1", "daradaradata",
+       "conf.mode0.vector_param0", "0.1,1.1,2.1,3.1,4.1",
+       ""]
 
 class TestConfigAdmin(unittest.TestCase):
-	def setUp(self):
-		prop = OpenRTM_aist.Properties(defaults_str=configsample_spec)
-		self._ca = ConfigAdmin(prop.getNode("conf"))
+  def setUp(self):
+    prop = OpenRTM_aist.Properties(defaults_str=configsample_spec)
+    self._ca = ConfigAdmin(prop.getNode("conf"))
 
-	
-	def CallBack(self,*args):
-		#print args
-		return 
+  def tearDown(self):
+    OpenRTM_aist.Manager.instance().shutdownManager()
+    return
+  
+  def CallBack(self,*args):
+    #print args
+    return 
 
-	def test_bindParameter(self):
-		self.int_param0    = [0]
-		self.int_param1    = [0]
-		self.double_param0 = [0.0]
-		self.double_param1 = [0.0]
-		self.str_param0    = [""]
-		self.str_param1    = [""]
-		self.vector_param0 = [[0.0,0.0,0.0,0.0,0.0]]
+  def test_bindParameter(self):
+    self.int_param0    = [0]
+    self.int_param1    = [0]
+    self.double_param0 = [0.0]
+    self.double_param1 = [0.0]
+    self.str_param0    = [""]
+    self.str_param1    = [""]
+    self.vector_param0 = [[0.0,0.0,0.0,0.0,0.0]]
 
-		self._ca.bindParameter("int_param0", self.int_param0, "0")
-		self._ca.bindParameter("int_param1", self.int_param1, "1")
-		self._ca.bindParameter("double_param0", self.double_param0, "0.11")
-		self._ca.bindParameter("double_param1", self.double_param1, "9.9")
-		self._ca.bindParameter("str_param0", self.str_param0, "hoge")
-		self._ca.bindParameter("str_param1", self.str_param1, "dara")
-		self._ca.bindParameter("vector_param0", self.vector_param0, "0.0,1.0,2.0,3.0,4.0")
-		return
+    self._ca.bindParameter("int_param0", self.int_param0, "0")
+    self._ca.bindParameter("int_param1", self.int_param1, "1")
+    self._ca.bindParameter("double_param0", self.double_param0, "0.11")
+    self._ca.bindParameter("double_param1", self.double_param1, "9.9")
+    self._ca.bindParameter("str_param0", self.str_param0, "hoge")
+    self._ca.bindParameter("str_param1", self.str_param1, "dara")
+    self._ca.bindParameter("vector_param0", self.vector_param0, "0.0,1.0,2.0,3.0,4.0")
+    return
 
-	def test_update(self):
-		self._ca.update(config_set="default")
-		self._ca.update("default","int_param0")
-		self._ca.update()
-		return
+  def test_update(self):
+    self._ca.update(config_set="default")
+    self._ca.update("default","int_param0")
+    self._ca.update()
+    return
 
-	def test_isExist(self):
-		varName = "name"
-		prop = OpenRTM_aist.Properties()
-		ca = ConfigAdmin(prop)
-		
-		varName = "name"
-		var = [0.0]
-		default_value = "3.14159"
+  def test_isExist(self):
+    varName = "name"
+    prop = OpenRTM_aist.Properties()
+    ca = ConfigAdmin(prop)
+    
+    varName = "name"
+    var = [0.0]
+    default_value = "3.14159"
 
-		self.assertEqual(True, ca.bindParameter(varName,var,default_value))
-		self.assertEqual(3.14159,var[0])
+    self.assertEqual(True, ca.bindParameter(varName,var,default_value))
+    self.assertEqual(3.14159,var[0])
 
-		# バインドした変数の名称でisExist()を呼出し、真値が得られるか?
-		self.assertEqual(True, ca.isExist("name"))
-			
-		# バインドしていない名称でisExist()を呼出し、偽値が得られるか?
-		self.assertEqual(False, ca.isExist("inexist name"))
-		
-		return
+    # バインドした変数の名称でisExist()を呼出し、真値が得られるか?
+    self.assertEqual(True, ca.isExist("name"))
+      
+    # バインドしていない名称でisExist()を呼出し、偽値が得られるか?
+    self.assertEqual(False, ca.isExist("inexist name"))
+    
+    return
 
-	def test_isChanged(self):
-		self.assertEqual(self._ca.isChanged(),False)
-		return
-	
+  def test_isChanged(self):
+    self.assertEqual(self._ca.isChanged(),False)
+    return
+  
 
-	def test_getActiveId(self):
-		self.assertEqual(self._ca.getActiveId(),"default")
-		return
+  def test_getActiveId(self):
+    self.assertEqual(self._ca.getActiveId(),"default")
+    return
 
 
-	def test_haveConfig(self):
-		self.assertEqual(self._ca.haveConfig("default"),True)
-		# Failure pattern
-		# self.assertEqual(self._ca.haveConfig("int_param0"),True)
-		return
+  def test_haveConfig(self):
+    self.assertEqual(self._ca.haveConfig("default"),True)
+    # Failure pattern
+    # self.assertEqual(self._ca.haveConfig("int_param0"),True)
+    return
 
 
-	def test_isActive(self):
-		self.assertEqual(self._ca.isActive(),True)
-		return
+  def test_isActive(self):
+    self.assertEqual(self._ca.isActive(),True)
+    return
 
 
-	def test_getConfigurationSets(self):
-		self.assertEqual(self._ca.getConfigurationSets()[0].name,"default")
-		return
+  def test_getConfigurationSets(self):
+    self.assertEqual(self._ca.getConfigurationSets()[0].name,"default")
+    return
 
 
-	def test_getConfigurationSet(self):
-		self.assertEqual(self._ca.getConfigurationSet("default").name, "default")
-		return
+  def test_getConfigurationSet(self):
+    self.assertEqual(self._ca.getConfigurationSet("default").name, "default")
+    return
 
-	def test_setConfigurationSetValues(self):
-		prop = OpenRTM_aist.Properties(defaults_str=configsample_mode_spec)
-		self.assertEqual(self._ca.setConfigurationSetValues(prop.getNode("conf.default")),True)
-		return
-	
-	def test_getActiveConfigurationSet(self):
-		self.assertEqual(self._ca.getActiveConfigurationSet().getName(),"default")
-		return
-	
-	def test_addConfigurationSet(self):
-		prop = OpenRTM_aist.Properties(defaults_str=configsample_add_spec)
-		self.assertEqual(self._ca.addConfigurationSet(prop.getNode("conf.mode0")),True)
-		return
+  def test_setConfigurationSetValues(self):
+    prop = OpenRTM_aist.Properties(defaults_str=configsample_mode_spec)
+    self.assertEqual(self._ca.setConfigurationSetValues(prop.getNode("conf.default")),True)
+    return
+  
+  def test_getActiveConfigurationSet(self):
+    self.assertEqual(self._ca.getActiveConfigurationSet().getName(),"default")
+    return
+  
+  def test_addConfigurationSet(self):
+    prop = OpenRTM_aist.Properties(defaults_str=configsample_add_spec)
+    self.assertEqual(self._ca.addConfigurationSet(prop.getNode("conf.mode0")),True)
+    return
 
-	def test_removeConfigurationSet(self):
-		prop = OpenRTM_aist.Properties(defaults_str=configsample_add_spec)
-		self.assertEqual(self._ca.addConfigurationSet(prop.getNode("conf.mode0")),True)
-		self.assertEqual(self._ca.removeConfigurationSet("mode0"),True)
-		return
+  def test_removeConfigurationSet(self):
+    prop = OpenRTM_aist.Properties(defaults_str=configsample_add_spec)
+    self.assertEqual(self._ca.addConfigurationSet(prop.getNode("conf.mode0")),True)
+    self.assertEqual(self._ca.removeConfigurationSet("mode0"),True)
+    return
 
-	
-	def test_activateConfigurationSet(self):
-		prop = OpenRTM_aist.Properties(defaults_str=configsample_add_spec)
-		self.assertEqual(self._ca.addConfigurationSet(prop.getNode("conf.mode0")),True)
-		self.assertEqual(self._ca.activateConfigurationSet("mode0"),True)
-		self.assertEqual(self._ca.activateConfigurationSet("default"),True)
-		self.assertEqual(self._ca.activateConfigurationSet("mode0"),True)
-		# Failure pattern
-		# self.assertEqual(self._ca.activateConfigurationSet("mode1"),True)
-		return
+  
+  def test_activateConfigurationSet(self):
+    prop = OpenRTM_aist.Properties(defaults_str=configsample_add_spec)
+    self.assertEqual(self._ca.addConfigurationSet(prop.getNode("conf.mode0")),True)
+    self.assertEqual(self._ca.activateConfigurationSet("mode0"),True)
+    self.assertEqual(self._ca.activateConfigurationSet("default"),True)
+    self.assertEqual(self._ca.activateConfigurationSet("mode0"),True)
+    # Failure pattern
+    # self.assertEqual(self._ca.activateConfigurationSet("mode1"),True)
+    return
 
-	def test_setOnUpdate(self):
-		self._ca.setOnUpdate(None)
-		return
+  def test_setOnUpdate(self):
+    self._ca.setOnUpdate(None)
+    return
 
-	def test_setOnUpdateParam(self):
-		self._ca.setOnUpdateParam(None)
-		return
+  def test_setOnUpdateParam(self):
+    self._ca.setOnUpdateParam(None)
+    return
 
-	def test_setOnSetConfigurationSet(self):
-		self._ca.setOnSetConfigurationSet(None)
-		return
+  def test_setOnSetConfigurationSet(self):
+    self._ca.setOnSetConfigurationSet(None)
+    return
 
-	def test_setOnAddConfigurationSet(self):
-		self._ca.setOnAddConfigurationSet(None)
-		return 
+  def test_setOnAddConfigurationSet(self):
+    self._ca.setOnAddConfigurationSet(None)
+    return 
 
 
-	def test_setOnRemoveConfigurationSet(self):
-		self._ca.setOnRemoveConfigurationSet(None)
-		return 
+  def test_setOnRemoveConfigurationSet(self):
+    self._ca.setOnRemoveConfigurationSet(None)
+    return 
 
 
-	def test_setOnActivateSet(self):
-		self._ca.setOnActivateSet(None)
-		return 
+  def test_setOnActivateSet(self):
+    self._ca.setOnActivateSet(None)
+    return 
 
-	
-	def test_onUpdate(self):
-		self._ca.setOnUpdate(self.CallBack)
-		self._ca.onUpdate("onUpdate")
-		return 
+  
+  def test_onUpdate(self):
+    self._ca.setOnUpdate(self.CallBack)
+    self._ca.onUpdate("onUpdate")
+    return 
 
 
-	def test_onUpdateParam(self):
-		self._ca.setOnUpdateParam(self.CallBack)
-		self._ca.onUpdateParam("onUpdateParam","Param")
-		return 
+  def test_onUpdateParam(self):
+    self._ca.setOnUpdateParam(self.CallBack)
+    self._ca.onUpdateParam("onUpdateParam","Param")
+    return 
 
 
-	def test_onSetConfigurationSet(self):
-		self._ca.setOnSetConfigurationSet(self.CallBack)
-		self._ca.onSetConfigurationSet("onSetConfigurationSet")
-		return 
+  def test_onSetConfigurationSet(self):
+    self._ca.setOnSetConfigurationSet(self.CallBack)
+    self._ca.onSetConfigurationSet("onSetConfigurationSet")
+    return 
 
 
-	def test_onAddConfigurationSet(self):
-		self._ca.setOnAddConfigurationSet(self.CallBack)
-		self._ca.onAddConfigurationSet("onAddConfigurationSet")
-		return 
+  def test_onAddConfigurationSet(self):
+    self._ca.setOnAddConfigurationSet(self.CallBack)
+    self._ca.onAddConfigurationSet("onAddConfigurationSet")
+    return 
 
 
-	def test_onRemoveConfigurationSet(self):
-		self._ca.setOnRemoveConfigurationSet(self.CallBack)
-		self._ca.onRemoveConfigurationSet("onRemoveConfigurationSet")
-		return 
+  def test_onRemoveConfigurationSet(self):
+    self._ca.setOnRemoveConfigurationSet(self.CallBack)
+    self._ca.onRemoveConfigurationSet("onRemoveConfigurationSet")
+    return 
 
 
-	def test_onActivateSet(self):
-		self._ca.setOnActivateSet(self.CallBack)
-		self._ca.onActivateSet("ActivateSet")
-		return 
+  def test_onActivateSet(self):
+    self._ca.setOnActivateSet(self.CallBack)
+    self._ca.onActivateSet("ActivateSet")
+    return 
 
     
+  def test_addremoveConfigurationParamListener(self):
+    listener = ConfigParamListenerCallback()
+    self._ca.addConfigurationParamListener(OpenRTM_aist.ConfigurationParamListenerType.ON_UPDATE_CONFIG_PARAM,
+                                           listener)
+    self._ca.onUpdateParam("","")
+    self._ca.removeConfigurationParamListener(OpenRTM_aist.ConfigurationParamListenerType.ON_UPDATE_CONFIG_PARAM,
+                                              listener)
+    return
+
+  def test_addremoveConfigurationSetListener(self):
+    listener = ConfigSetListenerCallback()
+    self._ca.addConfigurationSetListener(OpenRTM_aist.ConfigurationSetListenerType.ON_SET_CONFIG_SET,
+                                         listener)
+    self._ca.onSetConfigurationSet(None)
+    self._ca.removeConfigurationSetListener(OpenRTM_aist.ConfigurationSetListenerType.ON_SET_CONFIG_SET,
+                                            listener)
+    self._ca.addConfigurationSetListener(OpenRTM_aist.ConfigurationSetListenerType.ON_ADD_CONFIG_SET,
+                                         listener)
+    self._ca.onSetConfigurationSet(None)
+    self._ca.removeConfigurationSetListener(OpenRTM_aist.ConfigurationSetListenerType.ON_ADD_CONFIG_SET,
+                                            listener)
+    return
+
+  def test_addremoveConfigurationSetNameListener(self):
+    listener = ConfigSetNameListenerCallback()
+    self._ca.addConfigurationSetNameListener(OpenRTM_aist.ConfigurationSetNameListenerType.ON_UPDATE_CONFIG_SET,
+                                             listener)
+    self._ca.onUpdate("")
+    self._ca.removeConfigurationSetNameListener(OpenRTM_aist.ConfigurationSetNameListenerType.ON_UPDATE_CONFIG_SET,
+                                                listener)
+
+    self._ca.addConfigurationSetNameListener(OpenRTM_aist.ConfigurationSetNameListenerType.ON_REMOVE_CONFIG_SET,
+                                             listener)
+    self._ca.onUpdate("")
+    self._ca.removeConfigurationSetNameListener(OpenRTM_aist.ConfigurationSetNameListenerType.ON_REMOVE_CONFIG_SET,
+                                                listener)
+
+    self._ca.addConfigurationSetNameListener(OpenRTM_aist.ConfigurationSetNameListenerType.ON_ACTIVATE_CONFIG_SET,
+                                             listener)
+    self._ca.onUpdate("")
+    self._ca.removeConfigurationSetNameListener(OpenRTM_aist.ConfigurationSetNameListenerType.ON_ACTIVATE_CONFIG_SET,
+                                                listener)
+    return
+
+class ConfigParamListenerCallback(OpenRTM_aist.ConfigurationParamListener):
+  def __init__(self):
+    OpenRTM_aist.ConfigurationParamListener.__init__(self)
+    return
+
+  def __call__(self, config_set_name, config_param_name):
+    print "ConfigParamListenerCallback called"
+    return
+
+class ConfigSetListenerCallback(OpenRTM_aist.ConfigurationSetListener):
+  def __init__(self):
+    OpenRTM_aist.ConfigurationSetListener.__init__(self)
+    return
+
+  def __call__(self, config_set):
+    print "ConfigSetListenerCallback called"
+    return
+
+class ConfigSetNameListenerCallback(OpenRTM_aist.ConfigurationSetNameListener):
+  def __init__(self):
+    OpenRTM_aist.ConfigurationSetNameListener.__init__(self)
+    return
+
+  def __call__(self, config_set_name):
+    print "ConfigSetNameListenerCallback called"
+    return
+
+
 ############### test #################
 if __name__ == '__main__':
         unittest.main()

Copied: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_ConfigurationListener.py (from rev 478, branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/test/test_ConfigurationListener.py)
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_ConfigurationListener.py	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_ConfigurationListener.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,122 @@
+#!/usr/bin/env python
+# -*- coding: euc-jp -*-
+
+##
+# @file test ConfigurationListener.py
+# @brief test for ConfigurationListener class
+# @date $Date$
+# @author Shinji Kurihara
+#
+# Copyright (C) 2011
+#     Intelligent Systems Research Institute,
+#     National Institute of
+#         Advanced Industrial Science and Technology (AIST), Japan
+#     All rights reserved.
+
+import sys
+sys.path.insert(1,"../")
+
+import unittest
+
+from ConfigurationListener import *
+import OpenRTM_aist
+
+config_set = ["conf.default.int_param0", "0",
+              "conf.default.int_param1", "1",
+              "conf.default.double_param0", "0.11",
+              "conf.default.double_param1", "9.9",
+              "conf.default.str_param0", "hoge",
+              "conf.default.str_param1", "dara",
+              "conf.default.vector_param0", "0.0,1.0,2.0,3.0,4.0",
+              ""]
+
+class MockConfigurationParamListener(ConfigurationParamListener):
+  def __init__(self):
+    ConfigurationParamListener.__init__(self)
+    return
+
+  def __call__(self, config_set_name, config_param_name):
+    return (config_set_name, config_param_name)
+
+class MockConfigurationSetListener(ConfigurationSetListener):
+  def __init__(self):
+    ConfigurationSetListener.__init__(self)
+    return
+
+  def __call__(self, config_set):
+    return config_set
+
+class MockConfigurationSetNameListener(ConfigurationSetNameListener):
+  def __init__(self):
+    ConfigurationSetNameListener.__init__(self)
+    return
+
+  def __call__(self, config_set_name):
+    return config_set_name
+
+
+class TestListener(unittest.TestCase):
+  def setUp(self):
+    return
+
+  def tearDown(self):
+    OpenRTM_aist.Manager.instance().shutdownManager()
+    return
+
+  def test_ConfigurationParamListener_toString(self):
+    self.assertEqual("ON_UPDATE_CONFIG_PARAM",
+                     ConfigurationParamListener.toString(
+        ConfigurationParamListenerType.ON_UPDATE_CONFIG_PARAM))
+    return
+
+  def test_ConfigurationSetListener_toString(self):
+    self.assertEqual("ON_SET_CONFIG_SET",
+                     ConfigurationSetListener.toString(
+        ConfigurationSetListenerType.ON_SET_CONFIG_SET))
+    self.assertEqual("ON_ADD_CONFIG_SET",
+                     ConfigurationSetListener.toString(
+        ConfigurationSetListenerType.ON_ADD_CONFIG_SET))
+    return
+
+  def test_ConfigurationSetNameListener_toString(self):
+    self.assertEqual("ON_UPDATE_CONFIG_SET",
+                     ConfigurationSetNameListener.toString(
+        ConfigurationSetNameListenerType.ON_UPDATE_CONFIG_SET))
+    self.assertEqual("ON_REMOVE_CONFIG_SET",
+                     ConfigurationSetNameListener.toString(
+        ConfigurationSetNameListenerType.ON_REMOVE_CONFIG_SET))
+    self.assertEqual("ON_ACTIVATE_CONFIG_SET",
+                     ConfigurationSetNameListener.toString(
+        ConfigurationSetNameListenerType.ON_ACTIVATE_CONFIG_SET))
+    return
+
+  def test_ConfigurationParamListenerHolder(self):
+    configparams = ConfigurationListeners()
+    listener = MockConfigurationParamListener()
+    configparams.configparam_[0].addListener(listener,True)
+    configparams.configparam_[0].notify("config_set_name","config_param_name")
+    configparams.configparam_[0].removeListener(listener)
+    return
+
+  def test_ConfigurationSetListenerHolder(self):
+    configsetss = ConfigurationListeners()
+    listener = MockConfigurationSetListener()
+    configsets.configset_[0].addListener(listener,True)
+    prop = OpenRTM_aist.Properties(defaults_str=config_set)
+    configsets.configset_[0].notify(prop)
+    configsets.configset_[0].removeListener(listener)
+    return
+  
+  def test_ConfigurationSetNameListenerHolder(self):
+    configsetnames = ConfigurationListeners()
+    listener = MockConfigurationSetNameListener()
+    configsetnames.configsetname_[0].addListener(listener,True)
+    configsetnames.configsetname_[0].notify("config_set_name")
+    configsetnames.configsetname_[0].removeListener(listener)
+    return
+
+
+############### test #################
+if __name__ == '__main__':
+  unittest.main()
+

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_ConnectorListener.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_ConnectorListener.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_ConnectorListener.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -1,12 +1,12 @@
 #!/usr/bin/env python
 # -*- Python -*-
 
+##
+# @file test_ConnectorListener.py
+# @brief test for connector listener class
+# @date $Date: 2010/01/06 $
+# @author Shinji Kurihara
 #
-# \file test_ConnectorListener.py
-# \brief test for connector listener class
-# \date $Date: 2010/01/06 $
-# \author Shinji Kurihara
-#
 # Copyright (C) 2010
 #     Task-intelligence Research Group,
 #     Intelligent Systems Research Institute,

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_CorbaNaming.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_CorbaNaming.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_CorbaNaming.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -22,160 +22,161 @@
 import time
 
 from CorbaNaming import *
+import OpenRTM_aist
 
 class TestCorbaNaming(unittest.TestCase):
 
-	def setUp(self):
-		self.orb = CORBA.ORB_init()
-		self.naming = CorbaNaming(self.orb, "localhost:2809")
-		#self.naming.clearAll()
-		self.name_list = []
-		self.name_list.append(CosNaming.NameComponent("Mon","mon_cxt"))
-		self.name_list.append(CosNaming.NameComponent("Tus","tus_cxt"))
-		self.name_list.append(CosNaming.NameComponent("Wed","wed_cxt"))
-		self.name_list.append(CosNaming.NameComponent("Thu","thu_cxt"))
-		self.name_list.append(CosNaming.NameComponent("Fri","fri_cxt"))
-		self.name_list.append(CosNaming.NameComponent("Sat","sat_cxt"))
-		self.name_list.append(CosNaming.NameComponent("Sun","sun_cxt"))
-			
-		return
-	
+  def setUp(self):
+    self.orb = OpenRTM_aist.Manager.instance().getORB()
+    self.naming = CorbaNaming(self.orb, "localhost:2809")
+    #self.naming.clearAll()
+    self.name_list = []
+    self.name_list.append(CosNaming.NameComponent("Mon","mon_cxt"))
+    self.name_list.append(CosNaming.NameComponent("Tus","tus_cxt"))
+    self.name_list.append(CosNaming.NameComponent("Wed","wed_cxt"))
+    self.name_list.append(CosNaming.NameComponent("Thu","thu_cxt"))
+    self.name_list.append(CosNaming.NameComponent("Fri","fri_cxt"))
+    self.name_list.append(CosNaming.NameComponent("Sat","sat_cxt"))
+    self.name_list.append(CosNaming.NameComponent("Sun","sun_cxt"))
+      
+    return
+  
 
-	def tearDown(self):
-		self.orb.destroy()
-		del self
-		return
+  def tearDown(self):
+    OpenRTM_aist.Manager.instance().shutdownManager()
+    del self
+    return
 
-	def test_init(self):
-		try:
-			self.naming.init("localhost")
-		except:
-			print "Exeption at naming init."
+  def test_init(self):
+    try:
+      self.naming.init("localhost")
+    except:
+      print "Exeption at naming init."
 
 
-	def test_bind(self):
-		self.naming.clearAll()
-		self.bind_test_sequence(self.name_list)
-		
+  def test_bind(self):
+    self.naming.clearAll()
+    self.bind_test_sequence(self.name_list)
+    
 
-	def bind_test_sequence(self, sname):
-		obj = self.naming.newContext()
-		self.naming.bind(sname, obj)
+  def bind_test_sequence(self, sname):
+    obj = self.naming.newContext()
+    self.naming.bind(sname, obj)
 
-		# resolve test
-		new_obj = self.naming.resolve(sname)
-		self.assertEqual(obj._is_equivalent(new_obj), True,"Resolve failed.")
-		return True
+    # resolve test
+    new_obj = self.naming.resolve(sname)
+    self.assertEqual(obj._is_equivalent(new_obj), True,"Resolve failed.")
+    return True
 
 
-	def test_bindByString(self):
-		name = "localhost.host_cxt\/Manager123456.mgr_cxt/MobileRobot.cat_cxt/Kani0.rtc"
+  def test_bindByString(self):
+    name = "localhost.host_cxt\/Manager123456.mgr_cxt/MobileRobot.cat_cxt/Kani0.rtc"
 
-		lname = []
-		lname.append(CosNaming.NameComponent("localhost.host_cxt\/Manager123456","mgr_cxt"))
-		lname.append(CosNaming.NameComponent("MobileRobot","cat_cxt"))
-		lname.append(CosNaming.NameComponent("Kani0","rtc"))
+    lname = []
+    lname.append(CosNaming.NameComponent("localhost.host_cxt\/Manager123456","mgr_cxt"))
+    lname.append(CosNaming.NameComponent("MobileRobot","cat_cxt"))
+    lname.append(CosNaming.NameComponent("Kani0","rtc"))
 
-		obj = self.naming.newContext()
-		self.naming.bindByString(name, obj)
-		new_obj = self.naming.resolve(name)
-		self.assertEqual(obj._is_equivalent(new_obj), True,"Resolve failed.")
-		new_obj = self.naming.resolve(lname)
-		self.assertEqual(obj._is_equivalent(new_obj), True,"Resolve failed.")
+    obj = self.naming.newContext()
+    self.naming.bindByString(name, obj)
+    new_obj = self.naming.resolve(name)
+    self.assertEqual(obj._is_equivalent(new_obj), True,"Resolve failed.")
+    new_obj = self.naming.resolve(lname)
+    self.assertEqual(obj._is_equivalent(new_obj), True,"Resolve failed.")
 
 
-	#def test_bindRecursive(self):
-	#	pass
+  #def test_bindRecursive(self):
+  # pass
 
-	def test_rebind(self):
-		obj = self.naming.newContext()
+  def test_rebind(self):
+    obj = self.naming.newContext()
 
-		self.naming.bind(self.name_list, obj)
-		new_obj = self.naming.resolve(self.name_list)
-		self.assertEqual(obj._is_equivalent(new_obj), True,"Resolve failed.")
+    self.naming.bind(self.name_list, obj)
+    new_obj = self.naming.resolve(self.name_list)
+    self.assertEqual(obj._is_equivalent(new_obj), True,"Resolve failed.")
 
-		self.naming.rebind(self.name_list, obj)
-		new_obj = self.naming.resolve(self.name_list)
-		self.assertEqual(obj._is_equivalent(new_obj), True,"Resolve failed.")
-		
+    self.naming.rebind(self.name_list, obj)
+    new_obj = self.naming.resolve(self.name_list)
+    self.assertEqual(obj._is_equivalent(new_obj), True,"Resolve failed.")
+    
 
-	#def test_rebindByString(self):
-	#	pass
+  #def test_rebindByString(self):
+  # pass
     
 
-	def test_rebindRecursive(self):
-		obj = self.naming.newContext()
+  def test_rebindRecursive(self):
+    obj = self.naming.newContext()
 
-		self.naming.bind(self.name_list, obj)
-		new_obj = self.naming.resolve(self.name_list)
-		self.assertEqual(obj._is_equivalent(new_obj), True,"Resolve failed.")
+    self.naming.bind(self.name_list, obj)
+    new_obj = self.naming.resolve(self.name_list)
+    self.assertEqual(obj._is_equivalent(new_obj), True,"Resolve failed.")
 
-		self.naming.rebindRecursive(self.naming.getRootContext(), self.name_list, obj)
-		new_obj = self.naming.resolve(self.name_list)
-		self.assertEqual(obj._is_equivalent(new_obj), True,"Resolve failed.")
+    self.naming.rebindRecursive(self.naming.getRootContext(), self.name_list, obj)
+    new_obj = self.naming.resolve(self.name_list)
+    self.assertEqual(obj._is_equivalent(new_obj), True,"Resolve failed.")
 
 
-	def test_bindContext(self):
-		obj = self.naming.newContext()
-		name = []
-		name.append(CosNaming.NameComponent("bindcxt","bindcxt_cxt"))
+  def test_bindContext(self):
+    obj = self.naming.newContext()
+    name = []
+    name.append(CosNaming.NameComponent("bindcxt","bindcxt_cxt"))
 
-		self.naming.bindContext("bindcxt.bindcxt_cxt", obj)
-		new_obj = self.naming.resolve(name)
-		self.assertEqual(obj._is_equivalent(new_obj), True,"Resolve failed.")
+    self.naming.bindContext("bindcxt.bindcxt_cxt", obj)
+    new_obj = self.naming.resolve(name)
+    self.assertEqual(obj._is_equivalent(new_obj), True,"Resolve failed.")
 
 
-	def test_unbind(self):
-		obj = self.naming.newContext()
+  def test_unbind(self):
+    obj = self.naming.newContext()
 
-		self.naming.bind(self.name_list, obj)
-		self.naming.unbind(self.name_list)
-	
+    self.naming.bind(self.name_list, obj)
+    self.naming.unbind(self.name_list)
+  
 
-	def test_bindNewContext(self):
-		name = []
-		name.append(CosNaming.NameComponent("newContext","new_cxt"))
+  def test_bindNewContext(self):
+    name = []
+    name.append(CosNaming.NameComponent("newContext","new_cxt"))
 
-		self.naming.bindNewContext(name)
-		new_obj = self.naming.resolve(name)
+    self.naming.bindNewContext(name)
+    new_obj = self.naming.resolve(name)
 
 
-	def test_destroy(self):
-		obj = self.naming.newContext()
-		name = []
-		name.append(CosNaming.NameComponent("destroy","destroy_cxt"))
+  def test_destroy(self):
+    obj = self.naming.newContext()
+    name = []
+    name.append(CosNaming.NameComponent("destroy","destroy_cxt"))
 
-		self.naming.bind(name, obj)
-		self.naming.destroy(obj)
+    self.naming.bind(name, obj)
+    self.naming.destroy(obj)
 
 
-	def test_destroyRecursive(self):
-		obj = self.naming.newContext()
-		name = []
-		name.append(CosNaming.NameComponent("desRec0","desRec0_cxt"))
-		name.append(CosNaming.NameComponent("desRec1","desRec1_cxt"))
-		name.append(CosNaming.NameComponent("desRec2","desRec2_cxt"))
+  def test_destroyRecursive(self):
+    obj = self.naming.newContext()
+    name = []
+    name.append(CosNaming.NameComponent("desRec0","desRec0_cxt"))
+    name.append(CosNaming.NameComponent("desRec1","desRec1_cxt"))
+    name.append(CosNaming.NameComponent("desRec2","desRec2_cxt"))
 
-		self.naming.bind(name, obj)
-		self.naming.destroyRecursive(obj)
+    self.naming.bind(name, obj)
+    self.naming.destroyRecursive(obj)
 
-	def test_list(self):
-		bl = []
-		bi = []
-		self.naming.list(self.naming.getRootContext(), 100, bl, bi)
-		print bl[0][0].binding_name[0].id
-	
+  def test_list(self):
+    bl = []
+    bi = []
+    self.naming.list(self.naming.getRootContext(), 100, bl, bi)
+    print bl[0][0].binding_name[0].id
+  
 
-	def test_toString(self):
-		name = []
-		name.append(CosNaming.NameComponent("desRec0","desRec0_cxt"))
-		name.append(CosNaming.NameComponent("desRec1","desRec1_cxt"))
-		name.append(CosNaming.NameComponent("desRec2","desRec2_cxt"))
+  def test_toString(self):
+    name = []
+    name.append(CosNaming.NameComponent("desRec0","desRec0_cxt"))
+    name.append(CosNaming.NameComponent("desRec1","desRec1_cxt"))
+    name.append(CosNaming.NameComponent("desRec2","desRec2_cxt"))
 
-		string_name = self.naming.toString(name)
-		self.assertEqual(str("desRec0.desRec0_cxt/desRec1.desRec1_cxt/desRec2.desRec2_cxt/"),str(string_name))
-		print ".",string_name,"."
+    string_name = self.naming.toString(name)
+    self.assertEqual(str("desRec0.desRec0_cxt/desRec1.desRec1_cxt/desRec2.desRec2_cxt/"),str(string_name))
+    print ".",string_name,"."
 
 ############### test #################
 if __name__ == '__main__':
-	unittest.main()
+  unittest.main()

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_CorbaPort.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_CorbaPort.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_CorbaPort.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -53,6 +53,9 @@
     self._cpSvc = CorbaPort("MyService")
     self._cpCon = CorbaPort("MyService")
 
+  def tearDown(self):
+    OpenRTM_aist.Manager.instance().shutdownManager()
+    return
 
   def test_init(self):
     prop = OpenRTM_aist.Properties()
@@ -65,6 +68,7 @@
 
   def test_registerProvider(self):
     self.assertEqual(self._cpSvc.registerProvider("myservice0", "MyService", self._mysvc),True)
+    self._cpSvc.activateInterfaces()
     self._cpSvc.deactivateInterfaces()
 
 
@@ -74,14 +78,18 @@
 
   def test_activateInterfaces(self):
     self.assertEqual(self._cpSvc.registerProvider("myservice0", "MyService", self._mysvc),True)
+    self._cpSvc.activateInterfaces()
     self._cpSvc.deactivateInterfaces()
     self._cpSvc.activateInterfaces()
     self._cpSvc.deactivateInterfaces()
 
+
   def test_deactivateInterfaces(self):
     self.assertEqual(self._cpSvc.registerProvider("myservice0", "MyService", self._mysvc),True)
+    self._cpSvc.activateInterfaces()
     self._cpSvc.deactivateInterfaces()
 
+
   def test_publishInterfaces(self):
     prof = RTC.ConnectorProfile("","",[],[])
     self.assertEqual(self._cpSvc.publishInterfaces(prof),RTC.RTC_OK)
@@ -102,14 +110,15 @@
 
   def test_findProvider(self):
     self.assertEqual(self._cpSvc.registerProvider("myservice0", "MyService", self._mysvc),True)
-    consHolder = CorbaPort.CorbaConsumerHolder("myservice0","MyService",self._mycon)
-    self.assertEqual(self._cpSvc.findProvider([],consHolder),False)
+    consHolder = CorbaPort.CorbaConsumerHolder("myservice0","MyService",self._mycon,self._cpCon)
+    ior=[]
+    self.assertEqual(self._cpSvc.findProvider([],consHolder,ior),False)
 
-
   def test_findProviderOld(self):
     self.assertEqual(self._cpSvc.registerProvider("myservice0", "MyService", self._mysvc),True)
-    consHolder = CorbaPort.CorbaConsumerHolder("myservice0","MyService",self._mycon)
-    self.assertEqual(self._cpSvc.findProviderOld([],consHolder),False)
+    consHolder = CorbaPort.CorbaConsumerHolder("myservice0","MyService",self._mycon,self._cpCon)
+    ior=[]
+    self.assertEqual(self._cpSvc.findProviderOld([],consHolder,ior),False)
 
 
 

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_ECFactory.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_ECFactory.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_ECFactory.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -21,34 +21,36 @@
 import unittest
 
 from ECFactory import *
+import OpenRTM_aist
 
 
 class TestECFactoryPython(unittest.TestCase):
 
-	def setUp(self):
-		self.ecfact = ECFactoryPython("test", self.create_func, self.del_func)
-		return
-	
-	def tearDown(self):
-		del self
-		return
+  def setUp(self):
+    self.ecfact = ECFactoryPython("test", self.create_func, self.del_func)
+    return
+  
+  def tearDown(self):
+    OpenRTM_aist.Manager.instance().shutdownManager()
+    del self
+    return
 
-	def create_func(self):
-		print "create_func"
+  def create_func(self):
+    print "create_func"
 
-	def del_func(self, ec):
-		print "del_func"
-		
-	def test_name(self):
-		name = self.ecfact.name()
-		self.assertEqual(name,"test", "name is false.")
+  def del_func(self, ec):
+    print "del_func"
+    
+  def test_name(self):
+    name = self.ecfact.name()
+    self.assertEqual(name,"test", "name is false.")
 
-	def test_create(self):
-		self.ecfact.create()
+  def test_create(self):
+    self.ecfact.create()
 
 
-	def test_destroy(self):
-		self.ecfact.destroy("hoge")
+  def test_destroy(self):
+    self.ecfact.destroy("hoge")
     
 ############### test #################
 if __name__ == '__main__':

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_ExtTrigExecutionContext.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_ExtTrigExecutionContext.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_ExtTrigExecutionContext.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -17,6 +17,7 @@
 
 import sys
 sys.path.insert(1,"../")
+import threading
 
 import unittest
 import OpenRTM_aist
@@ -27,38 +28,54 @@
 from omniORB import CORBA, PortableServer
 
 class DFP(OpenRTM_aist.RTObject_impl):
-	def __init__(self):
-		self._orb = CORBA.ORB_init()
-		self._poa = self._orb.resolve_initial_references("RootPOA")
-		OpenRTM_aist.RTObject_impl.__init__(self, orb=self._orb, poa=self._poa)
-		self._error = False
-		self._ref = self._this()
-		self._eclist = []
+  def __init__(self):
+    self._orb = CORBA.ORB_init()
+    self._poa = self._orb.resolve_initial_references("RootPOA")
+    OpenRTM_aist.RTObject_impl.__init__(self, orb=self._orb, poa=self._poa)
+    self._error = False
+    self._ref = self._this()
+    self._eclist = []
 
-	def on_execute(self, ec_id):
-		print "on_execute"
-		return RTC.RTC_OK
+  def on_execute(self, ec_id):
+    return RTC.RTC_OK
 
 class TestExtTrigExecutionContext(unittest.TestCase):
-	def setUp(self):
-		self._dfp = DFP()
-		self._dfp._poa._get_the_POAManager().activate()
-		self.etec = ExtTrigExecutionContext()
-		#self.etec = ExtTrigExecutionContext(self._dfp._ref)
+  def setUp(self):
+    self._dfp = DFP()
+    self._dfp._poa._get_the_POAManager().activate()
+    self.etec = ExtTrigExecutionContext()
+    #self.etec = ExtTrigExecutionContext(self._dfp._ref)
 
-	def test_tick(self):
-		pass
+  def tearDown(self):
+    OpenRTM_aist.Manager.instance().shutdownManager()
+    return
 
-	def test_run(self):
-		self.assertEqual(self.etec.start(),RTC.RTC_OK)
-		self.assertEqual(self.etec.add_component(self._dfp._this()),RTC.RTC_OK)
-		self.assertEqual(self.etec.activate_component(self._dfp._this()),RTC.RTC_OK)
-		import time
-		time.sleep(3)
-		self.etec.tick()
-		self.etec.tick()
-		time.sleep(3)
+  def test_tick(self):
+    pass
 
+  def test_run(self):
+    self.assertEqual(self.etec.start(),RTC.RTC_OK)
+    self.assertEqual(self.etec.add_component(self._dfp._this()),RTC.RTC_OK)
+    self.assertEqual(self.etec.activate_component(self._dfp._this()),RTC.RTC_OK)
+    import time
+    time.sleep(1)
+    self.etec.tick()
+    self.etec.tick()
+    time.sleep(1)
+    self.assertEqual(self.etec.deactivate_component(self._dfp._this()),RTC.RTC_OK)
+    time.sleep(1)
+    self.assertEqual(self.etec.remove_component(self._dfp._this()),RTC.RTC_OK)
+    th = threading.Thread(target=self.stop)
+    th.start()
+    self.etec.tick()
+    if th:
+      th.join()
+    self._dfp._poa.deactivate_object(self._dfp._poa.servant_to_id(self.etec))
+    self._dfp._poa.deactivate_object(self._dfp._poa.servant_to_id(self._dfp))
+
+  def stop(self):
+    self.etec.stop()
+
 ############### test #################
 if __name__ == '__main__':
         unittest.main()

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_Factory.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_Factory.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_Factory.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -24,31 +24,32 @@
 from Factory import *
 
 class testClass:
-	def __init__(self,mgr):
-		self.test(mgr)
-		pass
+  def __init__(self,mgr):
+    self.test(mgr)
+    pass
 
-	def test(self,mgr):
-		print "testClass: ", mgr
+  def test(self,mgr):
+    print "testClass: ", mgr
 
 class TestFactoryPython(unittest.TestCase):
 
-	def setUp(self):
-		#profile = OpenRTM_aist.Properties()
-		profile = None
-		self.factory = FactoryPython(profile, testClass, OpenRTM_aist.Delete)
-		return
+  def setUp(self):
+    #profile = OpenRTM_aist.Properties()
+    profile = None
+    self.factory = FactoryPython(profile, testClass, OpenRTM_aist.Delete)
+    return
 
-	def tearDown(self):
-		del self
-		return
+  def tearDown(self):
+    OpenRTM_aist.Manager.instance().shutdownManager()
+    del self
+    return
 
-	def test_create(self):
-		self.factory.create(3)
-		self.assertEqual(self.factory.number(), 0)
-	
-	def destroy(self):
-		pass
+  def test_create(self):
+    self.factory.create(3)
+    self.assertEqual(self.factory.number(), 0)
+  
+  def destroy(self):
+    pass
 
 ############### test #################
 if __name__ == '__main__':

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_InPort.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_InPort.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_InPort.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -28,102 +28,107 @@
 ShareCount = 0
 
 class OnRWTest:
-	def __init__(self):
-		pass
+  def __init__(self):
+    pass
 
-	def echo(self, value=None):
-		print "OnRW Called"
+  def echo(self, value=None):
+    print "OnRW Called"
 
 
 class OnRWConvertTest:
-	def __init__(self):
-		pass
+  def __init__(self):
+    pass
 
-	def echo(self, value=None):
-		print "OnRWConvert Called"
-		return value
+  def echo(self, value=None):
+    print "OnRWConvert Called"
+    return value
 
 
 class BufferMock:
-	def __init__(self):
-		self._ShareCount = 0
-		self._data = None
-		return
+  def __init__(self):
+    self._ShareCount = 0
+    self._data = None
+    return
 
-	def write(self, data):
-		global ShareCount
-		ShareCount += 1
-		self._ShareCount = ShareCount
-		self._data = data
-		return OpenRTM_aist.BufferStatus.BUFFER_OK
+  def write(self, data):
+    global ShareCount
+    ShareCount += 1
+    self._ShareCount = ShareCount
+    self._data = data
+    return OpenRTM_aist.BufferStatus.BUFFER_OK
 
-	def read(self, value):
-		global ShareCount
-		ShareCount -= 1
-		if ShareCount < 0:
-			ShareCount = 0
-		self._ShareCount = ShareCount
-		if len(value) > 0:
-			value[0] = self._data
-		else:
-			value.append(self._data)
-		return OpenRTM_aist.BufferStatus.BUFFER_OK
+  def read(self, value):
+    global ShareCount
+    ShareCount -= 1
+    if ShareCount < 0:
+      ShareCount = 0
+    self._ShareCount = ShareCount
+    if len(value) > 0:
+      value[0] = self._data
+    else:
+      value.append(self._data)
+    return OpenRTM_aist.BufferStatus.BUFFER_OK
 
-	def readable(self):
-		return self._ShareCount
+  def readable(self):
+    return self._ShareCount
 
 
 class ConnectorMock:
-	def __init__(self, buffer):
-		self._buffer = buffer
+  def __init__(self, buffer):
+    self._buffer = buffer
+    return
 
-	def write(self, data):
-	        self._buffer.write(data)
-		return OpenRTM_aist.BufferStatus.BUFFER_OK
+  def write(self, data):
+    self._buffer.write(data)
+    return OpenRTM_aist.BufferStatus.BUFFER_OK
 
-	def read(self, data):
-	        self._buffer.read(data)
-		return OpenRTM_aist.DataPortStatus.PORT_OK
+  def read(self, data):
+    self._buffer.read(data)
+    return OpenRTM_aist.DataPortStatus.PORT_OK
 
-	def getBuffer(self):
-		ret = self._buffer.readable()
-		return self._buffer
+  def getBuffer(self):
+    ret = self._buffer.readable()
+    return self._buffer
 
 
 class TestInPort(unittest.TestCase):
-	def setUp(self):
-		OpenRTM_aist.Manager.instance()
-		self._buffer = BufferMock()
-		self._ipn = InPort("in", RTC.TimedLong(RTC.Time(0,0), 0), self._buffer)
-		self._connector = ConnectorMock(self._buffer)
-		self._ipn._connectors = [self._connector]
+  def setUp(self):
+    OpenRTM_aist.Manager.instance()
+    self._buffer = BufferMock()
+    self._ipn = InPort("in", RTC.TimedLong(RTC.Time(0,0), 0), self._buffer)
+    self._connector = ConnectorMock(self._buffer)
+    self._ipn._connectors = [self._connector]
 
-	def test_name(self):
-		self.assertEqual(self._ipn.name(), "in")
+  def tearDown(self):
+    OpenRTM_aist.Manager.instance().shutdownManager()
+    return
 
-	def test_read(self):
-		self.assertEqual(self._ipn.isEmpty(), True)
-		self.assertEqual(self._ipn.isNew(), False)
-		self._connector.write(RTC.TimedLong(RTC.Time(0,0), 123))
-		self.assertEqual(self._ipn.isEmpty(), False)
-		self.assertEqual(self._ipn.isNew(), True)
-		read_data = self._ipn.read()
-		self.assertEqual(self._ipn.isEmpty(), True)
-		self.assertEqual(self._ipn.isNew(), False)
-		self.assertEqual(read_data.data, 123)
-		self._ipn.update()
-		return
+  def test_name(self):
+    self.assertEqual(self._ipn.name(), "in")
 
-	def test_OnRead(self):
-		self._connector.write(RTC.TimedLong(RTC.Time(0,0), 456))
-		self._ipn.setOnRead(OnRWTest().echo)
-		self._ipn.setOnReadConvert(OnRWConvertTest().echo)
-		read_data = self._ipn.read()
-		self.assertEqual(read_data.data, 456)
-		return
+  def test_read(self):
+    self.assertEqual(self._ipn.isEmpty(), True)
+    self.assertEqual(self._ipn.isNew(), False)
+    self._connector.write(RTC.TimedLong(RTC.Time(0,0), 123))
+    self.assertEqual(self._ipn.isEmpty(), False)
+    self.assertEqual(self._ipn.isNew(), True)
+    read_data = self._ipn.read()
+    self.assertEqual(self._ipn.isEmpty(), True)
+    self.assertEqual(self._ipn.isNew(), False)
+    self.assertEqual(read_data.data, 123)
+    self._ipn.update()
+    return
 
+  def test_OnRead(self):
+    self._connector.write(RTC.TimedLong(RTC.Time(0,0), 456))
+    self._ipn.setOnRead(OnRWTest().echo)
+    self._ipn.setOnReadConvert(OnRWConvertTest().echo)
+    read_data = self._ipn.read()
+    self.assertEqual(read_data.data, 456)
+    return
 
+
 ############### test #################
 if __name__ == '__main__':
-        unittest.main()
+  unittest.main()
 

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_InPortBase.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_InPortBase.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_InPortBase.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -71,6 +71,7 @@
 
 
   def tearDown(self):
+    OpenRTM_aist.Manager.instance().shutdownManager()
     return
 
   def test_properties(self):

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_InPortProvider.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_InPortProvider.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_InPortProvider.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -26,22 +26,26 @@
 
 
 class TestInPortProvider(unittest.TestCase):
-	def setUp(self):
-		return
+  def setUp(self):
+    return
 
-	def test_publishInterfaceProfile(self):
-		InPortProviderFactory.instance().setInterfaceType("corba_cdr")
-		InPortProviderFactory.instance().setDataFlowType("push,pull")
-		InPortProviderFactory.instance().setSubscriptionType("flush,new,periodic")
-		InPortProviderFactory.instance().publishInterfaceProfile([])
+  def tearDown(self):
+    OpenRTM_aist.Manager.instance().shutdownManager()
+    return
 
-	def test_publishInterface(self):
-		InPortProviderFactory.instance().setInterfaceType("corba_cdr")
-		InPortProviderFactory.instance().setDataFlowType("push,pull")
-		InPortProviderFactory.instance().setSubscriptionType("flush,new,periodic")
-		self.assertEqual(InPortProviderFactory.instance().publishInterface([OpenRTM_aist.NVUtil.newNV("dataport.interface_type","corba_cdr")]),True)
+  def test_publishInterfaceProfile(self):
+    InPortProviderFactory.instance().setInterfaceType("corba_cdr")
+    InPortProviderFactory.instance().setDataFlowType("push,pull")
+    InPortProviderFactory.instance().setSubscriptionType("flush,new,periodic")
+    InPortProviderFactory.instance().publishInterfaceProfile([])
 
+  def test_publishInterface(self):
+    InPortProviderFactory.instance().setInterfaceType("corba_cdr")
+    InPortProviderFactory.instance().setDataFlowType("push,pull")
+    InPortProviderFactory.instance().setSubscriptionType("flush,new,periodic")
+    self.assertEqual(InPortProviderFactory.instance().publishInterface([OpenRTM_aist.NVUtil.newNV("dataport.interface_type","corba_cdr")]),True)
 
+
 ############### test #################
 if __name__ == '__main__':
         unittest.main()

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_Listener.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_Listener.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_Listener.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -21,28 +21,29 @@
 import unittest
 
 from Listener import *
+import OpenRTM_aist
 
 class test:
-	def func(self):
-		print "test func"
+  def func(self):
+    print "test func"
 
 
 class TestListener(unittest.TestCase):
-	def setUp(self):
-		self.obj = ListenerObject(test(),test.func)
-		self.func = ListenerFunc(test().func)
+  def setUp(self):
+    self.obj = ListenerObject(test(),test.func)
+    self.func = ListenerFunc(test().func)
 
 
-	def tearDown(self):
-		pass
+  def tearDown(self):
+    OpenRTM_aist.Manager.instance().shutdownManager()
+    return
 
+  def test_invoke(self):
+    self.obj.invoke()
+    self.func.invoke()
 
-	def test_invoke(self):
-		self.obj.invoke()
-		self.func.invoke()
 
 
-
 ############### test #################
 if __name__ == '__main__':
         unittest.main()

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_Manager.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_Manager.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_Manager.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -26,39 +26,40 @@
 import RTC, RTC__POA
 
 testcomp_spec = ["implementation_id", "TestComp",
-           "type_name",         "TestComp",
-           "description",       "Test example component",
-           "version",           "1.0",
-           "vendor",            "Shinji Kurihara, AIST",
-           "category",          "example",
-           "activity_type",     "DataFlowComponent",
-           "max_instance",      "10",
-           "language",          "C++",
-           "lang_type",         "compile",
-           # Configuration variables
-           "conf.default.int_param0", "0",
-           "conf.default.int_param1", "1",
-           "conf.default.double_param0", "0.11",
-           "conf.default.double_param1", "9.9",
-           "conf.default.str_param0", "hoge",
-           "conf.default.str_param1", "dara",
-           "conf.default.vector_param0", "0.0,1.0,2.0,3.0,4.0",
-           ""]
+                 "type_name",         "TestComp",
+                 "description",       "Test example component",
+                 "version",           "1.0",
+                 "vendor",            "Shinji Kurihara, AIST",
+                 "category",          "example",
+                 "activity_type",     "DataFlowComponent",
+                 "max_instance",      "10",
+                 "language",          "C++",
+                 "lang_type",         "compile",
+                 # Configuration variables
+                 "conf.default.int_param0", "0",
+                 "conf.default.int_param1", "1",
+                 "conf.default.double_param0", "0.11",
+                 "conf.default.double_param1", "9.9",
+                 "conf.default.str_param0", "hoge",
+                 "conf.default.str_param1", "dara",
+                 "conf.default.vector_param0", "0.0,1.0,2.0,3.0,4.0",
+                 ""]
 
-com = None
-
 class TestComp(OpenRTM_aist.DataFlowComponentBase):
-  def __init_(self, manager):
+  def __init__(self, manager):
     OpenRTM_aist.DataFlowComponentBase.__init__(self, manager)
+    return
 
     
+def TestCompInit(manager):
+  profile = OpenRTM_aist.Properties(defaults_str=testcomp_spec)
+  manager.registerFactory(profile,
+                          TestComp,
+                          OpenRTM_aist.Delete)
+  
 #def TestCompInit(manager):
 def MyModuleInit(manager):
-  global com
-  profile = OpenRTM_aist.Properties(defaults_str=testcomp_spec)
-  manager.registerFactory(profile,
-        TestComp,
-        OpenRTM_aist.Delete)
+  TestCompInit(manager)
   com = manager.createComponent("TestComp")
 
 def TestEcInit(manager):
@@ -72,64 +73,64 @@
 class TestManager(unittest.TestCase):
 
   def setUp(self):
+    global manager
+    #manager = OpenRTM_aist.Manager.init(sys.argv)
+    #self.manager = manager
     self.manager = OpenRTM_aist.Manager.init(sys.argv)
 
-
-  def COMMENTtest_terminate(self):
-    self.manager.activateManager()
-    self.manager.runManager(True)
-    self.manager.terminate()
-    return
-
-  def COMMENTtest_shutdown(self):
-    self.manager.activateManager()
-    self.manager.runManager(True)
+  def tearDown(self):
+    self.manager.shutdownManager()
     time.sleep(0.1)
-    self.manager.shutdown()
-    #self.manager.runManager()
 
+###  def COMMENTtest_terminate(self):
+###    self.manager.activateManager()
+###    self.manager.runManager(True)
+###    self.manager.terminate()
+###    return
+###
+###  def COMMENTtest_shutdown(self):
+###    self.manager.activateManager()
+###    self.manager.runManager(True)
+###    time.sleep(0.1)
+###    self.manager.shutdown()
+###    #self.manager.runManager()
+###
+###
   def test_init(self):
-    self.assertEqual(self.manager,OpenRTM_aist.Manager.init(sys.argv))
+    #self.assertEqual(self.manager,OpenRTM_aist.Manager.init(sys.argv))
     return
 
   def test_instance(self):
     self.assertEqual(OpenRTM_aist.Manager.instance(), self.manager)
     return
 
-  def test_activateManager(self):
-    self.assertEqual(self.manager.activateManager(),True)
-    return
 
-  # thread関係のエラー発生のためコメントアウト
-  def COMMENTtest_runManager(self):
-    self.manager.runManager(True)
-    return
-
   def test_load_unload(self):
     self.manager.load("hoge", "echo")
     self.manager.unload("hoge")
     self.manager.unloadAll()
     self.manager.load("hoge", "echo")
     self.assertEqual(len(self.manager.getLoadedModules()), 1)
-    self.assertNotEqual(len(self.manager.getLoadableModules()), 0)
+    #self.assertEqual(len(self.manager.getLoadableModules()), 1)
     return
 
   def test_getLoadedModules(self):
     self.manager.activateManager()
-    self.assertNotEqual(self.manager.getLoadedModules(),[])
+    self.assertEqual(self.manager.getLoadedModules(),[])
     return
 
   def test_getLoadableModules(self):
     self.manager.activateManager()
-    self.assertNotEqual(self.manager.getLoadableModules(),[])
+    # hoge.py is loadable module.
+    #self.assertNotEqual(self.manager.getLoadableModules(),[])
     return
 
   def test_registerFactory(self):
     profile = OpenRTM_aist.Properties(defaults_str=testcomp_spec)
     self.assertEqual(self.manager.registerFactory(profile,
-                    TestComp,
-                    OpenRTM_aist.Delete),
-         True)
+                                                  TestComp,
+                                                  OpenRTM_aist.Delete),
+                     True)
     return
 
   def test_getFactoryProfiles(self):
@@ -139,9 +140,9 @@
   def test_registerECFactory(self):
     profile = OpenRTM_aist.Properties(defaults_str=testcomp_spec)
     self.assertEqual(self.manager.registerECFactory("Art",
-                TestComp,
-                OpenRTM_aist.Delete),
-         True)
+                                                    TestComp,
+                                                    OpenRTM_aist.Delete),
+                     True)
     return
 
   def test_getModulesFactories(self):
@@ -152,11 +153,11 @@
     self.manager.activateManager()
     profile = OpenRTM_aist.Properties(defaults_str=testcomp_spec)
     self.manager.registerFactory(profile,
-               TestComp,
-               OpenRTM_aist.Delete)
+                                 TestComp,
+                                 OpenRTM_aist.Delete)
     com = self.manager.createComponent("TestComp")
     self.assertNotEqual(com,None)
-    self.assertEqual(self.manager.getComponent("TestComp0"),self.manager.getComponents()[0])
+    #self.assertEqual(self.manager.getComponent("TestComp0"),self.manager.getComponents()[0])
     #self.manager.deleteComponent("TestComp0")
     self.manager.shutdownComponents()
     time.sleep(0.1)
@@ -165,7 +166,7 @@
   def test_getORB(self):
     self.manager.getORB()
     return
-    
+
   def test_getPOA(self):
     self.manager.getPOA()
     return
@@ -182,71 +183,74 @@
                                  TestComp,
                                  OpenRTM_aist.Delete)
     com = self.manager.createComponent("TestComp")
-    print "com: ", com
     self.assertEqual(self.manager.registerComponent(com),True)
     self.manager.shutdownComponents()
     return
-
-  def COMMENTtest_unregisterComponent(self):
-    self.manager.activateManager()
-    profile = OpenRTM_aist.Properties(defaults_str=testcomp_spec)
-    self.manager.registerFactory(profile,
-               TestComp,
-               OpenRTM_aist.Delete)
-    com = self.manager.createComponent("TestComp")
-    self.assertEqual(self.manager.unregisterComponent(com),True)
-    self.manager.shutdownComponents()
-    return
-
+###
+###  def COMMENTtest_unregisterComponent(self):
+###    self.manager.activateManager()
+###    profile = OpenRTM_aist.Properties(defaults_str=testcomp_spec)
+###    self.manager.registerFactory(profile,
+###               TestComp,
+###               OpenRTM_aist.Delete)
+###    com = self.manager.createComponent("TestComp")
+###    self.assertEqual(self.manager.unregisterComponent(com),True)
+###    self.manager.shutdownComponents()
+###    return
+###
   def test_createContext(self):
     ec_args = "PeriodicExecutionContext?rate="
     self.manager.activateManager()
-    self.assertNotEqual(self.manager.createContext(ec_args),None)
+    ec = self.manager.createContext(ec_args)
+    self.assertNotEqual(ec,None)
+    ec.stop()
+    self.manager.getPOA().deactivate_object(self.manager.getPOA().servant_to_id(ec))
+    del ec
     return
-
-  """ 
-  def test_shutdownManager(self):
-    return
-
-  def test_shutdownOnNoRtcs(self):
-    return
-    """
-
-  def test_createORBEndpoints(self):
-    self.manager.activateManager()
-    l=[]
-    self.manager.createORBEndpoints(l)
-    return
-
+###
+###
+###
+###  def test_shutdownManager(self):
+###    return
+###
+###  def test_shutdownOnNoRtcs(self):
+###    return
+###
+###    
+###  def test_createORBEndpoints(self):
+###    self.manager.activateManager()
+###    l=[]
+###    self.manager.createORBEndpoints(l)
+###    return
+###
   def test_createORBEndpointOption(self):
     self.manager.activateManager()
     self.manager.createORBEndpointOption("",[])
     return
-
-  """
-  def test_shutdownORB(self):
-    return
-
-  def test_shutdownComponents(self):
-    return
-  
-    """
-
-  def COMMENTtest_cleanupComponent(self):
+###
+###
+###
+###  def test_shutdownORB(self):
+###    return
+###
+###  def test_shutdownComponents(self):
+###    return
+###
+###  
+###
+  def test_cleanupComponent(self):
     self.manager.activateManager()
     profile = OpenRTM_aist.Properties(defaults_str=testcomp_spec)
     self.manager.registerFactory(profile,
                                  TestComp,
                                  OpenRTM_aist.Delete)
     com = self.manager.createComponent("TestComp")
+    self.assertEqual(self.manager.registerComponent(com),True)
     self.manager.cleanupComponent(com)
+    com.exit()
     self.manager.shutdownComponents()
     return
 
-  def test_cleanupComponents(self):
-    self.manager.activateManager()
-    self.manager.cleanupComponents()
-    return
 
   def test_notifyFinalized(self):
     self.manager.activateManager()
@@ -256,33 +260,33 @@
                                  OpenRTM_aist.Delete)
     com = self.manager.createComponent("TestComp")
     #self.manager.notifyFinalized(com)
-    self.manager.cleanupComponents()
+    #self.manager.cleanupComponents()
     self.manager.shutdownComponents()
     return
 
 
   def test_initManager(self):
     self.manager.initManager(sys.argv)
+    #self.manager.shutdownManager()
     return
 
   def test_initLogger(self):
     self.manager.initLogger()
-    self.manager.shutdownLogger()
+    #self.manager.shutdownLogger()
     return
 
   def test_initORB(self):
-    self.assertEqual(self.manager.initORB(),True)
+    #self.assertEqual(self.manager.initORB(),True)
+    #self.manager.shutdownORB()
     return
 
-  def test_createORBOptions(self):
-    self.manager.createORBOptions()
-    return
 
   def test_initNaming(self):
     self.assertEqual(self.manager.initNaming(),True)
-    self.manager.shutdownNaming()
+    #self.manager.shutdownNaming()
     return
 
+
   def test_initExecContext(self):
     self.assertEqual(self.manager.initExecContext(),True)
     return
@@ -291,14 +295,16 @@
     self.assertEqual(self.manager.initComposite(),True)
     return
 
+
   def test_initFactories(self):
     self.assertEqual(self.manager.initFactories(),True)
     return
 
   def test_initManagerServant(self):
-    self.assertEqual(self.manager.initManagerServant(), False)
+    self.assertEqual(self.manager.initManagerServant(), True)
     return
 
+
   def test_procComponentArgs(self):
     comp_id = OpenRTM_aist.Properties()
     comp_conf = OpenRTM_aist.Properties()
@@ -317,22 +323,20 @@
     self.assertEqual(ec_conf.getProperty("rate"),"1000")
     return
 
-  """
   def test_configureComponent(self):
     self.manager.activateManager()
     profile = OpenRTM_aist.Properties(defaults_str=testcomp_spec)
     self.manager.registerFactory(profile,
-               TestComp,
-               OpenRTM_aist.Delete)
+                                 TestComp,
+                                 OpenRTM_aist.Delete)
     com = self.manager.createComponent("TestComp")
     prop = OpenRTM_aist.Properties()
     self.manager.configureComponent(com,prop)
     self.manager.cleanupComponent(com)
+    com.exit()
     self.manager.shutdownComponents()
     return
-    """
 
-
   def test_formatString(self):
     profile = OpenRTM_aist.Properties(defaults_str=testcomp_spec)
     self.assertEqual(self.manager.formatString("rtc.log",profile),"rtc.log")
@@ -350,6 +354,7 @@
 
 
 
+
 ############### test #################
 if __name__ == '__main__':
         unittest.main()

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_ManagerConfig.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_ManagerConfig.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_ManagerConfig.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -25,73 +25,73 @@
 from ManagerConfig import *
 
 configsample_spec = ["implementation_id", "ConfigSample",
-					 "type_name",         "ConfigSample",
-					 "description",       "Configuration example component",
-					 "version",           "1.0",
-					 "vendor",            "Shinji Kurihara, AIST",
-					 "category",          "example",
-					 "activity_type",     "DataFlowComponent",
-					 "max_instance",      "10",
-					 "language",          "C++",
-					 "lang_type",         "compile",
-					 # Configuration variables
-					 "conf.default.int_param0", "0",
-					 "conf.default.int_param1", "1",
-					 "conf.default.double_param0", "0.11",
-					 "conf.default.double_param1", "9.9",
-					 "conf.default.str_param0", "hoge",
-					 "conf.default.str_param1", "dara",
-					 "conf.default.vector_param0", "0.0,1.0,2.0,3.0,4.0",
-					 ""]
+           "type_name",         "ConfigSample",
+           "description",       "Configuration example component",
+           "version",           "1.0",
+           "vendor",            "Shinji Kurihara, AIST",
+           "category",          "example",
+           "activity_type",     "DataFlowComponent",
+           "max_instance",      "10",
+           "language",          "C++",
+           "lang_type",         "compile",
+           # Configuration variables
+           "conf.default.int_param0", "0",
+           "conf.default.int_param1", "1",
+           "conf.default.double_param0", "0.11",
+           "conf.default.double_param1", "9.9",
+           "conf.default.str_param0", "hoge",
+           "conf.default.str_param1", "dara",
+           "conf.default.vector_param0", "0.0,1.0,2.0,3.0,4.0",
+           ""]
 
 class TestManagerConfig(unittest.TestCase) :
   
-	def setUp(self):
-		argv = (sys.argv[0], "-f", "./rtc.conf")
-		self.mgrConf = ManagerConfig(argv)
+  def setUp(self):
+    argv = (sys.argv[0], "-f", "./rtc.conf")
+    self.mgrConf = ManagerConfig(argv)
 
 
-	def tearDown(self):
-		pass
+  def tearDown(self):
+    OpenRTM_aist.Manager.instance().shutdownManager()
+    return
+  
+  def test_configure(self):
+    prop = OpenRTM_aist.Properties(defaults_str=configsample_spec)
+    self.mgrConf.configure(prop)
+    self.assertEqual(prop.getProperty("type_name"),"ConfigSample","Result failed.")
 
-	
-	def test_configure(self):
-		prop = OpenRTM_aist.Properties(defaults_str=configsample_spec)
-		self.mgrConf.configure(prop)
-		self.assertEqual(prop.getProperty("type_name"),"ConfigSample","Result failed.")
+    
+  def test_parseArgs(self):
+    argv = (sys.argv[0], "-f", "./rtc.conf")
+    self.mgrConf.parseArgs(argv)
 
-		
-	def test_parseArgs(self):
-		argv = (sys.argv[0], "-f", "./rtc.conf")
-		self.mgrConf.parseArgs(argv)
+    # Failed Pattern
+    # argv = (sys.argv[0], "-c", "./rtc.conf")
+    # self.mgrConf.parseArgs(3,argv)
+    
 
-		# Failed Pattern
-		# argv = (sys.argv[0], "-c", "./rtc.conf")
-		# self.mgrConf.parseArgs(3,argv)
-		
+  def test_findConfigFile(self):
+    self.assertEqual(self.mgrConf.findConfigFile(),True,"Result failed.")
 
-	def test_findConfigFile(self):
-		self.assertEqual(self.mgrConf.findConfigFile(),True,"Result failed.")
 
+  def test_setSystemInformation(self):
+    prop = OpenRTM_aist.Properties(defaults_str=configsample_spec)
+    # Failed Pattern
+    # self.assertEqual(prop.getProperty("manager.os.name"),"Linux","Result failed.")
 
-	def test_setSystemInformation(self):
-		prop = OpenRTM_aist.Properties(defaults_str=configsample_spec)
-		# Failed Pattern
-		# self.assertEqual(prop.getProperty("manager.os.name"),"Linux","Result failed.")
+    prop = self.mgrConf.setSystemInformation(prop)
+    self.assertEqual(prop.getProperty("manager.os.name"),"Linux","Result failed.")
+    #self.assertEqual(prop.getProperty("manager.os.name"),"Windows","Result failed.")
 
-		prop = self.mgrConf.setSystemInformation(prop)
-		self.assertEqual(prop.getProperty("manager.os.name"),"Linux","Result failed.")
-		#self.assertEqual(prop.getProperty("manager.os.name"),"Windows","Result failed.")
 
+  def test_fileExist(self):
+    self.assertEqual(self.mgrConf.fileExist("rtc.conf"),True,"Result failed.")
+    self.assertEqual(self.mgrConf.fileExist("./rtc.conf"),True,"Result failed.")
 
-	def test_fileExist(self):
-		self.assertEqual(self.mgrConf.fileExist("rtc.conf"),True,"Result failed.")
-		self.assertEqual(self.mgrConf.fileExist("./rtc.conf"),True,"Result failed.")
+    # Failed Pattern
+    # self.assertEqual(self.mgrConf.fileExist("../rtc.conf"),True,"Result failed.")
+    
 
-		# Failed Pattern
-		# self.assertEqual(self.mgrConf.fileExist("../rtc.conf"),True,"Result failed.")
-		
-
 ############### test #################
 if __name__ == '__main__':
         unittest.main()

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_ManagerServant.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_ManagerServant.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_ManagerServant.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -15,7 +15,7 @@
 #     All rights reserved.
 #
 
-import sys
+import sys,time
 sys.path.insert(1,"../RTM_IDL")
 sys.path.insert(1,"../")
 
@@ -76,6 +76,13 @@
   def setUp(self):
     self.managerservant = OpenRTM_aist.ManagerServant()
 
+  def tearDown(self):
+    self.managerservant.__del__()
+    del self.managerservant
+    #OpenRTM_aist.Manager.instance().shutdownManager()
+    OpenRTM_aist.Manager.instance().shutdown()
+    time.sleep(0.1)
+    return
 
   """
   def test_terminate(self):
@@ -201,7 +208,6 @@
     self.assertEqual(len(self.managerservant.get_slave_managers()),0)
     return
 
-
     
 """
   def test_forck(self):

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_ModuleManager.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_ModuleManager.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_ModuleManager.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -52,6 +52,7 @@
 
   def tearDown(self):
     del self.mm
+    OpenRTM_aist.Manager.instance().shutdownManager()
     
     
   def test_load_unload(self):
@@ -97,20 +98,20 @@
 
     
   def test_setLoadpath(self):
-    self.mm.setLoadpath(["/usr/lib/python/site-packages"])
+    self.mm.setLoadpath(["/usr/lib/python/site-packages","."])
     return
   
   def test_getLoadPath(self):
-    self.mm.setLoadpath(["/usr/lib/python/site-packages"])
+    self.mm.setLoadpath(["/usr/lib/python/site-packages","."])
     self.assertEqual(self.mm.getLoadPath()[0],"/usr/lib/python/site-packages")
     return
 
     
   def test_addLoadpath(self):
-    self.mm.setLoadpath(["/usr/lib/python/site-packages"])
+    self.mm.setLoadpath(["/usr/lib/python/site-packages","."])
     self.mm.addLoadpath(["/usr/local/lib/python/site-packages"])
     self.assertEqual(self.mm.getLoadPath()[0],"/usr/lib/python/site-packages")
-    self.assertEqual(self.mm.getLoadPath()[1],"/usr/local/lib/python/site-packages")
+    self.assertEqual(self.mm.getLoadPath()[-1],"/usr/local/lib/python/site-packages")
     return
 
   
@@ -162,9 +163,9 @@
     
 
   def test_getRtcProfile(self):
-    self.assertNotEqual(self.mm._ModuleManager__getRtcProfile("./ConfigSample.py").size(),0)
-    self.assertNotEqual(self.mm._ModuleManager__getRtcProfile("ConfigSample.py").size(),0)
-    self.assertNotEqual(self.mm._ModuleManager__getRtcProfile("ConfigSample").size(),0)
+    self.assertEqual(self.mm._ModuleManager__getRtcProfile("./ConfigSample.py"),None)
+    self.assertEqual(self.mm._ModuleManager__getRtcProfile("ConfigSample.py"),None)
+    self.assertEqual(self.mm._ModuleManager__getRtcProfile("ConfigSample"),None)
     return
 
 

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_NVUtil.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_NVUtil.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_NVUtil.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -26,143 +26,147 @@
 from NVUtil import *
 
 configsample_spec = ["implementation_id", "ConfigSample",
-					 "type_name",         "ConfigSample",
-					 "description",       "Configuration example component",
-					 "version",           "1.0",
-					 "vendor",            "Shinji Kurihara, AIST",
-					 "category",          "example",
-					 "activity_type",     "DataFlowComponent",
-					 "max_instance",      "10",
-					 "language",          "C++",
-					 "lang_type",         "compile",
-					 # Configuration variables
-					 "conf.default.int_param0", "0",
-					 "conf.default.int_param1", "1",
-					 "conf.default.double_param0", "0.11",
-					 "conf.default.double_param1", "9.9",
-					 "conf.default.str_param0", "hoge",
-					 "conf.default.str_param1", "dara",
-					 "conf.default.vector_param0", "0.0,1.0,2.0,3.0,4.0",
-					 ""]
+           "type_name",         "ConfigSample",
+           "description",       "Configuration example component",
+           "version",           "1.0",
+           "vendor",            "Shinji Kurihara, AIST",
+           "category",          "example",
+           "activity_type",     "DataFlowComponent",
+           "max_instance",      "10",
+           "language",          "C++",
+           "lang_type",         "compile",
+           # Configuration variables
+           "conf.default.int_param0", "0",
+           "conf.default.int_param1", "1",
+           "conf.default.double_param0", "0.11",
+           "conf.default.double_param1", "9.9",
+           "conf.default.str_param0", "hoge",
+           "conf.default.str_param1", "dara",
+           "conf.default.vector_param0", "0.0,1.0,2.0,3.0,4.0",
+           ""]
 
 class TestNVUtil(unittest.TestCase):
-	def setUp(self):
-		pass
+  def setUp(self):
+    pass
 
-	def test_newNV(self):
-		self.assertEqual(newNV("long", 1).name, "long")
-		self.assertEqual(newNV("long", 1).value.value(), 1)
-		self.assertEqual(newNV("float", 1.2345).name, "float")
-		self.assertEqual(newNV("float", 1.2345).value.value(), 1.2345)
-		self.assertEqual(newNV("string", "test").name, "string")
-		self.assertEqual(newNV("string", "test").value.value(), "test")
+  def tearDown(self):
+    OpenRTM_aist.Manager.instance().shutdownManager()
+    return
 
+  def test_newNV(self):
+    self.assertEqual(newNV("long", 1).name, "long")
+    self.assertEqual(newNV("long", 1).value.value(), 1)
+    self.assertEqual(newNV("float", 1.2345).name, "float")
+    self.assertEqual(newNV("float", 1.2345).value.value(), 1.2345)
+    self.assertEqual(newNV("string", "test").name, "string")
+    self.assertEqual(newNV("string", "test").value.value(), "test")
 
-	def test_newNVBool(self):
-		self.assertEqual(newNV("bool", True).name, "bool")
-		self.assertEqual(newNV("bool", True).value.value(), True)
-		
 
-	def test_newNVOctet(self):
-		self.assertEqual(newNV("oct", 0x01).name, "oct")
-		self.assertEqual(newNV("oct", 0x01).value.value(), 0x01)
+  def test_newNVBool(self):
+    self.assertEqual(newNV("bool", True).name, "bool")
+    self.assertEqual(newNV("bool", True).value.value(), True)
+    
 
+  def test_newNVOctet(self):
+    self.assertEqual(newNV("oct", 0x01).name, "oct")
+    self.assertEqual(newNV("oct", 0x01).value.value(), 0x01)
 
-	def test_newNVAny(self):
-		import omniORB.any
-		self.assertEqual(omniORB.any.from_any(newNV("any",omniORB.any.to_any(12345)).value), 12345)
 
+  def test_newNVAny(self):
+    import omniORB.any
+    self.assertEqual(omniORB.any.from_any(newNV("any",omniORB.any.to_any(12345)).value), 12345)
 
-	def test_copyFromProperties(self):
-		prop = OpenRTM_aist.Properties(defaults_str=configsample_spec)
-		nv = []
-		copyFromProperties(nv, prop)
-		self.assertEqual(nv[0].name, "implementation_id")
-		self.assertEqual(nv[0].value.value(), "ConfigSample")
-		nv = [1,2,3]
-		copyFromProperties(nv, prop)
-		self.assertEqual(nv[0].name, "implementation_id")
-		self.assertEqual(nv[0].value.value(), "ConfigSample")
 
-		
-	def test_copyToProperties(self):
-		nv = [newNV("id0",0),newNV("id1",1),newNV("id2",2),newNV("id3",3)]
-		prop = OpenRTM_aist.Properties(defaults_str=configsample_spec)
-		copyToProperties(prop, nv)
-		self.assertEqual(prop.getProperty("id0"), "0")
-		self.assertEqual(prop.getProperty("id1"), "1")
-		self.assertEqual(prop.getProperty("id2"), "2")
-		self.assertEqual(prop.getProperty("id3"), "3")
-		
-		
-	def test_toProperties(self):
-		nv = [newNV("id0",0),newNV("id1",1),newNV("id2",2),newNV("id3",3)]
-		prop = toProperties(nv)
-		self.assertEqual(prop.getProperty("id0").value(), 0)
-		self.assertEqual(prop.getProperty("id1").value(), 1)
-		self.assertEqual(prop.getProperty("id2").value(), 2)
-		self.assertEqual(prop.getProperty("id3").value(), 3)
-		
+  def test_copyFromProperties(self):
+    prop = OpenRTM_aist.Properties(defaults_str=configsample_spec)
+    nv = []
+    copyFromProperties(nv, prop)
+    self.assertEqual(nv[0].name, "implementation_id")
+    self.assertEqual(nv[0].value.value(), "ConfigSample")
+    nv = [1,2,3]
+    copyFromProperties(nv, prop)
+    self.assertEqual(nv[0].name, "implementation_id")
+    self.assertEqual(nv[0].value.value(), "ConfigSample")
 
-	def test_find(self):
-		nv = [newNV("id0",0),newNV("id1",1),newNV("id2",2),newNV("id3",3)]
-		self.assertEqual(find(nv,"id0").value(), 0)
-		self.assertEqual(find(nv,"id1").value(), 1)
-		self.assertEqual(find(nv,"id2").value(), 2)
-		self.assertEqual(find(nv,"id3").value(), 3)
+    
+  def test_copyToProperties(self):
+    nv = [newNV("id0",0),newNV("id1",1),newNV("id2",2),newNV("id3",3)]
+    prop = OpenRTM_aist.Properties(defaults_str=configsample_spec)
+    copyToProperties(prop, nv)
+    self.assertEqual(prop.getProperty("id0"), "0")
+    self.assertEqual(prop.getProperty("id1"), "1")
+    self.assertEqual(prop.getProperty("id2"), "2")
+    self.assertEqual(prop.getProperty("id3"), "3")
+    
+    
+  def test_toProperties(self):
+    nv = [newNV("id0",0),newNV("id1",1),newNV("id2",2),newNV("id3",3)]
+    prop = toProperties(nv)
+    self.assertEqual(prop.getProperty("id0").value(), 0)
+    self.assertEqual(prop.getProperty("id1").value(), 1)
+    self.assertEqual(prop.getProperty("id2").value(), 2)
+    self.assertEqual(prop.getProperty("id3").value(), 3)
+    
 
-		
-	def test_find_index(self):
-		nv = [newNV("id0",0),newNV("id1",1),newNV("id2",2),newNV("id3",3)]
-		self.assertEqual(find_index(nv,"id0"),0)
-		self.assertEqual(find_index(nv,"id1"),1)
-		self.assertEqual(find_index(nv,"id2"),2)
-		self.assertEqual(find_index(nv,"id3"),3)
+  def test_find(self):
+    nv = [newNV("id0",0),newNV("id1",1),newNV("id2",2),newNV("id3",3)]
+    self.assertEqual(find(nv,"id0").value(), 0)
+    self.assertEqual(find(nv,"id1").value(), 1)
+    self.assertEqual(find(nv,"id2").value(), 2)
+    self.assertEqual(find(nv,"id3").value(), 3)
 
+    
+  def test_find_index(self):
+    nv = [newNV("id0",0),newNV("id1",1),newNV("id2",2),newNV("id3",3)]
+    self.assertEqual(find_index(nv,"id0"),0)
+    self.assertEqual(find_index(nv,"id1"),1)
+    self.assertEqual(find_index(nv,"id2"),2)
+    self.assertEqual(find_index(nv,"id3"),3)
 
-	def test_isString(self):
-		nv = [newNV("float",1.234),newNV("long",1234),newNV("string","test"),newNV("oct",0x01)]
-		self.assertEqual(isString(nv,"float"),False)
-		self.assertEqual(isString(nv,"long"),False)
-		self.assertEqual(isString(nv,"string"),True)
-		self.assertEqual(isString(nv,"oct"),False)
-		
 
-	def test_isStringValue(self):
-		nv = [newNV("float",1.234),newNV("long",1234),newNV("string","test"),newNV("oct",0x01)]
-		self.assertEqual(isStringValue(nv,"float",1.234),False)
-		self.assertEqual(isStringValue(nv,"long",1234),False)
-		self.assertEqual(isStringValue(nv,"string","test"),True)
-		self.assertEqual(isStringValue(nv,"oct",0x01),False)
+  def test_isString(self):
+    nv = [newNV("float",1.234),newNV("long",1234),newNV("string","test"),newNV("oct",0x01)]
+    self.assertEqual(isString(nv,"float"),False)
+    self.assertEqual(isString(nv,"long"),False)
+    self.assertEqual(isString(nv,"string"),True)
+    self.assertEqual(isString(nv,"oct"),False)
+    
 
+  def test_isStringValue(self):
+    nv = [newNV("float",1.234),newNV("long",1234),newNV("string","test"),newNV("oct",0x01)]
+    self.assertEqual(isStringValue(nv,"float",1.234),False)
+    self.assertEqual(isStringValue(nv,"long",1234),False)
+    self.assertEqual(isStringValue(nv,"string","test"),True)
+    self.assertEqual(isStringValue(nv,"oct",0x01),False)
 
-	def test_toString(self):
-		nv = [newNV("float",1.234),newNV("long",1234),newNV("string","test"),newNV("oct",0x01)]
-		self.assertEqual(toString(nv,"float"),"")
-		self.assertEqual(toString(nv,"long"),"")
-		self.assertEqual(toString(nv,"string"),"test")
-		self.assertEqual(toString(nv,"oct"),"")
-		
 
-	def test_appendStringValue(self):
-		nv = [newNV("string","test0, test1, test2")]
-		self.assertEqual(appendStringValue(nv,"string","test2"),True)
-		self.assertEqual(any.from_any(nv[0].value),"test0, test1, test2")
-		self.assertEqual(appendStringValue(nv,"string","test3"),True)
-		self.assertEqual(any.from_any(nv[0].value),"test0, test1, test2, test3")
+  def test_toString(self):
+    nv = [newNV("float",1.234),newNV("long",1234),newNV("string","test"),newNV("oct",0x01)]
+    self.assertEqual(toString(nv,"float"),"")
+    self.assertEqual(toString(nv,"long"),"")
+    self.assertEqual(toString(nv,"string"),"test")
+    self.assertEqual(toString(nv,"oct"),"")
+    
 
+  def test_appendStringValue(self):
+    nv = [newNV("string","test0, test1, test2")]
+    self.assertEqual(appendStringValue(nv,"string","test2"),True)
+    self.assertEqual(any.from_any(nv[0].value),"test0, test1, test2")
+    self.assertEqual(appendStringValue(nv,"string","test3"),True)
+    self.assertEqual(any.from_any(nv[0].value),"test0, test1, test2, test3")
 
-	def test_append(self):
-		list_ = [1,2,3]
-		append(list_,[4,5,6])
-		self.assertEqual(list_,[1,2,3,4,5,6])
-		
 
-	def test_dump(self):
-		nv = [newNV("string","test0, test1, test2")]
-		dump(nv)
+  def test_append(self):
+    list_ = [1,2,3]
+    append(list_,[4,5,6])
+    self.assertEqual(list_,[1,2,3,4,5,6])
+    
 
+  def test_dump(self):
+    nv = [newNV("string","test0, test1, test2")]
+    dump(nv)
 
+
 ############### test #################
 if __name__ == '__main__':
         unittest.main()

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_NumberingPolicy.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_NumberingPolicy.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_NumberingPolicy.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -21,32 +21,36 @@
 import unittest
 
 from NumberingPolicy import *
+import OpenRTM_aist
 
 
 class TestDefaultNumberingPolicy(unittest.TestCase):
-	def setUp(self):
-		self.__dnp = DefaultNumberingPolicy()
+  def setUp(self):
+    self.__dnp = DefaultNumberingPolicy()
 
+  def tearDown(self):
+    OpenRTM_aist.Manager.instance().shutdownManager()
+    return
 
-	def test_onCreate(self):
-		self.assertEqual(self.__dnp.onCreate("test0"),"0")
-		self.assertEqual(self.__dnp.onCreate("test1"),"1")
-		self.assertEqual(self.__dnp.onCreate("test1"),"2")
+  def test_onCreate(self):
+    self.assertEqual(self.__dnp.onCreate("test0"),"0")
+    self.assertEqual(self.__dnp.onCreate("test1"),"1")
+    self.assertEqual(self.__dnp.onCreate("test1"),"2")
 
 
-	
-	def test_onDelete(self):
-		self.__dnp.onCreate("test")
-		self.__dnp.onCreate("test0")
-		self.__dnp.onDelete("test")
-		self.assertEqual(self.__dnp.onCreate("test1"),"0")
-		self.assertEqual(self.__dnp.onCreate("test"),"2")
-		
+  
+  def test_onDelete(self):
+    self.__dnp.onCreate("test")
+    self.__dnp.onCreate("test0")
+    self.__dnp.onDelete("test")
+    self.assertEqual(self.__dnp.onCreate("test1"),"0")
+    self.assertEqual(self.__dnp.onCreate("test"),"2")
+    
 
 
-	def test_find(self):
-		pass
-	
+  def test_find(self):
+    pass
+  
 
 ############### test #################
 if __name__ == '__main__':

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_ObjectManager.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_ObjectManager.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_ObjectManager.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -23,94 +23,95 @@
 import unittest
 
 from ObjectManager import *
+import OpenRTM_aist
 
 class test_obj:
-	def __init__(self, name):
-		self.name = name
+  def __init__(self, name):
+    self.name = name
 
-	def getInstanceName(self):
-		return self.name
+  def getInstanceName(self):
+    return self.name
 
-	def getProperty(self,name):
-		return name
-	
+  def getProperty(self,name):
+    return name
+  
 
 class TestObjectManager(unittest.TestCase):
 
-	class InstanceName :
-		def __init__(self, name=None, factory=None):
-			if factory != None:
-				self._name = factory.getInstanceName()
-			elif name != None:
-				self._name = name
-			
-		#def func(self, factory):
-		def __call__(self, factory):
-			return self._name == factory.getInstanceName()
+  class InstanceName :
+    def __init__(self, name=None, factory=None):
+      if factory != None:
+        self._name = factory.getInstanceName()
+      elif name != None:
+        self._name = name
+      
+    #def func(self, factory):
+    def __call__(self, factory):
+      return self._name == factory.getInstanceName()
 
 
-	class ModuleFactories :
-		def __init__(self):
-			self._modlist = []
+  class ModuleFactories :
+    def __init__(self):
+      self._modlist = []
 
-		
-		#def func(self, f):
-		def __call__(self, f):
-			self._modlist.append(f.getProperty("implementation_id"))
+    
+    #def func(self, f):
+    def __call__(self, f):
+      self._modlist.append(f.getProperty("implementation_id"))
 
-			
-	def setUp(self):
-		self.obj = ObjectManager(self.InstanceName)
+      
+  def setUp(self):
+    self.obj = ObjectManager(self.InstanceName)
 
-		
-	def tearDown(self):
-		pass
+    
+  def tearDown(self):
+    OpenRTM_aist.Manager.instance().shutdownManager()
+    return
 
+  def test_registerObject(self):
+    obj = test_obj("test")
+    self.assertEqual(self.obj.registerObject(obj),True,"Result failed.")
+    self.assertEqual(self.obj.registerObject(obj),False,"Result failed.")
 
-	def test_registerObject(self):
-		obj = test_obj("test")
-		self.assertEqual(self.obj.registerObject(obj),True,"Result failed.")
-		self.assertEqual(self.obj.registerObject(obj),False,"Result failed.")
 
+  def test_unregisterObject(self):
+    self.test_registerObject()
+    self.assertEqual(self.obj.unregisterObject("test").getInstanceName(),"test","Result failed.")
+    self.assertEqual(self.obj.unregisterObject("test"),None,"Result failed.")
+    # Failed Pattern
+    # self.assertEqual(self.obj.unregisterObject("test").getInstanceName(),"test","Result failed.")
 
-	def test_unregisterObject(self):
-		self.test_registerObject()
-		self.assertEqual(self.obj.unregisterObject("test").getInstanceName(),"test","Result failed.")
-		self.assertEqual(self.obj.unregisterObject("test"),None,"Result failed.")
-		# Failed Pattern
-		# self.assertEqual(self.obj.unregisterObject("test").getInstanceName(),"test","Result failed.")
 
+  def test_find(self):
+    self.test_registerObject()
+    self.assertEqual(self.obj.find("test").getInstanceName(),"test","Result failed.")
+    self.assertEqual(self.obj.find("testtest"),None,"Result failed.")
 
-	def test_find(self):
-		self.test_registerObject()
-		self.assertEqual(self.obj.find("test").getInstanceName(),"test","Result failed.")
-		self.assertEqual(self.obj.find("testtest"),None,"Result failed.")
 
+  def test_getObjects(self):
+    obj = test_obj("test0")
+    self.obj.registerObject(obj)
+    obj = test_obj("test1")
+    self.obj.registerObject(obj)
+    obj = test_obj("test2")
+    self.obj.registerObject(obj)
+    self.assertEqual(len(self.obj.getObjects()),3,"Result failed.")
+    self.assertEqual(self.obj.getObjects()[0].getInstanceName(),"test0","Result failed.")
+    self.assertEqual(self.obj.getObjects()[1].getInstanceName(),"test1","Result failed.")
+    self.assertEqual(self.obj.getObjects()[2].getInstanceName(),"test2","Result failed.")
+    
 
-	def test_getObjects(self):
-		obj = test_obj("test0")
-		self.obj.registerObject(obj)
-		obj = test_obj("test1")
-		self.obj.registerObject(obj)
-		obj = test_obj("test2")
-		self.obj.registerObject(obj)
-		self.assertEqual(len(self.obj.getObjects()),3,"Result failed.")
-		self.assertEqual(self.obj.getObjects()[0].getInstanceName(),"test0","Result failed.")
-		self.assertEqual(self.obj.getObjects()[1].getInstanceName(),"test1","Result failed.")
-		self.assertEqual(self.obj.getObjects()[2].getInstanceName(),"test2","Result failed.")
-		
+  def test_for_each(self):
+    obj = test_obj("test0")
+    self.obj.registerObject(obj)
+    obj = test_obj("test1")
+    self.obj.registerObject(obj)
+    obj = test_obj("test2")
+    self.obj.registerObject(obj)
 
-	def test_for_each(self):
-		obj = test_obj("test0")
-		self.obj.registerObject(obj)
-		obj = test_obj("test1")
-		self.obj.registerObject(obj)
-		obj = test_obj("test2")
-		self.obj.registerObject(obj)
+    self.assertEqual(len(self.obj.for_each(self.ModuleFactories)._modlist),3,"Result failed.")
 
-		self.assertEqual(len(self.obj.for_each(self.ModuleFactories)._modlist),3,"Result failed.")
 
-
 ############### test #################
 if __name__ == '__main__':
-        unittest.main()
+  unittest.main()

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_OutPort.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_OutPort.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_OutPort.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -30,60 +30,64 @@
 import OpenRTM_aist
 
 class OnRWTest:
-	def __init__(self):
-		pass
+  def __init__(self):
+    pass
 
-	def echo(self, value=None):
-		print "OnRW Called"
+  def echo(self, value=None):
+    print "OnRW Called"
 
 class OnRWConvertTest:
-	def __init__(self):
-		pass
+  def __init__(self):
+    pass
 
-	def echo(self, value=None):
-		print "OnRWConvert Called"
-		return value
+  def echo(self, value=None):
+    print "OnRWConvert Called"
+    return value
 
 class ConnectorMock:
-	def write(self, data):
-		self._data = data
-		return OpenRTM_aist.DataPortStatus.PORT_OK
+  def write(self, data):
+    self._data = data
+    return OpenRTM_aist.DataPortStatus.PORT_OK
 
-	def read(self, data):
-		data[0] = self._data
-		return True
+  def read(self, data):
+    data[0] = self._data
+    return True
 
 
 class TestOutPort(unittest.TestCase):
-	def setUp(self):
-		OpenRTM_aist.Manager.init(sys.argv)
-		self._op = OutPort("out", RTC.TimedLong(RTC.Time(0,0), 0))
-		return
+  def setUp(self):
+    OpenRTM_aist.Manager.init(sys.argv)
+    self._op = OutPort("out", RTC.TimedLong(RTC.Time(0,0), 0))
+    return
 
-	def test_write(self):
-		self.assertEqual(self._op.write(RTC.TimedLong(RTC.Time(0,0), 123)), True)
-		self._connector = ConnectorMock()
-		self._op._connectors = [self._connector]
-		self.assertEqual(self._op.write(RTC.TimedLong(RTC.Time(0,0), 123)), True)
-		read_data = [RTC.TimedLong(RTC.Time(0,0), 0)]
-		self._connector.read(read_data)
-		self.assertEqual(read_data[0].data,123)
-		return
+  def tearDown(self):
+    OpenRTM_aist.Manager.instance().shutdownManager()
+    return
 
-	def test_OnWrite(self):
-		self._connector = ConnectorMock()
-		self._op._connectors = [self._connector]
-		self._op.setOnWrite(OnRWTest().echo)
-		self._op.setOnWriteConvert(OnRWConvertTest().echo)
-		self.assertEqual(self._op.write(RTC.TimedLong(RTC.Time(0,0), 123)), True)
-		return
+  def test_write(self):
+    self.assertEqual(self._op.write(RTC.TimedLong(RTC.Time(0,0), 123)), True)
+    self._connector = ConnectorMock()
+    self._op._connectors = [self._connector]
+    self.assertEqual(self._op.write(RTC.TimedLong(RTC.Time(0,0), 123)), True)
+    read_data = [RTC.TimedLong(RTC.Time(0,0), 0)]
+    self._connector.read(read_data)
+    self.assertEqual(read_data[0].data,123)
+    return
 
+  def test_OnWrite(self):
+    self._connector = ConnectorMock()
+    self._op._connectors = [self._connector]
+    self._op.setOnWrite(OnRWTest().echo)
+    self._op.setOnWriteConvert(OnRWConvertTest().echo)
+    self.assertEqual(self._op.write(RTC.TimedLong(RTC.Time(0,0), 123)), True)
+    return
 
-	def test_getPortDataType(self):
-		self.assertEqual(self._op.getPortDataType(),any.to_any(RTC.TimedLong(RTC.Time(0,0),0)).typecode().name())
-		return
 
+  def test_getPortDataType(self):
+    self.assertEqual(self._op.getPortDataType(),any.to_any(RTC.TimedLong(RTC.Time(0,0),0)).typecode().name())
+    return
 
+
 ############### test #################
 if __name__ == '__main__':
-        unittest.main()
+  unittest.main()

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_OutPortBase.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_OutPortBase.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_OutPortBase.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -17,7 +17,7 @@
 import sys
 sys.path.insert(1,"../")
 
-from omniORB import any
+#from omniORB import any
 
 import unittest
 from OutPortBase import *
@@ -64,14 +64,17 @@
   def init(self,prop):
     return
 
-
 class TestOutPortBase(unittest.TestCase):
   def setUp(self):
     OpenRTM_aist.Manager.init(sys.argv)
-    self._opb = OutPortBase("test",str(any.to_any(RTC.TimedLong(RTC.Time(0,0),0)).typecode().name()))
+    self._opb = OutPortBase("test","TimedLong")
     self._opb.init(OpenRTM_aist.Properties())
     return
 
+  def tearDown(self):
+    OpenRTM_aist.Manager.instance().shutdownManager()
+    return
+
   def test_getName(self):
     self.assertEqual(self._opb.getName(),"unknown.test")
     return
@@ -266,4 +269,4 @@
 
 ############### test #################
 if __name__ == '__main__':
-        unittest.main()
+  unittest.main()

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_OutPortProvider.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_OutPortProvider.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_OutPortProvider.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -26,55 +26,59 @@
 
 
 class TestOutPortProvider(unittest.TestCase):
-	def setUp(self):
-		self._opp = OutPortProvider()
-		return
+  def setUp(self):
+    self._opp = OutPortProvider()
+    return
 
-	def test_publishInterfaceProfile(self):
-		properties = []
-		self._opp.setInterfaceType("corba_cdr")
-		self._opp.publishInterfaceProfile(properties)
-		self.assertEqual("corba_cdr", 
-				 OpenRTM_aist.NVUtil.toString(properties,"dataport.interface_type"))
-		return
+  def tearDown(self):
+    OpenRTM_aist.Manager.instance().shutdownManager()
+    return
 
-	def test_publishInterface(self):
-		properties = []
-		self._opp.setInterfaceType("corba_cdr")
-		OpenRTM_aist.CORBA_SeqUtil.push_back(properties,
-						     OpenRTM_aist.NVUtil.newNV("dataport.interface_type",
-									       "corba_cdr"))
+  def test_publishInterfaceProfile(self):
+    properties = []
+    self._opp.setInterfaceType("corba_cdr")
+    self._opp.publishInterfaceProfile(properties)
+    self.assertEqual("corba_cdr", 
+         OpenRTM_aist.NVUtil.toString(properties,"dataport.interface_type"))
+    return
 
-		OpenRTM_aist.CORBA_SeqUtil.push_back(properties,
-						     OpenRTM_aist.NVUtil.newNV("dataport.dataflow_type",
-									       "push"))
+  def test_publishInterface(self):
+    properties = []
+    self._opp.setInterfaceType("corba_cdr")
+    OpenRTM_aist.CORBA_SeqUtil.push_back(properties,
+                 OpenRTM_aist.NVUtil.newNV("dataport.interface_type",
+                         "corba_cdr"))
 
-		OpenRTM_aist.CORBA_SeqUtil.push_back(properties,
-						     OpenRTM_aist.NVUtil.newNV("dataport.subscription_type",
-									       "flush"))
-		self.assertEqual(self._opp.publishInterface(properties),True)
-		return
+    OpenRTM_aist.CORBA_SeqUtil.push_back(properties,
+                 OpenRTM_aist.NVUtil.newNV("dataport.dataflow_type",
+                         "push"))
 
-	def test_setPortType(self):
-		self._opp.setPortType("out")
-		return
+    OpenRTM_aist.CORBA_SeqUtil.push_back(properties,
+                 OpenRTM_aist.NVUtil.newNV("dataport.subscription_type",
+                         "flush"))
+    self.assertEqual(self._opp.publishInterface(properties),True)
+    return
 
-	def test_setDataType(self):
-		self._opp.setDataType("TimedLong")
-		return
+  def test_setPortType(self):
+    self._opp.setPortType("out")
+    return
 
-	def test_setInterfaceType(self):
-		self._opp.setInterfaceType("corba_cdr")
-		return
+  def test_setDataType(self):
+    self._opp.setDataType("TimedLong")
+    return
 
-	def test_setDataFlowType(self):
-		self._opp.setDataFlowType("flow")
-		return
+  def test_setInterfaceType(self):
+    self._opp.setInterfaceType("corba_cdr")
+    return
 
-	def test_setSubscriptionType(self):
-		self._opp.setSubscriptionType("flush")
+  def test_setDataFlowType(self):
+    self._opp.setDataFlowType("flow")
+    return
 
-	
+  def test_setSubscriptionType(self):
+    self._opp.setSubscriptionType("flush")
+
+  
 ############### test #################
 if __name__ == '__main__':
         unittest.main()

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_PeriodicExecutionContext.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_PeriodicExecutionContext.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_PeriodicExecutionContext.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -30,201 +30,207 @@
 
 #class DFP(RTC__POA.DataFlowComponent):
 class DFP(OpenRTM_aist.RTObject_impl):
-	def __init__(self):
-		self._orb = CORBA.ORB_init()
-		self._poa = self._orb.resolve_initial_references("RootPOA")
-		OpenRTM_aist.RTObject_impl.__init__(self, orb=self._orb, poa=self._poa)
-		self._error = False
-		self._ref = self._this()
-		self._eclist = []
+  def __init__(self):
+    self._orb = CORBA.ORB_init()
+    self._poa = self._orb.resolve_initial_references("RootPOA")
+    OpenRTM_aist.RTObject_impl.__init__(self, orb=self._orb, poa=self._poa)
+    self._error = False
+    self._ref = self._this()
+    self._eclist = []
 
-	def getRef(self):
-		return self._ref
+  def getRef(self):
+    return self._ref
 
-	def gotoError(self):
-		self._error = True
+  def gotoError(self):
+    self._error = True
 
-	def initialize(self):
-		return RTC.RTC_OK
+  def initialize(self):
+    return RTC.RTC_OK
 
-	def finalize(self):
-		return RTC.RTC_OK
+  def finalize(self):
+    return RTC.RTC_OK
 
-	def exit(self):
-		return RTC.RTC_OK
+  def exit(self):
+    return RTC.RTC_OK
 
-	def is_alive(self):
-		return True
+  def is_alive(self):
+    return True
 
-	def get_contexts(self):
-		return self._eclist
+  def get_contexts(self):
+    return self._eclist
 
-	def set_execution_context_service(self, ec):
-		self._eclist.append(ec)
-		return len(self._eclist) -1 
+  def set_execution_context_service(self, ec):
+    self._eclist.append(ec)
+    return len(self._eclist) -1 
 
-	def get_component_profile(self):
-		return None
+  def get_component_profile(self):
+    return None
 
-	def get_ports(self):
-		return None
+  def get_ports(self):
+    return None
 
-	def get_execution_context_services(self):
-		return None
+  def get_execution_context_services(self):
+    return None
 
-	def on_initialize(self):
-		print "on_initialize()"
-		return RTC.RTC_OK
+  def on_initialize(self):
+    print "on_initialize()"
+    return RTC.RTC_OK
 
-	def on_finalize(self):
-		print "on_finalize()"
-		return RTC.RTC_OK
+  def on_finalize(self):
+    print "on_finalize()"
+    return RTC.RTC_OK
 
-	def on_startup(self, id):
-		print "on_startup()"
-		return RTC.RTC_OK
+  def on_startup(self, id):
+    print "on_startup()"
+    return RTC.RTC_OK
 
-	def on_shutdown(self, id):
-		print "shutdown()"
-		return RTC.RTC_OK
+  def on_shutdown(self, id):
+    print "shutdown()"
+    return RTC.RTC_OK
 
-	def on_activated(self, id):
-		print "activated()"
-		return RTC.RTC_OK
+  def on_activated(self, id):
+    print "activated()"
+    return RTC.RTC_OK
 
-	def on_deactivated(self, id):
-		print "deactivated()"
-		return RTC.RTC_OK
+  def on_deactivated(self, id):
+    print "deactivated()"
+    return RTC.RTC_OK
 
-	def on_aborting(self, id):
-		print "on_aborting()"
-		return RTC.RTC_OK
-	
-	def on_error(self, id):
-		print "on_error()"
-		return RTC.RTC_OK
-	
-	def on_reset(self, id):
-		print "on_reset()"
-		return RTC.RTC_OK
+  def on_aborting(self, id):
+    print "on_aborting()"
+    return RTC.RTC_OK
+  
+  def on_error(self, id):
+    print "on_error()"
+    return RTC.RTC_OK
+  
+  def on_reset(self, id):
+    print "on_reset()"
+    return RTC.RTC_OK
 
-	def on_execute(self, id):
-		print "on_execute()"
-		if self._error:
-			self._error = False
-			return RTC.RTC_ERROR
-		return RTC.RTC_OK
-		
-	def on_state_update(self, id):
-		print "on_state_update()"
-		return RTC.RTC_OK
+  def on_execute(self, id):
+    print "on_execute()"
+    if self._error:
+      self._error = False
+      return RTC.RTC_ERROR
+    return RTC.RTC_OK
+    
+  def on_state_update(self, id):
+    print "on_state_update()"
+    return RTC.RTC_OK
 
-	def on_rate_changed(self, id):
-		print "on_rate_changed()"
-		return RTC.RTC_OK
+  def on_rate_changed(self, id):
+    print "on_rate_changed()"
+    return RTC.RTC_OK
 
-	def get_owned_organizations(self):
-		return None
+  def get_owned_organizations(self):
+    return None
 
-	def get_sdo_id(self):
-		return None
+  def get_sdo_id(self):
+    return None
 
-	def get_sdo_type(self):
-		return None
+  def get_sdo_type(self):
+    return None
 
-	def get_device_profile(self):
-		return None
+  def get_device_profile(self):
+    return None
 
-	def get_service_profiles(self):
-		return None
+  def get_service_profiles(self):
+    return None
 
-	def get_service_profile(self, id):
-		return None
+  def get_service_profile(self, id):
+    return None
 
-	def get_sdo_service(self):
-		return SDOPackage.SDOService._nil()
+  def get_sdo_service(self):
+    return SDOPackage.SDOService._nil()
 
-	def get_configuration(self):
-		return SDOPackage.Configuration._nil()
+  def get_configuration(self):
+    return SDOPackage.Configuration._nil()
 
-	def get_monitoring(self):
-		return SDOPackage.Monitoring._nil()
+  def get_monitoring(self):
+    return SDOPackage.Monitoring._nil()
 
-	def get_organizations(self):
-		return None
+  def get_organizations(self):
+    return None
 
-	def get_status_list(self):
-		return None
+  def get_status_list(self):
+    return None
 
-	def get_status(self, name):
-		return None
-	
+  def get_status(self, name):
+    return None
+  
 
 class TestPeriodicExecutionContext(unittest.TestCase):
+  def setUp(self):
+    self._dfp = DFP()
+    self._dfp._poa._get_the_POAManager().activate()
 
-	def setUp(self):
-		self._dfp = DFP()
-		self._dfp._poa._get_the_POAManager().activate()
+    self._pec = PeriodicExecutionContext(self._dfp._ref, 10)
+    self._pec.add_component(self._dfp.getRef())
+    self._pec.start()
+  
+  def tearDown(self):
+    self._pec.stop()
+    # import gc
+    self._pec.__del__()
+    self._pec = None
+    OpenRTM_aist.Manager.instance().shutdownManager()
 
-		self._pec = PeriodicExecutionContext(self._dfp._ref, 10)
-		self._pec.add_component(self._dfp.getRef())
-		self._pec.start()
-	
-	def getState(self, state):
-		if state == 0:
-			return "INACTIVE_STATE"
-		elif state == 1:
-			return "ACTIVE_STATE"
-		elif state == 2:
-			return "ERROR_STATE"
-		elif state == 3:
-			return "UNKNOWN_STATE"
+  def getState(self, state):
+    if state == 0:
+      return "INACTIVE_STATE"
+    elif state == 1:
+      return "ACTIVE_STATE"
+    elif state == 2:
+      return "ERROR_STATE"
+    elif state == 3:
+      return "UNKNOWN_STATE"
 
-		return "INVALID_STATE"
-		
+    return "INVALID_STATE"
+    
 
-	def test_case(self):
-		print "rate: ", self._pec.get_rate()
-		print "kind: ", self._pec.get_kind()
-		self._pec.activate_component(self._dfp.getRef())
-		#for i in range(3):
-		#	state = self._pec.get_component_state(self._dfp.getRef())
-		#	print self.getState(state)
-		#self._pec.stop()
-		#print "is_running : ", self._pec.is_running()
-		import time
-		time.sleep(1)
+  def test_case(self):
+    print "rate: ", self._pec.get_rate()
+    print "kind: ", self._pec.get_kind()
+    self._pec.activate_component(self._dfp.getRef())
+    #for i in range(3):
+    # state = self._pec.get_component_state(self._dfp.getRef())
+    # print self.getState(state)
+    #self._pec.stop()
+    #print "is_running : ", self._pec.is_running()
+    import time
+    time.sleep(1)
 
-	
-	def test_set_rate(self):
-		self._pec.set_rate(1000)
-		print "get rate: ", self._pec.get_rate()
+  
+  def test_set_rate(self):
+    self._pec.set_rate(1000)
+    print "get rate: ", self._pec.get_rate()
 
-	
-	def test_activate_component(self):
-		#self._pec.activate_component(self._dfp.getRef())
-		#self._pec.deactivate_component(self._dfp.getRef())
-		pass
+  
+  def test_activate_component(self):
+    #self._pec.activate_component(self._dfp.getRef())
+    #self._pec.deactivate_component(self._dfp.getRef())
+    pass
 
 
 
-	def test_reset_component(self):
-		self._pec.reset_component(self._dfp.getRef())
-		print "reset state: ", self._pec.get_component_state(self._dfp.getRef())
-		self._pec.activate_component(self._dfp.getRef())
-		print "activate state: ", self._pec.get_component_state(self._dfp.getRef())
+  def test_reset_component(self):
+    self._pec.reset_component(self._dfp.getRef())
+    print "reset state: ", self._pec.get_component_state(self._dfp.getRef())
+    self._pec.activate_component(self._dfp.getRef())
+    print "activate state: ", self._pec.get_component_state(self._dfp.getRef())
 
-	
-	def test_remove(self):
-		self._pec.remove_component(self._dfp.getRef())
-		self._pec.activate_component(self._dfp.getRef())
-		print "activate state: ", self._pec.get_component_state(self._dfp.getRef())
+  
+  def test_remove(self):
+    self._pec.remove_component(self._dfp.getRef())
+    self._pec.activate_component(self._dfp.getRef())
+    print "activate state: ", self._pec.get_component_state(self._dfp.getRef())
 
 
-	def test_get_profile(self):
-		print "get_profile.kind: ", self._pec.get_profile().kind
+  def test_get_profile(self):
+    print "get_profile.kind: ", self._pec.get_profile().kind
 
-	
+  
 
 ############### test #################
 if __name__ == '__main__':

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_PortAdmin.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_PortAdmin.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_PortAdmin.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -28,130 +28,129 @@
 from omniORB import CORBA
 
 class PortBase(OpenRTM_aist.PortBase):
-	def __init__(self):
-		OpenRTM_aist.PortBase.__init__(self)
+  def __init__(self):
+    OpenRTM_aist.PortBase.__init__(self)
 
-	def publishInterfaces(self, prof):
-		return RTC.RTC_OK
+  def publishInterfaces(self, prof):
+    return RTC.RTC_OK
 
-	def subscribeInterfaces(self, prof):
-		return RTC.RTC_OK
+  def subscribeInterfaces(self, prof):
+    return RTC.RTC_OK
 
-	def unsubscribeInterfaces(self, prof):
-		return RTC.RTC_OK
+  def unsubscribeInterfaces(self, prof):
+    return RTC.RTC_OK
 
-	def activateInterfaces(self):
-		print "activateInterfaces"
+  def activateInterfaces(self):
+    print "activateInterfaces"
 
 
-	def deactivateInterfaces(self):
-		print "deactivateInterfaces"
+  def deactivateInterfaces(self):
+    print "deactivateInterfaces"
 
-		
+    
 class TestPortAdmin(unittest.TestCase):
-	def setUp(self):
-		self._orb = CORBA.ORB_init(sys.argv)
-		self._poa = self._orb.resolve_initial_references("RootPOA")
-		self._poa._get_the_POAManager().activate()
+  def setUp(self):
+    self._orb = CORBA.ORB_init(sys.argv)
+    self._poa = self._orb.resolve_initial_references("RootPOA")
+    self._poa._get_the_POAManager().activate()
 
-		self._pa = PortAdmin(self._orb, self._poa)
+    self._pa = PortAdmin(self._orb, self._poa)
 
-		self._pb1 = PortBase()
-		self._pb2 = PortBase()
+    self._pb1 = PortBase()
+    self._pb2 = PortBase()
 
-		self._pb1.setName("port0")
-		self._pb2.setName("port1")
+    self._pb1.setName("port0")
+    self._pb2.setName("port1")
 
-		self._pa.registerPort(self._pb1)
-		self._pa.registerPort(self._pb2)
-		return
+    self._pa.registerPort(self._pb1)
+    self._pa.registerPort(self._pb2)
+    return
 
+  def tearDown(self):
+    OpenRTM_aist.Manager.instance().shutdownManager()
 
-	def test_getPortServiceList(self):
-		plist = self._pa.getPortServiceList()
 
-		prof0 = plist[0].get_port_profile()
-		self.assertEqual(prof0.name, "port0")
+  def test_getPortServiceList(self):
+    plist = self._pa.getPortServiceList()
 
-		prof1 = plist[1].get_port_profile()
-		self.assertEqual(prof1.name, "port1")
-		return
-		
+    prof0 = plist[0].get_port_profile()
+    self.assertEqual(prof0.name, "port0")
 
-	def test_getPortProfileList(self):
-		pprof = self._pa.getPortProfileList()
-		return
+    prof1 = plist[1].get_port_profile()
+    self.assertEqual(prof1.name, "port1")
+    return
+    
 
+  def test_getPortProfileList(self):
+    pprof = self._pa.getPortProfileList()
+    return
 
-	def test_getPortRef(self):
-		
-		getP = self._pa.getPortRef("")
-		self.assertEqual(CORBA.is_nil(getP), True)
 
-		getP = self._pa.getPortRef("port1")
-		self.assertEqual(CORBA.is_nil(getP), False)
-		self.assertEqual(getP.get_port_profile().name, "port1")
+  def CCCtest_getPortRef(self):
+    
+    getP = self._pa.getPortRef("")
+    self.assertEqual(CORBA.is_nil(getP), True)
 
-		getP = self._pa.getPortRef("port0")
-		self.assertEqual(CORBA.is_nil(getP), False)
-		self.assertEqual(getP.get_port_profile().name, "port0")
-		return
-		
+    getP = self._pa.getPortRef("port1")
+    self.assertEqual(CORBA.is_nil(getP), False)
+    self.assertEqual(getP.get_port_profile().name, "port1")
 
-	def test_getPort(self):
-		pb = self._pa.getPort("port0")
-		prof = pb.get_port_profile()
-		self.assertEqual(prof.name, "port0")
+    getP = self._pa.getPortRef("port0")
+    self.assertEqual(CORBA.is_nil(getP), False)
+    self.assertEqual(getP.get_port_profile().name, "port0")
+    return
+    
 
-		pb = self._pa.getPort("port1")
-		prof = pb.get_port_profile()
-		self.assertEqual(prof.name, "port1")
-		return
+  def CCCtest_getPort(self):
+    pb = self._pa.getPort("port0")
+    prof = pb.get_port_profile()
+    self.assertEqual(prof.name, "port0")
 
+    pb = self._pa.getPort("port1")
+    prof = pb.get_port_profile()
+    self.assertEqual(prof.name, "port1")
+    return
 
-	def test_deletePort(self):
-		self._pa.deletePort(self._pb1)
-		plist = self._pa.getPortServiceList()
-		self.assertEqual(len(plist), 1)
 
-		prof = plist[0].get_port_profile()
-		self.assertEqual(prof.name, "port1")
-		return
+  def CCCtest_deletePort(self):
+    self._pa.deletePort(self._pb1)
+    plist = self._pa.getPortServiceList()
+    self.assertEqual(len(plist), 1)
 
+    prof = plist[0].get_port_profile()
+    self.assertEqual(prof.name, "port1")
+    return
 
-	def test_deletePortByName(self):
-		plist = self._pa.getPortServiceList()
-		self.assertEqual(len(plist), 2)
 
-		self._pa.deletePortByName("port1")
+  def CCCtest_deletePortByName(self):
+    plist = self._pa.getPortServiceList()
+    self.assertEqual(len(plist), 2)
 
-		plist = self._pa.getPortServiceList()
-		self.assertEqual(len(plist), 1)
-		return
-		
+    self._pa.deletePortByName("port1")
 
-	def test_activatePorts(self):
-		self._pa.activatePorts()
-		return
+    plist = self._pa.getPortServiceList()
+    self.assertEqual(len(plist), 1)
+    return
+    
 
+  def CCCtest_activatePorts(self):
+    self._pa.activatePorts()
+    self._pa.deactivatePorts()
+    return
 
-	def test_deactivatePorts(self):
-		self._pa.deactivatePorts()
-		return
 
+  def CCCtest_finalizePorts(self):
+    plist = self._pa.getPortServiceList()
+    self.assertEqual(len(plist), 2)
 
-	def test_finalizePorts(self):
-		plist = self._pa.getPortServiceList()
-		self.assertEqual(len(plist), 2)
+    self._pa.finalizePorts()
+    
+    plist = self._pa.getPortServiceList()
+    self.assertEqual(len(plist), 0)
+    return
+    
 
-		self._pa.finalizePorts()
-		
-		plist = self._pa.getPortServiceList()
-		self.assertEqual(len(plist), 0)
-		return
-		
 
-
 ############### test #################
 if __name__ == '__main__':
         unittest.main()

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_PortBase.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_PortBase.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_PortBase.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -49,6 +49,10 @@
     self._pb = PortBase()
     return
 
+  def tearDown(self):
+    OpenRTM_aist.Manager.instance().shutdownManager()
+    return
+
   def test_get_port_profile(self):
     self._pb.setName("test_connect")
     prof = self._pb.get_port_profile()

Copied: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_PortConnectListener.py (from rev 478, branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/test/test_PortConnectListener.py)
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_PortConnectListener.py	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_PortConnectListener.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,119 @@
+#!/usr/bin/env python
+# -*- Python -*-
+
+##
+# @file test_PortConnectListener.py
+# @brief test for port connector listener class
+# @date $Date: 2011/03/18 $
+# @author Shinji Kurihara
+#
+# Copyright (C) 2011
+#     Intelligent Systems Research Institute,
+#     National Institute of
+#         Advanced Industrial Science and Technology (AIST), Japan
+#     All rights reserved.
+
+
+import sys
+sys.path.insert(1,"../")
+
+import unittest
+import OpenRTM_aist
+from PortConnectListener import *
+
+import RTC, RTC__POA
+import OpenRTM
+
+from omniORB import *
+from omniORB import any
+
+class MockPortConnectListener(PortConnectListener):
+  def __init__(self):
+    PortConnectListener.__init__(self)
+    return
+
+  def __call__(self,portname,profile):
+    return
+
+
+class MockPortConnectRetListener(PortConnectRetListener):
+  def __init__(self):
+    PortConnectRetListener.__init__(self)
+    return
+
+  def __call__(self,portname,profile,ret):
+    return
+
+
+
+class TestListener(unittest.TestCase):
+  def setUp(self):
+    return
+
+  def tearDown(self):
+    OpenRTM_aist.Manager.instance().shutdownManager()
+    return
+
+  def test_PortConnectListener_toString(self):
+    self.assertEqual("ON_NOTIFY_CONNECT",
+                     PortConnectListener.toString(
+        PortConnectListenerType.ON_NOTIFY_CONNECT))
+    
+    self.assertEqual("ON_NOTIFY_DISCONNECT",
+                     PortConnectListener.toString(
+        PortConnectListenerType.ON_NOTIFY_DISCONNECT))
+
+    self.assertEqual("ON_UNSUBSCRIBE_INTERFACES",
+                     PortConnectListener.toString(
+        PortConnectListenerType.ON_UNSUBSCRIBE_INTERFACES))
+    return
+
+
+  def test_PortConnectRetListener_toString(self):
+    self.assertEqual("ON_PUBLISH_INTERFACES",
+                     PortConnectRetListener.toString(
+        PortConnectRetListenerType.ON_PUBLISH_INTERFACES))
+    
+    self.assertEqual("ON_CONNECT_NEXTPORT",
+                     PortConnectRetListener.toString(
+        PortConnectRetListenerType.ON_CONNECT_NEXTPORT))
+
+    self.assertEqual("ON_SUBSCRIBE_INTERFACES",
+                     PortConnectRetListener.toString(
+        PortConnectRetListenerType.ON_SUBSCRIBE_INTERFACES))
+
+    self.assertEqual("ON_CONNECTED",
+                     PortConnectRetListener.toString(
+        PortConnectRetListenerType.ON_CONNECTED))
+
+    self.assertEqual("ON_DISCONNECT_NEXT",
+                     PortConnectRetListener.toString(
+        PortConnectRetListenerType.ON_DISCONNECT_NEXT))
+
+    self.assertEqual("ON_DISCONNECTED",
+                     PortConnectRetListener.toString(
+        PortConnectRetListenerType.ON_DISCONNECTED))
+    return
+
+
+  def test_PortConnectListenerHolder(self):
+    portconlisteners = PortConnectListeners()
+    listener = MockPortConnectListener()
+    portconlisteners.portconnect_[0].addListener(listener,True)
+    portconlisteners.portconnect_[0].notify("port_name",None)
+    portconlisteners.portconnect_[0].removeListener(listener)
+    return
+
+  def test_PortConnectRetListenerHolder(self):
+    portconretlisteners = PortConnectRetListeners()
+    listener = MockPortConnectRetListener()
+    portconretlisteners.portconnret_[0].addListener(listener,True)
+    portconretlisteners.portconnret_[0].notify("port_name",None)
+    portconretlisteners.portconnret_[0].removeListener(listener)
+    return
+
+
+############### test #################
+if __name__ == '__main__':
+        unittest.main()
+

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_Properties.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_Properties.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_Properties.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -21,364 +21,364 @@
 import unittest
 
 from Properties import *
+import OpenRTM_aist
 
 
 configsample_spec = ["implementation_id", "ConfigSample",
-		     "type_name",         "ConfigSample",
-		     "description",       "Configuration example component",
-		     "version",           "1.0",
-		     "vendor",            "Shinji Kurihara, AIST",
-		     "category",          "example",
-		     "activity_type",     "DataFlowComponent",
-		     "max_instance",      "10",
-		     "language",          "C++",
-		     "lang_type",         "compile",
-		     # Configuration variables
-		     "conf.default.int_param0", "0",
-		     "conf.default.int_param1", "1",
-		     "conf.default.double_param0", "0.11",
-		     "conf.default.double_param1", "9.9",
-		     "conf.default.str_param0", "hoge",
-		     "conf.default.str_param1", "dara",
-		     "conf.default.vector_param0", "0.0,1.0,2.0,3.0,4.0",
-		     ""]
+         "type_name",         "ConfigSample",
+         "description",       "Configuration example component",
+         "version",           "1.0",
+         "vendor",            "Shinji Kurihara, AIST",
+         "category",          "example",
+         "activity_type",     "DataFlowComponent",
+         "max_instance",      "10",
+         "language",          "C++",
+         "lang_type",         "compile",
+         # Configuration variables
+         "conf.default.int_param0", "0",
+         "conf.default.int_param1", "1",
+         "conf.default.double_param0", "0.11",
+         "conf.default.double_param1", "9.9",
+         "conf.default.str_param0", "hoge",
+         "conf.default.str_param1", "dara",
+         "conf.default.vector_param0", "0.0,1.0,2.0,3.0,4.0",
+         ""]
 
 class TestProperties(unittest.TestCase) :
 
-	def setUp(self):
+  def setUp(self):
 
-		self.prop = Properties(defaults_str=configsample_spec)
+    self.prop = Properties(defaults_str=configsample_spec)
 
+  def tearDown(self):
+    OpenRTM_aist.Manager.instance().shutdownManager()
+    return
+  
+  def test_getName(self):
+    self.assertEqual(self.prop.getName(), "", "Result failed.")
 
-	def tearDown(self):
-		pass
 
-	
-	def test_getName(self):
-		self.assertEqual(self.prop.getName(), "", "Result failed.")
+  def test_getVlue(self):
+    self.assertEqual(self.prop.getValue(), "", "Result failed.")
+  
 
+  def test_getDefaultValue(self):
+    self.assertEqual(self.prop.getDefaultValue(), "", "Result failed.")
 
-	def test_getVlue(self):
-		self.assertEqual(self.prop.getValue(), "", "Result failed.")
-	
 
-	def test_getDefaultValue(self):
-		self.assertEqual(self.prop.getDefaultValue(), "", "Result failed.")
 
+  def test_getLeaf(self):
+    #print self.prop.getLeaf()[0].getName()
+    #print self.prop.getLeaf()[0].getValue()
 
+    self.assertEqual(self.prop.getLeaf()[0].getName(), "implementation_id", "Result failed.")
+    self.assertEqual(self.prop.getLeaf()[1].getName(), "type_name", "Result failed.")
+    self.assertEqual(self.prop.getLeaf()[2].getName(), "description", "Result failed.")
+    self.assertEqual(self.prop.getLeaf()[3].getName(), "version", "Result failed.")
+    self.assertEqual(self.prop.getLeaf()[4].getName(), "vendor", "Result failed.")
+    self.assertEqual(self.prop.getLeaf()[5].getName(), "category", "Result failed.")
+    self.assertEqual(self.prop.getLeaf()[6].getName(), "activity_type", "Result failed.")
+    self.assertEqual(self.prop.getLeaf()[7].getName(), "max_instance", "Result failed.")
+    self.assertEqual(self.prop.getLeaf()[8].getName(), "language", "Result failed.")
+    self.assertEqual(self.prop.getLeaf()[9].getName(), "lang_type", "Result failed.")
+    self.assertEqual(self.prop.getLeaf()[10].getLeaf()[0].getLeaf()[0].getName(), "int_param0", "Result failed.")
+    self.assertEqual(self.prop.getLeaf()[10].getLeaf()[0].getLeaf()[1].getName(), "int_param1", "Result failed.")
+    self.assertEqual(self.prop.getLeaf()[10].getLeaf()[0].getLeaf()[2].getName(), "double_param0", "Result failed.")
+    self.assertEqual(self.prop.getLeaf()[10].getLeaf()[0].getLeaf()[3].getName(), "double_param1", "Result failed.")
+    self.assertEqual(self.prop.getLeaf()[10].getLeaf()[0].getLeaf()[4].getName(), "str_param0", "Result failed.")
+    self.assertEqual(self.prop.getLeaf()[10].getLeaf()[0].getLeaf()[5].getName(), "str_param1", "Result failed.")
+    self.assertEqual(self.prop.getLeaf()[10].getLeaf()[0].getLeaf()[6].getName(), "vector_param0", "Result failed.")
 
-	def test_getLeaf(self):
-		#print self.prop.getLeaf()[0].getName()
-		#print self.prop.getLeaf()[0].getValue()
+    # Failed Patern
+    # self.assertEqual(self.prop.getLeaf()[10].getName(), "conf.default.int_param0", "Result failed.")
 
-		self.assertEqual(self.prop.getLeaf()[0].getName(), "implementation_id", "Result failed.")
-		self.assertEqual(self.prop.getLeaf()[1].getName(), "type_name", "Result failed.")
-		self.assertEqual(self.prop.getLeaf()[2].getName(), "description", "Result failed.")
-		self.assertEqual(self.prop.getLeaf()[3].getName(), "version", "Result failed.")
-		self.assertEqual(self.prop.getLeaf()[4].getName(), "vendor", "Result failed.")
-		self.assertEqual(self.prop.getLeaf()[5].getName(), "category", "Result failed.")
-		self.assertEqual(self.prop.getLeaf()[6].getName(), "activity_type", "Result failed.")
-		self.assertEqual(self.prop.getLeaf()[7].getName(), "max_instance", "Result failed.")
-		self.assertEqual(self.prop.getLeaf()[8].getName(), "language", "Result failed.")
-		self.assertEqual(self.prop.getLeaf()[9].getName(), "lang_type", "Result failed.")
-		self.assertEqual(self.prop.getLeaf()[10].getLeaf()[0].getLeaf()[0].getName(), "int_param0", "Result failed.")
-		self.assertEqual(self.prop.getLeaf()[10].getLeaf()[0].getLeaf()[1].getName(), "int_param1", "Result failed.")
-		self.assertEqual(self.prop.getLeaf()[10].getLeaf()[0].getLeaf()[2].getName(), "double_param0", "Result failed.")
-		self.assertEqual(self.prop.getLeaf()[10].getLeaf()[0].getLeaf()[3].getName(), "double_param1", "Result failed.")
-		self.assertEqual(self.prop.getLeaf()[10].getLeaf()[0].getLeaf()[4].getName(), "str_param0", "Result failed.")
-		self.assertEqual(self.prop.getLeaf()[10].getLeaf()[0].getLeaf()[5].getName(), "str_param1", "Result failed.")
-		self.assertEqual(self.prop.getLeaf()[10].getLeaf()[0].getLeaf()[6].getName(), "vector_param0", "Result failed.")
 
-		# Failed Patern
-		# self.assertEqual(self.prop.getLeaf()[10].getName(), "conf.default.int_param0", "Result failed.")
+  def test_getRoot(self):
+    self.assertEqual(self.prop.getRoot(), None, "Result failed.")
+    self.assertEqual(self.prop.getLeaf()[10].getRoot().getRoot(), None, "Result failed.")
+    self.assertEqual(self.prop.getLeaf()[10].getLeaf()[0].getRoot().getName(), "conf", "Result failed.")
+    self.assertEqual(self.prop.getLeaf()[10].getLeaf()[0].getLeaf()[0].getRoot().getName(), "default", "Result failed.")
+  
 
+  def test_getProperty(self):
+    self.assertEqual(self.prop.getProperty("implementation_id"), "ConfigSample", "Result failed.")
+    self.assertEqual(self.prop.getProperty("type_name"),  "ConfigSample", "Result failed.")
+    self.assertEqual(self.prop.getProperty("description"), "Configuration example component","Result failed.")
+    self.assertEqual(self.prop.getProperty("version"), "1.0","Result failed.")
+    self.assertEqual(self.prop.getProperty("vendor"),"Shinji Kurihara, AIST", "Result failed.")
+    self.assertEqual(self.prop.getProperty("category"), "example","Result failed.")
+    self.assertEqual(self.prop.getProperty("activity_type"), "DataFlowComponent", "Result failed.")
+    self.assertEqual(self.prop.getProperty("max_instance"), "10", "Result failed.")
+    self.assertEqual(self.prop.getProperty("language"), "C++", "Result failed.")
+    self.assertEqual(self.prop.getProperty("lang_type"), "compile", "Result failed.")
+    self.assertEqual(self.prop.getProperty("conf.default.int_param0"), "0", "Result failed.")
+    self.assertEqual(self.prop.getProperty("conf.default.int_param1"), "1", "Result failed.")
+    self.assertEqual(self.prop.getProperty("conf.default.double_param0"), "0.11", "Result failed.")
+    self.assertEqual(self.prop.getProperty("conf.default.double_param1"), "9.9", "Result failed.")
+    self.assertEqual(self.prop.getProperty("conf.default.str_param0"), "hoge", "Result failed.")
+    self.assertEqual(self.prop.getProperty("conf.default.str_param1"), "dara", "Result failed.")
+    self.assertEqual(self.prop.getProperty("conf.default.vector_param0"), "0.0,1.0,2.0,3.0,4.0","Result failed.")
 
-	def test_getRoot(self):
-		self.assertEqual(self.prop.getRoot(), None, "Result failed.")
-		self.assertEqual(self.prop.getLeaf()[10].getRoot().getRoot(), None, "Result failed.")
-		self.assertEqual(self.prop.getLeaf()[10].getLeaf()[0].getRoot().getName(), "conf", "Result failed.")
-		self.assertEqual(self.prop.getLeaf()[10].getLeaf()[0].getLeaf()[0].getRoot().getName(), "default", "Result failed.")
-	
+    # Failed Pattern
+    # self.assertEqual(self.prop.getProperty("int_param0"), "0", "Result failed.")
+    # self.assertEqual(self.prop.getProperty("int_param1"), "1", "Result failed.")
+    # self.assertEqual(self.prop.getProperty("double_param0"), "0.11", "Result failed.")
+    # self.assertEqual(self.prop.getProperty("double_param1"), "9.9", "Result failed.")
+    # self.assertEqual(self.prop.getProperty("str_param0"), "hoge", "Result failed.")
+    # self.assertEqual(self.prop.getProperty("str_param1"), "dara", "Result failed.")
+    # self.assertEqual(self.prop.getProperty("vector_param0"), "0.0,1.0,2.0,3.0,4.0","Result failed.")
 
-	def test_getProperty(self):
-		self.assertEqual(self.prop.getProperty("implementation_id"), "ConfigSample", "Result failed.")
-		self.assertEqual(self.prop.getProperty("type_name"),  "ConfigSample", "Result failed.")
-		self.assertEqual(self.prop.getProperty("description"), "Configuration example component","Result failed.")
-		self.assertEqual(self.prop.getProperty("version"), "1.0","Result failed.")
-		self.assertEqual(self.prop.getProperty("vendor"),"Shinji Kurihara, AIST", "Result failed.")
-		self.assertEqual(self.prop.getProperty("category"), "example","Result failed.")
-		self.assertEqual(self.prop.getProperty("activity_type"), "DataFlowComponent", "Result failed.")
-		self.assertEqual(self.prop.getProperty("max_instance"), "10", "Result failed.")
-		self.assertEqual(self.prop.getProperty("language"), "C++", "Result failed.")
-		self.assertEqual(self.prop.getProperty("lang_type"), "compile", "Result failed.")
-		self.assertEqual(self.prop.getProperty("conf.default.int_param0"), "0", "Result failed.")
-		self.assertEqual(self.prop.getProperty("conf.default.int_param1"), "1", "Result failed.")
-		self.assertEqual(self.prop.getProperty("conf.default.double_param0"), "0.11", "Result failed.")
-		self.assertEqual(self.prop.getProperty("conf.default.double_param1"), "9.9", "Result failed.")
-		self.assertEqual(self.prop.getProperty("conf.default.str_param0"), "hoge", "Result failed.")
-		self.assertEqual(self.prop.getProperty("conf.default.str_param1"), "dara", "Result failed.")
-		self.assertEqual(self.prop.getProperty("conf.default.vector_param0"), "0.0,1.0,2.0,3.0,4.0","Result failed.")
+  
+  def test_getDefault(self):
+    self.assertEqual(self.prop.getDefault("implementation_id"), "ConfigSample", "Result failed.")
+    self.assertEqual(self.prop.getDefault("type_name"),  "ConfigSample", "Result failed.")
+    self.assertEqual(self.prop.getDefault("description"), "Configuration example component","Result failed.")
+    self.assertEqual(self.prop.getDefault("version"), "1.0","Result failed.")
+    self.assertEqual(self.prop.getDefault("vendor"),"Shinji Kurihara, AIST", "Result failed.")
+    self.assertEqual(self.prop.getDefault("category"), "example","Result failed.")
+    self.assertEqual(self.prop.getDefault("activity_type"), "DataFlowComponent", "Result failed.")
+    self.assertEqual(self.prop.getDefault("max_instance"), "10", "Result failed.")
+    self.assertEqual(self.prop.getDefault("language"), "C++", "Result failed.")
+    self.assertEqual(self.prop.getDefault("lang_type"), "compile", "Result failed.")
+    self.assertEqual(self.prop.getDefault("conf.default.int_param0"), "0", "Result failed.")
+    self.assertEqual(self.prop.getDefault("conf.default.int_param1"), "1", "Result failed.")
+    self.assertEqual(self.prop.getDefault("conf.default.double_param0"), "0.11", "Result failed.")
+    self.assertEqual(self.prop.getDefault("conf.default.double_param1"), "9.9", "Result failed.")
+    self.assertEqual(self.prop.getDefault("conf.default.str_param0"), "hoge", "Result failed.")
+    self.assertEqual(self.prop.getDefault("conf.default.str_param1"), "dara", "Result failed.")
+    self.assertEqual(self.prop.getDefault("conf.default.vector_param0"), "0.0,1.0,2.0,3.0,4.0","Result failed.")
+    
+  
+  def test_setProperty(self):
+    self.prop.setProperty("implementation_id", "ConfigSample_test")
+    self.prop.setProperty("type_name",  "ConfigSample_test")
+    self.prop.setProperty("description", "Configuration example component test")
+    self.prop.setProperty("version", "2.0")
+    self.prop.setProperty("vendor","Shinji Kurihara")
+    self.prop.setProperty("category", "example_test")
+    self.prop.setProperty("activity_type", "DataFlowComponent")
+    self.prop.setProperty("max_instance", "1")
+    self.prop.setProperty("language", "C++")
+    self.prop.setProperty("lang_type", "compile")
+    self.prop.setProperty("conf.default.int_param0", "111")
+    self.prop.setProperty("conf.default.int_param1", "222")
+    self.prop.setProperty("conf.default.double_param0", "2.22")
+    self.prop.setProperty("conf.default.double_param1", "9.99")
+    self.prop.setProperty("conf.default.str_param0", "hogehoge")
+    self.prop.setProperty("conf.default.str_param1", "daradara")
+    self.prop.setProperty("conf.default.vector_param0", "0.0,1.1,2.2,3.3,4.4")
 
-		# Failed Pattern
-		# self.assertEqual(self.prop.getProperty("int_param0"), "0", "Result failed.")
-		# self.assertEqual(self.prop.getProperty("int_param1"), "1", "Result failed.")
-		# self.assertEqual(self.prop.getProperty("double_param0"), "0.11", "Result failed.")
-		# self.assertEqual(self.prop.getProperty("double_param1"), "9.9", "Result failed.")
-		# self.assertEqual(self.prop.getProperty("str_param0"), "hoge", "Result failed.")
-		# self.assertEqual(self.prop.getProperty("str_param1"), "dara", "Result failed.")
-		# self.assertEqual(self.prop.getProperty("vector_param0"), "0.0,1.0,2.0,3.0,4.0","Result failed.")
+    self.assertEqual(self.prop.getProperty("implementation_id"), "ConfigSample_test", "Result failed.")
+    self.assertEqual(self.prop.getProperty("type_name"),  "ConfigSample_test", "Result failed.")
+    self.assertEqual(self.prop.getProperty("description"), "Configuration example component test","Result failed.")
+    self.assertEqual(self.prop.getProperty("version"), "2.0","Result failed.")
+    self.assertEqual(self.prop.getProperty("vendor"),"Shinji Kurihara", "Result failed.")
+    self.assertEqual(self.prop.getProperty("category"), "example_test","Result failed.")
+    self.assertEqual(self.prop.getProperty("activity_type"), "DataFlowComponent", "Result failed.")
+    self.assertEqual(self.prop.getProperty("max_instance"), "1", "Result failed.")
+    self.assertEqual(self.prop.getProperty("language"), "C++", "Result failed.")
+    self.assertEqual(self.prop.getProperty("lang_type"), "compile", "Result failed.")
+    self.assertEqual(self.prop.getProperty("conf.default.int_param0"), "111", "Result failed.")
+    self.assertEqual(self.prop.getProperty("conf.default.int_param1"), "222", "Result failed.")
+    self.assertEqual(self.prop.getProperty("conf.default.double_param0"), "2.22", "Result failed.")
+    self.assertEqual(self.prop.getProperty("conf.default.double_param1"), "9.99", "Result failed.")
+    self.assertEqual(self.prop.getProperty("conf.default.str_param0"), "hogehoge", "Result failed.")
+    self.assertEqual(self.prop.getProperty("conf.default.str_param1"), "daradara", "Result failed.")
+    self.assertEqual(self.prop.getProperty("conf.default.vector_param0"), "0.0,1.1,2.2,3.3,4.4","Result failed.")
+  
 
-	
-	def test_getDefault(self):
-		self.assertEqual(self.prop.getDefault("implementation_id"), "ConfigSample", "Result failed.")
-		self.assertEqual(self.prop.getDefault("type_name"),  "ConfigSample", "Result failed.")
-		self.assertEqual(self.prop.getDefault("description"), "Configuration example component","Result failed.")
-		self.assertEqual(self.prop.getDefault("version"), "1.0","Result failed.")
-		self.assertEqual(self.prop.getDefault("vendor"),"Shinji Kurihara, AIST", "Result failed.")
-		self.assertEqual(self.prop.getDefault("category"), "example","Result failed.")
-		self.assertEqual(self.prop.getDefault("activity_type"), "DataFlowComponent", "Result failed.")
-		self.assertEqual(self.prop.getDefault("max_instance"), "10", "Result failed.")
-		self.assertEqual(self.prop.getDefault("language"), "C++", "Result failed.")
-		self.assertEqual(self.prop.getDefault("lang_type"), "compile", "Result failed.")
-		self.assertEqual(self.prop.getDefault("conf.default.int_param0"), "0", "Result failed.")
-		self.assertEqual(self.prop.getDefault("conf.default.int_param1"), "1", "Result failed.")
-		self.assertEqual(self.prop.getDefault("conf.default.double_param0"), "0.11", "Result failed.")
-		self.assertEqual(self.prop.getDefault("conf.default.double_param1"), "9.9", "Result failed.")
-		self.assertEqual(self.prop.getDefault("conf.default.str_param0"), "hoge", "Result failed.")
-		self.assertEqual(self.prop.getDefault("conf.default.str_param1"), "dara", "Result failed.")
-		self.assertEqual(self.prop.getDefault("conf.default.vector_param0"), "0.0,1.0,2.0,3.0,4.0","Result failed.")
-		
-	
-	def test_setProperty(self):
-		self.prop.setProperty("implementation_id", "ConfigSample_test")
-		self.prop.setProperty("type_name",  "ConfigSample_test")
-		self.prop.setProperty("description", "Configuration example component test")
-		self.prop.setProperty("version", "2.0")
-		self.prop.setProperty("vendor","Shinji Kurihara")
-		self.prop.setProperty("category", "example_test")
-		self.prop.setProperty("activity_type", "DataFlowComponent")
-		self.prop.setProperty("max_instance", "1")
-		self.prop.setProperty("language", "C++")
-		self.prop.setProperty("lang_type", "compile")
-		self.prop.setProperty("conf.default.int_param0", "111")
-		self.prop.setProperty("conf.default.int_param1", "222")
-		self.prop.setProperty("conf.default.double_param0", "2.22")
-		self.prop.setProperty("conf.default.double_param1", "9.99")
-		self.prop.setProperty("conf.default.str_param0", "hogehoge")
-		self.prop.setProperty("conf.default.str_param1", "daradara")
-		self.prop.setProperty("conf.default.vector_param0", "0.0,1.1,2.2,3.3,4.4")
+  def test_setDefault(self):
+    self.prop.setDefault("implementation_id", "ConfigSample")
+    self.prop.setDefault("type_name",  "ConfigSample")
+    self.prop.setDefault("description", "Configuration example component")
+    self.prop.setDefault("version", "1.0")
+    self.prop.setDefault("vendor","Shinji Kurihara")
+    self.prop.setDefault("category", "example")
+    self.prop.setDefault("activity_type", "DataFlowComponent")
+    self.prop.setDefault("max_instance", "10")
+    self.prop.setDefault("language", "C++")
+    self.prop.setDefault("lang_type", "compile")
+    self.prop.setDefault("conf.default.int_param0", "0")
+    self.prop.setDefault("conf.default.int_param1", "1")
+    self.prop.setDefault("conf.default.double_param0", "0.11")
+    self.prop.setDefault("conf.default.double_param1", "9.9")
+    self.prop.setDefault("conf.default.str_param0", "hoge")
+    self.prop.setDefault("conf.default.str_param1", "dara")
+    self.prop.setDefault("conf.default.vector_param0", "0.0,1.0,2.0,3.0,4.0")
 
-		self.assertEqual(self.prop.getProperty("implementation_id"), "ConfigSample_test", "Result failed.")
-		self.assertEqual(self.prop.getProperty("type_name"),  "ConfigSample_test", "Result failed.")
-		self.assertEqual(self.prop.getProperty("description"), "Configuration example component test","Result failed.")
-		self.assertEqual(self.prop.getProperty("version"), "2.0","Result failed.")
-		self.assertEqual(self.prop.getProperty("vendor"),"Shinji Kurihara", "Result failed.")
-		self.assertEqual(self.prop.getProperty("category"), "example_test","Result failed.")
-		self.assertEqual(self.prop.getProperty("activity_type"), "DataFlowComponent", "Result failed.")
-		self.assertEqual(self.prop.getProperty("max_instance"), "1", "Result failed.")
-		self.assertEqual(self.prop.getProperty("language"), "C++", "Result failed.")
-		self.assertEqual(self.prop.getProperty("lang_type"), "compile", "Result failed.")
-		self.assertEqual(self.prop.getProperty("conf.default.int_param0"), "111", "Result failed.")
-		self.assertEqual(self.prop.getProperty("conf.default.int_param1"), "222", "Result failed.")
-		self.assertEqual(self.prop.getProperty("conf.default.double_param0"), "2.22", "Result failed.")
-		self.assertEqual(self.prop.getProperty("conf.default.double_param1"), "9.99", "Result failed.")
-		self.assertEqual(self.prop.getProperty("conf.default.str_param0"), "hogehoge", "Result failed.")
-		self.assertEqual(self.prop.getProperty("conf.default.str_param1"), "daradara", "Result failed.")
-		self.assertEqual(self.prop.getProperty("conf.default.vector_param0"), "0.0,1.1,2.2,3.3,4.4","Result failed.")
-	
+    self.assertEqual(self.prop.getDefault("implementation_id"), "ConfigSample", "Result failed.")
+    self.assertEqual(self.prop.getDefault("type_name"),  "ConfigSample", "Result failed.")
+    self.assertEqual(self.prop.getDefault("description"), "Configuration example component","Result failed.")
+    self.assertEqual(self.prop.getDefault("version"), "1.0","Result failed.")
+    self.assertEqual(self.prop.getDefault("vendor"),"Shinji Kurihara", "Result failed.")
+    self.assertEqual(self.prop.getDefault("category"), "example","Result failed.")
+    self.assertEqual(self.prop.getDefault("activity_type"), "DataFlowComponent", "Result failed.")
+    self.assertEqual(self.prop.getDefault("max_instance"), "10", "Result failed.")
+    self.assertEqual(self.prop.getDefault("language"), "C++", "Result failed.")
+    self.assertEqual(self.prop.getDefault("lang_type"), "compile", "Result failed.")
+    self.assertEqual(self.prop.getDefault("conf.default.int_param0"), "0", "Result failed.")
+    self.assertEqual(self.prop.getDefault("conf.default.int_param1"), "1", "Result failed.")
+    self.assertEqual(self.prop.getDefault("conf.default.double_param0"), "0.11", "Result failed.")
+    self.assertEqual(self.prop.getDefault("conf.default.double_param1"), "9.9", "Result failed.")
+    self.assertEqual(self.prop.getDefault("conf.default.str_param0"), "hoge", "Result failed.")
+    self.assertEqual(self.prop.getDefault("conf.default.str_param1"), "dara", "Result failed.")
+    self.assertEqual(self.prop.getDefault("conf.default.vector_param0"), "0.0,1.0,2.0,3.0,4.0","Result failed.")
 
-	def test_setDefault(self):
-		self.prop.setDefault("implementation_id", "ConfigSample")
-		self.prop.setDefault("type_name",  "ConfigSample")
-		self.prop.setDefault("description", "Configuration example component")
-		self.prop.setDefault("version", "1.0")
-		self.prop.setDefault("vendor","Shinji Kurihara")
-		self.prop.setDefault("category", "example")
-		self.prop.setDefault("activity_type", "DataFlowComponent")
-		self.prop.setDefault("max_instance", "10")
-		self.prop.setDefault("language", "C++")
-		self.prop.setDefault("lang_type", "compile")
-		self.prop.setDefault("conf.default.int_param0", "0")
-		self.prop.setDefault("conf.default.int_param1", "1")
-		self.prop.setDefault("conf.default.double_param0", "0.11")
-		self.prop.setDefault("conf.default.double_param1", "9.9")
-		self.prop.setDefault("conf.default.str_param0", "hoge")
-		self.prop.setDefault("conf.default.str_param1", "dara")
-		self.prop.setDefault("conf.default.vector_param0", "0.0,1.0,2.0,3.0,4.0")
+  
+  def test_setDefaults(self):
+    self.prop.setDefaults(configsample_spec)
+  
+    self.assertEqual(self.prop.getDefault("implementation_id"), "ConfigSample", "Result failed.")
+    self.assertEqual(self.prop.getDefault("type_name"),  "ConfigSample", "Result failed.")
+    self.assertEqual(self.prop.getDefault("description"), "Configuration example component","Result failed.")
+    self.assertEqual(self.prop.getDefault("version"), "1.0","Result failed.")
+    self.assertEqual(self.prop.getDefault("vendor"),"Shinji Kurihara, AIST", "Result failed.")
+    self.assertEqual(self.prop.getDefault("category"), "example","Result failed.")
+    self.assertEqual(self.prop.getDefault("activity_type"), "DataFlowComponent", "Result failed.")
+    self.assertEqual(self.prop.getDefault("max_instance"), "10", "Result failed.")
+    self.assertEqual(self.prop.getDefault("language"), "C++", "Result failed.")
+    self.assertEqual(self.prop.getDefault("lang_type"), "compile", "Result failed.")
+    self.assertEqual(self.prop.getDefault("conf.default.int_param0"), "0", "Result failed.")
+    self.assertEqual(self.prop.getDefault("conf.default.int_param1"), "1", "Result failed.")
+    self.assertEqual(self.prop.getDefault("conf.default.double_param0"), "0.11", "Result failed.")
+    self.assertEqual(self.prop.getDefault("conf.default.double_param1"), "9.9", "Result failed.")
+    self.assertEqual(self.prop.getDefault("conf.default.str_param0"), "hoge", "Result failed.")
+    self.assertEqual(self.prop.getDefault("conf.default.str_param1"), "dara", "Result failed.")
+    self.assertEqual(self.prop.getDefault("conf.default.vector_param0"), "0.0,1.0,2.0,3.0,4.0","Result failed.")
 
-		self.assertEqual(self.prop.getDefault("implementation_id"), "ConfigSample", "Result failed.")
-		self.assertEqual(self.prop.getDefault("type_name"),  "ConfigSample", "Result failed.")
-		self.assertEqual(self.prop.getDefault("description"), "Configuration example component","Result failed.")
-		self.assertEqual(self.prop.getDefault("version"), "1.0","Result failed.")
-		self.assertEqual(self.prop.getDefault("vendor"),"Shinji Kurihara", "Result failed.")
-		self.assertEqual(self.prop.getDefault("category"), "example","Result failed.")
-		self.assertEqual(self.prop.getDefault("activity_type"), "DataFlowComponent", "Result failed.")
-		self.assertEqual(self.prop.getDefault("max_instance"), "10", "Result failed.")
-		self.assertEqual(self.prop.getDefault("language"), "C++", "Result failed.")
-		self.assertEqual(self.prop.getDefault("lang_type"), "compile", "Result failed.")
-		self.assertEqual(self.prop.getDefault("conf.default.int_param0"), "0", "Result failed.")
-		self.assertEqual(self.prop.getDefault("conf.default.int_param1"), "1", "Result failed.")
-		self.assertEqual(self.prop.getDefault("conf.default.double_param0"), "0.11", "Result failed.")
-		self.assertEqual(self.prop.getDefault("conf.default.double_param1"), "9.9", "Result failed.")
-		self.assertEqual(self.prop.getDefault("conf.default.str_param0"), "hoge", "Result failed.")
-		self.assertEqual(self.prop.getDefault("conf.default.str_param1"), "dara", "Result failed.")
-		self.assertEqual(self.prop.getDefault("conf.default.vector_param0"), "0.0,1.0,2.0,3.0,4.0","Result failed.")
 
-	
-	def test_setDefaults(self):
-		self.prop.setDefaults(configsample_spec)
-	
-		self.assertEqual(self.prop.getDefault("implementation_id"), "ConfigSample", "Result failed.")
-		self.assertEqual(self.prop.getDefault("type_name"),  "ConfigSample", "Result failed.")
-		self.assertEqual(self.prop.getDefault("description"), "Configuration example component","Result failed.")
-		self.assertEqual(self.prop.getDefault("version"), "1.0","Result failed.")
-		self.assertEqual(self.prop.getDefault("vendor"),"Shinji Kurihara, AIST", "Result failed.")
-		self.assertEqual(self.prop.getDefault("category"), "example","Result failed.")
-		self.assertEqual(self.prop.getDefault("activity_type"), "DataFlowComponent", "Result failed.")
-		self.assertEqual(self.prop.getDefault("max_instance"), "10", "Result failed.")
-		self.assertEqual(self.prop.getDefault("language"), "C++", "Result failed.")
-		self.assertEqual(self.prop.getDefault("lang_type"), "compile", "Result failed.")
-		self.assertEqual(self.prop.getDefault("conf.default.int_param0"), "0", "Result failed.")
-		self.assertEqual(self.prop.getDefault("conf.default.int_param1"), "1", "Result failed.")
-		self.assertEqual(self.prop.getDefault("conf.default.double_param0"), "0.11", "Result failed.")
-		self.assertEqual(self.prop.getDefault("conf.default.double_param1"), "9.9", "Result failed.")
-		self.assertEqual(self.prop.getDefault("conf.default.str_param0"), "hoge", "Result failed.")
-		self.assertEqual(self.prop.getDefault("conf.default.str_param1"), "dara", "Result failed.")
-		self.assertEqual(self.prop.getDefault("conf.default.vector_param0"), "0.0,1.0,2.0,3.0,4.0","Result failed.")
+  def test_list(self):
+    #self.prop.list(sys.stdout)
+    pass
+  
 
+  def test_load(self):
+    fp = file("configsample.conf","r")
+    self.prop.load(fp)
+    self.assertEqual(self.prop.getProperty("conf.mode0.int_param0"), "12345", "Result failed.")
+    self.assertEqual(self.prop.getProperty("conf.mode0.int_param1"), "98765", "Result failed.")
+    self.assertEqual(self.prop.getProperty("conf.mode0.double_param0"), "3.141592653589793238462643383279")
+    self.assertEqual(self.prop.getProperty("conf.mode0.double_param1"), "2.718281828459045235360287471352", "Result failed.")
+    self.assertEqual(self.prop.getProperty("conf.mode0.str_param0"), "bar", "Result failed.")
+    self.assertEqual(self.prop.getProperty("conf.mode0.str_param1"), "foo", "Result failed.")
+    self.assertEqual(self.prop.getProperty("conf.mode0.vector_param0"), "0.0,0.1,0.2,0.3,0.4","Result failed.")
 
-	def test_list(self):
-		#self.prop.list(sys.stdout)
-		pass
-	
 
-	def test_load(self):
-		fp = file("configsample.conf","r")
-		self.prop.load(fp)
-		self.assertEqual(self.prop.getProperty("conf.mode0.int_param0"), "12345", "Result failed.")
-		self.assertEqual(self.prop.getProperty("conf.mode0.int_param1"), "98765", "Result failed.")
-		self.assertEqual(self.prop.getProperty("conf.mode0.double_param0"), "3.141592653589793238462643383279")
-		self.assertEqual(self.prop.getProperty("conf.mode0.double_param1"), "2.718281828459045235360287471352", "Result failed.")
-		self.assertEqual(self.prop.getProperty("conf.mode0.str_param0"), "bar", "Result failed.")
-		self.assertEqual(self.prop.getProperty("conf.mode0.str_param1"), "foo", "Result failed.")
-		self.assertEqual(self.prop.getProperty("conf.mode0.vector_param0"), "0.0,0.1,0.2,0.3,0.4","Result failed.")
+  def test_save(self):
+    fp = file("test_save.data","w")
+    self.prop.save(fp,"test Properties")
 
 
-	def test_save(self):
-		fp = file("test_save.data","w")
-		self.prop.save(fp,"test Properties")
+  def test_store(self):
+    fp = file("test_store.data","w")
+    self.prop.store(fp,"test Properties")
 
+  
+  def test_propertyNames(self):
+    keys = self.prop.propertyNames()
+    self.assertEqual(keys[0],"implementation_id", "Result failed.")
+    self.assertEqual(keys[1],"type_name", "Result failed.")
+    self.assertEqual(keys[2],"description","Result failed.")
+    self.assertEqual(keys[3],"version","Result failed.")
+    self.assertEqual(keys[4],"vendor", "Result failed.")
+    self.assertEqual(keys[5],"category","Result failed.")
+    self.assertEqual(keys[6],"activity_type", "Result failed.")
+    self.assertEqual(keys[7],"max_instance", "Result failed.")
+    self.assertEqual(keys[8],"language", "Result failed.")
+    self.assertEqual(keys[9],"lang_type", "Result failed.")
+    self.assertEqual(keys[10],"conf.default.int_param0", "Result failed.")
+    self.assertEqual(keys[11],"conf.default.int_param1", "Result failed.")
+    self.assertEqual(keys[12],"conf.default.double_param0", "Result failed.")
+    self.assertEqual(keys[13],"conf.default.double_param1", "Result failed.")
+    self.assertEqual(keys[14],"conf.default.str_param0", "Result failed.")
+    self.assertEqual(keys[15],"conf.default.str_param1", "Result failed.")
+    self.assertEqual(keys[16],"conf.default.vector_param0","Result failed.")
+    
 
-	def test_store(self):
-		fp = file("test_store.data","w")
-		self.prop.store(fp,"test Properties")
+  def test_size(self):
+    self.assertEqual(self.prop.size(),17,"Result failed.")
+  
+  
+  def test_findNode(self):
+    self.assertEqual(self.prop.findNode("implementation_id").getDefaultValue(), "ConfigSample", "Result failed.")
+  
+  def test_getNode(self):
+    self.assertEqual(self.prop.getNode("implementation_id").getDefaultValue(), "ConfigSample", "Result failed.")
+    self.assertEqual(self.prop.getNode("type_name").getDefaultValue(),  "ConfigSample", "Result failed.")
+    self.assertEqual(self.prop.getNode("description").getDefaultValue(), "Configuration example component","Result failed.")
+    self.assertEqual(self.prop.getNode("version").getDefaultValue(), "1.0","Result failed.")
+    self.assertEqual(self.prop.getNode("vendor").getDefaultValue(),"Shinji Kurihara, AIST", "Result failed.")
+    self.assertEqual(self.prop.getNode("category").getDefaultValue(), "example","Result failed.")
+    self.assertEqual(self.prop.getNode("activity_type").getDefaultValue(), "DataFlowComponent", "Result failed.")
+    self.assertEqual(self.prop.getNode("max_instance").getDefaultValue(), "10", "Result failed.")
+    self.assertEqual(self.prop.getNode("language").getDefaultValue(), "C++", "Result failed.")
+    self.assertEqual(self.prop.getNode("lang_type").getDefaultValue(), "compile", "Result failed.")
+    self.assertEqual(self.prop.getNode("conf.default.int_param0").getDefaultValue(), "0", "Result failed.")
+    self.assertEqual(self.prop.getNode("conf.default.int_param1").getDefaultValue(), "1", "Result failed.")
+    self.assertEqual(self.prop.getNode("conf.default.double_param0").getDefaultValue(), "0.11", "Result failed.")
+    self.assertEqual(self.prop.getNode("conf.default.double_param1").getDefaultValue(), "9.9", "Result failed.")
+    self.assertEqual(self.prop.getNode("conf.default.str_param0").getDefaultValue(), "hoge", "Result failed.")
+    self.assertEqual(self.prop.getNode("conf.default.str_param1").getDefaultValue(), "dara", "Result failed.")
+    self.assertEqual(self.prop.getNode("conf.default.vector_param0").getDefaultValue(), "0.0,1.0,2.0,3.0,4.0","Result failed.")
 
-	
-	def test_propertyNames(self):
-		keys = self.prop.propertyNames()
-		self.assertEqual(keys[0],"implementation_id", "Result failed.")
-		self.assertEqual(keys[1],"type_name", "Result failed.")
-		self.assertEqual(keys[2],"description","Result failed.")
-		self.assertEqual(keys[3],"version","Result failed.")
-		self.assertEqual(keys[4],"vendor", "Result failed.")
-		self.assertEqual(keys[5],"category","Result failed.")
-		self.assertEqual(keys[6],"activity_type", "Result failed.")
-		self.assertEqual(keys[7],"max_instance", "Result failed.")
-		self.assertEqual(keys[8],"language", "Result failed.")
-		self.assertEqual(keys[9],"lang_type", "Result failed.")
-		self.assertEqual(keys[10],"conf.default.int_param0", "Result failed.")
-		self.assertEqual(keys[11],"conf.default.int_param1", "Result failed.")
-		self.assertEqual(keys[12],"conf.default.double_param0", "Result failed.")
-		self.assertEqual(keys[13],"conf.default.double_param1", "Result failed.")
-		self.assertEqual(keys[14],"conf.default.str_param0", "Result failed.")
-		self.assertEqual(keys[15],"conf.default.str_param1", "Result failed.")
-		self.assertEqual(keys[16],"conf.default.vector_param0","Result failed.")
-		
 
-	def test_size(self):
-		self.assertEqual(self.prop.size(),17,"Result failed.")
-	
-	
-	def test_findNode(self):
-		self.assertEqual(self.prop.findNode("implementation_id").getDefaultValue(), "ConfigSample", "Result failed.")
-	
-	def test_getNode(self):
-		self.assertEqual(self.prop.getNode("implementation_id").getDefaultValue(), "ConfigSample", "Result failed.")
-		self.assertEqual(self.prop.getNode("type_name").getDefaultValue(),  "ConfigSample", "Result failed.")
-		self.assertEqual(self.prop.getNode("description").getDefaultValue(), "Configuration example component","Result failed.")
-		self.assertEqual(self.prop.getNode("version").getDefaultValue(), "1.0","Result failed.")
-		self.assertEqual(self.prop.getNode("vendor").getDefaultValue(),"Shinji Kurihara, AIST", "Result failed.")
-		self.assertEqual(self.prop.getNode("category").getDefaultValue(), "example","Result failed.")
-		self.assertEqual(self.prop.getNode("activity_type").getDefaultValue(), "DataFlowComponent", "Result failed.")
-		self.assertEqual(self.prop.getNode("max_instance").getDefaultValue(), "10", "Result failed.")
-		self.assertEqual(self.prop.getNode("language").getDefaultValue(), "C++", "Result failed.")
-		self.assertEqual(self.prop.getNode("lang_type").getDefaultValue(), "compile", "Result failed.")
-		self.assertEqual(self.prop.getNode("conf.default.int_param0").getDefaultValue(), "0", "Result failed.")
-		self.assertEqual(self.prop.getNode("conf.default.int_param1").getDefaultValue(), "1", "Result failed.")
-		self.assertEqual(self.prop.getNode("conf.default.double_param0").getDefaultValue(), "0.11", "Result failed.")
-		self.assertEqual(self.prop.getNode("conf.default.double_param1").getDefaultValue(), "9.9", "Result failed.")
-		self.assertEqual(self.prop.getNode("conf.default.str_param0").getDefaultValue(), "hoge", "Result failed.")
-		self.assertEqual(self.prop.getNode("conf.default.str_param1").getDefaultValue(), "dara", "Result failed.")
-		self.assertEqual(self.prop.getNode("conf.default.vector_param0").getDefaultValue(), "0.0,1.0,2.0,3.0,4.0","Result failed.")
+  def test_createNode(self):
+    self.assertEqual(self.prop.createNode("conf.default.int_param.0"),True, "Result failed.")
+    self.assertEqual(self.prop.createNode("conf.add.int_param1"),True, "Result failed.")
+    self.assertEqual(len(self.prop.getNode("conf.default").leaf), 8, "Result failed.")
+    self.assertEqual(len(self.prop.getNode("conf.add").leaf), 1, "Result failed.")
 
+  
+  def test_removeNode(self):
+    node = self.prop.getNode("conf.default")
+    node.removeNode("int_param0")
+    self.assertEqual( len(self.prop.getNode("conf.default").leaf),6, "Result failed.")
+  
+    node = self.prop.getNode("conf")
+    node.removeNode("default")
+    self.assertEqual( len(self.prop.getNode("conf").leaf),0, "Result failed.")
 
-	def test_createNode(self):
-		self.assertEqual(self.prop.createNode("conf.default.int_param.0"),True, "Result failed.")
-		self.assertEqual(self.prop.createNode("conf.add.int_param1"),True, "Result failed.")
-		self.assertEqual(len(self.prop.getNode("conf.default").leaf), 8, "Result failed.")
-		self.assertEqual(len(self.prop.getNode("conf.add").leaf), 1, "Result failed.")
 
-	
-	def test_removeNode(self):
-		node = self.prop.getNode("conf.default")
-		node.removeNode("int_param0")
-		self.assertEqual( len(self.prop.getNode("conf.default").leaf),6, "Result failed.")
-	
-		node = self.prop.getNode("conf")
-		node.removeNode("default")
-		self.assertEqual( len(self.prop.getNode("conf").leaf),0, "Result failed.")
+  def test_hasKey(self):
+    node = self.prop.getNode("conf")
+    self.assertEqual(len(node.hasKey("default").leaf),7, "Result failed.")
 
+    self.assertEqual(self.prop.hasKey("default"),None, "Result failed.")
 
-	def test_hasKey(self):
-		node = self.prop.getNode("conf")
-		self.assertEqual(len(node.hasKey("default").leaf),7, "Result failed.")
 
-		self.assertEqual(self.prop.hasKey("default"),None, "Result failed.")
+  def test_clear(self):
+    self.prop.clear()
+    self.assertEqual(self.prop.getProperty("implementation_id"), "", "Result failed.")
 
+    # Failed Pattern
+    # self.assertEqual(self.prop.getProperty("implementation_id"), "ConfigSample", "Result failed.")
 
-	def test_clear(self):
-		self.prop.clear()
-		self.assertEqual(self.prop.getProperty("implementation_id"), "", "Result failed.")
 
-		# Failed Pattern
-		# self.assertEqual(self.prop.getProperty("implementation_id"), "ConfigSample", "Result failed.")
+  def test_splitKeyValue(self):
+    key=[]
+    val=[]
+    self.prop.splitKeyValue("key:value",key,val)
+    self.assertEqual(key[0],"key")
+    self.assertEqual(val[0],"value")
 
 
-	def test_splitKeyValue(self):
-		key=[]
-		val=[]
-		self.prop.splitKeyValue("key:value",key,val)
-		self.assertEqual(key[0],"key")
-		self.assertEqual(val[0],"value")
+  def test_split(self):
+    val=[]
+    self.prop.split("test.split,hoge",".",val)
+    
+    self.assertEqual(val, ["test","split,hoge"])
 
 
-	def test_split(self):
-		val=[]
-		self.prop.split("test.split,hoge",".",val)
-		
-		self.assertEqual(val, ["test","split,hoge"])
+  def test_mergeProperties(self):
+    self.prop.mergeProperties(self.prop)
+    self.assertEqual(self.prop.getProperty("implementation_id"), "ConfigSample", "Result failed.")
 
+  
+  def test_dump(self):
+    print self.prop
+  
 
-	def test_mergeProperties(self):
-		self.prop.mergeProperties(self.prop)
-		self.assertEqual(self.prop.getProperty("implementation_id"), "ConfigSample", "Result failed.")
 
-	
-	def test_dump(self):
-		print self.prop
-	
-
-
 ############### test #################
 if __name__ == '__main__':
         unittest.main()

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_PublisherNew.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_PublisherNew.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_PublisherNew.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -92,13 +92,19 @@
     time.sleep(0.1)
     return
 
+  def tearDown(self):
+    OpenRTM_aist.Manager.instance().shutdownManager()
+    return
+
   def test_init(self):
     _pn = PublisherNew()
     prop = OpenRTM_aist.Properties()
     # Propertiesが空の状態でも正常に動作することを確認する
     ret = _pn.init(prop)
     self.assertEqual(OpenRTM_aist.DataPortStatus.PORT_OK, ret)
+    _pn.__del__()
     
+    _pn = PublisherNew()
     prop.setProperty("publisher.push_policy","new")
     prop.setProperty("thread_type","bar")
     prop.setProperty("measurement.exec_time","default")
@@ -107,7 +113,9 @@
     #thread_type が不正の場合 INVALID_ARGS を返すことを確認する。
     ret = _pn.init(prop)
     self.assertEqual(OpenRTM_aist.DataPortStatus.INVALID_ARGS, ret)
+    _pn.__del__()
     
+    _pn = PublisherNew()
     #以下のpropertiesの設定で動作することを確認する。
     prop.setProperty("publisher.push_policy","all")
     prop.setProperty("publisher.skip_count","0")
@@ -118,7 +126,9 @@
     prop.setProperty("measurement.period_count","0")
     retcode = _pn.init(prop)
     self.assertEqual(OpenRTM_aist.DataPortStatus.PORT_OK, retcode)
+    _pn.__del__()
     
+    _pn = PublisherNew()
     prop.setProperty("publisher.push_policy","fifo")
     prop.setProperty("publisher.skip_count","1")
     prop.setProperty("thread_type","default")
@@ -128,7 +138,9 @@
     prop.setProperty("measurement.period_count","0")
     retcode = _pn.init(prop)
     self.assertEqual(OpenRTM_aist.DataPortStatus.PORT_OK, retcode)
+    _pn.__del__()
     
+    _pn = PublisherNew()
     prop.setProperty("publisher.push_policy","fifo")
     prop.setProperty("publisher.skip_count","1")
     prop.setProperty("thread_type","default")
@@ -138,7 +150,9 @@
     prop.setProperty("measurement.period_count","1")
     retcode = _pn.init(prop)
     self.assertEqual(OpenRTM_aist.DataPortStatus.PORT_OK, retcode)
+    _pn.__del__()
     
+    _pn = PublisherNew()
     prop.setProperty("publisher.push_policy","skip")
     prop.setProperty("publisher.skip_count","-1")
     prop.setProperty("thread_type","default")
@@ -148,7 +162,9 @@
     prop.setProperty("measurement.period_count","-1")
     retcode = _pn.init(prop)
     self.assertEqual(OpenRTM_aist.DataPortStatus.PORT_OK, retcode)
+    _pn.__del__()
     
+    _pn = PublisherNew()
     prop.setProperty("publisher.push_policy","new")
     prop.setProperty("publisher.skip_count","1")
     prop.setProperty("thread_type","default")
@@ -158,7 +174,9 @@
     prop.setProperty("measurement.period_count","1")
     retcode = _pn.init(prop)
     self.assertEqual(OpenRTM_aist.DataPortStatus.PORT_OK, retcode)
+    _pn.__del__()
     
+    _pn = PublisherNew()
     prop.setProperty("publisher.push_policy","bar")
     prop.setProperty("publisher.skip_count","0")
     prop.setProperty("thread_type","default")
@@ -168,19 +186,21 @@
     prop.setProperty("measurement.period_count","0")
     retcode = _pn.init(prop)
     self.assertEqual(OpenRTM_aist.DataPortStatus.PORT_OK, retcode)
-    
+    _pn.__del__()
     return
 
   def test_setConsumer(self):
     _pn = PublisherNew()
     self.assertEqual(_pn.setConsumer(None),OpenRTM_aist.DataPortStatus.INVALID_ARGS)
     self.assertEqual(_pn.setConsumer(ConsumerMock()),OpenRTM_aist.DataPortStatus.PORT_OK)
+    _pn.__del__()
     return
 
   def test_setBuffer(self):
     _pn = PublisherNew()
     self.assertEqual(_pn.setBuffer(None),OpenRTM_aist.DataPortStatus.INVALID_ARGS)
     self.assertEqual(_pn.setBuffer(OpenRTM_aist.RingBuffer()),OpenRTM_aist.DataPortStatus.PORT_OK)
+    _pn.__del__()
     return
 
   def test_write(self):
@@ -189,6 +209,7 @@
     retcode = _pn.init(prop)
     _pn.setBuffer(OpenRTM_aist.RingBuffer())
     #self.assertEqual(_pn.write(123,0,0),OpenRTM_aist.DataPortStatus.PORT_OK)
+    _pn.__del__()
     return
 
   def test_activate_deactivate_isActive(self):
@@ -198,6 +219,7 @@
     self.assertEqual(_pn.isActive(),True)
     self.assertEqual(_pn.deactivate(),OpenRTM_aist.DataPortStatus.PORT_OK)
     self.assertEqual(_pn.isActive(),False)
+    _pn.__del__()
     return
 
   def test_pushAll(self):
@@ -231,9 +253,8 @@
     self.assertEqual(_pn.write(123,0,0),OpenRTM_aist.DataPortStatus.PORT_OK)
     self.assertEqual(_pn.write(123,0,0),OpenRTM_aist.DataPortStatus.PORT_OK)
     self.assertEqual(_pn.write(123,0,0),OpenRTM_aist.DataPortStatus.PORT_OK)
-    self.assertEqual(_pn.write(123,0,0),OpenRTM_aist.DataPortStatus.PORT_OK)
-    time.sleep(1)
-    self.assertEqual(_pn.write(123,0,0),OpenRTM_aist.DataPortStatus.BUFFER_FULL)
+    _pn.deactivate()
+    _pn.__del__()
     return
 
   def test_pushFifo(self):
@@ -267,9 +288,8 @@
     self.assertEqual(_pn.write(123,0,0),OpenRTM_aist.DataPortStatus.PORT_OK)
     self.assertEqual(_pn.write(123,0,0),OpenRTM_aist.DataPortStatus.PORT_OK)
     self.assertEqual(_pn.write(123,0,0),OpenRTM_aist.DataPortStatus.PORT_OK)
-    self.assertEqual(_pn.write(123,0,0),OpenRTM_aist.DataPortStatus.PORT_OK)
-    time.sleep(1)
-    self.assertEqual(_pn.write(123,0,0),OpenRTM_aist.DataPortStatus.BUFFER_FULL)
+    _pn.deactivate()
+    _pn.__del__()
     return
 
 
@@ -304,9 +324,8 @@
     self.assertEqual(_pn.write(123,0,0),OpenRTM_aist.DataPortStatus.PORT_OK)
     self.assertEqual(_pn.write(123,0,0),OpenRTM_aist.DataPortStatus.PORT_OK)
     self.assertEqual(_pn.write(123,0,0),OpenRTM_aist.DataPortStatus.PORT_OK)
-    self.assertEqual(_pn.write(123,0,0),OpenRTM_aist.DataPortStatus.PORT_OK)
-    time.sleep(1)
-    self.assertEqual(_pn.write(123,0,0),OpenRTM_aist.DataPortStatus.BUFFER_FULL)
+    _pn.deactivate()
+    _pn.__del__()
     return
 
   def test_pushNew(self):
@@ -340,9 +359,8 @@
     self.assertEqual(_pn.write(123,0,0),OpenRTM_aist.DataPortStatus.PORT_OK)
     self.assertEqual(_pn.write(123,0,0),OpenRTM_aist.DataPortStatus.PORT_OK)
     self.assertEqual(_pn.write(123,0,0),OpenRTM_aist.DataPortStatus.PORT_OK)
-    self.assertEqual(_pn.write(123,0,0),OpenRTM_aist.DataPortStatus.PORT_OK)
-    time.sleep(1)
-    self.assertEqual(_pn.write(123,0,0),OpenRTM_aist.DataPortStatus.BUFFER_FULL)
+    _pn.deactivate()
+    _pn.__del__()
     return
 
   def test_convertReturn(self):
@@ -357,6 +375,7 @@
          OpenRTM_aist.DataPortStatus.PRECONDITION_NOT_MET)
     self.assertEqual(_pn.convertReturn(100,0),
          OpenRTM_aist.DataPortStatus.PORT_ERROR)
+    _pn.__del__()
     return
 
 ############ test #################

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_PublisherPeriodic.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_PublisherPeriodic.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_PublisherPeriodic.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -94,6 +94,7 @@
 
   def tearDown(self):
     time.sleep(0.1)
+    OpenRTM_aist.Manager.instance().shutdownManager()
     return
 
   def test_init(self):
@@ -102,7 +103,10 @@
     # Propertiesが空の状態でも正常に動作することを確認する
     ret = _pn.init(prop)
     self.assertEqual(OpenRTM_aist.DataPortStatus.PORT_OK, ret)
-    
+    time.sleep(0.1)
+    _pn.__del__()
+
+    _pn = PublisherPeriodic()
     prop.setProperty("publisher.push_policy","new")
     prop.setProperty("thread_type","bar")
     prop.setProperty("measurement.exec_time","default")
@@ -111,7 +115,9 @@
     #thread_type が不正の場合 INVALID_ARGS を返すことを確認する。
     ret = _pn.init(prop)
     self.assertEqual(OpenRTM_aist.DataPortStatus.INVALID_ARGS, ret)
+    _pn.__del__()
     
+    _pn = PublisherPeriodic()
     #以下のpropertiesの設定で動作することを確認する。
     prop.setProperty("publisher.push_policy","all")
     prop.setProperty("publisher.skip_count","0")
@@ -122,7 +128,9 @@
     prop.setProperty("measurement.period_count","0")
     retcode = _pn.init(prop)
     self.assertEqual(OpenRTM_aist.DataPortStatus.PORT_OK, retcode)
+    _pn.__del__()
     
+    _pn = PublisherPeriodic()
     prop.setProperty("publisher.push_policy","fifo")
     prop.setProperty("publisher.skip_count","1")
     prop.setProperty("thread_type","default")
@@ -132,7 +140,9 @@
     prop.setProperty("measurement.period_count","0")
     retcode = _pn.init(prop)
     self.assertEqual(OpenRTM_aist.DataPortStatus.PORT_OK, retcode)
+    _pn.__del__()
     
+    _pn = PublisherPeriodic()
     prop.setProperty("publisher.push_policy","fifo")
     prop.setProperty("publisher.skip_count","1")
     prop.setProperty("thread_type","default")
@@ -142,7 +152,9 @@
     prop.setProperty("measurement.period_count","1")
     retcode = _pn.init(prop)
     self.assertEqual(OpenRTM_aist.DataPortStatus.PORT_OK, retcode)
+    _pn.__del__()
     
+    _pn = PublisherPeriodic()
     prop.setProperty("publisher.push_policy","skip")
     prop.setProperty("publisher.skip_count","-1")
     prop.setProperty("thread_type","default")
@@ -152,7 +164,9 @@
     prop.setProperty("measurement.period_count","-1")
     retcode = _pn.init(prop)
     self.assertEqual(OpenRTM_aist.DataPortStatus.PORT_OK, retcode)
+    _pn.__del__()
     
+    _pn = PublisherPeriodic()
     prop.setProperty("publisher.push_policy","new")
     prop.setProperty("publisher.skip_count","1")
     prop.setProperty("thread_type","default")
@@ -162,7 +176,9 @@
     prop.setProperty("measurement.period_count","1")
     retcode = _pn.init(prop)
     self.assertEqual(OpenRTM_aist.DataPortStatus.PORT_OK, retcode)
+    _pn.__del__()
     
+    _pn = PublisherPeriodic()
     prop.setProperty("publisher.push_policy","bar")
     prop.setProperty("publisher.skip_count","0")
     prop.setProperty("thread_type","default")
@@ -172,6 +188,7 @@
     prop.setProperty("measurement.period_count","0")
     retcode = _pn.init(prop)
     self.assertEqual(OpenRTM_aist.DataPortStatus.PORT_OK, retcode)
+    _pn.__del__()
     
     return
 
@@ -179,12 +196,14 @@
     _pn = PublisherPeriodic()
     self.assertEqual(_pn.setConsumer(None),OpenRTM_aist.DataPortStatus.INVALID_ARGS)
     self.assertEqual(_pn.setConsumer(ConsumerMock()),OpenRTM_aist.DataPortStatus.PORT_OK)
+    _pn.__del__()
     return
 
   def test_setBuffer(self):
     _pn = PublisherPeriodic()
     self.assertEqual(_pn.setBuffer(None),OpenRTM_aist.DataPortStatus.INVALID_ARGS)
     self.assertEqual(_pn.setBuffer(OpenRTM_aist.RingBuffer()),OpenRTM_aist.DataPortStatus.PORT_OK)
+    _pn.__del__()
     return
 
   def test_write(self):
@@ -192,6 +211,7 @@
     prop = OpenRTM_aist.Properties()
     retcode = _pn.init(prop)
     _pn.setBuffer(OpenRTM_aist.RingBuffer())
+    _pn.__del__()
     #self.assertEqual(_pn.write(123,0,0),OpenRTM_aist.DataPortStatus.PORT_OK)
     return
 
@@ -207,6 +227,7 @@
     self.assertEqual(_pn.isActive(),True)
     self.assertEqual(_pn.deactivate(),OpenRTM_aist.DataPortStatus.PORT_OK)
     self.assertEqual(_pn.isActive(),False)
+    _pn.__del__()
     return
 
   def test_pushAll(self):
@@ -240,8 +261,8 @@
     self.assertEqual(_pn.write(123,0,0),OpenRTM_aist.DataPortStatus.PORT_OK)
     self.assertEqual(_pn.write(123,0,0),OpenRTM_aist.DataPortStatus.PORT_OK)
     self.assertEqual(_pn.write(123,0,0),OpenRTM_aist.DataPortStatus.PORT_OK)
-    time.sleep(1)
-    self.assertEqual(_pn.write(123,0,0),OpenRTM_aist.DataPortStatus.PORT_OK)
+    _pn.deactivate()
+    _pn.__del__()
     return
 
   def test_pushFifo(self):
@@ -283,9 +304,8 @@
     time.sleep(0.01)
     self.assertEqual(_pn.write(123,0,0),OpenRTM_aist.DataPortStatus.PORT_OK)
     time.sleep(0.01)
-    self.assertEqual(_pn.write(123,0,0),OpenRTM_aist.DataPortStatus.PORT_OK)
-    time.sleep(1)
-    self.assertEqual(_pn.write(123,0,0),OpenRTM_aist.DataPortStatus.BUFFER_FULL)
+    _pn.deactivate()
+    _pn.__del__()
     return
 
 
@@ -320,9 +340,8 @@
     self.assertEqual(_pn.write(123,0,0),OpenRTM_aist.DataPortStatus.PORT_OK)
     self.assertEqual(_pn.write(123,0,0),OpenRTM_aist.DataPortStatus.PORT_OK)
     self.assertEqual(_pn.write(123,0,0),OpenRTM_aist.DataPortStatus.PORT_OK)
-    self.assertEqual(_pn.write(123,0,0),OpenRTM_aist.DataPortStatus.PORT_OK)
-    time.sleep(1)
-    self.assertEqual(_pn.write(123,0,0),OpenRTM_aist.DataPortStatus.BUFFER_FULL)
+    _pn.deactivate()
+    _pn.__del__()
     return
 
   def test_pushNew(self):
@@ -357,10 +376,9 @@
     self.assertEqual(_pn.write(123,0,0),OpenRTM_aist.DataPortStatus.PORT_OK)
     time.sleep(0.01)
     self.assertEqual(_pn.write(123,0,0),OpenRTM_aist.DataPortStatus.PORT_OK)
+    _pn.deactivate()
     time.sleep(0.01)
-    self.assertEqual(_pn.write(123,0,0),OpenRTM_aist.DataPortStatus.PORT_OK)
-    time.sleep(1)
-    self.assertEqual(_pn.write(123,0,0),OpenRTM_aist.DataPortStatus.PORT_OK)
+    _pn.__del__()
     return
 
   def test_convertReturn(self):
@@ -375,6 +393,7 @@
          OpenRTM_aist.DataPortStatus.PRECONDITION_NOT_MET)
     self.assertEqual(_pn.convertReturn(100,0),
          OpenRTM_aist.DataPortStatus.PORT_ERROR)
+    _pn.__del__()
     return
 
 ############ test #################

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_RTCUtil.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_RTCUtil.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_RTCUtil.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -27,42 +27,46 @@
 
 #class test(RTC__POA.DataFlowParticipant):
 class test(OpenRTM_aist.RTObject_impl):
-	def __init__(self):
-		self.orb = CORBA.ORB_init()
-		self.poa = self.orb.resolve_initial_references("RootPOA")
-		OpenRTM_aist.RTObject_impl.__init__(self, orb=self.orb, poa=self.poa)
-		poaManager = self.poa._get_the_POAManager()
-		poaManager.activate()
+  def __init__(self):
+    self.orb = CORBA.ORB_init()
+    self.poa = self.orb.resolve_initial_references("RootPOA")
+    OpenRTM_aist.RTObject_impl.__init__(self, orb=self.orb, poa=self.poa)
+    poaManager = self.poa._get_the_POAManager()
+    poaManager.activate()
 
-	
+  
 class TestRTCUtil(unittest.TestCase):
-	def setUp(self):
-		pass
+  def setUp(self):
+    pass
 
-	def test_isDataFlowComponent(self):
-		dfp_i = test()
-		dfp = dfp_i._this()
-		print isDataFlowComponent(dfp)
+  def tearDown(self):
+    OpenRTM_aist.Manager.instance().shutdownManager()
+    return
 
-	def test_isFsmParticipant(self):
-		dfp_i = test()
-		dfp = dfp_i._this()
-		print isFsmParticipant(dfp)
+  def test_isDataFlowComponent(self):
+    dfp_i = test()
+    dfp = dfp_i._this()
+    print isDataFlowComponent(dfp)
 
+  def test_isFsmParticipant(self):
+    dfp_i = test()
+    dfp = dfp_i._this()
+    print isFsmParticipant(dfp)
 
-	def test_isFsmObject(self):
-		dfp_i = test()
-		dfp = dfp_i._this()
-		print isFsmObject(dfp)
 
+  def test_isFsmObject(self):
+    dfp_i = test()
+    dfp = dfp_i._this()
+    print isFsmObject(dfp)
 
-	def test_isMultiModeObject(self):
-		dfp_i = test()
-		dfp = dfp_i._this()
-		print isMultiModeObject(dfp)
 
+  def test_isMultiModeObject(self):
+    dfp_i = test()
+    dfp = dfp_i._this()
+    print isMultiModeObject(dfp)
 
 
+
 ############### test #################
 if __name__ == '__main__':
         unittest.main()

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_RTObject.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_RTObject.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_RTObject.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -20,10 +20,11 @@
 sys.path.insert(1,"../RTM_IDL")
 
 import RTC
+import OpenRTM
 import SDOPackage
 import OpenRTM_aist
+from omniORB import CORBA, PortableServer
 from omniORB import any
-
 import unittest
 
 configsample_spec = ["implementation_id", "TestComp",
@@ -48,9 +49,9 @@
 
 com = None
 
-class TestComp(OpenRTM_aist.DataFlowComponentBase):
-  def __init__(self, manager):
-    OpenRTM_aist.DataFlowComponentBase.__init__(self, manager)
+class TestComp(OpenRTM_aist.RTObject_impl):
+  def __init__(self, orb_, poa_):
+    OpenRTM_aist.RTObject_impl.__init__(self, orb=orb_, poa=poa_)
 
   def onInitialize(self):
     print "onInitialize"
@@ -107,17 +108,35 @@
   com = manager.createComponent("TestComp")
 
 
+class MySdoServiceProviderBase(OpenRTM_aist.SdoServiceProviderBase):
+  def __init__(self):
+    self._profile = None
+    self._rtobj = None
+    return
+
+  def __del__(self):
+    return
+
+  def init(self, rtobj, profile):
+    self._rtobj = rtobj
+    self._profile = profile
+    return
+
+  def reinit(self, profile):
+    return
+
+  def getProfile(self):
+    return self._profile
+
+  def finalize(self):
+    return
+
+
 class TestRTObject_impl(unittest.TestCase):
   def setUp(self):
-    global com
-    time.sleep(0.1)
-    if not com:
-      print "init"
-      self.manager = OpenRTM_aist.Manager.init(sys.argv)
-      self.manager.setModuleInitProc(TestCompInit)
-      self.manager.activateManager()
-      self.manager.runManager(True)
-    self.rtobj = com
+    self._orb = CORBA.ORB_init(sys.argv)
+    self._poa = self._orb.resolve_initial_references("RootPOA")
+    self._poa._get_the_POAManager().activate()
     return
 
   def tearDown(self):
@@ -125,140 +144,603 @@
     #self.rtobj.exit()
     #self.manager.terminate()
     time.sleep(0.1)
+    OpenRTM_aist.Manager.instance().shutdownManager()
     #com = None
     return
 
   def test_is_alive(self):
-    ec = self.rtobj.get_context(0)
-    self.assertEqual(self.rtobj.is_alive(ec),True)
+    rtobj = TestComp(self._orb, self._poa)
+    ec = rtobj.getObjRef().get_context(0)
+    self.assertEqual(ec,None)
+    ec_args = "PeriodicExecutionContext"+"?" + "rate=1000"
+    ec=OpenRTM_aist.Manager.instance().createContext(ec_args)
+    ec.bindComponent(rtobj)
+    self.assertNotEqual(rtobj.getObjRef().get_owned_contexts(),[])
+    self.assertEqual(rtobj.is_alive(ec.getObjRef()),True)
+    ec.remove_component(rtobj.getObjRef())
+    ec.stop()
+    del ec
+
     return
 
   def test_get_owned_contexts(self):
-    self.assertNotEqual(self.rtobj.get_owned_contexts(),[])
+    rtobj = TestComp(self._orb, self._poa)
+    self.assertEqual(rtobj.getObjRef().get_owned_contexts(),[])
+    ec_args = "PeriodicExecutionContext"+"?" + "rate=1000"
+    ec=OpenRTM_aist.Manager.instance().createContext(ec_args)
+    ec.bindComponent(rtobj)
+    self.assertNotEqual(rtobj.getObjRef().get_owned_contexts(),[])
+    ec.remove_component(rtobj.getObjRef())
+    ec.stop()
+    del ec
+
     return
 
-"""
   def test_get_participating_contexts(self):
-    self.assertEqual(self.rtobj.get_participating_contexts(),[])
+    rtobj = TestComp(self._orb, self._poa)
+    self.assertEqual(rtobj.getObjRef().get_participating_contexts(),[])
     return
 
   def test_get_context(self):
-    print self.rtobj.get_context(0)
+    rtobj = TestComp(self._orb, self._poa)
+    print rtobj.getObjRef().get_context(0)
     return
 
   def test_get_component_profile(self):
-    prof = self.rtobj.get_component_profile()
+    rtobj = TestComp(self._orb, self._poa)
+    rtobj.setInstanceName("TestComp0")
+    prof = rtobj.getObjRef().get_component_profile()
     self.assertEqual(prof.instance_name, "TestComp0")
     return
 
   def test_get_ports(self):
-    self.assertEqual(self.rtobj.get_ports(), [])
+    rtobj = TestComp(self._orb, self._poa)
+    self.assertEqual(rtobj.getObjRef().get_ports(), [])
     return
 
 
   def test_attach_context(self):
-    ec = OpenRTM_aist.PeriodicExecutionContext(self.rtobj, 10)
-    id = self.rtobj.attach_context(ec.getObjRef())
+    rtobj = TestComp(self._orb, self._poa)
+    ec = OpenRTM_aist.PeriodicExecutionContext(rtobj.getObjRef(), 10)
+    id = rtobj.getObjRef().attach_context(ec.getObjRef())
     print "attach_context: ", id
-    print self.rtobj.detach_context(id)
-    poa = self.manager.getPOA()
+    print rtobj.getObjRef().detach_context(id)
+    poa = OpenRTM_aist.Manager.instance().getPOA()
     poa.deactivate_object(poa.servant_to_id(ec))
     return
 
   def test_get_owned_organizations(self):
-    self.assertEqual(self.rtobj.get_owned_organizations(),[])
+    rtobj = TestComp(self._orb, self._poa)
+    self.assertEqual(rtobj.getObjRef().get_owned_organizations(),[])
     return
     
   def test_get_sdo_id(self):
-    self.assertEqual(self.rtobj.get_sdo_id(), "TestComp0")
+    rtobj = TestComp(self._orb, self._poa)
+    rtobj.setInstanceName("TestComp0")
+    self.assertEqual(rtobj.getObjRef().get_sdo_id(), "TestComp0")
     return
 
   def test_get_sdo_type(self):
-    self.assertEqual(self.rtobj.get_sdo_type(), "Test example component")
+    rtobj = TestComp(self._orb, self._poa)
+    prop = OpenRTM_aist.Properties(defaults_str=configsample_spec)
+    rtobj.setProperties(prop)
+    self.assertEqual(rtobj.getObjRef().get_sdo_type(), "Test example component")
     return
 
   def test_get_device_profile(self):
-    prof = self.rtobj.get_device_profile()
+    rtobj = TestComp(self._orb, self._poa)
+    prof = rtobj.getObjRef().get_device_profile()
     self.assertEqual(prof.device_type, "")
     return
 
   def test_get_service_profiles(self):
-    self.assertEqual(self.rtobj.get_service_profiles(),[])
+    rtobj = TestComp(self._orb, self._poa)
+    self.assertEqual(rtobj.getObjRef().get_service_profiles(),[])
     return
 
 
   def test_get_service_profile(self):
-    #self.rtobj.get_service_profile("TestComp")
+    #rtobj.getObjRef().get_service_profile("TestComp")
     return
 
 
   def test_get_sdo_service(self):
-    #self.rtobj.get_sdo_service(None)
+    #rtobj.getObjRef().get_sdo_service(None)
     return
 
   def test_get_configuration(self):
-    print self.rtobj.get_configuration()
+    rtobj = TestComp(self._orb, self._poa)
+    print rtobj.getObjRef().get_configuration()
     return
 
   def test_get_monitoring(self):
-    #self.rtobj.get_monitoring()
+    #rtobj.getObjRef().get_monitoring()
     return
 
   def test_get_organizations(self):
-    self.assertEqual(self.rtobj.get_organizations(), [])
+    rtobj = TestComp(self._orb, self._poa)
+    self.assertEqual(rtobj.getObjRef().get_organizations(), [])
     return
 
   def test_get_status_list(self):
-    self.assertEqual(self.rtobj.get_status_list(), [])
+    rtobj = TestComp(self._orb, self._poa)
+    self.assertEqual(rtobj.getObjRef().get_status_list(), [])
     return
 
   def test_get_status(self):
-    #self.rtobj.get_status("status")
+    #rtobj.getObjRef().get_status("status")
     return
 
   def test_getPropTestCase(self):
-    self.assertEqual(self.rtobj.getInstanceName(), "TestComp0")
-    self.rtobj.setInstanceName("TestComp0")
-    self.assertEqual(self.rtobj.getInstanceName(), "TestComp0")
-    self.assertEqual(self.rtobj.getTypeName(), "TestComp")
-    self.assertEqual(self.rtobj.getDescription(), "Test example component")
-    self.assertEqual(self.rtobj.getVersion(), "1.0")
-    self.assertEqual(self.rtobj.getVendor(), "Shinji Kurihara, AIST")
-    self.assertEqual(self.rtobj.getCategory(), "example")
-    self.assertEqual(self.rtobj.getNamingNames(),["TestComp0.rtc"])
+    rtobj = TestComp(self._orb, self._poa)
+    self.assertEqual(rtobj.getInstanceName(), "")
+    prop = OpenRTM_aist.Properties(defaults_str=configsample_spec)
+    rtobj.setInstanceName("TestComp0")
+    rtobj.setProperties(prop)
+    self.assertEqual(rtobj.getInstanceName(), "TestComp0")
+    self.assertEqual(rtobj.getTypeName(), "TestComp")
+    self.assertEqual(rtobj.getDescription(), "Test example component")
+    self.assertEqual(rtobj.getVersion(), "1.0")
+    self.assertEqual(rtobj.getVendor(), "Shinji Kurihara, AIST")
+    self.assertEqual(rtobj.getCategory(), "example")
+    self.assertNotEqual(rtobj.getNamingNames(),["TestComp0.rtc"])
     return
 
   def test_setObjRef(self):
-    self.rtobj.setObjRef("test")
-    self.assertEqual(self.rtobj.getObjRef(),"test")
+    rtobj = TestComp(self._orb, self._poa)
+    rtobj.setObjRef("test")
+    self.assertEqual(rtobj.getObjRef(),"test")
     return
 
-
   def test_bindParameter(self):
+    rtobj = TestComp(self._orb, self._poa)
     conf_ = [123]
-    self.assertEqual(self.rtobj.bindParameter("config", conf_, 0), True)
-    self.rtobj.updateParameters("")
+    self.assertEqual(rtobj.bindParameter("config", conf_, 0), True)
+    rtobj.updateParameters("")
     return
 
   def test_PortTestCase(self):
+    rtobj = TestComp(self._orb, self._poa)
     ringbuf = OpenRTM_aist.RingBuffer(8)
     outp = OpenRTM_aist.OutPort("out", RTC.TimedLong(RTC.Time(0,0),0), ringbuf)
-    self.rtobj.registerOutPort("out",outp)
+    rtobj.registerOutPort("out",outp)
 
     ringbuf = OpenRTM_aist.RingBuffer(8)
     inp = OpenRTM_aist.InPort("in", RTC.TimedLong(RTC.Time(0,0),0), ringbuf)
-    self.rtobj.registerInPort("in",inp)
+    rtobj.registerInPort("in",inp)
     
-    self.rtobj.deletePort(outp)
-    self.rtobj.deletePort(inp)
+    rtobj.deletePort(outp)
+    rtobj.deletePort(inp)
 
-    self.rtobj.finalizePorts()
+    rtobj.finalizePorts()
     return
-"""
 
+  # since 1.1.0
+  def test_getExecutionContext(self):
+    rtobj = TestComp(self._orb, self._poa)
+    ec_args = "PeriodicExecutionContext"+"?" + "rate=1000"
+    ec=OpenRTM_aist.Manager.instance().createContext(ec_args)
+    ec.bindComponent(rtobj)
+    self.assertNotEqual(rtobj.getExecutionContext(0),None)
+    return
 
+  def test_getExecutionRate(self):
+    rtobj = TestComp(self._orb, self._poa)
+    ec_args = "PeriodicExecutionContext"+"?" + "rate=1000"
+    ec=OpenRTM_aist.Manager.instance().createContext(ec_args)
+    ec.bindComponent(rtobj)
+    self.assertEqual(rtobj.getExecutionRate(0),1000.0)
+    return
 
+  def test_setExecutionRate(self):
+    rtobj = TestComp(self._orb, self._poa)
+    ec_args = "PeriodicExecutionContext"+"?" + "rate=1000"
+    ec=OpenRTM_aist.Manager.instance().createContext(ec_args)
+    ec.bindComponent(rtobj)
+    self.assertEqual(rtobj.setExecutionRate(0,10000),RTC.RTC_OK)
+    self.assertEqual(rtobj.getExecutionRate(0),10000.0)
+    return
 
+  def test_isOwnExecutionContext(self):
+    rtobj = TestComp(self._orb, self._poa)
+    ec_args = "PeriodicExecutionContext"+"?" + "rate=1000"
+    ec=OpenRTM_aist.Manager.instance().createContext(ec_args)
+    ec.bindComponent(rtobj)
+    self.assertEqual(rtobj.isOwnExecutionContext(0),True)
+    return
+
+  def test_activate_deactivate(self):
+    rtobj = TestComp(self._orb, self._poa)
+    ec_args = "PeriodicExecutionContext"+"?" + "rate=1000"
+    ec=OpenRTM_aist.Manager.instance().createContext(ec_args)
+    ec.set_rate(1000.0)
+    ec.bindComponent(rtobj)
+    self.assertEqual(rtobj.activate(0),RTC.RTC_OK)
+    ec.start()
+    time.sleep(0.1)
+    ret = rtobj.deactivate(0)
+    time.sleep(0.1)
+    self.assertEqual(ret,RTC.RTC_OK)
+    ec.stop()
+    return
+
+  def test_reset(self):
+    rtobj = TestComp(self._orb, self._poa)
+    ec_args = "PeriodicExecutionContext"+"?" + "rate=1000"
+    ec=OpenRTM_aist.Manager.instance().createContext(ec_args)
+    ec.bindComponent(rtobj)
+    self.assertEqual(rtobj.activate(0),RTC.RTC_OK)
+    ec.start()
+    ec._comps[0]._sm._sm.goTo(RTC.ERROR_STATE)
+    time.sleep(0.1)
+    self.assertEqual(rtobj.reset(0),RTC.RTC_OK)
+    ec.stop()
+    return
+
+  def test_addRemoveSdoServiceProvider(self):
+    rtobj = TestComp(self._orb, self._poa)
+    prof = SDOPackage.ServiceProfile("id","interface_type",
+                                     OpenRTM_aist.NVUtil.newNV("test","any"),
+                                     SDOPackage.SDOService._nil)
+    prov = MySdoServiceProviderBase()
+    prov.init(rtobj,prof)
+    self.assertEqual(rtobj.addSdoServiceProvider(prof, prov),True)
+    self.assertEqual(rtobj.removeSdoServiceProvider("id"),True)
+    return
+
+  def test_addRemoveSdoServiceConsumer(self):
+    import MySdoServiceConsumer
+    OpenRTM_aist.Manager.instance().load("MySdoServiceConsumer.py",
+                                         "MySdoServiceConsumerInit")
+    rtobj = TestComp(self._orb, self._poa)
+    prof = SDOPackage.ServiceProfile(OpenRTM_aist.toTypename(OpenRTM.ComponentObserver),OpenRTM_aist.toTypename(OpenRTM.ComponentObserver),
+                                     [OpenRTM_aist.NVUtil.newNV("test","any")],
+                                     SDOPackage.SDOService._nil)
+    self.assertEqual(rtobj.addSdoServiceConsumer(prof),True)
+    self.assertEqual(rtobj.removeSdoServiceConsumer(OpenRTM_aist.toTypename(OpenRTM.ComponentObserver)),True)
+    return
+
+  def prelistenerFunc(self, id):
+    print "prelistenerFunc called !!!!"
+    return
+
+  def test_addRemovePreComponentActionListener(self):
+    rtobj = TestComp(self._orb, self._poa)
+
+    rtobj.addPreComponentActionListener(OpenRTM_aist.PreComponentActionListenerType.PRE_ON_INITIALIZE,
+                                        self.prelistenerFunc)
+
+    rtobj.removePreComponentActionListener(OpenRTM_aist.PreComponentActionListenerType.PRE_ON_INITIALIZE,
+                                           self.prelistenerFunc)
+
+    rtobj.addPreComponentActionListener(OpenRTM_aist.PreComponentActionListenerType.PRE_ON_FINALIZE,
+                                        self.prelistenerFunc)
+
+    rtobj.removePreComponentActionListener(OpenRTM_aist.PreComponentActionListenerType.PRE_ON_FINALIZE,
+                                           self.prelistenerFunc)
+    return
+
+  def postlistenerFunc(self, id, ret):
+    print "postlistenerFunc called !!!!"
+    return
+
+  def test_addRemovePostComponentActionListener(self):
+    rtobj = TestComp(self._orb, self._poa)
+
+    rtobj.addPostComponentActionListener(OpenRTM_aist.PostComponentActionListenerType.POST_ON_FINALIZE,
+                                         self.postlistenerFunc)
+
+    rtobj.removePostComponentActionListener(OpenRTM_aist.PostComponentActionListenerType.POST_ON_FINALIZE,
+                                            self.postlistenerFunc)
+    return
+
+  def test_addRemovePortActionListener(self):
+    rtobj = TestComp(self._orb, self._poa)
+
+    rtobj.addPortActionListener(OpenRTM_aist.PortActionListenerType.ADD_PORT,
+                                self.prelistenerFunc)
+
+    rtobj.removePortActionListener(OpenRTM_aist.PortActionListenerType.ADD_PORT,
+                                   self.prelistenerFunc)
+    return
+
+  def test_addRemoveExecutionContextActionListener(self):
+    rtobj = TestComp(self._orb, self._poa)
+
+    rtobj.addExecutionContextActionListener(OpenRTM_aist.ExecutionContextActionListenerType.EC_ATTACHED,
+                                            self.prelistenerFunc)
+
+    rtobj.removeExecutionContextActionListener(OpenRTM_aist.ExecutionContextActionListenerType.EC_ATTACHED,
+                                            self.prelistenerFunc)
+    return
+
+  def test_addRemovePortConnectListener(self):
+    rtobj = TestComp(self._orb, self._poa)
+
+    rtobj.addPortConnectListener(OpenRTM_aist.PortConnectListenerType.ON_NOTIFY_CONNECT,
+                                 self.postlistenerFunc)
+
+    rtobj.removePortConnectListener(OpenRTM_aist.PortConnectListenerType.ON_NOTIFY_CONNECT,
+                                    self.postlistenerFunc)
+    return
+
+  def portconretlistenerFunc(self, pname, cprof, ret):
+    print "portconretlistenerFunc called !!!!"
+    return
+
+  def test_addRemovePortConnectRetListener(self):
+    rtobj = TestComp(self._orb, self._poa)
+
+    rtobj.addPortConnectRetListener(OpenRTM_aist.PortConnectRetListenerType.ON_CONNECTED,
+                                    self.portconretlistenerFunc)
+
+    rtobj.removePortConnectRetListener(OpenRTM_aist.PortConnectRetListenerType.ON_CONNECTED,
+                                       self.portconretlistenerFunc)
+    return
+
+  def configparamlistenerFunc(self, pname, cprof, ret):
+    print "configparamlistenerFunc called !!!!"
+    return
+
+  def test_addRemoveConfigurationParamListener(self):
+    rtobj = TestComp(self._orb, self._poa)
+
+    rtobj.addConfigurationParamListener(OpenRTM_aist.ConfigurationParamListenerType.ON_UPDATE_CONFIG_PARAM,
+                                        self.configparamlistenerFunc)
+
+    rtobj.removeConfigurationParamListener(OpenRTM_aist.ConfigurationParamListenerType.ON_UPDATE_CONFIG_PARAM,
+                                           self.configparamlistenerFunc)
+    return
+
+  def test_addRemoveConfigurationSetListener(self):
+    rtobj = TestComp(self._orb, self._poa)
+
+    rtobj.addConfigurationSetListener(OpenRTM_aist.ConfigurationSetListenerType.ON_SET_CONFIG_SET,
+                                      self.prelistenerFunc)
+
+    rtobj.removeConfigurationSetListener(OpenRTM_aist.ConfigurationSetListenerType.ON_SET_CONFIG_SET,
+                                         self.prelistenerFunc)
+    return
+
+  def test_addRemoveConfigurationSetNameListener(self):
+    rtobj = TestComp(self._orb, self._poa)
+
+    rtobj.addConfigurationSetNameListener(OpenRTM_aist.ConfigurationSetNameListenerType.ON_UPDATE_CONFIG_SET,
+                                          self.prelistenerFunc)
+
+    rtobj.removeConfigurationSetNameListener(OpenRTM_aist.ConfigurationSetNameListenerType.ON_UPDATE_CONFIG_SET,
+                                             self.prelistenerFunc)
+    return
+
+  def test_shutdown(self):
+    return
+
+  def test_preOnInitialize(self):
+    rtobj = TestComp(self._orb, self._poa)
+    ec_args = "PeriodicExecutionContext"+"?" + "rate=1000"
+    ec=OpenRTM_aist.Manager.instance().createContext(ec_args)
+    ec.bindComponent(rtobj)
+    print "preOnInitialize()"
+    rtobj.preOnInitialize(0)
+    return
+
+  def test_preOnFinalize(self):
+    rtobj = TestComp(self._orb, self._poa)
+    ec_args = "PeriodicExecutionContext"+"?" + "rate=1000"
+    ec=OpenRTM_aist.Manager.instance().createContext(ec_args)
+    ec.bindComponent(rtobj)
+    rtobj.preOnFinalize(0)
+    return
+
+  def test_preOnStartup(self):
+    rtobj = TestComp(self._orb, self._poa)
+    ec_args = "PeriodicExecutionContext"+"?" + "rate=1000"
+    ec=OpenRTM_aist.Manager.instance().createContext(ec_args)
+    ec.bindComponent(rtobj)
+    rtobj.preOnStartup(0)
+    return
+
+  def test_preOnShutdown(self):
+    rtobj = TestComp(self._orb, self._poa)
+    ec_args = "PeriodicExecutionContext"+"?" + "rate=1000"
+    ec=OpenRTM_aist.Manager.instance().createContext(ec_args)
+    ec.bindComponent(rtobj)
+    rtobj.preOnShutdown(0)
+    return
+
+  def test_preOnActivated(self):
+    rtobj = TestComp(self._orb, self._poa)
+    ec_args = "PeriodicExecutionContext"+"?" + "rate=1000"
+    ec=OpenRTM_aist.Manager.instance().createContext(ec_args)
+    ec.bindComponent(rtobj)
+    rtobj.preOnActivated(0)
+    return
+
+  def test_preOnDeactivated(self):
+    rtobj = TestComp(self._orb, self._poa)
+    ec_args = "PeriodicExecutionContext"+"?" + "rate=1000"
+    ec=OpenRTM_aist.Manager.instance().createContext(ec_args)
+    ec.bindComponent(rtobj)
+    rtobj.preOnDeactivated(0)
+    return
+
+  def test_preOnAborting(self):
+    rtobj = TestComp(self._orb, self._poa)
+    ec_args = "PeriodicExecutionContext"+"?" + "rate=1000"
+    ec=OpenRTM_aist.Manager.instance().createContext(ec_args)
+    ec.bindComponent(rtobj)
+    rtobj.preOnAborting(0)
+    return
+
+  def test_preOnError(self):
+    rtobj = TestComp(self._orb, self._poa)
+    ec_args = "PeriodicExecutionContext"+"?" + "rate=1000"
+    ec=OpenRTM_aist.Manager.instance().createContext(ec_args)
+    ec.bindComponent(rtobj)
+    rtobj.preOnError(0)
+    return
+
+  def test_preOnReset(self):
+    rtobj = TestComp(self._orb, self._poa)
+    ec_args = "PeriodicExecutionContext"+"?" + "rate=1000"
+    ec=OpenRTM_aist.Manager.instance().createContext(ec_args)
+    ec.bindComponent(rtobj)
+    rtobj.preOnReset(0)
+    return
+
+  def test_preOnExecute(self):
+    rtobj = TestComp(self._orb, self._poa)
+    ec_args = "PeriodicExecutionContext"+"?" + "rate=1000"
+    ec=OpenRTM_aist.Manager.instance().createContext(ec_args)
+    ec.bindComponent(rtobj)
+    rtobj.preOnExecute(0)
+    return
+
+  def test_preOnStateUpdate(self):
+    rtobj = TestComp(self._orb, self._poa)
+    ec_args = "PeriodicExecutionContext"+"?" + "rate=1000"
+    ec=OpenRTM_aist.Manager.instance().createContext(ec_args)
+    ec.bindComponent(rtobj)
+    rtobj.preOnStateUpdate(0)
+    return
+
+  def test_preOnRateChanged(self):
+    rtobj = TestComp(self._orb, self._poa)
+    ec_args = "PeriodicExecutionContext"+"?" + "rate=1000"
+    ec=OpenRTM_aist.Manager.instance().createContext(ec_args)
+    ec.bindComponent(rtobj)
+    rtobj.preOnRateChanged(0)
+    return
+
+  def test_postOnInitialize(self):
+    rtobj = TestComp(self._orb, self._poa)
+    ec_args = "PeriodicExecutionContext"+"?" + "rate=1000"
+    ec=OpenRTM_aist.Manager.instance().createContext(ec_args)
+    ec.bindComponent(rtobj)
+    rtobj.postOnInitialize(0,True)
+    return
+
+  def test_postOnFinalize(self):
+    rtobj = TestComp(self._orb, self._poa)
+    ec_args = "PeriodicExecutionContext"+"?" + "rate=1000"
+    ec=OpenRTM_aist.Manager.instance().createContext(ec_args)
+    ec.bindComponent(rtobj)
+    rtobj.postOnFinalize(0,True)
+    return
+
+  def test_postOnStartup(self):
+    rtobj = TestComp(self._orb, self._poa)
+    ec_args = "PeriodicExecutionContext"+"?" + "rate=1000"
+    ec=OpenRTM_aist.Manager.instance().createContext(ec_args)
+    ec.bindComponent(rtobj)
+    rtobj.postOnStartup(0,True)
+    return
+
+  def test_postOnShutdown(self):
+    rtobj = TestComp(self._orb, self._poa)
+    ec_args = "PeriodicExecutionContext"+"?" + "rate=1000"
+    ec=OpenRTM_aist.Manager.instance().createContext(ec_args)
+    ec.bindComponent(rtobj)
+    rtobj.postOnShutdown(0,True)
+    return
+
+  def test_postOnActivated(self):
+    rtobj = TestComp(self._orb, self._poa)
+    ec_args = "PeriodicExecutionContext"+"?" + "rate=1000"
+    ec=OpenRTM_aist.Manager.instance().createContext(ec_args)
+    ec.bindComponent(rtobj)
+    rtobj.postOnActivated(0,True)
+    return
+
+  def test_postOnDeactivated(self):
+    rtobj = TestComp(self._orb, self._poa)
+    ec_args = "PeriodicExecutionContext"+"?" + "rate=1000"
+    ec=OpenRTM_aist.Manager.instance().createContext(ec_args)
+    ec.bindComponent(rtobj)
+    rtobj.postOnDeactivated(0,True)
+    return
+
+  def test_postOnAborting(self):
+    rtobj = TestComp(self._orb, self._poa)
+    ec_args = "PeriodicExecutionContext"+"?" + "rate=1000"
+    ec=OpenRTM_aist.Manager.instance().createContext(ec_args)
+    ec.bindComponent(rtobj)
+    rtobj.postOnAborting(0,True)
+    return
+
+  def test_postOnError(self):
+    rtobj = TestComp(self._orb, self._poa)
+    ec_args = "PeriodicExecutionContext"+"?" + "rate=1000"
+    ec=OpenRTM_aist.Manager.instance().createContext(ec_args)
+    ec.bindComponent(rtobj)
+    rtobj.postOnError(0,True)
+    return
+
+  def test_postOnReset(self):
+    rtobj = TestComp(self._orb, self._poa)
+    ec_args = "PeriodicExecutionContext"+"?" + "rate=1000"
+    ec=OpenRTM_aist.Manager.instance().createContext(ec_args)
+    ec.bindComponent(rtobj)
+    rtobj.postOnReset(0,True)
+    return
+
+  def test_postOnExecute(self):
+    rtobj = TestComp(self._orb, self._poa)
+    ec_args = "PeriodicExecutionContext"+"?" + "rate=1000"
+    ec=OpenRTM_aist.Manager.instance().createContext(ec_args)
+    ec.bindComponent(rtobj)
+    rtobj.postOnExecute(0,True)
+    return
+
+  def test_postOnStateUpdate(self):
+    rtobj = TestComp(self._orb, self._poa)
+    ec_args = "PeriodicExecutionContext"+"?" + "rate=1000"
+    ec=OpenRTM_aist.Manager.instance().createContext(ec_args)
+    ec.bindComponent(rtobj)
+    rtobj.postOnStateUpdate(0,True)
+    return
+
+  def test_postOnRateChanged(self):
+    rtobj = TestComp(self._orb, self._poa)
+    ec_args = "PeriodicExecutionContext"+"?" + "rate=1000"
+    ec=OpenRTM_aist.Manager.instance().createContext(ec_args)
+    ec.bindComponent(rtobj)
+    rtobj.postOnRateChanged(0,True)
+    return
+
+  def test_onAddPort(self):
+    rtobj = TestComp(self._orb, self._poa)
+    ec_args = "PeriodicExecutionContext"+"?" + "rate=1000"
+    ec=OpenRTM_aist.Manager.instance().createContext(ec_args)
+    ec.bindComponent(rtobj)
+    rtobj.onAddPort(0)
+    return
+
+  def test_onRemovePort(self):
+    rtobj = TestComp(self._orb, self._poa)
+    ec_args = "PeriodicExecutionContext"+"?" + "rate=1000"
+    ec=OpenRTM_aist.Manager.instance().createContext(ec_args)
+    ec.bindComponent(rtobj)
+    rtobj.onRemovePort(0)
+    return
+
+  def test_onAttachExecutionContext(self):
+    rtobj = TestComp(self._orb, self._poa)
+    ec_args = "PeriodicExecutionContext"+"?" + "rate=1000"
+    ec=OpenRTM_aist.Manager.instance().createContext(ec_args)
+    ec.bindComponent(rtobj)
+    rtobj.onAttachExecutionContext(0)
+    return
+
+  def test_onDetachExecutionContext(self):
+    rtobj = TestComp(self._orb, self._poa)
+    ec_args = "PeriodicExecutionContext"+"?" + "rate=1000"
+    ec=OpenRTM_aist.Manager.instance().createContext(ec_args)
+    ec.bindComponent(rtobj)
+    rtobj.onDetachExecutionContext(0)
+    return
+
+
 ############### test #################
 if __name__ == '__main__':
   unittest.main()

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_RingBuffer.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_RingBuffer.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_RingBuffer.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -27,155 +27,158 @@
 
 class TestRingBuffer(unittest.TestCase):
 
-	def setUp(self):
-		self._rb = RingBuffer()
+  def setUp(self):
+    self._rb = RingBuffer()
 
+  def tearDown(self):
+    OpenRTM_aist.Manager.instance().shutdownManager()
+    return
 
-	def test_init(self):
-		prop = OpenRTM_aist.Properties()
-		prop.setProperty("length","5")
-		prop.setProperty("write.full_policy","overwrite")
-		#prop.setProperty("write.full_policy","do_nothing")
-		#prop.setProperty("write.full_policy","block")
-		prop.setProperty("write.timeout","5.0")
-		prop.setProperty("read.full_policy","overwrite")
-		#prop.setProperty("read.full_policy","do_nothing")
-		#prop.setProperty("read.full_policy","block")
-		prop.setProperty("read.timeout","5.0")
-		self._rb.init(prop)
-		self.assertEqual(self._rb.length(),5)
-		return
+  def test_init(self):
+    prop = OpenRTM_aist.Properties()
+    prop.setProperty("length","5")
+    prop.setProperty("write.full_policy","overwrite")
+    #prop.setProperty("write.full_policy","do_nothing")
+    #prop.setProperty("write.full_policy","block")
+    prop.setProperty("write.timeout","5.0")
+    prop.setProperty("read.full_policy","overwrite")
+    #prop.setProperty("read.full_policy","do_nothing")
+    #prop.setProperty("read.full_policy","block")
+    prop.setProperty("read.timeout","5.0")
+    self._rb.init(prop)
+    self.assertEqual(self._rb.length(),5)
+    return
 
-	def test_length(self):
-		self.assertEqual(self._rb.length(), 8)
-		self.assertEqual(self._rb.length(7), OpenRTM_aist.BufferStatus.BUFFER_OK)
-		self.assertEqual(self._rb.length(), 7)
-		self.assertEqual(self._rb.length(0), OpenRTM_aist.BufferStatus.NOT_SUPPORTED)
-		self.assertEqual(self._rb.length(-1), OpenRTM_aist.BufferStatus.NOT_SUPPORTED)
-		self.assertEqual(self._rb.length(1), OpenRTM_aist.BufferStatus.BUFFER_OK)
-		self.assertEqual(self._rb.length(), 1)
-		return
+  def test_length(self):
+    self.assertEqual(self._rb.length(), 8)
+    self.assertEqual(self._rb.length(7), OpenRTM_aist.BufferStatus.BUFFER_OK)
+    self.assertEqual(self._rb.length(), 7)
+    self.assertEqual(self._rb.length(0), OpenRTM_aist.BufferStatus.NOT_SUPPORTED)
+    self.assertEqual(self._rb.length(-1), OpenRTM_aist.BufferStatus.NOT_SUPPORTED)
+    self.assertEqual(self._rb.length(1), OpenRTM_aist.BufferStatus.BUFFER_OK)
+    self.assertEqual(self._rb.length(), 1)
+    return
 
 
-	def test_reset(self):
-		prop = OpenRTM_aist.Properties()
-		prop.setProperty("length","5")
-		prop.setProperty("write.full_policy","overwrite")
-		#prop.setProperty("write.full_policy","do_nothing")
-		#prop.setProperty("write.full_policy","block")
-		prop.setProperty("write.timeout","5.0")
-		prop.setProperty("read.full_policy","overwrite")
-		#prop.setProperty("read.full_policy","do_nothing")
-		#prop.setProperty("read.full_policy","block")
-		prop.setProperty("read.timeout","5.0")
-		self._rb.init(prop)
-		self.assertEqual(self._rb.write(123), OpenRTM_aist.BufferStatus.BUFFER_OK)
-		value = [None]
-		self.assertEqual(self._rb.read(value),OpenRTM_aist.BufferStatus.BUFFER_OK)
-		self.assertEqual(value[0],123)
-		self._rb.reset()
-		self.assertEqual(self._rb.read(value),OpenRTM_aist.BufferStatus.BUFFER_EMPTY)
-		self.assertEqual(value[0],123)
+  def test_reset(self):
+    prop = OpenRTM_aist.Properties()
+    prop.setProperty("length","5")
+    prop.setProperty("write.full_policy","overwrite")
+    #prop.setProperty("write.full_policy","do_nothing")
+    #prop.setProperty("write.full_policy","block")
+    prop.setProperty("write.timeout","5.0")
+    prop.setProperty("read.full_policy","overwrite")
+    #prop.setProperty("read.full_policy","do_nothing")
+    #prop.setProperty("read.full_policy","block")
+    prop.setProperty("read.timeout","5.0")
+    self._rb.init(prop)
+    self.assertEqual(self._rb.write(123), OpenRTM_aist.BufferStatus.BUFFER_OK)
+    value = [None]
+    self.assertEqual(self._rb.read(value),OpenRTM_aist.BufferStatus.BUFFER_OK)
+    self.assertEqual(value[0],123)
+    self._rb.reset()
+    self.assertEqual(self._rb.read(value),OpenRTM_aist.BufferStatus.BUFFER_EMPTY)
+    self.assertEqual(value[0],123)
 
-		return
+    return
 
-	def test_write(self):
-		data=[0]
-		self.assertEqual(self._rb.write(1),OpenRTM_aist.BufferStatus.BUFFER_OK)
-		self._rb.read(data)
-		self.assertEqual(data[0],1)
+  def test_write(self):
+    data=[0]
+    self.assertEqual(self._rb.write(1),OpenRTM_aist.BufferStatus.BUFFER_OK)
+    self._rb.read(data)
+    self.assertEqual(data[0],1)
 
-		self.assertEqual(self._rb.write(2),OpenRTM_aist.BufferStatus.BUFFER_OK)
-		self._rb.read(data)
-		self.assertEqual(data[0],2)
+    self.assertEqual(self._rb.write(2),OpenRTM_aist.BufferStatus.BUFFER_OK)
+    self._rb.read(data)
+    self.assertEqual(data[0],2)
 
-		self.assertEqual(self._rb.write(3),OpenRTM_aist.BufferStatus.BUFFER_OK)
-		self._rb.read(data)
-		self.assertEqual(data[0],3)
+    self.assertEqual(self._rb.write(3),OpenRTM_aist.BufferStatus.BUFFER_OK)
+    self._rb.read(data)
+    self.assertEqual(data[0],3)
 
-		self.assertEqual(self._rb.write(4),OpenRTM_aist.BufferStatus.BUFFER_OK)
-		self._rb.read(data)
-		self.assertEqual(data[0],4)
+    self.assertEqual(self._rb.write(4),OpenRTM_aist.BufferStatus.BUFFER_OK)
+    self._rb.read(data)
+    self.assertEqual(data[0],4)
 
-		self.assertEqual(self._rb.write(5),OpenRTM_aist.BufferStatus.BUFFER_OK)
-		self._rb.read(data)
-		self.assertEqual(data[0],5)
+    self.assertEqual(self._rb.write(5),OpenRTM_aist.BufferStatus.BUFFER_OK)
+    self._rb.read(data)
+    self.assertEqual(data[0],5)
 
-		self.assertEqual(self._rb.write(6),OpenRTM_aist.BufferStatus.BUFFER_OK)
-		self._rb.read(data)
-		self.assertEqual(data[0],6)
+    self.assertEqual(self._rb.write(6),OpenRTM_aist.BufferStatus.BUFFER_OK)
+    self._rb.read(data)
+    self.assertEqual(data[0],6)
 
-		self.assertEqual(self._rb.write("string"),OpenRTM_aist.BufferStatus.BUFFER_OK)
-		self._rb.read(data)
-		self.assertEqual(data[0],"string")
+    self.assertEqual(self._rb.write("string"),OpenRTM_aist.BufferStatus.BUFFER_OK)
+    self._rb.read(data)
+    self.assertEqual(data[0],"string")
 
-		self.assertEqual(self._rb.write([1,2,3]),OpenRTM_aist.BufferStatus.BUFFER_OK)
-		self._rb.read(data)
-		self.assertEqual(data[0],[1,2,3])
+    self.assertEqual(self._rb.write([1,2,3]),OpenRTM_aist.BufferStatus.BUFFER_OK)
+    self._rb.read(data)
+    self.assertEqual(data[0],[1,2,3])
 
-		self.assertEqual(self._rb.write(0.12345),OpenRTM_aist.BufferStatus.BUFFER_OK)
-		self._rb.read(data)
-		self.assertEqual(data[0],0.12345)
+    self.assertEqual(self._rb.write(0.12345),OpenRTM_aist.BufferStatus.BUFFER_OK)
+    self._rb.read(data)
+    self.assertEqual(data[0],0.12345)
 
-		for i in range(8):
-			self.assertEqual(self._rb.write(0.12345,1,0),OpenRTM_aist.BufferStatus.BUFFER_OK)
-		self.assertEqual(self._rb.write(0.12345,1,0),OpenRTM_aist.BufferStatus.TIMEOUT)
+    for i in range(8):
+      self.assertEqual(self._rb.write(0.12345,1,0),OpenRTM_aist.BufferStatus.BUFFER_OK)
+    self.assertEqual(self._rb.write(0.12345,1,0),OpenRTM_aist.BufferStatus.TIMEOUT)
 
-	def test_read(self):
-		data=[0]
-		self.assertEqual(self._rb.read(data,1,0),OpenRTM_aist.BufferStatus.TIMEOUT)
-		self.assertEqual(self._rb.write("string"),OpenRTM_aist.BufferStatus.BUFFER_OK)
-		# Failure pattern (parameter must be List object.)
-		# data=0
-		# self._rb.read(data)
-		self.assertEqual(self._rb.read(data),OpenRTM_aist.BufferStatus.BUFFER_OK)
-		self.assertEqual(data[0],"string")
-		self.assertEqual(self._rb.read(data,1,0),OpenRTM_aist.BufferStatus.TIMEOUT)
+  def test_read(self):
+    data=[0]
+    self.assertEqual(self._rb.read(data,1,0),OpenRTM_aist.BufferStatus.TIMEOUT)
+    self.assertEqual(self._rb.write("string"),OpenRTM_aist.BufferStatus.BUFFER_OK)
+    # Failure pattern (parameter must be List object.)
+    # data=0
+    # self._rb.read(data)
+    self.assertEqual(self._rb.read(data),OpenRTM_aist.BufferStatus.BUFFER_OK)
+    self.assertEqual(data[0],"string")
+    self.assertEqual(self._rb.read(data,1,0),OpenRTM_aist.BufferStatus.TIMEOUT)
 
-	def test_readable(self):
-		data=[0]
-		self.assertEqual(self._rb.readable(),0)
-		self.assertEqual(self._rb.write("string"),OpenRTM_aist.BufferStatus.BUFFER_OK)
-		self.assertEqual(self._rb.readable(),1)
-		self.assertEqual(self._rb.read(data),OpenRTM_aist.BufferStatus.BUFFER_OK)
-		self.assertEqual(self._rb.readable(),0)
-		self._rb.read(data)
-		self.assertEqual(self._rb.readable(),0)
-		
-	def test_empty(self):
-		data=[0]
-		self.assertEqual(self._rb.empty(),True)
-		self.assertEqual(self._rb.write("string"),OpenRTM_aist.BufferStatus.BUFFER_OK)
-		self.assertEqual(self._rb.empty(),False)
-		self.assertEqual(self._rb.read(data),OpenRTM_aist.BufferStatus.BUFFER_OK)
-		self.assertEqual(self._rb.empty(),True)
-		self._rb.read(data)
-		self.assertEqual(self._rb.empty(),True)
-		
-	def COMMENTtest_isFull(self):
-		self.assertEqual(self._rb.isFull(),False)
+  def test_readable(self):
+    data=[0]
+    self.assertEqual(self._rb.readable(),0)
+    self.assertEqual(self._rb.write("string"),OpenRTM_aist.BufferStatus.BUFFER_OK)
+    self.assertEqual(self._rb.readable(),1)
+    self.assertEqual(self._rb.read(data),OpenRTM_aist.BufferStatus.BUFFER_OK)
+    self.assertEqual(self._rb.readable(),0)
+    self._rb.read(data)
+    self.assertEqual(self._rb.readable(),0)
+    
+  def test_empty(self):
+    data=[0]
+    self.assertEqual(self._rb.empty(),True)
+    self.assertEqual(self._rb.write("string"),OpenRTM_aist.BufferStatus.BUFFER_OK)
+    self.assertEqual(self._rb.empty(),False)
+    self.assertEqual(self._rb.read(data),OpenRTM_aist.BufferStatus.BUFFER_OK)
+    self.assertEqual(self._rb.empty(),True)
+    self._rb.read(data)
+    self.assertEqual(self._rb.empty(),True)
+    
+  def COMMENTtest_isFull(self):
+    self.assertEqual(self._rb.isFull(),False)
 
 
-	def COMMENTtest_isEmpty(self):
-		self.assertEqual(self._rb.isEmpty(),True)
-		self._rb.init(0)
-		self.assertEqual(self._rb.isEmpty(),False)
+  def COMMENTtest_isEmpty(self):
+    self.assertEqual(self._rb.isEmpty(),True)
+    self._rb.init(0)
+    self.assertEqual(self._rb.isEmpty(),False)
 
 
-	def COMMENTtest_isNew(self):
-		self.assertEqual(self._rb.isNew(),False)
-		self._rb.init(0)
-		self.assertEqual(self._rb.isNew(),True)
-		data=[0]
-		self._rb.read(data)
-		self.assertEqual(self._rb.isNew(),False)
+  def COMMENTtest_isNew(self):
+    self.assertEqual(self._rb.isNew(),False)
+    self._rb.init(0)
+    self.assertEqual(self._rb.isNew(),True)
+    data=[0]
+    self._rb.read(data)
+    self.assertEqual(self._rb.isNew(),False)
 
-		self.assertEqual(self._rb.write(0.12345),OpenRTM_aist.BufferStatus.BUFFER_OK)
-		self.assertEqual(self._rb.write(0.12345),OpenRTM_aist.BufferStatus.BUFFER_OK)
-		self.assertEqual(self._rb.write(0.12345),OpenRTM_aist.BufferStatus.BUFFER_OK)
-		self.assertEqual(self._rb.isNew(),True)
-		self.assertEqual(self._rb.isNew(),True)
-		self.assertEqual(self._rb.isNew(),True)
+    self.assertEqual(self._rb.write(0.12345),OpenRTM_aist.BufferStatus.BUFFER_OK)
+    self.assertEqual(self._rb.write(0.12345),OpenRTM_aist.BufferStatus.BUFFER_OK)
+    self.assertEqual(self._rb.write(0.12345),OpenRTM_aist.BufferStatus.BUFFER_OK)
+    self.assertEqual(self._rb.isNew(),True)
+    self.assertEqual(self._rb.isNew(),True)
+    self.assertEqual(self._rb.isNew(),True)
 
 
 ############### test #################

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_SdoConfiguration.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_SdoConfiguration.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_SdoConfiguration.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -29,169 +29,172 @@
 from omniORB import CORBA, PortableServer
 
 class ServiceProf(SDOPackage__POA.SDOService):
-	def __init__(self):
-		pass
+  def __init__(self):
+    pass
 
 class OrganizationTest(SDOPackage__POA.Organization):
-	def __init__(self):
-		pass
+  def __init__(self):
+    pass
 
 
 configsample_spec = ["implementation_id", "ConfigSample",
-					 "type_name",         "ConfigSample",
-					 "description",       "Configuration example component",
-					 "version",           "1.0",
-					 "vendor",            "Shinji Kurihara, AIST",
-					 "category",          "example",
-					 "activity_type",     "DataFlowComponent",
-					 "max_instance",      "10",
-					 "language",          "C++",
-					 "lang_type",         "compile",
-					 # Configuration variables
-					 "conf.default.int_param0", "0",
-					 "conf.default.int_param1", "1",
-					 "conf.default.double_param0", "0.11",
-					 "conf.default.double_param1", "9.9",
-					 "conf.default.str_param0", "hoge",
-					 "conf.default.str_param1", "dara",
-					 "conf.default.vector_param0", "0.0,1.0,2.0,3.0,4.0",
-					 ""]
+           "type_name",         "ConfigSample",
+           "description",       "Configuration example component",
+           "version",           "1.0",
+           "vendor",            "Shinji Kurihara, AIST",
+           "category",          "example",
+           "activity_type",     "DataFlowComponent",
+           "max_instance",      "10",
+           "language",          "C++",
+           "lang_type",         "compile",
+           # Configuration variables
+           "conf.default.int_param0", "0",
+           "conf.default.int_param1", "1",
+           "conf.default.double_param0", "0.11",
+           "conf.default.double_param1", "9.9",
+           "conf.default.str_param0", "hoge",
+           "conf.default.str_param1", "dara",
+           "conf.default.vector_param0", "0.0,1.0,2.0,3.0,4.0",
+           ""]
 
 configsample_mode_spec = ["conf.default.int_param0", "10",
-						  "conf.default.int_param1", "11",
-						  "conf.default.double_param0", "0.22",
-						  "conf.default.double_param1", "9999.9",
-						  "conf.default.str_param0", "hogehoge",
-						  "conf.default.str_param1", "daradaradata",
-						  "conf.default.vector_param0", "0.1,1.1,2.1,3.1,4.1",
-						  ""]
+              "conf.default.int_param1", "11",
+              "conf.default.double_param0", "0.22",
+              "conf.default.double_param1", "9999.9",
+              "conf.default.str_param0", "hogehoge",
+              "conf.default.str_param1", "daradaradata",
+              "conf.default.vector_param0", "0.1,1.1,2.1,3.1,4.1",
+              ""]
 
 
 class TestConfiguration_impl(unittest.TestCase):
-	def setUp(self):
-		self._orb = CORBA.ORB_init()
-		self._poa = self._orb.resolve_initial_references("RootPOA")
-		
-		prop = OpenRTM_aist.Properties(defaults_str=configsample_spec)
-		ca   = OpenRTM_aist.ConfigAdmin(prop.getNode("conf"))
-		self._sdoconf = Configuration_impl(ca)
+  def setUp(self):
+    self._orb = CORBA.ORB_init()
+    self._poa = self._orb.resolve_initial_references("RootPOA")
+    
+    prop = OpenRTM_aist.Properties(defaults_str=configsample_spec)
+    ca   = OpenRTM_aist.ConfigAdmin(prop.getNode("conf"))
+    self._sdoconf = Configuration_impl(ca)
 
+  def tearDown(self):
+    OpenRTM_aist.Manager.instance().shutdownManager()
+    return
 
-	def test_set_device_profile(self):
-		dprof = SDOPackage.DeviceProfile("test","","","0.1.0",[])
-		self._sdoconf.set_device_profile(dprof)
-		self.assertEqual(self._sdoconf.getDeviceProfile().device_type, "test")
-		self.assertEqual(self._sdoconf.getDeviceProfile().version, "0.1.0")
-		
-		self.assertRaises(SDOPackage.InvalidParameter, self._sdoconf.set_device_profile, None )
+  def test_set_device_profile(self):
+    dprof = SDOPackage.DeviceProfile("test","","","0.1.0",[])
+    self._sdoconf.set_device_profile(dprof)
+    self.assertEqual(self._sdoconf.getDeviceProfile().device_type, "test")
+    self.assertEqual(self._sdoconf.getDeviceProfile().version, "0.1.0")
+    
+    self.assertRaises(SDOPackage.InvalidParameter, self._sdoconf.set_device_profile, None )
 
 
-	def test_add_service_profile(self):
-		sprof = SDOPackage.ServiceProfile("test","MyService",[],ServiceProf())
-		self._sdoconf.add_service_profile(sprof)
-		profiles = self._sdoconf.getServiceProfiles()
-		self.assertEqual(profiles[0].id, "test")
-		self.assertEqual(self._sdoconf.getServiceProfile("test").id, "test")
-		self._sdoconf.remove_service_profile("test")
-		self.assertEqual(self._sdoconf.getServiceProfile("test").id, "")
+  def test_add_service_profile(self):
+    sprof = SDOPackage.ServiceProfile("test","MyService",[],ServiceProf())
+    self._sdoconf.add_service_profile(sprof)
+    profiles = self._sdoconf.getServiceProfiles()
+    self.assertEqual(profiles[0].id, "test")
+    self.assertEqual(self._sdoconf.getServiceProfile("test").id, "test")
+    self._sdoconf.remove_service_profile("test")
+    self.assertEqual(self._sdoconf.getServiceProfile("test").id, "")
 
-		self.assertRaises(SDOPackage.InvalidParameter, self._sdoconf.add_service_profile, None )
-		self.assertRaises(SDOPackage.InvalidParameter, self._sdoconf.remove_service_profile, None )
+    self.assertRaises(SDOPackage.InvalidParameter, self._sdoconf.add_service_profile, None )
+    self.assertRaises(SDOPackage.InvalidParameter, self._sdoconf.remove_service_profile, None )
 
-		# Failure pattern
-		#self.assertEqual(self._sdoconf.getServiceProfile("test").id, "test")
+    # Failure pattern
+    #self.assertEqual(self._sdoconf.getServiceProfile("test").id, "test")
 
-	def test_add_organization(self):
-		org = OrganizationTest()
-		self._sdoconf.add_organization(org)
-		self._sdoconf.add_organization(org)
-		self._sdoconf.add_organization(org)
-		self.assertEqual(len(self._sdoconf.getOrganizations()), 3)
+  def test_add_organization(self):
+    org = OrganizationTest()
+    self._sdoconf.add_organization(org)
+    self._sdoconf.add_organization(org)
+    self._sdoconf.add_organization(org)
+    self.assertEqual(len(self._sdoconf.getOrganizations()), 3)
 
-		self.assertRaises(SDOPackage.InvalidParameter, self._sdoconf.add_organization, None )
-		self.assertRaises(SDOPackage.InternalError, self._sdoconf.remove_organization, "aaa" )
-		self.assertRaises(SDOPackage.InvalidParameter, self._sdoconf.remove_organization, None )
+    self.assertRaises(SDOPackage.InvalidParameter, self._sdoconf.add_organization, None )
+    self.assertRaises(SDOPackage.InternalError, self._sdoconf.remove_organization, "aaa" )
+    self.assertRaises(SDOPackage.InvalidParameter, self._sdoconf.remove_organization, None )
 
 
-	def test_get_configuration_parameters(self):
-		self._sdoconf.get_configuration_parameters()
+  def test_get_configuration_parameters(self):
+    self._sdoconf.get_configuration_parameters()
 
 
-	def test_get_configuration_parameter_values(self):
-		param_val = self._sdoconf.get_configuration_parameter_values()
-		self.assertEqual(param_val, [])
+  def test_get_configuration_parameter_values(self):
+    param_val = self._sdoconf.get_configuration_parameter_values()
+    self.assertEqual(param_val, [])
 
-	def test_get_configuration_parameter_value(self):
-		param_val = self._sdoconf.get_configuration_parameter_value("aaa")
-		self.assertEqual(param_val, None)
-		
-		self.assertRaises(SDOPackage.InvalidParameter, self._sdoconf.get_configuration_parameter_value, None )
+  def test_get_configuration_parameter_value(self):
+    param_val = self._sdoconf.get_configuration_parameter_value("aaa")
+    self.assertEqual(param_val, None)
+    
+    self.assertRaises(SDOPackage.InvalidParameter, self._sdoconf.get_configuration_parameter_value, None )
 
 
-	def test_set_configuration_parameter(self):
-		self.assertEqual(self._sdoconf.set_configuration_parameter("name",123), True)
-		self.assertRaises(SDOPackage.InvalidParameter, self._sdoconf.set_configuration_parameter, None,None )
-		self.assertRaises(SDOPackage.InvalidParameter, self._sdoconf.set_configuration_parameter, "name",None )
-		self.assertRaises(SDOPackage.InvalidParameter, self._sdoconf.set_configuration_parameter, None,123 )
+  def test_set_configuration_parameter(self):
+    self.assertEqual(self._sdoconf.set_configuration_parameter("name",123), True)
+    self.assertRaises(SDOPackage.InvalidParameter, self._sdoconf.set_configuration_parameter, None,None )
+    self.assertRaises(SDOPackage.InvalidParameter, self._sdoconf.set_configuration_parameter, "name",None )
+    self.assertRaises(SDOPackage.InvalidParameter, self._sdoconf.set_configuration_parameter, None,123 )
 
-	def test_get_configuration_sets(self):
-		conf_sets = self._sdoconf.get_configuration_sets()
-		self.assertEqual(len(conf_sets), 1)
+  def test_get_configuration_sets(self):
+    conf_sets = self._sdoconf.get_configuration_sets()
+    self.assertEqual(len(conf_sets), 1)
 
 
-	def test_get_configuration_set(self):
-		conf_set = self._sdoconf.get_configuration_set("default")
-		self.assertEqual(conf_set.configuration_data[0].name, "int_param0")
-		self.assertEqual(conf_set.configuration_data[0].value.value(), "0")
+  def test_get_configuration_set(self):
+    conf_set = self._sdoconf.get_configuration_set("default")
+    self.assertEqual(conf_set.configuration_data[0].name, "int_param0")
+    self.assertEqual(conf_set.configuration_data[0].value.value(), "0")
 
-		self.assertRaises(SDOPackage.InvalidParameter, self._sdoconf.get_configuration_set, None )
+    self.assertRaises(SDOPackage.InvalidParameter, self._sdoconf.get_configuration_set, None )
 
-	def test_set_configuration_set_values(self):
-		self._sdoconf.set_configuration_set_values(SDOPackage.ConfigurationSet("default2","",[]))
+  def test_set_configuration_set_values(self):
+    self._sdoconf.set_configuration_set_values(SDOPackage.ConfigurationSet("default2","",[]))
 
-		self.assertRaises(SDOPackage.InvalidParameter, self._sdoconf.set_configuration_set_values, None )
+    self.assertRaises(SDOPackage.InvalidParameter, self._sdoconf.set_configuration_set_values, None )
 
-	def test_get_active_configuration_set(self):
-		self.assertEqual(self._sdoconf.get_active_configuration_set().id, "default")
+  def test_get_active_configuration_set(self):
+    self.assertEqual(self._sdoconf.get_active_configuration_set().id, "default")
 
 
-	def test_add_configuration_set(self):
-		self._sdoconf.add_configuration_set(SDOPackage.ConfigurationSet("default2","",[]))
+  def test_add_configuration_set(self):
+    self._sdoconf.add_configuration_set(SDOPackage.ConfigurationSet("default2","",[]))
 
-		self.assertRaises(SDOPackage.InvalidParameter, self._sdoconf.add_configuration_set, None )
+    self.assertRaises(SDOPackage.InvalidParameter, self._sdoconf.add_configuration_set, None )
 
-	def test_remove_configuration_set(self):
-		self._sdoconf.add_configuration_set(SDOPackage.ConfigurationSet("default2","",[]))
-		self.assertEqual(self._sdoconf.remove_configuration_set("default2"),True)
-		
-		self.assertRaises(SDOPackage.InvalidParameter, self._sdoconf.remove_configuration_set, None )
+  def test_remove_configuration_set(self):
+    self._sdoconf.add_configuration_set(SDOPackage.ConfigurationSet("default2","",[]))
+    self.assertEqual(self._sdoconf.remove_configuration_set("default2"),True)
+    
+    self.assertRaises(SDOPackage.InvalidParameter, self._sdoconf.remove_configuration_set, None )
 
-	def test_activate_configuration_set(self):
-		self._sdoconf.add_configuration_set(SDOPackage.ConfigurationSet("default2","",[]))
-		self.assertEqual(self._sdoconf.activate_configuration_set("default2"),True)
+  def test_activate_configuration_set(self):
+    self._sdoconf.add_configuration_set(SDOPackage.ConfigurationSet("default2","",[]))
+    self.assertEqual(self._sdoconf.activate_configuration_set("default2"),True)
 
-		self.assertRaises(SDOPackage.InvalidParameter, self._sdoconf.activate_configuration_set, None )
+    self.assertRaises(SDOPackage.InvalidParameter, self._sdoconf.activate_configuration_set, None )
 
-	def test_getObjRef(self):
-		self._sdoconf.getObjRef()
+  def test_getObjRef(self):
+    self._sdoconf.getObjRef()
 
-	def test_getOrganizations(self):
-		self._sdoconf.getOrganizations()
+  def test_getOrganizations(self):
+    self._sdoconf.getOrganizations()
 
-	def test_getDeviceProfile(self):
-		self._sdoconf.getDeviceProfile()
+  def test_getDeviceProfile(self):
+    self._sdoconf.getDeviceProfile()
 
-	def test_getServiceProfiles(self):
-		self._sdoconf.getServiceProfiles()
+  def test_getServiceProfiles(self):
+    self._sdoconf.getServiceProfiles()
 
-	def test_getServiceProfile(self):
-		self._sdoconf.getServiceProfile("default")
+  def test_getServiceProfile(self):
+    self._sdoconf.getServiceProfile("default")
 
-	def test_getOrganizations(self):
-		self._sdoconf.getOrganizations()
+  def test_getOrganizations(self):
+    self._sdoconf.getOrganizations()
 
-	def test_getUUID(self):
-		print self._sdoconf.getUUID()
+  def test_getUUID(self):
+    print self._sdoconf.getUUID()
 
 
 

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_SdoOrganization.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_SdoOrganization.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_SdoOrganization.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -31,126 +31,130 @@
 
 
 class TestComp(OpenRTM_aist.DataFlowComponentBase):
-	def __init__(self, manager):
-		OpenRTM_aist.DataFlowComponentBase.__init__(self, manager)
+  def __init__(self, manager):
+    OpenRTM_aist.DataFlowComponentBase.__init__(self, manager)
 
-	def onInitialize(self):
-		print "onInitialize"
-		return RTC.RTC_OK
+  def onInitialize(self):
+    print "onInitialize"
+    return RTC.RTC_OK
 
-	def onFinalize(self):
-		print "onFinalize"
-		return RTC.RTC_OK
-		
-	def onStartup(self, ec_id):
-		print "onStartup"
-		return RTC.RTC_OK
+  def onFinalize(self):
+    print "onFinalize"
+    return RTC.RTC_OK
+    
+  def onStartup(self, ec_id):
+    print "onStartup"
+    return RTC.RTC_OK
 
-	def onShutdown(self, ec_id):
-		print "onSutdown"
-		return RTC.RTC_OK
+  def onShutdown(self, ec_id):
+    print "onSutdown"
+    return RTC.RTC_OK
 
-	def onActivated(self, ec_id):
-		print "onActivated"
-		return RTC.RTC_OK
+  def onActivated(self, ec_id):
+    print "onActivated"
+    return RTC.RTC_OK
 
-	def onDeactivated(self, ec_id):
-		print "onDeactivated"
-		return RTC.RTC_OK
+  def onDeactivated(self, ec_id):
+    print "onDeactivated"
+    return RTC.RTC_OK
 
-	def onExecute(self, ec_id):
-		print "onExecute"
-		return RTC.RTC_OK
+  def onExecute(self, ec_id):
+    print "onExecute"
+    return RTC.RTC_OK
 
-	def onAborting(self, ec_id):
-		print "onAborting"
-		return RTC.RTC_OK
+  def onAborting(self, ec_id):
+    print "onAborting"
+    return RTC.RTC_OK
 
-	def onReset(self, ec_id):
-		print "onReset"
-		return RTC.RTC_OK
-		
-	def onStateUpdate(self, ec_id):
-		print "onStateUpdate"
-		return RTC.RTC_OK
+  def onReset(self, ec_id):
+    print "onReset"
+    return RTC.RTC_OK
+    
+  def onStateUpdate(self, ec_id):
+    print "onStateUpdate"
+    return RTC.RTC_OK
 
-	def onRateChanged(self, ec_id):
-		print "onRateChanged"
-		return RTC.RTC_OK
+  def onRateChanged(self, ec_id):
+    print "onRateChanged"
+    return RTC.RTC_OK
 
 
 class TestOrganization_impl(unittest.TestCase):
-	def setUp(self):
-		rtc = TestComp(OpenRTM_aist.Manager.instance())
-		self.org = Organization_impl(rtc.getObjRef())
+  def setUp(self):
+    rtc = TestComp(OpenRTM_aist.Manager.instance())
+    self.org = Organization_impl(rtc.getObjRef())
 
-	def test_get_organization_id(self):
-		print self.org.get_organization_id()
-	
-	def test_get_organization_property(self):
-		nv_list = [SDOPackage.NameValue("test", 100)]
-		self.org.add_organization_property(SDOPackage.OrganizationProperty(nv_list))
-		self.assertEqual(self.org.get_organization_property().properties[0].name, "test")
-		self.org.remove_organization_property("test")
-		ret_val = self.org.get_organization_property()
-		self.assertEqual(len(ret_val.properties), 0)
-			
-		self.assertRaises(SDOPackage.InvalidParameter, self.org.remove_organization_property, None )
+  def tearDown(self):
+    OpenRTM_aist.Manager.instance().shutdownManager()
+    return
 
-	def test_get_organization_property_value(self):
-		self.org.set_organization_property_value("test", 100)
-		self.assertRaises(SDOPackage.InvalidParameter, self.org.set_organization_property_value, None, None )
+  def test_get_organization_id(self):
+    print self.org.get_organization_id()
+  
+  def test_get_organization_property(self):
+    nv_list = [SDOPackage.NameValue("test", 100)]
+    self.org.add_organization_property(SDOPackage.OrganizationProperty(nv_list))
+    self.assertEqual(self.org.get_organization_property().properties[0].name, "test")
+    self.org.remove_organization_property("test")
+    ret_val = self.org.get_organization_property()
+    self.assertEqual(len(ret_val.properties), 0)
+      
+    self.assertRaises(SDOPackage.InvalidParameter, self.org.remove_organization_property, None )
 
-		val = omniORB.any.from_any(self.org.get_organization_property_value("test"))
-		self.assertEqual(val, 100)
-		# Failure pattern
-		# because get_organization_property_value() returns value of CORBA.Any type.
-		# self.assertEqual(self.org.get_organization_property_value("test"), 100)
-		self.assertRaises(SDOPackage.InvalidParameter, self.org.get_organization_property_value, "aaa" )
-		self.assertRaises(SDOPackage.InvalidParameter, self.org.get_organization_property_value, None )
+  def test_get_organization_property_value(self):
+    self.org.set_organization_property_value("test", 100)
+    self.assertRaises(SDOPackage.InvalidParameter, self.org.set_organization_property_value, None, None )
 
-		self.assertRaises(SDOPackage.InvalidParameter, self.org.set_organization_property_value, None, "aaa" )
-		
+    val = omniORB.any.from_any(self.org.get_organization_property_value("test"))
+    self.assertEqual(val, 100)
+    # Failure pattern
+    # because get_organization_property_value() returns value of CORBA.Any type.
+    # self.assertEqual(self.org.get_organization_property_value("test"), 100)
+    self.assertRaises(SDOPackage.InvalidParameter, self.org.get_organization_property_value, "aaa" )
+    self.assertRaises(SDOPackage.InvalidParameter, self.org.get_organization_property_value, None )
 
-	def test_get_owner(self):
-		rtc = TestComp(OpenRTM_aist.Manager.instance())
-		self.org.set_owner(rtc.getObjRef())
-		self.assertNotEqual(self.org.get_owner(),None)
-		self.assertRaises(SDOPackage.InvalidParameter, self.org.set_owner, None )
-		
-	class sdo_test(OpenRTM_aist.RTObject_impl):
-		def __init__(self):
-			self._orb = CORBA.ORB_init()
-			self._poa = self._orb.resolve_initial_references("RootPOA")
-			OpenRTM_aist.RTObject_impl.__init__(self, orb=self._orb, poa=self._poa)
+    self.assertRaises(SDOPackage.InvalidParameter, self.org.set_organization_property_value, None, "aaa" )
+    
 
+  def test_get_owner(self):
+    rtc = TestComp(OpenRTM_aist.Manager.instance())
+    self.org.set_owner(rtc.getObjRef())
+    self.assertNotEqual(self.org.get_owner(),None)
+    self.assertRaises(SDOPackage.InvalidParameter, self.org.set_owner, None )
+    
+  class sdo_test(OpenRTM_aist.RTObject_impl):
+    def __init__(self):
+      self._orb = CORBA.ORB_init()
+      self._poa = self._orb.resolve_initial_references("RootPOA")
+      OpenRTM_aist.RTObject_impl.__init__(self, orb=self._orb, poa=self._poa)
 
-	def test_get_members(self):
-		# Failure pattern
-		#self.org.set_members([])
-		self.assertEqual(self.org.get_members(),[])
-		member = self.sdo_test()
-		member.setInstanceName("test0")
-		self.org.set_members([member])
-		member = self.sdo_test()
-		member.setInstanceName("test1")
-		self.org.add_members([member])
-		self.assertEqual(len(self.org.get_members()),2)
-		self.org.remove_member("test1")
-		self.assertEqual(len(self.org.get_members()),1)
 
-		self.assertRaises(SDOPackage.InvalidParameter, self.org.set_members, None )
-		self.assertRaises(SDOPackage.InvalidParameter, self.org.add_members, None )
-		self.assertRaises(SDOPackage.InvalidParameter, self.org.remove_member, None )
+  def test_get_members(self):
+    # Failure pattern
+    #self.org.set_members([])
+    self.assertEqual(self.org.get_members(),[])
+    member = self.sdo_test()
+    member.setInstanceName("test0")
+    self.org.set_members([member])
+    member = self.sdo_test()
+    member.setInstanceName("test1")
+    self.org.add_members([member])
+    self.assertEqual(len(self.org.get_members()),2)
+    self.org.remove_member("test1")
+    self.assertEqual(len(self.org.get_members()),1)
 
+    self.assertRaises(SDOPackage.InvalidParameter, self.org.set_members, None )
+    self.assertRaises(SDOPackage.InvalidParameter, self.org.add_members, None )
+    self.assertRaises(SDOPackage.InvalidParameter, self.org.remove_member, None )
 
-	def test_get_dependency(self):
-		self.org.set_dependency(SDOPackage.OWN)
-		self.assertEqual(self.org.get_dependency(), SDOPackage.OWN)
 
-		self.assertRaises(SDOPackage.InvalidParameter, self.org.set_dependency, None )
+  def test_get_dependency(self):
+    self.org.set_dependency(SDOPackage.OWN)
+    self.assertEqual(self.org.get_dependency(), SDOPackage.OWN)
 
+    self.assertRaises(SDOPackage.InvalidParameter, self.org.set_dependency, None )
 
+
 ############### test #################
 if __name__ == '__main__':
         unittest.main()

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_SdoService.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_SdoService.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_SdoService.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -23,41 +23,46 @@
 import unittest
 
 from SdoService import *
+import OpenRTM_aist
 
 
 class TestSDOServiceProfile(unittest.TestCase):
-	def setUp(self):
-		self.sdosp = SDOServiceProfile()
+  def setUp(self):
+    self.sdosp = SDOServiceProfile()
 
-	def test_getProfile(self):
-		sdosp = SDOServiceProfile("test", "test_type")
-		prof = sdosp.getProfile()
-		self.assertEqual(prof.id,"test")
-		self.assertEqual(prof.type,"test_type")
+  def tearDown(self):
+    OpenRTM_aist.Manager.instance().shutdownManager()
+    return
+
+  def test_getProfile(self):
+    sdosp = SDOServiceProfile("test", "test_type")
+    prof = sdosp.getProfile()
+    self.assertEqual(prof.id,"test")
+    self.assertEqual(prof.type,"test_type")
     
-	def test_setName(self):
-		self.sdosp.setName("test")
-		self.assertEqual(self.sdosp.getName(),"test")
+  def test_setName(self):
+    self.sdosp.setName("test")
+    self.assertEqual(self.sdosp.getName(),"test")
 
 
-	def test_setInterfaceType(self):
-		self.sdosp.setInterfaceType("test_type")
-		self.assertEqual(self.sdosp.getInterfaceType(),"test_type")
+  def test_setInterfaceType(self):
+    self.sdosp.setInterfaceType("test_type")
+    self.assertEqual(self.sdosp.getInterfaceType(),"test_type")
     
 
-	def test_setIdlDefinition(self):
-		self.sdosp.setIdlDefinition("test_idl")
-		self.assertEqual(self.sdosp.getIdlDefinition(),"test_idl")
+  def test_setIdlDefinition(self):
+    self.sdosp.setIdlDefinition("test_idl")
+    self.assertEqual(self.sdosp.getIdlDefinition(),"test_idl")
 
 
-	def test_setProperties(self):
-		self.sdosp.setProperties(None)
-		self.assertEqual(self.sdosp.getProperties(),None)
+  def test_setProperties(self):
+    self.sdosp.setProperties(None)
+    self.assertEqual(self.sdosp.getProperties(),None)
 
 
-	def test_setServiceRef(self):
-		self.sdosp.setServiceRef(None)
-		self.assertEqual(self.sdosp.getServiceRef(),None)
+  def test_setServiceRef(self):
+    self.sdosp.setServiceRef(None)
+    self.assertEqual(self.sdosp.getServiceRef(),None)
 
   
 ############### test #################

Copied: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_SdoServiceAdmin.py (from rev 478, branches/RELENG_1_1/OpenRTM-aist-Python/OpenRTM_aist/test/test_SdoServiceAdmin.py)
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_SdoServiceAdmin.py	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_SdoServiceAdmin.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,139 @@
+#!/usr/bin/env python
+# -*- coding: euc-jp -*-
+
+##
+# @file test_SdoServiceAdmin.py
+# @brief test for SdoServiceAdmin class
+# @date $Date$
+# @author Shinji Kurihara
+#
+# Copyright (C) 2011
+#     Intelligent Systems Research Institute,
+#     National Institute of
+#         Advanced Industrial Science and Technology (AIST), Japan
+#     All rights reserved.
+
+import sys
+sys.path.insert(1, "../")
+
+import unittest
+from SdoServiceAdmin import *
+import OpenRTM_aist
+import SDOPackage,SDOPackage__POA
+from omniORB import CORBA, PortableServer
+from omniORB import any
+
+
+class MockRTC(OpenRTM_aist.RTObject_impl):
+  def __init__(self):
+    self._orb = CORBA.ORB_init()
+    self._poa = self._orb.resolve_initial_references("RootPOA")
+    OpenRTM_aist.RTObject_impl.__init__(self, orb=self._orb, poa=self._poa)
+    pass
+
+
+class SDOServiceMock(SDOPackage__POA.SDOService):
+  def __init__(self):
+    pass
+
+class MockSdoServiceConsumer(OpenRTM_aist.SdoServiceConsumerBase):
+  """
+  """
+
+  def __init__(self):
+    OpenRTM_aist.SdoServiceConsumerBase.__init__(self)
+    return
+
+  def reinit(self, profile):
+    pass
+
+  def getProfile(self):
+    any_val = any.to_any("3.14159")
+    nv = SDOPackage.NameValue("PROPERTIES NAME 0", any_val)
+    sprof = SDOPackage.ServiceProfile("test id","INTERFACE_TYPE",[nv],SDOServiceMock())
+    return sprof
+
+
+class TestListener(unittest.TestCase):
+  def setUp(self):
+    return
+
+
+  def tearDown(self):
+    OpenRTM_aist.Manager.instance().shutdownManager()
+    return
+
+  
+  def test_addSdoServiceConsumerFactory(self):
+    sdoadmin = SdoServiceAdmin(MockRTC())
+    self.assertEqual(sdoadmin.addSdoServiceConsumerFactory(),False)
+    return
+
+
+  def test_removeSdoServiceConsumerFactory(self):
+    sdoadmin = SdoServiceAdmin(MockRTC())
+    self.assertEqual(sdoadmin.removeSdoServiceConsumerFactory(),False)
+    return
+
+
+  def test_addSdoServiceConsumer(self):
+    any_val = any.to_any("3.14159")
+    nv = SDOPackage.NameValue("PROPERTIES NAME 0", any_val)
+    sprof = SDOPackage.ServiceProfile("ID 0","INTERFACE_TYPE",[nv],SDOServiceMock())
+    sdoadmin = SdoServiceAdmin(MockRTC())
+    self.assertEqual(sdoadmin.addSdoServiceConsumer(sprof),False)
+    return
+
+
+  def test_removeSdoServiceConsumer(self):
+    any_val = any.to_any("3.14159")
+    nv = SDOPackage.NameValue("PROPERTIES NAME 0", any_val)
+    sprof = SDOPackage.ServiceProfile("test id","INTERFACE_TYPE",[nv],SDOServiceMock())
+    sdoadmin = SdoServiceAdmin(MockRTC())
+    self.assertEqual(sdoadmin.addSdoServiceConsumer(sprof),False)
+    sdoadmin._consumers.append(MockSdoServiceConsumer())
+    self.assertEqual(sdoadmin.removeSdoServiceConsumer("test id"),True)
+    self.assertEqual(sdoadmin.addSdoServiceConsumer(sprof),False)
+    sdoadmin._consumers.append(MockSdoServiceConsumer())
+    self.assertEqual(sdoadmin.removeSdoServiceConsumer("test id2"),False)
+    return
+
+
+  def test_isAllowedConsumerType(self):
+    sdoadmin = SdoServiceAdmin(MockRTC())
+    any_val = any.to_any("3.14159")
+    nv = SDOPackage.NameValue("PROPERTIES NAME 0", any_val)
+    sprof = SDOPackage.ServiceProfile("test id","INTERFACE_TYPE",[nv],SDOServiceMock())
+    self.assertEqual(sdoadmin.isAllowedConsumerType(sprof),True)
+    sdoadmin._allConsumerAllowed = False
+    self.assertEqual(sdoadmin.isAllowedConsumerType(sprof),False)
+    sdoadmin._consumerTypes = ["type0","type1","type2","INTERFACE_TYPE"]
+    self.assertEqual(sdoadmin.isAllowedConsumerType(sprof),True)
+    sdoadmin._consumerTypes = ["type0","type1","type2"]
+    self.assertEqual(sdoadmin.isAllowedConsumerType(sprof),False)
+    return
+
+
+  def test_isExistingConsumerType(self):
+    factory = OpenRTM_aist.SdoServiceConsumerFactory.instance()
+    factory.addFactory("test_factory",OpenRTM_aist.SdoServiceConsumerBase,OpenRTM_aist.Delete)
+    sdoadmin = SdoServiceAdmin(MockRTC())
+    any_val = any.to_any("3.14159")
+    nv = SDOPackage.NameValue("PROPERTIES NAME 0", any_val)
+    sprof = SDOPackage.ServiceProfile("test id","INTERFACE_TYPE",[nv],SDOServiceMock())
+    self.assertEqual(sdoadmin.isExistingConsumerType(sprof),False)
+    factory.addFactory("INTERFACE_TYPE",OpenRTM_aist.SdoServiceConsumerBase,OpenRTM_aist.Delete)
+    self.assertEqual(sdoadmin.isExistingConsumerType(sprof),True)
+    return
+
+
+  def test_getUUID(self):
+    sdoadmin = SdoServiceAdmin(MockRTC())
+    self.assertNotEqual(sdoadmin.getUUID(),"")
+    self.assertNotEqual(sdoadmin.getUUID(),None)
+    return
+
+
+############### test #################
+if __name__ == '__main__':
+  unittest.main()

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_StateMachine.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_StateMachine.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_StateMachine.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -21,108 +21,113 @@
 import unittest
 
 from StateMachine import *
+import OpenRTM_aist
 
-		
+    
 
 class TestStateMachine(unittest.TestCase):
-#	state = [0,1,2]
+# state = [0,1,2]
   state = [RTC.INACTIVE_STATE, RTC.ACTIVE_STATE, RTC.ERROR_STATE]
 
   def setUp(self):
-		self._sm = StateMachine(3)
+    self._sm = StateMachine(3)
 
-		self._sm.setNOP(self.nullAction)
-		
-		self._sm.setEntryAction(RTC.ACTIVE_STATE, self.on_activated)
-		self._sm.setEntryAction(RTC.ERROR_STATE,self.on_aborting)
-		self._sm.setPreDoAction(RTC.ACTIVE_STATE, self.on_reset)
-		self._sm.setDoAction(RTC.ACTIVE_STATE, self.on_execute)
-		self._sm.setPostDoAction(RTC.ACTIVE_STATE, self.on_state_update)
-		self._sm.setExitAction(RTC.ACTIVE_STATE, self.on_deactivated)
-		self._sm.setExitAction(RTC.ERROR_STATE, self.on_reset)
-		self._sm.setTransitionAction(self.transition)
+    self._sm.setNOP(self.nullAction)
+    
+    self._sm.setEntryAction(RTC.ACTIVE_STATE, self.on_activated)
+    self._sm.setEntryAction(RTC.ERROR_STATE,self.on_aborting)
+    self._sm.setPreDoAction(RTC.ACTIVE_STATE, self.on_reset)
+    self._sm.setDoAction(RTC.ACTIVE_STATE, self.on_execute)
+    self._sm.setPostDoAction(RTC.ACTIVE_STATE, self.on_state_update)
+    self._sm.setExitAction(RTC.ACTIVE_STATE, self.on_deactivated)
+    self._sm.setExitAction(RTC.ERROR_STATE, self.on_reset)
+    self._sm.setTransitionAction(self.transition)
 
-		self._sm.setListener(self)
-		st = StateHolder()
-		st.prev = RTC.INACTIVE_STATE
-		st.curr = RTC.INACTIVE_STATE
-		st.next = RTC.INACTIVE_STATE
-		self._sm.setStartState(st)
-		self._sm.goTo(RTC.INACTIVE_STATE)
-		
+    self._sm.setListener(self)
+    st = StateHolder()
+    st.prev = RTC.INACTIVE_STATE
+    st.curr = RTC.INACTIVE_STATE
+    st.next = RTC.INACTIVE_STATE
+    self._sm.setStartState(st)
+    self._sm.goTo(RTC.INACTIVE_STATE)
+    
+  def tearDown(self):
+    OpenRTM_aist.Manager.instance().shutdownManager()
+    return
+
   def nullAction(self, st):
-		print "nullAction."
-		return True
+    print "nullAction."
+    return True
 
   def on_activated(self, st):
-		print "on_activated."
-		return True
+    print "on_activated."
+    return True
 
   def on_deactivated(self, st):
-		print "on_deactivated."
-		return True
+    print "on_deactivated."
+    return True
 
   def on_aborting(self, st):
-		print "on_aborting."
-		return True
+    print "on_aborting."
+    return True
 
   def on_error(self, st):
-		print "on_error."
-		return True
+    print "on_error."
+    return True
 
   def on_reset(self, st):
-		print "on_reset."
-		return True
+    print "on_reset."
+    return True
 
   def on_execute(self, st):
-		print "on_execute."
-		return True
+    print "on_execute."
+    return True
 
   def on_state_update(self, st):
-		print "on_state_update."
-		return True
+    print "on_state_update."
+    return True
 
   def transition(self, st):
-		print "transition."
-		return True
+    print "transition."
+    return True
 
 
   def test_setNOP(self):
-		self._sm.setNOP(self.nullAction)
-	
-	
+    self._sm.setNOP(self.nullAction)
+  
+  
   def test_getStates(self):
-		self.assertEqual(self._sm.getStates().curr, RTC.INACTIVE_STATE)
-		self.assertEqual(self._sm.getStates().prev, RTC.INACTIVE_STATE)
-		self.assertEqual(self._sm.getStates().next, RTC.INACTIVE_STATE)
+    self.assertEqual(self._sm.getStates().curr, RTC.INACTIVE_STATE)
+    self.assertEqual(self._sm.getStates().prev, RTC.INACTIVE_STATE)
+    self.assertEqual(self._sm.getStates().next, RTC.INACTIVE_STATE)
 
-		st = StateHolder()
-		st.prev = RTC.ERROR_STATE
-		st.curr = RTC.ERROR_STATE
-		st.next = RTC.ERROR_STATE
-		self._sm.setStartState(st)
+    st = StateHolder()
+    st.prev = RTC.ERROR_STATE
+    st.curr = RTC.ERROR_STATE
+    st.next = RTC.ERROR_STATE
+    self._sm.setStartState(st)
 
-		self.assertEqual(self._sm.getStates().curr, RTC.ERROR_STATE)
-		self.assertEqual(self._sm.getStates().prev, RTC.ERROR_STATE)
-		self.assertEqual(self._sm.getStates().next, RTC.ERROR_STATE)
-		
+    self.assertEqual(self._sm.getStates().curr, RTC.ERROR_STATE)
+    self.assertEqual(self._sm.getStates().prev, RTC.ERROR_STATE)
+    self.assertEqual(self._sm.getStates().next, RTC.ERROR_STATE)
+    
   def test_getState(self):
-		self.assertEqual(self._sm.getState(), RTC.INACTIVE_STATE)
-	
+    self.assertEqual(self._sm.getState(), RTC.INACTIVE_STATE)
+  
   def test_isIn(self):
-		self.assertEqual(self._sm.isIn(RTC.INACTIVE_STATE), True)
-	
+    self.assertEqual(self._sm.isIn(RTC.INACTIVE_STATE), True)
+  
   def test_goTo(self):
-		self._sm.goTo(RTC.INACTIVE_STATE)
-	
+    self._sm.goTo(RTC.INACTIVE_STATE)
+  
 #  def test_worker(self):
-#		self._sm.goTo(RTC.ACTIVE_STATE)
-#		self.assertEqual(self._sm.worker(), True)
-#		self.assertEqual(self._sm.worker(), True)
-#		self._sm.goTo(RTC.INACTIVE_STATE)
-#		self.assertEqual(self._sm.worker(), True)
-#		self.assertEqual(self._sm.worker(), True)
-	
+#   self._sm.goTo(RTC.ACTIVE_STATE)
+#   self.assertEqual(self._sm.worker(), True)
+#   self.assertEqual(self._sm.worker(), True)
+#   self._sm.goTo(RTC.INACTIVE_STATE)
+#   self.assertEqual(self._sm.worker(), True)
+#   self.assertEqual(self._sm.worker(), True)
+  
 
 ############### test #################
 if __name__ == '__main__':

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_StringUtil.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_StringUtil.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_StringUtil.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -21,262 +21,264 @@
 import unittest
 
 from StringUtil import *
+import OpenRTM_aist
 
 class TestStringUtil(unittest.TestCase):
 
-	def setUp(self):
-		pass
+  def setUp(self):
+    pass
 
-	def tearDown(self):
-		pass
-	
-	def test_isEscaped(self):
-		self.assertEqual(isEscaped("test\\\\test",5), True, "Result failed.")
+  def tearDown(self):
+    OpenRTM_aist.Manager.instance().shutdownManager()
+    pass
+  
+  def test_isEscaped(self):
+    self.assertEqual(isEscaped("test\\\\test",5), True, "Result failed.")
 
-		
-	def test_escape(self):
-		self.assertEqual(escape("test\ttest"), "test\\ttest", "Result failed.")
-		self.assertEqual(escape("test\ntest"), "test\\ntest", "Result failed.")
-		self.assertEqual(escape("test\ftest"), "test\\ftest", "Result failed.")
-		self.assertEqual(escape("test\rtest"), "test\\rtest", "Result failed.")
+    
+  def test_escape(self):
+    self.assertEqual(escape("test\ttest"), "test\\ttest", "Result failed.")
+    self.assertEqual(escape("test\ntest"), "test\\ntest", "Result failed.")
+    self.assertEqual(escape("test\ftest"), "test\\ftest", "Result failed.")
+    self.assertEqual(escape("test\rtest"), "test\\rtest", "Result failed.")
 
 
-	def test_unescape(self):
-		self.assertEqual(unescape("test\\ttest"), "test\ttest", "Result failed.")
-		self.assertEqual(unescape("test\\ntest"), "test\ntest", "Result failed.")
-		self.assertEqual(unescape("test\\ftest"), "test\ftest", "Result failed.")
-		self.assertEqual(unescape("test\\rtest"), "test\rtest", "Result failed.")
+  def test_unescape(self):
+    self.assertEqual(unescape("test\\ttest"), "test\ttest", "Result failed.")
+    self.assertEqual(unescape("test\\ntest"), "test\ntest", "Result failed.")
+    self.assertEqual(unescape("test\\ftest"), "test\ftest", "Result failed.")
+    self.assertEqual(unescape("test\\rtest"), "test\rtest", "Result failed.")
 
 
-	def test_eraseBlank(self):
-		_str=[" test"]
-		eraseBlank(_str)
-		self.assertEqual(_str[0], "test", "Result failed.")
+  def test_eraseBlank(self):
+    _str=[" test"]
+    eraseBlank(_str)
+    self.assertEqual(_str[0], "test", "Result failed.")
 
-		_str=["   test"]
-		eraseBlank(_str)
-		self.assertEqual(_str[0], "test", "Result failed.")
+    _str=["   test"]
+    eraseBlank(_str)
+    self.assertEqual(_str[0], "test", "Result failed.")
 
-		_str=["\t\ttest"]
-		eraseBlank(_str)
-		self.assertEqual(_str[0], "test", "Result failed.")
+    _str=["\t\ttest"]
+    eraseBlank(_str)
+    self.assertEqual(_str[0], "test", "Result failed.")
 
-		_str=[""]
-		eraseBlank(_str)
-		self.assertEqual(_str[0], "", "Result failed.")
+    _str=[""]
+    eraseBlank(_str)
+    self.assertEqual(_str[0], "", "Result failed.")
 
-		_str=["\t\n test"]
-		eraseBlank(_str)
-		self.assertEqual(_str[0], "\ntest")
+    _str=["\t\n test"]
+    eraseBlank(_str)
+    self.assertEqual(_str[0], "\ntest")
 
-		_str=["\t\\t test"]
-		eraseBlank(_str)
-		self.assertEqual(_str[0], "\\ttest", "Result failed.")
-		
-	def test_eraseHeadBlank(self):
-		_str=[" test"]
-		eraseHeadBlank(_str)
-		self.assertEqual(_str[0], "test", "Result failed.")
+    _str=["\t\\t test"]
+    eraseBlank(_str)
+    self.assertEqual(_str[0], "\\ttest", "Result failed.")
+    
+  def test_eraseHeadBlank(self):
+    _str=[" test"]
+    eraseHeadBlank(_str)
+    self.assertEqual(_str[0], "test", "Result failed.")
 
-		_str=["   test"]
-		eraseHeadBlank(_str)
-		self.assertEqual(_str[0], "test", "Result failed.")
+    _str=["   test"]
+    eraseHeadBlank(_str)
+    self.assertEqual(_str[0], "test", "Result failed.")
 
-		_str=["\t\ttest"]
-		eraseHeadBlank(_str)
-		self.assertEqual(_str[0], "test", "Result failed.")
+    _str=["\t\ttest"]
+    eraseHeadBlank(_str)
+    self.assertEqual(_str[0], "test", "Result failed.")
 
-		_str=[""]
-		eraseHeadBlank(_str)
-		self.assertEqual(_str[0], "", "Result failed.")
+    _str=[""]
+    eraseHeadBlank(_str)
+    self.assertEqual(_str[0], "", "Result failed.")
 
-		_str=["\t\n test"]
-		eraseHeadBlank(_str)
-		self.assertEqual(_str[0], "\n test", "Result failed.")
+    _str=["\t\n test"]
+    eraseHeadBlank(_str)
+    self.assertEqual(_str[0], "\n test", "Result failed.")
 
-		_str=["\t\\t test"]
-		eraseHeadBlank(_str)
-		self.assertEqual(_str[0], "\\t test", "Result failed.")
+    _str=["\t\\t test"]
+    eraseHeadBlank(_str)
+    self.assertEqual(_str[0], "\\t test", "Result failed.")
 
 
-		# failed case
-		# _str=["\\t\\ttest"]
-		# eraseHeadBlank(_str)
-		# self.assertEqual(_str[0], "test", "Result failed.")
+    # failed case
+    # _str=["\\t\\ttest"]
+    # eraseHeadBlank(_str)
+    # self.assertEqual(_str[0], "test", "Result failed.")
 
 
-	def test_eraseTailBlank(self):
-		_str=["test "]
-		eraseTailBlank(_str)
-		self.assertEqual(_str[0], "test", "Result failed.")
+  def test_eraseTailBlank(self):
+    _str=["test "]
+    eraseTailBlank(_str)
+    self.assertEqual(_str[0], "test", "Result failed.")
 
-		_str=["test   "]
-		eraseTailBlank(_str)
-		self.assertEqual(_str[0], "test", "Result failed.")
+    _str=["test   "]
+    eraseTailBlank(_str)
+    self.assertEqual(_str[0], "test", "Result failed.")
 
-		_str=["test\t\t"]
-		eraseTailBlank(_str)
-		self.assertEqual(_str[0], "test", "Result failed.")
+    _str=["test\t\t"]
+    eraseTailBlank(_str)
+    self.assertEqual(_str[0], "test", "Result failed.")
 
-		_str=["test\t\n\t"]
-		eraseTailBlank(_str)
-		self.assertEqual(_str[0], "test\t\n", "Result failed.")
+    _str=["test\t\n\t"]
+    eraseTailBlank(_str)
+    self.assertEqual(_str[0], "test\t\n", "Result failed.")
 
-		_str=["test\\t"]
-		eraseTailBlank(_str)
-		self.assertEqual(_str[0], "test\\t", "Result failed.")
+    _str=["test\\t"]
+    eraseTailBlank(_str)
+    self.assertEqual(_str[0], "test\\t", "Result failed.")
 
-		# failed case
-		# _str=["test\\t\\t"]
-		# eraseTailBlank(_str)
-		# self.assertEqual(_str[0], "test", "Result failed.")
+    # failed case
+    # _str=["test\\t\\t"]
+    # eraseTailBlank(_str)
+    # self.assertEqual(_str[0], "test", "Result failed.")
 
-	def test_normalize(self):
-		_str = [" NORMALIZE "]
-		normalize(_str)
-		self.assertEqual(_str[0],"normalize")
+  def test_normalize(self):
+    _str = [" NORMALIZE "]
+    normalize(_str)
+    self.assertEqual(_str[0],"normalize")
 
-		_str = [" \t  \tNORmALIZE "]
-		normalize(_str)
-		self.assertEqual(_str[0],"normalize")
+    _str = [" \t  \tNORmALIZE "]
+    normalize(_str)
+    self.assertEqual(_str[0],"normalize")
 
-		_str = [" nORMALIZE\t \t\t\t"]
-		normalize(_str)
-		self.assertEqual(_str[0],"normalize")
+    _str = [" nORMALIZE\t \t\t\t"]
+    normalize(_str)
+    self.assertEqual(_str[0],"normalize")
 
 
-	def test_replaceString(self):
-		_str= ["replace"]
-		replaceString(_str,"l", "r")
-		self.assertEqual(_str[0], "reprace", "Result failed.")
+  def test_replaceString(self):
+    _str= ["replace"]
+    replaceString(_str,"l", "r")
+    self.assertEqual(_str[0], "reprace", "Result failed.")
 
-		_str= ["replace"]
-		replaceString(_str,"re", "")
-		self.assertEqual(_str[0], "place", "Result failed.")
+    _str= ["replace"]
+    replaceString(_str,"re", "")
+    self.assertEqual(_str[0], "place", "Result failed.")
 
-		_str= ["replace"]
-		replaceString(_str,"e", "a")
-		self.assertEqual(_str[0], "raplaca", "Result failed.")
+    _str= ["replace"]
+    replaceString(_str,"e", "a")
+    self.assertEqual(_str[0], "raplaca", "Result failed.")
 
 
-	def test_split(self):
-		_str = split("test0,test1,test2", ",")
-		self.assertEqual(_str[0], "test0", "Result failed.")
-		self.assertEqual(_str[1], "test1", "Result failed.")
-		self.assertEqual(_str[2], "test2", "Result failed.")
+  def test_split(self):
+    _str = split("test0,test1,test2", ",")
+    self.assertEqual(_str[0], "test0", "Result failed.")
+    self.assertEqual(_str[1], "test1", "Result failed.")
+    self.assertEqual(_str[2], "test2", "Result failed.")
 
-		_str = split("test0.test1.test2", ".")
-		self.assertEqual(_str[0], "test0", "Result failed.")
-		self.assertEqual(_str[1], "test1", "Result failed.")
-		self.assertEqual(_str[2], "test2", "Result failed.")
+    _str = split("test0.test1.test2", ".")
+    self.assertEqual(_str[0], "test0", "Result failed.")
+    self.assertEqual(_str[1], "test1", "Result failed.")
+    self.assertEqual(_str[2], "test2", "Result failed.")
 
-		_str = split("test0/test1/test2", "/")
-		self.assertEqual(_str[0], "test0", "Result failed.")
-		self.assertEqual(_str[1], "test1", "Result failed.")
-		self.assertEqual(_str[2], "test2", "Result failed.")
+    _str = split("test0/test1/test2", "/")
+    self.assertEqual(_str[0], "test0", "Result failed.")
+    self.assertEqual(_str[1], "test1", "Result failed.")
+    self.assertEqual(_str[2], "test2", "Result failed.")
 
-		_str = split("test0 test1 test2", " ")
-		self.assertEqual(_str[0], "test0", "Result failed.")
-		self.assertEqual(_str[1], "test1", "Result failed.")
-		self.assertEqual(_str[2], "test2", "Result failed.")
+    _str = split("test0 test1 test2", " ")
+    self.assertEqual(_str[0], "test0", "Result failed.")
+    self.assertEqual(_str[1], "test1", "Result failed.")
+    self.assertEqual(_str[2], "test2", "Result failed.")
 
 
-	def test_toBool(self):
-		ret = toBool("yes", "yes", "no", True)
-		self.assertEqual(ret, True, "Result failed.")
+  def test_toBool(self):
+    ret = toBool("yes", "yes", "no", True)
+    self.assertEqual(ret, True, "Result failed.")
 
-		ret = toBool("no", "yes", "no", True)
-		self.assertEqual(ret, False, "Result failed.")
+    ret = toBool("no", "yes", "no", True)
+    self.assertEqual(ret, False, "Result failed.")
 
-		ret = toBool("Yes", "YES", "NO", True)
-		self.assertEqual(ret, True, "Result failed.")
+    ret = toBool("Yes", "YES", "NO", True)
+    self.assertEqual(ret, True, "Result failed.")
 
-		ret = toBool("No", "YES", "NO", True)
-		self.assertEqual(ret, False, "Result failed.")
+    ret = toBool("No", "YES", "NO", True)
+    self.assertEqual(ret, False, "Result failed.")
 
-	def test_includes(self):
-		self.assertEqual(includes(["abc","abcde","ABC"],"abc"),True)
-		self.assertEqual(includes(["abc","abcde","ABC"],"a"),False)
-		self.assertEqual(includes(["abc","abcde","ABC"],"ABC"),True)
-		self.assertEqual(includes("abc,abcde,ABC","ABC"),True)
-		self.assertEqual(includes("abc,abcde,ABC","AbC",False),False)
-		self.assertEqual(includes(["abc","abcde","AbC"],"ABC"),True)
-		self.assertEqual(includes(["abc","abcde","AbC"],"ABC",False),False)
+  def test_includes(self):
+    self.assertEqual(includes(["abc","abcde","ABC"],"abc"),True)
+    self.assertEqual(includes(["abc","abcde","ABC"],"a"),False)
+    self.assertEqual(includes(["abc","abcde","ABC"],"ABC"),True)
+    self.assertEqual(includes("abc,abcde,ABC","ABC"),True)
+    self.assertEqual(includes("abc,abcde,ABC","AbC",False),False)
+    self.assertEqual(includes(["abc","abcde","AbC"],"ABC"),True)
+    self.assertEqual(includes(["abc","abcde","AbC"],"ABC",False),False)
 
 
-	def test_isAbsolutePath(self):
-		self.assertEqual(isAbsolutePath("/usr/loca/bin"), True, "Result failed.")
-		self.assertEqual(isAbsolutePath("c:\\"), True, "Result failed.")
-		self.assertEqual(isAbsolutePath("\\\\localhost"), True, "Result failed.")
-		# failed case
-		# self.assertEqual(isAbsolutePath("\\localhost"), True, "Result failed.")
+  def test_isAbsolutePath(self):
+    self.assertEqual(isAbsolutePath("/usr/loca/bin"), True, "Result failed.")
+    self.assertEqual(isAbsolutePath("c:\\"), True, "Result failed.")
+    self.assertEqual(isAbsolutePath("\\\\localhost"), True, "Result failed.")
+    # failed case
+    # self.assertEqual(isAbsolutePath("\\localhost"), True, "Result failed.")
 
 
-	def test_isURL(self):
-		self.assertEqual(isURL("http://www.google.co.jp"), True, "Result failed.")
+  def test_isURL(self):
+    self.assertEqual(isURL("http://www.google.co.jp"), True, "Result failed.")
 
-		# failed case
-		# self.assertEqual(isURL("www.google.co.jp"), True, "Result failed.")
-		# self.assertEqual(isURL("http:://www.google.co.jp"), True, "Result failed.")
+    # failed case
+    # self.assertEqual(isURL("www.google.co.jp"), True, "Result failed.")
+    # self.assertEqual(isURL("http:://www.google.co.jp"), True, "Result failed.")
 
 
-	def test_otos(self):
-		self.assertEqual(otos(123), "123", "Result failed.")
-		self.assertEqual(otos("123"), "123", "Result failed.")
-		self.assertEqual(otos(123456789123456789), "123456789123456789", "Result failed.")
-		self.assertEqual(otos(0.123), "0.123", "Result failed.")
+  def test_otos(self):
+    self.assertEqual(otos(123), "123", "Result failed.")
+    self.assertEqual(otos("123"), "123", "Result failed.")
+    self.assertEqual(otos(123456789123456789), "123456789123456789", "Result failed.")
+    self.assertEqual(otos(0.123), "0.123", "Result failed.")
 
-	
-	def test_stringTo(self):
-		int_ = [0]
-		long_ = [0]
-		float_ = [0.0]
-		list_ = [[0.0,0.0,0.0,0.0]]
-		str_ = [""]
-		stringTo(int_,"123")
-		stringTo(long_,"123")
-		stringTo(float_,"0.123")
-		stringTo(list_,"0,1.1,2.2,3.3")
-		stringTo(str_,"hoge")
-		print list_[0]
-		self.assertEqual(int_[0], 123, "Result failed.")
-		self.assertEqual(long_[0], 123, "Result failed.")
-		self.assertEqual(float_[0], 0.123, "Result failed.")
-		self.assertEqual(list_[0], [0,1.1,2.2,3.3], "Result failed.")
-		self.assertEqual(str_[0], "hoge", "Result failed.")
+  
+  def test_stringTo(self):
+    int_ = [0]
+    long_ = [0]
+    float_ = [0.0]
+    list_ = [[0.0,0.0,0.0,0.0]]
+    str_ = [""]
+    stringTo(int_,"123")
+    stringTo(long_,"123")
+    stringTo(float_,"0.123")
+    stringTo(list_,"0,1.1,2.2,3.3")
+    stringTo(str_,"hoge")
+    print list_[0]
+    self.assertEqual(int_[0], 123, "Result failed.")
+    self.assertEqual(long_[0], 123, "Result failed.")
+    self.assertEqual(float_[0], 0.123, "Result failed.")
+    self.assertEqual(list_[0], [0,1.1,2.2,3.3], "Result failed.")
+    self.assertEqual(str_[0], "hoge", "Result failed.")
 
-		# failed case
-		# self.assertEqual(stringTo("int",0.123), 0.123, "Result failed.")
+    # failed case
+    # self.assertEqual(stringTo("int",0.123), 0.123, "Result failed.")
 
 
-	def test_unique_sv(self):
-		sv = ["test0","test1","test0","test2","test0"]
-		sv_ret = unique_sv(sv)
-		self.assertEqual(sv_ret[0], "test0", "Result failed.")
-		self.assertEqual(sv_ret[1], "test1", "Result failed.")
-		self.assertEqual(sv_ret[2], "test2", "Result failed.")
-		self.assertEqual(len(sv_ret), 3, "Result failed.")
+  def test_unique_sv(self):
+    sv = ["test0","test1","test0","test2","test0"]
+    sv_ret = unique_sv(sv)
+    self.assertEqual(sv_ret[0], "test0", "Result failed.")
+    self.assertEqual(sv_ret[1], "test1", "Result failed.")
+    self.assertEqual(sv_ret[2], "test2", "Result failed.")
+    self.assertEqual(len(sv_ret), 3, "Result failed.")
 
-		# failed case:  len(sv_ret) is 4
-		# 
-		# sv = ["test0","test1","test0","test2","TEST0"]
-		# sv_ret = unique_sv(sv)
-		# self.assertEqual(len(sv_ret), 3, "Result failed.")
+    # failed case:  len(sv_ret) is 4
+    # 
+    # sv = ["test0","test1","test0","test2","TEST0"]
+    # sv_ret = unique_sv(sv)
+    # self.assertEqual(len(sv_ret), 3, "Result failed.")
 
-		
-	def test_flatten(self):
-		sv = ["test0","test1","test2"]
-		sv_ret = flatten(sv)
-		self.assertEqual(sv_ret, "test0, test1, test2","Result failed.")
+    
+  def test_flatten(self):
+    sv = ["test0","test1","test2"]
+    sv_ret = flatten(sv)
+    self.assertEqual(sv_ret, "test0, test1, test2","Result failed.")
 
-		# failed case:  Space is included.
-		# self.assertEqual(sv_ret, "test0,test1,test2","Result failed.")
+    # failed case:  Space is included.
+    # self.assertEqual(sv_ret, "test0,test1,test2","Result failed.")
 
 
-	def test_toArgv(self):
-		pass
+  def test_toArgv(self):
+    pass
 
-	
+  
 
 ############### test #################
 if __name__ == '__main__':

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_SystemLogger.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_SystemLogger.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_SystemLogger.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -26,96 +26,95 @@
 import unittest
 
 from SystemLogger import *
+import OpenRTM_aist
+
 i = 0
 
 class TestLogger(unittest.TestCase):
-	def setUp(self):
+  def setUp(self):
 
-		#import random
-		#val = random.uniform(0,100)
-		#self.filename = "log" + str(val) + ".log"
-		global i
-		i+=1
-		self.filename = "log" + str(i) + ".log"
-		self.logstr = LogStream("test","FILE",self.filename)
+    #import random
+    #val = random.uniform(0,100)
+    #self.filename = "log" + str(val) + ".log"
+    global i
+    i+=1
+    self.filename = "log" + str(i) + ".log"
+    self.logstr = LogStream("test","FILE",self.filename)
 
-	def tearDown(self):
-		pass
+  def tearDown(self):
+    self.logstr.__del__()
+    OpenRTM_aist.Manager.instance().shutdownManager()
+    pass
 
-	def test_strToLogLevel(self):
-		self.logger = Logger.init("test","FILE","test.log")
-		self.assertEqual(self.logger.strToLogLevel("SILENT"), Logger.SILENT)
-		self.assertEqual(self.logger.strToLogLevel("ERROR"), Logger.ERROR)
-		self.assertEqual(self.logger.strToLogLevel("WARN"), Logger.WARN)
-		self.assertEqual(self.logger.strToLogLevel("INFO"), Logger.INFO)
-		self.assertEqual(self.logger.strToLogLevel("NORMAL"), Logger.NORMAL)
-		self.assertEqual(self.logger.strToLogLevel("DEBUG"), Logger.DEBUG)
-		self.assertEqual(self.logger.strToLogLevel("TRACE"), Logger.TRACE)
-		self.assertEqual(self.logger.strToLogLevel("VERBOSE"), Logger.VERBOSE)
-		self.assertEqual(self.logger.strToLogLevel("PARANOID"), Logger.PARANOID)
-		self.assertEqual(self.logger.strToLogLevel("HOGE"), Logger.INFO)
+  def test_strToLogLevel(self):
+    self.logger = Logger.init("test","FILE","test.log")
+    self.assertEqual(self.logger.strToLogLevel("SILENT"), Logger.SILENT)
+    self.assertEqual(self.logger.strToLogLevel("ERROR"), Logger.ERROR)
+    self.assertEqual(self.logger.strToLogLevel("WARN"), Logger.WARN)
+    self.assertEqual(self.logger.strToLogLevel("INFO"), Logger.INFO)
+    self.assertEqual(self.logger.strToLogLevel("DEBUG"), Logger.DEBUG)
+    self.assertEqual(self.logger.strToLogLevel("TRACE"), Logger.TRACE)
+    self.assertEqual(self.logger.strToLogLevel("VERBOSE"), Logger.VERBOSE)
+    self.assertEqual(self.logger.strToLogLevel("PARANOID"), Logger.PARANOID)
+    self.assertEqual(self.logger.strToLogLevel("HOGE"), Logger.INFO)
 
 
-	def test_addHandler(self):
-		self.logstr.addHandler("stdout")
-		self.logstr.setLogLevel("INFO")
-		self.logstr.RTC_INFO("addHandler test!!!!!")
-		
+  def test_addHandler(self):
+    #self.logstr.addHandler("stdout")
+    self.logstr.setLogLevel("INFO")
+    self.logstr.RTC_INFO("addHandler test!!!!!")
+    
 
-	def test_setLogLock(self):
-		self.logstr.setLogLock(True)
-		self.logstr.setLogLock(False)
+  def test_setLogLock(self):
+    self.logstr.setLogLock(True)
+    self.logstr.setLogLock(False)
 
-	def test_enableLogLock(self):
-		self.logstr.enableLogLock()
+  def test_enableLogLock(self):
+    self.logstr.enableLogLock()
 
-	def test_disableLogLock(self):
-		self.logstr.disableLogLock()
+  def test_disableLogLock(self):
+    self.logstr.disableLogLock()
 
-	def test_acquire_release(self):
-		self.logstr.acquire()
-		self.logstr.release()
+  def test_acquire_release(self):
+    self.logstr.acquire()
+    self.logstr.release()
 
-	def test_RTC_LOG(self):
-		import logging
-		self.logstr.RTC_LOG(logging.ERROR,"log %s, %s",("hoge","hogehoge"))
+  def test_RTC_LOG(self):
+    import logging
+    self.logstr.RTC_LOG(logging.ERROR,"log %s, %s",("hoge","hogehoge"))
 
 
-	def test_RTC_ERROR(self):
-		self.logstr.RTC_ERROR("error!!!!!")
-		def test():
-			raise MemorryError
-		try:
-			test()
-		except:
-			self.logstr.RTC_ERROR(sys.exc_info())
+  def test_RTC_ERROR(self):
+    self.logstr.RTC_ERROR("error!!!!!")
+    def test():
+      raise MemorryError
+    try:
+      test()
+    except:
+      self.logstr.RTC_ERROR(sys.exc_info())
 
 
-	def test_RTC_WARN(self):
-		self.logstr.RTC_WARN("warn!!!!!")
+  def test_RTC_WARN(self):
+    self.logstr.RTC_WARN("warn!!!!!")
 
 
-	def test_RTC_INFO(self):
-		self.logstr.RTC_INFO("info!!!!!")
+  def test_RTC_INFO(self):
+    self.logstr.RTC_INFO("info!!!!!")
 
 
-	def test_RTC_NORMAL(self):
-		self.logstr.RTC_NORMAL("normal!!!!")
+  def test_RTC_DEBUG(self):
+    self.logstr.RTC_DEBUG("debug!!!!!")
 
 
-	def test_RTC_DEBUG(self):
-		self.logstr.RTC_DEBUG("debug!!!!!")
+  def test_RTC_TRACE(self):
+    self.logstr.RTC_TRACE("trace!!!!")
 
+  def test_RTC_VERBOSE(self):
+    self.logstr.RTC_VERBOSE("verbose!!!!")
 
-	def test_RTC_TRACE(self):
-		self.logstr.RTC_TRACE("trace!!!!")
+  def test_RTC_PARANOID(self):
+    self.logstr.RTC_PARANOID("paranoid!!!!")
 
-	def test_RTC_VERBOSE(self):
-		self.logstr.RTC_VERBOSE("verbose!!!!")
 
-	def test_RTC_PARANOID(self):
-		self.logstr.RTC_PARANOID("paranoid!!!!")
-
-
 if __name__ == "__main__":
-	unittest.main()
+  unittest.main()

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_TimeValue.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_TimeValue.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_TimeValue.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -21,51 +21,53 @@
 import time
 
 from TimeValue import *
+import OpenRTM_aist
 
 class TestTimeValue(unittest.TestCase):
-	
-	def setUp(self):
-		self.tm = TimeValue(usec=1000000)
+  
+  def setUp(self):
+    self.tm = TimeValue(usec=1000000)
 
 
-	def tearDown(self):
-		pass
+  def tearDown(self):
+    OpenRTM_aist.Manager.instance().shutdownManager()
+    pass
 
 
-	def test_set_time(self):
-		tm = time.time()
-		ret = self.tm.set_time(tm)
+  def test_set_time(self):
+    tm = time.time()
+    ret = self.tm.set_time(tm)
 
 
-	def test_toDouble(self):
-		self.test_set_time()
-		print  self.tm.toDouble()
+  def test_toDouble(self):
+    self.test_set_time()
+    print  self.tm.toDouble()
 
-	def test_sec_usec(self):
-		tm = TimeValue(usec=1000000)
-		self.assertEqual(tm.sec(),1)
-		self.assertEqual(tm.usec(),0)
+  def test_sec_usec(self):
+    tm = TimeValue(usec=1000000)
+    self.assertEqual(tm.sec(),1)
+    self.assertEqual(tm.usec(),0)
 
-	def test_normalize(self):
-		tm = TimeValue(sec=0,usec=10000000)
-		tm.normalize()
-		self.assertEqual(tm.sec(),10)
-		self.assertEqual(tm.usec(),0)
+  def test_normalize(self):
+    tm = TimeValue(sec=0,usec=10000000)
+    tm.normalize()
+    self.assertEqual(tm.sec(),10)
+    self.assertEqual(tm.usec(),0)
 
-		tm = TimeValue(sec=1,usec=1000000)
-		tm.normalize()
-		self.assertEqual(tm.sec(),2)
-		self.assertEqual(tm.usec(),0)
+    tm = TimeValue(sec=1,usec=1000000)
+    tm.normalize()
+    self.assertEqual(tm.sec(),2)
+    self.assertEqual(tm.usec(),0)
 
-		tm = TimeValue(sec=1,usec=-100000)
-		tm.normalize()
-		self.assertEqual(tm.sec(),0)
-		self.assertEqual(tm.usec(),900000)
+    tm = TimeValue(sec=1,usec=-100000)
+    tm.normalize()
+    self.assertEqual(tm.sec(),0)
+    self.assertEqual(tm.usec(),900000)
 
-	def test__str__(self):
-		self.test_set_time()
-		print self.tm
-	
+  def test__str__(self):
+    self.test_set_time()
+    print self.tm
+  
 ############### test #################
 if __name__ == '__main__':
         unittest.main()

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_Timer.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_Timer.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/test/test_Timer.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -25,53 +25,55 @@
 
 
 class test:
-	def func(self):
-		print "test.hello."
+  def func(self):
+    print "test.hello."
 
-	def invoke(self):
-		print "test invoke"
-		
+  def invoke(self):
+    print "test invoke"
+    
 class TestTimer(unittest.TestCase):
-	def setUp(self):
-		self.tm = Timer(OpenRTM_aist.TimeValue())
-		
-	def tearDown(self):
-		time.sleep(0.1)
+  def setUp(self):
+    self.tm = Timer(OpenRTM_aist.TimeValue())
+    
+  def tearDown(self):
+    self.tm.__del__()
+    OpenRTM_aist.Manager.instance().shutdownManager()
+    time.sleep(0.1)
 
-	def test_start_stop(self):
-		self.tm.start()
-		self.tm.stop()
+  def test_start_stop(self):
+    self.tm.start()
+    self.tm.stop()
     
 
-	def test_invoke(self):
-		self.tm.registerListenerFunc(test().func, OpenRTM_aist.TimeValue())
-		self.tm.registerListenerFunc(test().func, OpenRTM_aist.TimeValue())
-		self.tm.invoke()
+  def test_invoke(self):
+    self.tm.registerListenerFunc(test().func, OpenRTM_aist.TimeValue())
+    self.tm.registerListenerFunc(test().func, OpenRTM_aist.TimeValue())
+    self.tm.invoke()
     
 
-	def test_registerListener(self):
-		self.tm.registerListener(test(), OpenRTM_aist.TimeValue())
-		self.tm.invoke()
-		pass
+  def test_registerListener(self):
+    self.tm.registerListener(test(), OpenRTM_aist.TimeValue())
+    self.tm.invoke()
+    pass
 
-		
-	def test_registerListenerObj(self):
-		self.tm.registerListenerObj(test(), test.func, OpenRTM_aist.TimeValue())
-		self.tm.invoke()
     
+  def test_registerListenerObj(self):
+    self.tm.registerListenerObj(test(), test.func, OpenRTM_aist.TimeValue())
+    self.tm.invoke()
+    
 
-	def test_registerListenerFunc(self):
-		self.tm.registerListenerFunc(test().func, OpenRTM_aist.TimeValue())
-		self.tm.invoke()
+  def test_registerListenerFunc(self):
+    self.tm.registerListenerFunc(test().func, OpenRTM_aist.TimeValue())
+    self.tm.invoke()
 
 
-	def test_unregisterListener(self):
-		obj = OpenRTM_aist.ListenerObject(test(),test.func)
-		self.tm.registerListener(obj, OpenRTM_aist.TimeValue())
-		self.assertEqual(self.tm.unregisterListener(obj),True)
-		self.assertEqual(self.tm.unregisterListener(obj),False)
+  def test_unregisterListener(self):
+    obj = OpenRTM_aist.ListenerObject(test(),test.func)
+    self.tm.registerListener(obj, OpenRTM_aist.TimeValue())
+    self.assertEqual(self.tm.unregisterListener(obj),True)
+    self.assertEqual(self.tm.unregisterListener(obj),False)
 
 
 ############### test #################
 if __name__ == '__main__':
-        unittest.main()
+  unittest.main()


Property changes on: trunk/OpenRTM-aist-Python/OpenRTM_aist/utils/rtc-template
___________________________________________________________________
Deleted: svn:mergeinfo
   - 

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/utils/rtc-template/rtc-template.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/utils/rtc-template/rtc-template.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/utils/rtc-template/rtc-template.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -72,51 +72,52 @@
 platform = sys.platform
 
 class Struct:
-	def __init__(self):
-		return
+  def __init__(self):
+    return
 
 conf_path = ['']
 
 if platform == "win32":
-	python_path = os.environ['PYTHONPATH'].split(";")
-	pyhelper_path = python_path[0] + "\\OpenRTM_aist\\utils\\rtc-template"
+  python_path = os.environ['PYTHONPATH'].split(";")
+  pyhelper_path = python_path[0] + "\\OpenRTM_aist\\utils\\rtc-template"
 else:
-	conf_path = os.popen("which rtm-config", "r").read().split("\n")
-	if conf_path[0] != '':
-		pyhelper_path = libdir_path[0] + "/py_helper"
-	else:
-		python_path = os.environ['PYTHONPATH'].split(":")
-		pyhelper_path = python_path[0] + "/OpenRTM_aist/utils/rtc-template"
+  conf_path = os.popen("which rtm-config", "r").read().split("\n")
+  if conf_path[0] != '':
+    libdir_path = os.popen("rtm-config --libdir", "r").read().split("\n")
+    pyhelper_path = libdir_path[0] + "/py_helper"
+  else:
+    python_path = os.environ['PYTHONPATH'].split(":")
+    pyhelper_path = python_path[0] + "/OpenRTM_aist/utils/rtc-template"
 sys.path.append(pyhelper_path)
 
 # Option format
 opt_args_fmt = ["help",
-		"module-name=",
-		"module-type=",
-		"module-desc=",
-		"module-version=",
-		"module-vendor=",
-		"module-category=",
-		"module-comp-type=",
-		"module-act-type=",
-		"module-max-inst=",
-		"module-lang=",
+    "module-name=",
+    "module-type=",
+    "module-desc=",
+    "module-version=",
+    "module-vendor=",
+    "module-category=",
+    "module-comp-type=",
+    "module-act-type=",
+    "module-max-inst=",
+    "module-lang=",
                 "config=",
-		"inport=",
-		"outport=",
-		"service=",
-		"service-idl=",
-		"consumer=",
-		"consumer-idl=",
-		"idl-include=",
-		"backend="]
+    "inport=",
+    "outport=",
+    "service=",
+    "service-idl=",
+    "consumer=",
+    "consumer-idl=",
+    "idl-include=",
+    "backend="]
 
 
 def usage_short():
-	"""
-	Help message
-	"""
-	print """
+  """
+  Help message
+  """
+  print """
 Usage: rtc-template [OPTIONS]
 
 Options:
@@ -144,10 +145,10 @@
 
 """
 def usage_long():
-	"""
-	Help message
-	"""
-	print """
+  """
+  Help message
+  """
+  print """
     --output[=output_file]:
         Specify base name of output file. If 'XXX' is specified,
         C++ source codes XXX.cpp, XXX.h, XXXComp.cpp Makefile.XXX is generated.
@@ -173,7 +174,7 @@
 
     --module-comp-type[=component_type]:
         Specify component type.
-	    'STATIC', 'UNIQUE', 'COMMUTATIVE' are acceptable.
+      'STATIC', 'UNIQUE', 'COMMUTATIVE' are acceptable.
 
     --module-act-type[=activity_type]:
         Specify component activity's type.
@@ -206,7 +207,7 @@
         'Type' is OutPort's variable type. The acceptable types are,
         Timed[ Short | Long | UShort | ULong | Float | Double | Char | Boolean
         | Octet | String ] and its sequence types.
-		
+    
     --service=[PortName:Name:Type]:
         Specify service name, type and port name.
         PortName: The name of Port to which the interface belongs.
@@ -220,7 +221,7 @@
         Specify IDL file of service interface.
         For simplicity, please define one interface in one IDL file, although
         this IDL file can include two or more interface definition,
-		
+    
     --consumer=[PortName:Name:Type]:
         Specify consumer name, type and port name.
         PortName: The name of Port to which the consumer belongs.
@@ -234,7 +235,7 @@
         Specify IDL file of service consumer.
         For simplicity, please define one interface in one IDL file, although
         this IDL file can include two or more interface definition,
-	
+  
 
 Example:
     rtc-template -bcxx \\
@@ -253,455 +254,455 @@
     --service-idl=MyService.idl --consumer-idl=YourService.idl
 
 """
-	return
+  return
 
 def usage():
-	usage_short()
-	usage_long()
-	return
+  usage_short()
+  usage_long()
+  return
 
 class ModuleProfile:
-	"""
-	ModuleProfile class
+  """
+  ModuleProfile class
 
-	This class create RTM module profile for ezt.
-	"""
-	
-	def __init__(self, name="", desc="", type="", version="", vendor="",
-				 category="", comp_type="", act_type="",
-				 max_inst="", lang=""):
+  This class create RTM module profile for ezt.
+  """
+  
+  def __init__(self, name="", desc="", type="", version="", vendor="",
+         category="", comp_type="", act_type="",
+         max_inst="", lang=""):
 
-		self.name = name
-		self.desc = desc
-		self.type = type
-		self.version = version
-		self.vendor = vendor
-		self.category = category
-		self.comp_type = comp_type
-		self.act_type = act_type
-		self.max_inst = max_inst
-		self.lang = lang
-		return
-	
+    self.name = name
+    self.desc = desc
+    self.type = type
+    self.version = version
+    self.vendor = vendor
+    self.category = category
+    self.comp_type = comp_type
+    self.act_type = act_type
+    self.max_inst = max_inst
+    self.lang = lang
+    return
+  
 
-	def setValue(self, member, value):
-		member = member.replace("-", "_")
-		if hasattr(self, member):
-			setattr(self, member, value)
-		else:
-			print "Invalid option: --module-" + member + " " + value
-		return
-	
-	def setName(self, name):
-		self.name = name
-		return
-	
-	def setDesc(self, desc):
-		self.desc = desc
-		return
-	
-	def setVersion(self, version):
-		self.version = version
-		return
-	
-	def setVendor(self, vendor):
-		self.vendor = vendor
-		return
-	
-	def setCategory(self, vategory):
-		self.category = category
-		return
+  def setValue(self, member, value):
+    member = member.replace("-", "_")
+    if hasattr(self, member):
+      setattr(self, member, value)
+    else:
+      print "Invalid option: --module-" + member + " " + value
+    return
+  
+  def setName(self, name):
+    self.name = name
+    return
+  
+  def setDesc(self, desc):
+    self.desc = desc
+    return
+  
+  def setVersion(self, version):
+    self.version = version
+    return
+  
+  def setVendor(self, vendor):
+    self.vendor = vendor
+    return
+  
+  def setCategory(self, vategory):
+    self.category = category
+    return
 
-	def setCompType(self, comp_type):
-		self.comp_type = comp_type
-		return
+  def setCompType(self, comp_type):
+    self.comp_type = comp_type
+    return
 
-	def setActType(self, act):
-		self.act_type = act_type
-		return
+  def setActType(self, act):
+    self.act_type = act_type
+    return
 
-	def setMaxInst(self, max_inst):
-		self.max_inst = max_inst
-		return
+  def setMaxInst(self, max_inst):
+    self.max_inst = max_inst
+    return
 
-	def printProfile(self):
-		print "----- Module Profile -----"
-		print "Name           ", self.name
-		print "Description    ", self.desc
-		print "Version        ", self.version
-		print "Vendor         ", self.vendor
-		print "Category       ", self.category
-		print "Component Type ", self.comp_type
-		print "Activity Type  ", self.act_type
-		print "Max Instancese ", self.max_inst
-		print "Language       ", self.lang
-		return
-		
-		
+  def printProfile(self):
+    print "----- Module Profile -----"
+    print "Name           ", self.name
+    print "Description    ", self.desc
+    print "Version        ", self.version
+    print "Vendor         ", self.vendor
+    print "Category       ", self.category
+    print "Component Type ", self.comp_type
+    print "Activity Type  ", self.act_type
+    print "Max Instancese ", self.max_inst
+    print "Language       ", self.lang
+    return
+    
+    
 
 def MakeModuleProfile(opts):
-	"""
-	MakeModuleProfile
+  """
+  MakeModuleProfile
 
-	Create ModuleProfile list from command options
-	"""
-	prof = ModuleProfile()
-	for opt, arg in opts:
-		if opt.find("--module-") == 0:
-			var = opt.replace("--module-","")
-			prof.setValue(var, arg)
-	return prof
+  Create ModuleProfile list from command options
+  """
+  prof = ModuleProfile()
+  for opt, arg in opts:
+    if opt.find("--module-") == 0:
+      var = opt.replace("--module-","")
+      prof.setValue(var, arg)
+  return prof
 
 
 def MakeConfig(opts):
-	"""
-	MakeConfigurationParameters
+  """
+  MakeConfigurationParameters
 
-	Create Configuration list from command options
-	"""
-	prof_list = []
-	cnt = 0
-	for opt, arg in opts:
-		if opt == ("--config"):
-			try:
-				# For C++ scope resolution operator 
-				arg = re.sub("::", "@@", arg)
-				name, type, default = arg.split(":")
-				name    = re.sub("@@", "::", name)
-				type    = re.sub("@@", "::", type)
-				default = re.sub("@@", "::", default)
-			except:
-				sys.stderr("Invalid option: " \
-					   + opt \
-					   + "=" \
-					   + arg)
-			prof = Struct()
-			prof.name = name
-                        prof.l_name = name.lower()
-                        prof.u_name = name.upper()
-			prof.type = type
-			prof.default  = default
-			prof_list.append(prof)
-			cnt += 1
-	return prof_list
+  Create Configuration list from command options
+  """
+  prof_list = []
+  cnt = 0
+  for opt, arg in opts:
+    if opt == ("--config"):
+      try:
+        # For C++ scope resolution operator 
+        arg = re.sub("::", "@@", arg)
+        name, type, default = arg.split(":")
+        name    = re.sub("@@", "::", name)
+        type    = re.sub("@@", "::", type)
+        default = re.sub("@@", "::", default)
+      except:
+        sys.stderr("Invalid option: " \
+             + opt \
+             + "=" \
+             + arg)
+      prof = Struct()
+      prof.name = name
+      prof.l_name = name.lower()
+      prof.u_name = name.upper()
+      prof.type = type
+      prof.default  = default
+      prof_list.append(prof)
+      cnt += 1
+  return prof_list
 
 
 def MakeDataPort(opts, port_type):
-	"""
-	MakePortProfile
+  """
+  MakePortProfile
 
-	Create PortProfile list from command options
-	"""
-	prof_list = []
-	cnt = 0
-	for opt, arg in opts:
-		if opt == ("--" + port_type):
-			try:
-				name, type = arg.split(":")
-			except:
-				sys.stderr("Invalid option: " \
-					   + opt \
-					   + "=" \
-					   + arg)
-			prof = Struct()
-			prof.name = name
-			prof.type = type
-			prof.num  = cnt
-			prof_list.append(prof)
-			cnt += 1
-	return prof_list
+  Create PortProfile list from command options
+  """
+  prof_list = []
+  cnt = 0
+  for opt, arg in opts:
+    if opt == ("--" + port_type):
+      try:
+        name, type = arg.split(":")
+      except:
+        sys.stderr("Invalid option: " \
+             + opt \
+             + "=" \
+             + arg)
+      prof = Struct()
+      prof.name = name
+      prof.type = type
+      prof.num  = cnt
+      prof_list.append(prof)
+      cnt += 1
+  return prof_list
 
 
 def MakePortInterface(opts, port_type):
-	"""
-	MakePortInterface
+  """
+  MakePortInterface
 
-	Create Port interface profile list from command options
-	"""
-	prof_list = []
-	cnt = 0
-	for opt, arg in opts:
-		if opt == "--" + port_type:
-			try:
-				port, name, type = arg.split(":")
-			except:
-				sys.stderr.write("Invalid option: " \
-						 + opt \
-						 + "=" \
-						 + arg)
-			prof = Struct()
-			prof.port = port
-			prof.name = name
-			prof.type = type
-			prof.num  = cnt
-			prof_list.append(prof)
-			cnt += 1
-	return prof_list
+  Create Port interface profile list from command options
+  """
+  prof_list = []
+  cnt = 0
+  for opt, arg in opts:
+    if opt == "--" + port_type:
+      try:
+        port, name, type = arg.split(":")
+      except:
+        sys.stderr.write("Invalid option: " \
+             + opt \
+             + "=" \
+             + arg)
+      prof = Struct()
+      prof.port = port
+      prof.name = name
+      prof.type = type
+      prof.num  = cnt
+      prof_list.append(prof)
+      cnt += 1
+  return prof_list
 
 def MakeCorbaPort(opts):
-	"""
-	MakeCorbaPort
+  """
+  MakeCorbaPort
 
-	Create Corba Port profile list from command options
-	"""
-	prof_list = []
-	cnt = 0
-	for opt, arg in opts:
-		if opt == ("--" + "service") or opt == ("--" + "consumer"):
-			try:
-				port, name, type = arg.split(":")
-			except:
-				sys.stderr.write("Invalid option: " \
-						 + opt \
-						 + "=" \
-						 + arg)
-			dup = False
-			for p in prof_list:
-				if p.name == port:
-					dup = True
-			if dup == False:
-				prof = Struct()
-				prof.name = port
-				prof.num  = cnt
-				prof_list.append(prof)
-				cnt += 1
-	return prof_list
+  Create Corba Port profile list from command options
+  """
+  prof_list = []
+  cnt = 0
+  for opt, arg in opts:
+    if opt == ("--" + "service") or opt == ("--" + "consumer"):
+      try:
+        port, name, type = arg.split(":")
+      except:
+        sys.stderr.write("Invalid option: " \
+             + opt \
+             + "=" \
+             + arg)
+      dup = False
+      for p in prof_list:
+        if p.name == port:
+          dup = True
+      if dup == False:
+        prof = Struct()
+        prof.name = port
+        prof.num  = cnt
+        prof_list.append(prof)
+        cnt += 1
+  return prof_list
 
 
 
 def MakeServiceIDL(opts):
-	"""
-	MakeServiceIDL
+  """
+  MakeServiceIDL
 
-	Create ServiceIDL list from command options
-	"""
-	idl_list = []
+  Create ServiceIDL list from command options
+  """
+  idl_list = []
 
-	for opt, arg in opts:
-		if opt.find("--service-idl") == 0:
-			svc_idl = Struct()
-			svc_idl.idl_fname = arg
-			svc_idl.idl_basename, dummy = arg.split(".")
-			idl_list.append(svc_idl)
-	return idl_list
+  for opt, arg in opts:
+    if opt.find("--service-idl") == 0:
+      svc_idl = Struct()
+      svc_idl.idl_fname = arg
+      svc_idl.idl_basename, dummy = arg.split(".")
+      idl_list.append(svc_idl)
+  return idl_list
 
 
 def MakeConsumerIDL(opts):
-	idl_list = []
-	for opt, arg in opts:
-		if opt == "--consumer-idl":
-			svc_idl = Struct()
-			svc_idl.idl_fname = arg
-			svc_idl.idl_basename, dummy = arg.split(".")
-			idl_list.append(svc_idl)
-	return idl_list
+  idl_list = []
+  for opt, arg in opts:
+    if opt == "--consumer-idl":
+      svc_idl = Struct()
+      svc_idl.idl_fname = arg
+      svc_idl.idl_basename, dummy = arg.split(".")
+      idl_list.append(svc_idl)
+  return idl_list
 
 
 
 def find_opt(opts, value, default):
-	for opt, arg in opts:
-		if opt.find(value) == 0:
-			return arg
+  for opt, arg in opts:
+    if opt.find(value) == 0:
+      return arg
 
-	return default
+  return default
 
 
 def find_opt_list(opts, value, default):
-	list = []
-	if len(default) > 0:
-		list += default
-	for opt, arg in opts:
-		if opt == ("--" + value):
-			list.append(arg)
-	return list
+  list = []
+  if len(default) > 0:
+    list += default
+  for opt, arg in opts:
+    if opt == ("--" + value):
+      list.append(arg)
+  return list
 
 
 class Backend:
-	def __init__(self, mod_name, mod):
-		self.mod = mod
-		self.obj = getattr(mod, mod_name)
-		self.mod_name = mod_name
+  def __init__(self, mod_name, mod):
+    self.mod = mod
+    self.obj = getattr(mod, mod_name)
+    self.mod_name = mod_name
 
 
 class BackendLoader:
-	def __init__(self):
-		self.backends = {}
-		self.opts = []
-		self.available()
-		return
-		
+  def __init__(self):
+    self.backends = {}
+    self.opts = []
+    self.available()
+    return
+    
 
-	def available(self):
-		path_list = [pyhelper_path, "."]
-		for path in path_list:
-			for f in os.listdir(path):
-				if re.compile("_gen.py$").search(f):
-					mod_name = f.replace(".py", "")
-					opt_name = f.replace("_gen.py", "")
-					mod = __import__(mod_name, globals(), locals(), [])
-					try:
-						mod.usage()
-						be = Backend(mod_name, mod)
-						self.backends[opt_name] = be
-					except:
-						print "Invalid backend: ", f
-						pass
+  def available(self):
+    path_list = [pyhelper_path, "."]
+    for path in path_list:
+      for f in os.listdir(path):
+        if re.compile("_gen.py$").search(f):
+          mod_name = f.replace(".py", "")
+          opt_name = f.replace("_gen.py", "")
+          mod = __import__(mod_name, globals(), locals(), [])
+          try:
+            mod.usage()
+            be = Backend(mod_name, mod)
+            self.backends[opt_name] = be
+          except:
+            print "Invalid backend: ", f
+            pass
 
-		return self.backends
+    return self.backends
 
 
-	def check_args(self, args):
-		for opt in args:
-			if opt.find('-b') == 0:
-				backend_name = opt.replace("-b", "")
-				if self.backends.has_key(backend_name):
-					self.opts.append(backend_name)
-				else:
-					print "No such backend: ", backend_name
-					sys.exit(-1)
-			elif opt.find('--backend=') == 0:
-				backend_name = opt.replace("--backend=", "")
-				if self.backends.has_key(backend_name):
-					self.opts.append(backend_name)
-				else:
-					print "No such backend: ", backend_name
-					sys.exit(-1)
-		return self.opts
+  def check_args(self, args):
+    for opt in args:
+      if opt.find('-b') == 0:
+        backend_name = opt.replace("-b", "")
+        if self.backends.has_key(backend_name):
+          self.opts.append(backend_name)
+        else:
+          print "No such backend: ", backend_name
+          sys.exit(-1)
+      elif opt.find('--backend=') == 0:
+        backend_name = opt.replace("--backend=", "")
+        if self.backends.has_key(backend_name):
+          self.opts.append(backend_name)
+        else:
+          print "No such backend: ", backend_name
+          sys.exit(-1)
+    return self.opts
 
 
-	def get_opt_fmts(self):
-		fmts = []
-		for be in self.opts:
-			fmts += self.backends[be].mod.get_opt_fmt()
-		return fmts
+  def get_opt_fmts(self):
+    fmts = []
+    for be in self.opts:
+      fmts += self.backends[be].mod.get_opt_fmt()
+    return fmts
 
 
-	def usage_available(self):
-		print "The following backends are available."
-		space = 10
-		for key in self.backends:
-			desc = self.backends[key].mod.description()			
-			print "    -b" + key + ("." * (space - len(key))) + desc
-		print """
+  def usage_available(self):
+    print "The following backends are available."
+    space = 10
+    for key in self.backends:
+      desc = self.backends[key].mod.description()     
+      print "    -b" + key + ("." * (space - len(key))) + desc
+    print """
 Backend [xxx] specific help can be available by the following options.
     -bxxx --help|-h or --backend=xxx --help|-h
-	"""
-		return
+  """
+    return
 
 
-	def usage(self):
-		for be in self.opts:
-			print self.backends[be].mod.usage()			
-			print ""
-		return
+  def usage(self):
+    for be in self.opts:
+      print self.backends[be].mod.usage()     
+      print ""
+    return
 
-	def usage_short(self):
-		for be in self.opts:
-			print self.backends[be].mod.usage_short()
-			print ""
-		return
+  def usage_short(self):
+    for be in self.opts:
+      print self.backends[be].mod.usage_short()
+      print ""
+    return
 
 
-	def generate_code(self, data, opts):
-		for be in self.opts:
-			self.backends[be].obj(data, opts).print_all()
-		return
-		
+  def generate_code(self, data, opts):
+    for be in self.opts:
+      self.backends[be].obj(data, opts).print_all()
+    return
+    
 
 def fmtd_args(width, args):
-	arg_fmt = [""]
-	w = 0
-	line = 0
-	for a in args:
-		w += len(a) + 1
-		if w > width:
-			w = len(a) + 1
-			line += 1
-			arg_fmt.append("")
-		arg_fmt[line] += a + " "
-	return arg_fmt
+  arg_fmt = [""]
+  w = 0
+  line = 0
+  for a in args:
+    w += len(a) + 1
+    if w > width:
+      w = len(a) + 1
+      line += 1
+      arg_fmt.append("")
+    arg_fmt[line] += a + " "
+  return arg_fmt
 
 
 
 def main():
-	global opt_args_fmt
-	global conf_path
+  global opt_args_fmt
+  global conf_path
 
-	backends = BackendLoader()
-	backends.check_args(sys.argv[1:])
-	opt_args_fmt += backends.get_opt_fmts()
+  backends = BackendLoader()
+  backends.check_args(sys.argv[1:])
+  opt_args_fmt += backends.get_opt_fmts()
 
-	try:
-		opts, args = getopt.getopt(sys.argv[1:], "b:ho:v", opt_args_fmt)
-	except getopt.GetoptError:
-		print "Error: Invalid option.", getopt.GetoptError
-		usage_short()
-		backends.usage_available()
-		sys.exit(-1)
+  try:
+    opts, args = getopt.getopt(sys.argv[1:], "b:ho:v", opt_args_fmt)
+  except getopt.GetoptError:
+    print "Error: Invalid option.", getopt.GetoptError
+    usage_short()
+    backends.usage_available()
+    sys.exit(-1)
 
-	if not opts:
-		usage_short()
-		backends.usage_available()
-		sys.exit(-1)
+  if not opts:
+    usage_short()
+    backends.usage_available()
+    sys.exit(-1)
 
-	output = None
-	verbose = False
-	output_cxx = False
-	output_python = False
+  output = None
+  verbose = False
+  output_cxx = False
+  output_python = False
 
-	for o, a in opts:
-		if o == "-v":
-			verbose = True
-		if o in ("-h"):
-			usage_short()
-			backends.usage_available()
-			backends.usage_short()
-			sys.exit(0)
-		if o in ("--help"):
-			usage()
-			backends.usage_available()
-			backends.usage()
-			sys.exit(0)
-		if o in ("-o", "--output"):
-			output = a
-			# ...
+  for o, a in opts:
+    if o == "-v":
+      verbose = True
+    if o in ("-h"):
+      usage_short()
+      backends.usage_available()
+      backends.usage_short()
+      sys.exit(0)
+    if o in ("--help"):
+      usage()
+      backends.usage_available()
+      backends.usage()
+      sys.exit(0)
+    if o in ("-o", "--output"):
+      output = a
+      # ...
 
-	prefix = [' ']
-	if conf_path[0] != '':
-		prefix = os.popen("rtm-config --prefix", "r").read().split("\n")
-	idl_inc = []
-	if prefix[0] != '':
-		idl_inc.append(prefix[0] + "/include/rtm/idl")
-		idl_inc.append(prefix[0] + "/include/rtm")
-	idl_inc.append(".")
+  prefix = [' ']
+  if conf_path[0] != '':
+    prefix = os.popen("rtm-config --prefix", "r").read().split("\n")
+  idl_inc = []
+  if prefix[0] != '':
+    idl_inc.append(prefix[0] + "/include/rtm/idl")
+    idl_inc.append(prefix[0] + "/include/rtm")
+  idl_inc.append(".")
 
-	# Create dictionary for ezt
-	data = {
-		'module':       MakeModuleProfile(opts),
+  # Create dictionary for ezt
+  data = {
+    'module':       MakeModuleProfile(opts),
                 'config':       MakeConfig(opts),
-		'inport':       MakeDataPort(opts, "inport"),
-		'outport':      MakeDataPort(opts, "outport"),
-		'service':      MakePortInterface(opts, "service"),
-		'consumer':     MakePortInterface(opts, "consumer"),
+    'inport':       MakeDataPort(opts, "inport"),
+    'outport':      MakeDataPort(opts, "outport"),
+    'service':      MakePortInterface(opts, "service"),
+    'consumer':     MakePortInterface(opts, "consumer"),
                 'corbaport':    MakeCorbaPort(opts),
-		'service_idl':  MakeServiceIDL(opts),
-		'consumer_idl': MakeConsumerIDL(opts),
-		'idl_include':  find_opt_list(opts, "--idl-include", idl_inc),
-		'fname':        output,
-		'args':         sys.argv,
-		'fmtd_args':    fmtd_args(70, sys.argv)
-		}
+    'service_idl':  MakeServiceIDL(opts),
+    'consumer_idl': MakeConsumerIDL(opts),
+    'idl_include':  find_opt_list(opts, "--idl-include", idl_inc),
+    'fname':        output,
+    'args':         sys.argv,
+    'fmtd_args':    fmtd_args(70, sys.argv)
+    }
 
-	if data['fname'] == None:
-		data['fname'] = data['module'].name
+  if data['fname'] == None:
+    data['fname'] = data['module'].name
 
-	backends.generate_code(data, opts)
+  backends.generate_code(data, opts)
 
-	import README_src
-	readme_src = README_src.README_src(data)
-	readme_src.print_all()
-	return
-		
+  import README_src
+  readme_src = README_src.README_src(data)
+  readme_src.print_all()
+  return
+    
 
 if __name__ == "__main__":
-	main()
+  main()

Copied: trunk/OpenRTM-aist-Python/OpenRTM_aist/utils/rtcd/README (from rev 395, branches/RELENG_1_0/OpenRTM-aist-Python/OpenRTM_aist/utils/rtcd/README)
===================================================================
(Binary files differ)

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/utils/rtcd/rtc.conf
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/utils/rtcd/rtc.conf	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/utils/rtcd/rtc.conf	2011-09-21 07:57:38 UTC (rev 479)
@@ -11,5 +11,8 @@
 													 ../examples/Python/SimpleService, \
 													 ../examples/Python/TkJoyStick, \
 													 ../components/
+manager.is_master: YES
+manager.shutdown_on_nortcs: NO
+
 #manager.modules.preload: ConfigSample, ConsoleInl, ConsoleOut
 #manager.components.precreate: ConfigSample, ConsoleIn, ConsoleOut

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/utils/rtcd/rtcd.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/utils/rtcd/rtcd.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/utils/rtcd/rtcd.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -21,9 +21,6 @@
 import OpenRTM_aist
 
 def main():
-  conf_file=os.path.join(os.path.dirname(__file__),"rtcd.conf")
-  sys.argv.append('-f')
-  sys.argv.append(conf_file)
   manager = OpenRTM_aist.Manager.init(sys.argv)
 
   manager.activateManager()


Property changes on: trunk/OpenRTM-aist-Python/OpenRTM_aist/utils/rtm-naming
___________________________________________________________________
Deleted: svn:mergeinfo
   - 

Modified: trunk/OpenRTM-aist-Python/OpenRTM_aist/version.py
===================================================================
--- trunk/OpenRTM-aist-Python/OpenRTM_aist/version.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/OpenRTM_aist/version.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 # -*- coding: euc-jp -*-
 
-openrtm_name    = "OpenRTM-aist-1.0.0"
-openrtm_version = "1.0.0"
+openrtm_name    = "OpenRTM-aist-1.1.0"
+openrtm_version = "1.1.0"
 corba_name      = "omniORB"

Modified: trunk/OpenRTM-aist-Python/installer/OpenRTM-aist-Python.wxs.in
===================================================================
--- trunk/OpenRTM-aist-Python/installer/OpenRTM-aist-Python.wxs.in	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/installer/OpenRTM-aist-Python.wxs.in	2011-09-21 07:57:38 UTC (rev 479)
@@ -1,29 +1,29 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">   
-  <?define ProductName = "OpenRTM-aist-1.0.0 for Python"?>
-  <Product Name="OpenRTM-aist-1.0.0 for Python" 
-           Id="11043B94-16BA-11DF-97DA-001C23DA0BDA"
+  <?define ProductName = "{% Product.Name %}-{% Product.Version %} for Python"?>
+  <Product Name="{% Product.Name %}-{% Product.Version %} for Python" 
+           Id="{% Product.Id %}"
            Language='$(var.language)'
            Codepage='$(var.codepage)'
-           Version="1.0.0" 
-           Manufacturer="AIST"
-           UpgradeCode="958ED570-5471-4E82-8378-01C6068F31C2">
+           Version="{% Product.Version %}" 
+           Manufacturer="{% Product.Manufacturer %}"
+           UpgradeCode="{% Product.UpgradeCode %}">
     <Package Id="*" 
              Keywords="Installer"
-             Description="OpenRTM-aist-Pyton Installer"
-             InstallerVersion="300"
+             Description="{% Package.Description %}"
+             InstallerVersion="{% Package.InstallerVersion %}"
              Languages='$(var.language)'
-             Compressed="yes"
+             Compressed="{% Package.Compressed %}"
              SummaryCodepage='$(var.codepage)' />
 
-    <!-- プロパティ -->
+    <!-- Property -->
     <Property Id='USERPROFILEDIR' Value='%USERPROFILE%' />
 
     <!-- RTSE Property-->
     <Property Id="RTSE_FILEEXISTS">
-      <DirectorySearch Id="CheckFileDir" Path="C:\Program Files">
+      <DirectorySearch Id="CheckFileDir" Path="C:\Program Files\OpenRTM-aist\{% Product.ShortVersion %}">
         <DirectorySearch Id="CheckFileDir2" Path ="OpenRTP">
-          <DirectorySearch Id="CheckFileDir3" Path ="RTSystemEditor">
+          <DirectorySearch Id="CheckFileDir3" Path ="{% Product.ShortVersion %}\RTSystemEditor">
             <FileSearch Id="CheckFile" Name="RTSystemEditorRCP.exe" />
           </DirectorySearch>
         </DirectorySearch>
@@ -60,8 +60,7 @@
     <SetProperty Id="PYTHON26DIR" After="AppSearch" Value="[PYTHON26]">
     </SetProperty>
 
-    <!-- アップグレード -->
-    <Upgrade Id="958ED570-5471-4E82-8378-01C6068F31C2">
+    <Upgrade Id="{% Product.UpgradeCode %}">
       <UpgradeVersion OnlyDetect="yes"
                       Minimum="1.0.0"
                       Maximum="1.1.0"
@@ -69,7 +68,7 @@
                       IncludeMinimum="no" /> 
       <UpgradeVersion OnlyDetect="no"
                       Minimum="1.0.0"
-                      Maximum="1.0.0.1"
+                      Maximum="1.1.0.1"
                       Property="OLDERVERSIONBEINGUPGRADED"
                       IncludeMaximum="no" /> 
       <UpgradeVersion OnlyDetect='no' Property='PREVIOUSFOUND'
@@ -80,7 +79,6 @@
     <InstallExecuteSequence>
       <RemoveExistingProducts Before="InstallInitialize"/>
 
-      <!-- インストール完了時のIDLコンパイル実行 -->
       <Custom Action="IDLCOMPILE_PY24" After='InstallFinalize'>
 	NOT Installed AND PYTHON24
       </Custom>
@@ -91,7 +89,6 @@
 	NOT Installed AND PYTHON26
       </Custom>
 
-      <!-- アンインストール時のフォルダー削除(IDLコンパイル分) -->
       <Custom Action="REMOVEFOLDER_PY24" Before='InstallInitialize'>
 	Installed AND PYTHON24
       </Custom>
@@ -102,18 +99,15 @@
 	Installed AND PYTHON26
       </Custom>
 
-      <!-- アンインストール時のフォルダー削除(examples/Python) -->
       <Custom Action="REMOVEFOLDER_RTM" Before='InstallInitialize'>Installed</Custom>
 
     </InstallExecuteSequence>
 
-    <!-- メディア -->
     <Media Id="1" Cabinet="OpenRTMpython.cab" EmbedCab="yes"/>
 
-    <!-- 常にAll Users へ登録する場合は下記を有効にする -->
+    <!-- enable this value when you want register to ALL User -->
     <!-- <Property Id="ALLUSERS" Value="1" /> -->
 
-    <!-- インストール条件判定 -->
     <Condition Message="[ProductName] requires python 2.4, 2.5 or 2.6">
       <![CDATA[Installed OR (PYTHON24 <> "" OR PYTHON25 <> "" OR PYTHON26 <> "")]]>
     </Condition>
@@ -195,6 +189,45 @@
                 </Component>
               </Directory>
 
+              <!-- observer -->
+              <Directory Id="Py24_ext" Name="ext">
+                <Component Id="Py24_RtmOpenrtm_aistExt" 
+                           Guid="{% RtmOpenrtm_aist24Ext.GUID %}">
+                  <RemoveFile Id='Py24_RtmOpenrtm_aistExt' On='uninstall' Name='*.pyc' />
+                  <RemoveFolder Id='Py24_RtmOpenrtm_aistExt_f' On='uninstall' />
+                  {% for file in RtmOpenrtm_aist24Ext.Files %}
+                  <File Id="{% file.Id %}" Name="{% file.Name %}"
+                        DiskId="1" Source="{% file.Source %}">
+                  </File>
+                  {% endfor %}
+                </Component>
+				<Directory Id="Py24_sdo" Name="sdo">
+                  <Component Id="Py24_RtmOpenrtm_aistExtSdo" 
+							 Guid="{% RtmOpenrtm_aist24ExtSdo.GUID %}">
+					<RemoveFile Id='Py24_RtmOpenrtm_aistExtSdo' On='uninstall' Name='*.pyc' />
+					<RemoveFolder Id='Py24_RtmOpenrtm_aistExtSdo_f' On='uninstall' />
+					{% for file in RtmOpenrtm_aist24ExtSdo.Files %}
+					<File Id="{% file.Id %}" Name="{% file.Name %}"
+                          DiskId="1" Source="{% file.Source %}">
+					</File>
+					{% endfor %}
+                  </Component>
+				  <Directory Id="Py24_observer" Name="observer">
+					<Component Id="Py24_RtmOpenrtm_aistExtSdoObserver" 
+							   Guid="{% RtmOpenrtm_aist24ExtSdoObserver.GUID %}">
+					  <RemoveFile Id='Py24_RtmOpenrtm_aistExtSdoObserver' On='uninstall' Name='*.pyc' />
+					  <RemoveFolder Id='Py24_RtmOpenrtm_aistExtSdoObserver_f' On='uninstall' />
+					  {% for file in RtmOpenrtm_aist24ExtSdoObserver.Files %}
+					  <File Id="{% file.Id %}" Name="{% file.Name %}"
+							DiskId="1" Source="{% file.Source %}">
+					  </File>
+					  {% endfor %}
+					</Component>
+				  </Directory>
+
+				</Directory>
+              </Directory>
+
               <!-- RTM_IDL -->
               <Directory Id="Py24_RTM_IDL" Name="RTM_IDL">
                 <Component Id="Py24_RtmOpenrtm_aistRtm_idl" 
@@ -308,6 +341,45 @@
                 </Component>
               </Directory>
 
+              <!-- observer -->
+              <Directory Id="Py25_ext" Name="ext">
+                <Component Id="Py25_RtmOpenrtm_aistExt" 
+                           Guid="{% RtmOpenrtm_aist25Ext.GUID %}">
+                  <RemoveFile Id='Py25_RtmOpenrtm_aistExt' On='uninstall' Name='*.pyc' />
+                  <RemoveFolder Id='Py25_RtmOpenrtm_aistExt_f' On='uninstall' />
+                  {% for file in RtmOpenrtm_aist25Ext.Files %}
+                  <File Id="{% file.Id %}" Name="{% file.Name %}"
+                        DiskId="1" Source="{% file.Source %}">
+                  </File>
+                  {% endfor %}
+                </Component>
+				<Directory Id="Py25_sdo" Name="sdo">
+                  <Component Id="Py25_RtmOpenrtm_aistExtSdo" 
+							 Guid="{% RtmOpenrtm_aist25ExtSdo.GUID %}">
+					<RemoveFile Id='Py25_RtmOpenrtm_aistExtSdo' On='uninstall' Name='*.pyc' />
+					<RemoveFolder Id='Py25_RtmOpenrtm_aistExtSdo_f' On='uninstall' />
+					{% for file in RtmOpenrtm_aist25ExtSdo.Files %}
+					<File Id="{% file.Id %}" Name="{% file.Name %}"
+                          DiskId="1" Source="{% file.Source %}">
+					</File>
+					{% endfor %}
+                  </Component>
+				  <Directory Id="Py25_observer" Name="observer">
+					<Component Id="Py25_RtmOpenrtm_aistExtSdoObserver" 
+							   Guid="{% RtmOpenrtm_aist25ExtSdoObserver.GUID %}">
+					  <RemoveFile Id='Py25_RtmOpenrtm_aistExtSdoObserver' On='uninstall' Name='*.pyc' />
+					  <RemoveFolder Id='Py25_RtmOpenrtm_aistExtSdoObserver_f' On='uninstall' />
+					  {% for file in RtmOpenrtm_aist25ExtSdoObserver.Files %}
+					  <File Id="{% file.Id %}" Name="{% file.Name %}"
+							DiskId="1" Source="{% file.Source %}">
+					  </File>
+					  {% endfor %}
+					</Component>
+				  </Directory>
+
+				</Directory>
+              </Directory>
+
               <!-- RTM_IDL -->
               <Directory Id="Py25_RTM_IDL" Name="RTM_IDL">
                 <Component Id="Py25_RtmOpenrtm_aistRtm_idl" 
@@ -421,6 +493,45 @@
                 </Component>
               </Directory>
 
+              <!-- observer -->
+              <Directory Id="Py26_ext" Name="ext">
+                <Component Id="Py26_RtmOpenrtm_aistExt" 
+                           Guid="{% RtmOpenrtm_aist26Ext.GUID %}">
+                  <RemoveFile Id='Py26_RtmOpenrtm_aistExt' On='uninstall' Name='*.pyc' />
+                  <RemoveFolder Id='Py26_RtmOpenrtm_aistExt_f' On='uninstall' />
+                  {% for file in RtmOpenrtm_aist26Ext.Files %}
+                  <File Id="{% file.Id %}" Name="{% file.Name %}"
+                        DiskId="1" Source="{% file.Source %}">
+                  </File>
+                  {% endfor %}
+                </Component>
+				<Directory Id="Py26_sdo" Name="sdo">
+                  <Component Id="Py26_RtmOpenrtm_aistExtSdo" 
+							 Guid="{% RtmOpenrtm_aist26ExtSdo.GUID %}">
+					<RemoveFile Id='Py26_RtmOpenrtm_aistExtSdo' On='uninstall' Name='*.pyc' />
+					<RemoveFolder Id='Py26_RtmOpenrtm_aistExtSdo_f' On='uninstall' />
+					{% for file in RtmOpenrtm_aist26ExtSdo.Files %}
+					<File Id="{% file.Id %}" Name="{% file.Name %}"
+                          DiskId="1" Source="{% file.Source %}">
+					</File>
+					{% endfor %}
+                  </Component>
+				  <Directory Id="Py26_observer" Name="observer">
+					<Component Id="Py26_RtmOpenrtm_aistExtSdoObserver" 
+							   Guid="{% RtmOpenrtm_aist26ExtSdoObserver.GUID %}">
+					  <RemoveFile Id='Py26_RtmOpenrtm_aistExtSdoObserver' On='uninstall' Name='*.pyc' />
+					  <RemoveFolder Id='Py26_RtmOpenrtm_aistExtSdoObserver_f' On='uninstall' />
+					  {% for file in RtmOpenrtm_aist26ExtSdoObserver.Files %}
+					  <File Id="{% file.Id %}" Name="{% file.Name %}"
+							DiskId="1" Source="{% file.Source %}">
+					  </File>
+					  {% endfor %}
+					</Component>
+				  </Directory>
+
+				</Directory>
+              </Directory>
+
               <!-- RTM_IDL -->
               <Directory Id="Py26_RTM_IDL" Name="RTM_IDL">
                 <Component Id="Py26_RtmOpenrtm_aistRtm_idl" 
@@ -460,10 +571,12 @@
       </Directory>
 
 
-      <!-- Program Files フォルダ -->
+      <!-- Program Files -->
       <Directory Id="ProgramFilesFolder" SourceName="PFILE">
-        <Directory Id="INSTALLLOCATION" Name="OpenRTM-aist">
-          <Directory Id="Version" Name="1.0">
+        <Directory Id="INSTALLLOCATION"
+				   Name="{% Product.Name %}">
+		  <Directory Id="Version"
+					 Name="{% Product.ShortVersion %}">
 
             <!-- bin -->
             <Directory Id="bin" Name="bin">
@@ -685,6 +798,11 @@
                                 Name="NXTRTC.py"
                                 Show="normal" WorkingDirectory="NXTRTC"/>
                       {% endif %}
+                      {% if file.Name is NXTRTC20.py %}
+                      <Shortcut Id="{% file.Name %}" Directory="ExpMenuFolder"
+                                Name="NXTRTC20.py"
+                                Show="normal" WorkingDirectory="NXTRTC"/>
+                      {% endif %}
                     </File>
                     {% endfor %}
                   </Component>
@@ -856,21 +974,21 @@
             <!-- end of examples -->
             </Directory>
 
+			<!-- rtmtools components -->
+			<?if $(env.INCLUDE_OPENRTP) = YES ?>
+			<?include OpenRTP_inc.wxs ?>
+			<?endif ?>
+			<!-- end of rtmtools -->
+
           </Directory>
         </Directory>
 
-	<!-- rtmtools components -->
-	<?if $(env.INCLUDE_OPENRTP) = YES ?>
-	<?include OpenRTP_inc.wxs ?>
-	<?endif ?>
-	<!-- end of rtmtools -->
-
-      <!-- end of Program Files フォルダ -->
+      <!-- end of Program Files Folder -->
       </Directory>
 
-      <!-- プログラムフォルダ -->
       <Directory Id="ProgramMenuFolder">
-        <Directory Id="AppMenuFolder" Name="OpenRTM-aist">
+        <Directory Id="AppMenuFolder"
+				   Name="{% Product.Name %} {% Product.ShortVersion %}">
           <Directory Id="PythonMenuFolder" Name="Python">
             <Directory Id="ToolsMenuFolder" Name="tools">
             </Directory>
@@ -887,7 +1005,7 @@
     <!-- end of SourceDir -->
     </Directory>
 
-    <!-- 機能定義 omniORBpy24 -->
+    <!-- Function definition omniORBpy24 -->
     <Feature Id="omniORBpy24" Level="1" Title="OpenRTM-aist for Python 2.4"
              ConfigurableDirectory="PYTHON24DIR">
       <Condition Level="1"><![CDATA[ NOT PYTHON24 =  ""]]></Condition>
@@ -1000,12 +1118,15 @@
         <ComponentRef Id="Py24_RtmOpenrtm_aistRoot"/>
         <ComponentRef Id="Py24_RtmOpenrtm_aist"/>
         <ComponentRef Id="Py24_RtmOpenrtm_aistRtctemplate"/>
+        <ComponentRef Id="Py24_RtmOpenrtm_aistExt"/>
+        <ComponentRef Id="Py24_RtmOpenrtm_aistExtSdo"/>
+        <ComponentRef Id="Py24_RtmOpenrtm_aistExtSdoObserver"/>
         <ComponentRef Id="Py24_RtmOpenrtm_aistRtm_idl"/>
         <ComponentRef Id="Py24_RtmOpenrtm_aistRtm_idlDevice_interfaces"/>
       </Feature>
     </Feature>
 
-    <!-- 機能定義 omniORBpy25 -->
+    <!-- Function definition omniORBpy25 -->
     <Feature Id="omniORBpy25" Level="1" Title="OpenRTM-aist for Python 2.5"
              ConfigurableDirectory="PYTHON25DIR">
       <Condition Level="1"><![CDATA[ NOT PYTHON25 =  ""]]></Condition>
@@ -1118,12 +1239,15 @@
         <ComponentRef Id="Py25_RtmOpenrtm_aistRoot"/>
         <ComponentRef Id="Py25_RtmOpenrtm_aist"/>
         <ComponentRef Id="Py25_RtmOpenrtm_aistRtctemplate"/>
+        <ComponentRef Id="Py25_RtmOpenrtm_aistExt"/>
+        <ComponentRef Id="Py25_RtmOpenrtm_aistExtSdo"/>
+        <ComponentRef Id="Py25_RtmOpenrtm_aistExtSdoObserver"/>
         <ComponentRef Id="Py25_RtmOpenrtm_aistRtm_idl"/>
         <ComponentRef Id="Py25_RtmOpenrtm_aistRtm_idlDevice_interfaces"/>
       </Feature>
     </Feature>
 
-    <!-- 機能定義 omniORBpy26 -->
+    <!-- Function definition omniORBpy26 -->
     <Feature Id="omniORBpy26" Level="1" Title="OpenRTM-aist for Python 2.6"
              ConfigurableDirectory="PYTHON26DIR">
       <Condition Level="1"><![CDATA[ NOT PYTHON26 =  ""]]></Condition>
@@ -1230,18 +1354,22 @@
       </Feature>
 
       <!-- OpenRTM_aist -->
-      <Feature Id="Py26_OpenRTM_aist" Level="1" Title="OpenRTM-aist (Python)">
+      <Feature Id="Py26_OpenRTM_aist" Level="1" Title="OpenRTM-aist (Python)"
+			   ConfigurableDirectory="INSTALLLOCATION">
         <ComponentRef Id="Py26_RtmOpenrtm_aistUtilsRtcprof"/>
         <ComponentRef Id="Py26_RtmOpenrtm_aistUtilsRtcd"/>
         <ComponentRef Id="Py26_RtmOpenrtm_aistRoot"/>
         <ComponentRef Id="Py26_RtmOpenrtm_aist"/>
         <ComponentRef Id="Py26_RtmOpenrtm_aistRtctemplate"/>
+        <ComponentRef Id="Py26_RtmOpenrtm_aistExt"/>
+        <ComponentRef Id="Py26_RtmOpenrtm_aistExtSdo"/>
+        <ComponentRef Id="Py26_RtmOpenrtm_aistExtSdoObserver"/>
         <ComponentRef Id="Py26_RtmOpenrtm_aistRtm_idl"/>
         <ComponentRef Id="Py26_RtmOpenrtm_aistRtm_idlDevice_interfaces"/>
       </Feature>
     </Feature>
 
-    <!-- 機能定義 OpenRTM-aist -->
+    <!-- Function definition OpenRTM-aist -->
     <Feature Id="ProductFeature" Level="1" Title="OpenRTM-aist (Python) common files"
              ConfigurableDirectory="INSTALLLOCATION">
 
@@ -1286,17 +1414,13 @@
 
       <!-- rtse rcp -->
       <Feature Id="RTSystemEditor" Level="1" Title="RTSystemEditor">
-	<ComponentRef Id="RTSystemEditor" />
-	<ComponentRef Id="configuration" />
-	<ComponentRef Id="plugins" />
-	<ComponentRef Id="org.eclipse.core.runtime.compatibility.registry_3.2.1.R32x_v20060907" />
+	<ComponentRef Id="Openrtp" />
+	<ComponentRef Id="OpenrtpConfiguration" />
+	<ComponentRef Id="OpenrtpPlugins" />
+	<ComponentRef Id="org.eclipse.core.runtime.compatibility.registry_3.2.200.v20080610" />
 	<ComponentRef Id="META_INF" />
-	<ComponentRef Id="org.eclipse.jdt.junit.runtime.nl1_3.2.1.v200609270227" />
-	<ComponentRef Id="META_INF_1" />
-	<ComponentRef Id="org.eclipse.jdt.junit.runtime_3.2.1.r321_v20060721" />
+	<ComponentRef Id="org.eclipse.equinox.launcher.win32.win32.x86_1.0.101.R34x_v20080731" />
 	<ComponentRef Id="META_INF_2" />
-	<ComponentRef Id="org.junit_3.8.1" />
-	<ComponentRef Id="META_INF_3" />
       </Feature>
     </Feature>
     <?endif ?>
@@ -1304,14 +1428,13 @@
     <WixVariable Id="WixUILicenseRtf" Value="License.rtf" />
     <WixVariable Id="WixUIBannerBmp" Value="Bitmaps/bannrbmp.bmp" />
     <WixVariable Id="WixUIDialogBmp" Value="Bitmaps/dlgbmp.bmp" />
+    <WixVariable Id="WixUICostingPopupOptOut" Value="1" Overridable="no" />
 
     <!-- <UIRef Id="WixUI_Mondo" /> -->
-    <!-- WixUI_Mondo にインストールの種類を選択するダイアログを追加したもの -->
     <UIRef Id="WixUI_Mondo_RTM" />
 
     <Property Id="WIXUI_INSTALLDIR" Value="INSTALLLOCATION" />
 
-    <!-- インストール完了時のIDLコンパイル実行 -->
     <CustomAction Id='IDLCOMPILE_PY24' Directory="PYTHON24DIR"
                   ExeCommand='"[bin]idlcompile.bat" "[bin]idlcompile.py" 2.4 "[Version]examples\Python"' 
                   Return='asyncWait' />
@@ -1324,7 +1447,6 @@
                   ExeCommand='"[bin]idlcompile.bat" "[bin]idlcompile.py" 2.6 "[Version]examples\Python"' 
                   Return='asyncWait' />
 
-    <!-- アンインストール時のフォルダー削除(IDLコンパイル分) -->
     <CustomAction Id='REMOVEFOLDER_PY24' Directory="PYTHON24DIR"
                   ExeCommand='cmd.exe /C RMDIR /Q /S Lib\\site-packages\\OpenRTM_aist' Return='ignore' />
     <CustomAction Id='REMOVEFOLDER_PY25' Directory="PYTHON25DIR"
@@ -1332,9 +1454,8 @@
     <CustomAction Id='REMOVEFOLDER_PY26' Directory="PYTHON26DIR"
                   ExeCommand='cmd.exe /C RMDIR /Q /S Lib\\site-packages\\OpenRTM_aist' Return='ignore' />
 
-      <!-- アンインストール時のフォルダー削除(examples/Python) -->
     <CustomAction Id='REMOVEFOLDER_RTM' Directory="INSTALLLOCATION"
-                  ExeCommand='cmd.exe /C RMDIR /Q /S 1.0\\examples\\Python' Return='ignore' />
+                  ExeCommand='cmd.exe /C RMDIR /Q /S {% Product.ShortVersion %}\\examples\\Python' Return='ignore' />
 
   </Product>
 </Wix>

Copied: trunk/OpenRTM-aist-Python/installer/OpenRTM-aist-Python.wxs.yaml.in (from rev 478, branches/RELENG_1_1/OpenRTM-aist-Python/installer/OpenRTM-aist-Python.wxs.yaml.in)
===================================================================
--- trunk/OpenRTM-aist-Python/installer/OpenRTM-aist-Python.wxs.yaml.in	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/installer/OpenRTM-aist-Python.wxs.yaml.in	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,17 @@
+Product:
+  Name: OpenRTM-aist
+  ShortName: OpenRTM
+  Id: 11043B94-16BA-11DF-97DA-001C23DA0BDA
+  Language: "1041"
+  Codepage: "932"
+  Version: 1.1.0
+  ShortVersion: 1.1
+  Manufacturer: AIST
+  UpgradeCode: 958ED570-5471-4E82-8378-01C6068F31C2
+Package:
+  Description: OpenRTM-aist-Python Installer
+  InstallerVersion: "300"
+  Languages: "1041"
+  Compressed: 'yes'
+  SummaryCodepage: "932"
+

Modified: trunk/OpenRTM-aist-Python/installer/OpenRTMpywxs.py
===================================================================
--- trunk/OpenRTM-aist-Python/installer/OpenRTMpywxs.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/installer/OpenRTMpywxs.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -39,6 +39,9 @@
     ("OpenRTM_aist/examples/TkLRFViewer",         "*.py *.conf"),
     ("OpenRTM_aist/examples/Templates",           "*.py *.xml"),
     ("OpenRTM_aist24",                            "*.py"),
+    ("OpenRTM_aist24/ext",                        "*.py"),
+    ("OpenRTM_aist24/ext/sdo",                    "*.py"),
+    ("OpenRTM_aist24/ext/sdo/observer",           "*.py *.idl rtc.conf setup.bat"),
     ("OpenRTM_aist24/utils/rtcd",                 "rtcd.py rtcd_python.bat rtcd_python.exe rtcd.conf"),
     ("OpenRTM_aist24/utils/rtcprof",              "rtcprof.py rtcprof_python.bat"),
     ("OpenRTM_aist24/utils/rtc-template",         "*.py"),
@@ -46,6 +49,9 @@
     ("OpenRTM_aist24/RTM_IDL/device_interfaces",  "*.py *.idl"),
     ("OpenRTM_aist24/root",                       "*.pth"),
     ("OpenRTM_aist25",                            "*.py"),
+    ("OpenRTM_aist25/ext",                        "*.py"),
+    ("OpenRTM_aist25/ext/sdo",                    "*.py"),
+    ("OpenRTM_aist25/ext/sdo/observer",           "*.py *.idl rtc.conf setup.bat"),
     ("OpenRTM_aist25/utils/rtcd",                 "rtcd.py rtcd_python.bat rtcd_python.exe rtcd.conf"),
     ("OpenRTM_aist25/utils/rtcprof",              "rtcprof.py rtcprof_python.bat"),
     ("OpenRTM_aist25/utils/rtc-template",         "*.py"),
@@ -53,6 +59,9 @@
     ("OpenRTM_aist25/RTM_IDL/device_interfaces",  "*.py *.idl"),
     ("OpenRTM_aist25/root",                       "*.pth"),
     ("OpenRTM_aist26",                            "*.py"),
+    ("OpenRTM_aist26/ext",                        "*.py"),
+    ("OpenRTM_aist26/ext/sdo",                    "*.py"),
+    ("OpenRTM_aist26/ext/sdo/observer",           "*.py *.idl rtc.conf setup.bat"),
     ("OpenRTM_aist26/utils/rtcd",                 "rtcd.py rtcd_python.bat rtcd_python.exe rtcd.conf"),
     ("OpenRTM_aist26/utils/rtcprof",              "rtcprof.py rtcprof_python.bat"),
     ("OpenRTM_aist26/utils/rtc-template",         "*.py"),
@@ -65,7 +74,7 @@
 ##
 base_dir = os.getenv("OPENRTM_PY")
 if base_dir == None:
-    base_dir = "C:\\distribution\\OpenRTM-aist-Python-1.0.0\\"
+    base_dir = "C:\\distribution\\OpenRTM-aist-Python-1.1.0\\"
 else:
     base_dir = base_dir.replace("\"", "")
     base_dir += "\\"

Modified: trunk/OpenRTM-aist-Python/installer/OpenRTP/OpenRTP_inc.wxs
===================================================================
--- trunk/OpenRTM-aist-Python/installer/OpenRTP/OpenRTP_inc.wxs	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/installer/OpenRTP/OpenRTP_inc.wxs	2011-09-21 07:57:38 UTC (rev 479)
@@ -1,181 +1,292 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Include xmlns="http://schemas.microsoft.com/wix/2006/wi">
+  <!-- root directory -->		
   <Directory Id="OpenRTP" Name="OpenRTP">
-    <Directory Id="RTSystemEditor" Name="RTSystemEditor">
-      <Component Id="RTSystemEditor" DiskId="1" Guid="2748F847-387F-4AB8-AC7C-0557AA4DD742">
-        <File Id="_.eclipseproduct" Name=".eclipseproduct" Source="C:\distribution\OpenRTP\RTSystemEditor\.eclipseproduct" />
-        <File Id="RTSystemEditorRCP.exe"
-	      Name="RTSystemEditorRCP.exe"
-	      Source="C:\distribution\OpenRTP\RTSystemEditor\RTSystemEditorRCP.exe">
-	  <Shortcut Id="RTSystemEditorRCP.exe"
-		    Directory="ToolsMenuFolder"
-		    Name="RT System Editor"
-		    Show="normal" WorkingDirectory="USERPROFILEDIR"/>
-	</File>
-        <File Id="startup.jar" Name="startup.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\startup.jar" />
-      </Component>
-      <Directory Id="configuration" Name="configuration">
-        <Component Id="configuration" DiskId="1" Guid="FBF727A3-5CBF-4AAA-B51F-430097A51090">
-          <File Id="config.ini" Name="config.ini" Source="C:\distribution\OpenRTP\RTSystemEditor\configuration\config.ini" />
-        </Component>
+    <Directory Id="OpenRTPVersion" Name="1.1">
+      <Component Id="Openrtp" Guid="6C2EF40F-8300-11E0-B1B3-00059A3C7800">
+	<Environment Id="OPENRTP_ROOT" Name="OPENRTP_ROOT" Action="set"
+		     System="yes" Value="[openrtpVersion]" />
+		<File Id="Openrtp0000" Name="RTSystemEditorRCP.exe"
+	      DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\RTSystemEditorRCP.exe">
+	  	  <Shortcut Id="Openrtp0000" Directory="ToolsMenuFolder"
+		    Name="RTSystemEditor"
+		    Arguments="-data "%USERPROFILE%\workspace""
+		    Show="normal" WorkingDirectory="OpenRTPVersion"/>
+	  	</File>
+		<File Id="Openrtp0001" Name=".eclipseproduct"
+	      DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\.eclipseproduct">
+	  	</File>
+	      </Component>
+      
+      <!-- configuration -->
+      <Directory Id="openrtp_configuration" Name="configuration">
+        <Component Id="OpenrtpConfiguration" Guid="6C3F95E1-8300-11E0-8815-00059A3C7800">
+	  	  <File Id="OpenrtpConfiguration0000" Name="config.ini"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\configuration\\config.ini">
+	  </File>
+	          </Component>
       </Directory>
-      <Directory Id="plugins" Name="plugins">
-        <Component Id="plugins" DiskId="1" Guid="D96B7838-06D5-4281-93AE-A5A6F694350D">
-          <File Id="com.ibm.icu.nl1_3.4.5.v200609270227.jar" Name="com.ibm.icu.nl1_3.4.5.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\com.ibm.icu.nl1_3.4.5.v200609270227.jar" />
-          <File Id="com.ibm.icu_3.4.5.20061213.jar" Name="com.ibm.icu_3.4.5.20061213.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\com.ibm.icu_3.4.5.20061213.jar" />
-          <File Id="jp.go.aist.rtm.nameserviceview.nl1_1.0.0.jar" Name="jp.go.aist.rtm.nameserviceview.nl1_1.0.0.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\jp.go.aist.rtm.nameserviceview.nl1_1.0.0.jar" />
-          <File Id="jp.go.aist.rtm.nameserviceview_1.0.0.jar" Name="jp.go.aist.rtm.nameserviceview_1.0.0.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\jp.go.aist.rtm.nameserviceview_1.0.0.jar" />
-          <File Id="jp.go.aist.rtm.repositoryView.nl1_1.0.0.jar" Name="jp.go.aist.rtm.repositoryView.nl1_1.0.0.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\jp.go.aist.rtm.repositoryView.nl1_1.0.0.jar" />
-          <File Id="jp.go.aist.rtm.repositoryView_1.0.0.jar" Name="jp.go.aist.rtm.repositoryView_1.0.0.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\jp.go.aist.rtm.repositoryView_1.0.0.jar" />
-          <File Id="jp.go.aist.rtm.systemeditor.nl1_1.0.0.jar" Name="jp.go.aist.rtm.systemeditor.nl1_1.0.0.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\jp.go.aist.rtm.systemeditor.nl1_1.0.0.jar" />
-          <File Id="jp.go.aist.rtm.systemeditor.RCP_1.0.0.jar" Name="jp.go.aist.rtm.systemeditor.RCP_1.0.0.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\jp.go.aist.rtm.systemeditor.RCP_1.0.0.jar" />
-          <File Id="jp.go.aist.rtm.systemeditor_1.0.0.jar" Name="jp.go.aist.rtm.systemeditor_1.0.0.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\jp.go.aist.rtm.systemeditor_1.0.0.jar" />
-          <File Id="jp.go.aist.rtm.toolscommon.nl1_1.0.0.jar" Name="jp.go.aist.rtm.toolscommon.nl1_1.0.0.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\jp.go.aist.rtm.toolscommon.nl1_1.0.0.jar" />
-          <File Id="jp.go.aist.rtm.toolscommon.profiles.nl1_1.0.0.jar" Name="jp.go.aist.rtm.toolscommon.profiles.nl1_1.0.0.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\jp.go.aist.rtm.toolscommon.profiles.nl1_1.0.0.jar" />
-          <File Id="jp.go.aist.rtm.toolscommon.profiles_1.0.0.jar" Name="jp.go.aist.rtm.toolscommon.profiles_1.0.0.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\jp.go.aist.rtm.toolscommon.profiles_1.0.0.jar" />
-          <File Id="jp.go.aist.rtm.toolscommon_1.0.0.jar" Name="jp.go.aist.rtm.toolscommon_1.0.0.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\jp.go.aist.rtm.toolscommon_1.0.0.jar" />
-          <File Id="org.eclipse.ant.core.nl1_3.1.100.v200609270227.jar" Name="org.eclipse.ant.core.nl1_3.1.100.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.ant.core.nl1_3.1.100.v200609270227.jar" />
-          <File Id="org.eclipse.ant.core_3.1.100.v20060531.jar" Name="org.eclipse.ant.core_3.1.100.v20060531.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.ant.core_3.1.100.v20060531.jar" />
-          <File Id="org.eclipse.core.commands.nl1_3.2.0.v200609270227.jar" Name="org.eclipse.core.commands.nl1_3.2.0.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.commands.nl1_3.2.0.v200609270227.jar" />
-          <File Id="org.eclipse.core.commands_3.2.0.I20060605_1400.jar" Name="org.eclipse.core.commands_3.2.0.I20060605-1400.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.commands_3.2.0.I20060605-1400.jar" />
-          <File Id="org.eclipse.core.contenttype.nl1_3.2.0.v200609270227.jar" Name="org.eclipse.core.contenttype.nl1_3.2.0.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.contenttype.nl1_3.2.0.v200609270227.jar" />
-          <File Id="org.eclipse.core.contenttype_3.2.0.v20060603.jar" Name="org.eclipse.core.contenttype_3.2.0.v20060603.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.contenttype_3.2.0.v20060603.jar" />
-          <File Id="org.eclipse.core.expressions.nl1_3.2.1.v200609270227.jar" Name="org.eclipse.core.expressions.nl1_3.2.1.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.expressions.nl1_3.2.1.v200609270227.jar" />
-          <File Id="org.eclipse.core.expressions_3.2.2.r322_v20070109a.jar" Name="org.eclipse.core.expressions_3.2.2.r322_v20070109a.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.expressions_3.2.2.r322_v20070109a.jar" />
-          <File Id="org.eclipse.core.filebuffers.nl1_3.2.1.v200609270227.jar" Name="org.eclipse.core.filebuffers.nl1_3.2.1.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.filebuffers.nl1_3.2.1.v200609270227.jar" />
-          <File Id="org.eclipse.core.filebuffers_3.2.1.r321_v20060721.jar" Name="org.eclipse.core.filebuffers_3.2.1.r321_v20060721.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.filebuffers_3.2.1.r321_v20060721.jar" />
-          <File Id="org.eclipse.core.filesystem.nl1_1.0.0.v200609270227.jar" Name="org.eclipse.core.filesystem.nl1_1.0.0.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.filesystem.nl1_1.0.0.v200609270227.jar" />
-          <File Id="org.eclipse.core.filesystem.win32.x86_1.0.0.v20060603.jar" Name="org.eclipse.core.filesystem.win32.x86_1.0.0.v20060603.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.filesystem.win32.x86_1.0.0.v20060603.jar" />
-          <File Id="org.eclipse.core.filesystem_1.0.0.v20060603.jar" Name="org.eclipse.core.filesystem_1.0.0.v20060603.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.filesystem_1.0.0.v20060603.jar" />
-          <File Id="org.eclipse.core.jobs.nl1_3.2.0.v200609270227.jar" Name="org.eclipse.core.jobs.nl1_3.2.0.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.jobs.nl1_3.2.0.v200609270227.jar" />
-          <File Id="org.eclipse.core.jobs_3.2.0.v20060603.jar" Name="org.eclipse.core.jobs_3.2.0.v20060603.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.jobs_3.2.0.v20060603.jar" />
-          <File Id="org.eclipse.core.resources.compatibility_3.2.0.v20060603.jar" Name="org.eclipse.core.resources.compatibility_3.2.0.v20060603.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.resources.compatibility_3.2.0.v20060603.jar" />
-          <File Id="org.eclipse.core.resources.nl1_3.2.1.v200609270227.jar" Name="org.eclipse.core.resources.nl1_3.2.1.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.resources.nl1_3.2.1.v200609270227.jar" />
-          <File Id="org.eclipse.core.resources.win32_3.2.0.v20060603.jar" Name="org.eclipse.core.resources.win32_3.2.0.v20060603.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.resources.win32_3.2.0.v20060603.jar" />
-          <File Id="org.eclipse.core.resources_3.2.2.R32x_v20061218.jar" Name="org.eclipse.core.resources_3.2.2.R32x_v20061218.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.resources_3.2.2.R32x_v20061218.jar" />
-          <File Id="org.eclipse.core.runtime.compatibility.auth.nl1_3.2.0.v200609270227.jar" Name="org.eclipse.core.runtime.compatibility.auth.nl1_3.2.0.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.runtime.compatibility.auth.nl1_3.2.0.v200609270227.jar" />
-          <File Id="org.eclipse.core.runtime.compatibility.auth_3.2.0.v20060601.jar" Name="org.eclipse.core.runtime.compatibility.auth_3.2.0.v20060601.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.runtime.compatibility.auth_3.2.0.v20060601.jar" />
-          <File Id="org.eclipse.core.runtime.compatibility.nl1_3.1.100.v200609270227.jar" Name="org.eclipse.core.runtime.compatibility.nl1_3.1.100.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.runtime.compatibility.nl1_3.1.100.v200609270227.jar" />
-          <File Id="org.eclipse.core.runtime.compatibility_3.1.100.v20060603.jar" Name="org.eclipse.core.runtime.compatibility_3.1.100.v20060603.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.runtime.compatibility_3.1.100.v20060603.jar" />
-          <File Id="org.eclipse.core.runtime.nl1_3.2.0.v200609270227.jar" Name="org.eclipse.core.runtime.nl1_3.2.0.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.runtime.nl1_3.2.0.v200609270227.jar" />
-          <File Id="org.eclipse.core.runtime_3.2.0.v20060603.jar" Name="org.eclipse.core.runtime_3.2.0.v20060603.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.runtime_3.2.0.v20060603.jar" />
-          <File Id="org.eclipse.core.variables.nl1_3.1.100.v200609270227.jar" Name="org.eclipse.core.variables.nl1_3.1.100.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.variables.nl1_3.1.100.v200609270227.jar" />
-          <File Id="org.eclipse.core.variables_3.1.100.v20060605.jar" Name="org.eclipse.core.variables_3.1.100.v20060605.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.variables_3.1.100.v20060605.jar" />
-          <File Id="org.eclipse.draw2d_3.2.2.v20070208.jar" Name="org.eclipse.draw2d_3.2.2.v20070208.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.draw2d_3.2.2.v20070208.jar" />
-          <File Id="org.eclipse.emf.common_2.2.2.v200808252119.jar" Name="org.eclipse.emf.common_2.2.2.v200808252119.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.emf.common_2.2.2.v200808252119.jar" />
-          <File Id="org.eclipse.emf.ecore.xmi_2.2.5.v200808252119.jar" Name="org.eclipse.emf.ecore.xmi_2.2.5.v200808252119.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.emf.ecore.xmi_2.2.5.v200808252119.jar" />
-          <File Id="org.eclipse.emf.ecore_2.2.4.v200808252119.jar" Name="org.eclipse.emf.ecore_2.2.4.v200808252119.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.emf.ecore_2.2.4.v200808252119.jar" />
-          <File Id="org.eclipse.equinox.common.nl1_3.2.0.v200609270227.jar" Name="org.eclipse.equinox.common.nl1_3.2.0.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.equinox.common.nl1_3.2.0.v200609270227.jar" />
-          <File Id="org.eclipse.equinox.common_3.2.0.v20060603.jar" Name="org.eclipse.equinox.common_3.2.0.v20060603.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.equinox.common_3.2.0.v20060603.jar" />
-          <File Id="org.eclipse.equinox.preferences.nl1_3.2.1.v200609270227.jar" Name="org.eclipse.equinox.preferences.nl1_3.2.1.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.equinox.preferences.nl1_3.2.1.v200609270227.jar" />
-          <File Id="org.eclipse.equinox.preferences_3.2.1.R32x_v20060717.jar" Name="org.eclipse.equinox.preferences_3.2.1.R32x_v20060717.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.equinox.preferences_3.2.1.R32x_v20060717.jar" />
-          <File Id="org.eclipse.equinox.registry.nl1_3.2.1.v200609270227.jar" Name="org.eclipse.equinox.registry.nl1_3.2.1.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.equinox.registry.nl1_3.2.1.v200609270227.jar" />
-          <File Id="org.eclipse.equinox.registry_3.2.1.R32x_v20060814.jar" Name="org.eclipse.equinox.registry_3.2.1.R32x_v20060814.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.equinox.registry_3.2.1.R32x_v20060814.jar" />
-          <File Id="org.eclipse.gef_3.2.2.v20070208.jar" Name="org.eclipse.gef_3.2.2.v20070208.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.gef_3.2.2.v20070208.jar" />
-          <File Id="org.eclipse.help.nl1_3.2.1.v200609270227.jar" Name="org.eclipse.help.nl1_3.2.1.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.help.nl1_3.2.1.v200609270227.jar" />
-          <File Id="org.eclipse.help_3.2.2.R322_v20061213.jar" Name="org.eclipse.help_3.2.2.R322_v20061213.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.help_3.2.2.R322_v20061213.jar" />
-          <File Id="org.eclipse.jface.nl1_3.2.1.v200609270227.jar" Name="org.eclipse.jface.nl1_3.2.1.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jface.nl1_3.2.1.v200609270227.jar" />
-          <File Id="org.eclipse.jface.text.nl1_3.2.1.v200609270227.jar" Name="org.eclipse.jface.text.nl1_3.2.1.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jface.text.nl1_3.2.1.v200609270227.jar" />
-          <File Id="org.eclipse.jface.text_3.2.2.r322_v20070104.jar" Name="org.eclipse.jface.text_3.2.2.r322_v20070104.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jface.text_3.2.2.r322_v20070104.jar" />
-          <File Id="org.eclipse.jface_3.2.2.M20061214_1200.jar" Name="org.eclipse.jface_3.2.2.M20061214-1200.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jface_3.2.2.M20061214-1200.jar" />
-          <File Id="org.eclipse.osgi.nl1_3.2.1.v200609270227.jar" Name="org.eclipse.osgi.nl1_3.2.1.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.osgi.nl1_3.2.1.v200609270227.jar" />
-          <File Id="org.eclipse.osgi_3.2.2.R32x_v20070118.jar" Name="org.eclipse.osgi_3.2.2.R32x_v20070118.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.osgi_3.2.2.R32x_v20070118.jar" />
-          <File Id="org.eclipse.pde.junit.runtime.nl1_3.2.0.v200609270227.jar" Name="org.eclipse.pde.junit.runtime.nl1_3.2.0.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.pde.junit.runtime.nl1_3.2.0.v200609270227.jar" />
-          <File Id="org.eclipse.pde.junit.runtime_3.2.0.v20060605.jar" Name="org.eclipse.pde.junit.runtime_3.2.0.v20060605.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.pde.junit.runtime_3.2.0.v20060605.jar" />
-          <File Id="org.eclipse.swt.nl1_3.2.1.v200609270227.jar" Name="org.eclipse.swt.nl1_3.2.1.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.swt.nl1_3.2.1.v200609270227.jar" />
-          <File Id="org.eclipse.swt.win32.win32.x86_3.2.2.v3236.jar" Name="org.eclipse.swt.win32.win32.x86_3.2.2.v3236.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.swt.win32.win32.x86_3.2.2.v3236.jar" />
-          <File Id="org.eclipse.swt_3.2.2.v3236b.jar" Name="org.eclipse.swt_3.2.2.v3236b.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.swt_3.2.2.v3236b.jar" />
-          <File Id="org.eclipse.text.nl1_3.2.0.v200609270227.jar" Name="org.eclipse.text.nl1_3.2.0.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.text.nl1_3.2.0.v200609270227.jar" />
-          <File Id="org.eclipse.text_3.2.0.v20060605_1400.jar" Name="org.eclipse.text_3.2.0.v20060605-1400.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.text_3.2.0.v20060605-1400.jar" />
-          <File Id="org.eclipse.ui.console.nl1_3.1.100.v200609270227.jar" Name="org.eclipse.ui.console.nl1_3.1.100.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.ui.console.nl1_3.1.100.v200609270227.jar" />
-          <File Id="org.eclipse.ui.console_3.1.100.v20060605.jar" Name="org.eclipse.ui.console_3.1.100.v20060605.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.ui.console_3.1.100.v20060605.jar" />
-          <File Id="org.eclipse.ui.editors.nl1_3.2.1.v200609270227.jar" Name="org.eclipse.ui.editors.nl1_3.2.1.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.ui.editors.nl1_3.2.1.v200609270227.jar" />
-          <File Id="org.eclipse.ui.editors_3.2.1.r321_v20060721.jar" Name="org.eclipse.ui.editors_3.2.1.r321_v20060721.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.ui.editors_3.2.1.r321_v20060721.jar" />
-          <File Id="org.eclipse.ui.forms.nl1_3.2.0.v200609270227.jar" Name="org.eclipse.ui.forms.nl1_3.2.0.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.ui.forms.nl1_3.2.0.v200609270227.jar" />
-          <File Id="org.eclipse.ui.forms_3.2.0.v20060602.jar" Name="org.eclipse.ui.forms_3.2.0.v20060602.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.ui.forms_3.2.0.v20060602.jar" />
-          <File Id="org.eclipse.ui.ide.nl1_3.2.1.v200609270227.jar" Name="org.eclipse.ui.ide.nl1_3.2.1.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.ui.ide.nl1_3.2.1.v200609270227.jar" />
-          <File Id="org.eclipse.ui.ide_3.2.1.M20060915_1030.jar" Name="org.eclipse.ui.ide_3.2.1.M20060915-1030.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.ui.ide_3.2.1.M20060915-1030.jar" />
-          <File Id="org.eclipse.ui.nl1_3.2.1.v200609270227.jar" Name="org.eclipse.ui.nl1_3.2.1.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.ui.nl1_3.2.1.v200609270227.jar" />
-          <File Id="org.eclipse.ui.views.nl1_3.2.1.v200609270227.jar" Name="org.eclipse.ui.views.nl1_3.2.1.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.ui.views.nl1_3.2.1.v200609270227.jar" />
-          <File Id="org.eclipse.ui.views_3.2.1.M20060906_0800.jar" Name="org.eclipse.ui.views_3.2.1.M20060906-0800.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.ui.views_3.2.1.M20060906-0800.jar" />
-          <File Id="org.eclipse.ui.win32_3.2.0.I20060605_1400.jar" Name="org.eclipse.ui.win32_3.2.0.I20060605-1400.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.ui.win32_3.2.0.I20060605-1400.jar" />
-          <File Id="org.eclipse.ui.workbench.nl1_3.2.1.v200609270227.jar" Name="org.eclipse.ui.workbench.nl1_3.2.1.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.ui.workbench.nl1_3.2.1.v200609270227.jar" />
-          <File Id="org.eclipse.ui.workbench.texteditor.nl1_3.2.0.v200609270227.jar" Name="org.eclipse.ui.workbench.texteditor.nl1_3.2.0.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.ui.workbench.texteditor.nl1_3.2.0.v200609270227.jar" />
-          <File Id="org.eclipse.ui.workbench.texteditor_3.2.0.v20060605_1400.jar" Name="org.eclipse.ui.workbench.texteditor_3.2.0.v20060605-1400.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.ui.workbench.texteditor_3.2.0.v20060605-1400.jar" />
-          <File Id="org.eclipse.ui.workbench_3.2.2.M20070119_0800.jar" Name="org.eclipse.ui.workbench_3.2.2.M20070119-0800.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.ui.workbench_3.2.2.M20070119-0800.jar" />
-          <File Id="org.eclipse.ui_3.2.1.M20061108.jar" Name="org.eclipse.ui_3.2.1.M20061108.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.ui_3.2.1.M20061108.jar" />
-          <File Id="org.eclipse.update.configurator.nl1_3.2.1.v200609270227.jar" Name="org.eclipse.update.configurator.nl1_3.2.1.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.update.configurator.nl1_3.2.1.v200609270227.jar" />
-          <File Id="org.eclipse.update.configurator_3.2.2.R32x_v20070111.jar" Name="org.eclipse.update.configurator_3.2.2.R32x_v20070111.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.update.configurator_3.2.2.R32x_v20070111.jar" />
-          <File Id="org.eclipse.update.core.nl1_3.2.1.v200609270227.jar" Name="org.eclipse.update.core.nl1_3.2.1.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.update.core.nl1_3.2.1.v200609270227.jar" />
-          <File Id="org.eclipse.update.core.win32_3.2.2.R32x_v20061214.jar" Name="org.eclipse.update.core.win32_3.2.2.R32x_v20061214.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.update.core.win32_3.2.2.R32x_v20061214.jar" />
-          <File Id="org.eclipse.update.core_3.2.3.R32x_v20070118.jar" Name="org.eclipse.update.core_3.2.3.R32x_v20070118.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.update.core_3.2.3.R32x_v20070118.jar" />
-          <File Id="org.eclipse.update.ui.nl1_3.2.1.v200609270227.jar" Name="org.eclipse.update.ui.nl1_3.2.1.v200609270227.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.update.ui.nl1_3.2.1.v200609270227.jar" />
-          <File Id="org.eclipse.update.ui_3.2.2.R32x_v20070111.jar" Name="org.eclipse.update.ui_3.2.2.R32x_v20070111.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.update.ui_3.2.2.R32x_v20070111.jar" />
-        </Component>
-        <Directory Id="org.eclipse.core.runtime.compatibility.registry_3.2.1.R32x_v20060907" Name="org.eclipse.core.runtime.compatibility.registry_3.2.1.R32x_v20060907">
-          <Component Id="org.eclipse.core.runtime.compatibility.registry_3.2.1.R32x_v20060907" DiskId="1" Guid="9B406546-ADAC-458F-8868-4D8E286A179F">
-            <File Id="about.html" Name="about.html" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.runtime.compatibility.registry_3.2.1.R32x_v20060907\about.html" />
-            <File Id="fragment.properties" Name="fragment.properties" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.runtime.compatibility.registry_3.2.1.R32x_v20060907\fragment.properties" />
-            <File Id="runtime_registry_compatibility.jar" Name="runtime_registry_compatibility.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.runtime.compatibility.registry_3.2.1.R32x_v20060907\runtime_registry_compatibility.jar" />
+
+      <!-- plugins -->
+      <Directory Id="openrtp_plugins" Name="plugins">
+        <Component Id="OpenrtpPlugins" Guid="6C3F95E1-8300-11E0-87AE-00059A3C7800">
+	  	  <File Id="OpenrtpPlugins0000" Name="com.ibm.icu.nl_ja_3.8.1.v20080530.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\com.ibm.icu.nl_ja_3.8.1.v20080530.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0001" Name="com.ibm.icu_3.8.1.v20080530.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\com.ibm.icu_3.8.1.v20080530.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0002" Name="jp.go.aist.rtm.nameserviceview.nl1_1.1.0.rc2v20110725.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\jp.go.aist.rtm.nameserviceview.nl1_1.1.0.rc2v20110725.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0003" Name="jp.go.aist.rtm.nameserviceview_1.1.0.rc2v20110725.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\jp.go.aist.rtm.nameserviceview_1.1.0.rc2v20110725.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0004" Name="jp.go.aist.rtm.repositoryView.nl1_1.1.0.rc2v20110725.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\jp.go.aist.rtm.repositoryView.nl1_1.1.0.rc2v20110725.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0005" Name="jp.go.aist.rtm.repositoryView_1.1.0.rc2v20110725.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\jp.go.aist.rtm.repositoryView_1.1.0.rc2v20110725.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0006" Name="jp.go.aist.rtm.systemeditor.nl1_1.1.0.rc2v20110725.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\jp.go.aist.rtm.systemeditor.nl1_1.1.0.rc2v20110725.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0007" Name="jp.go.aist.rtm.systemeditor.RCP_1.0.0.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\jp.go.aist.rtm.systemeditor.RCP_1.0.0.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0008" Name="jp.go.aist.rtm.systemeditor_1.1.0.rc2v20110725.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\jp.go.aist.rtm.systemeditor_1.1.0.rc2v20110725.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0009" Name="jp.go.aist.rtm.toolscommon.nl1_1.1.0.rc2v20110725.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\jp.go.aist.rtm.toolscommon.nl1_1.1.0.rc2v20110725.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0010" Name="jp.go.aist.rtm.toolscommon.profiles.nl1_1.1.0.rc2v20110725.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\jp.go.aist.rtm.toolscommon.profiles.nl1_1.1.0.rc2v20110725.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0011" Name="jp.go.aist.rtm.toolscommon.profiles_1.1.0.rc2v20110725.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\jp.go.aist.rtm.toolscommon.profiles_1.1.0.rc2v20110725.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0012" Name="jp.go.aist.rtm.toolscommon_1.1.0.rc2v20110725.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\jp.go.aist.rtm.toolscommon_1.1.0.rc2v20110725.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0013" Name="org.eclipse.core.commands.nl_ja_3.4.0.I20080509-2000.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.core.commands.nl_ja_3.4.0.I20080509-2000.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0014" Name="org.eclipse.core.commands_3.4.0.I20080509-2000.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.core.commands_3.4.0.I20080509-2000.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0015" Name="org.eclipse.core.contenttype.nl_ja_3.3.0.v20080604-1400.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.core.contenttype.nl_ja_3.3.0.v20080604-1400.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0016" Name="org.eclipse.core.contenttype_3.3.0.v20080604-1400.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.core.contenttype_3.3.0.v20080604-1400.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0017" Name="org.eclipse.core.databinding.nl_ja_1.1.1.M20080827-0800b.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.core.databinding.nl_ja_1.1.1.M20080827-0800b.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0018" Name="org.eclipse.core.databinding_1.1.1.M20080827-0800b.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.core.databinding_1.1.1.M20080827-0800b.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0019" Name="org.eclipse.core.expressions.nl_ja_3.4.1.r342_v20081203-0800.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.core.expressions.nl_ja_3.4.1.r342_v20081203-0800.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0020" Name="org.eclipse.core.expressions_3.4.1.r342_v20081203-0800.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.core.expressions_3.4.1.r342_v20081203-0800.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0021" Name="org.eclipse.core.filebuffers.nl_ja_3.4.0.v20080603-2000.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.core.filebuffers.nl_ja_3.4.0.v20080603-2000.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0022" Name="org.eclipse.core.filebuffers_3.4.0.v20080603-2000.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.core.filebuffers_3.4.0.v20080603-2000.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0023" Name="org.eclipse.core.filesystem.nl_ja_1.2.0.v20080604-1400.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.core.filesystem.nl_ja_1.2.0.v20080604-1400.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0024" Name="org.eclipse.core.filesystem.win32.x86_1.1.0.v20080604-1400.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.core.filesystem.win32.x86_1.1.0.v20080604-1400.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0025" Name="org.eclipse.core.filesystem_1.2.0.v20080604-1400.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.core.filesystem_1.2.0.v20080604-1400.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0026" Name="org.eclipse.core.jobs.nl_ja_3.4.1.R34x_v20081128.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.core.jobs.nl_ja_3.4.1.R34x_v20081128.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0027" Name="org.eclipse.core.jobs_3.4.1.R34x_v20081128.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.core.jobs_3.4.1.R34x_v20081128.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0028" Name="org.eclipse.core.resources.compatibility_3.4.0.v20080604-1400.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.core.resources.compatibility_3.4.0.v20080604-1400.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0029" Name="org.eclipse.core.resources.nl_ja_3.4.2.R34x_v20090126.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.core.resources.nl_ja_3.4.2.R34x_v20090126.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0030" Name="org.eclipse.core.resources.win32.x86_3.4.0.v20071204.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.core.resources.win32.x86_3.4.0.v20071204.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0031" Name="org.eclipse.core.resources_3.4.2.R34x_v20090126.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.core.resources_3.4.2.R34x_v20090126.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0033" Name="org.eclipse.core.runtime_3.4.0.v20080512.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.core.runtime_3.4.0.v20080512.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0034" Name="org.eclipse.draw2d_3.4.2.v20090114-1330.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.draw2d_3.4.2.v20090114-1330.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0035" Name="org.eclipse.emf.common_2.4.0.v200902171115.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.emf.common_2.4.0.v200902171115.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0036" Name="org.eclipse.emf.ecore.xmi_2.4.1.v200902171115.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.emf.ecore.xmi_2.4.1.v200902171115.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0037" Name="org.eclipse.emf.ecore_2.4.2.v200902171115.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.emf.ecore_2.4.2.v200902171115.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0038" Name="org.eclipse.equinox.app.nl_ja_1.1.0.v20080421-2006.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.equinox.app.nl_ja_1.1.0.v20080421-2006.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0039" Name="org.eclipse.equinox.app_1.1.0.v20080421-2006.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.equinox.app_1.1.0.v20080421-2006.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0040" Name="org.eclipse.equinox.common.nl_ja_3.4.0.v20080421-2006.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.equinox.common.nl_ja_3.4.0.v20080421-2006.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0041" Name="org.eclipse.equinox.common_3.4.0.v20080421-2006.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.equinox.common_3.4.0.v20080421-2006.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0042" Name="org.eclipse.equinox.launcher.nl_ja_1.0.101.R34x_v20081125.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.equinox.launcher.nl_ja_1.0.101.R34x_v20081125.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0043" Name="org.eclipse.equinox.launcher_1.0.101.R34x_v20081125.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.equinox.launcher_1.0.101.R34x_v20081125.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0044" Name="org.eclipse.equinox.preferences.nl_ja_3.2.201.R34x_v20080709.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.equinox.preferences.nl_ja_3.2.201.R34x_v20080709.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0045" Name="org.eclipse.equinox.preferences_3.2.201.R34x_v20080709.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.equinox.preferences_3.2.201.R34x_v20080709.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0046" Name="org.eclipse.equinox.registry.nl_ja_3.4.0.v20080516-0950.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.equinox.registry.nl_ja_3.4.0.v20080516-0950.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0047" Name="org.eclipse.equinox.registry_3.4.0.v20080516-0950.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.equinox.registry_3.4.0.v20080516-0950.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0048" Name="org.eclipse.gef_3.4.1.v20080806.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.gef_3.4.1.v20080806.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0049" Name="org.eclipse.help.nl_ja_3.3.102.v20081014_34x.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.help.nl_ja_3.3.102.v20081014_34x.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0050" Name="org.eclipse.help_3.3.102.v20081014_34x.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.help_3.3.102.v20081014_34x.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0051" Name="org.eclipse.jface.databinding.nl_ja_1.2.1.M20080827-0800a.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.jface.databinding.nl_ja_1.2.1.M20080827-0800a.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0052" Name="org.eclipse.jface.databinding_1.2.1.M20080827-0800a.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.jface.databinding_1.2.1.M20080827-0800a.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0053" Name="org.eclipse.jface.nl_ja_3.4.2.M20090107-0800.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.jface.nl_ja_3.4.2.M20090107-0800.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0054" Name="org.eclipse.jface.text.nl_ja_3.4.2.r342_v20081119-0800.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.jface.text.nl_ja_3.4.2.r342_v20081119-0800.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0055" Name="org.eclipse.jface.text_3.4.2.r342_v20081119-0800.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.jface.text_3.4.2.r342_v20081119-0800.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0056" Name="org.eclipse.jface_3.4.2.M20090107-0800.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.jface_3.4.2.M20090107-0800.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0057" Name="org.eclipse.osgi.nl_ja_3.4.3.R34x_v20081215-1030.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.osgi.nl_ja_3.4.3.R34x_v20081215-1030.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0058" Name="org.eclipse.osgi_3.4.3.R34x_v20081215-1030.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.osgi_3.4.3.R34x_v20081215-1030.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0059" Name="org.eclipse.swt.nl_ja_3.4.2.v3452b.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.swt.nl_ja_3.4.2.v3452b.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0060" Name="org.eclipse.swt.win32.win32.x86_3.4.1.v3452b.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.swt.win32.win32.x86_3.4.1.v3452b.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0061" Name="org.eclipse.swt_3.4.2.v3452b.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.swt_3.4.2.v3452b.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0062" Name="org.eclipse.text.nl_ja_3.4.0.v20080605-1800.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.text.nl_ja_3.4.0.v20080605-1800.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0063" Name="org.eclipse.text_3.4.0.v20080605-1800.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.text_3.4.0.v20080605-1800.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0064" Name="org.eclipse.ui.editors.nl_ja_3.4.0.v20080603-2000.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.ui.editors.nl_ja_3.4.0.v20080603-2000.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0065" Name="org.eclipse.ui.editors_3.4.0.v20080603-2000.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.ui.editors_3.4.0.v20080603-2000.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0066" Name="org.eclipse.ui.ide.nl_ja_3.4.2.M20090127-1700.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.ui.ide.nl_ja_3.4.2.M20090127-1700.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0067" Name="org.eclipse.ui.ide_3.4.2.M20090127-1700.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.ui.ide_3.4.2.M20090127-1700.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0068" Name="org.eclipse.ui.nl_ja_3.4.2.M20090204-0800.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.ui.nl_ja_3.4.2.M20090204-0800.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0069" Name="org.eclipse.ui.views.nl_ja_3.3.1.M20081112-0800.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.ui.views.nl_ja_3.3.1.M20081112-0800.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0070" Name="org.eclipse.ui.views_3.3.1.M20081112-0800.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.ui.views_3.3.1.M20081112-0800.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0071" Name="org.eclipse.ui.win32_3.2.100.v20080408-0800.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.ui.win32_3.2.100.v20080408-0800.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0072" Name="org.eclipse.ui.workbench.nl_ja_3.4.2.M20090127-1700.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.ui.workbench.nl_ja_3.4.2.M20090127-1700.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0073" Name="org.eclipse.ui.workbench.texteditor.nl_ja_3.4.1.r341_v20080827-1100.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.ui.workbench.texteditor.nl_ja_3.4.1.r341_v20080827-1100.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0074" Name="org.eclipse.ui.workbench.texteditor_3.4.1.r341_v20080827-1100.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.ui.workbench.texteditor_3.4.1.r341_v20080827-1100.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0075" Name="org.eclipse.ui.workbench_3.4.2.M20090127-1700.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.ui.workbench_3.4.2.M20090127-1700.jar">
+	  </File>
+	  	  <File Id="OpenrtpPlugins0076" Name="org.eclipse.ui_3.4.2.M20090204-0800.jar"
+		DiskId="1" Source="C:\\distribution\\OpenRTP\\RTSystemEditor\\plugins\\org.eclipse.ui_3.4.2.M20090204-0800.jar">
+	  </File>
+	          </Component>
+        <Directory Id="org.eclipse.core.runtime.compatibility.registry_3.2.200.v20080610" Name="org.eclipse.core.runtime.compatibility.registry_3.2.200.v20080610">
+          <Component Id="org.eclipse.core.runtime.compatibility.registry_3.2.200.v20080610" DiskId="1" Guid="9B406546-ADAC-458F-8868-4D8E286A179F">
+            <File Id="about.html" Name="about.html" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.runtime.compatibility.registry_3.2.200.v20080610\about.html" />
+            <File Id="fragment.properties" Name="fragment.properties" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.runtime.compatibility.registry_3.2.200.v20080610\fragment.properties" />
+            <File Id="runtime_registry_compatibility.jar" Name="runtime_registry_compatibility.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.runtime.compatibility.registry_3.2.200.v20080610\runtime_registry_compatibility.jar" />
           </Component>
           <Directory Id="META_INF" Name="META-INF">
-            <Component Id="META_INF" DiskId="1" Guid="2FC7BBAC-7BE2-43A6-B281-45E5321BA6CD">
-              <File Id="eclipse.inf" Name="eclipse.inf" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.runtime.compatibility.registry_3.2.1.R32x_v20060907\META-INF\eclipse.inf" />
-              <File Id="MANIFEST.MF" Name="MANIFEST.MF" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.runtime.compatibility.registry_3.2.1.R32x_v20060907\META-INF\MANIFEST.MF" />
+            <Component Id="META_INF" DiskId="1" Guid="845976BB-6E57-4504-B0E4-E92063791414">
+              <File Id="eclipse.inf" Name="eclipse.inf" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.runtime.compatibility.registry_3.2.200.v20080610\META-INF\eclipse.inf" />
+              <File Id="MANIFEST.MF" Name="MANIFEST.MF" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.core.runtime.compatibility.registry_3.2.200.v20080610\META-INF\MANIFEST.MF" />
             </Component>
           </Directory>
         </Directory>
-        <Directory Id="org.eclipse.jdt.junit.runtime.nl1_3.2.1.v200609270227" Name="org.eclipse.jdt.junit.runtime.nl1_3.2.1.v200609270227">
-          <Component Id="org.eclipse.jdt.junit.runtime.nl1_3.2.1.v200609270227" DiskId="1" Guid="F1928B56-E60D-4F13-8284-00E2B99BB2BB">
-            <File Id="about.html_1" Name="about.html" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jdt.junit.runtime.nl1_3.2.1.v200609270227\about.html" />
-            <File Id="nl1.jar" Name="nl1.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jdt.junit.runtime.nl1_3.2.1.v200609270227\nl1.jar" />
-            <File Id="nl_fragment.properties" Name="nl_fragment.properties" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jdt.junit.runtime.nl1_3.2.1.v200609270227\nl_fragment.properties" />
-            <File Id="plugin_de.properties" Name="plugin_de.properties" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jdt.junit.runtime.nl1_3.2.1.v200609270227\plugin_de.properties" />
-            <File Id="plugin_es.properties" Name="plugin_es.properties" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jdt.junit.runtime.nl1_3.2.1.v200609270227\plugin_es.properties" />
-            <File Id="plugin_fr.properties" Name="plugin_fr.properties" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jdt.junit.runtime.nl1_3.2.1.v200609270227\plugin_fr.properties" />
-            <File Id="plugin_it.properties" Name="plugin_it.properties" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jdt.junit.runtime.nl1_3.2.1.v200609270227\plugin_it.properties" />
-            <File Id="plugin_ja.properties" Name="plugin_ja.properties" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jdt.junit.runtime.nl1_3.2.1.v200609270227\plugin_ja.properties" />
-            <File Id="plugin_ko.properties" Name="plugin_ko.properties" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jdt.junit.runtime.nl1_3.2.1.v200609270227\plugin_ko.properties" />
-            <File Id="plugin_pt_BR.properties" Name="plugin_pt_BR.properties" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jdt.junit.runtime.nl1_3.2.1.v200609270227\plugin_pt_BR.properties" />
-            <File Id="plugin_zh.properties" Name="plugin_zh.properties" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jdt.junit.runtime.nl1_3.2.1.v200609270227\plugin_zh.properties" />
-            <File Id="plugin_zh_HK.properties" Name="plugin_zh_HK.properties" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jdt.junit.runtime.nl1_3.2.1.v200609270227\plugin_zh_HK.properties" />
-            <File Id="plugin_zh_TW.properties" Name="plugin_zh_TW.properties" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jdt.junit.runtime.nl1_3.2.1.v200609270227\plugin_zh_TW.properties" />
+        <Directory Id="org.eclipse.equinox.launcher.win32.win32.x86_1.0.101.R34x_v20080731" Name="org.eclipse.equinox.launcher.win32.win32.x86_1.0.101.R34x_v20080731">
+          <Component Id="org.eclipse.equinox.launcher.win32.win32.x86_1.0.101.R34x_v20080731" DiskId="1" Guid="9B406546-ADAC-458F-8868-4D8E286A179F">
+            <File Id="about.html_1" Name="about.html" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.equinox.launcher.win32.win32.x86_1.0.101.R34x_v20080731\about.html" />
+            <File Id="launcher.win32.win32.x86.properties" Name="launcher.win32.win32.x86.properties" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.equinox.launcher.win32.win32.x86_1.0.101.R34x_v20080731\launcher.win32.win32.x86.properties" />
+            <File Id="eclipse_1115.dll" Name="eclipse_1115.dll" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.equinox.launcher.win32.win32.x86_1.0.101.R34x_v20080731\eclipse_1115.dll" />
           </Component>
-          <Directory Id="META_INF_1" Name="META-INF">
-            <Component Id="META_INF_1" DiskId="1" Guid="845976BB-6E57-4504-B0E4-E92063791414">
-              <File Id="MANIFEST.MF_1" Name="MANIFEST.MF" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jdt.junit.runtime.nl1_3.2.1.v200609270227\META-INF\MANIFEST.MF" />
+          <Directory Id="META_INF_2" Name="META-INF_2">
+            <Component Id="META_INF_2" DiskId="1" Guid="2FC7BBAC-7BE2-43A6-B281-45E5321BA6CD">
+              <File Id="eclipse.inf_1" Name="eclipse.inf" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.equinox.launcher.win32.win32.x86_1.0.101.R34x_v20080731\META-INF\eclipse.inf" />
+              <File Id="MANIFEST.MF_1" Name="MANIFEST.MF" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.equinox.launcher.win32.win32.x86_1.0.101.R34x_v20080731\META-INF\MANIFEST.MF" />
             </Component>
           </Directory>
         </Directory>
-        <Directory Id="org.eclipse.jdt.junit.runtime_3.2.1.r321_v20060721" Name="org.eclipse.jdt.junit.runtime_3.2.1.r321_v20060721">
-          <Component Id="org.eclipse.jdt.junit.runtime_3.2.1.r321_v20060721" DiskId="1" Guid="8C9D2750-2CBE-4624-9765-E6E1C21334EA">
-            <File Id="about.html_2" Name="about.html" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jdt.junit.runtime_3.2.1.r321_v20060721\about.html" />
-            <File Id="junitruntime.jar" Name="junitruntime.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jdt.junit.runtime_3.2.1.r321_v20060721\junitruntime.jar" />
-            <File Id="plugin.properties" Name="plugin.properties" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jdt.junit.runtime_3.2.1.r321_v20060721\plugin.properties" />
-            <File Id="plugin.xml" Name="plugin.xml" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jdt.junit.runtime_3.2.1.r321_v20060721\plugin.xml" />
-          </Component>
-          <Directory Id="META_INF_2" Name="META-INF">
-            <Component Id="META_INF_2" DiskId="1" Guid="995CB0A7-44B0-4096-B6FF-9F0DEAF351F1">
-              <File Id="eclipse.inf_1" Name="eclipse.inf" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jdt.junit.runtime_3.2.1.r321_v20060721\META-INF\eclipse.inf" />
-              <File Id="MANIFEST.MF_2" Name="MANIFEST.MF" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.eclipse.jdt.junit.runtime_3.2.1.r321_v20060721\META-INF\MANIFEST.MF" />
-            </Component>
-          </Directory>
-        </Directory>
-        <Directory Id="org.junit_3.8.1" Name="org.junit_3.8.1">
-          <Component Id="org.junit_3.8.1" DiskId="1" Guid="83E80B5D-F3C6-4070-B5F5-DBCE74479317">
-            <File Id="about.html_3" Name="about.html" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.junit_3.8.1\about.html" />
-            <File Id="junit.jar" Name="junit.jar" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.junit_3.8.1\junit.jar" />
-            <File Id="plugin.properties_1" Name="plugin.properties" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.junit_3.8.1\plugin.properties" />
-            <File Id="plugin.xml_1" Name="plugin.xml" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.junit_3.8.1\plugin.xml" />
-          </Component>
-          <Directory Id="META_INF_3" Name="META-INF">
-            <Component Id="META_INF_3" DiskId="1" Guid="4D8D5C2E-9D89-43F1-99BA-58E91902AFEA">
-              <File Id="eclipse.inf_2" Name="eclipse.inf" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.junit_3.8.1\META-INF\eclipse.inf" />
-              <File Id="MANIFEST.MF_3" Name="MANIFEST.MF" Source="C:\distribution\OpenRTP\RTSystemEditor\plugins\org.junit_3.8.1\META-INF\MANIFEST.MF" />
-            </Component>
-          </Directory>
-        </Directory>
       </Directory>
     </Directory>
   </Directory>
 </Include>
+

Modified: trunk/OpenRTM-aist-Python/installer/OpenRTP/OpenRTP_inc.wxs.in
===================================================================
--- trunk/OpenRTM-aist-Python/installer/OpenRTP/OpenRTP_inc.wxs.in	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/installer/OpenRTP/OpenRTP_inc.wxs.in	2011-09-21 07:57:38 UTC (rev 479)
@@ -2,7 +2,7 @@
 <Include xmlns="http://schemas.microsoft.com/wix/2006/wi">
   <!-- root directory -->		
   <Directory Id="OpenRTP" Name="OpenRTP">
-    <Directory Id="OpenRTPVersion" Name="0.1">
+    <Directory Id="OpenRTPVersion" Name="1.1">
       <Component Id="Openrtp" Guid="{% Openrtp.GUID %}">
 	<Environment Id="OPENRTP_ROOT" Name="OPENRTP_ROOT" Action="set"
 		     System="yes" Value="[openrtpVersion]" />

Modified: trunk/OpenRTM-aist-Python/installer/WixUI_Mondo_RTM.wxs
===================================================================
--- trunk/OpenRTM-aist-Python/installer/WixUI_Mondo_RTM.wxs	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/installer/WixUI_Mondo_RTM.wxs	2011-09-21 07:57:38 UTC (rev 479)
@@ -1,7 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
 
-    <!-- WixUI_Mondo にインストールの種類を選択するダイアログを追加したもの -->
     <Fragment>
         <Property Id='USERNAME' Value='[LogonUser]' />
         <Property Id="WixAppFolder" Value="WixPerMachineFolder" />

Modified: trunk/OpenRTM-aist-Python/installer/WixUI_en-us.wxl
===================================================================
--- trunk/OpenRTM-aist-Python/installer/WixUI_en-us.wxl	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/installer/WixUI_en-us.wxl	2011-09-21 07:57:38 UTC (rev 479)
@@ -10,7 +10,7 @@
 
     You must not remove this notice, or any other, from this software.
 -->
-<WixLocalization Culture="en-us" xmlns="http://schemas.microsoft.com/wix/2006/localization">
+<WixLocalization Culture="en-us" Codepage="1252" xmlns="http://schemas.microsoft.com/wix/2006/localization">
     <String Id="WixUIBack" Overridable="yes">&Back</String>
     <String Id="WixUINext" Overridable="yes">&Next</String>
     <String Id="WixUICancel" Overridable="yes">Cancel</String>

Modified: trunk/OpenRTM-aist-Python/installer/WixUI_hu-hu.wxl
===================================================================
--- trunk/OpenRTM-aist-Python/installer/WixUI_hu-hu.wxl	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/installer/WixUI_hu-hu.wxl	2011-09-21 07:57:38 UTC (rev 479)
@@ -10,7 +10,7 @@
 
     You must not remove this notice, or any other, from this software.
 -->
-<WixLocalization Culture="hu-hu" xmlns="http://schemas.microsoft.com/wix/2006/localization">
+<WixLocalization Culture="hu-hu" Codepage="1250" xmlns="http://schemas.microsoft.com/wix/2006/localization">
   <String Id="WixUIBack" Overridable="yes">&Vissza</String>
   <String Id="WixUINext" Overridable="yes">&Tov叩bb</String>
   <String Id="WixUICancel" Overridable="yes">&M辿gse</String>

Modified: trunk/OpenRTM-aist-Python/installer/WixUI_ja-jp.wxl
===================================================================
--- trunk/OpenRTM-aist-Python/installer/WixUI_ja-jp.wxl	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/installer/WixUI_ja-jp.wxl	2011-09-21 07:57:38 UTC (rev 479)
@@ -2,7 +2,7 @@
 <!--
     Copyright (c) Microsoft Corporation.  All rights reserved.
 -->
-<WixLocalization Culture="ja-jp" xmlns="http://schemas.microsoft.com/wix/2006/localization">
+<WixLocalization Culture="ja-jp" Codepage="932" xmlns="http://schemas.microsoft.com/wix/2006/localization">
     <String Id="WixUIBack" Overridable="yes">戻る(&B)</String>
     <String Id="WixUINext" Overridable="yes">次へ(&N)</String>
     <String Id="WixUICancel" Overridable="yes">キャンセル</String>
@@ -202,7 +202,7 @@
     <String Id="SetupTypeDlgTypicalButtonTooltip" Overridable="yes">標準インストール</String>
     <String Id="SetupTypeDlgCustomButton" Overridable="yes">カスタム(&U)</String>
     <String Id="SetupTypeDlgCustomButtonTooltip" Overridable="yes">カスタム インストール</String>
-    <String Id="SetupTypeDlgCompleteButton" Overridable="yes">完了(&O)</String>
+    <String Id="SetupTypeDlgCompleteButton" Overridable="yes">完全(&O)</String>
     <String Id="SetupTypeDlgCompleteButtonTooltip" Overridable="yes">完全インストール</String>
     <String Id="SetupTypeDlgBannerBitmap" Overridable="yes">WixUI_Bmp_Banner</String>
     <String Id="SetupTypeDlgTitle" Overridable="yes">{\WixUI_Font_Title}セットアップの種類の選択</String>

Modified: trunk/OpenRTM-aist-Python/installer/WixUI_ko-kr.wxl
===================================================================
--- trunk/OpenRTM-aist-Python/installer/WixUI_ko-kr.wxl	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/installer/WixUI_ko-kr.wxl	2011-09-21 07:57:38 UTC (rev 479)
@@ -2,57 +2,57 @@
 <!--
     Copyright (c) Microsoft Corporation.  All rights reserved.
 -->
-<WixLocalization Culture="ko-kr" xmlns="http://schemas.microsoft.com/wix/2006/localization">
-    <String Id="WixUIBack" Overridable="yes">뒤로(&B)</String>
-    <String Id="WixUINext" Overridable="yes">다음(&N)</String>
-    <String Id="WixUICancel" Overridable="yes">취소</String>
-    <String Id="WixUIFinish" Overridable="yes">마침(&F)</String>
-    <String Id="WixUIRetry" Overridable="yes">다시 시도(&R)</String>
-    <String Id="WixUIIgnore" Overridable="yes">무시(&I)</String>
-    <String Id="WixUIYes" Overridable="yes">예(&Y)</String>
-    <String Id="WixUINo" Overridable="yes">아니요(&N)</String>
-    <String Id="WixUIOK" Overridable="yes">확인</String>
-    <String Id="WixUIPrint" Overridable="yes">인쇄(&P)</String>
+<WixLocalization Culture="ko-kr" Codepage="949" xmlns="http://schemas.microsoft.com/wix/2006/localization">
+    <String Id="WixUIBack" Overridable="yes">E¤EE&B)</String>
+    <String Id="WixUINext" Overridable="yes">E¤EE&N)</String>
+    <String Id="WixUICancel" Overridable="yes">E¨EE/String>
+    <String Id="WixUIFinish" Overridable="yes">Eˆì¹¨(&F)</String>
+    <String Id="WixUIRetry" Overridable="yes">E¤EEEœë„(&R)</String>
+    <String Id="WixUIIgnore" Overridable="yes">E´EE&I)</String>
+    <String Id="WixUIYes" Overridable="yes">EE&Y)</String>
+    <String Id="WixUINo" Overridable="yes">EE‹ˆEE&N)</String>
+    <String Id="WixUIOK" Overridable="yes">úµ•ì¸</String>
+    <String Id="WixUIPrint" Overridable="yes">E¸EE&P)</String>
     
-    <String Id="AdvancedWelcomeEulaDlg_Title" Overridable="yes">[ProductName] 설치</String>
+    <String Id="AdvancedWelcomeEulaDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
     <String Id="AdvancedWelcomeEulaDlgBannerBitmap" Overridable="yes">WixUI_Bmp_Banner</String>
-    <String Id="AdvancedWelcomeEulaDlgTitle" Overridable="yes">{\WixUI_Font_Title}[ProductName]의 소프트웨어 라이센스 조항을 읽어주세요.</String>
-    <String Id="AdvancedWelcomeEulaDlgLicenseAcceptedCheckBox" Overridable="yes">소프트웨어 라이센스 조항에 동의합니다.(&A)</String>
-    <String Id="AdvancedWelcomeEulaDlgDescriptionPerMachine" Overridable="yes">"설치"단추를 클릭하면 모든 사용자 대상에 대해 설치 합니다. 설치 옵션을 변경하려면 "상세"단추를 클릭하십시오.</String>
-    <String Id="AdvancedWelcomeEulaDlgDescriptionPerUser" Overridable="yes">"설치"단추를 클릭하면 현재 사용자 대상에 대해 설치 합니다. 설치 옵션을 변경하려면 "상세"단추를 클릭하십시오.</String>
-    <String Id="AdvancedWelcomeEulaDlgInstall" Overridable="yes">설치(&I)</String>
-    <String Id="AdvancedWelcomeEulaDlgAdvanced" Overridable="yes">상세(&D)</String>
+    <String Id="AdvancedWelcomeEulaDlgTitle" Overridable="yes">{\WixUI_Font_Title}[ProductName]EEEŒí”„ú¦¸E¨E´ E¼E´E¼E¤ E°ú±­EEE½E´E¼E¸EE</String>
+    <String Id="AdvancedWelcomeEulaDlgLicenseAcceptedCheckBox" Overridable="yes">EŒí”„ú¦¸E¨E´ E¼E´E¼E¤ E°ú±­EEE™ì˜ú±©Eˆë‹¤.(&A)</String>
+    <String Id="AdvancedWelcomeEulaDlgDescriptionPerMachine" Overridable="yes">"E¤EEE¨E”를 ú´E­ú±˜ë©´ E¨E  E¬E©EEE€EE— E€ú±´ E¤EEú±©Eˆë‹¤. E¤EEEµE˜ì„ E€E½ú±˜ë ¤E´ "EE„¸"E¨E”를 ú´E­ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="AdvancedWelcomeEulaDlgDescriptionPerUser" Overridable="yes">"E¤EEE¨E”를 ú´E­ú±˜ë©´ ú´Ež¬ E¬E©EEE€EE— E€ú±´ E¤EEú±©Eˆë‹¤. E¤EEEµE˜ì„ E€E½ú±˜ë ¤E´ "EE„¸"E¨E”를 ú´E­ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="AdvancedWelcomeEulaDlgInstall" Overridable="yes">E¤EE&I)</String>
+    <String Id="AdvancedWelcomeEulaDlgAdvanced" Overridable="yes">EE„¸(&D)</String>
     <String Id="Advanced_Font_Normal_Size" Overridable="yes">8</String>
     <String Id="Advanced_Font_Bigger_Size" Overridable="yes">12</String>
     <String Id="Advanced_Font_Title_Size" Overridable="yes">9</String>
     <String Id="Advanced_Font_Emphasized_Size" Overridable="yes">8</String>
     <String Id="Advanced_Font_FaceName" Overridable="yes">Tahoma</String>
     
-    <String Id="BrowseDlg_Title" Overridable="yes">[ProductName] 설치</String>
-    <String Id="BrowseDlgComboLabel" Overridable="yes">찾는 위치(&L):</String>
+    <String Id="BrowseDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
+    <String Id="BrowseDlgComboLabel" Overridable="yes">E¾EEEE¹E&L):</String>
     <String Id="BrowseDlgWixUI_Bmp_Up" Overridable="yes">WixUI_Bmp_Up</String>
-    <String Id="BrowseDlgWixUI_Bmp_UpTooltip" Overridable="yes">한 수준 위로</String>
+    <String Id="BrowseDlgWixUI_Bmp_UpTooltip" Overridable="yes">ú±EE˜ì¤€ EE¡E/String>
     <String Id="BrowseDlgNewFolder" Overridable="yes">WixUI_Bmp_New</String>
-    <String Id="BrowseDlgNewFolderTooltip" Overridable="yes">새 폴더 만들기</String>
-    <String Id="BrowseDlgPathLabel" Overridable="yes">폴더 이름(&F):</String>
+    <String Id="BrowseDlgNewFolderTooltip" Overridable="yes">EEú«´EEEŒë“¤E°</String>
+    <String Id="BrowseDlgPathLabel" Overridable="yes">ú«´EEE´EE&F):</String>
     <String Id="BrowseDlgBannerBitmap" Overridable="yes">WixUI_Bmp_Banner</String>
-    <String Id="BrowseDlgDescription" Overridable="yes">대상 폴더 찾아보기</String>
-    <String Id="BrowseDlgTitle" Overridable="yes">{\WixUI_Font_Title}대상 폴더 변경</String>
+    <String Id="BrowseDlgDescription" Overridable="yes">E€EEú«´EEE¾EE³´E°</String>
+    <String Id="BrowseDlgTitle" Overridable="yes">{\WixUI_Font_Title}E€EEú«´EEE€E½</String>
     
-    <String Id="CancelDlg_Title" Overridable="yes">[ProductName] 설치</String>
-    <String Id="CancelDlgText" Overridable="yes">[ProductName] 설치를 취소하시겠습니까?</String>
+    <String Id="CancelDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
+    <String Id="CancelDlgText" Overridable="yes">[ProductName] E¤E˜ë¥¼ E¨EŒí•˜Eœê² EµEˆê¹E</String>
     <String Id="CancelDlgIcon" Overridable="yes">WixUI_Ico_Info</String>
-    <String Id="CancelDlgIconTooltip" Overridable="yes">정보 아이콘</String>
+    <String Id="CancelDlgIconTooltip" Overridable="yes">E•ë³´ EE´EE/String>
     
-    <String Id="CustomizeDlg_Title" Overridable="yes">[ProductName] 설치</String>
-    <String Id="CustomizeDlgTree" Overridable="yes">선택 항목 트리</String>
-    <String Id="CustomizeDlgBrowse" Overridable="yes">찾아보기(&R)...</String>
-    <String Id="CustomizeDlgReset" Overridable="yes">원래대로(&S)</String>
-    <String Id="CustomizeDlgDiskCost" Overridable="yes">디스크 사용량(&U)</String>
+    <String Id="CustomizeDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
+    <String Id="CustomizeDlgTree" Overridable="yes">E úŸEú±­E© ú¦¸E¬</String>
+    <String Id="CustomizeDlgBrowse" Overridable="yes">E¾EE³´E°(&R)...</String>
+    <String Id="CustomizeDlgReset" Overridable="yes">Eëž˜E€EE&S)</String>
+    <String Id="CustomizeDlgDiskCost" Overridable="yes">E”스ú¬ E¬E©EE&U)</String>
     <String Id="CustomizeDlgBannerBitmap" Overridable="yes">WixUI_Bmp_Banner</String>
-    <String Id="CustomizeDlgText" Overridable="yes">기능 설치 방법을 변경하려면 아래의 트리에서 해당 아이콘을 클릭하십시오.</String>
-    <String Id="CustomizeDlgDescription" Overridable="yes">기능 설치 방법을 선택합니다.</String>
-    <String Id="CustomizeDlgTitle" Overridable="yes">{\WixUI_Font_Title}사용자 지정 설치</String>
+    <String Id="CustomizeDlgText" Overridable="yes">E°E¥ E¤EEE©E•ì„ E€E½ú±˜ë ¤E´ EEž˜EEú¦¸E¬EìE ú±´E¹ EE´E˜ì„ ú´E­ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="CustomizeDlgDescription" Overridable="yes">E°E¥ E¤EEE©E•ì„ E úŸí•©Eˆë‹¤.</String>
+    <String Id="CustomizeDlgTitle" Overridable="yes">{\WixUI_Font_Title}E¬E©EEE€EEE¤EE/String>
     <String Id="CustomizeDlgItemDescription" Overridable="yes">CustomizeDlgItemDescription-CustomizeDlgItemDescription</String>
     <String Id="CustomizeDlgItemSize" Overridable="yes">CustomizeDlgItemSize-CustomizeDlgItemSize</String>
     <String Id="CustomizeDlgLocation" Overridable="yes">CustomizeDlgLocation-CustomizeDlgLocation</String>
@@ -60,532 +60,532 @@
     
     <String Id="DiskCostDlg_Title" Overridable="yes">[ProductName] Setup</String>
     <String Id="DiskCostDlgBannerBitmap" Overridable="yes">WixUI_Bmp_Banner</String>
-    <String Id="DiskCostDlgText" Overridable="yes">선택된 볼륨에는 현재 선택한 기능을 설치할 만큼 충분한 공간이 없습니다. 해당 볼륨에서 일부 파일을 제거하거나, 설치할 기능을 줄이거나, 다른 대상 드라이브를 선택할 수 있습니다.</String>
-    <String Id="DiskCostDlgDescription" Overridable="yes">선택한 기능의 설치에 필요한 디스크 공간입니다.</String>
-    <String Id="DiskCostDlgTitle" Overridable="yes">{\WixUI_Font_Title}필요한 디스크 공간</String>
+    <String Id="DiskCostDlgText" Overridable="yes">E úŸëœ E¼E¨EëŠ” ú´Ež¬ E úŸí•œ E°E¥EEE¤E˜í•  EŒí¼ E©EE•œ EµEE´ EEŠµEˆë‹¤. ú±´E¹ E¼E¨EìE E¼E€ ú¨Œì¼EEEœê±°ú±˜ê±°EE E¤E˜í•  E°E¥EEEE´E°EE E¤E¸ E€EEEœë¼E´EŒë¥¼ E úŸí•  EEEˆìŠµEˆë‹¤.</String>
+    <String Id="DiskCostDlgDescription" Overridable="yes">E úŸí•œ E°E¥EEE¤E˜ì— ú±Eš”ú±EE”스ú¬ EµEEž…Eˆë‹¤.</String>
+    <String Id="DiskCostDlgTitle" Overridable="yes">{\WixUI_Font_Title}ú±Eš”ú±EE”스ú¬ EµEE/String>
     <String Id="DiskCostDlgVolumeList" Overridable="yes">{120}{70}{70}{70}{70}</String>
     
-    <String Id="ErrorDlg_Title" Overridable="yes">[ProductName] 설치</String>
-    <String Id="ErrorDlgErrorText" Overridable="yes">정보 텍스트</String>
+    <String Id="ErrorDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
+    <String Id="ErrorDlgErrorText" Overridable="yes">E•ë³´ ú¡ìŠ¤ú¦¸</String>
     <String Id="ErrorDlgErrorIcon" Overridable="yes">WixUI_Ico_Info</String>
-    <String Id="ErrorDlgErrorIconTooltip" Overridable="yes">정보 아이콘</String>
+    <String Id="ErrorDlgErrorIconTooltip" Overridable="yes">E•ë³´ EE´EE/String>
     
-    <String Id="ExitDialog_Title" Overridable="yes">[ProductName] 설치</String>
+    <String Id="ExitDialog_Title" Overridable="yes">[ProductName] E¤EE/String>
     <String Id="ExitDialogBitmap" Overridable="yes">WixUI_Bmp_Dialog</String>
-    <String Id="ExitDialogDescription" Overridable="yes">설치 마법사를 끝내려면 "마침" 단추를 클릭하십시오.</String>
-    <String Id="ExitDialogTitle" Overridable="yes">{\WixUI_Font_Bigger}[ProductName] 설치 마법사 완료</String>
+    <String Id="ExitDialogDescription" Overridable="yes">E¤EEEˆë²•ì‚¬E¼ Eë‚´E¤E´ "Eˆì¹¨" E¨E”를 ú´E­ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="ExitDialogTitle" Overridable="yes">{\WixUI_Font_Bigger}[ProductName] E¤EEEˆë²•ì‚¬ EE£E/String>
     
-    <String Id="FatalError_Title" Overridable="yes">[ProductName] 설치</String>
+    <String Id="FatalError_Title" Overridable="yes">[ProductName] E¤EE/String>
     <String Id="FatalErrorBitmap" Overridable="yes">WixUI_Bmp_Dialog</String>
-    <String Id="FatalErrorTitle" Overridable="yes">{\WixUI_Font_Bigger}[ProductName] 설치 마법사가 중간에 중단되었습니다.</String>
-    <String Id="FatalErrorDescription1" Overridable="yes">오류로 인해 [ProductName] 설치 마법사가 중간에 중단되었습니다. 시스템이 수정되지 않았습니다. 나중에 이 프로그램을 설치하려면 설치 마법사를 다시 실행하십시오.</String>
-    <String Id="FatalErrorDescription2" Overridable="yes">설치 마법사를 끝내려면 "마침" 단추를 클릭하십시오.</String>
+    <String Id="FatalErrorTitle" Overridable="yes">{\WixUI_Font_Bigger}[ProductName] E¤EEEˆë²•ì‚¬E€ E‘각E— E‘단E˜ì—ˆEµEˆë‹¤.</String>
+    <String Id="FatalErrorDescription1" Overridable="yes">E¤E˜ë¡EE¸ú±´ [ProductName] E¤EEEˆë²•ì‚¬E€ E‘각E— E‘단E˜ì—ˆEµEˆë‹¤. EœìŠ¤ú¡œì´ E˜ì •ë˜E€ EŠì•˜EµEˆë‹¤. E˜ì¤‘에 E´ ú°E¡œê·¸E¨EEE¤E˜í•˜E¤E´ E¤EEEˆë²•ì‚¬E¼ E¤EEE¤ú²‰í•˜E­Eœì˜¤.</String>
+    <String Id="FatalErrorDescription2" Overridable="yes">E¤EEEˆë²•ì‚¬E¼ Eë‚´E¤E´ "Eˆì¹¨" E¨E”를 ú´E­ú±˜ì‹­Eœì˜¤.</String>
     
-    <String Id="FeaturesDlg_Title" Overridable="yes">[ProductName] 설치</String>
-    <String Id="FeaturesDlgTree" Overridable="yes">제품의 기능</String>
+    <String Id="FeaturesDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
+    <String Id="FeaturesDlgTree" Overridable="yes">Eœí’ˆEEE°E¥</String>
     <String Id="FeaturesDlgBannerBitmap" Overridable="yes">WixUI_Bmp_Banner</String>
-    <String Id="FeaturesDlgDescription" Overridable="yes">기능 설치 방법을 선택하십시오.</String>
-    <String Id="FeaturesDlgTitle" Overridable="yes">{\WixUI_Font_Title}제품의 기능</String>
+    <String Id="FeaturesDlgDescription" Overridable="yes">E°E¥ E¤EEE©E•ì„ E úŸí•˜E­Eœì˜¤.</String>
+    <String Id="FeaturesDlgTitle" Overridable="yes">{\WixUI_Font_Title}Eœí’ˆEEE°E¥</String>
     <String Id="FeaturesDlgItemDescription" Overridable="yes">FeaturesDlgItemDescription</String>
     <String Id="FeaturesDlgItemSize" Overridable="yes">FeaturesDlgItemSize</String>
-    <String Id="FeaturesDlgInstall" Overridable="yes">설치(&I)</String>
-    <String Id="FeaturesDlgChange" Overridable="yes">변경(&C)</String>
+    <String Id="FeaturesDlgInstall" Overridable="yes">E¤EE&I)</String>
+    <String Id="FeaturesDlgChange" Overridable="yes">E€E½(&C)</String>
     
-    <String Id="FilesInUse_Title" Overridable="yes">[ProductName] 설치</String>
-    <String Id="FilesInUseExit" Overridable="yes">끝내기(&X)</String>
+    <String Id="FilesInUse_Title" Overridable="yes">[ProductName] E¤EE/String>
+    <String Id="FilesInUseExit" Overridable="yes">Eë‚´E°(&X)</String>
     <String Id="FilesInUseBannerBitmap" Overridable="yes">WixUI_Bmp_Banner</String>
-    <String Id="FilesInUseText" Overridable="yes">다음 응용 프로그램에서 이 설치 프로그램이 업데이트해야 할 파일을 사용하고 있습니다. 관련된 응용 프로그램을 닫고 "다시 시도"를 클릭하여 설치를 계속하거나 "끝내기"를 눌러 끝내십시오.</String>
-    <String Id="FilesInUseDescription" Overridable="yes">업데이트할 파일 중 일부를 사용하고 있습니다.</String>
-    <String Id="FilesInUseTitle" Overridable="yes">{\WixUI_Font_Title}파일 사용 중</String>
+    <String Id="FilesInUseText" Overridable="yes">E¤EEE‘ìš© ú°E¡œê·¸E¨EìE E´ E¤EEú°E¡œê·¸E¨E´ EE°E´ú¦¸ú±´E¼ ú±  ú¨Œì¼EEE¬E©ú±˜ê³  EˆìŠµEˆë‹¤. E€E¨EEE‘ìš© ú°E¡œê·¸E¨EEE«E  "E¤EEEœë„"E¼ ú´E­ú±˜ì—¬ E¤E˜ë¥¼ EEEú±˜ê±°EE"Eë‚´E°"E¼ EŒëŸ¬ Eë‚´E­Eœì˜¤.</String>
+    <String Id="FilesInUseDescription" Overridable="yes">EE°E´ú¦¸ú±  ú¨Œì¼ EEE¼E€E¼ E¬E©ú±˜ê³  EˆìŠµEˆë‹¤.</String>
+    <String Id="FilesInUseTitle" Overridable="yes">{\WixUI_Font_Title}ú¨Œì¼ E¬E© EE/String>
     
-    <String Id="InstallDirDlg_Title" Overridable="yes">[ProductName] 설치</String>
-    <String Id="InstallDirDlgChange" Overridable="yes">변경(&C)...</String>
-    <String Id="InstallDirDlgTitle" Overridable="yes">{\WixUI_Font_Title}대상 폴더</String>
-    <String Id="InstallDirDlgDescription" Overridable="yes">기본 폴더에 설치하려면 "다음"을 클릭하고, 다른 설치 폴더를 선택하려면 "찾아보기"를 클릭하십시오.</String>
+    <String Id="InstallDirDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
+    <String Id="InstallDirDlgChange" Overridable="yes">E€E½(&C)...</String>
+    <String Id="InstallDirDlgTitle" Overridable="yes">{\WixUI_Font_Title}E€EEú«´EE/String>
+    <String Id="InstallDirDlgDescription" Overridable="yes">E°E¸ ú«´E”에 E¤E˜í•˜E¤E´ "E¤EEEEú´E­ú±˜ê³ , E¤E¸ E¤EEú«´E”를 E úŸí•˜E¤E´ "E¾EE³´E°"E¼ ú´E­ú±˜ì‹­Eœì˜¤.</String>
     <String Id="InstallDirDlgBannerBitmap" Overridable="yes">WixUI_Bmp_Banner</String>
-    <String Id="InstallDirDlgFolderLabel" Overridable="yes">[ProductName] 설치 위치:</String>
+    <String Id="InstallDirDlgFolderLabel" Overridable="yes">[ProductName] E¤EEEE¹E</String>
     
-    <String Id="InstallScopeDlg_Title" Overridable="yes">[ProductName] 설치</String>
+    <String Id="InstallScopeDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
     <String Id="InstallScopeDlgBannerBitmap" Overridable="yes">WixUI_Bmp_Banner</String>
-    <String Id="InstallScopeDlgDescription" Overridable="yes">요구에 가장 잘 맞는 설치 유형을 선택하십시오.</String>
-    <String Id="InstallScopeDlgTitle" Overridable="yes">{\WixUI_Font_Title}설치 종류</String>
-    <String Id="InstallScopeDlgPerUser" Overridable="yes">{\WixUI_Font_Emphasized}사용자 ([USERNAME]) 설치(&F)</String>
-    <String Id="InstallScopeDlgPerUserDescription" Overridable="yes">[ProductName] 는(은) 현재 사용자 대상에 대해 이용 가능합니다. Administrator 권한이 필요하지 않습니다.</String>
-    <String Id="InstallScopeDlgNoPerUserDescription" Overridable="yes">[ProductName] 는(은) 각 사용자 대상에 대하여 설치를 지원하고 있지 않습니다.</String>
-    <String Id="InstallScopeDlgPerMachine" Overridable="yes">{\WixUI_Font_Emphasized}현재 컴퓨터 모든 사용자 대상에 대해 설치(&C)</String>
-    <String Id="InstallScopeDlgPerMachineDescription" Overridable="yes">[ProductName] 는(은) 각 사용자 폴더에 설치되어 모든 사용자가 이용 가능합니다.설치 폴더를 변경하려면 Administrator 권한이 필요합니다.</String>
-    <String Id="InstallScopeDlgFolderLabel" Overridable="yes">설치 폴더(&F):</String>
-    <String Id="InstallScopeDlgChange" Overridable="yes">변경(&C)...</String>
+    <String Id="InstallScopeDlgDescription" Overridable="yes">E”구EEE€E¥ EEEžëŠ” E¤EEE ú´•ì„ E úŸí•˜E­Eœì˜¤.</String>
+    <String Id="InstallScopeDlgTitle" Overridable="yes">{\WixUI_Font_Title}E¤EEEE¥E/String>
+    <String Id="InstallScopeDlgPerUser" Overridable="yes">{\WixUI_Font_Emphasized}E¬E©EE([USERNAME]) E¤EE&F)</String>
+    <String Id="InstallScopeDlgPerUserDescription" Overridable="yes">[ProductName] EEE€) ú´Ež¬ E¬E©EEE€EE— E€ú±´ E´E© E€E¥ú±©Eˆë‹¤. Administrator EŒí•œE´ ú±Eš”ú±˜ì§€ EŠìŠµEˆë‹¤.</String>
+    <String Id="InstallScopeDlgNoPerUserDescription" Overridable="yes">[ProductName] EEE€) EEE¬E©EEE€EE— E€ú±˜ì—¬ E¤E˜ë¥¼ E€Eí•˜E  Eˆì§€ EŠìŠµEˆë‹¤.</String>
+    <String Id="InstallScopeDlgPerMachine" Overridable="yes">{\WixUI_Font_Emphasized}ú´Ež¬ E´ú¯¨ú ° E¨E  E¬E©EEE€EE— E€ú±´ E¤EE&C)</String>
+    <String Id="InstallScopeDlgPerMachineDescription" Overridable="yes">[ProductName] EEE€) EEE¬E©EEú«´E”에 E¤E˜ë˜E´ E¨E  E¬E©Eê°€ E´E© E€E¥ú±©Eˆë‹¤.E¤EEú«´E”를 E€E½ú±˜ë ¤E´ Administrator EŒí•œE´ ú±Eš”ú±©Eˆë‹¤.</String>
+    <String Id="InstallScopeDlgFolderLabel" Overridable="yes">E¤EEú«´EE&F):</String>
+    <String Id="InstallScopeDlgChange" Overridable="yes">E€E½(&C)...</String>
     
-    <String Id="InvalidDirDlg_Title" Overridable="yes">[ProductName] 설치</String>
+    <String Id="InvalidDirDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
     <String Id="InvalidDirDlgText" Overridable="yes">Installation directory must be on a local hard drive.</String>
     <String Id="InvalidDirDlgIcon" Overridable="yes">WixUI_Ico_Info</String>
     <String Id="InvalidDirDlgIconTooltip" Overridable="yes">Information icon</String>
     
-    <String Id="LicenseAgreementDlg_Title" Overridable="yes">[ProductName] 설치</String>
-    <String Id="LicenseAgreementDlgLicenseAcceptedCheckBox" Overridable="yes">동의함(&A)</String>
+    <String Id="LicenseAgreementDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
+    <String Id="LicenseAgreementDlgLicenseAcceptedCheckBox" Overridable="yes">E™ì˜ú±¨(&A)</String>
     <String Id="LicenseAgreementDlgBannerBitmap" Overridable="yes">WixUI_Bmp_Banner</String>
-    <String Id="LicenseAgreementDlgDescription" Overridable="yes">다음 사용권 계약을 자세히 읽어 주십시오.</String>
-    <String Id="LicenseAgreementDlgTitle" Overridable="yes">{\WixUI_Font_Title}최종 사용자 사용권 계약</String>
+    <String Id="LicenseAgreementDlgDescription" Overridable="yes">E¤EEE¬E©EEEE•½EEEì„¸úºEE½E´ E¼E­Eœì˜¤.</String>
+    <String Id="LicenseAgreementDlgTitle" Overridable="yes">{\WixUI_Font_Title}Eœì¢EE¬E©EEE¬E©EEEE•½</String>
     
-    <String Id="MaintenanceTypeDlg_Title" Overridable="yes">[ProductName] 설치</String>
-    <String Id="MaintenanceTypeDlgChangeButton" Overridable="yes">변경(&C)</String>
-    <String Id="MaintenanceTypeDlgChangeButtonTooltip" Overridable="yes">설치 변경</String>
-    <String Id="MaintenanceTypeDlgRepairButton" Overridable="yes">覲糾規(&P)</String>
-    <String Id="MaintenanceTypeDlgRepairButtonTooltip" Overridable="yes">설치 복구</String>
-    <String Id="MaintenanceTypeDlgRemoveButton" Overridable="yes">제거(&R)</String>
-    <String Id="MaintenanceTypeDlgRemoveButtonTooltip" Overridable="yes">설치 제거</String>
+    <String Id="MaintenanceTypeDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
+    <String Id="MaintenanceTypeDlgChangeButton" Overridable="yes">E€E½(&C)</String>
+    <String Id="MaintenanceTypeDlgChangeButtonTooltip" Overridable="yes">E¤EEE€E½</String>
+    <String Id="MaintenanceTypeDlgRepairButton" Overridable="yes">EµE¬(&P)</String>
+    <String Id="MaintenanceTypeDlgRepairButtonTooltip" Overridable="yes">E¤EEEµE¬</String>
+    <String Id="MaintenanceTypeDlgRemoveButton" Overridable="yes">Eœê±°(&R)</String>
+    <String Id="MaintenanceTypeDlgRemoveButtonTooltip" Overridable="yes">E¤EEEœê±°</String>
     <String Id="MaintenanceTypeDlgBannerBitmap" Overridable="yes">WixUI_Bmp_Banner</String>
-    <String Id="MaintenanceTypeDlgDescription" Overridable="yes">원하는 작업을 선택하십시오.</String>
-    <String Id="MaintenanceTypeDlgTitle" Overridable="yes">{\WixUI_Font_Title}설치 변경, 복구, 제거</String>
-    <String Id="MaintenanceTypeDlgChangeText" Overridable="yes">기능 설치 방법을 변경할 수 있습니다.</String>
-    <String Id="MaintenanceTypeDlgChangeDisabledText" Overridable="yes">[ProductName]에 독립적으로 선택할 수 있는 기능이 없습니다.</String>
-    <String Id="MaintenanceTypeDlgRemoveText" Overridable="yes">컴퓨터에서 [ProductName]을(를) 제거합니다.</String>
-    <String Id="MaintenanceTypeDlgRemoveDisabledText" Overridable="yes">[ProductName] 을(를) 제거할 수 없습니다.</String>
-    <String Id="MaintenanceTypeDlgRepairText" Overridable="yes">가장 최근의 설치 상태에서 오류를 복구합니다. 없거나 손상된 파일, 바로 가기 및 레지스트리 항목을 고칩니다.</String>
+    <String Id="MaintenanceTypeDlgDescription" Overridable="yes">Eí•˜EEE‘ì—…EEE úŸí•˜E­Eœì˜¤.</String>
+    <String Id="MaintenanceTypeDlgTitle" Overridable="yes">{\WixUI_Font_Title}E¤EEE€E½, EµE¬, Eœê±°</String>
+    <String Id="MaintenanceTypeDlgChangeText" Overridable="yes">E°E¥ E¤EEE©E•ì„ E€E½ú±  EEEˆìŠµEˆë‹¤.</String>
+    <String Id="MaintenanceTypeDlgChangeDisabledText" Overridable="yes">[ProductName]EEEE¦½EEœ¼EEE úŸí•  EEEˆëŠ” E°E¥E´ EEŠµEˆë‹¤.</String>
+    <String Id="MaintenanceTypeDlgRemoveText" Overridable="yes">E´ú¯¨ú °EìE [ProductName]EEE¼) Eœê±°ú±©Eˆë‹¤.</String>
+    <String Id="MaintenanceTypeDlgRemoveDisabledText" Overridable="yes">[ProductName] EEE¼) Eœê±°ú±  EEEEŠµEˆë‹¤.</String>
+    <String Id="MaintenanceTypeDlgRepairText" Overridable="yes">E€E¥ Eœê·¼EEE¤EEEEEEìE E¤E˜ë¥¼ EµE¬ú±©Eˆë‹¤. EE±°EEEìƒEEú¨Œì¼, E”롁EE€E° EEEˆì§€E¤ú¦¸E¬ ú±­E©EEE E©Eˆë‹¤.</String>
     
-    <String Id="MaintenanceTypeDlgRepairDisabledText" Overridable="yes">[ProductName] 을(를) 복구할 수 없습니다.</String>
-    <String Id="MaintenanceWelcomeDlg_Title" Overridable="yes">[ProductName] 설치</String>
+    <String Id="MaintenanceTypeDlgRepairDisabledText" Overridable="yes">[ProductName] EEE¼) EµE¬ú±  EEEEŠµEˆë‹¤.</String>
+    <String Id="MaintenanceWelcomeDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
     <String Id="MaintenanceWelcomeDlgBitmap" Overridable="yes">WixUI_Bmp_Dialog</String>
-    <String Id="MaintenanceWelcomeDlgDescription" Overridable="yes">설치 마법사를 사용하면 [ProductName] 기능이 컴퓨터에 설치되는 방법을 변경하거나 기능을 제거할 수 있습니다. 계속하려면 "다음"을 클릭하고, 설치 마법사를 끝내려면 "취소"를 클릭합니다.</String>
-    <String Id="MaintenanceWelcomeDlgTitle" Overridable="yes">{\WixUI_Font_Bigger}[ProductName] 설치 마법사 시작</String>
+    <String Id="MaintenanceWelcomeDlgDescription" Overridable="yes">E¤EEEˆë²•ì‚¬E¼ E¬E©ú±˜ë©´ [ProductName] E°E¥E´ E´ú¯¨ú °EEE¤E˜ë˜EEE©E•ì„ E€E½ú±˜ê±°EEE°E¥EEEœê±°ú±  EEEˆìŠµEˆë‹¤. EEEú±˜ë ¤E´ "E¤EEEEú´E­ú±˜ê³ , E¤EEEˆë²•ì‚¬E¼ Eë‚´E¤E´ "E¨EEE¼ ú´E­ú±©Eˆë‹¤.</String>
+    <String Id="MaintenanceWelcomeDlgTitle" Overridable="yes">{\WixUI_Font_Bigger}[ProductName] E¤EEEˆë²•ì‚¬ Eœìž‘</String>
     
-    <String Id="MsiRMFilesInUse_Title" Overridable="yes">[ProductName] 설치</String>
+    <String Id="MsiRMFilesInUse_Title" Overridable="yes">[ProductName] E¤EE/String>
     <String Id="MsiRMFilesInUseBannerBitmap" Overridable="yes">WixUI_Bmp_Banner</String>
-    <String Id="MsiRMFilesInUseText" Overridable="yes">다음 응용 프로그램에서 이 설치 프로그램이 업데이트해야 할 파일을 사용하고 있습니다. 설치 마법사에서 관련 프로그램을 닫고 다시 시작하거나 나중에 다시 부팅할 수 있습니다.</String>
-    <String Id="MsiRMFilesInUseDescription" Overridable="yes">업데이트할 파일 중 일부를 사용하고 있습니다.</String>
-    <String Id="MsiRMFilesInUseTitle" Overridable="yes">{\WixUI_Font_Title}파일 사용 중</String>
-    <String Id="MsiRMFilesInUseUseRM" Overridable="yes">응용 프로그램을 닫고 다시 시작합니다(&C).</String>
-    <String Id="MsiRMFilesInUseDontUseRM" Overridable="yes">응용 프로그램을 닫지 않습니다. 다시 부팅해야 합니다(&D).</String>
+    <String Id="MsiRMFilesInUseText" Overridable="yes">E¤EEE‘ìš© ú°E¡œê·¸E¨EìE E´ E¤EEú°E¡œê·¸E¨E´ EE°E´ú¦¸ú±´E¼ ú±  ú¨Œì¼EEE¬E©ú±˜ê³  EˆìŠµEˆë‹¤. E¤EEEˆë²•ì‚¬EìE E€E¨ ú°E¡œê·¸E¨EEE«E  E¤EEEœìž‘ú±˜ê±°EEE˜ì¤‘에 E¤EEE€ú¨E•  EEEˆìŠµEˆë‹¤.</String>
+    <String Id="MsiRMFilesInUseDescription" Overridable="yes">EE°E´ú¦¸ú±  ú¨Œì¼ EEE¼E€E¼ E¬E©ú±˜ê³  EˆìŠµEˆë‹¤.</String>
+    <String Id="MsiRMFilesInUseTitle" Overridable="yes">{\WixUI_Font_Title}ú¨Œì¼ E¬E© EE/String>
+    <String Id="MsiRMFilesInUseUseRM" Overridable="yes">E‘ìš© ú°E¡œê·¸E¨EEE«E  E¤EEEœìž‘ú±©Eˆë‹¤(&C).</String>
+    <String Id="MsiRMFilesInUseDontUseRM" Overridable="yes">E‘ìš© ú°E¡œê·¸E¨EEE«E€ EŠìŠµEˆë‹¤. E¤EEE€ú¨E•´E¼ ú±©Eˆë‹¤(&D).</String>
     
-    <String Id="OutOfDiskDlg_Title" Overridable="yes">[ProductName] 설치</String>
+    <String Id="OutOfDiskDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
     <String Id="OutOfDiskDlgBannerBitmap" Overridable="yes">WixUI_Bmp_Banner</String>
-    <String Id="OutOfDiskDlgText" Overridable="yes">선택된 볼륨에는 현재 선택한 기능을 설치할 만큼 충분한 공간이 없습니다. 해당 볼륨에서 일부 파일을 제거하거나, 설치할 기능을 줄이거나, 다른 대상 드라이브를 선택할 수 있습니다.</String>
-    <String Id="OutOfDiskDlgDescription" Overridable="yes">설치에 필요한 디스크 공간이 사용 가능한 디스크 공간을 초과합니다.</String>
-    <String Id="OutOfDiskDlgTitle" Overridable="yes">{\WixUI_Font_Title}디스크 공간 부족</String>
+    <String Id="OutOfDiskDlgText" Overridable="yes">E úŸëœ E¼E¨EëŠ” ú´Ež¬ E úŸí•œ E°E¥EEE¤E˜í•  EŒí¼ E©EE•œ EµEE´ EEŠµEˆë‹¤. ú±´E¹ E¼E¨EìE E¼E€ ú¨Œì¼EEEœê±°ú±˜ê±°EE E¤E˜í•  E°E¥EEEE´E°EE E¤E¸ E€EEEœë¼E´EŒë¥¼ E úŸí•  EEEˆìŠµEˆë‹¤.</String>
+    <String Id="OutOfDiskDlgDescription" Overridable="yes">E¤E˜ì— ú±Eš”ú±EE”스ú¬ EµEE´ E¬E© E€E¥ú±EE”스ú¬ EµEE„ Eˆê³¼ú±©Eˆë‹¤.</String>
+    <String Id="OutOfDiskDlgTitle" Overridable="yes">{\WixUI_Font_Title}E”스ú¬ EµEEE€E±</String>
     <String Id="OutOfDiskDlgVolumeList" Overridable="yes">{120}{70}{70}{70}{70}</String>
     
-    <String Id="OutOfRbDiskDlg_Title" Overridable="yes">[ProductName] 설치</String>
+    <String Id="OutOfRbDiskDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
     <String Id="OutOfRbDiskDlgBannerBitmap" Overridable="yes">WixUI_Bmp_Banner</String>
-    <String Id="OutOfRbDiskDlgText" Overridable="yes">선택된 볼륨에는 현재 선택한 기능을 설치할 만큼 충분한 공간이 없습니다. 해당 볼륨에서 일부 파일을 제거하거나, 설치할 기능을 줄이거나, 다른 대상 드라이브를 선택할 수 있습니다.</String>
-    <String Id="OutOfRbDiskDlgDescription" Overridable="yes">설치에 필요한 디스크 공간이 사용 가능한 디스크 공간을 초과합니다.</String>
-    <String Id="OutOfRbDiskDlgTitle" Overridable="yes">{\WixUI_Font_Title}디스크 공간 부족</String>
+    <String Id="OutOfRbDiskDlgText" Overridable="yes">E úŸëœ E¼E¨EëŠ” ú´Ež¬ E úŸí•œ E°E¥EEE¤E˜í•  EŒí¼ E©EE•œ EµEE´ EEŠµEˆë‹¤. ú±´E¹ E¼E¨EìE E¼E€ ú¨Œì¼EEEœê±°ú±˜ê±°EE E¤E˜í•  E°E¥EEEE´E°EE E¤E¸ E€EEEœë¼E´EŒë¥¼ E úŸí•  EEEˆìŠµEˆë‹¤.</String>
+    <String Id="OutOfRbDiskDlgDescription" Overridable="yes">E¤E˜ì— ú±Eš”ú±EE”스ú¬ EµEE´ E¬E© E€E¥ú±EE”스ú¬ EµEE„ Eˆê³¼ú±©Eˆë‹¤.</String>
+    <String Id="OutOfRbDiskDlgTitle" Overridable="yes">{\WixUI_Font_Title}E”스ú¬ EµEEE€E±</String>
     <String Id="OutOfRbDiskDlgVolumeList" Overridable="yes">{120}{70}{70}{70}{70}</String>
-    <String Id="OutOfRbDiskDlgText2" Overridable="yes">또는 롤백 기능을 사용하지 않도록 선택할 수도 있습니다. 이렇게 선택하면, 설치가 중단된 경우 컴퓨터를 원래의 초기 상태로 복원할 수 없습니다. 롤백을 사용하지 않으려면 "예"를 클릭하십시오.</String>
+    <String Id="OutOfRbDiskDlgText2" Overridable="yes">EëŠ” E¤E± E°E¥EEE¬E©ú±˜ì§€ EŠë„EEE úŸí•  E˜ë„ EˆìŠµEˆë‹¤. E´EE²EE úŸí•˜E´, E¤E˜ê°€ E‘단EEE½E° E´ú¯¨ú °E¼ Eëž˜EEEˆê¸° EEEEEEµEí•  EEEEŠµEˆë‹¤. E¤E±EEE¬E©ú±˜ì§€ EŠìœ¼E¤E´ "EEE¼ ú´E­ú±˜ì‹­Eœì˜¤.</String>
     
-    <String Id="PrepareDlg_Title" Overridable="yes">[ProductName] 설치</String>
+    <String Id="PrepareDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
     <String Id="PrepareDlgBitmap" Overridable="yes">WixUI_Bmp_Dialog</String>
-    <String Id="PrepareDlgDescription" Overridable="yes">설치 마법사가 설치 안내를 준비하는 동안 기다려 주십시오.</String>
-    <String Id="PrepareDlgTitle" Overridable="yes">{\WixUI_Font_Bigger}[ProductName] 설치 마법사 시작</String>
+    <String Id="PrepareDlgDescription" Overridable="yes">E¤EEEˆë²•ì‚¬E€ E¤EEEˆë‚´E¼ E€EE•˜EEE™ì•ˆ E°E¤E¤ E¼E­Eœì˜¤.</String>
+    <String Id="PrepareDlgTitle" Overridable="yes">{\WixUI_Font_Bigger}[ProductName] E¤EEEˆë²•ì‚¬ Eœìž‘</String>
     
-    <String Id="ProgressDlg_Title" Overridable="yes">[ProductName] 설치</String>
+    <String Id="ProgressDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
     <String Id="ProgressDlgBannerBitmap" Overridable="yes">WixUI_Bmp_Banner</String>
-    <String Id="ProgressDlgTextInstalling" Overridable="yes">설치 마법사에서 [ProductName]을(를) 설치하는 동안 기다려 주십시오.</String>
-    <String Id="ProgressDlgTitleInstalling" Overridable="yes">{\WixUI_Font_Title}[ProductName] 설치 중</String>
-    <String Id="ProgressDlgTextChanging" Overridable="yes">설치 마법사에서 [ProductName]을(를) 변경하는 동안 기다려 주십시오.</String>
-    <String Id="ProgressDlgTitleChanging" Overridable="yes">{\WixUI_Font_Title}[ProductName] 변경 중</String>
-    <String Id="ProgressDlgTextRepairing" Overridable="yes">설치 마법사에서 [ProductName]을(를) 복구하는 동안 기다려 주십시오.</String>
-    <String Id="ProgressDlgTitleRepairing" Overridable="yes">{\WixUI_Font_Title}[ProductName] 복구 중</String>
-    <String Id="ProgressDlgTextRemoving" Overridable="yes">설치 마법사에서 [ProductName]을(를) 제거하는 동안 기다려 주십시오.</String>
-    <String Id="ProgressDlgTitleRemoving" Overridable="yes">{\WixUI_Font_Title}[ProductName] 제거 중</String>
-    <String Id="ProgressDlgProgressBar" Overridable="yes">진행 완료</String>
-    <String Id="ProgressDlgStatusLabel" Overridable="yes">상태:</String>
+    <String Id="ProgressDlgTextInstalling" Overridable="yes">E¤EEEˆë²•ì‚¬EìE [ProductName]EEE¼) E¤E˜í•˜EEE™ì•ˆ E°E¤E¤ E¼E­Eœì˜¤.</String>
+    <String Id="ProgressDlgTitleInstalling" Overridable="yes">{\WixUI_Font_Title}[ProductName] E¤EEEE/String>
+    <String Id="ProgressDlgTextChanging" Overridable="yes">E¤EEEˆë²•ì‚¬EìE [ProductName]EEE¼) E€E½ú±˜ëŠ” E™ì•ˆ E°E¤E¤ E¼E­Eœì˜¤.</String>
+    <String Id="ProgressDlgTitleChanging" Overridable="yes">{\WixUI_Font_Title}[ProductName] E€E½ EE/String>
+    <String Id="ProgressDlgTextRepairing" Overridable="yes">E¤EEEˆë²•ì‚¬EìE [ProductName]EEE¼) EµE¬ú±˜ëŠ” E™ì•ˆ E°E¤E¤ E¼E­Eœì˜¤.</String>
+    <String Id="ProgressDlgTitleRepairing" Overridable="yes">{\WixUI_Font_Title}[ProductName] EµE¬ EE/String>
+    <String Id="ProgressDlgTextRemoving" Overridable="yes">E¤EEEˆë²•ì‚¬EìE [ProductName]EEE¼) Eœê±°ú±˜ëŠ” E™ì•ˆ E°E¤E¤ E¼E­Eœì˜¤.</String>
+    <String Id="ProgressDlgTitleRemoving" Overridable="yes">{\WixUI_Font_Title}[ProductName] Eœê±° EE/String>
+    <String Id="ProgressDlgProgressBar" Overridable="yes">EE–‰ EE£E/String>
+    <String Id="ProgressDlgStatusLabel" Overridable="yes">EEE:</String>
     
-    <String Id="ResumeDlg_Title" Overridable="yes">[ProductName] 설치</String>
-    <String Id="ResumeDlgInstall" Overridable="yes">설치(&I)</String>
+    <String Id="ResumeDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
+    <String Id="ResumeDlgInstall" Overridable="yes">E¤EE&I)</String>
     <String Id="ResumeDlgBitmap" Overridable="yes">WixUI_Bmp_Dialog</String>
-    <String Id="ResumeDlgDescription" Overridable="yes">설치 마법사가 [ProductName]의 설치를 완료합니다. 계속하려면 "설치"를 클릭하고, 설치 마법사를 끝내려면 "취소"를 클릭하십시오.</String>
-    <String Id="ResumeDlgTitle" Overridable="yes">{\WixUI_Font_Bigger}[ProductName] 설치 마법사 다시 시작</String>
+    <String Id="ResumeDlgDescription" Overridable="yes">E¤EEEˆë²•ì‚¬E€ [ProductName]EEE¤E˜ë¥¼ EE£Œí•©Eˆë‹¤. EEEú±˜ë ¤E´ "E¤EEE¼ ú´E­ú±˜ê³ , E¤EEEˆë²•ì‚¬E¼ Eë‚´E¤E´ "E¨EEE¼ ú´E­ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="ResumeDlgTitle" Overridable="yes">{\WixUI_Font_Bigger}[ProductName] E¤EEEˆë²•ì‚¬ E¤EEEœìž‘</String>
     
-    <String Id="SetupTypeDlg_Title" Overridable="yes">[ProductName] 설치</String>
-    <String Id="SetupTypeDlgTypicalButton" Overridable="yes">표준(&T)</String>
-    <String Id="SetupTypeDlgTypicalButtonTooltip" Overridable="yes">표준 설치</String>
-    <String Id="SetupTypeDlgCustomButton" Overridable="yes">사용자 지정(&U)</String>
-    <String Id="SetupTypeDlgCustomButtonTooltip" Overridable="yes">사용자 지정 설치</String>
-    <String Id="SetupTypeDlgCompleteButton" Overridable="yes">ì „ì²´(&O)</String>
-    <String Id="SetupTypeDlgCompleteButtonTooltip" Overridable="yes">전체 설치</String>
+    <String Id="SetupTypeDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
+    <String Id="SetupTypeDlgTypicalButton" Overridable="yes">ú­œì¤€(&T)</String>
+    <String Id="SetupTypeDlgTypicalButtonTooltip" Overridable="yes">ú­œì¤€ E¤EE/String>
+    <String Id="SetupTypeDlgCustomButton" Overridable="yes">E¬E©EEE€EE&U)</String>
+    <String Id="SetupTypeDlgCustomButtonTooltip" Overridable="yes">E¬E©EEE€EEE¤EE/String>
+    <String Id="SetupTypeDlgCompleteButton" Overridable="yes">EE²´(&O)</String>
+    <String Id="SetupTypeDlgCompleteButtonTooltip" Overridable="yes">EE²´ E¤EE/String>
     <String Id="SetupTypeDlgBannerBitmap" Overridable="yes">WixUI_Bmp_Banner</String>
-    <String Id="SetupTypeDlgTitle" Overridable="yes">{\WixUI_Font_Title}설치 유형 선택</String>
-    <String Id="SetupTypeDlgDescription" Overridable="yes">요구에 가장 잘 맞는 설치 유형을 선택하십시오.</String>
-    <String Id="SetupTypeDlgTypicalText" Overridable="yes">가장 일반적인 프로그램 기능을 설치합니다. 대부분의 사용자에게 권장합니다.</String>
-    <String Id="SetupTypeDlgCustomText" Overridable="yes">설치할 프로그램 기능과 위치를 선택할 수 있습니다. 고급 사용자에게 권장합니다.</String>
-    <String Id="SetupTypeDlgCompleteText" Overridable="yes">모든 프로그램 기능을 설치합니다. 가장 많은 디스크 공간이 필요합니다.</String>
+    <String Id="SetupTypeDlgTitle" Overridable="yes">{\WixUI_Font_Title}E¤EEE ú´EE úŸE/String>
+    <String Id="SetupTypeDlgDescription" Overridable="yes">E”구EEE€E¥ EEEžëŠ” E¤EEE ú´•ì„ E úŸí•˜E­Eœì˜¤.</String>
+    <String Id="SetupTypeDlgTypicalText" Overridable="yes">E€E¥ E¼E˜ì E¸ ú°E¡œê·¸E¨ E°E¥EEE¤E˜í•©Eˆë‹¤. E€E€EE˜ E¬E©Eì—EEEŒìž¥ú±©Eˆë‹¤.</String>
+    <String Id="SetupTypeDlgCustomText" Overridable="yes">E¤E˜í•  ú°E¡œê·¸E¨ E°E¥E¼ EE¹˜ë¥¼ E úŸí•  EEEˆìŠµEˆë‹¤. E EEE¬E©Eì—EEEŒìž¥ú±©Eˆë‹¤.</String>
+    <String Id="SetupTypeDlgCompleteText" Overridable="yes">E¨E  ú°E¡œê·¸E¨ E°E¥EEE¤E˜í•©Eˆë‹¤. E€E¥ EŽì€ E”스ú¬ EµEE´ ú±Eš”ú±©Eˆë‹¤.</String>
     
-    <String Id="UserExit_Title" Overridable="yes">[ProductName] 설치</String>
+    <String Id="UserExit_Title" Overridable="yes">[ProductName] E¤EE/String>
     <String Id="UserExitBitmap" Overridable="yes">WixUI_Bmp_Dialog</String>
-    <String Id="UserExitTitle" Overridable="yes">{\WixUI_Font_Bigger}[ProductName] 설치 마법사가 중간에 중단되었습니다.</String>
-    <String Id="UserExitDescription1" Overridable="yes">[ProductName] 설치가 중단되었습니다. 시스템이 수정되지 않았습니다. 나중에 이 프로그램을 설치하려면 설치 마법사를 다시 실행하십시오.</String>
-    <String Id="UserExitDescription2" Overridable="yes">설치 마법사를 끝내려면 "마침" 단추를 클릭하십시오.</String>
+    <String Id="UserExitTitle" Overridable="yes">{\WixUI_Font_Bigger}[ProductName] E¤EEEˆë²•ì‚¬E€ E‘각E— E‘단E˜ì—ˆEµEˆë‹¤.</String>
+    <String Id="UserExitDescription1" Overridable="yes">[ProductName] E¤E˜ê°€ E‘단E˜ì—ˆEµEˆë‹¤. EœìŠ¤ú¡œì´ E˜ì •ë˜E€ EŠì•˜EµEˆë‹¤. E˜ì¤‘에 E´ ú°E¡œê·¸E¨EEE¤E˜í•˜E¤E´ E¤EEEˆë²•ì‚¬E¼ E¤EEE¤ú²‰í•˜E­Eœì˜¤.</String>
+    <String Id="UserExitDescription2" Overridable="yes">E¤EEEˆë²•ì‚¬E¼ Eë‚´E¤E´ "Eˆì¹¨" E¨E”를 ú´E­ú±˜ì‹­Eœì˜¤.</String>
     
-    <String Id="VerifyReadyDlg_Title" Overridable="yes">[ProductName] 설치</String>
+    <String Id="VerifyReadyDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
     <String Id="VerifyReadyDlgBannerBitmap" Overridable="yes">WixUI_Bmp_Banner</String>
-    <String Id="VerifyReadyDlgInstall" Overridable="yes">설치(&I)</String>
-    <String Id="VerifyReadyDlgInstallText" Overridable="yes">설치를 시작하려면 "설치"를 클릭합니다. 설치 설정을 검토하거나 변경하려면 "뒤로"를 클릭하고, 마법사를 끝내려면 "취소"를 클릭하십시오.</String>
-    <String Id="VerifyReadyDlgInstallTitle" Overridable="yes">{\WixUI_Font_Title}[ProductName]을(를) 설치할 준비가 되었습니다.</String>
-    <String Id="VerifyReadyDlgChange" Overridable="yes">변경(&C)</String>
-    <String Id="VerifyReadyDlgChangeText" Overridable="yes">설치를 시작하려면 "변경"을 클릭합니다. 설치 설정을 검토하거나 변경하려면 "뒤로"를 클릭하고, 마법사를 끝내려면 "취소"를 클릭하십시오.</String>
-    <String Id="VerifyReadyDlgChangeTitle" Overridable="yes">{\WixUI_Font_Title}[ProductName]을(를) 변경할 준비가 되었습니다.</String>
-    <String Id="VerifyReadyDlgRepair" Overridable="yes">覲糾規(&P)</String>
-    <String Id="VerifyReadyDlgRepairText" Overridable="yes">[ProductName]의 설치를 복구하려면 "복구"를 클릭합니다. 설치 설정을 검토하거나 변경하려면 "뒤로"를 클릭하고, 마법사를 끝내려면 "취소"를 클릭하십시오.</String>
-    <String Id="VerifyReadyDlgRepairTitle" Overridable="yes">{\WixUI_Font_Title}[ProductName]을(를) 복구할 준비가 되었습니다.</String>
-    <String Id="VerifyReadyDlgRemove" Overridable="yes">제거(&R)</String>
-    <String Id="VerifyReadyDlgRemoveText" Overridable="yes">[ProductName]을(를) 제거하려면 "제거"를 클릭합니다. 설치 설정을 검토하거나 변경하려면 "뒤로"를 클릭하고, 마법사를 끝내려면 "취소"를 클릭하십시오.</String>
-    <String Id="VerifyReadyDlgRemoveTitle" Overridable="yes">{\WixUI_Font_Title}[ProductName]을(를) 제거할 준비가 되었습니다.</String>
+    <String Id="VerifyReadyDlgInstall" Overridable="yes">E¤EE&I)</String>
+    <String Id="VerifyReadyDlgInstallText" Overridable="yes">E¤E˜ë¥¼ Eœìž‘ú±˜ë ¤E´ "E¤EEE¼ ú´E­ú±©Eˆë‹¤. E¤EEE¤E•ì„ E€ú¢ ú±˜ê±°EEE€E½ú±˜ë ¤E´ "E¤EEE¼ ú´E­ú±˜ê³ , Eˆë²•ì‚¬E¼ Eë‚´E¤E´ "E¨EEE¼ ú´E­ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="VerifyReadyDlgInstallTitle" Overridable="yes">{\WixUI_Font_Title}[ProductName]EEE¼) E¤E˜í•  E€EE°€ E˜ì—ˆEµEˆë‹¤.</String>
+    <String Id="VerifyReadyDlgChange" Overridable="yes">E€E½(&C)</String>
+    <String Id="VerifyReadyDlgChangeText" Overridable="yes">E¤E˜ë¥¼ Eœìž‘ú±˜ë ¤E´ "E€E½"EEú´E­ú±©Eˆë‹¤. E¤EEE¤E•ì„ E€ú¢ ú±˜ê±°EEE€E½ú±˜ë ¤E´ "E¤EEE¼ ú´E­ú±˜ê³ , Eˆë²•ì‚¬E¼ Eë‚´E¤E´ "E¨EEE¼ ú´E­ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="VerifyReadyDlgChangeTitle" Overridable="yes">{\WixUI_Font_Title}[ProductName]EEE¼) E€E½ú±  E€EE°€ E˜ì—ˆEµEˆë‹¤.</String>
+    <String Id="VerifyReadyDlgRepair" Overridable="yes">EµE¬(&P)</String>
+    <String Id="VerifyReadyDlgRepairText" Overridable="yes">[ProductName]EEE¤E˜ë¥¼ EµE¬ú±˜ë ¤E´ "EµE¬"E¼ ú´E­ú±©Eˆë‹¤. E¤EEE¤E•ì„ E€ú¢ ú±˜ê±°EEE€E½ú±˜ë ¤E´ "E¤EEE¼ ú´E­ú±˜ê³ , Eˆë²•ì‚¬E¼ Eë‚´E¤E´ "E¨EEE¼ ú´E­ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="VerifyReadyDlgRepairTitle" Overridable="yes">{\WixUI_Font_Title}[ProductName]EEE¼) EµE¬ú±  E€EE°€ E˜ì—ˆEµEˆë‹¤.</String>
+    <String Id="VerifyReadyDlgRemove" Overridable="yes">Eœê±°(&R)</String>
+    <String Id="VerifyReadyDlgRemoveText" Overridable="yes">[ProductName]EEE¼) Eœê±°ú±˜ë ¤E´ "Eœê±°"E¼ ú´E­ú±©Eˆë‹¤. E¤EEE¤E•ì„ E€ú¢ ú±˜ê±°EEE€E½ú±˜ë ¤E´ "E¤EEE¼ ú´E­ú±˜ê³ , Eˆë²•ì‚¬E¼ Eë‚´E¤E´ "E¨EEE¼ ú´E­ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="VerifyReadyDlgRemoveTitle" Overridable="yes">{\WixUI_Font_Title}[ProductName]EEE¼) Eœê±°ú±  E€EE°€ E˜ì—ˆEµEˆë‹¤.</String>
     
-    <String Id="WaitForCostingDlg_Title" Overridable="yes">[ProductName] 설치</String>
-    <String Id="WaitForCostingDlgReturn" Overridable="yes">돌아가기(&R)</String>
-    <String Id="WaitForCostingDlgText" Overridable="yes">필요한 디스크 공간을 확인하고 있습니다.</String>
+    <String Id="WaitForCostingDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
+    <String Id="WaitForCostingDlgReturn" Overridable="yes">EŒì•„E€E°(&R)</String>
+    <String Id="WaitForCostingDlgText" Overridable="yes">ú±Eš”ú±EE”스ú¬ EµEE„ úµ•ì¸ú±˜ê³  EˆìŠµEˆë‹¤.</String>
     <String Id="WaitForCostingDlgIcon" Overridable="yes">WixUI_Ico_Exclam</String>
-    <String Id="WaitForCostingDlgIconTooltip" Overridable="yes">경고 아이콘</String>
+    <String Id="WaitForCostingDlgIconTooltip" Overridable="yes">E½E  EE´EE/String>
     
-    <String Id="WelcomeDlg_Title" Overridable="yes">[ProductName] 설치</String>
+    <String Id="WelcomeDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
     <String Id="WelcomeDlgBitmap" Overridable="yes">WixUI_Bmp_Dialog</String>
-    <String Id="WelcomeDlgDescription" Overridable="yes">컴퓨터에 [ProductName]을(를) 설치합니다. 계속하려면 "다음"을 클릭하고 설치 마법사를 끝내려면 "취소"를 클릭하십시오.</String>
-    <String Id="WelcomeDlgTitle" Overridable="yes">{\WixUI_Font_Bigger}[ProductName] 설치 마법사 시작</String>
+    <String Id="WelcomeDlgDescription" Overridable="yes">E´ú¯¨ú °EE[ProductName]EEE¼) E¤E˜í•©Eˆë‹¤. EEEú±˜ë ¤E´ "E¤EEEEú´E­ú±˜ê³  E¤EEEˆë²•ì‚¬E¼ Eë‚´E¤E´ "E¨EEE¼ ú´E­ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="WelcomeDlgTitle" Overridable="yes">{\WixUI_Font_Bigger}[ProductName] E¤EEEˆë²•ì‚¬ Eœìž‘</String>
     
-    <String Id="WelcomeEulaDlg_Title" Overridable="yes">[ProductName] 설치</String>
+    <String Id="WelcomeEulaDlg_Title" Overridable="yes">[ProductName] E¤EE/String>
     <String Id="WelcomeEulaDlgBitmap" Overridable="yes">WixUI_Bmp_Dialog</String>
-    <String Id="WelcomeEulaDlgLicenseAcceptedCheckBox" Overridable="yes">동의함(&A)</String>
-    <String Id="WelcomeEulaDlgInstall" Overridable="yes">설치(&I)</String>
-    <String Id="WelcomeEulaDlgTitle" Overridable="yes">{\WixUI_Font_Title}[ProductName] 사용권 계약을 읽어 주십시오.</String>
+    <String Id="WelcomeEulaDlgLicenseAcceptedCheckBox" Overridable="yes">E™ì˜ú±¨(&A)</String>
+    <String Id="WelcomeEulaDlgInstall" Overridable="yes">E¤EE&I)</String>
+    <String Id="WelcomeEulaDlgTitle" Overridable="yes">{\WixUI_Font_Title}[ProductName] E¬E©EEEE•½EEE½E´ E¼E­Eœì˜¤.</String>
     
-    <String Id="ProgressTextInstallValidate" Overridable="yes">설치 유효성 확인 중</String>
-    <String Id="ProgressTextInstallFiles" Overridable="yes">새 파일 복사 중</String>
-    <String Id="ProgressTextInstallFilesTemplate" Overridable="yes">파일: [1], 디렉터리: [9], 크기: [6]</String>
-    <String Id="ProgressTextInstallAdminPackage" Overridable="yes">네트워크 설치 파일을 복사하는 중</String>
-    <String Id="ProgressTextInstallAdminPackageTemplate" Overridable="yes">파일: [1], 디렉터리: [9], 크기: [6]</String>
-    <String Id="ProgressTextFileCost" Overridable="yes">필요한 공간을 확인하는 중</String>
-    <String Id="ProgressTextCostInitialize" Overridable="yes">필요한 공간을 확인하는 중</String>
-    <String Id="ProgressTextCostFinalize" Overridable="yes">필요한 공간을 확인하는 중</String>
-    <String Id="ProgressTextCreateShortcuts" Overridable="yes">바로 가기 만드는 중</String>
-    <String Id="ProgressTextCreateShortcutsTemplate" Overridable="yes">바로 가기: [1]</String>
-    <String Id="ProgressTextPublishComponents" Overridable="yes">해당 구성 요소를 게시하는 중</String>
-    <String Id="ProgressTextPublishComponentsTemplate" Overridable="yes">구성 요소 ID: [1], 한정자: [2]</String>
-    <String Id="ProgressTextPublishFeatures" Overridable="yes">제품 기능을 게시하는 중</String>
-    <String Id="ProgressTextPublishFeaturesTemplate" Overridable="yes">기능: [1]</String>
-    <String Id="ProgressTextPublishProduct" Overridable="yes">제품 정보를 게시하는 중</String>
-    <String Id="ProgressTextRegisterClassInfo" Overridable="yes">클래스 서버를 등록하는 중</String>
-    <String Id="ProgressTextRegisterClassInfoTemplate" Overridable="yes">클래스 ID: [1]</String>
-    <String Id="ProgressTextRegisterExtensionInfo" Overridable="yes">확장 서버를 등록하는 중</String>
-    <String Id="ProgressTextRegisterExtensionInfoTemplate" Overridable="yes">확장: [1]</String>
-    <String Id="ProgressTextRegisterMIMEInfo" Overridable="yes">MIME 정보를 등록하는 중</String>
-    <String Id="ProgressTextRegisterMIMEInfoTemplate" Overridable="yes">MIME 콘텐트 형식: [1], 확장: [2]</String>
-    <String Id="ProgressTextRegisterProgIdInfo" Overridable="yes">프로그램 ID를 등록하는 중</String>
+    <String Id="ProgressTextInstallValidate" Overridable="yes">E¤EEE ú¶¨E± úµ•ì¸ EE/String>
+    <String Id="ProgressTextInstallFiles" Overridable="yes">EEú¨Œì¼ EµE¬ EE/String>
+    <String Id="ProgressTextInstallFilesTemplate" Overridable="yes">ú¨Œì¼: [1], E”렉터E¬: [9], ú¬E°: [6]</String>
+    <String Id="ProgressTextInstallAdminPackage" Overridable="yes">E¤ú¦¸EŒí¬ E¤EEú¨Œì¼EEEµE¬ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextInstallAdminPackageTemplate" Overridable="yes">ú¨Œì¼: [1], E”렉터E¬: [9], ú¬E°: [6]</String>
+    <String Id="ProgressTextFileCost" Overridable="yes">ú±Eš”ú±EEµEE„ úµ•ì¸ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextCostInitialize" Overridable="yes">ú±Eš”ú±EEµEE„ úµ•ì¸ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextCostFinalize" Overridable="yes">ú±Eš”ú±EEµEE„ úµ•ì¸ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextCreateShortcuts" Overridable="yes">E”롁EE€E° EŒë“œEEEE/String>
+    <String Id="ProgressTextCreateShortcutsTemplate" Overridable="yes">E”롁EE€E°: [1]</String>
+    <String Id="ProgressTextPublishComponents" Overridable="yes">ú±´E¹ E¬E± E”ìEE¼ EŒì‹œú±˜ëŠ” EE/String>
+    <String Id="ProgressTextPublishComponentsTemplate" Overridable="yes">E¬E± E”ìE ID: [1], ú±œì •ìž: [2]</String>
+    <String Id="ProgressTextPublishFeatures" Overridable="yes">Eœí’ˆ E°E¥EEEŒì‹œú±˜ëŠ” EE/String>
+    <String Id="ProgressTextPublishFeaturesTemplate" Overridable="yes">E°E¥: [1]</String>
+    <String Id="ProgressTextPublishProduct" Overridable="yes">Eœí’ˆ E•ë³´E¼ EŒì‹œú±˜ëŠ” EE/String>
+    <String Id="ProgressTextRegisterClassInfo" Overridable="yes">ú´E˜ìŠ¤ Eœë²E¥¼ E±Eí•˜EEEE/String>
+    <String Id="ProgressTextRegisterClassInfoTemplate" Overridable="yes">ú´E˜ìŠ¤ ID: [1]</String>
+    <String Id="ProgressTextRegisterExtensionInfo" Overridable="yes">úµ•ìž¥ Eœë²E¥¼ E±Eí•˜EEEE/String>
+    <String Id="ProgressTextRegisterExtensionInfoTemplate" Overridable="yes">úµ•ìž¥: [1]</String>
+    <String Id="ProgressTextRegisterMIMEInfo" Overridable="yes">MIME E•ë³´E¼ E±Eí•˜EEEE/String>
+    <String Id="ProgressTextRegisterMIMEInfoTemplate" Overridable="yes">MIME E˜íEú¦¸ ú´•ì‹: [1], úµ•ìž¥: [2]</String>
+    <String Id="ProgressTextRegisterProgIdInfo" Overridable="yes">ú°E¡œê·¸E¨ IDE¼ E±Eí•˜EEEE/String>
     <String Id="ProgressTextRegisterProgIdInfoTemplate" Overridable="yes">ProgID: [1]</String>
-    <String Id="ProgressTextAllocateRegistrySpace" Overridable="yes">레지스트리 공간을 할당하는 중</String>
-    <String Id="ProgressTextAllocateRegistrySpaceTemplate" Overridable="yes">사용 가능한 공간: [1]</String>
-    <String Id="ProgressTextAppSearch" Overridable="yes">설치한 응용 프로그램을 찾는 중</String>
-    <String Id="ProgressTextAppSearchTemplate" Overridable="yes">속성: [1], 서명: [2]</String>
-    <String Id="ProgressTextBindImage" Overridable="yes">실행 파일을 연결하는 중</String>
-    <String Id="ProgressTextBindImageTemplate" Overridable="yes">파일: [1]</String>
-    <String Id="ProgressTextCCPSearch" Overridable="yes">정품을 찾는 중</String>
-    <String Id="ProgressTextCreateFolders" Overridable="yes">폴더를 만드는 중</String>
-    <String Id="ProgressTextCreateFoldersTemplate" Overridable="yes">폴더: [1]</String>
-    <String Id="ProgressTextDeleteServices" Overridable="yes">서비스를 삭제하는 중</String>
-    <String Id="ProgressTextDeleteServicesTemplate" Overridable="yes">서비스: [1]</String>
-    <String Id="ProgressTextDuplicateFiles" Overridable="yes">중복 파일을 만드는 중</String>
-    <String Id="ProgressTextDuplicateFilesTemplate" Overridable="yes">파일: [1], 디렉터리: [9], 크기: [6]</String>
-    <String Id="ProgressTextFindRelatedProducts" Overridable="yes">관련 응용 프로그램을 찾는 중</String>
-    <String Id="ProgressTextFindRelatedProductsTemplate" Overridable="yes">찾은 응용 프로그램: [1]</String>
-    <String Id="ProgressTextInstallODBC" Overridable="yes">ODBC 구성 요소를 설치하는 중</String>
-    <String Id="ProgressTextInstallServices" Overridable="yes">새 서비스를 설치하는 중</String>
-    <String Id="ProgressTextInstallServicesTemplate" Overridable="yes">서비스: [2]</String>
-    <String Id="ProgressTextLaunchConditions" Overridable="yes">시작 조건을 평가하는 중</String>
-    <String Id="ProgressTextMigrateFeatureStates" Overridable="yes">관련 응용 프로그램에서 기능 상태를 마이그레이션하는 중</String>
-    <String Id="ProgressTextMigrateFeatureStatesTemplate" Overridable="yes">응용 프로그램: [1]</String>
-    <String Id="ProgressTextMoveFiles" Overridable="yes">파일을 옮기는 중</String>
-    <String Id="ProgressTextMoveFilesTemplate" Overridable="yes">파일: [1], 디렉터리: [9], 크기: [6]</String>
-    <String Id="ProgressTextPatchFiles" Overridable="yes">파일을 패치하는 중</String>
-    <String Id="ProgressTextPatchFilesTemplate" Overridable="yes">파일: [1], 디렉터리: [2], 크기: [3]</String>
-    <String Id="ProgressTextProcessComponents" Overridable="yes">구성 요소 등록을 업데이트하는 중</String>
-    <String Id="ProgressTextRegisterComPlus" Overridable="yes">COM+ 응용 프로그램 및 구성 요소를 등록하는 중</String>
-    <String Id="ProgressTextRegisterComPlusTemplate" Overridable="yes">AppId: [1]{{, AppType: [2], 사용자: [3], RSN: [4]}}</String>
-    <String Id="ProgressTextRegisterFonts" Overridable="yes">글꼴을 등록하는 중</String>
-    <String Id="ProgressTextRegisterFontsTemplate" Overridable="yes">글꼴: [1]</String>
-    <String Id="ProgressTextRegisterProduct" Overridable="yes">제품을 등록하는 중</String>
+    <String Id="ProgressTextAllocateRegistrySpace" Overridable="yes">Eˆì§€E¤ú¦¸E¬ EµEE„ ú± E¹ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextAllocateRegistrySpaceTemplate" Overridable="yes">E¬E© E€E¥ú±EEµEE [1]</String>
+    <String Id="ProgressTextAppSearch" Overridable="yes">E¤E˜í•œ E‘ìš© ú°E¡œê·¸E¨EEE¾EEEE/String>
+    <String Id="ProgressTextAppSearchTemplate" Overridable="yes">Eì„±: [1], EœëªE [2]</String>
+    <String Id="ProgressTextBindImage" Overridable="yes">E¤ú²Eú¨Œì¼EEE°E°ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextBindImageTemplate" Overridable="yes">ú¨Œì¼: [1]</String>
+    <String Id="ProgressTextCCPSearch" Overridable="yes">E•í’ˆEEE¾EEEE/String>
+    <String Id="ProgressTextCreateFolders" Overridable="yes">ú«´E”를 EŒë“œEEEE/String>
+    <String Id="ProgressTextCreateFoldersTemplate" Overridable="yes">ú«´EE [1]</String>
+    <String Id="ProgressTextDeleteServices" Overridable="yes">Eœë¹EŠ¤E¼ E­Eœí•˜EEEE/String>
+    <String Id="ProgressTextDeleteServicesTemplate" Overridable="yes">Eœë¹EŠ¤: [1]</String>
+    <String Id="ProgressTextDuplicateFiles" Overridable="yes">E‘ë³µ ú¨Œì¼EEEŒë“œEEEE/String>
+    <String Id="ProgressTextDuplicateFilesTemplate" Overridable="yes">ú¨Œì¼: [1], E”렉터E¬: [9], ú¬E°: [6]</String>
+    <String Id="ProgressTextFindRelatedProducts" Overridable="yes">E€E¨ E‘ìš© ú°E¡œê·¸E¨EEE¾EEEE/String>
+    <String Id="ProgressTextFindRelatedProductsTemplate" Overridable="yes">E¾E€ E‘ìš© ú°E¡œê·¸E¨: [1]</String>
+    <String Id="ProgressTextInstallODBC" Overridable="yes">ODBC E¬E± E”ìEE¼ E¤E˜í•˜EEEE/String>
+    <String Id="ProgressTextInstallServices" Overridable="yes">EEEœë¹EŠ¤E¼ E¤E˜í•˜EEEE/String>
+    <String Id="ProgressTextInstallServicesTemplate" Overridable="yes">Eœë¹EŠ¤: [2]</String>
+    <String Id="ProgressTextLaunchConditions" Overridable="yes">Eœìž‘ E°E´EEú«‰ê°€ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextMigrateFeatureStates" Overridable="yes">E€E¨ E‘ìš© ú°E¡œê·¸E¨EìE E°E¥ EEEE¼ Eˆì´E¸Eˆì´E˜í•˜EEEE/String>
+    <String Id="ProgressTextMigrateFeatureStatesTemplate" Overridable="yes">E‘ìš© ú°E¡œê·¸E¨: [1]</String>
+    <String Id="ProgressTextMoveFiles" Overridable="yes">ú¨Œì¼EEE®E°EEEE/String>
+    <String Id="ProgressTextMoveFilesTemplate" Overridable="yes">ú¨Œì¼: [1], E”렉터E¬: [9], ú¬E°: [6]</String>
+    <String Id="ProgressTextPatchFiles" Overridable="yes">ú¨Œì¼EEú¨¨E˜í•˜EEEE/String>
+    <String Id="ProgressTextPatchFilesTemplate" Overridable="yes">ú¨Œì¼: [1], E”렉터E¬: [2], ú¬E°: [3]</String>
+    <String Id="ProgressTextProcessComponents" Overridable="yes">E¬E± E”ìE E±Eì„ EE°E´ú¦¸ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextRegisterComPlus" Overridable="yes">COM+ E‘ìš© ú°E¡œê·¸E¨ EEE¬E± E”ìEE¼ E±Eí•˜EEEE/String>
+    <String Id="ProgressTextRegisterComPlusTemplate" Overridable="yes">AppId: [1]{{, AppType: [2], E¬E©EE [3], RSN: [4]}}</String>
+    <String Id="ProgressTextRegisterFonts" Overridable="yes">E€E´EEE±Eí•˜EEEE/String>
+    <String Id="ProgressTextRegisterFontsTemplate" Overridable="yes">E€E´: [1]</String>
+    <String Id="ProgressTextRegisterProduct" Overridable="yes">Eœí’ˆEEE±Eí•˜EEEE/String>
     <String Id="ProgressTextRegisterProductTemplate" Overridable="yes">[1]</String>
-    <String Id="ProgressTextRegisterTypeLibraries" Overridable="yes">형식 라이브러리를 등록하는 중</String>
+    <String Id="ProgressTextRegisterTypeLibraries" Overridable="yes">ú´•ì‹ E¼E´EŒëŸ¬E¬E¼ E±Eí•˜EEEE/String>
     <String Id="ProgressTextRegisterTypeLibrariesTemplate" Overridable="yes">LibID: [1]</String>
-    <String Id="ProgressTextRegisterUser" Overridable="yes">사용자를 등록하는 중</String>
+    <String Id="ProgressTextRegisterUser" Overridable="yes">E¬E©Eë¥¼ E±Eí•˜EEEE/String>
     <String Id="ProgressTextRegisterUserTemplate" Overridable="yes">[1]</String>
-    <String Id="ProgressTextRemoveDuplicateFiles" Overridable="yes">중복 파일을 제거하는 중</String>
-    <String Id="ProgressTextRemoveDuplicateFilesTemplate" Overridable="yes">파일: [1], 디렉터리: [9]</String>
-    <String Id="ProgressTextRemoveEnvironmentStrings" Overridable="yes">환경 문자열을 업데이트하는 중</String>
-    <String Id="ProgressTextRemoveEnvironmentStringsTemplate" Overridable="yes">이름: [1], 값: [2], 작업 [3]</String>
-    <String Id="ProgressTextRemoveExistingProducts" Overridable="yes">응용 프로그램을 제거하는 중</String>
-    <String Id="ProgressTextRemoveExistingProductsTemplate" Overridable="yes">응용 프로그램: [1], 명령줄: [2]</String>
-    <String Id="ProgressTextRemoveFiles" Overridable="yes">파일을 제거하는 중</String>
-    <String Id="ProgressTextRemoveFilesTemplate" Overridable="yes">파일: [1], 디렉터리: [9]</String>
-    <String Id="ProgressTextRemoveFolders" Overridable="yes">폴더를 제거하는 중</String>
-    <String Id="ProgressTextRemoveFoldersTemplate" Overridable="yes">폴더: [1]</String>
-    <String Id="ProgressTextRemoveIniValues" Overridable="yes">INI 파일 항목을 제거하는 중</String>
-    <String Id="ProgressTextRemoveIniValuesTemplate" Overridable="yes">파일: [1], 섹션: [2], 키: [3], 값: [4]</String>
-    <String Id="ProgressTextRemoveODBC" Overridable="yes">ODBC 구성 요소를 제거하는 중</String>
-    <String Id="ProgressTextRemoveRegistryValues" Overridable="yes">시스템 레지스트리 값을 제거하는 중</String>
-    <String Id="ProgressTextRemoveRegistryValuesTemplate" Overridable="yes">키: [1], 이름: [2]</String>
-    <String Id="ProgressTextRemoveShortcuts" Overridable="yes">바로 가기를 제거하는 중</String>
-    <String Id="ProgressTextRemoveShortcutsTemplate" Overridable="yes">바로 가기: [1]</String>
-    <String Id="ProgressTextRMCCPSearch" Overridable="yes">정품을 찾는 중</String>
-    <String Id="ProgressTextSelfRegModules" Overridable="yes">모듈을 등록하는 중</String>
-    <String Id="ProgressTextSelfRegModulesTemplate" Overridable="yes">파일: [1], 폴더: [2]</String>
-    <String Id="ProgressTextSelfUnregModules" Overridable="yes">모듈의 등록을 취소하는 중</String>
-    <String Id="ProgressTextSelfUnregModulesTemplate" Overridable="yes">파일: [1], 폴더: [2]</String>
-    <String Id="ProgressTextSetODBCFolders" Overridable="yes">ODBC 디렉터리를 초기화하는 중</String>
-    <String Id="ProgressTextStartServices" Overridable="yes">서비스를 시작하는 중</String>
-    <String Id="ProgressTextStartServicesTemplate" Overridable="yes">서비스: [1]</String>
-    <String Id="ProgressTextStopServices" Overridable="yes">서비스를 중지하는 중</String>
-    <String Id="ProgressTextStopServicesTemplate" Overridable="yes">서비스: [1]</String>
-    <String Id="ProgressTextUnpublishComponents" Overridable="yes">해당 구성 요소의 게시를 취소하는 중</String>
-    <String Id="ProgressTextUnpublishComponentsTemplate" Overridable="yes">구성 요소 ID: [1], 한정자: [2]</String>
-    <String Id="ProgressTextUnpublishFeatures" Overridable="yes">제품 기능의 게시를 취소하는 중</String>
-    <String Id="ProgressTextUnpublishFeaturesTemplate" Overridable="yes">기능: [1]</String>
-    <String Id="ProgressTextUnregisterClassInfo" Overridable="yes">클래스 서버 등록 취소</String>
-    <String Id="ProgressTextUnregisterClassInfoTemplate" Overridable="yes">클래스 ID: [1]</String>
-    <String Id="ProgressTextUnregisterComPlus" Overridable="yes">COM+ 응용 프로그램 및 구성 요소의 등록을 취소하는 중</String>
+    <String Id="ProgressTextRemoveDuplicateFiles" Overridable="yes">E‘ë³µ ú¨Œì¼EEEœê±°ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextRemoveDuplicateFilesTemplate" Overridable="yes">ú¨Œì¼: [1], E”렉터E¬: [9]</String>
+    <String Id="ProgressTextRemoveEnvironmentStrings" Overridable="yes">úµ˜ê²½ E¸Eì—´EEEE°E´ú¦¸ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextRemoveEnvironmentStringsTemplate" Overridable="yes">E´EE [1], EE [2], E‘ì—… [3]</String>
+    <String Id="ProgressTextRemoveExistingProducts" Overridable="yes">E‘ìš© ú°E¡œê·¸E¨EEEœê±°ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextRemoveExistingProductsTemplate" Overridable="yes">E‘ìš© ú°E¡œê·¸E¨: [1], EE ¹EE [2]</String>
+    <String Id="ProgressTextRemoveFiles" Overridable="yes">ú¨Œì¼EEEœê±°ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextRemoveFilesTemplate" Overridable="yes">ú¨Œì¼: [1], E”렉터E¬: [9]</String>
+    <String Id="ProgressTextRemoveFolders" Overridable="yes">ú«´E”를 Eœê±°ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextRemoveFoldersTemplate" Overridable="yes">ú«´EE [1]</String>
+    <String Id="ProgressTextRemoveIniValues" Overridable="yes">INI ú¨Œì¼ ú±­E©EEEœê±°ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextRemoveIniValuesTemplate" Overridable="yes">ú¨Œì¼: [1], E¹EE [2], úž¤: [3], EE [4]</String>
+    <String Id="ProgressTextRemoveODBC" Overridable="yes">ODBC E¬E± E”ìEE¼ Eœê±°ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextRemoveRegistryValues" Overridable="yes">EœìŠ¤ú¡EEˆì§€E¤ú¦¸E¬ E’을 Eœê±°ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextRemoveRegistryValuesTemplate" Overridable="yes">úž¤: [1], E´EE [2]</String>
+    <String Id="ProgressTextRemoveShortcuts" Overridable="yes">E”롁EE€E°E¼ Eœê±°ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextRemoveShortcutsTemplate" Overridable="yes">E”롁EE€E°: [1]</String>
+    <String Id="ProgressTextRMCCPSearch" Overridable="yes">E•í’ˆEEE¾EEEE/String>
+    <String Id="ProgressTextSelfRegModules" Overridable="yes">E¨Eˆì„ E±Eí•˜EEEE/String>
+    <String Id="ProgressTextSelfRegModulesTemplate" Overridable="yes">ú¨Œì¼: [1], ú«´EE [2]</String>
+    <String Id="ProgressTextSelfUnregModules" Overridable="yes">E¨Eˆì˜ E±Eì„ E¨EŒí•˜EEEE/String>
+    <String Id="ProgressTextSelfUnregModulesTemplate" Overridable="yes">ú¨Œì¼: [1], ú«´EE [2]</String>
+    <String Id="ProgressTextSetODBCFolders" Overridable="yes">ODBC E”렉터E¬E¼ Eˆê¸°úµ”하EEEE/String>
+    <String Id="ProgressTextStartServices" Overridable="yes">Eœë¹EŠ¤E¼ Eœìž‘ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextStartServicesTemplate" Overridable="yes">Eœë¹EŠ¤: [1]</String>
+    <String Id="ProgressTextStopServices" Overridable="yes">Eœë¹EŠ¤E¼ E‘지ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextStopServicesTemplate" Overridable="yes">Eœë¹EŠ¤: [1]</String>
+    <String Id="ProgressTextUnpublishComponents" Overridable="yes">ú±´E¹ E¬E± E”ìEEEEŒì‹œE¼ E¨EŒí•˜EEEE/String>
+    <String Id="ProgressTextUnpublishComponentsTemplate" Overridable="yes">E¬E± E”ìE ID: [1], ú±œì •ìž: [2]</String>
+    <String Id="ProgressTextUnpublishFeatures" Overridable="yes">Eœí’ˆ E°E¥EEEŒì‹œE¼ E¨EŒí•˜EEEE/String>
+    <String Id="ProgressTextUnpublishFeaturesTemplate" Overridable="yes">E°E¥: [1]</String>
+    <String Id="ProgressTextUnregisterClassInfo" Overridable="yes">ú´E˜ìŠ¤ Eœë²EE±EEE¨EE/String>
+    <String Id="ProgressTextUnregisterClassInfoTemplate" Overridable="yes">ú´E˜ìŠ¤ ID: [1]</String>
+    <String Id="ProgressTextUnregisterComPlus" Overridable="yes">COM+ E‘ìš© ú°E¡œê·¸E¨ EEE¬E± E”ìEEEE±Eì„ E¨EŒí•˜EEEE/String>
     <String Id="ProgressTextUnregisterComPlusTemplate" Overridable="yes">AppId: [1]{{, AppType: [2]}}</String>
-    <String Id="ProgressTextUnregisterExtensionInfo" Overridable="yes">확장 서버의 등록을 취소하는 중</String>
-    <String Id="ProgressTextUnregisterExtensionInfoTemplate" Overridable="yes">확장: [1]</String>
-    <String Id="ProgressTextUnregisterFonts" Overridable="yes">글꼴 등록을 취소하는 중</String>
-    <String Id="ProgressTextUnregisterFontsTemplate" Overridable="yes">글꼴: [1]</String>
-    <String Id="ProgressTextUnregisterMIMEInfo" Overridable="yes">MIME 정보의 등록을 취소하는 중</String>
-    <String Id="ProgressTextUnregisterMIMEInfoTemplate" Overridable="yes">MIME 콘텐트 형식: [1], 확장: [2]</String>
-    <String Id="ProgressTextUnregisterProgIdInfo" Overridable="yes">프로그램 식별자의 등록을 취소하는 중</String>
+    <String Id="ProgressTextUnregisterExtensionInfo" Overridable="yes">úµ•ìž¥ Eœë²E˜ E±Eì„ E¨EŒí•˜EEEE/String>
+    <String Id="ProgressTextUnregisterExtensionInfoTemplate" Overridable="yes">úµ•ìž¥: [1]</String>
+    <String Id="ProgressTextUnregisterFonts" Overridable="yes">E€E´ E±Eì„ E¨EŒí•˜EEEE/String>
+    <String Id="ProgressTextUnregisterFontsTemplate" Overridable="yes">E€E´: [1]</String>
+    <String Id="ProgressTextUnregisterMIMEInfo" Overridable="yes">MIME E•ë³´EEE±Eì„ E¨EŒí•˜EEEE/String>
+    <String Id="ProgressTextUnregisterMIMEInfoTemplate" Overridable="yes">MIME E˜íEú¦¸ ú´•ì‹: [1], úµ•ìž¥: [2]</String>
+    <String Id="ProgressTextUnregisterProgIdInfo" Overridable="yes">ú°E¡œê·¸E¨ Eë³EžEEE±Eì„ E¨EŒí•˜EEEE/String>
     <String Id="ProgressTextUnregisterProgIdInfoTemplate" Overridable="yes">ProgID: [1]</String>
-    <String Id="ProgressTextUnregisterTypeLibraries" Overridable="yes">형식 라이브러리의 등록을 취소하는 중</String>
+    <String Id="ProgressTextUnregisterTypeLibraries" Overridable="yes">ú´•ì‹ E¼E´EŒëŸ¬E¬EEE±Eì„ E¨EŒí•˜EEEE/String>
     <String Id="ProgressTextUnregisterTypeLibrariesTemplate" Overridable="yes">LibID: [1]</String>
-    <String Id="ProgressTextWriteEnvironmentStrings" Overridable="yes">환경 문자열을 업데이트하는 중</String>
-    <String Id="ProgressTextWriteEnvironmentStringsTemplate" Overridable="yes">이름: [1], 값: [2], 작업 [3]</String>
-    <String Id="ProgressTextWriteIniValues" Overridable="yes">INI 파일 값을 쓰는 중</String>
-    <String Id="ProgressTextWriteIniValuesTemplate" Overridable="yes">파일: [1], 섹션: [2], 키: [3], 값: [4]</String>
-    <String Id="ProgressTextWriteRegistryValues" Overridable="yes">시스템 레지스트리 값을 쓰는 중</String>
-    <String Id="ProgressTextWriteRegistryValuesTemplate" Overridable="yes">키: [1], 이름: [2], 값: [3]</String>
-    <String Id="ProgressTextAdvertise" Overridable="yes">처음 사용할 때 설치하는 응용 프로그램</String>
-    <String Id="ProgressTextGenerateScript" Overridable="yes">실행할 스크립트 작업을 생성하는 중:</String>
+    <String Id="ProgressTextWriteEnvironmentStrings" Overridable="yes">úµ˜ê²½ E¸Eì—´EEEE°E´ú¦¸ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextWriteEnvironmentStringsTemplate" Overridable="yes">E´EE [1], EE [2], E‘ì—… [3]</String>
+    <String Id="ProgressTextWriteIniValues" Overridable="yes">INI ú¨Œì¼ E’을 E°EEEE/String>
+    <String Id="ProgressTextWriteIniValuesTemplate" Overridable="yes">ú¨Œì¼: [1], E¹EE [2], úž¤: [3], EE [4]</String>
+    <String Id="ProgressTextWriteRegistryValues" Overridable="yes">EœìŠ¤ú¡EEˆì§€E¤ú¦¸E¬ E’을 E°EEEE/String>
+    <String Id="ProgressTextWriteRegistryValuesTemplate" Overridable="yes">úž¤: [1], E´EE [2], EE [3]</String>
+    <String Id="ProgressTextAdvertise" Overridable="yes">E˜ìŒ E¬E©ú±  EEE¤E˜í•˜EEE‘ìš© ú°E¡œê·¸E¨</String>
+    <String Id="ProgressTextGenerateScript" Overridable="yes">E¤ú²‰í•  E¤ú¬E½ú¦¸ E‘ì—…EEEì„±ú±˜ëŠ” EE</String>
     <String Id="ProgressTextGenerateScriptTemplate" Overridable="yes">[1]</String>
-    <String Id="ProgressTextInstallSFPCatalogFile" Overridable="yes">시스템 카탈로그를 설치하는 중</String>
-    <String Id="ProgressTextInstallSFPCatalogFileTemplate" Overridable="yes">파일: [1], 종속성: [2]</String>
-    <String Id="ProgressTextMsiPublishAssemblies" Overridable="yes">어셈블리 정보를 게시하는 중</String>
-    <String Id="ProgressTextMsiPublishAssembliesTemplate" Overridable="yes">응용 프로그램 컨텍스트:[1], 어셈블리 이름:[2]</String>
-    <String Id="ProgressTextMsiUnpublishAssemblies" Overridable="yes">어셈블리 정보의 게시를 취소하는 중</String>
-    <String Id="ProgressTextMsiUnpublishAssembliesTemplate" Overridable="yes">응용 프로그램 컨텍스트:[1], 어셈블리 이름:[2]</String>
-    <String Id="ProgressTextRollback" Overridable="yes">작업을 롤백하는 중:</String>
+    <String Id="ProgressTextInstallSFPCatalogFile" Overridable="yes">EœìŠ¤ú¡EE´úŸˆë¡œê·¸E¼ E¤E˜í•˜EEEE/String>
+    <String Id="ProgressTextInstallSFPCatalogFileTemplate" Overridable="yes">ú¨Œì¼: [1], EEEE±: [2]</String>
+    <String Id="ProgressTextMsiPublishAssemblies" Overridable="yes">E´Eˆë¸”리 E•ë³´E¼ EŒì‹œú±˜ëŠ” EE/String>
+    <String Id="ProgressTextMsiPublishAssembliesTemplate" Overridable="yes">E‘ìš© ú°E¡œê·¸E¨ E¨ú¡ìŠ¤ú¦¸:[1], E´Eˆë¸”리 E´EE[2]</String>
+    <String Id="ProgressTextMsiUnpublishAssemblies" Overridable="yes">E´Eˆë¸”리 E•ë³´EEEŒì‹œE¼ E¨EŒí•˜EEEE/String>
+    <String Id="ProgressTextMsiUnpublishAssembliesTemplate" Overridable="yes">E‘ìš© ú°E¡œê·¸E¨ E¨ú¡ìŠ¤ú¦¸:[1], E´Eˆë¸”리 E´EE[2]</String>
+    <String Id="ProgressTextRollback" Overridable="yes">E‘ì—…EEE¤E±ú±˜ëŠ” EE</String>
     <String Id="ProgressTextRollbackTemplate" Overridable="yes">[1]</String>
-    <String Id="ProgressTextRollbackCleanup" Overridable="yes">백업 파일을 제거하는 중</String>
-    <String Id="ProgressTextRollbackCleanupTemplate" Overridable="yes">파일: [1]</String>
-    <String Id="ProgressTextUnmoveFiles" Overridable="yes">이동한 파일을 제거하는 중</String>
-    <String Id="ProgressTextUnmoveFilesTemplate" Overridable="yes">파일: [1], 디렉터리: [9]</String>
-    <String Id="ProgressTextUnpublishProduct" Overridable="yes">제품 정보의 게시를 취소하는 중</String>
+    <String Id="ProgressTextRollbackCleanup" Overridable="yes">E±EEú¨Œì¼EEEœê±°ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextRollbackCleanupTemplate" Overridable="yes">ú¨Œì¼: [1]</String>
+    <String Id="ProgressTextUnmoveFiles" Overridable="yes">E´E™í•œ ú¨Œì¼EEEœê±°ú±˜ëŠ” EE/String>
+    <String Id="ProgressTextUnmoveFilesTemplate" Overridable="yes">ú¨Œì¼: [1], E”렉터E¬: [9]</String>
+    <String Id="ProgressTextUnpublishProduct" Overridable="yes">Eœí’ˆ E•ë³´EEEŒì‹œE¼ E¨EŒí•˜EEEE/String>
     
-    <String Id="Error0" Overridable="yes">{{심각한 오류: }}</String>
-    <String Id="Error1" Overridable="yes">{{오류 [1]. }}</String>
-    <String Id="Error2" Overridable="yes">경고 [1]. </String>
-    <String Id="Error4" Overridable="yes">ì •ë³´ [1]. </String>
-    <String Id="Error5" Overridable="yes">이 패키지를 설치하는 동안 예상치 않은 오류가 발생했습니다. 패키지에 문제가 있을 수 있습니다. 오류 코드: [1]. {{인수: [2], [3], [4]}}</String>
-    <String Id="Error7" Overridable="yes">{{디스크 꽉 참: }}</String>
-    <String Id="Error8" Overridable="yes">ìž‘ì—… [Time]: [1]. [2]</String>
+    <String Id="Error0" Overridable="yes">{{E¬EE•œ E¤EE }}</String>
+    <String Id="Error1" Overridable="yes">{{E¤EE[1]. }}</String>
+    <String Id="Error2" Overridable="yes">E½E  [1]. </String>
+    <String Id="Error4" Overridable="yes">E•ë³´ [1]. </String>
+    <String Id="Error5" Overridable="yes">E´ ú¨¨úž¤E€E¼ E¤E˜í•˜EEE™ì•ˆ EˆìƒEEEŠì€ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤. ú¨¨úž¤E€EEE¸Eœê°€ Eˆì„ EEEˆìŠµEˆë‹¤. E¤EEE”ë“œ: [1]. {{E¸EE [2], [3], [4]}}</String>
+    <String Id="Error7" Overridable="yes">{{E”스ú¬ EEE¸: }}</String>
+    <String Id="Error8" Overridable="yes">E‘ì—… [Time]: [1]. [2]</String>
     <String Id="Error9" Overridable="yes">[ProductName]</String>
     <String Id="Error10" Overridable="yes">{[2]}{, [3]}{, [4]}</String>
-    <String Id="Error11" Overridable="yes">메시지 유형: [1], 인수: [2]</String>
-    <String Id="Error12" Overridable="yes">=== 로깅 시작: [Date] [Time] ===</String>
-    <String Id="Error13" Overridable="yes">=== 로깅 중지: [Date] [Time] ===</String>
-    <String Id="Error14" Overridable="yes">작업 시작 [Time]: [1].</String>
-    <String Id="Error15" Overridable="yes">작업 끝 [Time]: [1]. 반환 값 [2].</String>
-    <String Id="Error16" Overridable="yes">남은 시간: {[1]분 }{[2]초}</String>
-    <String Id="Error17" Overridable="yes">메모리가 부족합니다. 다른 응용 프로그램을 종료한 후 다시 시도하십시오.</String>
-    <String Id="Error18" Overridable="yes">설치 관리자가 더 이상 응답하지 않습니다.</String>
-    <String Id="Error19" Overridable="yes">설치가 중단되었습니다.</String>
-    <String Id="Error20" Overridable="yes">[ProductName]을(를) 구성하는 동안 잠시 기다려 주십시오.</String>
-    <String Id="Error21" Overridable="yes">필요한 정보를 모으는 중...</String>
-    <String Id="Error22" Overridable="yes">이 응용 프로그램의 이전 버전을 제거하는 중...</String>
-    <String Id="Error23" Overridable="yes">이 응용 프로그램의 이전 버전을 제거하기 위해 준비하는 중...</String>
-    <String Id="Error32" Overridable="yes">{[ProductName] }설치가 성공적으로 완료되었습니다.</String>
-    <String Id="Error33" Overridable="yes">{[ProductName] }설치하지 못했습니다.</String>
-    <String Id="Error1101" Overridable="yes">파일 읽기 오류: [2]. {{ 시스템 오류 [3].}} 파일이 있는지, 그리고 그 파일에 액세스할 수 있는지 확인하십시오.</String>
-    <String Id="Error1301" Overridable="yes">같은 이름의 디렉터리가 이미 있으므로 파일 '[2]'을(를) 만들 수 없습니다. 설치를 취소하고 다른 위치에 다시 설치해 보십시오.</String>
-    <String Id="Error1302" Overridable="yes">다음 디스크를 넣으십시오. [2]</String>
-    <String Id="Error1303" Overridable="yes">이 디렉터리에 액세스할 수 있는 권한이 없습니다: [2]. 설치를 계속할 수 없습니다. Administrator로 로그온하거나 시스템 관리자에게 문의하십시오.</String>
-    <String Id="Error1304" Overridable="yes">파일에 쓰는 동안 오류가 발생했습니다: [2]. 해당 디렉터리에 액세스할 수 있는지 확인하십시오.</String>
-    <String Id="Error1305" Overridable="yes">파일 읽기 오류: [2]. {{ 시스템 오류 [3].}} 파일이 있는지, 그리고 그 파일을 액세스할 수 있는지 확인하십시오.</String>
-    <String Id="Error1306" Overridable="yes">다른 응용 프로그램에서 파일 '[2]'을(를) 단독으로 사용하고 있습니다. 다른 응용 프로그램을 모두 닫은 후 "다시 시도"를 클릭하십시오.</String>
-    <String Id="Error1307" Overridable="yes">디스크 공간이 부족해서 이 파일을 설치할 수 없습니다: [2]. 디스크 공간을 늘린 후 "다시 시도"를 클릭하거나 "취소"를 클릭하여 끝내십시오.</String>
-    <String Id="Error1308" Overridable="yes">원본 파일이 없습니다: [2]. 파일이 있는지, 그리고 그 파일에 액세스할 수 있는지 확인하십시오.</String>
-    <String Id="Error1309" Overridable="yes">파일 읽기 오류: [3]. {{ 시스템 오류 [2].}} 파일이 있는지, 그리고 그 파일에 액세스할 수 있는지 확인하십시오.</String>
-    <String Id="Error1310" Overridable="yes">파일 쓰기 오류: [3]. {{ 시스템 오류 [2].}} 해당 디렉터리에 액세스할 수 있는지 확인하십시오.</String>
-    <String Id="Error1311" Overridable="yes">원본 파일이 없습니다{{(cabinet)}}: [2]. 파일이 있는지, 그리고 그 파일에 액세스할 수 있는지 확인하십시오.</String>
-    <String Id="Error1312" Overridable="yes">같은 이름의 파일이 이미 있으므로 디렉터리 '[2]'을(를) 만들 수 없습니다. 파일의 이름을 바꾸거나 파일을 제거한 후 "다시 시도"를 클릭하거나, "취소"를 클릭하여 끝내십시오.</String>
-    <String Id="Error1313" Overridable="yes">볼륨 [2]을(를) 현재 사용할 수 없습니다. 다른 볼륨을 선택하십시오.</String>
-    <String Id="Error1314" Overridable="yes">지정한 경로 '[2]'을(를) 사용할 수 없습니다.</String>
-    <String Id="Error1315" Overridable="yes">지정한 폴더 [2]에 쓸 수 없습니다.</String>
-    <String Id="Error1316" Overridable="yes">[2] 파일을 읽는 동안 네트워크 오류가 발생했습니다.</String>
-    <String Id="Error1317" Overridable="yes">[2] 디렉터리를 만드는 동안 오류가 발생했습니다.</String>
-    <String Id="Error1318" Overridable="yes">[2] 디렉터리를 만드는 동안 네트워크 오류가 발생했습니다.</String>
-    <String Id="Error1319" Overridable="yes">[2] 원본 파일 캐비닛을 여는 동안 네트워크 오류가 발생했습니다.</String>
-    <String Id="Error1320" Overridable="yes">지정한 경로 [2]이(가) 너무 깁니다.</String>
-    <String Id="Error1321" Overridable="yes">파일 [2]을(를) 수정할 수 있는 권한이 없습니다.</String>
-    <String Id="Error1322" Overridable="yes">폴더 경로 '[2]'의 일부가 올바르지 않습니다. 공백이거나, 시스템에서 허용하는 길이를 초과합니다.</String>
-    <String Id="Error1323" Overridable="yes">폴더 경로 '[2]'에 폴더 경로에 사용할 수 없는 단어가 들어 있습니다.</String>
-    <String Id="Error1324" Overridable="yes">폴더 경로 '[2]'에 사용할 수 없는 문자가 들어 있습니다.</String>
-    <String Id="Error1325" Overridable="yes">'[2]'은(는) 유효한 약식 파일 이름이 아닙니다.</String>
-    <String Id="Error1326" Overridable="yes">파일 보안 오류: [3] GetLastError: [2]</String>
-    <String Id="Error1327" Overridable="yes">유효하지 않은 드라이브: [2]</String>
-    <String Id="Error1328" Overridable="yes">파일 [2]에 패치를 적용하는 동안 오류가 발생했습니다. 다른 방법으로 업데이트되어, 이 패치를 통한 수정이 불가능합니다. 더 자세한 정보는 패치 공급업체에 문의하십시오. {{시스템 오류: [3]}}</String>
-    <String Id="Error1329" Overridable="yes">캐비닛 파일 [2]이(가) 디지털 서명되어 있지 않기 때문에 필요한 파일을 설치할 수 없습니다. 캐비닛 파일이 손상되었을 수 있습니다.</String>
-    <String Id="Error1330" Overridable="yes">캐비닛 파일 [2]의 디지털 서명이 올바르지 않기 때문에 필요한 파일을 설치할 수 없습니다. 캐비닛 파일이 손상되었을 수 있습니다.{{ WinVerifyTrust가 오류 [3]을(를) 반환했습니다.}}</String>
-    <String Id="Error1331" Overridable="yes">[2] 파일을 올바로 복사하지 못했습니다. CRC 오류입니다.</String>
-    <String Id="Error1332" Overridable="yes">[2] 파일을 올바로 이동하지 못했습니다. CRC 오류입니다.</String>
-    <String Id="Error1333" Overridable="yes">[2] 파일을 올바로 패치하지 못했습니다. CRC 오류입니다.</String>
-    <String Id="Error1334" Overridable="yes">캐비닛 파일 '[3]'에서 찾을 수 없어서 '[2]' 파일을 설치할 수 없습니다. 네트워크 오류이거나, CD-ROM에서 읽기 오류이거나, 이 패키지에 문제가 있을 수 있습니다.</String>
-    <String Id="Error1335" Overridable="yes">설치에 필요한 캐비닛 파일 '[2]'이(가) 손상되어 사용할 수 없습니다. 네트워크 오류이거나, CD-ROM에서 읽기 오류이거나, 이 패키지에 문제가 있을 수 있습니다.</String>
-    <String Id="Error1336" Overridable="yes">설치를 마치는데 필요한 임시 파일을 만드는 동안 오류가 발생했습니다.{{ 폴더: [3]. 시스템 오류 코드: [2]}}</String>
-    <String Id="Error1401" Overridable="yes">키 [2]을(를) 만들지 못했습니다. {{ 시스템 오류 [3].}} 그 키에 대한 액세스 권한이 있는지 확인하거나, 고객 지원 담당자에게 문의하십시오. </String>
-    <String Id="Error1402" Overridable="yes">키 [2]을(를) 열지 못했습니다. {{ 시스템 오류 [3].}} 그 키에 대한 액세스 권한이 있는지 확인하거나 고객 지원 담당자에게 문의하십시오. </String>
-    <String Id="Error1403" Overridable="yes">키 [3]에서 값 [2]을(를) 삭제하지 못했습니다. {{ 시스템 오류 [4].}} 그 키에 대한 액세스 권한이 있는지 확인하거나 고객 지원 담당자에게 문의하십시오. </String>
-    <String Id="Error1404" Overridable="yes">키 [2]을(를) 삭제하지 못했습니다. {{ 시스템 오류 [3].}} 그 키에 대한 액세스 권한이 있는지 확인하거나 고객 지원 담당자에게 문의하십시오. </String>
-    <String Id="Error1405" Overridable="yes">키 [3]에서 값 [2]을(를) 읽지 못했습니다. {{ 시스템 오류 [4].}} 그 키에 대한 액세스 권한이 있는지 확인하거나 고객 지원 담당자에게 문의하십시오. </String>
-    <String Id="Error1406" Overridable="yes">키 [3]에 값 [2]을(를) 쓰지 못했습니다. {{ 시스템 오류 [4].}} 그 키에 대한 액세스 권한이 있는지 확인하거나 고객 지원 담당자에게 문의하십시오.</String>
-    <String Id="Error1407" Overridable="yes">키 [2]의 값 이름을 가져오지 못했습니다. {{ 시스템 오류 [3].}} 그 키에 대한 액세스 권한이 있는지 확인하거나 고객 지원 담당자에게 문의하십시오.</String>
-    <String Id="Error1408" Overridable="yes">키 [2]의 하위 키 이름을 가져오지 못했습니다. {{ 시스템 오류 [3].}} 그 키에 대한 액세스 권한이 있는지 확인하거나 고객 지원 담당자에게 문의하십시오.</String>
-    <String Id="Error1409" Overridable="yes">키 [2]의 보안 정보를 읽지 못했습니다. {{ 시스템 오류 [3].}} 그 키에 대한 액세스 권한이 있는지 확인하거나 고객 지원 담당자에게 문의하십시오.</String>
-    <String Id="Error1410" Overridable="yes">사용 가능한 레지스트리 공간을 늘리지 못했습니다. [2]KB 정도의 사용 가능한 레지스트리 공간이 있어야 응용 프로그램을 설치할 수 있습니다.</String>
-    <String Id="Error1500" Overridable="yes">다른 프로그램을 설치하고 있습니다. 그 프로그램의 설치를 끝낸 후 이 작업을 계속하십시오.</String>
-    <String Id="Error1501" Overridable="yes">보안 데이터에 액세스하는 동안 오류가 발생했습니다. Windows Installer 구성을 올바르게 설정했는지 확인하고 다시 설치하십시오.</String>
-    <String Id="Error1502" Overridable="yes">사용자 '[2]'이(가) 제품 '[3]'의 설치를 시작한 적이 있습니다. 이 사용자가 해당 제품을 사용하려면 설치 프로그램을 다시 실행해야 합니다. 귀하의 현재 설치는 계속됩니다.</String>
-    <String Id="Error1503" Overridable="yes">사용자 '[2]'이(가) 제품 '[3]'의 설치를 시작한 적이 있습니다. 이 사용자가 해당 제품을 사용하려면 설치 프로그램을 다시 실행해야 합니다. 귀하의 현재 설치는 계속됩니다.</String>
-    <String Id="Error1601" Overridable="yes">디스크 공간 부족 -- 볼륨: '[2]', 필요한 공간: [3]KB, 사용 가능한 공간: [4]KB. 디스크 공간을 늘린 후 다시 시도하십시오.</String>
-    <String Id="Error1602" Overridable="yes">취소하시겠습니까?</String>
-    <String Id="Error1603" Overridable="yes">파일 [2][3]을(를) 다른 프로세스{이름: [4], Id: [5], 창 제목: '[6]'}에서 사용 중입니다. 이 응용 프로그램을 닫은 후 다시 시도하십시오.</String>
-    <String Id="Error1604" Overridable="yes">제품 '[2]'이(가) 이미 설치되어 있어서 이 제품을 설치하지 못합니다. 두 개의 제품은 호환되지 않습니다.</String>
-    <String Id="Error1605" Overridable="yes">복구를 사용하여 설치를 계속하기에는 '[2]' 볼륨에 디스크 공간이 부족합니다. [3]KB가 필요하나, [4]KB만 사용 가능합니다. 복구 정보를 저장하지 않고 설치를 계속하려면 "무시"를 클릭하고, 사용 가능한 공간을 다시 확인하려면 "다시 시도"를 클릭하십시오. 설치를 끝내려면 "취소"를 클릭하십시오.</String>
-    <String Id="Error1606" Overridable="yes">네트워크 [2]에 액세스하지 못했습니다.</String>
-    <String Id="Error1607" Overridable="yes">설치를 계속하려면 다음 응용 프로그램을 닫아야 합니다:</String>
-    <String Id="Error1608" Overridable="yes">지금 설치하려는 제품의 이전 버전이 이 시스템에 설치되어 있지 않습니다.</String>
-    <String Id="Error1609" Overridable="yes">보안 설정을 적용하는 동안 오류가 발생했습니다. [2]은(는) 유효한 사용자 또는 그룹이 아닙니다. 패키지에 문제가 있거나, 네트워크의 도메인 컨트롤러에 연결하는데 문제가 있을 수 있습니다. 네트워크 연결을 확인하고 "다시 시도"를 클릭하거나, 설치를 마치려면 "취소"를 클릭하십시오. {{사용자 SID를 찾을 수 없습니다. 시스템 오류 [3]}}</String>
-    <String Id="Error1701" Overridable="yes">키 [2]이(가) 유효하지 않습니다. 정확한 키를 입력했는지 확인하십시오.</String>
-    <String Id="Error1702" Overridable="yes">[2]의 구성을 계속하려면 시스템을 다시 시작해야 합니다. 지금 다시 시작하려면 "예"를 클릭하고, 나중에 수동으로 다시 시작하려면 "아니요"를 클릭하십시오.</String>
-    <String Id="Error1703" Overridable="yes">변경된 구성 설정을 [2]에 적용하려면 시스템을 다시 시작해야 합니다. 지금 다시 시작하려면 "예"를 클릭하고, 나중에 수동으로 다시 시작하려면 "아니요"를 클릭하십시오.</String>
-    <String Id="Error1704" Overridable="yes">[2]의 설치가 현재 중지된 상태입니다. 작업을 계속하려면 설치하면서 변경된 내용을 취소해야 합니다. 변경된 내용을 취소하시겠습니까?</String>
-    <String Id="Error1705" Overridable="yes">이전에 실행한 이 제품의 설치 작업이 적용된 상태입니다. 계속하려면 그 때 변경된 내용을 취소해야 합니다. 변경된 내용을 취소하시겠습니까?</String>
-    <String Id="Error1706" Overridable="yes">제품 [2]의 설치 패키지가 없습니다. 설치 패키지 '[3]'의 올바른 설치 패키지 사본을 사용하여 설치를 다시 시도하십시오.</String>
-    <String Id="Error1707" Overridable="yes">설치가 완료되었습니다.</String>
-    <String Id="Error1708" Overridable="yes">설치하지 못했습니다.</String>
-    <String Id="Error1709" Overridable="yes">제품: [2] -- [3]</String>
-    <String Id="Error1710" Overridable="yes">컴퓨터를 이전 상태로 복원하거나 나중에 다시 설치해야 합니다. 복원하시겠습니까?</String>
-    <String Id="Error1711" Overridable="yes">설치 정보를 디스크에 쓰는 동안 오류가 발생했습니다. 디스크 공간이 충분한지 확인하고 "다시 시도"를 클릭하거나, "취소"를 클릭하여 설치를 끝내십시오.</String>
-    <String Id="Error1712" Overridable="yes">컴퓨터를 이전 상태로 복원하는 데 필요한 일부 파일을 찾지 못했습니다. 복원할 수 없습니다.</String>
-    <String Id="Error1713" Overridable="yes">[2]이(가) 필요한 제품 중 하나를 설치할 수 없습니다. 기술 지원 그룹에 문의하십시오. {{시스템 오류: [3].}}</String>
-    <String Id="Error1714" Overridable="yes">[2]의 이전 버전을 제거할 수 없습니다. 기술 지원 그룹에 문의하십시오. {{시스템 오류 [3].}}</String>
-    <String Id="Error1715" Overridable="yes">[2] 설치됨</String>
-    <String Id="Error1716" Overridable="yes">[2] 구성됨</String>
-    <String Id="Error1717" Overridable="yes">[2] 제거됨</String>
-    <String Id="Error1718" Overridable="yes">디지털 서명 정책이 파일 [2]을(를) 거부했습니다.</String>
-    <String Id="Error1719" Overridable="yes">Windows Installer Service를 액세스할 수 없습니다. Windows를 안전 모드에서 실행 중이거나, Windows Installer가 올바로 설치되지 않은 경우 발생할 수 있습니다. 고객 지원 담당자에게 문의하십시오.</String>
-    <String Id="Error1720" Overridable="yes">Windows Installer 패키지에 문제가 있습니다. 설치를 완료하기 위해 필요한 스크립트를 실행할 수 없습니다. 고객 지원 담당자나 패키지 공급업체에 문의하십시오. {{사용자 지정 작업 [2] 스크립트 오류 [3], [4]: [5] [6]행, [7]열, [8] }}</String>
-    <String Id="Error1721" Overridable="yes">Windows Installer 패키지에 문제가 있습니다. 설치를 완료하기 위해 필요한 프로그램을 실행할 수 없습니다. 고객 지원 담당자나 패키지 공급업체에 문의하십시오. {{작업: [2], 위치: [3], 명령: [4] }}</String>
-    <String Id="Error1722" Overridable="yes">Windows Installer 패키지에 문제가 있습니다. 설치 프로그램의 일부로 실행한 프로그램이 예상대로 완료되지 않았습니다. 고객 지원 담당자나 패키지 공급업체에 문의하십시오. {{작업: [2], 위치: [3], 명령: [4] }}</String>
-    <String Id="Error1723" Overridable="yes">Windows Installer 패키지에 문제가 있습니다. 설치를 완료하기 위해 필요한 DLL을 실행할 수 없습니다. 고객 지원 담당자나 패키지 공급업체에 문의하십시오. {{작업 [2], 항목: [3], 라이브러리: [4] }}</String>
-    <String Id="Error1724" Overridable="yes">제거가 완료되었습니다.</String>
-    <String Id="Error1725" Overridable="yes">제거하지 못했습니다.</String>
-    <String Id="Error1726" Overridable="yes">보급 알림이 완료되었습니다.</String>
-    <String Id="Error1727" Overridable="yes">보급 알림이 실패했습니다.</String>
-    <String Id="Error1728" Overridable="yes">구성이 완료되었습니다.</String>
-    <String Id="Error1729" Overridable="yes">구성하지 못했습니다.</String>
-    <String Id="Error1730" Overridable="yes">Administrator만이 이 응용 프로그램을 제거할 수 있습니다. 이 응용 프로그램을 제거하려면, Administrator로 로그온하거나, 기술 지원 그룹에 문의하십시오.</String>
-    <String Id="Error1731" Overridable="yes">제품 [2]의 원본 설치 패키지가 클라이언트 패키지와 동기화되지 않았습니다. 설치 패키지 '[3]'의 올바른 설치 패키지 사본을 사용하여 다시 설치해 보십시오.</String>
-    <String Id="Error1732" Overridable="yes">[2]의 설치를 완료하려면 컴퓨터를 다시 시작해야 합니다. 현재 다른 사용자가 이 컴퓨터에 로그온해 있을 경우 컴퓨터를 다시 시작하면 실행 중인 작업을 잃게 될 수 있습니다. 지금 컴퓨터를 다시 시작하시겠습니까?</String>
-    <String Id="Error1801" Overridable="yes">경로 [2]이(가) 올바르지 않습니다. 올바른 경로를 지정하십시오.</String>
-    <String Id="Error1802" Overridable="yes">메모리가 부족합니다. 다른 응용 프로그램을 종료한 후 다시 시도하십시오.</String>
-    <String Id="Error1803" Overridable="yes">드라이브 [2]에 디스크가 없습니다. 디스크를 넣은 후 "다시 시도"를 클릭하거나, "취소"를 클릭하여 이전에 선택한 볼륨으로 다시 돌아가십시오.</String>
-    <String Id="Error1804" Overridable="yes">드라이브 [2]에 디스크가 없습니다. 디스크를 넣은 후 "다시 시도"를 클릭하거나, "취소"를 클릭하여 "찾아보기" 대화 상자로 간 후 다른 볼륨을 선택하십시오.</String>
-    <String Id="Error1805" Overridable="yes">폴더 [2]이(가) 없습니다. 존재하는 폴더 경로를 입력하십시오.</String>
-    <String Id="Error1806" Overridable="yes">이 폴더를 읽을 수 있는 권한이 없습니다.</String>
-    <String Id="Error1807" Overridable="yes">설치할 대상 폴더를 결정하지 못했습니다.</String>
-    <String Id="Error1901" Overridable="yes">원본 설치 데이터베이스를 읽는 중에 오류 발생: [2].</String>
-    <String Id="Error1902" Overridable="yes">다시 부팅 작업을 예약하고 있습니다. [2] 파일의 이름을 [3](으)로 바꿉니다. 작업을 완료하려면 다시 부팅해야 합니다.</String>
-    <String Id="Error1903" Overridable="yes">다시 부팅 작업을 예약하고 있습니다. [2] 파일을 삭제합니다. 작업을 완료하려면 다시 부팅해야 합니다.</String>
-    <String Id="Error1904" Overridable="yes">모듈 [2]을(를) 등록하지 못했습니다. HRESULT [3]. 고객 지원 담당자에게 문의하십시오.</String>
-    <String Id="Error1905" Overridable="yes">모듈 [2]의 등록을 취소하지 못했습니다. HRESULT [3]. 고객 지원 담당자에게 문의하십시오.</String>
-    <String Id="Error1906" Overridable="yes">패키지 [2]을(를) 캐시하지 못했습니다. 오류: [3]. 고객 지원 담당자에게 문의하십시오.</String>
-    <String Id="Error1907" Overridable="yes">글꼴 [2]을(를) 등록하지 못했습니다. 글꼴을 설치할 수 있는 권한이 충분한지, 그리고 이 글꼴을 시스템에서 지원하는지 확인하십시오.</String>
-    <String Id="Error1908" Overridable="yes">글꼴 [2]의 등록을 취소하지 못했습니다. 글꼴을 제거할 수 있는 권한이 있는지 확인하십시오.</String>
-    <String Id="Error1909" Overridable="yes">바로 가기 [2]을(를) 만들지 못했습니다. 대상 폴더가 있는지, 그리고 그 폴더에 액세스할 수 있는지 확인하십시오.</String>
-    <String Id="Error1910" Overridable="yes">바로 가기 [2]을(를) 제거하지 못했습니다. 바로 가기 파일이 있는지, 그리고 그 파일에 액세스할 수 있는지 확인하십시오.</String>
-    <String Id="Error1911" Overridable="yes">파일 [2]의 형식 라이브러리를 등록하지 못했습니다. 고객 지원 담당자에게 문의하십시오.</String>
-    <String Id="Error1912" Overridable="yes">파일 [2]의 형식 라이브러리 등록을 취소하지 못했습니다. 고객 지원 담당자에게 문의하십시오.</String>
-    <String Id="Error1913" Overridable="yes">ini 파일 [2][3]을(를) 업데이트하지 못했습니다. 파일이 있는지, 그리고 그 파일에 액세스할 수 있는지 확인하십시오.</String>
-    <String Id="Error1914" Overridable="yes">다시 부팅할 때 파일 [2]을(를) [3](으)로 바꾸도록 지정하지 못했습니다. 파일 [3]에 대한 쓰기 권한이 있는지 확인하십시오.</String>
-    <String Id="Error1915" Overridable="yes">ODBC 드라이버 관리자를 제거하는 동안 오류가 발생했습니다. ODBC 오류 [2]: [3]. 고객 지원 담당자에게 문의하십시오.</String>
-    <String Id="Error1916" Overridable="yes">ODBC 드라이버 관리자를 설치하는 동안 오류가 발생했습니다. ODBC 오류 [2]: [3]. 고객 지원 담당자에게 문의하십시오.</String>
-    <String Id="Error1917" Overridable="yes">ODBC 드라이버 [4]을(를) 제거하는 동안 오류가 발생했습니다. ODBC 오류 [2]: [3]. ODBC 드라이버를 제거할 수 있는 권한이 있는지 확인하십시오.</String>
-    <String Id="Error1918" Overridable="yes">ODBC 드라이버 [4]을(를) 설치하는 동안 오류가 발생했습니다. ODBC 오류 [2]: [3]. [4] 파일이 있는지, 그리고 그 파일에 액세스할 수 있는지 확인하십시오.</String>
-    <String Id="Error1919" Overridable="yes">ODBC 데이터 원본 [4]을(를) 구성하는 동안 오류가 발생했습니다. ODBC 오류 [2]: [3]. [4] 파일이 있는지, 그리고 그 파일에 액세스할 수 있는지 확인하십시오.</String>
-    <String Id="Error1920" Overridable="yes">서비스 '[2]' ([3])을(를) 시작하지 못했습니다. 시스템 서비스를 시작할 수 있는 권한이 있는지 확인하십시오.</String>
-    <String Id="Error1921" Overridable="yes">서비스 '[2]' ([3])을(를) 중지하지 못했습니다. 시스템 서비스를 중지할 수 있는 권한이 있는지 확인하십시오.</String>
-    <String Id="Error1922" Overridable="yes">서비스 '[2]' ([3])을(를) 삭제하지 못했습니다. 시스템 서비스를 제거할 수 있는 권한이 있는지 확인하십시오.</String>
-    <String Id="Error1923" Overridable="yes">서비스 '[2]' ([3])을(를) 설치하지 못했습니다. 시스템 서비스를 설치할 수 있는 권한이 있는지 확인하십시오.</String>
-    <String Id="Error1924" Overridable="yes">환경 변수 '[2]'을(를) 업데이트하지 못했습니다. 환경 변수를 수정할 수 있는 권한이 있는지 확인하십시오.</String>
-    <String Id="Error1925" Overridable="yes">이 시스템의 모든 사용자가 사용하도록 제품을 설치할 권한이 없습니다. Administrator로 로그온한 후 다시 설치하십시오.</String>
-    <String Id="Error1926" Overridable="yes">파일 '[3]'에 대한 보안을 설정할 수 없습니다. 오류: [2]. 이 파일 보안을 수정할 수 있는 권한이 있는지 확인하십시오.</String>
-    <String Id="Error1927" Overridable="yes">컴퓨터에 구성 요소 서비스(COM+ 1.0)가 설치되어 있지 않습니다. 설치를 제대로 마치려면 구성 요소 서비스가 필요합니다. 구성 요소 서비스는 Windows 2000에 있습니다.</String>
-    <String Id="Error1928" Overridable="yes">COM+ 응용 프로그램을 등록하는 동안 오류가 발생했습니다. 자세한 내용은 고객 지원 담당자에게 문의하십시오.</String>
-    <String Id="Error1929" Overridable="yes">COM+ 응용 프로그램의 등록을 취소하는 동안 오류가 발생했습니다. 자세한 내용은 고객 지원 담당자에게 문의하십시오.</String>
-    <String Id="Error1930" Overridable="yes">서비스 '[2]' ([3])의 설명을 변경할 수 없습니다.</String>
-    <String Id="Error1931" Overridable="yes">Windows가 파일을 보호하고 있기 때문에 Windows Installer 서비스가 시스템 파일 [2]을(를) 업데이트할 수 없습니다. 이 프로그램을 올바르게 작동시키려면 운영 체제를 업데이트해야 합니다. {{패키지 버전: [3], OS 보호된 버전: [4]}}</String>
-    <String Id="Error1932" Overridable="yes">Windows Installer 서비스가 보호된 Windows 파일 [2]을(를) 업데이트할 수 없습니다. {{패키지 버전: [3], OS 보호된 버전: [4], SFP 오류: [5]}}</String>
-    <String Id="Error1933" Overridable="yes">Windows Installer 서비스가 보호된 일부 Windows 파일을 업데이트할 수 없습니다. {{SFP 오류: [2]. 보호된 파일 목록:\r\n[3]}}</String>
-    <String Id="Error1934" Overridable="yes">컴퓨터의 정책에 의해 사용자 설치를 할 수 없습니다 .</String>
-    <String Id="Error1935" Overridable="yes">어셈블리'[6]'을(를) 설치하는 동안 오류가 발생했습니다. 자세한 내용은 도움말 및 지원을 참조하십시오. HRESULT: [3]. {{어셈블리 인터페이스: [4], 함수: [5], 구성 요소: [2]}}</String>
-    <String Id="Error1936" Overridable="yes">어셈블리'[6]'을(를) 설치하는 동안 오류가 발생했습니다. 강력한 이름의 어셈블리가 아니거나 최소 키 길이로 서명되지 않았습니다. HRESULT: [3]. {{어셈블리 인터페이스: [4], 함수: [5], 구성 요소: [2]}}</String>
-    <String Id="Error1937" Overridable="yes">어셈블리'[6]'을(를) 설치하는 동안 오류가 발생했습니다. 서명이나 카탈로그가 올바르지 않거나 확인할 수 없습니다. HRESULT: [3]. {{어셈블리 인터페이스: [4], 함수: [5], 구성 요소: [2]}}</String>
-    <String Id="Error1938" Overridable="yes">어셈블리'[6]'을(를) 설치하는 동안 오류가 발생했습니다. 하나 이상의 어셈블리 모듈을 찾을 수 없습니다. HRESULT: [3]. {{어셈블리 인터페이스: [4], 함수: [5], 구성 요소: [2]}}</String>
+    <String Id="Error11" Overridable="yes">E”ì‹œE€ E ú´E [1], E¸EE [2]</String>
+    <String Id="Error12" Overridable="yes">=== Eœê¹EEœìž‘: [Date] [Time] ===</String>
+    <String Id="Error13" Overridable="yes">=== Eœê¹EE‘지: [Date] [Time] ===</String>
+    <String Id="Error14" Overridable="yes">E‘ì—… Eœìž‘ [Time]: [1].</String>
+    <String Id="Error15" Overridable="yes">E‘ì—… EE[Time]: [1]. E˜í™˜ EE[2].</String>
+    <String Id="Error16" Overridable="yes">E¨E€ Eœê°E {[1]EE}{[2]EE</String>
+    <String Id="Error17" Overridable="yes">E”모E¬E€ E€E±ú±©Eˆë‹¤. E¤E¸ E‘ìš© ú°E¡œê·¸E¨EEEE£Œí•œ ú·EE¤EEEœë„ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error18" Overridable="yes">E¤EEE€E¬Eê°€ EEE´EEE‘답ú±˜ì§€ EŠìŠµEˆë‹¤.</String>
+    <String Id="Error19" Overridable="yes">E¤E˜ê°€ E‘단E˜ì—ˆEµEˆë‹¤.</String>
+    <String Id="Error20" Overridable="yes">[ProductName]EEE¼) E¬E±ú±˜ëŠ” E™ì•ˆ E EEE°E¤E¤ E¼E­Eœì˜¤.</String>
+    <String Id="Error21" Overridable="yes">ú±Eš”ú±EE•ë³´E¼ E¨E¼EEEE..</String>
+    <String Id="Error22" Overridable="yes">E´ E‘ìš© ú°E¡œê·¸E¨EEE´EEEE E„ Eœê±°ú±˜ëŠ” EE..</String>
+    <String Id="Error23" Overridable="yes">E´ E‘ìš© ú°E¡œê·¸E¨EEE´EEEE E„ Eœê±°ú±˜ê¸° EE•´ E€EE•˜EEEE..</String>
+    <String Id="Error32" Overridable="yes">{[ProductName] }E¤E˜ê°€ E±EµEEœ¼EEEE£Œë˜EˆìŠµEˆë‹¤.</String>
+    <String Id="Error33" Overridable="yes">{[ProductName] }E¤E˜í•˜E€ E»ú²ˆìŠµEˆë‹¤.</String>
+    <String Id="Error1101" Overridable="yes">ú¨Œì¼ E½E° E¤EE [2]. {{ EœìŠ¤ú¡EE¤EE[3].}} ú¨Œì¼E´ EˆëŠ”E€, E¸E¬E  E¸ ú¨Œì¼EEE¡E¸E¤ú±  EEEˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1301" Overridable="yes">E™ì€ E´EE˜ E”렉터E¬E€ E´E¸ Eˆìœ¼E€EEú¨Œì¼ '[2]'EEE¼) EŒë“¤ EEEEŠµEˆë‹¤. E¤E˜ë¥¼ E¨EŒí•˜E  E¤E¸ EE¹˜ì— E¤EEE¤E˜í•´ E´E­Eœì˜¤.</String>
+    <String Id="Error1302" Overridable="yes">E¤EEE”스ú¬E¼ E£E¼E­Eœì˜¤. [2]</String>
+    <String Id="Error1303" Overridable="yes">E´ E”렉터E¬EEE¡E¸E¤ú±  EEEˆëŠ” EŒí•œE´ EEŠµEˆë‹¤: [2]. E¤E˜ë¥¼ EEEú±  EEEEŠµEˆë‹¤. AdministratorEEEœê·¸E¨ú±˜ê±°EEEœìŠ¤ú¡EE€E¬Eì—EEE¸E˜í•˜E­Eœì˜¤.</String>
+    <String Id="Error1304" Overridable="yes">ú¨Œì¼EEE°EEE™ì•ˆ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤: [2]. ú±´E¹ E”렉터E¬EEE¡E¸E¤ú±  EEEˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1305" Overridable="yes">ú¨Œì¼ E½E° E¤EE [2]. {{ EœìŠ¤ú¡EE¤EE[3].}} ú¨Œì¼E´ EˆëŠ”E€, E¸E¬E  E¸ ú¨Œì¼EEE¡E¸E¤ú±  EEEˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1306" Overridable="yes">E¤E¸ E‘ìš© ú°E¡œê·¸E¨EìE ú¨Œì¼ '[2]'EEE¼) E¨EEœ¼EEE¬E©ú±˜ê³  EˆìŠµEˆë‹¤. E¤E¸ E‘ìš© ú°E¡œê·¸E¨EEE¨EEE«E€ ú·E"E¤EEEœë„"E¼ ú´E­ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1307" Overridable="yes">E”스ú¬ EµEE´ E€E±ú±´EEE´ ú¨Œì¼EEE¤E˜í•  EEEEŠµEˆë‹¤: [2]. E”스ú¬ EµEE„ E˜ë¦° ú·E"E¤EEEœë„"E¼ ú´E­ú±˜ê±°EE"E¨EEE¼ ú´E­ú±˜ì—¬ Eë‚´E­Eœì˜¤.</String>
+    <String Id="Error1308" Overridable="yes">Eë³¸ ú¨Œì¼E´ EEŠµEˆë‹¤: [2]. ú¨Œì¼E´ EˆëŠ”E€, E¸E¬E  E¸ ú¨Œì¼EEE¡E¸E¤ú±  EEEˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1309" Overridable="yes">ú¨Œì¼ E½E° E¤EE [3]. {{ EœìŠ¤ú¡EE¤EE[2].}} ú¨Œì¼E´ EˆëŠ”E€, E¸E¬E  E¸ ú¨Œì¼EEE¡E¸E¤ú±  EEEˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1310" Overridable="yes">ú¨Œì¼ E°E° E¤EE [3]. {{ EœìŠ¤ú¡EE¤EE[2].}} ú±´E¹ E”렉터E¬EEE¡E¸E¤ú±  EEEˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1311" Overridable="yes">Eë³¸ ú¨Œì¼E´ EEŠµEˆë‹¤{{(cabinet)}}: [2]. ú¨Œì¼E´ EˆëŠ”E€, E¸E¬E  E¸ ú¨Œì¼EEE¡E¸E¤ú±  EEEˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1312" Overridable="yes">E™ì€ E´EE˜ ú¨Œì¼E´ E´E¸ Eˆìœ¼E€EEE”렉터E¬ '[2]'EEE¼) EŒë“¤ EEEEŠµEˆë‹¤. ú¨Œì¼EEE´EE„ E”꾸E°EEú¨Œì¼EEEœê±°ú±Eú·E"E¤EEEœë„"E¼ ú´E­ú±˜ê±°EE "E¨EEE¼ ú´E­ú±˜ì—¬ Eë‚´E­Eœì˜¤.</String>
+    <String Id="Error1313" Overridable="yes">E¼E¨ [2]EEE¼) ú´Ež¬ E¬E©ú±  EEEEŠµEˆë‹¤. E¤E¸ E¼E¨EEE úŸí•˜E­Eœì˜¤.</String>
+    <String Id="Error1314" Overridable="yes">E€E•í•œ E½EE'[2]'EEE¼) E¬E©ú±  EEEEŠµEˆë‹¤.</String>
+    <String Id="Error1315" Overridable="yes">E€E•í•œ ú«´EE[2]EEE¸ EEEEŠµEˆë‹¤.</String>
+    <String Id="Error1316" Overridable="yes">[2] ú¨Œì¼EEE½EEE™ì•ˆ E¤ú¦¸EŒí¬ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤.</String>
+    <String Id="Error1317" Overridable="yes">[2] E”렉터E¬E¼ EŒë“œEEE™ì•ˆ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤.</String>
+    <String Id="Error1318" Overridable="yes">[2] E”렉터E¬E¼ EŒë“œEEE™ì•ˆ E¤ú¦¸EŒí¬ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤.</String>
+    <String Id="Error1319" Overridable="yes">[2] Eë³¸ ú¨Œì¼ Eë¹E‹›EEE¬EEE™ì•ˆ E¤ú¦¸EŒí¬ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤.</String>
+    <String Id="Error1320" Overridable="yes">E€E•í•œ E½EE[2]E´(E€) Eˆë¬´ EE‹ˆE¤.</String>
+    <String Id="Error1321" Overridable="yes">ú¨Œì¼ [2]EEE¼) E˜ì •í•  EEEˆëŠ” EŒí•œE´ EEŠµEˆë‹¤.</String>
+    <String Id="Error1322" Overridable="yes">ú«´EEE½EE'[2]'EEE¼E€E€ E¬E”르E€ EŠìŠµEˆë‹¤. EµE±E´E°EE EœìŠ¤ú¡œì—EEú³ˆìš©ú±˜ëŠ” E¸E´E¼ Eˆê³¼ú±©Eˆë‹¤.</String>
+    <String Id="Error1323" Overridable="yes">ú«´EEE½EE'[2]'EEú«´EEE½Eœì— E¬E©ú±  EEEEŠ” E¨E´E€ E¤E´ EˆìŠµEˆë‹¤.</String>
+    <String Id="Error1324" Overridable="yes">ú«´EEE½EE'[2]'EEE¬E©ú±  EEEEŠ” E¸Eê°€ E¤E´ EˆìŠµEˆë‹¤.</String>
+    <String Id="Error1325" Overridable="yes">'[2]'E€(EE E ú¶¨ú±EE½EEú¨Œì¼ E´EE´ EE‹™Eˆë‹¤.</String>
+    <String Id="Error1326" Overridable="yes">ú¨Œì¼ E´EEE¤EE [3] GetLastError: [2]</String>
+    <String Id="Error1327" Overridable="yes">E ú¶¨ú±˜ì§€ EŠì€ Eœë¼E´EE [2]</String>
+    <String Id="Error1328" Overridable="yes">ú¨Œì¼ [2]EEú¨¨E˜ë¥¼ EEš©ú±˜ëŠ” E™ì•ˆ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤. E¤E¸ E©E•ìœ¼EEEE°E´ú¦¸E˜ì–´, E´ ú¨¨E˜ë¥¼ ú¢µú±EE˜ì •ì´ Eˆê°€E¥ú±©Eˆë‹¤. EEEì„¸ú±EE•ë³´EEú¨¨EEEµE‰ì—…E´EEE¸E˜í•˜E­Eœì˜¤. {{EœìŠ¤ú¡EE¤EE [3]}}</String>
+    <String Id="Error1329" Overridable="yes">Eë¹E‹› ú¨Œì¼ [2]E´(E€) E”지ú ¸ EœëªE˜E´ Eˆì§€ EŠê¸° EŒë¬¸EEú±Eš”ú±Eú¨Œì¼EEE¤E˜í•  EEEEŠµEˆë‹¤. Eë¹E‹› ú¨Œì¼E´ EìƒE˜ì—ˆEEEEEˆìŠµEˆë‹¤.</String>
+    <String Id="Error1330" Overridable="yes">Eë¹E‹› ú¨Œì¼ [2]EEE”지ú ¸ EœëªE´ E¬E”르E€ EŠê¸° EŒë¬¸EEú±Eš”ú±Eú¨Œì¼EEE¤E˜í•  EEEEŠµEˆë‹¤. Eë¹E‹› ú¨Œì¼E´ EìƒE˜ì—ˆEEEEEˆìŠµEˆë‹¤.{{ WinVerifyTrustE€ E¤EE[3]EEE¼) E˜í™˜ú²ˆìŠµEˆë‹¤.}}</String>
+    <String Id="Error1331" Overridable="yes">[2] ú¨Œì¼EEE¬E”롁EEµE¬ú±˜ì§€ E»ú²ˆìŠµEˆë‹¤. CRC E¤E˜ìž…Eˆë‹¤.</String>
+    <String Id="Error1332" Overridable="yes">[2] ú¨Œì¼EEE¬E”롁EE´E™í•˜E€ E»ú²ˆìŠµEˆë‹¤. CRC E¤E˜ìž…Eˆë‹¤.</String>
+    <String Id="Error1333" Overridable="yes">[2] ú¨Œì¼EEE¬E”롁Eú¨¨E˜í•˜E€ E»ú²ˆìŠµEˆë‹¤. CRC E¤E˜ìž…Eˆë‹¤.</String>
+    <String Id="Error1334" Overridable="yes">Eë¹E‹› ú¨Œì¼ '[3]'EìE E¾EEEEEE–´EE'[2]' ú¨Œì¼EEE¤E˜í•  EEEEŠµEˆë‹¤. E¤ú¦¸EŒí¬ E¤E˜ì´E°EE CD-ROMEìE E½E° E¤E˜ì´E°EE E´ ú¨¨úž¤E€EEE¸Eœê°€ Eˆì„ EEEˆìŠµEˆë‹¤.</String>
+    <String Id="Error1335" Overridable="yes">E¤E˜ì— ú±Eš”ú±EEë¹E‹› ú¨Œì¼ '[2]'E´(E€) EìƒE˜ì–´ E¬E©ú±  EEEEŠµEˆë‹¤. E¤ú¦¸EŒí¬ E¤E˜ì´E°EE CD-ROMEìE E½E° E¤E˜ì´E°EE E´ ú¨¨úž¤E€EEE¸Eœê°€ Eˆì„ EEEˆìŠµEˆë‹¤.</String>
+    <String Id="Error1336" Overridable="yes">E¤E˜ë¥¼ Eˆì¹˜ëŠ”E° ú±Eš”ú±EEE‹œ ú¨Œì¼EEEŒë“œEEE™ì•ˆ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤.{{ ú«´EE [3]. EœìŠ¤ú¡EE¤EEE”ë“œ: [2]}}</String>
+    <String Id="Error1401" Overridable="yes">úž¤ [2]EEE¼) EŒë“¤E€ E»ú²ˆìŠµEˆë‹¤. {{ EœìŠ¤ú¡EE¤EE[3].}} E¸ úž¤EEE€ú±EE¡E¸E¤ EŒí•œE´ EˆëŠ”E€ úµ•ì¸ú±˜ê±°EE E EEE€EEE´E¹Eì—EEE¸E˜í•˜E­Eœì˜¤. </String>
+    <String Id="Error1402" Overridable="yes">úž¤ [2]EEE¼) E´E€ E»ú²ˆìŠµEˆë‹¤. {{ EœìŠ¤ú¡EE¤EE[3].}} E¸ úž¤EEE€ú±EE¡E¸E¤ EŒí•œE´ EˆëŠ”E€ úµ•ì¸ú±˜ê±°EEE EEE€EEE´E¹Eì—EEE¸E˜í•˜E­Eœì˜¤. </String>
+    <String Id="Error1403" Overridable="yes">úž¤ [3]EìE EE[2]EEE¼) E­Eœí•˜E€ E»ú²ˆìŠµEˆë‹¤. {{ EœìŠ¤ú¡EE¤EE[4].}} E¸ úž¤EEE€ú±EE¡E¸E¤ EŒí•œE´ EˆëŠ”E€ úµ•ì¸ú±˜ê±°EEE EEE€EEE´E¹Eì—EEE¸E˜í•˜E­Eœì˜¤. </String>
+    <String Id="Error1404" Overridable="yes">úž¤ [2]EEE¼) E­Eœí•˜E€ E»ú²ˆìŠµEˆë‹¤. {{ EœìŠ¤ú¡EE¤EE[3].}} E¸ úž¤EEE€ú±EE¡E¸E¤ EŒí•œE´ EˆëŠ”E€ úµ•ì¸ú±˜ê±°EEE EEE€EEE´E¹Eì—EEE¸E˜í•˜E­Eœì˜¤. </String>
+    <String Id="Error1405" Overridable="yes">úž¤ [3]EìE EE[2]EEE¼) E½E€ E»ú²ˆìŠµEˆë‹¤. {{ EœìŠ¤ú¡EE¤EE[4].}} E¸ úž¤EEE€ú±EE¡E¸E¤ EŒí•œE´ EˆëŠ”E€ úµ•ì¸ú±˜ê±°EEE EEE€EEE´E¹Eì—EEE¸E˜í•˜E­Eœì˜¤. </String>
+    <String Id="Error1406" Overridable="yes">úž¤ [3]EEEE[2]EEE¼) E°E€ E»ú²ˆìŠµEˆë‹¤. {{ EœìŠ¤ú¡EE¤EE[4].}} E¸ úž¤EEE€ú±EE¡E¸E¤ EŒí•œE´ EˆëŠ”E€ úµ•ì¸ú±˜ê±°EEE EEE€EEE´E¹Eì—EEE¸E˜í•˜E­Eœì˜¤.</String>
+    <String Id="Error1407" Overridable="yes">úž¤ [2]EEEEE´EE„ E€E¸E¤E€ E»ú²ˆìŠµEˆë‹¤. {{ EœìŠ¤ú¡EE¤EE[3].}} E¸ úž¤EEE€ú±EE¡E¸E¤ EŒí•œE´ EˆëŠ”E€ úµ•ì¸ú±˜ê±°EEE EEE€EEE´E¹Eì—EEE¸E˜í•˜E­Eœì˜¤.</String>
+    <String Id="Error1408" Overridable="yes">úž¤ [2]EEú±˜ìœ„ úž¤ E´EE„ E€E¸E¤E€ E»ú²ˆìŠµEˆë‹¤. {{ EœìŠ¤ú¡EE¤EE[3].}} E¸ úž¤EEE€ú±EE¡E¸E¤ EŒí•œE´ EˆëŠ”E€ úµ•ì¸ú±˜ê±°EEE EEE€EEE´E¹Eì—EEE¸E˜í•˜E­Eœì˜¤.</String>
+    <String Id="Error1409" Overridable="yes">úž¤ [2]EEE´EEE•ë³´E¼ E½E€ E»ú²ˆìŠµEˆë‹¤. {{ EœìŠ¤ú¡EE¤EE[3].}} E¸ úž¤EEE€ú±EE¡E¸E¤ EŒí•œE´ EˆëŠ”E€ úµ•ì¸ú±˜ê±°EEE EEE€EEE´E¹Eì—EEE¸E˜í•˜E­Eœì˜¤.</String>
+    <String Id="Error1410" Overridable="yes">E¬E© E€E¥ú±EEˆì§€E¤ú¦¸E¬ EµEE„ E˜ë¦¬E€ E»ú²ˆìŠµEˆë‹¤. [2]KB E•ë„EEE¬E© E€E¥ú±EEˆì§€E¤ú¦¸E¬ EµEE´ Eˆì–´E¼ E‘ìš© ú°E¡œê·¸E¨EEE¤E˜í•  EEEˆìŠµEˆë‹¤.</String>
+    <String Id="Error1500" Overridable="yes">E¤E¸ ú°E¡œê·¸E¨EEE¤E˜í•˜E  EˆìŠµEˆë‹¤. E¸ ú°E¡œê·¸E¨EEE¤E˜ë¥¼ Eë‚¸ ú·EE´ E‘ì—…EEEEEú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1501" Overridable="yes">E´EEE°E´ú °EEE¡E¸E¤ú±˜ëŠ” E™ì•ˆ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤. Windows Installer E¬E±EEE¬E”르EEE¤E•í–ˆE”지 úµ•ì¸ú±˜ê³  E¤EEE¤E˜í•˜E­Eœì˜¤.</String>
+    <String Id="Error1502" Overridable="yes">E¬E©EE'[2]'E´(E€) Eœí’ˆ '[3]'EEE¤E˜ë¥¼ Eœìž‘ú±EEE´ EˆìŠµEˆë‹¤. E´ E¬E©Eê°€ ú±´E¹ Eœí’ˆEEE¬E©ú±˜ë ¤E´ E¤EEú°E¡œê·¸E¨EEE¤EEE¤ú²‰í•´E¼ ú±©Eˆë‹¤. E€ú±˜ì˜ ú´Ež¬ E¤E˜ëŠ” EEEE©Eˆë‹¤.</String>
+    <String Id="Error1503" Overridable="yes">E¬E©EE'[2]'E´(E€) Eœí’ˆ '[3]'EEE¤E˜ë¥¼ Eœìž‘ú±EEE´ EˆìŠµEˆë‹¤. E´ E¬E©Eê°€ ú±´E¹ Eœí’ˆEEE¬E©ú±˜ë ¤E´ E¤EEú°E¡œê·¸E¨EEE¤EEE¤ú²‰í•´E¼ ú±©Eˆë‹¤. E€ú±˜ì˜ ú´Ež¬ E¤E˜ëŠ” EEEE©Eˆë‹¤.</String>
+    <String Id="Error1601" Overridable="yes">E”스ú¬ EµEEE€E± -- E¼E¨: '[2]', ú±Eš”ú±EEµEE [3]KB, E¬E© E€E¥ú±EEµEE [4]KB. E”스ú¬ EµEE„ E˜ë¦° ú·EE¤EEEœë„ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1602" Overridable="yes">E¨EŒí•˜Eœê² EµEˆê¹E</String>
+    <String Id="Error1603" Overridable="yes">ú¨Œì¼ [2][3]EEE¼) E¤E¸ ú°E¡œì„¸E¤{E´EE [4], Id: [5], E½ Eœëª©: '[6]'}EìE E¬E© E‘ìž…Eˆë‹¤. E´ E‘ìš© ú°E¡œê·¸E¨EEE«E€ ú·EE¤EEEœë„ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1604" Overridable="yes">Eœí’ˆ '[2]'E´(E€) E´E¸ E¤E˜ë˜E´ Eˆì–´EEE´ Eœí’ˆEEE¤E˜í•˜E€ E»ú±©Eˆë‹¤. EEEœì˜ Eœí’ˆE€ ú´¸úµ˜ë˜E€ EŠìŠµEˆë‹¤.</String>
+    <String Id="Error1605" Overridable="yes">EµE¬E¼ E¬E©ú±˜ì—¬ E¤E˜ë¥¼ EEEú±˜ê¸°EëŠ” '[2]' E¼E¨EEE”스ú¬ EµEE´ E€E±ú±©Eˆë‹¤. [3]KBE€ ú±Eš”ú±˜ë‚˜, [4]KBEEE¬E© E€E¥ú±©Eˆë‹¤. EµE¬ E•ë³´E¼ E€E¥ú±˜ì§€ EŠê³  E¤E˜ë¥¼ EEEú±˜ë ¤E´ "E´EEE¼ ú´E­ú±˜ê³ , E¬E© E€E¥ú±EEµEE„ E¤EEúµ•ì¸ú±˜ë ¤E´ "E¤EEEœë„"E¼ ú´E­ú±˜ì‹­Eœì˜¤. E¤E˜ë¥¼ Eë‚´E¤E´ "E¨EEE¼ ú´E­ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1606" Overridable="yes">E¤ú¦¸EŒí¬ [2]EEE¡E¸E¤ú±˜ì§€ E»ú²ˆìŠµEˆë‹¤.</String>
+    <String Id="Error1607" Overridable="yes">E¤E˜ë¥¼ EEEú±˜ë ¤E´ E¤EEE‘ìš© ú°E¡œê·¸E¨EEE«EE•¼ ú±©Eˆë‹¤:</String>
+    <String Id="Error1608" Overridable="yes">E€EEE¤E˜í•˜E¤EEEœí’ˆEEE´EEEE E´ E´ EœìŠ¤ú¡œì— E¤E˜ë˜E´ Eˆì§€ EŠìŠµEˆë‹¤.</String>
+    <String Id="Error1609" Overridable="yes">E´EEE¤E•ì„ EEš©ú±˜ëŠ” E™ì•ˆ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤. [2]E€(EE E ú¶¨ú±EE¬E©EEEëŠ” E¸E¹E´ EE‹™Eˆë‹¤. ú¨¨úž¤E€EEE¸Eœê°€ Eˆê±°EE E¤ú¦¸EŒí¬EEEE©”인 E¨ú¦¸E¤E¬EEE°E°ú±˜ëŠ”E° E¸Eœê°€ Eˆì„ EEEˆìŠµEˆë‹¤. E¤ú¦¸EŒí¬ E°E°EEúµ•ì¸ú±˜ê³  "E¤EEEœë„"E¼ ú´E­ú±˜ê±°EE E¤E˜ë¥¼ Eˆì¹˜ë ¤E´ "E¨EEE¼ ú´E­ú±˜ì‹­Eœì˜¤. {{E¬E©EESIDE¼ E¾EEEEEEŠµEˆë‹¤. EœìŠ¤ú¡EE¤EE[3]}}</String>
+    <String Id="Error1701" Overridable="yes">úž¤ [2]E´(E€) E ú¶¨ú±˜ì§€ EŠìŠµEˆë‹¤. E•í™•ú±Eúž¤E¼ EE ¥ú²ˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1702" Overridable="yes">[2]EEE¬E±EEEEEú±˜ë ¤E´ EœìŠ¤ú¡œì„ E¤EEEœìž‘ú±´E¼ ú±©Eˆë‹¤. E€EEE¤EEEœìž‘ú±˜ë ¤E´ "EEE¼ ú´E­ú±˜ê³ , E˜ì¤‘에 E˜ë™E¼EEE¤EEEœìž‘ú±˜ë ¤E´ "EE‹ˆEEE¼ ú´E­ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1703" Overridable="yes">E€E½EEE¬E± E¤E•ì„ [2]EEEEš©ú±˜ë ¤E´ EœìŠ¤ú¡œì„ E¤EEEœìž‘ú±´E¼ ú±©Eˆë‹¤. E€EEE¤EEEœìž‘ú±˜ë ¤E´ "EEE¼ ú´E­ú±˜ê³ , E˜ì¤‘에 E˜ë™E¼EEE¤EEEœìž‘ú±˜ë ¤E´ "EE‹ˆEEE¼ ú´E­ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1704" Overridable="yes">[2]EEE¤E˜ê°€ ú´Ež¬ E‘지EEEEEEE‹ˆE¤. E‘ì—…EEEEEú±˜ë ¤E´ E¤E˜í•˜E´EEE€E½EEE´E©EEE¨EŒí•´E¼ ú±©Eˆë‹¤. E€E½EEE´E©EEE¨EŒí•˜Eœê² EµEˆê¹E</String>
+    <String Id="Error1705" Overridable="yes">E´EE— E¤ú²‰í•œ E´ Eœí’ˆEEE¤EEE‘ì—…E´ EEš©EEEEEEE‹ˆE¤. EEEú±˜ë ¤E´ E¸ EEE€E½EEE´E©EEE¨EŒí•´E¼ ú±©Eˆë‹¤. E€E½EEE´E©EEE¨EŒí•˜Eœê² EµEˆê¹E</String>
+    <String Id="Error1706" Overridable="yes">Eœí’ˆ [2]EEE¤EEú¨¨úž¤E€E€ EEŠµEˆë‹¤. E¤EEú¨¨úž¤E€ '[3]'EEE¬E”른 E¤EEú¨¨úž¤E€ E¬E¸EEE¬E©ú±˜ì—¬ E¤E˜ë¥¼ E¤EEEœë„ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1707" Overridable="yes">E¤E˜ê°€ EE£Œë˜EˆìŠµEˆë‹¤.</String>
+    <String Id="Error1708" Overridable="yes">E¤E˜í•˜E€ E»ú²ˆìŠµEˆë‹¤.</String>
+    <String Id="Error1709" Overridable="yes">Eœí’ˆ: [2] -- [3]</String>
+    <String Id="Error1710" Overridable="yes">E´ú¯¨ú °E¼ E´EEEEEEEEµEí•˜E°EEE˜ì¤‘에 E¤EEE¤E˜í•´E¼ ú±©Eˆë‹¤. EµEí•˜Eœê² EµEˆê¹E</String>
+    <String Id="Error1711" Overridable="yes">E¤EEE•ë³´E¼ E”스ú¬EEE°EEE™ì•ˆ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤. E”스ú¬ EµEE´ E©EE•œE€ úµ•ì¸ú±˜ê³  "E¤EEEœë„"E¼ ú´E­ú±˜ê±°EE "E¨EEE¼ ú´E­ú±˜ì—¬ E¤E˜ë¥¼ Eë‚´E­Eœì˜¤.</String>
+    <String Id="Error1712" Overridable="yes">E´ú¯¨ú °E¼ E´EEEEEEEEµEí•˜EEE° ú±Eš”ú±EE¼E€ ú¨Œì¼EEE¾E€ E»ú²ˆìŠµEˆë‹¤. EµEí•  EEEEŠµEˆë‹¤.</String>
+    <String Id="Error1713" Overridable="yes">[2]E´(E€) ú±Eš”ú±EEœí’ˆ EEú±˜ë‚˜E¼ E¤E˜í•  EEEEŠµEˆë‹¤. E°E  E€EEE¸E¹EEE¸E˜í•˜E­Eœì˜¤. {{EœìŠ¤ú¡EE¤EE [3].}}</String>
+    <String Id="Error1714" Overridable="yes">[2]EEE´EEEE E„ Eœê±°ú±  EEEEŠµEˆë‹¤. E°E  E€EEE¸E¹EEE¸E˜í•˜E­Eœì˜¤. {{EœìŠ¤ú¡EE¤EE[3].}}</String>
+    <String Id="Error1715" Overridable="yes">[2] E¤E˜ë¨</String>
+    <String Id="Error1716" Overridable="yes">[2] E¬E±E¨</String>
+    <String Id="Error1717" Overridable="yes">[2] Eœê±°E¨</String>
+    <String Id="Error1718" Overridable="yes">E”지ú ¸ EœëªEE•ì±E´ ú¨Œì¼ [2]EEE¼) E°E€ú²ˆìŠµEˆë‹¤.</String>
+    <String Id="Error1719" Overridable="yes">Windows Installer ServiceE¼ E¡E¸E¤ú±  EEEEŠµEˆë‹¤. WindowsE¼ Eˆì EE¨Eœì—EEE¤ú²EE‘이E°EE Windows InstallerE€ E¬E”롁EE¤E˜ë˜E€ EŠì€ E½E° EœìEú±  EEEˆìŠµEˆë‹¤. E EEE€EEE´E¹Eì—EEE¸E˜í•˜E­Eœì˜¤.</String>
+    <String Id="Error1720" Overridable="yes">Windows Installer ú¨¨úž¤E€EEE¸Eœê°€ EˆìŠµEˆë‹¤. E¤E˜ë¥¼ EE£Œí•˜E° EE•´ ú±Eš”ú±EE¤ú¬E½ú¦¸E¼ E¤ú²‰í•  EEEEŠµEˆë‹¤. E EEE€EEE´E¹Eë‚˜ ú¨¨úž¤E€ EµE‰ì—…E´EEE¸E˜í•˜E­Eœì˜¤. {{E¬E©EEE€EEE‘ì—… [2] E¤ú¬E½ú¦¸ E¤EE[3], [4]: [5] [6]ú²E [7]E´, [8] }}</String>
+    <String Id="Error1721" Overridable="yes">Windows Installer ú¨¨úž¤E€EEE¸Eœê°€ EˆìŠµEˆë‹¤. E¤E˜ë¥¼ EE£Œí•˜E° EE•´ ú±Eš”ú±Eú°E¡œê·¸E¨EEE¤ú²‰í•  EEEEŠµEˆë‹¤. E EEE€EEE´E¹Eë‚˜ ú¨¨úž¤E€ EµE‰ì—…E´EEE¸E˜í•˜E­Eœì˜¤. {{E‘ì—…: [2], EE¹E [3], EE ¹: [4] }}</String>
+    <String Id="Error1722" Overridable="yes">Windows Installer ú¨¨úž¤E€EEE¸Eœê°€ EˆìŠµEˆë‹¤. E¤EEú°E¡œê·¸E¨EEE¼E€EEE¤ú²‰í•œ ú°E¡œê·¸E¨E´ EˆìƒE€EEEE£Œë˜E€ EŠì•˜EµEˆë‹¤. E EEE€EEE´E¹Eë‚˜ ú¨¨úž¤E€ EµE‰ì—…E´EEE¸E˜í•˜E­Eœì˜¤. {{E‘ì—…: [2], EE¹E [3], EE ¹: [4] }}</String>
+    <String Id="Error1723" Overridable="yes">Windows Installer ú¨¨úž¤E€EEE¸Eœê°€ EˆìŠµEˆë‹¤. E¤E˜ë¥¼ EE£Œí•˜E° EE•´ ú±Eš”ú±EDLLEEE¤ú²‰í•  EEEEŠµEˆë‹¤. E EEE€EEE´E¹Eë‚˜ ú¨¨úž¤E€ EµE‰ì—…E´EEE¸E˜í•˜E­Eœì˜¤. {{E‘ì—… [2], ú±­E©: [3], E¼E´EŒëŸ¬E¬: [4] }}</String>
+    <String Id="Error1724" Overridable="yes">Eœê±°E€ EE£Œë˜EˆìŠµEˆë‹¤.</String>
+    <String Id="Error1725" Overridable="yes">Eœê±°ú±˜ì§€ E»ú²ˆìŠµEˆë‹¤.</String>
+    <String Id="Error1726" Overridable="yes">E´EEEŒë¦¼E´ EE£Œë˜EˆìŠµEˆë‹¤.</String>
+    <String Id="Error1727" Overridable="yes">E´EEEŒë¦¼E´ E¤ú¨¨ú²ˆìŠµEˆë‹¤.</String>
+    <String Id="Error1728" Overridable="yes">E¬E±E´ EE£Œë˜EˆìŠµEˆë‹¤.</String>
+    <String Id="Error1729" Overridable="yes">E¬E±ú±˜ì§€ E»ú²ˆìŠµEˆë‹¤.</String>
+    <String Id="Error1730" Overridable="yes">AdministratorEŒì´ E´ E‘ìš© ú°E¡œê·¸E¨EEEœê±°ú±  EEEˆìŠµEˆë‹¤. E´ E‘ìš© ú°E¡œê·¸E¨EEEœê±°ú±˜ë ¤E´, AdministratorEEEœê·¸E¨ú±˜ê±°EE E°E  E€EEE¸E¹EEE¸E˜í•˜E­Eœì˜¤.</String>
+    <String Id="Error1731" Overridable="yes">Eœí’ˆ [2]EEEë³¸ E¤EEú¨¨úž¤E€E€ ú´E¼E´E¸ú¦¸ ú¨¨úž¤E€E€ E™ê¸°úµ”되E€ EŠì•˜EµEˆë‹¤. E¤EEú¨¨úž¤E€ '[3]'EEE¬E”른 E¤EEú¨¨úž¤E€ E¬E¸EEE¬E©ú±˜ì—¬ E¤EEE¤E˜í•´ E´E­Eœì˜¤.</String>
+    <String Id="Error1732" Overridable="yes">[2]EEE¤E˜ë¥¼ EE£Œí•˜E¤E´ E´ú¯¨ú °E¼ E¤EEEœìž‘ú±´E¼ ú±©Eˆë‹¤. ú´Ež¬ E¤E¸ E¬E©Eê°€ E´ E´ú¯¨ú °EEEœê·¸E¨ú±´ Eˆì„ E½E° E´ú¯¨ú °E¼ E¤EEEœìž‘ú±˜ë©´ E¤ú²EE‘인 E‘ì—…EEEE²EE  EEEˆìŠµEˆë‹¤. E€EEE´ú¯¨ú °E¼ E¤EEEœìž‘ú±˜ì‹œE EµEˆê¹E</String>
+    <String Id="Error1801" Overridable="yes">E½EE[2]E´(E€) E¬E”르E€ EŠìŠµEˆë‹¤. E¬E”른 E½Eœë¥¼ E€E•í•˜E­Eœì˜¤.</String>
+    <String Id="Error1802" Overridable="yes">E”모E¬E€ E€E±ú±©Eˆë‹¤. E¤E¸ E‘ìš© ú°E¡œê·¸E¨EEEE£Œí•œ ú·EE¤EEEœë„ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1803" Overridable="yes">Eœë¼E´EE[2]EEE”스ú¬E€ EEŠµEˆë‹¤. E”스ú¬E¼ E£E€ ú·E"E¤EEEœë„"E¼ ú´E­ú±˜ê±°EE "E¨EEE¼ ú´E­ú±˜ì—¬ E´EE— E úŸí•œ E¼E¨E¼EEE¤EEEŒì•„E€E­Eœì˜¤.</String>
+    <String Id="Error1804" Overridable="yes">Eœë¼E´EE[2]EEE”스ú¬E€ EEŠµEˆë‹¤. E”스ú¬E¼ E£E€ ú·E"E¤EEEœë„"E¼ ú´E­ú±˜ê±°EE "E¨EEE¼ ú´E­ú±˜ì—¬ "E¾EE³´E°" E€úµEEEžEEEEú·EE¤E¸ E¼E¨EEE úŸí•˜E­Eœì˜¤.</String>
+    <String Id="Error1805" Overridable="yes">ú«´EE[2]E´(E€) EEŠµEˆë‹¤. E´E¬ú±˜ëŠ” ú«´EEE½Eœë¥¼ EE ¥ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1806" Overridable="yes">E´ ú«´E”를 E½EEEEEˆëŠ” EŒí•œE´ EEŠµEˆë‹¤.</String>
+    <String Id="Error1807" Overridable="yes">E¤E˜í•  E€EEú«´E”를 E°E•í•˜E€ E»ú²ˆìŠµEˆë‹¤.</String>
+    <String Id="Error1901" Overridable="yes">Eë³¸ E¤EEE°E´ú °E E´E¤E¼ E½EEE‘에 E¤EEEœìE: [2].</String>
+    <String Id="Error1902" Overridable="yes">E¤EEE€ú¨EE‘ì—…EEEˆì•½ú±˜ê³  EˆìŠµEˆë‹¤. [2] ú¨Œì¼EEE´EE„ [3](E¼)EEE”꿉니E¤. E‘ì—…EEEE£Œí•˜E¤E´ E¤EEE€ú¨E•´E¼ ú±©Eˆë‹¤.</String>
+    <String Id="Error1903" Overridable="yes">E¤EEE€ú¨EE‘ì—…EEEˆì•½ú±˜ê³  EˆìŠµEˆë‹¤. [2] ú¨Œì¼EEE­Eœí•©Eˆë‹¤. E‘ì—…EEEE£Œí•˜E¤E´ E¤EEE€ú¨E•´E¼ ú±©Eˆë‹¤.</String>
+    <String Id="Error1904" Overridable="yes">E¨EE[2]EEE¼) E±Eí•˜E€ E»ú²ˆìŠµEˆë‹¤. HRESULT [3]. E EEE€EEE´E¹Eì—EEE¸E˜í•˜E­Eœì˜¤.</String>
+    <String Id="Error1905" Overridable="yes">E¨EE[2]EEE±Eì„ E¨EŒí•˜E€ E»ú²ˆìŠµEˆë‹¤. HRESULT [3]. E EEE€EEE´E¹Eì—EEE¸E˜í•˜E­Eœì˜¤.</String>
+    <String Id="Error1906" Overridable="yes">ú¨¨úž¤E€ [2]EEE¼) Eì‹œú±˜ì§€ E»ú²ˆìŠµEˆë‹¤. E¤EE [3]. E EEE€EEE´E¹Eì—EEE¸E˜í•˜E­Eœì˜¤.</String>
+    <String Id="Error1907" Overridable="yes">E€E´ [2]EEE¼) E±Eí•˜E€ E»ú²ˆìŠµEˆë‹¤. E€E´EEE¤E˜í•  EEEˆëŠ” EŒí•œE´ E©EE•œE€, E¸E¬E  E´ E€E´EEEœìŠ¤ú¡œì—EEE€Eí•˜E”지 úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1908" Overridable="yes">E€E´ [2]EEE±Eì„ E¨EŒí•˜E€ E»ú²ˆìŠµEˆë‹¤. E€E´EEEœê±°ú±  EEEˆëŠ” EŒí•œE´ EˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1909" Overridable="yes">E”롁EE€E° [2]EEE¼) EŒë“¤E€ E»ú²ˆìŠµEˆë‹¤. E€EEú«´E”ê°€ EˆëŠ”E€, E¸E¬E  E¸ ú«´E”에 E¡E¸E¤ú±  EEEˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1910" Overridable="yes">E”롁EE€E° [2]EEE¼) Eœê±°ú±˜ì§€ E»ú²ˆìŠµEˆë‹¤. E”롁EE€E° ú¨Œì¼E´ EˆëŠ”E€, E¸E¬E  E¸ ú¨Œì¼EEE¡E¸E¤ú±  EEEˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1911" Overridable="yes">ú¨Œì¼ [2]EEú´•ì‹ E¼E´EŒëŸ¬E¬E¼ E±Eí•˜E€ E»ú²ˆìŠµEˆë‹¤. E EEE€EEE´E¹Eì—EEE¸E˜í•˜E­Eœì˜¤.</String>
+    <String Id="Error1912" Overridable="yes">ú¨Œì¼ [2]EEú´•ì‹ E¼E´EŒëŸ¬E¬ E±Eì„ E¨EŒí•˜E€ E»ú²ˆìŠµEˆë‹¤. E EEE€EEE´E¹Eì—EEE¸E˜í•˜E­Eœì˜¤.</String>
+    <String Id="Error1913" Overridable="yes">ini ú¨Œì¼ [2][3]EEE¼) EE°E´ú¦¸ú±˜ì§€ E»ú²ˆìŠµEˆë‹¤. ú¨Œì¼E´ EˆëŠ”E€, E¸E¬E  E¸ ú¨Œì¼EEE¡E¸E¤ú±  EEEˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1914" Overridable="yes">E¤EEE€ú¨E•  EEú¨Œì¼ [2]EEE¼) [3](E¼)EEE”꾸EE¡EE€E•í•˜E€ E»ú²ˆìŠµEˆë‹¤. ú¨Œì¼ [3]EEE€ú±EE°E° EŒí•œE´ EˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1915" Overridable="yes">ODBC Eœë¼E´EEE€E¬Eë¥¼ Eœê±°ú±˜ëŠ” E™ì•ˆ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤. ODBC E¤EE[2]: [3]. E EEE€EEE´E¹Eì—EEE¸E˜í•˜E­Eœì˜¤.</String>
+    <String Id="Error1916" Overridable="yes">ODBC Eœë¼E´EEE€E¬Eë¥¼ E¤E˜í•˜EEE™ì•ˆ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤. ODBC E¤EE[2]: [3]. E EEE€EEE´E¹Eì—EEE¸E˜í•˜E­Eœì˜¤.</String>
+    <String Id="Error1917" Overridable="yes">ODBC Eœë¼E´EE[4]EEE¼) Eœê±°ú±˜ëŠ” E™ì•ˆ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤. ODBC E¤EE[2]: [3]. ODBC Eœë¼E´EE¥¼ Eœê±°ú±  EEEˆëŠ” EŒí•œE´ EˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1918" Overridable="yes">ODBC Eœë¼E´EE[4]EEE¼) E¤E˜í•˜EEE™ì•ˆ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤. ODBC E¤EE[2]: [3]. [4] ú¨Œì¼E´ EˆëŠ”E€, E¸E¬E  E¸ ú¨Œì¼EEE¡E¸E¤ú±  EEEˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1919" Overridable="yes">ODBC E°E´ú ° Eë³¸ [4]EEE¼) E¬E±ú±˜ëŠ” E™ì•ˆ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤. ODBC E¤EE[2]: [3]. [4] ú¨Œì¼E´ EˆëŠ”E€, E¸E¬E  E¸ ú¨Œì¼EEE¡E¸E¤ú±  EEEˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1920" Overridable="yes">Eœë¹EŠ¤ '[2]' ([3])EEE¼) Eœìž‘ú±˜ì§€ E»ú²ˆìŠµEˆë‹¤. EœìŠ¤ú¡EEœë¹EŠ¤E¼ Eœìž‘ú±  EEEˆëŠ” EŒí•œE´ EˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1921" Overridable="yes">Eœë¹EŠ¤ '[2]' ([3])EEE¼) E‘지ú±˜ì§€ E»ú²ˆìŠµEˆë‹¤. EœìŠ¤ú¡EEœë¹EŠ¤E¼ E‘지ú±  EEEˆëŠ” EŒí•œE´ EˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1922" Overridable="yes">Eœë¹EŠ¤ '[2]' ([3])EEE¼) E­Eœí•˜E€ E»ú²ˆìŠµEˆë‹¤. EœìŠ¤ú¡EEœë¹EŠ¤E¼ Eœê±°ú±  EEEˆëŠ” EŒí•œE´ EˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1923" Overridable="yes">Eœë¹EŠ¤ '[2]' ([3])EEE¼) E¤E˜í•˜E€ E»ú²ˆìŠµEˆë‹¤. EœìŠ¤ú¡EEœë¹EŠ¤E¼ E¤E˜í•  EEEˆëŠ” EŒí•œE´ EˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1924" Overridable="yes">úµ˜ê²½ E€EE'[2]'EEE¼) EE°E´ú¦¸ú±˜ì§€ E»ú²ˆìŠµEˆë‹¤. úµ˜ê²½ E€E˜ë¥¼ E˜ì •í•  EEEˆëŠ” EŒí•œE´ EˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1925" Overridable="yes">E´ EœìŠ¤ú¡œì˜ E¨E  E¬E©Eê°€ E¬E©ú±˜ë„EEEœí’ˆEEE¤E˜í•  EŒí•œE´ EEŠµEˆë‹¤. AdministratorEEEœê·¸E¨ú±Eú·EE¤EEE¤E˜í•˜E­Eœì˜¤.</String>
+    <String Id="Error1926" Overridable="yes">ú¨Œì¼ '[3]'EEE€ú±EE´Eˆì„ E¤E•í•  EEEEŠµEˆë‹¤. E¤EE [2]. E´ ú¨Œì¼ E´Eˆì„ E˜ì •í•  EEEˆëŠ” EŒí•œE´ EˆëŠ”E€ úµ•ì¸ú±˜ì‹­Eœì˜¤.</String>
+    <String Id="Error1927" Overridable="yes">E´ú¯¨ú °EEE¬E± E”ìE Eœë¹EŠ¤(COM+ 1.0)E€ E¤E˜ë˜E´ Eˆì§€ EŠìŠµEˆë‹¤. E¤E˜ë¥¼ EœëŒ€EEEˆì¹˜ë ¤E´ E¬E± E”ìE Eœë¹EŠ¤E€ ú±Eš”ú±©Eˆë‹¤. E¬E± E”ìE Eœë¹EŠ¤EEWindows 2000EEEˆìŠµEˆë‹¤.</String>
+    <String Id="Error1928" Overridable="yes">COM+ E‘ìš© ú°E¡œê·¸E¨EEE±Eí•˜EEE™ì•ˆ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤. Eì„¸ú±EE´E©E€ E EEE€EEE´E¹Eì—EEE¸E˜í•˜E­Eœì˜¤.</String>
+    <String Id="Error1929" Overridable="yes">COM+ E‘ìš© ú°E¡œê·¸E¨EEE±Eì„ E¨EŒí•˜EEE™ì•ˆ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤. Eì„¸ú±EE´E©E€ E EEE€EEE´E¹Eì—EEE¸E˜í•˜E­Eœì˜¤.</String>
+    <String Id="Error1930" Overridable="yes">Eœë¹EŠ¤ '[2]' ([3])EEE¤EE„ E€E½ú±  EEEEŠµEˆë‹¤.</String>
+    <String Id="Error1931" Overridable="yes">WindowsE€ ú¨Œì¼EEE´ú´¸ú±˜ê³  Eˆê¸° EŒë¬¸EEWindows Installer Eœë¹EŠ¤E€ EœìŠ¤ú¡Eú¨Œì¼ [2]EEE¼) EE°E´ú¦¸ú±  EEEEŠµEˆë‹¤. E´ ú°E¡œê·¸E¨EEE¬E”르EEE‘동Eœí‚¤E¤E´ E´EEE´Eœë¥¼ EE°E´ú¦¸ú±´E¼ ú±©Eˆë‹¤. {{ú¨¨úž¤E€ EE E [3], OS E´ú´¸EEEE E [4]}}</String>
+    <String Id="Error1932" Overridable="yes">Windows Installer Eœë¹EŠ¤E€ E´ú´¸EEWindows ú¨Œì¼ [2]EEE¼) EE°E´ú¦¸ú±  EEEEŠµEˆë‹¤. {{ú¨¨úž¤E€ EE E [3], OS E´ú´¸EEEE E [4], SFP E¤EE [5]}}</String>
+    <String Id="Error1933" Overridable="yes">Windows Installer Eœë¹EŠ¤E€ E´ú´¸EEE¼E€ Windows ú¨Œì¼EEEE°E´ú¦¸ú±  EEEEŠµEˆë‹¤. {{SFP E¤EE [2]. E´ú´¸EEú¨Œì¼ E©EE\r\n[3]}}</String>
+    <String Id="Error1934" Overridable="yes">E´ú¯¨ú °EEE•ì±E— E˜í•´ E¬E©EEE¤E˜ë¥¼ ú±  EEEEŠµEˆë‹¤ .</String>
+    <String Id="Error1935" Overridable="yes">E´Eˆë¸”리'[6]'EEE¼) E¤E˜í•˜EEE™ì•ˆ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤. Eì„¸ú±EE´E©E€ EE›€EEEEE€Eì„ E¸E°ú±˜ì‹­Eœì˜¤. HRESULT: [3]. {{E´Eˆë¸”리 E¸ú °úª˜ì´E¤: [4], ú±¨EE [5], E¬E± E”ìE: [2]}}</String>
+    <String Id="Error1936" Overridable="yes">E´Eˆë¸”리'[6]'EEE¼) E¤E˜í•˜EEE™ì•ˆ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤. E•ë ¥ú±EE´EE˜ E´Eˆë¸”리E€ EE‹ˆE°EEEœìE úž¤ E¸E´EEEœëªE˜E€ EŠì•˜EµEˆë‹¤. HRESULT: [3]. {{E´Eˆë¸”리 E¸ú °úª˜ì´E¤: [4], ú±¨EE [5], E¬E± E”ìE: [2]}}</String>
+    <String Id="Error1937" Overridable="yes">E´Eˆë¸”리'[6]'EEE¼) E¤E˜í•˜EEE™ì•ˆ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤. EœëªE´EEE´úŸˆë¡œê·¸E€ E¬E”르E€ EŠê±°EEúµ•ì¸ú±  EEEEŠµEˆë‹¤. HRESULT: [3]. {{E´Eˆë¸”리 E¸ú °úª˜ì´E¤: [4], ú±¨EE [5], E¬E± E”ìE: [2]}}</String>
+    <String Id="Error1938" Overridable="yes">E´Eˆë¸”리'[6]'EEE¼) E¤E˜í•˜EEE™ì•ˆ E¤E˜ê°€ EœìEú²ˆìŠµEˆë‹¤. ú±˜ë‚˜ E´EE˜ E´Eˆë¸”리 E¨Eˆì„ E¾EEEEEEŠµEˆë‹¤. HRESULT: [3]. {{E´Eˆë¸”리 E¸ú °úª˜ì´E¤: [4], ú±¨EE [5], E¬E± E”ìE: [2]}}</String>
     
-    <String Id="UITextbytes" Overridable="yes">바이트</String>
+    <String Id="UITextbytes" Overridable="yes">E”이ú¦¸</String>
     <String Id="UITextGB" Overridable="yes">GB</String>
     <String Id="UITextKB" Overridable="yes">KB</String>
     <String Id="UITextMB" Overridable="yes">MB</String>
-    <String Id="UITextMenuAbsent" Overridable="yes">모든 기능을 사용할 수 없음</String>
-    <String Id="UITextMenuAdvertise" Overridable="yes">필요할 때 기능을 설치</String>
-    <String Id="UITextMenuAllCD" Overridable="yes">모든 기능이 CD에서 실행되도록 설치</String>
-    <String Id="UITextMenuAllLocal" Overridable="yes">모든 기능이 로컬 하드 드라이브에 설치</String>
-    <String Id="UITextMenuAllNetwork" Overridable="yes">모든 기능이 네트워크에서 실행되도록 설치</String>
-    <String Id="UITextMenuCD" Overridable="yes">CD에서 실행되도록 설치</String>
-    <String Id="UITextMenuLocal" Overridable="yes">로컬 하드 드라이브에 설치</String>
-    <String Id="UITextMenuNetwork" Overridable="yes">네트워크에서 실행되도록 설치</String>
-    <String Id="UITextNewFolder" Overridable="yes">Folder|한 수준 위로</String>
-    <String Id="UITextScriptInProgress" Overridable="yes">필요한 정보를 모으는 중...</String>
-    <String Id="UITextSelAbsentAbsent" Overridable="yes">이 기능은 설치되지 않습니다.</String>
-    <String Id="UITextSelAbsentAdvertise" Overridable="yes">필요할 때 이 기능을 설치하도록 설정할 수 있습니다.</String>
-    <String Id="UITextSelAbsentCD" Overridable="yes">이 기능은 CD에서 실행되도록 설치됩니다.</String>
-    <String Id="UITextSelAbsentLocal" Overridable="yes">이 기능은 로컬 하드 드라이브에 설치됩니다.</String>
-    <String Id="UITextSelAbsentNetwork" Overridable="yes">이 기능은 네트워크에서 실행되도록 설치됩니다.</String>
-    <String Id="UITextSelAdvertiseAbsent" Overridable="yes">이 기능을 사용할 수 없게 됩니다.</String>
-    <String Id="UITextSelAdvertiseAdvertise" Overridable="yes">필요할 때 설치</String>
-    <String Id="UITextSelAdvertiseCD" Overridable="yes">이 기능은 CD에서 실행할 수 있습니다.</String>
-    <String Id="UITextSelAdvertiseLocal" Overridable="yes">이 기능은 로컬 하드 드라이브에 설치됩니다.</String>
-    <String Id="UITextSelAdvertiseNetwork" Overridable="yes">이 기능은 네트워크에서 실행할 수 있습니다.</String>
-    <String Id="UITextSelCDAbsent" Overridable="yes">이 기능은 완전히 제거됩니다. CD에서 실행할 수 없습니다.</String>
-    <String Id="UITextSelCDAdvertise" Overridable="yes">이 기능은 CD에서 실행되던 상태에서 필요할 때 설치되는 것으로 변경됩니다.</String>
-    <String Id="UITextSelCDCD" Overridable="yes">이 기능은 그대로 CD에서 실행됩니다.</String>
-    <String Id="UITextSelCDLocal" Overridable="yes">이 기능은 CD에서 실행되던 상태에서 로컬 하드 드라이브에 설치되는 것으로 변경됩니다.</String>
-    <String Id="UITextSelChildCostNeg" Overridable="yes">이 기능은 하드 드라이브에서 [1]의 공간을 만듭니다.</String>
-    <String Id="UITextSelChildCostPos" Overridable="yes">이 기능을 실행하려면 하드 드라이브에 [1]이(가) 있어야 합니다.</String>
-    <String Id="UITextSelCostPending" Overridable="yes">이 기능에 대한 공간을 컴파일하는 중...</String>
-    <String Id="UITextSelLocalAbsent" Overridable="yes">이 기능은 완전히 제거됩니다.</String>
-    <String Id="UITextSelLocalAdvertise" Overridable="yes">이 기능은 로컬 하드 드라이브에서 제거되지만 필요할 때 설치하도록 설정할 수 있습니다.</String>
-    <String Id="UITextSelLocalCD" Overridable="yes">이 기능은 로컬 하드 드라이브에서 제거되지만 CD에서는 실행할 수 있습니다.</String>
-    <String Id="UITextSelLocalLocal" Overridable="yes">이 기능은 로컬 하드 드라이브에 그대로 남아 있게 됩니다.</String>
-    <String Id="UITextSelLocalNetwork" Overridable="yes">이 기능은 로컬 하드 드라이브에서 제거되지만 네트워크에서 실행할 수 있습니다.</String>
-    <String Id="UITextSelNetworkAbsent" Overridable="yes">이 기능은 완전히 제거됩니다. 네트워크에서 실행할 수 없게 됩니다.</String>
-    <String Id="UITextSelNetworkAdvertise" Overridable="yes">이 기능은 네트워크에서 실행되던 상태에서 필요할 때 설치되는 것으로 변경됩니다.</String>
-    <String Id="UITextSelNetworkLocal" Overridable="yes">이 기능은 네트워크에서 실행되던 상태에서 로컬 하드 드라이브에 설치되는 것으로 변경됩니다.</String>
-    <String Id="UITextSelNetworkNetwork" Overridable="yes">이 기능은 그대로 네트워크에서 실행됩니다.</String>
-    <String Id="UITextSelParentCostNegNeg" Overridable="yes">이 기능은 하드 드라이브에서 [1]의 공간을 만듭니다. [3]개의 하위 기능 중 [2]개가 선택되었습니다. 하위 기능은 하드 드라이브에서 [4]의 공간을 만듭니다.</String>
-    <String Id="UITextSelParentCostNegPos" Overridable="yes">이 기능은 하드 드라이브에서 [1]의 공간을 만듭니다. [3]개의 하위 기능 중 [2]개가 선택되었습니다. 하위 기능을 사용하려면 하드 드라이브에 [4]이(가) 있어야 합니다.</String>
-    <String Id="UITextSelParentCostPosNeg" Overridable="yes">이 기능을 사용하려면 하드 드라이브에 [1]이(가) 있어야 합니다. [3]개의 하위 기능 중 [2]개가 선택되었습니다. 하위 기능은 하드 드라이브에서 [4]의 공간을 만듭니다.</String>
-    <String Id="UITextSelParentCostPosPos" Overridable="yes">이 기능을 사용하려면 하드 드라이브에 [1]이(가) 있어야 합니다. [3]개의 하위 기능 중 [2]개가 선택되었습니다. 하위 기능을 사용하려면 하드 드라이브에 [4]이(가) 있어야 합니다.</String>
-    <String Id="UITextTimeRemaining" Overridable="yes">남은 시간: {[1]분 }{[2]초}</String>
-    <String Id="UITextVolumeCostAvailable" Overridable="yes">사용 가능</String>
-    <String Id="UITextVolumeCostDifference" Overridable="yes">차이</String>
-    <String Id="UITextVolumeCostRequired" Overridable="yes">í•„ìš”</String>
-    <String Id="UITextVolumeCostSize" Overridable="yes">디스크 크기</String>
-    <String Id="UITextVolumeCostVolume" Overridable="yes">覲朱エ</String>
+    <String Id="UITextMenuAbsent" Overridable="yes">E¨E  E°E¥EEE¬E©ú±  EEEEŒ</String>
+    <String Id="UITextMenuAdvertise" Overridable="yes">ú±Eš”ú±  EEE°E¥EEE¤EE/String>
+    <String Id="UITextMenuAllCD" Overridable="yes">E¨E  E°E¥E´ CDEìE E¤ú²‰ë˜EE¡EE¤EE/String>
+    <String Id="UITextMenuAllLocal" Overridable="yes">E¨E  E°E¥E´ Eœì»¬ ú±˜ë“œ Eœë¼E´EŒì— E¤EE/String>
+    <String Id="UITextMenuAllNetwork" Overridable="yes">E¨E  E°E¥E´ E¤ú¦¸EŒí¬EìE E¤ú²‰ë˜EE¡EE¤EE/String>
+    <String Id="UITextMenuCD" Overridable="yes">CDEìE E¤ú²‰ë˜EE¡EE¤EE/String>
+    <String Id="UITextMenuLocal" Overridable="yes">Eœì»¬ ú±˜ë“œ Eœë¼E´EŒì— E¤EE/String>
+    <String Id="UITextMenuNetwork" Overridable="yes">E¤ú¦¸EŒí¬EìE E¤ú²‰ë˜EE¡EE¤EE/String>
+    <String Id="UITextNewFolder" Overridable="yes">Folder|ú±EE˜ì¤€ EE¡E/String>
+    <String Id="UITextScriptInProgress" Overridable="yes">ú±Eš”ú±EE•ë³´E¼ E¨E¼EEEE..</String>
+    <String Id="UITextSelAbsentAbsent" Overridable="yes">E´ E°E¥E€ E¤E˜ë˜E€ EŠìŠµEˆë‹¤.</String>
+    <String Id="UITextSelAbsentAdvertise" Overridable="yes">ú±Eš”ú±  EEE´ E°E¥EEE¤E˜í•˜EE¡EE¤E•í•  EEEˆìŠµEˆë‹¤.</String>
+    <String Id="UITextSelAbsentCD" Overridable="yes">E´ E°E¥E€ CDEìE E¤ú²‰ë˜EE¡EE¤E˜ë©Eˆë‹¤.</String>
+    <String Id="UITextSelAbsentLocal" Overridable="yes">E´ E°E¥E€ Eœì»¬ ú±˜ë“œ Eœë¼E´EŒì— E¤E˜ë©Eˆë‹¤.</String>
+    <String Id="UITextSelAbsentNetwork" Overridable="yes">E´ E°E¥E€ E¤ú¦¸EŒí¬EìE E¤ú²‰ë˜EE¡EE¤E˜ë©Eˆë‹¤.</String>
+    <String Id="UITextSelAdvertiseAbsent" Overridable="yes">E´ E°E¥EEE¬E©ú±  EEEE²EE©Eˆë‹¤.</String>
+    <String Id="UITextSelAdvertiseAdvertise" Overridable="yes">ú±Eš”ú±  EEE¤EE/String>
+    <String Id="UITextSelAdvertiseCD" Overridable="yes">E´ E°E¥E€ CDEìE E¤ú²‰í•  EEEˆìŠµEˆë‹¤.</String>
+    <String Id="UITextSelAdvertiseLocal" Overridable="yes">E´ E°E¥E€ Eœì»¬ ú±˜ë“œ Eœë¼E´EŒì— E¤E˜ë©Eˆë‹¤.</String>
+    <String Id="UITextSelAdvertiseNetwork" Overridable="yes">E´ E°E¥E€ E¤ú¦¸EŒí¬EìE E¤ú²‰í•  EEEˆìŠµEˆë‹¤.</String>
+    <String Id="UITextSelCDAbsent" Overridable="yes">E´ E°E¥E€ EE Ežˆ Eœê±°E©Eˆë‹¤. CDEìE E¤ú²‰í•  EEEEŠµEˆë‹¤.</String>
+    <String Id="UITextSelCDAdvertise" Overridable="yes">E´ E°E¥E€ CDEìE E¤ú²‰ë˜EEEEEEìE ú±Eš”ú±  EEE¤E˜ë˜EEEEœ¼EEE€E½E©Eˆë‹¤.</String>
+    <String Id="UITextSelCDCD" Overridable="yes">E´ E°E¥E€ E¸E€EECDEìE E¤ú²‰ë©Eˆë‹¤.</String>
+    <String Id="UITextSelCDLocal" Overridable="yes">E´ E°E¥E€ CDEìE E¤ú²‰ë˜EEEEEEìE Eœì»¬ ú±˜ë“œ Eœë¼E´EŒì— E¤E˜ë˜EEEEœ¼EEE€E½E©Eˆë‹¤.</String>
+    <String Id="UITextSelChildCostNeg" Overridable="yes">E´ E°E¥E€ ú±˜ë“œ Eœë¼E´EŒì—EE[1]EEEµEE„ EŒë“­Eˆë‹¤.</String>
+    <String Id="UITextSelChildCostPos" Overridable="yes">E´ E°E¥EEE¤ú²‰í•˜E¤E´ ú±˜ë“œ Eœë¼E´EŒì— [1]E´(E€) Eˆì–´E¼ ú±©Eˆë‹¤.</String>
+    <String Id="UITextSelCostPending" Overridable="yes">E´ E°E¥EEE€ú±EEµEE„ E´ú¨Œì¼ú±˜ëŠ” EE..</String>
+    <String Id="UITextSelLocalAbsent" Overridable="yes">E´ E°E¥E€ EE Ežˆ Eœê±°E©Eˆë‹¤.</String>
+    <String Id="UITextSelLocalAdvertise" Overridable="yes">E´ E°E¥E€ Eœì»¬ ú±˜ë“œ Eœë¼E´EŒì—EEEœê±°E˜ì§€EEú±Eš”ú±  EEE¤E˜í•˜EE¡EE¤E•í•  EEEˆìŠµEˆë‹¤.</String>
+    <String Id="UITextSelLocalCD" Overridable="yes">E´ E°E¥E€ Eœì»¬ ú±˜ë“œ Eœë¼E´EŒì—EEEœê±°E˜ì§€EECDEìEEEE¤ú²‰í•  EEEˆìŠµEˆë‹¤.</String>
+    <String Id="UITextSelLocalLocal" Overridable="yes">E´ E°E¥E€ Eœì»¬ ú±˜ë“œ Eœë¼E´EŒì— E¸E€EEE¨EEEˆê²EE©Eˆë‹¤.</String>
+    <String Id="UITextSelLocalNetwork" Overridable="yes">E´ E°E¥E€ Eœì»¬ ú±˜ë“œ Eœë¼E´EŒì—EEEœê±°E˜ì§€EEE¤ú¦¸EŒí¬EìE E¤ú²‰í•  EEEˆìŠµEˆë‹¤.</String>
+    <String Id="UITextSelNetworkAbsent" Overridable="yes">E´ E°E¥E€ EE Ežˆ Eœê±°E©Eˆë‹¤. E¤ú¦¸EŒí¬EìE E¤ú²‰í•  EEEE²EE©Eˆë‹¤.</String>
+    <String Id="UITextSelNetworkAdvertise" Overridable="yes">E´ E°E¥E€ E¤ú¦¸EŒí¬EìE E¤ú²‰ë˜EEEEEEìE ú±Eš”ú±  EEE¤E˜ë˜EEEEœ¼EEE€E½E©Eˆë‹¤.</String>
+    <String Id="UITextSelNetworkLocal" Overridable="yes">E´ E°E¥E€ E¤ú¦¸EŒí¬EìE E¤ú²‰ë˜EEEEEEìE Eœì»¬ ú±˜ë“œ Eœë¼E´EŒì— E¤E˜ë˜EEEEœ¼EEE€E½E©Eˆë‹¤.</String>
+    <String Id="UITextSelNetworkNetwork" Overridable="yes">E´ E°E¥E€ E¸E€EEE¤ú¦¸EŒí¬EìE E¤ú²‰ë©Eˆë‹¤.</String>
+    <String Id="UITextSelParentCostNegNeg" Overridable="yes">E´ E°E¥E€ ú±˜ë“œ Eœë¼E´EŒì—EE[1]EEEµEE„ EŒë“­Eˆë‹¤. [3]Eœì˜ ú±˜ìœ„ E°E¥ EE[2]Eœê°€ E úŸë˜EˆìŠµEˆë‹¤. ú±˜ìœ„ E°E¥E€ ú±˜ë“œ Eœë¼E´EŒì—EE[4]EEEµEE„ EŒë“­Eˆë‹¤.</String>
+    <String Id="UITextSelParentCostNegPos" Overridable="yes">E´ E°E¥E€ ú±˜ë“œ Eœë¼E´EŒì—EE[1]EEEµEE„ EŒë“­Eˆë‹¤. [3]Eœì˜ ú±˜ìœ„ E°E¥ EE[2]Eœê°€ E úŸë˜EˆìŠµEˆë‹¤. ú±˜ìœ„ E°E¥EEE¬E©ú±˜ë ¤E´ ú±˜ë“œ Eœë¼E´EŒì— [4]E´(E€) Eˆì–´E¼ ú±©Eˆë‹¤.</String>
+    <String Id="UITextSelParentCostPosNeg" Overridable="yes">E´ E°E¥EEE¬E©ú±˜ë ¤E´ ú±˜ë“œ Eœë¼E´EŒì— [1]E´(E€) Eˆì–´E¼ ú±©Eˆë‹¤. [3]Eœì˜ ú±˜ìœ„ E°E¥ EE[2]Eœê°€ E úŸë˜EˆìŠµEˆë‹¤. ú±˜ìœ„ E°E¥E€ ú±˜ë“œ Eœë¼E´EŒì—EE[4]EEEµEE„ EŒë“­Eˆë‹¤.</String>
+    <String Id="UITextSelParentCostPosPos" Overridable="yes">E´ E°E¥EEE¬E©ú±˜ë ¤E´ ú±˜ë“œ Eœë¼E´EŒì— [1]E´(E€) Eˆì–´E¼ ú±©Eˆë‹¤. [3]Eœì˜ ú±˜ìœ„ E°E¥ EE[2]Eœê°€ E úŸë˜EˆìŠµEˆë‹¤. ú±˜ìœ„ E°E¥EEE¬E©ú±˜ë ¤E´ ú±˜ë“œ Eœë¼E´EŒì— [4]E´(E€) Eˆì–´E¼ ú±©Eˆë‹¤.</String>
+    <String Id="UITextTimeRemaining" Overridable="yes">E¨E€ Eœê°E {[1]EE}{[2]EE</String>
+    <String Id="UITextVolumeCostAvailable" Overridable="yes">E¬E© E€E¥</String>
+    <String Id="UITextVolumeCostDifference" Overridable="yes">E¨E´</String>
+    <String Id="UITextVolumeCostRequired" Overridable="yes">ú±Eš”</String>
+    <String Id="UITextVolumeCostSize" Overridable="yes">E”스ú¬ ú¬E°</String>
+    <String Id="UITextVolumeCostVolume" Overridable="yes">E¼E¨</String>
 </WixLocalization>

Modified: trunk/OpenRTM-aist-Python/installer/WixUI_zh-tw.wxl
===================================================================
--- trunk/OpenRTM-aist-Python/installer/WixUI_zh-tw.wxl	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/installer/WixUI_zh-tw.wxl	2011-09-21 07:57:38 UTC (rev 479)
@@ -10,7 +10,7 @@
 
     You must not remove this notice, or any other, from this software.
 -->
-<WixLocalization Culture="zh-tw" xmlns="http://schemas.microsoft.com/wix/2006/localization">
+<WixLocalization Culture="zh-tw" Codepage="950" xmlns="http://schemas.microsoft.com/wix/2006/localization">
   <String Id="WixUIBack" Overridable="yes">上一步(&B)</String>
   <String Id="WixUINext" Overridable="yes">下一步(&N)</String>
   <String Id="WixUICancel" Overridable="yes">取消</String>

Modified: trunk/OpenRTM-aist-Python/installer/build.cmd
===================================================================
--- trunk/OpenRTM-aist-Python/installer/build.cmd	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/installer/build.cmd	2011-09-21 07:57:38 UTC (rev 479)
@@ -4,7 +4,7 @@
 @rem   usually only %TARGET% might be changed
 @rem ------------------------------------------------------------
 @set PATH=%WIX%\bin;%PATH%
- at set VERSION=1.0.0
+ at set VERSION=1.1.0
 @set TARGET=OpenRTM-aist-Python
 @set TARGET_WXS=%TARGET%.wxs
 @set TARGET_WIXOBJ=%TARGET%.wixobj
@@ -22,7 +22,7 @@
 @rem default distribution package folder
 @rem ------------------------------------------------------------
 @set DISTRIBUTION=C:\distribution
- at set OPENRTM_PY=%DISTRIBUTION%\OpenRTM-aist-Python-1.0.0
+ at set OPENRTM_PY=%DISTRIBUTION%\OpenRTM-aist-Python-1.1.0
 @set OMNIORB_PY24=%DISTRIBUTION%\omniORBpy-3.0-Python2.4
 @set OMNIORB_PY25=%DISTRIBUTION%\omniORBpy-3.4-Python2.5
 @set OMNIORB_PY26=%DISTRIBUTION%\omniORBpy-3.4-Python2.6
@@ -33,7 +33,7 @@
 @rem   supported languages have to be specified
 @rem ------------------------------------------------------------
 set LANGUAGES=(ja-jp de-de es-es fr-fr hu-hu it-it ko-kr zh-tw)
-
+copy OpenRTM-aist-Python.wxs.yaml.in OpenRTM-aist-Python.wxs.yaml
 echo off
 @rem ------------------------------------------------------------
 @rem Checking WiX
@@ -82,12 +82,14 @@
 
 if not exist OpenRTP_inc.wxs (
    cd OpenRTP
-rem set TMP_PYTHONPATH=%PYTHONPATH%
-rem set PYTHONPATH=../../bin;%PYTHONPATH%
-rem echo Generating OpenRTP_inc.wxs......
-rem openrtpwxs.py
-rem set PYTHONPATH=%TMP_PYTHONPATH%
+   copy ..\makewxs.py .
+   copy ..\yat.py .
+   echo Generating OpenRTP_inc.wxs......
+ at rem   openrtpwxs.py
+ at rem   set PYTHONPATH=%TMP_PYTHONPATH%
    copy OpenRTP_inc.wxs ..
+   del makewxs.py yat.py
+   del *.yaml
    cd ..
 )
 
@@ -149,3 +151,5 @@
 :END
 del *.yaml
 
+pause;
+

Deleted: trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install042_debian.sh
===================================================================
--- branches/RELENG_1_0/OpenRTM-aist-Python/installer/install_scripts/pkg_install042_debian.sh	2011-02-25 03:06:47 UTC (rev 395)
+++ trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install042_debian.sh	2011-09-21 07:57:38 UTC (rev 479)
@@ -1,172 +0,0 @@
-#!/bin/sh
-#
-# @file pkg_install_debian.sh
-# @brief OpenRTM-aist dependent packages install script for Debian-sarge
-# @author Noriaki Ando <n-ando at aist.go.jp>
-#         Shinji Kurihara
-#         Tetsuo Ando
-#         Harumi Miyamoto
-#
-
-#---------------------------------------
-# パッケージリスト
-#---------------------------------------
-omni="libomniorb4 libomniorb4-dev omniidl4 omniorb4-nameserver"
-ace="libace libace-dev"
-openrtm="openrtm-aist openrtm-aist-doc openrtm-aist-dev openrtm-aist-example"
-openrtm04="openrtm-aist=0.4.2-1 openrtm-aist-doc=0.4.2-1 openrtm-aist-dev=0.4.2-1 openrtm-aist-example=0.4.2-1"
-pyyaml="python-support python-yaml"
-devel="gcc g++ make uuid-dev"
-packages="$devel $omni $ace $pyyaml $openrtm"
-u_packages="$omni $ace $openrtm "
-
-
-#---------------------------------------
-# ロケールの言語確認
-#---------------------------------------
-check_lang()
-{
-lang="en"
-
-locale | grep ja_JP > /dev/null && lang="jp"
-
-if test "$lang" = "jp" ;then
-    msg1="ディストリビューションを確認してください。\nDebian以外のOSの可能性があります。"
-    msg2="コードネーム : "
-    msg3="このOSはサポートされておりません。"
-    msg4=" OpenRTM-aistのリポジトリが登録されていません。"
-    msg5="Source.listにOpenrRTM-aistのリポジトリ:"
-    msg6="を追加します。よろしいですか? (y/n) [y] "
-    msg7="中断します。"
-    msg8="ルートユーザーで実行してください。"
-    msg9="インストール中です..."
-    msg10="完了"
-    msg11="アンインストール中です"
-else
-    msg1="This distribution may not be debian/ubuntu."
-    msg2="The code name is : "
-    msg3="This OS is not supported."
-    msg4="No repository entry for OpenRTM-aist is configured in your system."
-    msg5="repository entry for OpenrRTM-aist: "
-    msg6="Do you want to add the repository entry for OpenrRTM-aist in source.list? (y/n) [y] "
-    msg7="Abort."
-    msg8="This script should be run as root."
-    msg9="Now installing: "
-    msg10="done."
-    msg11="Now uninstalling: "
-
-fi
-
-}
-
-#---------------------------------------
-# リポジトリサーバ
-#---------------------------------------
-create_srclist () {
-    cnames="sarge etch lenny"
-    for c in $cnames; do
-	if test -f "/etc/apt/sources.list"; then
-	    res=`grep $c /etc/apt/sources.list`
-	else
-	    echo $msg1
-	    exit
-	fi
-	if test ! "x$res" = "x" ; then
-	    code_name=$c
-	fi
-    done
-    if test ! "x$code_name" = "x"; then
-	echo $msg2 $code_name
-    else
-	echo $msg3
-	exit
-    fi
-    openrtm_repo="deb http://www.openrtm.org/pub/Linux/debian/ $code_name main"
-}
-
-#---------------------------------------
-# ソースリスト更新関数の定義
-#---------------------------------------
-update_source_list () {
-    rtmsite=`grep openrtm /etc/apt/sources.list`
-    if test "x$rtmsite" = "x" ; then
-	echo $msg4
-	echo $msg5
-	echo "  " $openrtm_repo
-	read -p $msg6 kick_shell
-
-	if test "x$kick_shell" = "xn" ; then
-	    echo $msg7
-	    exit 0
-	else
-	    echo $openrtm_repo >> /etc/apt/sources.list
-	fi
-    fi
-}
-
-#----------------------------------------
-# root かどうかをチェック
-#----------------------------------------
-check_root () {
-    if test ! `id -u` = 0 ; then
-	echo ""
-	echo $msg8
-	echo $msg7
-	echo ""
-	exit 1
-    fi
-}
-
-#----------------------------------------
-# パッケージインストール関数
-#----------------------------------------
-install_packages () {
-    for p in $*; do
-	echo $msg9 $p 
-	apt-get install $p
-	echo $msg10
-	echo ""
-    done
-}
-
-#------------------------------------------------------------
-# リストを逆順にする
-#------------------------------------------------------------
-reverse () {
-    for i in $*; do
-	echo $i
-    done | sed '1!G;h;$!d'
-}
-
-#----------------------------------------
-# パッケージをアンインストールする
-#----------------------------------------
-uninstall_packages () {
-    for p in $*; do
-	echo $msg11 $p
-	aptitude remove $p
-	echo $msg10
-	echo ""
-    done
-}
-
-#---------------------------------------
-# メイン
-#---------------------------------------
-check_lang
-check_root
-
-#if test "x$1" = "x0.4.2" || test "x$1" = "x0.4" ; then
-    openrtm=$openrtm04
-    packages="$devel $omni $ace $pyyaml $openrtm"
-#fi
-
-if test "x$1" = "x-u" ; then
-    uninstall_packages `reverse $u_packages`
-else
-    
-    create_srclist
-    update_source_list
-    apt-get update
-    install_packages $packages
-fi

Copied: trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install042_debian.sh (from rev 395, branches/RELENG_1_0/OpenRTM-aist-Python/installer/install_scripts/pkg_install042_debian.sh)
===================================================================
--- trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install042_debian.sh	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install042_debian.sh	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,172 @@
+#!/bin/sh
+#
+# @file pkg_install_debian.sh
+# @brief OpenRTM-aist dependent packages install script for Debian-sarge
+# @author Noriaki Ando <n-ando at aist.go.jp>
+#         Shinji Kurihara
+#         Tetsuo Ando
+#         Harumi Miyamoto
+#
+
+#---------------------------------------
+# パッケージリスト
+#---------------------------------------
+omni="libomniorb4 libomniorb4-dev omniidl4 omniorb4-nameserver"
+ace="libace libace-dev"
+openrtm="openrtm-aist openrtm-aist-doc openrtm-aist-dev openrtm-aist-example"
+openrtm04="openrtm-aist=0.4.2-1 openrtm-aist-doc=0.4.2-1 openrtm-aist-dev=0.4.2-1 openrtm-aist-example=0.4.2-1"
+pyyaml="python-support python-yaml"
+devel="gcc g++ make uuid-dev"
+packages="$devel $omni $ace $pyyaml $openrtm"
+u_packages="$omni $ace $openrtm "
+
+
+#---------------------------------------
+# ロケールの言語確認
+#---------------------------------------
+check_lang()
+{
+lang="en"
+
+locale | grep ja_JP > /dev/null && lang="jp"
+
+if test "$lang" = "jp" ;then
+    msg1="ディストリビューションを確認してください。\nDebian以外のOSの可能性があります。"
+    msg2="コードネーム : "
+    msg3="このOSはサポートされておりません。"
+    msg4=" OpenRTM-aistのリポジトリが登録されていません。"
+    msg5="Source.listにOpenrRTM-aistのリポジトリ:"
+    msg6="を追加します。よろしいですか? (y/n) [y] "
+    msg7="中断します。"
+    msg8="ルートユーザーで実行してください。"
+    msg9="インストール中です..."
+    msg10="完了"
+    msg11="アンインストール中です"
+else
+    msg1="This distribution may not be debian/ubuntu."
+    msg2="The code name is : "
+    msg3="This OS is not supported."
+    msg4="No repository entry for OpenRTM-aist is configured in your system."
+    msg5="repository entry for OpenrRTM-aist: "
+    msg6="Do you want to add the repository entry for OpenrRTM-aist in source.list? (y/n) [y] "
+    msg7="Abort."
+    msg8="This script should be run as root."
+    msg9="Now installing: "
+    msg10="done."
+    msg11="Now uninstalling: "
+
+fi
+
+}
+
+#---------------------------------------
+# リポジトリサーバ
+#---------------------------------------
+create_srclist () {
+    cnames="sarge etch lenny"
+    for c in $cnames; do
+	if test -f "/etc/apt/sources.list"; then
+	    res=`grep $c /etc/apt/sources.list`
+	else
+	    echo $msg1
+	    exit
+	fi
+	if test ! "x$res" = "x" ; then
+	    code_name=$c
+	fi
+    done
+    if test ! "x$code_name" = "x"; then
+	echo $msg2 $code_name
+    else
+	echo $msg3
+	exit
+    fi
+    openrtm_repo="deb http://www.openrtm.org/pub/Linux/debian/ $code_name main"
+}
+
+#---------------------------------------
+# ソースリスト更新関数の定義
+#---------------------------------------
+update_source_list () {
+    rtmsite=`grep openrtm /etc/apt/sources.list`
+    if test "x$rtmsite" = "x" ; then
+	echo $msg4
+	echo $msg5
+	echo "  " $openrtm_repo
+	read -p $msg6 kick_shell
+
+	if test "x$kick_shell" = "xn" ; then
+	    echo $msg7
+	    exit 0
+	else
+	    echo $openrtm_repo >> /etc/apt/sources.list
+	fi
+    fi
+}
+
+#----------------------------------------
+# root かどうかをチェック
+#----------------------------------------
+check_root () {
+    if test ! `id -u` = 0 ; then
+	echo ""
+	echo $msg8
+	echo $msg7
+	echo ""
+	exit 1
+    fi
+}
+
+#----------------------------------------
+# パッケージインストール関数
+#----------------------------------------
+install_packages () {
+    for p in $*; do
+	echo $msg9 $p 
+	apt-get install $p
+	echo $msg10
+	echo ""
+    done
+}
+
+#------------------------------------------------------------
+# リストを逆順にする
+#------------------------------------------------------------
+reverse () {
+    for i in $*; do
+	echo $i
+    done | sed '1!G;h;$!d'
+}
+
+#----------------------------------------
+# パッケージをアンインストールする
+#----------------------------------------
+uninstall_packages () {
+    for p in $*; do
+	echo $msg11 $p
+	aptitude remove $p
+	echo $msg10
+	echo ""
+    done
+}
+
+#---------------------------------------
+# メイン
+#---------------------------------------
+check_lang
+check_root
+
+#if test "x$1" = "x0.4.2" || test "x$1" = "x0.4" ; then
+    openrtm=$openrtm04
+    packages="$devel $omni $ace $pyyaml $openrtm"
+#fi
+
+if test "x$1" = "x-u" ; then
+    uninstall_packages `reverse $u_packages`
+else
+    
+    create_srclist
+    update_source_list
+    apt-get update
+    install_packages $packages
+fi

Deleted: trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install042_fedora.sh
===================================================================
--- branches/RELENG_1_0/OpenRTM-aist-Python/installer/install_scripts/pkg_install042_fedora.sh	2011-02-25 03:06:47 UTC (rev 395)
+++ trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install042_fedora.sh	2011-09-21 07:57:38 UTC (rev 479)
@@ -1,134 +0,0 @@
-#!/bin/sh
-#
-# @file pkg_install_fedora.sh
-# @brief OpenRTM-aist dependent packages install script for Fedora
-# @author Noriaki Ando <n-ando at aist.go.jp>
-#         Shinji Kurihara
-#         Tetsuo Ando
-#
-# このシェルスクリプトは、aceおよびomniORBのパッケージをインストールし、
-# fedoraの開発環境を構築します。
-#
-# $Id$
-#
-
-#---------------------------------------
-# パッケージリスト
-#---------------------------------------
-omni="omniORB omniORB-devel omniORB-doc omniORB-servers omniORB-utils omniORB-bootscripts"
-ace="ace ace-devel"
-openrtm="OpenRTM-aist OpenRTM-aist-devel OpenRTM-aist-doc OpenRTM-aist-example PyYAML"
-openrtm04="OpenRTM-aist-0.4.2 OpenRTM-aist-devel-0.4.2 OpenRTM-aist-doc-0.4.2 OpenRTM-aist-example-0.4.2 PyYAML"
-packages="gcc-c++ libuuid-devel $omni $ace $openrtm"
-
-
-#----------------------------------------
-# root かどうかをチェック
-#----------------------------------------
-check_root () {
-    if test ! `id -u` = 0 ; then
-	echo ""
-	echo "This script should be run by root user."
-	echo "Abort."
-	echo ""
-	exit 1
-    fi
-}
-
-#---------------------------------------
-# インストール済パッケージリスト
-#---------------------------------------
-rpm_qa="/tmp/yum_list.txt"
-get_pkg_list () {
-    rpm -qa > $rpm_qa
-}
-clean_pkg_list () {
-    rm -f $rpm_qa
-}
-
-#---------------------------------------
-# リポジトリサイト設定ファイルを生成
-#---------------------------------------
-openrtm_repo () {
-cat <<EOF
-[openrtm]
-name=Fedora \$releasever - \$basearch
-failovermethod=priority
-baseurl=http://www.openrtm.org/pub/Linux/Fedora/releases/\$releasever/Fedora/\$basearch/os/Packages
-enabled=1
-gpgcheck=0
-gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora file:///etc/pki/rpm-gpg/RPM-GPG-KEY
-EOF
-} 
-create_repo() {
-    repo="/etc/yum.repos.d/openrtm.repo"
-    if test ! -f $repo ; then
-	echo "OpenRTM-aist のリポジトリが登録されていません。"
-	echo "OpenRTM-aist のリポジトリ: "
-	echo "  http://www.openrtm.org/pub/Linux/Fedora/"
-	read -p "を追加します。よろしいですか? (y/n) [y] " kick_shell
-
-	if test "x$kick_shell" = "xn" ; then
-	    echo "中断します。"
-	    exit 0
-	else
-	    openrtm_repo > /etc/yum.repos.d/openrtm.repo
-	fi
-    fi
-}
-
-#----------------------------------------
-# パッケージインストール関数
-#----------------------------------------
-install_packages () {
-    for p in $*; do
-	ins=`rpm -qa $p`
-	if test "x$ins" = "x"; then
-	    echo "Now installing: " $p
-	    yum install $p
-	    echo "done."
-	    echo ""
-	else
-	    echo $p "is already installed."
-	    echo ""
-	fi
-    done
-}
-
-#------------------------------------------------------------
-# リストを逆順にする
-#------------------------------------------------------------
-reverse () {
-    for i in $*; do
-	echo $i
-    done | sed '1!G;h;$!d'
-}
-
-#----------------------------------------
-# パッケージをアンインストールする
-#----------------------------------------
-uninstall_packages () {
-    for p in $*; do
-	echo "Now uninstalling: " $p
-	yum erase $p
-	echo "done."
-	echo ""
-    done
-}
-
-#---------------------------------------
-# メイン
-#---------------------------------------
-check_root
-
-#if test "x$1" = "x0.4.2" || test "x$1" = "x0.4" ; then
-    openrtm=$openrtm04
-    packages="$devel $omni $ace $pyyaml $openrtm"
-#fi
-
-if test "x$1" = "x-u" ; then
-    uninstall_packages `reverse $packages`
-else
-    create_repo
-    install_packages $packages
-fi

Copied: trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install042_fedora.sh (from rev 395, branches/RELENG_1_0/OpenRTM-aist-Python/installer/install_scripts/pkg_install042_fedora.sh)
===================================================================
--- trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install042_fedora.sh	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install042_fedora.sh	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,134 @@
+#!/bin/sh
+#
+# @file pkg_install_fedora.sh
+# @brief OpenRTM-aist dependent packages install script for Fedora
+# @author Noriaki Ando <n-ando at aist.go.jp>
+#         Shinji Kurihara
+#         Tetsuo Ando
+#
+# このシェルスクリプトは、aceおよびomniORBのパッケージをインストールし、
+# fedoraの開発環境を構築します。
+#
+# $Id$
+#
+
+#---------------------------------------
+# パッケージリスト
+#---------------------------------------
+omni="omniORB omniORB-devel omniORB-doc omniORB-servers omniORB-utils omniORB-bootscripts"
+ace="ace ace-devel"
+openrtm="OpenRTM-aist OpenRTM-aist-devel OpenRTM-aist-doc OpenRTM-aist-example PyYAML"
+openrtm04="OpenRTM-aist-0.4.2 OpenRTM-aist-devel-0.4.2 OpenRTM-aist-doc-0.4.2 OpenRTM-aist-example-0.4.2 PyYAML"
+packages="gcc-c++ libuuid-devel $omni $ace $openrtm"
+
+
+#----------------------------------------
+# root かどうかをチェック
+#----------------------------------------
+check_root () {
+    if test ! `id -u` = 0 ; then
+	echo ""
+	echo "This script should be run by root user."
+	echo "Abort."
+	echo ""
+	exit 1
+    fi
+}
+
+#---------------------------------------
+# インストール済パッケージリスト
+#---------------------------------------
+rpm_qa="/tmp/yum_list.txt"
+get_pkg_list () {
+    rpm -qa > $rpm_qa
+}
+clean_pkg_list () {
+    rm -f $rpm_qa
+}
+
+#---------------------------------------
+# リポジトリサイト設定ファイルを生成
+#---------------------------------------
+openrtm_repo () {
+cat <<EOF
+[openrtm]
+name=Fedora \$releasever - \$basearch
+failovermethod=priority
+baseurl=http://www.openrtm.org/pub/Linux/Fedora/releases/\$releasever/Fedora/\$basearch/os/Packages
+enabled=1
+gpgcheck=0
+gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora file:///etc/pki/rpm-gpg/RPM-GPG-KEY
+EOF
+} 
+create_repo() {
+    repo="/etc/yum.repos.d/openrtm.repo"
+    if test ! -f $repo ; then
+	echo "OpenRTM-aist のリポジトリが登録されていません。"
+	echo "OpenRTM-aist のリポジトリ: "
+	echo "  http://www.openrtm.org/pub/Linux/Fedora/"
+	read -p "を追加します。よろしいですか? (y/n) [y] " kick_shell
+
+	if test "x$kick_shell" = "xn" ; then
+	    echo "中断します。"
+	    exit 0
+	else
+	    openrtm_repo > /etc/yum.repos.d/openrtm.repo
+	fi
+    fi
+}
+
+#----------------------------------------
+# パッケージインストール関数
+#----------------------------------------
+install_packages () {
+    for p in $*; do
+	ins=`rpm -qa $p`
+	if test "x$ins" = "x"; then
+	    echo "Now installing: " $p
+	    yum install $p
+	    echo "done."
+	    echo ""
+	else
+	    echo $p "is already installed."
+	    echo ""
+	fi
+    done
+}
+
+#------------------------------------------------------------
+# リストを逆順にする
+#------------------------------------------------------------
+reverse () {
+    for i in $*; do
+	echo $i
+    done | sed '1!G;h;$!d'
+}
+
+#----------------------------------------
+# パッケージをアンインストールする
+#----------------------------------------
+uninstall_packages () {
+    for p in $*; do
+	echo "Now uninstalling: " $p
+	yum erase $p
+	echo "done."
+	echo ""
+    done
+}
+
+#---------------------------------------
+# メイン
+#---------------------------------------
+check_root
+
+#if test "x$1" = "x0.4.2" || test "x$1" = "x0.4" ; then
+    openrtm=$openrtm04
+    packages="$devel $omni $ace $pyyaml $openrtm"
+#fi
+
+if test "x$1" = "x-u" ; then
+    uninstall_packages `reverse $packages`
+else
+    create_repo
+    install_packages $packages
+fi

Deleted: trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install042_ubuntu.sh
===================================================================
--- branches/RELENG_1_0/OpenRTM-aist-Python/installer/install_scripts/pkg_install042_ubuntu.sh	2011-02-25 03:06:47 UTC (rev 395)
+++ trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install042_ubuntu.sh	2011-09-21 07:57:38 UTC (rev 479)
@@ -1,172 +0,0 @@
-#!/bin/sh
-#
-# @file pkg_install_ubuntu.sh
-# @brief OpenRTM-aist dependent packages install script for Debian-sarge
-# @author Noriaki Ando <n-ando at aist.go.jp>
-#         Shinji Kurihara
-#         Tetsuo Ando
-#         Harumi Miyamoto
-#
-
-#---------------------------------------
-# パッケージリスト
-#---------------------------------------
-omni="libomniorb4 libomniorb4-dev omniidl4 omniorb4-nameserver"
-ace="libace libace-dev"
-openrtm="openrtm-aist openrtm-aist-doc openrtm-aist-dev openrtm-aist-example python-yaml"
-openrtm04="openrtm-aist=0.4.2-1 openrtm-aist-doc=0.4.2-1 openrtm-aist-dev=0.4.2-1 openrtm-aist-example=0.4.2-1"
-devel="gcc g++ make uuid-dev"
-packages="$devel $omni $ace $openrtm"
-u_packages="$omni $ace $openrtm "
-
-#---------------------------------------
-# ロケールの言語確認
-#---------------------------------------
-check_lang()
-{
-lang="en"
-
-locale | grep ja_JP > /dev/null && lang="jp"
-
-if test "$lang" = "jp" ;then
-    msg1="ディストリビューションを確認してください。\nDebianかUbuntu以外のOSの可能性があります。"
-    msg2="コードネーム :"
-    msg3="このOSはサポートしておりません。"
-    msg4="OpenRTM-aist のリポジトリが登録されていません。"
-    msg5="Source.list に OpenRTM-aist のリポジトリ: "
-    msg6="を追加します。よろしいですか?(y/n)[y] "
-    msg7="中断します。"
-    msg8="ルートユーザーで実行してください。"
-    msg9="インストール中です..."
-    msg10="完了"
-    msg11="アンインストール中です."
-else
-    msg1="This distribution may not be debian/ubuntu."
-    msg2="The code name is : "
-    msg3="This OS is not supported."
-    msg4="No repository entry for OpenRTM-aist is configured in your system."
-    msg5="repository entry for OpenrRTM-aist: "
-    msg6="Do you want to add new repository entry for OpenrRTM-aist in source.list? (y/n) [y] "
-    msg7="Abort."
-    msg8="This script should be run as root."
-    msg9="Now installing: "
-    msg10="done."
-    msg11="Now uninstalling: "
-fi
-
-}
-
-
-#---------------------------------------
-# リポジトリサーバ
-#---------------------------------------
-create_srclist () {
-    codename=`sed -n /DISTRIB_CODENAME=/p /etc/lsb-release`
-    cnames=`echo "$codename" | sed 's/DISTRIB_CODENAME=//'`
-    #cnames="sarge edgy feisty gutsy hardy intrepid"
-    for c in $cnames; do
-	if test -f "/etc/apt/sources.list"; then
-	    res=`grep $c /etc/apt/sources.list`
-	else
-	    echo $msg1
-	    exit
-	fi
-	if test ! "x$res" = "x" ; then
-	    code_name=$c
-	fi
-    done
-    if test ! "x$code_name" = "x"; then
-	echo $msg2 $code_name
-    else
-	echo $msg3
-	exit
-    fi
-    openrtm_repo="deb http://www.openrtm.org/pub/Linux/ubuntu/ $code_name main"
-}
-
-#---------------------------------------
-# ソースリスト更新関数の定義
-#---------------------------------------
-update_source_list () {
-    rtmsite=`grep openrtm /etc/apt/sources.list`
-    if test "x$rtmsite" = "x" ; then
-	echo $msg4
-	echo $msg5
-	echo "  " $openrtm_repo
-	read -p $msg6 kick_shell
-
-	if test "x$kick_shell" = "xn" ; then
-	    echo $msg7
-	    exit 0
-	else
-	    echo $openrtm_repo >> /etc/apt/sources.list
-	fi
-    fi
-}
-
-#----------------------------------------
-# root かどうかをチェック
-#----------------------------------------
-check_root () {
-    if test ! `id -u` = 0 ; then
-	echo ""
-	echo $msg8
-	echo $msg7
-	echo ""
-	exit 1
-    fi
-}
-
-#----------------------------------------
-# パッケージインストール関数
-#----------------------------------------
-install_packages () {
-    for p in $*; do
-	echo $msg9 $p
-	apt-get install $p
-	echo $msg10
-	echo ""
-    done
-}
-
-#------------------------------------------------------------
-# リストを逆順にする
-#------------------------------------------------------------
-reverse () {
-    for i in $*; do
-	echo $i
-    done | sed '1!G;h;$!d'
-}
-
-#----------------------------------------
-# パッケージをアンインストールする
-#----------------------------------------
-uninstall_packages () {
-    for p in $*; do
-	echo $msg11 $p
-	aptitude remove $p
-	echo $msg10
-	echo ""
-    done
-}
-
-#---------------------------------------
-# メイン
-#---------------------------------------
-check_lang
-check_root
-
-#if test "x$1" = "x0.4.2" || test "x$1" = "x0.4" ; then
-    openrtm=$openrtm04
-    packages="$devel $omni $ace $pyyaml $openrtm"
-#fi
-
-if test "x$1" = "x-u" ; then
-    uninstall_packages `reverse $u_packages`
-else
-    create_srclist
-    update_source_list
-    apt-get update
-    install_packages $packages
-fi
-

Copied: trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install042_ubuntu.sh (from rev 395, branches/RELENG_1_0/OpenRTM-aist-Python/installer/install_scripts/pkg_install042_ubuntu.sh)
===================================================================
--- trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install042_ubuntu.sh	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install042_ubuntu.sh	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,172 @@
+#!/bin/sh
+#
+# @file pkg_install_ubuntu.sh
+# @brief OpenRTM-aist dependent packages install script for Debian-sarge
+# @author Noriaki Ando <n-ando at aist.go.jp>
+#         Shinji Kurihara
+#         Tetsuo Ando
+#         Harumi Miyamoto
+#
+
+#---------------------------------------
+# パッケージリスト
+#---------------------------------------
+omni="libomniorb4 libomniorb4-dev omniidl4 omniorb4-nameserver"
+ace="libace libace-dev"
+openrtm="openrtm-aist openrtm-aist-doc openrtm-aist-dev openrtm-aist-example python-yaml"
+openrtm04="openrtm-aist=0.4.2-1 openrtm-aist-doc=0.4.2-1 openrtm-aist-dev=0.4.2-1 openrtm-aist-example=0.4.2-1"
+devel="gcc g++ make uuid-dev"
+packages="$devel $omni $ace $openrtm"
+u_packages="$omni $ace $openrtm "
+
+#---------------------------------------
+# ロケールの言語確認
+#---------------------------------------
+check_lang()
+{
+lang="en"
+
+locale | grep ja_JP > /dev/null && lang="jp"
+
+if test "$lang" = "jp" ;then
+    msg1="ディストリビューションを確認してください。\nDebianかUbuntu以外のOSの可能性があります。"
+    msg2="コードネーム :"
+    msg3="このOSはサポートしておりません。"
+    msg4="OpenRTM-aist のリポジトリが登録されていません。"
+    msg5="Source.list に OpenRTM-aist のリポジトリ: "
+    msg6="を追加します。よろしいですか?(y/n)[y] "
+    msg7="中断します。"
+    msg8="ルートユーザーで実行してください。"
+    msg9="インストール中です..."
+    msg10="完了"
+    msg11="アンインストール中です."
+else
+    msg1="This distribution may not be debian/ubuntu."
+    msg2="The code name is : "
+    msg3="This OS is not supported."
+    msg4="No repository entry for OpenRTM-aist is configured in your system."
+    msg5="repository entry for OpenrRTM-aist: "
+    msg6="Do you want to add new repository entry for OpenrRTM-aist in source.list? (y/n) [y] "
+    msg7="Abort."
+    msg8="This script should be run as root."
+    msg9="Now installing: "
+    msg10="done."
+    msg11="Now uninstalling: "
+fi
+
+}
+
+
+#---------------------------------------
+# リポジトリサーバ
+#---------------------------------------
+create_srclist () {
+    codename=`sed -n /DISTRIB_CODENAME=/p /etc/lsb-release`
+    cnames=`echo "$codename" | sed 's/DISTRIB_CODENAME=//'`
+    #cnames="sarge edgy feisty gutsy hardy intrepid"
+    for c in $cnames; do
+	if test -f "/etc/apt/sources.list"; then
+	    res=`grep $c /etc/apt/sources.list`
+	else
+	    echo $msg1
+	    exit
+	fi
+	if test ! "x$res" = "x" ; then
+	    code_name=$c
+	fi
+    done
+    if test ! "x$code_name" = "x"; then
+	echo $msg2 $code_name
+    else
+	echo $msg3
+	exit
+    fi
+    openrtm_repo="deb http://www.openrtm.org/pub/Linux/ubuntu/ $code_name main"
+}
+
+#---------------------------------------
+# ソースリスト更新関数の定義
+#---------------------------------------
+update_source_list () {
+    rtmsite=`grep openrtm /etc/apt/sources.list`
+    if test "x$rtmsite" = "x" ; then
+	echo $msg4
+	echo $msg5
+	echo "  " $openrtm_repo
+	read -p $msg6 kick_shell
+
+	if test "x$kick_shell" = "xn" ; then
+	    echo $msg7
+	    exit 0
+	else
+	    echo $openrtm_repo >> /etc/apt/sources.list
+	fi
+    fi
+}
+
+#----------------------------------------
+# root かどうかをチェック
+#----------------------------------------
+check_root () {
+    if test ! `id -u` = 0 ; then
+	echo ""
+	echo $msg8
+	echo $msg7
+	echo ""
+	exit 1
+    fi
+}
+
+#----------------------------------------
+# パッケージインストール関数
+#----------------------------------------
+install_packages () {
+    for p in $*; do
+	echo $msg9 $p
+	apt-get install $p
+	echo $msg10
+	echo ""
+    done
+}
+
+#------------------------------------------------------------
+# リストを逆順にする
+#------------------------------------------------------------
+reverse () {
+    for i in $*; do
+	echo $i
+    done | sed '1!G;h;$!d'
+}
+
+#----------------------------------------
+# パッケージをアンインストールする
+#----------------------------------------
+uninstall_packages () {
+    for p in $*; do
+	echo $msg11 $p
+	aptitude remove $p
+	echo $msg10
+	echo ""
+    done
+}
+
+#---------------------------------------
+# メイン
+#---------------------------------------
+check_lang
+check_root
+
+#if test "x$1" = "x0.4.2" || test "x$1" = "x0.4" ; then
+    openrtm=$openrtm04
+    packages="$devel $omni $ace $pyyaml $openrtm"
+#fi
+
+if test "x$1" = "x-u" ; then
+    uninstall_packages `reverse $u_packages`
+else
+    create_srclist
+    update_source_list
+    apt-get update
+    install_packages $packages
+fi
+

Deleted: trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install042_vine.sh
===================================================================
--- branches/RELENG_1_0/OpenRTM-aist-Python/installer/install_scripts/pkg_install042_vine.sh	2011-02-25 03:06:47 UTC (rev 395)
+++ trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install042_vine.sh	2011-09-21 07:57:38 UTC (rev 479)
@@ -1,168 +0,0 @@
-#!/bin/sh
-#
-# @file pkg_install_vine.sh
-# @brief OpenRTM-aist dependent packages installation script for Vine Linux
-# @author Noriaki Ando <n-ando at aist.go.jp>
-#         Shinji Kurihara
-#         Tetsuo Ando
-#
-# このシェルスクリプトは、aceおよびomniORBのパッケージをインストールし、
-# Vine Linuxの開発環境を構築します。
-#
-#---------------------------------------
-# Vineバージョン特定
-#---------------------------------------
-vinever=`cat /etc/vine-release | sed 's/.*\([0-9].[0-9]\).*/\1/'`
-
-#---------------------------------------
-# リポジトリサーバ
-#---------------------------------------
-openrtm_repo="rpm     http://www.openrtm.org/pub/Linux/Vine/apt $vinever/\$(ARCH) main"
-
-#---------------------------------------
-# パッケージリスト
-#---------------------------------------
-omni="omniORB omniORB-devel omniORB-servers omniORB-doc"
-ace="ace ace-devel"
-openrtm="OpenRTM-aist OpenRTM-aist-devel OpenRTM-aist-doc OpenRTM-aist-example PyYAML"
-openrtm04="OpenRTM-aist=0.4.2 OpenRTM-aist-devel=0.4.2 OpenRTM-aist-doc=0.4.2 OpenRTM-aist-example=0.4.2 PyYAML"
-libuuid="e2fsprogs e2fsprogs-devel"
-packages="$libuuid $omni $ace $openrtm"
-#packages_check="$libuuid $omni $ace $openrtm"
-
-
-
-
-#----------------------------------------
-# root かどうかをチェック
-#----------------------------------------
-check_root () {
-    if test ! `id -u` = 0 ; then
-	echo ""
-	echo "This script should be run by root user."
-	echo "Abort."
-	echo ""
-	exit 1
-    fi
-}
-
-#---------------------------------------
-# ソースリスト更新関数の定義
-#---------------------------------------
-update_source_list () {
-    rtmsite=`grep openrtm /etc/apt/sources.list`
-    if test "x$rtmsite" = "x" ; then
-	echo "OpenRTM-aist のリポジトリが登録されていません。"
-	echo "Source.list に OpenRTM-aist のリポジトリ: "
-	echo "  " $openrtm_repo
-	read -p "を追加します。よろしいですか? (y/n) [y] " kick_shell
-
-	if test "x$kick_shell" = "xn" ; then
-	    echo "中断します。"
-	    exit 0
-	else
-	    echo $openrtm_repo >> /etc/apt/sources.list
-	fi
-    fi
-}
-
-#----------------------------------------
-# チェック
-#----------------------------------------
-
-#----------------------------------------
-# パッケージをインストールする
-#----------------------------------------
-install_packages () {
-    for p in $*; do
-	if test "x$p" = "x0.4.2" || test "x$p" = "x0.4.2" ; then
-	    :
-	else
-	    if echo "$p" | grep -q '=0.4.2' ; then
-		str=`echo "$p" |sed 's/=0.4.2//'`
-	    else 
-		str="$p"
-	    fi
-
-	    ins=`rpm -qa $str`
-
-	    if test "x$ins" = "x"; then
-		echo "Now installing: " $p
-		apt-get install $p
-		echo "done."
-		echo ""
-	    else  
-		if echo "$ins" |grep -q '0.4.2-0' ; then
-
-		    if echo "$p" | grep -q '=0.4.2'; then
-			echo $ins
-			echo $str"-0.4.2 is already installed"
-			echo ""
-		    else 
-			apt-get install $p
-			echo "done." 
-			echo ""
-		    fi
-
-		elif echo "$ins" |grep -q '1.0.0-0'; then 
-		        echo $ins
-			echo $str"-1.0.0 is already installed"
-			echo ""
-
-		    if echo "$p" | grep -q '=0.4.2'; then
-		       apt-get install $p
-		       echo "done." 
-		       echo ""
-		    fi
-	       else 
- 		    echo $ins
-		    echo $str "is already installed."
-		    echo ""
-		fi
-	    fi
-	fi
-    done
-}
-
-#------------------------------------------------------------
-# リストを逆順にする
-#------------------------------------------------------------
-reverse () {
-    for i in $*; do
-	echo $i
-    done | sed '1!G;h;$!d'
-}
-
-#----------------------------------------
-# パッケージをアンインストールする
-#----------------------------------------
-uninstall_packages () {
-    for p in $*; do
-	echo "Now uninstalling: " $p
-	echo "rpm -e $p"
-	echo "done."
-	echo ""
-    done
-}
-
-
-
-#---------------------------------------
-# メイン
-#---------------------------------------
-check_root
-
-
-#if test "x$1" = "x0.4.2" || test "x$1" = "x0.4" ; then
-    openrtm=$openrtm04
-    packages="$libuuid $omni $ace $openrtm"
-    #packages="$openrtm"
-#fi
-
-if test "x$1" = "x-u" ; then
-    uninstall_packages `reverse $packages`
-else
-    #update_source_list
-    #apt-get update
-    install_packages $1 $packages
-fi
\ No newline at end of file

Copied: trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install042_vine.sh (from rev 395, branches/RELENG_1_0/OpenRTM-aist-Python/installer/install_scripts/pkg_install042_vine.sh)
===================================================================
--- trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install042_vine.sh	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install042_vine.sh	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,168 @@
+#!/bin/sh
+#
+# @file pkg_install_vine.sh
+# @brief OpenRTM-aist dependent packages installation script for Vine Linux
+# @author Noriaki Ando <n-ando at aist.go.jp>
+#         Shinji Kurihara
+#         Tetsuo Ando
+#
+# このシェルスクリプトは、aceおよびomniORBのパッケージをインストールし、
+# Vine Linuxの開発環境を構築します。
+#
+#---------------------------------------
+# Vineバージョン特定
+#---------------------------------------
+vinever=`cat /etc/vine-release | sed 's/.*\([0-9].[0-9]\).*/\1/'`
+
+#---------------------------------------
+# リポジトリサーバ
+#---------------------------------------
+openrtm_repo="rpm     http://www.openrtm.org/pub/Linux/Vine/apt $vinever/\$(ARCH) main"
+
+#---------------------------------------
+# パッケージリスト
+#---------------------------------------
+omni="omniORB omniORB-devel omniORB-servers omniORB-doc"
+ace="ace ace-devel"
+openrtm="OpenRTM-aist OpenRTM-aist-devel OpenRTM-aist-doc OpenRTM-aist-example PyYAML"
+openrtm04="OpenRTM-aist=0.4.2 OpenRTM-aist-devel=0.4.2 OpenRTM-aist-doc=0.4.2 OpenRTM-aist-example=0.4.2 PyYAML"
+libuuid="e2fsprogs e2fsprogs-devel"
+packages="$libuuid $omni $ace $openrtm"
+#packages_check="$libuuid $omni $ace $openrtm"
+
+
+
+
+#----------------------------------------
+# root かどうかをチェック
+#----------------------------------------
+check_root () {
+    if test ! `id -u` = 0 ; then
+	echo ""
+	echo "This script should be run by root user."
+	echo "Abort."
+	echo ""
+	exit 1
+    fi
+}
+
+#---------------------------------------
+# ソースリスト更新関数の定義
+#---------------------------------------
+update_source_list () {
+    rtmsite=`grep openrtm /etc/apt/sources.list`
+    if test "x$rtmsite" = "x" ; then
+	echo "OpenRTM-aist のリポジトリが登録されていません。"
+	echo "Source.list に OpenRTM-aist のリポジトリ: "
+	echo "  " $openrtm_repo
+	read -p "を追加します。よろしいですか? (y/n) [y] " kick_shell
+
+	if test "x$kick_shell" = "xn" ; then
+	    echo "中断します。"
+	    exit 0
+	else
+	    echo $openrtm_repo >> /etc/apt/sources.list
+	fi
+    fi
+}
+
+#----------------------------------------
+# チェック
+#----------------------------------------
+
+#----------------------------------------
+# パッケージをインストールする
+#----------------------------------------
+install_packages () {
+    for p in $*; do
+	if test "x$p" = "x0.4.2" || test "x$p" = "x0.4.2" ; then
+	    :
+	else
+	    if echo "$p" | grep -q '=0.4.2' ; then
+		str=`echo "$p" |sed 's/=0.4.2//'`
+	    else 
+		str="$p"
+	    fi
+
+	    ins=`rpm -qa $str`
+
+	    if test "x$ins" = "x"; then
+		echo "Now installing: " $p
+		apt-get install $p
+		echo "done."
+		echo ""
+	    else  
+		if echo "$ins" |grep -q '0.4.2-0' ; then
+
+		    if echo "$p" | grep -q '=0.4.2'; then
+			echo $ins
+			echo $str"-0.4.2 is already installed"
+			echo ""
+		    else 
+			apt-get install $p
+			echo "done." 
+			echo ""
+		    fi
+
+		elif echo "$ins" |grep -q '1.0.0-0'; then 
+		        echo $ins
+			echo $str"-1.0.0 is already installed"
+			echo ""
+
+		    if echo "$p" | grep -q '=0.4.2'; then
+		       apt-get install $p
+		       echo "done." 
+		       echo ""
+		    fi
+	       else 
+ 		    echo $ins
+		    echo $str "is already installed."
+		    echo ""
+		fi
+	    fi
+	fi
+    done
+}
+
+#------------------------------------------------------------
+# リストを逆順にする
+#------------------------------------------------------------
+reverse () {
+    for i in $*; do
+	echo $i
+    done | sed '1!G;h;$!d'
+}
+
+#----------------------------------------
+# パッケージをアンインストールする
+#----------------------------------------
+uninstall_packages () {
+    for p in $*; do
+	echo "Now uninstalling: " $p
+	echo "rpm -e $p"
+	echo "done."
+	echo ""
+    done
+}
+
+
+
+#---------------------------------------
+# メイン
+#---------------------------------------
+check_root
+
+
+#if test "x$1" = "x0.4.2" || test "x$1" = "x0.4" ; then
+    openrtm=$openrtm04
+    packages="$libuuid $omni $ace $openrtm"
+    #packages="$openrtm"
+#fi
+
+if test "x$1" = "x-u" ; then
+    uninstall_packages `reverse $packages`
+else
+    #update_source_list
+    #apt-get update
+    install_packages $1 $packages
+fi
\ No newline at end of file

Deleted: trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install100_debian.sh
===================================================================
--- branches/RELENG_1_0/OpenRTM-aist-Python/installer/install_scripts/pkg_install100_debian.sh	2011-02-25 03:06:47 UTC (rev 395)
+++ trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install100_debian.sh	2011-09-21 07:57:38 UTC (rev 479)
@@ -1,172 +0,0 @@
-#!/bin/sh
-#
-# @file pkg_install_debian.sh
-# @brief OpenRTM-aist dependent packages install script for Debian-sarge
-# @author Noriaki Ando <n-ando at aist.go.jp>
-#         Shinji Kurihara
-#         Tetsuo Ando
-#         Harumi Miyamoto
-#
-
-#---------------------------------------
-# パッケージリスト
-#---------------------------------------
-omni="libomniorb4 libomniorb4-dev omniidl4 omniorb4-nameserver"
-ace="libace libace-dev"
-openrtm="openrtm-aist openrtm-aist-doc openrtm-aist-dev openrtm-aist-example"
-openrtm04="openrtm-aist=0.4.2-1 openrtm-aist-doc=0.4.2-1 openrtm-aist-dev=0.4.2-1 openrtm-aist-example=0.4.2-1"
-pyyaml="python-support python-yaml"
-devel="gcc g++ make uuid-dev"
-packages="$devel $omni $ace $pyyaml $openrtm"
-u_packages="$omni $ace $openrtm "
-
-
-#---------------------------------------
-# ロケールの言語確認
-#---------------------------------------
-check_lang()
-{
-lang="en"
-
-locale | grep ja_JP > /dev/null && lang="jp"
-
-if test "$lang" = "jp" ;then
-    msg1="ディストリビューションを確認してください。\nDebian以外のOSの可能性があります。"
-    msg2="コードネーム : "
-    msg3="このOSはサポートされておりません。"
-    msg4=" OpenRTM-aistのリポジトリが登録されていません。"
-    msg5="Source.listにOpenrRTM-aistのリポジトリ:"
-    msg6="を追加します。よろしいですか? (y/n) [y] "
-    msg7="中断します。"
-    msg8="ルートユーザーで実行してください。"
-    msg9="インストール中です..."
-    msg10="完了"
-    msg11="アンインストール中です"
-else
-    msg1="This distribution may not be debian/ubuntu."
-    msg2="The code name is : "
-    msg3="This OS is not supported."
-    msg4="No repository entry for OpenRTM-aist is configured in your system."
-    msg5="repository entry for OpenrRTM-aist: "
-    msg6="Do you want to add the repository entry for OpenrRTM-aist in source.list? (y/n) [y] "
-    msg7="Abort."
-    msg8="This script should be run as root."
-    msg9="Now installing: "
-    msg10="done."
-    msg11="Now uninstalling: "
-
-fi
-
-}
-
-#---------------------------------------
-# リポジトリサーバ
-#---------------------------------------
-create_srclist () {
-    cnames="sarge etch lenny"
-    for c in $cnames; do
-	if test -f "/etc/apt/sources.list"; then
-	    res=`grep $c /etc/apt/sources.list`
-	else
-	    echo $msg1
-	    exit
-	fi
-	if test ! "x$res" = "x" ; then
-	    code_name=$c
-	fi
-    done
-    if test ! "x$code_name" = "x"; then
-	echo $msg2 $code_name
-    else
-	echo $msg3
-	exit
-    fi
-    openrtm_repo="deb http://www.openrtm.org/pub/Linux/debian/ $code_name main"
-}
-
-#---------------------------------------
-# ソースリスト更新関数の定義
-#---------------------------------------
-update_source_list () {
-    rtmsite=`grep openrtm /etc/apt/sources.list`
-    if test "x$rtmsite" = "x" ; then
-	echo $msg4
-	echo $msg5
-	echo "  " $openrtm_repo
-	read -p $msg6 kick_shell
-
-	if test "x$kick_shell" = "xn" ; then
-	    echo $msg7
-	    exit 0
-	else
-	    echo $openrtm_repo >> /etc/apt/sources.list
-	fi
-    fi
-}
-
-#----------------------------------------
-# root かどうかをチェック
-#----------------------------------------
-check_root () {
-    if test ! `id -u` = 0 ; then
-	echo ""
-	echo $msg8
-	echo $msg7
-	echo ""
-	exit 1
-    fi
-}
-
-#----------------------------------------
-# パッケージインストール関数
-#----------------------------------------
-install_packages () {
-    for p in $*; do
-	echo $msg9 $p 
-	apt-get install $p
-	echo $msg10
-	echo ""
-    done
-}
-
-#------------------------------------------------------------
-# リストを逆順にする
-#------------------------------------------------------------
-reverse () {
-    for i in $*; do
-	echo $i
-    done | sed '1!G;h;$!d'
-}
-
-#----------------------------------------
-# パッケージをアンインストールする
-#----------------------------------------
-uninstall_packages () {
-    for p in $*; do
-	echo $msg11 $p
-	aptitude remove $p
-	echo $msg10
-	echo ""
-    done
-}
-
-#---------------------------------------
-# メイン
-#---------------------------------------
-check_lang
-check_root
-
-if test "x$1" = "x0.4.2" || test "x$1" = "x0.4" ; then
-    openrtm=$openrtm04
-    packages="$devel $omni $ace $pyyaml $openrtm"
-fi
-
-if test "x$1" = "x-u" ; then
-    uninstall_packages `reverse $u_packages`
-else
-    
-    create_srclist
-    update_source_list
-    apt-get update
-    install_packages $packages
-fi

Copied: trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install100_debian.sh (from rev 395, branches/RELENG_1_0/OpenRTM-aist-Python/installer/install_scripts/pkg_install100_debian.sh)
===================================================================
--- trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install100_debian.sh	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install100_debian.sh	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,172 @@
+#!/bin/sh
+#
+# @file pkg_install_debian.sh
+# @brief OpenRTM-aist dependent packages install script for Debian-sarge
+# @author Noriaki Ando <n-ando at aist.go.jp>
+#         Shinji Kurihara
+#         Tetsuo Ando
+#         Harumi Miyamoto
+#
+
+#---------------------------------------
+# パッケージリスト
+#---------------------------------------
+omni="libomniorb4 libomniorb4-dev omniidl4 omniorb4-nameserver"
+ace="libace libace-dev"
+openrtm="openrtm-aist openrtm-aist-doc openrtm-aist-dev openrtm-aist-example"
+openrtm04="openrtm-aist=0.4.2-1 openrtm-aist-doc=0.4.2-1 openrtm-aist-dev=0.4.2-1 openrtm-aist-example=0.4.2-1"
+pyyaml="python-support python-yaml"
+devel="gcc g++ make uuid-dev"
+packages="$devel $omni $ace $pyyaml $openrtm"
+u_packages="$omni $ace $openrtm "
+
+
+#---------------------------------------
+# ロケールの言語確認
+#---------------------------------------
+check_lang()
+{
+lang="en"
+
+locale | grep ja_JP > /dev/null && lang="jp"
+
+if test "$lang" = "jp" ;then
+    msg1="ディストリビューションを確認してください。\nDebian以外のOSの可能性があります。"
+    msg2="コードネーム : "
+    msg3="このOSはサポートされておりません。"
+    msg4=" OpenRTM-aistのリポジトリが登録されていません。"
+    msg5="Source.listにOpenrRTM-aistのリポジトリ:"
+    msg6="を追加します。よろしいですか? (y/n) [y] "
+    msg7="中断します。"
+    msg8="ルートユーザーで実行してください。"
+    msg9="インストール中です..."
+    msg10="完了"
+    msg11="アンインストール中です"
+else
+    msg1="This distribution may not be debian/ubuntu."
+    msg2="The code name is : "
+    msg3="This OS is not supported."
+    msg4="No repository entry for OpenRTM-aist is configured in your system."
+    msg5="repository entry for OpenrRTM-aist: "
+    msg6="Do you want to add the repository entry for OpenrRTM-aist in source.list? (y/n) [y] "
+    msg7="Abort."
+    msg8="This script should be run as root."
+    msg9="Now installing: "
+    msg10="done."
+    msg11="Now uninstalling: "
+
+fi
+
+}
+
+#---------------------------------------
+# リポジトリサーバ
+#---------------------------------------
+create_srclist () {
+    cnames="sarge etch lenny"
+    for c in $cnames; do
+	if test -f "/etc/apt/sources.list"; then
+	    res=`grep $c /etc/apt/sources.list`
+	else
+	    echo $msg1
+	    exit
+	fi
+	if test ! "x$res" = "x" ; then
+	    code_name=$c
+	fi
+    done
+    if test ! "x$code_name" = "x"; then
+	echo $msg2 $code_name
+    else
+	echo $msg3
+	exit
+    fi
+    openrtm_repo="deb http://www.openrtm.org/pub/Linux/debian/ $code_name main"
+}
+
+#---------------------------------------
+# ソースリスト更新関数の定義
+#---------------------------------------
+update_source_list () {
+    rtmsite=`grep openrtm /etc/apt/sources.list`
+    if test "x$rtmsite" = "x" ; then
+	echo $msg4
+	echo $msg5
+	echo "  " $openrtm_repo
+	read -p $msg6 kick_shell
+
+	if test "x$kick_shell" = "xn" ; then
+	    echo $msg7
+	    exit 0
+	else
+	    echo $openrtm_repo >> /etc/apt/sources.list
+	fi
+    fi
+}
+
+#----------------------------------------
+# root かどうかをチェック
+#----------------------------------------
+check_root () {
+    if test ! `id -u` = 0 ; then
+	echo ""
+	echo $msg8
+	echo $msg7
+	echo ""
+	exit 1
+    fi
+}
+
+#----------------------------------------
+# パッケージインストール関数
+#----------------------------------------
+install_packages () {
+    for p in $*; do
+	echo $msg9 $p 
+	apt-get install $p
+	echo $msg10
+	echo ""
+    done
+}
+
+#------------------------------------------------------------
+# リストを逆順にする
+#------------------------------------------------------------
+reverse () {
+    for i in $*; do
+	echo $i
+    done | sed '1!G;h;$!d'
+}
+
+#----------------------------------------
+# パッケージをアンインストールする
+#----------------------------------------
+uninstall_packages () {
+    for p in $*; do
+	echo $msg11 $p
+	aptitude remove $p
+	echo $msg10
+	echo ""
+    done
+}
+
+#---------------------------------------
+# メイン
+#---------------------------------------
+check_lang
+check_root
+
+if test "x$1" = "x0.4.2" || test "x$1" = "x0.4" ; then
+    openrtm=$openrtm04
+    packages="$devel $omni $ace $pyyaml $openrtm"
+fi
+
+if test "x$1" = "x-u" ; then
+    uninstall_packages `reverse $u_packages`
+else
+    
+    create_srclist
+    update_source_list
+    apt-get update
+    install_packages $packages
+fi

Deleted: trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install100_fedora.sh
===================================================================
--- branches/RELENG_1_0/OpenRTM-aist-Python/installer/install_scripts/pkg_install100_fedora.sh	2011-02-25 03:06:47 UTC (rev 395)
+++ trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install100_fedora.sh	2011-09-21 07:57:38 UTC (rev 479)
@@ -1,134 +0,0 @@
-#!/bin/sh
-#
-# @file pkg_install_fedora.sh
-# @brief OpenRTM-aist dependent packages install script for Fedora
-# @author Noriaki Ando <n-ando at aist.go.jp>
-#         Shinji Kurihara
-#         Tetsuo Ando
-#
-# このシェルスクリプトは、aceおよびomniORBのパッケージをインストールし、
-# fedoraの開発環境を構築します。
-#
-# $Id$
-#
-
-#---------------------------------------
-# パッケージリスト
-#---------------------------------------
-omni="omniORB omniORB-devel omniORB-doc omniORB-servers omniORB-utils omniORB-bootscripts"
-ace="ace ace-devel"
-openrtm="OpenRTM-aist OpenRTM-aist-devel OpenRTM-aist-doc OpenRTM-aist-example PyYAML"
-openrtm04="OpenRTM-aist-0.4.2 OpenRTM-aist-devel-0.4.2 OpenRTM-aist-doc-0.4.2 OpenRTM-aist-example-0.4.2 PyYAML"
-packages="gcc-c++ libuuid-devel $omni $ace $openrtm"
-
-
-#----------------------------------------
-# root かどうかをチェック
-#----------------------------------------
-check_root () {
-    if test ! `id -u` = 0 ; then
-	echo ""
-	echo "This script should be run by root user."
-	echo "Abort."
-	echo ""
-	exit 1
-    fi
-}
-
-#---------------------------------------
-# インストール済パッケージリスト
-#---------------------------------------
-rpm_qa="/tmp/yum_list.txt"
-get_pkg_list () {
-    rpm -qa > $rpm_qa
-}
-clean_pkg_list () {
-    rm -f $rpm_qa
-}
-
-#---------------------------------------
-# リポジトリサイト設定ファイルを生成
-#---------------------------------------
-openrtm_repo () {
-cat <<EOF
-[openrtm]
-name=Fedora \$releasever - \$basearch
-failovermethod=priority
-baseurl=http://www.openrtm.org/pub/Linux/Fedora/releases/\$releasever/Fedora/\$basearch/os/Packages
-enabled=1
-gpgcheck=0
-gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora file:///etc/pki/rpm-gpg/RPM-GPG-KEY
-EOF
-} 
-create_repo() {
-    repo="/etc/yum.repos.d/openrtm.repo"
-    if test ! -f $repo ; then
-	echo "OpenRTM-aist のリポジトリが登録されていません。"
-	echo "OpenRTM-aist のリポジトリ: "
-	echo "  http://www.openrtm.org/pub/Linux/Fedora/"
-	read -p "を追加します。よろしいですか? (y/n) [y] " kick_shell
-
-	if test "x$kick_shell" = "xn" ; then
-	    echo "中断します。"
-	    exit 0
-	else
-	    openrtm_repo > /etc/yum.repos.d/openrtm.repo
-	fi
-    fi
-}
-
-#----------------------------------------
-# パッケージインストール関数
-#----------------------------------------
-install_packages () {
-    for p in $*; do
-	ins=`rpm -qa $p`
-	if test "x$ins" = "x"; then
-	    echo "Now installing: " $p
-	    yum install $p
-	    echo "done."
-	    echo ""
-	else
-	    echo $p "is already installed."
-	    echo ""
-	fi
-    done
-}
-
-#------------------------------------------------------------
-# リストを逆順にする
-#------------------------------------------------------------
-reverse () {
-    for i in $*; do
-	echo $i
-    done | sed '1!G;h;$!d'
-}
-
-#----------------------------------------
-# パッケージをアンインストールする
-#----------------------------------------
-uninstall_packages () {
-    for p in $*; do
-	echo "Now uninstalling: " $p
-	yum erase $p
-	echo "done."
-	echo ""
-    done
-}
-
-#---------------------------------------
-# メイン
-#---------------------------------------
-check_root
-
-if test "x$1" = "x0.4.2" || test "x$1" = "x0.4" ; then
-    openrtm=$openrtm04
-    packages="$devel $omni $ace $pyyaml $openrtm"
-fi
-
-if test "x$1" = "x-u" ; then
-    uninstall_packages `reverse $packages`
-else
-    create_repo
-    install_packages $packages
-fi

Copied: trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install100_fedora.sh (from rev 395, branches/RELENG_1_0/OpenRTM-aist-Python/installer/install_scripts/pkg_install100_fedora.sh)
===================================================================
--- trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install100_fedora.sh	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install100_fedora.sh	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,134 @@
+#!/bin/sh
+#
+# @file pkg_install_fedora.sh
+# @brief OpenRTM-aist dependent packages install script for Fedora
+# @author Noriaki Ando <n-ando at aist.go.jp>
+#         Shinji Kurihara
+#         Tetsuo Ando
+#
+# このシェルスクリプトは、aceおよびomniORBのパッケージをインストールし、
+# fedoraの開発環境を構築します。
+#
+# $Id$
+#
+
+#---------------------------------------
+# パッケージリスト
+#---------------------------------------
+omni="omniORB omniORB-devel omniORB-doc omniORB-servers omniORB-utils omniORB-bootscripts"
+ace="ace ace-devel"
+openrtm="OpenRTM-aist OpenRTM-aist-devel OpenRTM-aist-doc OpenRTM-aist-example PyYAML"
+openrtm04="OpenRTM-aist-0.4.2 OpenRTM-aist-devel-0.4.2 OpenRTM-aist-doc-0.4.2 OpenRTM-aist-example-0.4.2 PyYAML"
+packages="gcc-c++ libuuid-devel $omni $ace $openrtm"
+
+
+#----------------------------------------
+# root かどうかをチェック
+#----------------------------------------
+check_root () {
+    if test ! `id -u` = 0 ; then
+	echo ""
+	echo "This script should be run by root user."
+	echo "Abort."
+	echo ""
+	exit 1
+    fi
+}
+
+#---------------------------------------
+# インストール済パッケージリスト
+#---------------------------------------
+rpm_qa="/tmp/yum_list.txt"
+get_pkg_list () {
+    rpm -qa > $rpm_qa
+}
+clean_pkg_list () {
+    rm -f $rpm_qa
+}
+
+#---------------------------------------
+# リポジトリサイト設定ファイルを生成
+#---------------------------------------
+openrtm_repo () {
+cat <<EOF
+[openrtm]
+name=Fedora \$releasever - \$basearch
+failovermethod=priority
+baseurl=http://www.openrtm.org/pub/Linux/Fedora/releases/\$releasever/Fedora/\$basearch/os/Packages
+enabled=1
+gpgcheck=0
+gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora file:///etc/pki/rpm-gpg/RPM-GPG-KEY
+EOF
+} 
+create_repo() {
+    repo="/etc/yum.repos.d/openrtm.repo"
+    if test ! -f $repo ; then
+	echo "OpenRTM-aist のリポジトリが登録されていません。"
+	echo "OpenRTM-aist のリポジトリ: "
+	echo "  http://www.openrtm.org/pub/Linux/Fedora/"
+	read -p "を追加します。よろしいですか? (y/n) [y] " kick_shell
+
+	if test "x$kick_shell" = "xn" ; then
+	    echo "中断します。"
+	    exit 0
+	else
+	    openrtm_repo > /etc/yum.repos.d/openrtm.repo
+	fi
+    fi
+}
+
+#----------------------------------------
+# パッケージインストール関数
+#----------------------------------------
+install_packages () {
+    for p in $*; do
+	ins=`rpm -qa $p`
+	if test "x$ins" = "x"; then
+	    echo "Now installing: " $p
+	    yum install $p
+	    echo "done."
+	    echo ""
+	else
+	    echo $p "is already installed."
+	    echo ""
+	fi
+    done
+}
+
+#------------------------------------------------------------
+# リストを逆順にする
+#------------------------------------------------------------
+reverse () {
+    for i in $*; do
+	echo $i
+    done | sed '1!G;h;$!d'
+}
+
+#----------------------------------------
+# パッケージをアンインストールする
+#----------------------------------------
+uninstall_packages () {
+    for p in $*; do
+	echo "Now uninstalling: " $p
+	yum erase $p
+	echo "done."
+	echo ""
+    done
+}
+
+#---------------------------------------
+# メイン
+#---------------------------------------
+check_root
+
+if test "x$1" = "x0.4.2" || test "x$1" = "x0.4" ; then
+    openrtm=$openrtm04
+    packages="$devel $omni $ace $pyyaml $openrtm"
+fi
+
+if test "x$1" = "x-u" ; then
+    uninstall_packages `reverse $packages`
+else
+    create_repo
+    install_packages $packages
+fi

Deleted: trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install100_ubuntu.sh
===================================================================
--- branches/RELENG_1_0/OpenRTM-aist-Python/installer/install_scripts/pkg_install100_ubuntu.sh	2011-02-25 03:06:47 UTC (rev 395)
+++ trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install100_ubuntu.sh	2011-09-21 07:57:38 UTC (rev 479)
@@ -1,172 +0,0 @@
-#!/bin/sh
-#
-# @file pkg_install_ubuntu.sh
-# @brief OpenRTM-aist dependent packages install script for Debian-sarge
-# @author Noriaki Ando <n-ando at aist.go.jp>
-#         Shinji Kurihara
-#         Tetsuo Ando
-#         Harumi Miyamoto
-#
-
-#---------------------------------------
-# パッケージリスト
-#---------------------------------------
-omni="libomniorb4 libomniorb4-dev omniidl4 omniorb4-nameserver"
-ace="libace libace-dev"
-openrtm="openrtm-aist openrtm-aist-doc openrtm-aist-dev openrtm-aist-example python-yaml"
-openrtm04="openrtm-aist=0.4.2-1 openrtm-aist-doc=0.4.2-1 openrtm-aist-dev=0.4.2-1 openrtm-aist-example=0.4.2-1"
-devel="gcc g++ make uuid-dev"
-packages="$devel $omni $ace $openrtm"
-u_packages="$omni $ace $openrtm "
-
-#---------------------------------------
-# ロケールの言語確認
-#---------------------------------------
-check_lang()
-{
-lang="en"
-
-locale | grep ja_JP > /dev/null && lang="jp"
-
-if test "$lang" = "jp" ;then
-    msg1="ディストリビューションを確認してください。\nDebianかUbuntu以外のOSの可能性があります。"
-    msg2="コードネーム :"
-    msg3="このOSはサポートしておりません。"
-    msg4="OpenRTM-aist のリポジトリが登録されていません。"
-    msg5="Source.list に OpenRTM-aist のリポジトリ: "
-    msg6="を追加します。よろしいですか?(y/n)[y] "
-    msg7="中断します。"
-    msg8="ルートユーザーで実行してください。"
-    msg9="インストール中です..."
-    msg10="完了"
-    msg11="アンインストール中です."
-else
-    msg1="This distribution may not be debian/ubuntu."
-    msg2="The code name is : "
-    msg3="This OS is not supported."
-    msg4="No repository entry for OpenRTM-aist is configured in your system."
-    msg5="repository entry for OpenrRTM-aist: "
-    msg6="Do you want to add new repository entry for OpenrRTM-aist in source.list? (y/n) [y] "
-    msg7="Abort."
-    msg8="This script should be run as root."
-    msg9="Now installing: "
-    msg10="done."
-    msg11="Now uninstalling: "
-fi
-
-}
-
-
-#---------------------------------------
-# リポジトリサーバ
-#---------------------------------------
-create_srclist () {
-    codename=`sed -n /DISTRIB_CODENAME=/p /etc/lsb-release`
-    cnames=`echo "$codename" | sed 's/DISTRIB_CODENAME=//'`
-    #cnames="sarge edgy feisty gutsy hardy intrepid"
-    for c in $cnames; do
-	if test -f "/etc/apt/sources.list"; then
-	    res=`grep $c /etc/apt/sources.list`
-	else
-	    echo $msg1
-	    exit
-	fi
-	if test ! "x$res" = "x" ; then
-	    code_name=$c
-	fi
-    done
-    if test ! "x$code_name" = "x"; then
-	echo $msg2 $code_name
-    else
-	echo $msg3
-	exit
-    fi
-    openrtm_repo="deb http://www.openrtm.org/pub/Linux/ubuntu/ $code_name main"
-}
-
-#---------------------------------------
-# ソースリスト更新関数の定義
-#---------------------------------------
-update_source_list () {
-    rtmsite=`grep openrtm /etc/apt/sources.list`
-    if test "x$rtmsite" = "x" ; then
-	echo $msg4
-	echo $msg5
-	echo "  " $openrtm_repo
-	read -p $msg6 kick_shell
-
-	if test "x$kick_shell" = "xn" ; then
-	    echo $msg7
-	    exit 0
-	else
-	    echo $openrtm_repo >> /etc/apt/sources.list
-	fi
-    fi
-}
-
-#----------------------------------------
-# root かどうかをチェック
-#----------------------------------------
-check_root () {
-    if test ! `id -u` = 0 ; then
-	echo ""
-	echo $msg8
-	echo $msg7
-	echo ""
-	exit 1
-    fi
-}
-
-#----------------------------------------
-# パッケージインストール関数
-#----------------------------------------
-install_packages () {
-    for p in $*; do
-	echo $msg9 $p
-	apt-get install $p
-	echo $msg10
-	echo ""
-    done
-}
-
-#------------------------------------------------------------
-# リストを逆順にする
-#------------------------------------------------------------
-reverse () {
-    for i in $*; do
-	echo $i
-    done | sed '1!G;h;$!d'
-}
-
-#----------------------------------------
-# パッケージをアンインストールする
-#----------------------------------------
-uninstall_packages () {
-    for p in $*; do
-	echo $msg11 $p
-	aptitude remove $p
-	echo $msg10
-	echo ""
-    done
-}
-
-#---------------------------------------
-# メイン
-#---------------------------------------
-check_lang
-check_root
-
-if test "x$1" = "x0.4.2" || test "x$1" = "x0.4" ; then
-    openrtm=$openrtm04
-    packages="$devel $omni $ace $pyyaml $openrtm"
-fi
-
-if test "x$1" = "x-u" ; then
-    uninstall_packages `reverse $u_packages`
-else
-    create_srclist
-    update_source_list
-    apt-get update
-    install_packages $packages
-fi
-

Copied: trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install100_ubuntu.sh (from rev 395, branches/RELENG_1_0/OpenRTM-aist-Python/installer/install_scripts/pkg_install100_ubuntu.sh)
===================================================================
--- trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install100_ubuntu.sh	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install100_ubuntu.sh	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,172 @@
+#!/bin/sh
+#
+# @file pkg_install_ubuntu.sh
+# @brief OpenRTM-aist dependent packages install script for Debian-sarge
+# @author Noriaki Ando <n-ando at aist.go.jp>
+#         Shinji Kurihara
+#         Tetsuo Ando
+#         Harumi Miyamoto
+#
+
+#---------------------------------------
+# パッケージリスト
+#---------------------------------------
+omni="libomniorb4 libomniorb4-dev omniidl4 omniorb4-nameserver"
+ace="libace libace-dev"
+openrtm="openrtm-aist openrtm-aist-doc openrtm-aist-dev openrtm-aist-example python-yaml"
+openrtm04="openrtm-aist=0.4.2-1 openrtm-aist-doc=0.4.2-1 openrtm-aist-dev=0.4.2-1 openrtm-aist-example=0.4.2-1"
+devel="gcc g++ make uuid-dev"
+packages="$devel $omni $ace $openrtm"
+u_packages="$omni $ace $openrtm "
+
+#---------------------------------------
+# ロケールの言語確認
+#---------------------------------------
+check_lang()
+{
+lang="en"
+
+locale | grep ja_JP > /dev/null && lang="jp"
+
+if test "$lang" = "jp" ;then
+    msg1="ディストリビューションを確認してください。\nDebianかUbuntu以外のOSの可能性があります。"
+    msg2="コードネーム :"
+    msg3="このOSはサポートしておりません。"
+    msg4="OpenRTM-aist のリポジトリが登録されていません。"
+    msg5="Source.list に OpenRTM-aist のリポジトリ: "
+    msg6="を追加します。よろしいですか?(y/n)[y] "
+    msg7="中断します。"
+    msg8="ルートユーザーで実行してください。"
+    msg9="インストール中です..."
+    msg10="完了"
+    msg11="アンインストール中です."
+else
+    msg1="This distribution may not be debian/ubuntu."
+    msg2="The code name is : "
+    msg3="This OS is not supported."
+    msg4="No repository entry for OpenRTM-aist is configured in your system."
+    msg5="repository entry for OpenrRTM-aist: "
+    msg6="Do you want to add new repository entry for OpenrRTM-aist in source.list? (y/n) [y] "
+    msg7="Abort."
+    msg8="This script should be run as root."
+    msg9="Now installing: "
+    msg10="done."
+    msg11="Now uninstalling: "
+fi
+
+}
+
+
+#---------------------------------------
+# リポジトリサーバ
+#---------------------------------------
+create_srclist () {
+    codename=`sed -n /DISTRIB_CODENAME=/p /etc/lsb-release`
+    cnames=`echo "$codename" | sed 's/DISTRIB_CODENAME=//'`
+    #cnames="sarge edgy feisty gutsy hardy intrepid"
+    for c in $cnames; do
+	if test -f "/etc/apt/sources.list"; then
+	    res=`grep $c /etc/apt/sources.list`
+	else
+	    echo $msg1
+	    exit
+	fi
+	if test ! "x$res" = "x" ; then
+	    code_name=$c
+	fi
+    done
+    if test ! "x$code_name" = "x"; then
+	echo $msg2 $code_name
+    else
+	echo $msg3
+	exit
+    fi
+    openrtm_repo="deb http://www.openrtm.org/pub/Linux/ubuntu/ $code_name main"
+}
+
+#---------------------------------------
+# ソースリスト更新関数の定義
+#---------------------------------------
+update_source_list () {
+    rtmsite=`grep openrtm /etc/apt/sources.list`
+    if test "x$rtmsite" = "x" ; then
+	echo $msg4
+	echo $msg5
+	echo "  " $openrtm_repo
+	read -p $msg6 kick_shell
+
+	if test "x$kick_shell" = "xn" ; then
+	    echo $msg7
+	    exit 0
+	else
+	    echo $openrtm_repo >> /etc/apt/sources.list
+	fi
+    fi
+}
+
+#----------------------------------------
+# root かどうかをチェック
+#----------------------------------------
+check_root () {
+    if test ! `id -u` = 0 ; then
+	echo ""
+	echo $msg8
+	echo $msg7
+	echo ""
+	exit 1
+    fi
+}
+
+#----------------------------------------
+# パッケージインストール関数
+#----------------------------------------
+install_packages () {
+    for p in $*; do
+	echo $msg9 $p
+	apt-get install $p
+	echo $msg10
+	echo ""
+    done
+}
+
+#------------------------------------------------------------
+# リストを逆順にする
+#------------------------------------------------------------
+reverse () {
+    for i in $*; do
+	echo $i
+    done | sed '1!G;h;$!d'
+}
+
+#----------------------------------------
+# パッケージをアンインストールする
+#----------------------------------------
+uninstall_packages () {
+    for p in $*; do
+	echo $msg11 $p
+	aptitude remove $p
+	echo $msg10
+	echo ""
+    done
+}
+
+#---------------------------------------
+# メイン
+#---------------------------------------
+check_lang
+check_root
+
+if test "x$1" = "x0.4.2" || test "x$1" = "x0.4" ; then
+    openrtm=$openrtm04
+    packages="$devel $omni $ace $pyyaml $openrtm"
+fi
+
+if test "x$1" = "x-u" ; then
+    uninstall_packages `reverse $u_packages`
+else
+    create_srclist
+    update_source_list
+    apt-get update
+    install_packages $packages
+fi
+

Deleted: trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install100_vine.sh
===================================================================
--- branches/RELENG_1_0/OpenRTM-aist-Python/installer/install_scripts/pkg_install100_vine.sh	2011-02-25 03:06:47 UTC (rev 395)
+++ trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install100_vine.sh	2011-09-21 07:57:38 UTC (rev 479)
@@ -1,168 +0,0 @@
-#!/bin/sh
-#
-# @file pkg_install_vine.sh
-# @brief OpenRTM-aist dependent packages installation script for Vine Linux
-# @author Noriaki Ando <n-ando at aist.go.jp>
-#         Shinji Kurihara
-#         Tetsuo Ando
-#
-# このシェルスクリプトは、aceおよびomniORBのパッケージをインストールし、
-# Vine Linuxの開発環境を構築します。
-#
-#---------------------------------------
-# Vineバージョン特定
-#---------------------------------------
-vinever=`cat /etc/vine-release | sed 's/.*\([0-9].[0-9]\).*/\1/'`
-
-#---------------------------------------
-# リポジトリサーバ
-#---------------------------------------
-openrtm_repo="rpm     http://www.openrtm.org/pub/Linux/Vine/apt $vinever/\$(ARCH) main"
-
-#---------------------------------------
-# パッケージリスト
-#---------------------------------------
-omni="omniORB omniORB-devel omniORB-servers omniORB-doc"
-ace="ace ace-devel"
-openrtm="OpenRTM-aist OpenRTM-aist-devel OpenRTM-aist-doc OpenRTM-aist-example PyYAML"
-openrtm04="OpenRTM-aist=0.4.2 OpenRTM-aist-devel=0.4.2 OpenRTM-aist-doc=0.4.2 OpenRTM-aist-example=0.4.2 PyYAML"
-libuuid="e2fsprogs e2fsprogs-devel"
-packages="$libuuid $omni $ace $openrtm"
-#packages_check="$libuuid $omni $ace $openrtm"
-
-
-
-
-#----------------------------------------
-# root かどうかをチェック
-#----------------------------------------
-check_root () {
-    if test ! `id -u` = 0 ; then
-	echo ""
-	echo "This script should be run by root user."
-	echo "Abort."
-	echo ""
-	exit 1
-    fi
-}
-
-#---------------------------------------
-# ソースリスト更新関数の定義
-#---------------------------------------
-update_source_list () {
-    rtmsite=`grep openrtm /etc/apt/sources.list`
-    if test "x$rtmsite" = "x" ; then
-	echo "OpenRTM-aist のリポジトリが登録されていません。"
-	echo "Source.list に OpenRTM-aist のリポジトリ: "
-	echo "  " $openrtm_repo
-	read -p "を追加します。よろしいですか? (y/n) [y] " kick_shell
-
-	if test "x$kick_shell" = "xn" ; then
-	    echo "中断します。"
-	    exit 0
-	else
-	    echo $openrtm_repo >> /etc/apt/sources.list
-	fi
-    fi
-}
-
-#----------------------------------------
-# チェック
-#----------------------------------------
-
-#----------------------------------------
-# パッケージをインストールする
-#----------------------------------------
-install_packages () {
-    for p in $*; do
-	if test "x$p" = "x0.4.2" || test "x$p" = "x0.4.2" ; then
-	    :
-	else
-	    if echo "$p" | grep -q '=0.4.2' ; then
-		str=`echo "$p" |sed 's/=0.4.2//'`
-	    else 
-		str="$p"
-	    fi
-
-	    ins=`rpm -qa $str`
-
-	    if test "x$ins" = "x"; then
-		echo "Now installing: " $p
-		apt-get install $p
-		echo "done."
-		echo ""
-	    else  
-		if echo "$ins" |grep -q '0.4.2-0' ; then
-
-		    if echo "$p" | grep -q '=0.4.2'; then
-			echo $ins
-			echo $str"-0.4.2 is already installed"
-			echo ""
-		    else 
-			apt-get install $p
-			echo "done." 
-			echo ""
-		    fi
-
-		elif echo "$ins" |grep -q '1.0.0-0'; then 
-		        echo $ins
-			echo $str"-1.0.0 is already installed"
-			echo ""
-
-		    if echo "$p" | grep -q '=0.4.2'; then
-		       apt-get install $p
-		       echo "done." 
-		       echo ""
-		    fi
-	       else 
- 		    echo $ins
-		    echo $str "is already installed."
-		    echo ""
-		fi
-	    fi
-	fi
-    done
-}
-
-#------------------------------------------------------------
-# リストを逆順にする
-#------------------------------------------------------------
-reverse () {
-    for i in $*; do
-	echo $i
-    done | sed '1!G;h;$!d'
-}
-
-#----------------------------------------
-# パッケージをアンインストールする
-#----------------------------------------
-uninstall_packages () {
-    for p in $*; do
-	echo "Now uninstalling: " $p
-	echo "rpm -e $p"
-	echo "done."
-	echo ""
-    done
-}
-
-
-
-#---------------------------------------
-# メイン
-#---------------------------------------
-check_root
-
-
-if test "x$1" = "x0.4.2" || test "x$1" = "x0.4" ; then
-    openrtm=$openrtm04
-    packages="$libuuid $omni $ace $openrtm"
-    #packages="$openrtm"
-fi
-
-if test "x$1" = "x-u" ; then
-    uninstall_packages `reverse $packages`
-else
-    #update_source_list
-    #apt-get update
-    install_packages $1 $packages
-fi
\ No newline at end of file

Copied: trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install100_vine.sh (from rev 395, branches/RELENG_1_0/OpenRTM-aist-Python/installer/install_scripts/pkg_install100_vine.sh)
===================================================================
--- trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install100_vine.sh	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install100_vine.sh	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,168 @@
+#!/bin/sh
+#
+# @file pkg_install_vine.sh
+# @brief OpenRTM-aist dependent packages installation script for Vine Linux
+# @author Noriaki Ando <n-ando at aist.go.jp>
+#         Shinji Kurihara
+#         Tetsuo Ando
+#
+# このシェルスクリプトは、aceおよびomniORBのパッケージをインストールし、
+# Vine Linuxの開発環境を構築します。
+#
+#---------------------------------------
+# Vineバージョン特定
+#---------------------------------------
+vinever=`cat /etc/vine-release | sed 's/.*\([0-9].[0-9]\).*/\1/'`
+
+#---------------------------------------
+# リポジトリサーバ
+#---------------------------------------
+openrtm_repo="rpm     http://www.openrtm.org/pub/Linux/Vine/apt $vinever/\$(ARCH) main"
+
+#---------------------------------------
+# パッケージリスト
+#---------------------------------------
+omni="omniORB omniORB-devel omniORB-servers omniORB-doc"
+ace="ace ace-devel"
+openrtm="OpenRTM-aist OpenRTM-aist-devel OpenRTM-aist-doc OpenRTM-aist-example PyYAML"
+openrtm04="OpenRTM-aist=0.4.2 OpenRTM-aist-devel=0.4.2 OpenRTM-aist-doc=0.4.2 OpenRTM-aist-example=0.4.2 PyYAML"
+libuuid="e2fsprogs e2fsprogs-devel"
+packages="$libuuid $omni $ace $openrtm"
+#packages_check="$libuuid $omni $ace $openrtm"
+
+
+
+
+#----------------------------------------
+# root かどうかをチェック
+#----------------------------------------
+check_root () {
+    if test ! `id -u` = 0 ; then
+	echo ""
+	echo "This script should be run by root user."
+	echo "Abort."
+	echo ""
+	exit 1
+    fi
+}
+
+#---------------------------------------
+# ソースリスト更新関数の定義
+#---------------------------------------
+update_source_list () {
+    rtmsite=`grep openrtm /etc/apt/sources.list`
+    if test "x$rtmsite" = "x" ; then
+	echo "OpenRTM-aist のリポジトリが登録されていません。"
+	echo "Source.list に OpenRTM-aist のリポジトリ: "
+	echo "  " $openrtm_repo
+	read -p "を追加します。よろしいですか? (y/n) [y] " kick_shell
+
+	if test "x$kick_shell" = "xn" ; then
+	    echo "中断します。"
+	    exit 0
+	else
+	    echo $openrtm_repo >> /etc/apt/sources.list
+	fi
+    fi
+}
+
+#----------------------------------------
+# チェック
+#----------------------------------------
+
+#----------------------------------------
+# パッケージをインストールする
+#----------------------------------------
+install_packages () {
+    for p in $*; do
+	if test "x$p" = "x0.4.2" || test "x$p" = "x0.4.2" ; then
+	    :
+	else
+	    if echo "$p" | grep -q '=0.4.2' ; then
+		str=`echo "$p" |sed 's/=0.4.2//'`
+	    else 
+		str="$p"
+	    fi
+
+	    ins=`rpm -qa $str`
+
+	    if test "x$ins" = "x"; then
+		echo "Now installing: " $p
+		apt-get install $p
+		echo "done."
+		echo ""
+	    else  
+		if echo "$ins" |grep -q '0.4.2-0' ; then
+
+		    if echo "$p" | grep -q '=0.4.2'; then
+			echo $ins
+			echo $str"-0.4.2 is already installed"
+			echo ""
+		    else 
+			apt-get install $p
+			echo "done." 
+			echo ""
+		    fi
+
+		elif echo "$ins" |grep -q '1.0.0-0'; then 
+		        echo $ins
+			echo $str"-1.0.0 is already installed"
+			echo ""
+
+		    if echo "$p" | grep -q '=0.4.2'; then
+		       apt-get install $p
+		       echo "done." 
+		       echo ""
+		    fi
+	       else 
+ 		    echo $ins
+		    echo $str "is already installed."
+		    echo ""
+		fi
+	    fi
+	fi
+    done
+}
+
+#------------------------------------------------------------
+# リストを逆順にする
+#------------------------------------------------------------
+reverse () {
+    for i in $*; do
+	echo $i
+    done | sed '1!G;h;$!d'
+}
+
+#----------------------------------------
+# パッケージをアンインストールする
+#----------------------------------------
+uninstall_packages () {
+    for p in $*; do
+	echo "Now uninstalling: " $p
+	echo "rpm -e $p"
+	echo "done."
+	echo ""
+    done
+}
+
+
+
+#---------------------------------------
+# メイン
+#---------------------------------------
+check_root
+
+
+if test "x$1" = "x0.4.2" || test "x$1" = "x0.4" ; then
+    openrtm=$openrtm04
+    packages="$libuuid $omni $ace $openrtm"
+    #packages="$openrtm"
+fi
+
+if test "x$1" = "x-u" ; then
+    uninstall_packages `reverse $packages`
+else
+    #update_source_list
+    #apt-get update
+    install_packages $1 $packages
+fi
\ No newline at end of file

Deleted: trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_debian.sh
===================================================================
--- branches/RELENG_1_0/OpenRTM-aist-Python/installer/install_scripts/pkg_install_debian.sh	2011-02-25 03:06:47 UTC (rev 395)
+++ trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_debian.sh	2011-09-21 07:57:38 UTC (rev 479)
@@ -1,163 +0,0 @@
-#!/bin/sh
-#
-# @file pkg_install_debian.sh
-# @brief OpenRTM-aist dependent packages install script for Debian-sarge
-# @author Noriaki Ando <n-ando at aist.go.jp>
-#         Shinji Kurihara
-#         Tetsuo Ando
-#         Harumi Miyamoto
-#
-
-#---------------------------------------
-# パッケージリスト
-#---------------------------------------
-omni="libomniorb4 libomniorb4-dev omniidl4 omniorb4-nameserver"
-openrtm="openrtm-aist openrtm-aist-doc openrtm-aist-dev openrtm-aist-example"
-pyyaml="python-support python-yaml"
-devel="gcc g++ make uuid-dev"
-packages="$devel $omni $pyyaml $openrtm"
-u_packages="$omni $openrtm "
-
-#---------------------------------------
-# ロケールの言語確認
-#---------------------------------------
-check_lang()
-{
-lang="en"
-
-locale | grep ja_JP > /dev/null && lang="jp"
-
-if test "$lang" = "jp" ;then
-    msg1="ディストリビューションを確認してください。\nDebian以外のOSの可能性があります。"
-    msg2="コードネーム : "
-    msg3="このOSはサポートされておりません。"
-    msg4=" OpenRTM-aistのリポジトリが登録されていません。"
-    msg5="Source.listにOpenrRTM-aistのリポジトリ:"
-    msg6="を追加します。よろしいですか? (y/n) [y] "
-    msg7="中断します。"
-    msg8="ルートユーザーで実行してください。"
-    msg9="インストール中です..."
-    msg10="完了"
-    msg11="アンインストール中です"
-else
-    msg1="This distribution may not be debian/ubuntu."
-    msg2="The code name is : "
-    msg3="This OS is not supported."
-    msg4="No repository entry for OpenRTM-aist is configured in your system."
-    msg5="repository entry for OpenrRTM-aist: "
-    msg6="Do you want to add the repository entry for OpenrRTM-aist in source.list? (y/n) [y] "
-    msg7="Abort."
-    msg8="This script should be run as root."
-    msg9="Now installing: "
-    msg10="done."
-    msg11="Now uninstalling: "
-
-fi
-
-}
-
-#---------------------------------------
-# リポジトリサーバ
-#---------------------------------------
-create_srclist () {
-    cnames="sarge etch lenny"
-    for c in $cnames; do
-	if test -f "/etc/apt/sources.list"; then
-	    res=`grep $c /etc/apt/sources.list`
-	else
-	    echo $msg1
-	    exit
-	fi
-	if test ! "x$res" = "x" ; then
-	    code_name=$c
-	fi
-    done
-    if test ! "x$code_name" = "x"; then
-	echo $msg2 $code_name
-    else
-	echo $msg3
-	exit
-    fi
-    openrtm_repo="deb http://www.openrtm.org/pub/Linux/debian/ $code_name main"
-}
-
-#---------------------------------------
-# ソースリスト更新関数の定義
-#---------------------------------------
-update_source_list () {
-    rtmsite=`grep openrtm /etc/apt/sources.list`
-    if test "x$rtmsite" = "x" ; then
-	echo $msg4
-	echo $msg5
-	echo "  " $openrtm_repo
-	read -p $msg6 kick_shell
-
-	if test "x$kick_shell" = "xn" ; then
-	    echo $msg7
-	    exit 0
-	else
-	    echo $openrtm_repo >> /etc/apt/sources.list
-	fi
-    fi
-}
-
-#----------------------------------------
-# root かどうかをチェック
-#----------------------------------------
-check_root () {
-    if test ! `id -u` = 0 ; then
-	echo ""
-	echo $msg8
-	echo $msg7
-	echo ""
-	exit 1
-    fi
-}
-
-#----------------------------------------
-# パッケージインストール関数
-#----------------------------------------
-install_packages () {
-    for p in $*; do
-	echo $msg9 $p
-	apt-get install $p
-	echo $msg10
-	echo ""
-    done
-}
-
-#------------------------------------------------------------
-# リストを逆順にする
-#------------------------------------------------------------
-reverse () {
-    for i in $*; do
-	echo $i
-    done | sed '1!G;h;$!d'
-}
-
-#----------------------------------------
-# パッケージをアンインストールする
-#----------------------------------------
-uninstall_packages () {
-    for p in $*; do
-	echo $msg11 $p
-	aptitude remove $p
-	echo $msg10
-	echo ""
-    done
-}
-
-#---------------------------------------
-# メイン
-#---------------------------------------
-check_lang
-check_root
-if test "x$1" = "x-u" ; then
-    uninstall_packages `reverse $u_packages`
-else
-    create_srclist
-    update_source_list
-    apt-get update
-    install_packages $packages
-fi
-

Copied: trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_debian.sh (from rev 395, branches/RELENG_1_0/OpenRTM-aist-Python/installer/install_scripts/pkg_install_debian.sh)
===================================================================
--- trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_debian.sh	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_debian.sh	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,163 @@
+#!/bin/sh
+#
+# @file pkg_install_debian.sh
+# @brief OpenRTM-aist dependent packages install script for Debian-sarge
+# @author Noriaki Ando <n-ando at aist.go.jp>
+#         Shinji Kurihara
+#         Tetsuo Ando
+#         Harumi Miyamoto
+#
+
+#---------------------------------------
+# パッケージリスト
+#---------------------------------------
+omni="libomniorb4 libomniorb4-dev omniidl4 omniorb4-nameserver"
+openrtm="openrtm-aist openrtm-aist-doc openrtm-aist-dev openrtm-aist-example"
+pyyaml="python-support python-yaml"
+devel="gcc g++ make uuid-dev"
+packages="$devel $omni $pyyaml $openrtm"
+u_packages="$omni $openrtm "
+
+#---------------------------------------
+# ロケールの言語確認
+#---------------------------------------
+check_lang()
+{
+lang="en"
+
+locale | grep ja_JP > /dev/null && lang="jp"
+
+if test "$lang" = "jp" ;then
+    msg1="ディストリビューションを確認してください。\nDebian以外のOSの可能性があります。"
+    msg2="コードネーム : "
+    msg3="このOSはサポートされておりません。"
+    msg4=" OpenRTM-aistのリポジトリが登録されていません。"
+    msg5="Source.listにOpenrRTM-aistのリポジトリ:"
+    msg6="を追加します。よろしいですか? (y/n) [y] "
+    msg7="中断します。"
+    msg8="ルートユーザーで実行してください。"
+    msg9="インストール中です..."
+    msg10="完了"
+    msg11="アンインストール中です"
+else
+    msg1="This distribution may not be debian/ubuntu."
+    msg2="The code name is : "
+    msg3="This OS is not supported."
+    msg4="No repository entry for OpenRTM-aist is configured in your system."
+    msg5="repository entry for OpenrRTM-aist: "
+    msg6="Do you want to add the repository entry for OpenrRTM-aist in source.list? (y/n) [y] "
+    msg7="Abort."
+    msg8="This script should be run as root."
+    msg9="Now installing: "
+    msg10="done."
+    msg11="Now uninstalling: "
+
+fi
+
+}
+
+#---------------------------------------
+# リポジトリサーバ
+#---------------------------------------
+create_srclist () {
+    cnames="sarge etch lenny"
+    for c in $cnames; do
+	if test -f "/etc/apt/sources.list"; then
+	    res=`grep $c /etc/apt/sources.list`
+	else
+	    echo $msg1
+	    exit
+	fi
+	if test ! "x$res" = "x" ; then
+	    code_name=$c
+	fi
+    done
+    if test ! "x$code_name" = "x"; then
+	echo $msg2 $code_name
+    else
+	echo $msg3
+	exit
+    fi
+    openrtm_repo="deb http://www.openrtm.org/pub/Linux/debian/ $code_name main"
+}
+
+#---------------------------------------
+# ソースリスト更新関数の定義
+#---------------------------------------
+update_source_list () {
+    rtmsite=`grep openrtm /etc/apt/sources.list`
+    if test "x$rtmsite" = "x" ; then
+	echo $msg4
+	echo $msg5
+	echo "  " $openrtm_repo
+	read -p $msg6 kick_shell
+
+	if test "x$kick_shell" = "xn" ; then
+	    echo $msg7
+	    exit 0
+	else
+	    echo $openrtm_repo >> /etc/apt/sources.list
+	fi
+    fi
+}
+
+#----------------------------------------
+# root かどうかをチェック
+#----------------------------------------
+check_root () {
+    if test ! `id -u` = 0 ; then
+	echo ""
+	echo $msg8
+	echo $msg7
+	echo ""
+	exit 1
+    fi
+}
+
+#----------------------------------------
+# パッケージインストール関数
+#----------------------------------------
+install_packages () {
+    for p in $*; do
+	echo $msg9 $p
+	apt-get install $p
+	echo $msg10
+	echo ""
+    done
+}
+
+#------------------------------------------------------------
+# リストを逆順にする
+#------------------------------------------------------------
+reverse () {
+    for i in $*; do
+	echo $i
+    done | sed '1!G;h;$!d'
+}
+
+#----------------------------------------
+# パッケージをアンインストールする
+#----------------------------------------
+uninstall_packages () {
+    for p in $*; do
+	echo $msg11 $p
+	aptitude remove $p
+	echo $msg10
+	echo ""
+    done
+}
+
+#---------------------------------------
+# メイン
+#---------------------------------------
+check_lang
+check_root
+if test "x$1" = "x-u" ; then
+    uninstall_packages `reverse $u_packages`
+else
+    create_srclist
+    update_source_list
+    apt-get update
+    install_packages $packages
+fi
+

Deleted: trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_fedora.sh
===================================================================
--- branches/RELENG_1_0/OpenRTM-aist-Python/installer/install_scripts/pkg_install_fedora.sh	2011-02-25 03:06:47 UTC (rev 395)
+++ trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_fedora.sh	2011-09-21 07:57:38 UTC (rev 479)
@@ -1,145 +0,0 @@
-#!/bin/sh
-#
-# @file pkg_install_fedora.sh
-# @brief OpenRTM-aist dependent packages install script for Fedora
-# @author Noriaki Ando <n-ando at aist.go.jp>
-#         Shinji Kurihara
-#         Tetsuo Ando
-#
-# このシェルスクリプトは、aceおよびomniORBのパッケージをインストールし、
-# fedoraの開発環境を構築します。
-#
-# $Id$
-#
-
-#---------------------------------------
-# パッケージリスト
-#---------------------------------------
-omni="omniORB omniORB-devel omniORB-doc omniORB-servers omniORB-utils omniORB-bootscripts"
-openrtm="OpenRTM-aist OpenRTM-aist-devel OpenRTM-aist-doc OpenRTM-aist-example PyYAML"
-packages="gcc-c++ libuuid-devel $omni $openrtm"
-
-
-#----------------------------------------
-# root かどうかをチェック
-#----------------------------------------
-check_root () {
-    if test ! `id -u` = 0 ; then
-	echo ""
-	echo "This script should be run by root user."
-	echo "Abort."
-	echo ""
-	exit 1
-    fi
-}
-
-#---------------------------------------
-# インストール済パッケージリスト
-#---------------------------------------
-rpm_qa="/tmp/yum_list.txt"
-get_pkg_list () {
-    rpm -qa > $rpm_qa
-}
-clean_pkg_list () {
-    rm -f $rpm_qa
-}
-
-#---------------------------------------
-# リポジトリサイト設定ファイルを生成
-#---------------------------------------
-openrtm_repo () {
-cat <<EOF
-[openrtm]
-name=Fedora \$releasever - \$basearch
-failovermethod=priority
-baseurl=http://www.openrtm.org/pub/Linux/Fedora/releases/\$releasever/Fedora/\$basearch/os/Packages
-enabled=1
-gpgcheck=0
-gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora file:///etc/pki/rpm-gpg/RPM-GPG-KEY
-EOF
-} 
-create_repo() {
-    repo="/etc/yum.repos.d/openrtm.repo"
-    if test ! -f $repo ; then
-	echo "OpenRTM-aist のリポジトリが登録されていません。"
-	echo "OpenRTM-aist のリポジトリ: "
-	echo "  http://www.openrtm.org/pub/Linux/Fedora/"
-	read -p "を追加します。よろしいですか? (y/n) [y] " kick_shell
-
-	if test "x$kick_shell" = "xn" ; then
-	    echo "中断します。"
-	    exit 0
-	else
-	    openrtm_repo > /etc/yum.repos.d/openrtm.repo
-	fi
-    fi
-}
-
-#----------------------------------------
-# パッケージインストール関数
-#----------------------------------------
-install_packages () {
-    for p in $*; do
-	if test "x$p" = "x0.4.2" || test "x$p" = "x0.4.2" ; then
-	    :
-	else
-	    if echo "$p" | grep -q '=0.4.2' ; then
-		str=`echo "$p" |sed 's/=0.4.2//'`
-	    else 
-		str="$p"
-	    fi
-
-	    ins=`rpm -qa $str`
-
-	    if test "x$ins" = "x"; then
-		echo "Now installing: " $p
-		yum install $p
-		echo "done."
-		echo ""
-	    else  
-		if echo "$ins" |grep -q '0.4.2-0' ; then
-			yum install $p
-			echo "done." 
-			echo ""
-	       else 
- 		    echo $ins
-		    echo $str "is already installed."
-		    echo ""
-		fi
-	    fi
-	fi
-    done
-}
-
-
-#------------------------------------------------------------
-# リストを逆順にする
-#------------------------------------------------------------
-reverse () {
-    for i in $*; do
-	echo $i
-    done | sed '1!G;h;$!d'
-}
-
-#----------------------------------------
-# パッケージをアンインストールする
-#----------------------------------------
-uninstall_packages () {
-    for p in $*; do
-	echo "Now uninstalling: " $p
-	yum erase $p
-	echo "done."
-	echo ""
-    done
-}
-
-#---------------------------------------
-# メイン
-#---------------------------------------
-check_root
-if test "x$1" = "x-u" ; then
-    uninstall_packages `reverse $packages`
-else
-    create_repo
-    install_packages $packages
-fi

Copied: trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_fedora.sh (from rev 395, branches/RELENG_1_0/OpenRTM-aist-Python/installer/install_scripts/pkg_install_fedora.sh)
===================================================================
--- trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_fedora.sh	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_fedora.sh	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,145 @@
+#!/bin/sh
+#
+# @file pkg_install_fedora.sh
+# @brief OpenRTM-aist dependent packages install script for Fedora
+# @author Noriaki Ando <n-ando at aist.go.jp>
+#         Shinji Kurihara
+#         Tetsuo Ando
+#
+# このシェルスクリプトは、aceおよびomniORBのパッケージをインストールし、
+# fedoraの開発環境を構築します。
+#
+# $Id$
+#
+
+#---------------------------------------
+# パッケージリスト
+#---------------------------------------
+omni="omniORB omniORB-devel omniORB-doc omniORB-servers omniORB-utils omniORB-bootscripts"
+openrtm="OpenRTM-aist OpenRTM-aist-devel OpenRTM-aist-doc OpenRTM-aist-example PyYAML"
+packages="gcc-c++ libuuid-devel $omni $openrtm"
+
+
+#----------------------------------------
+# root かどうかをチェック
+#----------------------------------------
+check_root () {
+    if test ! `id -u` = 0 ; then
+	echo ""
+	echo "This script should be run by root user."
+	echo "Abort."
+	echo ""
+	exit 1
+    fi
+}
+
+#---------------------------------------
+# インストール済パッケージリスト
+#---------------------------------------
+rpm_qa="/tmp/yum_list.txt"
+get_pkg_list () {
+    rpm -qa > $rpm_qa
+}
+clean_pkg_list () {
+    rm -f $rpm_qa
+}
+
+#---------------------------------------
+# リポジトリサイト設定ファイルを生成
+#---------------------------------------
+openrtm_repo () {
+cat <<EOF
+[openrtm]
+name=Fedora \$releasever - \$basearch
+failovermethod=priority
+baseurl=http://www.openrtm.org/pub/Linux/Fedora/releases/\$releasever/Fedora/\$basearch/os/Packages
+enabled=1
+gpgcheck=0
+gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora file:///etc/pki/rpm-gpg/RPM-GPG-KEY
+EOF
+} 
+create_repo() {
+    repo="/etc/yum.repos.d/openrtm.repo"
+    if test ! -f $repo ; then
+	echo "OpenRTM-aist のリポジトリが登録されていません。"
+	echo "OpenRTM-aist のリポジトリ: "
+	echo "  http://www.openrtm.org/pub/Linux/Fedora/"
+	read -p "を追加します。よろしいですか? (y/n) [y] " kick_shell
+
+	if test "x$kick_shell" = "xn" ; then
+	    echo "中断します。"
+	    exit 0
+	else
+	    openrtm_repo > /etc/yum.repos.d/openrtm.repo
+	fi
+    fi
+}
+
+#----------------------------------------
+# パッケージインストール関数
+#----------------------------------------
+install_packages () {
+    for p in $*; do
+	if test "x$p" = "x0.4.2" || test "x$p" = "x0.4.2" ; then
+	    :
+	else
+	    if echo "$p" | grep -q '=0.4.2' ; then
+		str=`echo "$p" |sed 's/=0.4.2//'`
+	    else 
+		str="$p"
+	    fi
+
+	    ins=`rpm -qa $str`
+
+	    if test "x$ins" = "x"; then
+		echo "Now installing: " $p
+		yum install $p
+		echo "done."
+		echo ""
+	    else  
+		if echo "$ins" |grep -q '0.4.2-0' ; then
+			yum install $p
+			echo "done." 
+			echo ""
+	       else 
+ 		    echo $ins
+		    echo $str "is already installed."
+		    echo ""
+		fi
+	    fi
+	fi
+    done
+}
+
+
+#------------------------------------------------------------
+# リストを逆順にする
+#------------------------------------------------------------
+reverse () {
+    for i in $*; do
+	echo $i
+    done | sed '1!G;h;$!d'
+}
+
+#----------------------------------------
+# パッケージをアンインストールする
+#----------------------------------------
+uninstall_packages () {
+    for p in $*; do
+	echo "Now uninstalling: " $p
+	yum erase $p
+	echo "done."
+	echo ""
+    done
+}
+
+#---------------------------------------
+# メイン
+#---------------------------------------
+check_root
+if test "x$1" = "x-u" ; then
+    uninstall_packages `reverse $packages`
+else
+    create_repo
+    install_packages $packages
+fi

Deleted: trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_python_debian.sh
===================================================================
--- branches/RELENG_1_0/OpenRTM-aist-Python/installer/install_scripts/pkg_install_python_debian.sh	2011-02-25 03:06:47 UTC (rev 395)
+++ trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_python_debian.sh	2011-09-21 07:57:38 UTC (rev 479)
@@ -1,161 +0,0 @@
-#!/bin/sh
-#
-# @file pkg_install_debian.sh
-# @brief OpenRTM-aist dependent packages install script for Debian-sarge
-# @author Noriaki Ando <n-ando at aist.go.jp>
-#         Shinji Kurihara
-#         Tetsuo Ando
-#         Harumi Miyamoto
-#
-
-#---------------------------------------
-# パッケージリスト
-#---------------------------------------
-omnipy="python python-omniorb2-omg python-omniorb2 omniidl4-python omniorb4-nameserver"
-openrtm="openrtm-aist-python openrtm-aist-python-example"
-packages="$omnipy $openrtm"
-u_packages="$omnipy $openrtm "
-
-#---------------------------------------
-# ロケールの言語確認
-#---------------------------------------
-check_lang()
-{
-lang="en"
-
-locale | grep ja_JP > /dev/null && lang="jp"
-
-if test "$lang" = "jp" ;then
-    msg1="ディストリビューションを確認してください。\nDebian以外のOSの可能性があります。"
-    msg2="コードネーム : "
-    msg3="このOSはサポートされておりません。"
-    msg4=" OpenRTM-aistのリポジトリが登録されていません。"
-    msg5="Source.listにOpenrRTM-aistのリポジトリ:"
-    msg6="を追加します。よろしいですか? (y/n) [y] "
-    msg7="中断します。"
-    msg8="ルートユーザーで実行してください。"
-    msg9="インストール中です..."
-    msg10="完了"
-    msg11="アンインストール中です"
-else
-    msg1="This distribution may not be debian/ubuntu."
-    msg2="The code name is : "
-    msg3="This OS is not supported."
-    msg4="No repository entry for OpenRTM-aist is configured in your system."
-    msg5="repository entry for OpenrRTM-aist: "
-    msg6="Do you want to add the repository entry for OpenrRTM-aist in source.list? (y/n) [y] "
-    msg7="Abort."
-    msg8="This script should be run as root."
-    msg9="Now installing: "
-    msg10="done."
-    msg11="Now uninstalling: "
-
-fi
-
-}
-
-#---------------------------------------
-# リポジトリサーバ
-#---------------------------------------
-create_srclist () {
-    cnames="sarge etch lenny"
-    for c in $cnames; do
-	if test -f "/etc/apt/sources.list"; then
-	    res=`grep $c /etc/apt/sources.list`
-	else
-	    echo $msg1
-	    exit
-	fi
-	if test ! "x$res" = "x" ; then
-	    code_name=$c
-	fi
-    done
-    if test ! "x$code_name" = "x"; then
-	echo $msg2 $code_name
-    else
-	echo $msg3
-	exit
-    fi
-    openrtm_repo="deb http://www.openrtm.org/pub/Linux/debian/ $code_name main"
-}
-
-#---------------------------------------
-# ソースリスト更新関数の定義
-#---------------------------------------
-update_source_list () {
-    rtmsite=`grep openrtm /etc/apt/sources.list`
-    if test "x$rtmsite" = "x" ; then
-	echo $msg4
-	echo $msg5
-	echo "  " $openrtm_repo
-	read -p $msg6 kick_shell
-
-	if test "x$kick_shell" = "xn" ; then
-	    echo $msg7
-	    exit 0
-	else
-	    echo $openrtm_repo >> /etc/apt/sources.list
-	fi
-    fi
-}
-
-#----------------------------------------
-# root かどうかをチェック
-#----------------------------------------
-check_root () {
-    if test ! `id -u` = 0 ; then
-	echo ""
-	echo $msg8
-	echo $msg7
-	echo ""
-	exit 1
-    fi
-}
-
-#----------------------------------------
-# パッケージインストール関数
-#----------------------------------------
-install_packages () {
-    for p in $*; do
-	echo $msg9 $p
-	apt-get install $p
-	echo $msg10
-	echo ""
-    done
-}
-
-#------------------------------------------------------------
-# リストを逆順にする
-#------------------------------------------------------------
-reverse () {
-    for i in $*; do
-	echo $i
-    done | sed '1!G;h;$!d'
-}
-
-#----------------------------------------
-# パッケージをアンインストールする
-#----------------------------------------
-uninstall_packages () {
-    for p in $*; do
-	echo $msg11 $p
-	aptitude remove $p
-	echo $msg10
-	echo ""
-    done
-}
-
-#---------------------------------------
-# メイン
-#---------------------------------------
-check_lang
-check_root
-if test "x$1" = "x-u" ; then
-    uninstall_packages `reverse $u_packages`
-else
-    create_srclist
-    update_source_list
-    apt-get update
-    install_packages $packages
-fi
-

Copied: trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_python_debian.sh (from rev 395, branches/RELENG_1_0/OpenRTM-aist-Python/installer/install_scripts/pkg_install_python_debian.sh)
===================================================================
--- trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_python_debian.sh	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_python_debian.sh	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,161 @@
+#!/bin/sh
+#
+# @file pkg_install_debian.sh
+# @brief OpenRTM-aist dependent packages install script for Debian-sarge
+# @author Noriaki Ando <n-ando at aist.go.jp>
+#         Shinji Kurihara
+#         Tetsuo Ando
+#         Harumi Miyamoto
+#
+
+#---------------------------------------
+# パッケージリスト
+#---------------------------------------
+omnipy="python python-omniorb2-omg python-omniorb2 omniidl4-python omniorb4-nameserver"
+openrtm="openrtm-aist-python openrtm-aist-python-example"
+packages="$omnipy $openrtm"
+u_packages="$omnipy $openrtm "
+
+#---------------------------------------
+# ロケールの言語確認
+#---------------------------------------
+check_lang()
+{
+lang="en"
+
+locale | grep ja_JP > /dev/null && lang="jp"
+
+if test "$lang" = "jp" ;then
+    msg1="ディストリビューションを確認してください。\nDebian以外のOSの可能性があります。"
+    msg2="コードネーム : "
+    msg3="このOSはサポートされておりません。"
+    msg4=" OpenRTM-aistのリポジトリが登録されていません。"
+    msg5="Source.listにOpenrRTM-aistのリポジトリ:"
+    msg6="を追加します。よろしいですか? (y/n) [y] "
+    msg7="中断します。"
+    msg8="ルートユーザーで実行してください。"
+    msg9="インストール中です..."
+    msg10="完了"
+    msg11="アンインストール中です"
+else
+    msg1="This distribution may not be debian/ubuntu."
+    msg2="The code name is : "
+    msg3="This OS is not supported."
+    msg4="No repository entry for OpenRTM-aist is configured in your system."
+    msg5="repository entry for OpenrRTM-aist: "
+    msg6="Do you want to add the repository entry for OpenrRTM-aist in source.list? (y/n) [y] "
+    msg7="Abort."
+    msg8="This script should be run as root."
+    msg9="Now installing: "
+    msg10="done."
+    msg11="Now uninstalling: "
+
+fi
+
+}
+
+#---------------------------------------
+# リポジトリサーバ
+#---------------------------------------
+create_srclist () {
+    cnames="sarge etch lenny"
+    for c in $cnames; do
+	if test -f "/etc/apt/sources.list"; then
+	    res=`grep $c /etc/apt/sources.list`
+	else
+	    echo $msg1
+	    exit
+	fi
+	if test ! "x$res" = "x" ; then
+	    code_name=$c
+	fi
+    done
+    if test ! "x$code_name" = "x"; then
+	echo $msg2 $code_name
+    else
+	echo $msg3
+	exit
+    fi
+    openrtm_repo="deb http://www.openrtm.org/pub/Linux/debian/ $code_name main"
+}
+
+#---------------------------------------
+# ソースリスト更新関数の定義
+#---------------------------------------
+update_source_list () {
+    rtmsite=`grep openrtm /etc/apt/sources.list`
+    if test "x$rtmsite" = "x" ; then
+	echo $msg4
+	echo $msg5
+	echo "  " $openrtm_repo
+	read -p $msg6 kick_shell
+
+	if test "x$kick_shell" = "xn" ; then
+	    echo $msg7
+	    exit 0
+	else
+	    echo $openrtm_repo >> /etc/apt/sources.list
+	fi
+    fi
+}
+
+#----------------------------------------
+# root かどうかをチェック
+#----------------------------------------
+check_root () {
+    if test ! `id -u` = 0 ; then
+	echo ""
+	echo $msg8
+	echo $msg7
+	echo ""
+	exit 1
+    fi
+}
+
+#----------------------------------------
+# パッケージインストール関数
+#----------------------------------------
+install_packages () {
+    for p in $*; do
+	echo $msg9 $p
+	apt-get install $p
+	echo $msg10
+	echo ""
+    done
+}
+
+#------------------------------------------------------------
+# リストを逆順にする
+#------------------------------------------------------------
+reverse () {
+    for i in $*; do
+	echo $i
+    done | sed '1!G;h;$!d'
+}
+
+#----------------------------------------
+# パッケージをアンインストールする
+#----------------------------------------
+uninstall_packages () {
+    for p in $*; do
+	echo $msg11 $p
+	aptitude remove $p
+	echo $msg10
+	echo ""
+    done
+}
+
+#---------------------------------------
+# メイン
+#---------------------------------------
+check_lang
+check_root
+if test "x$1" = "x-u" ; then
+    uninstall_packages `reverse $u_packages`
+else
+    create_srclist
+    update_source_list
+    apt-get update
+    install_packages $packages
+fi
+

Deleted: trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_python_fedora.sh
===================================================================
--- branches/RELENG_1_0/OpenRTM-aist-Python/installer/install_scripts/pkg_install_python_fedora.sh	2011-02-25 03:06:47 UTC (rev 395)
+++ trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_python_fedora.sh	2011-09-21 07:57:38 UTC (rev 479)
@@ -1,145 +0,0 @@
-#!/bin/sh
-#
-# @file pkg_install_fedora.sh
-# @brief OpenRTM-aist dependent packages install script for Fedora
-# @author Noriaki Ando <n-ando at aist.go.jp>
-#         Shinji Kurihara
-#         Tetsuo Ando
-#
-# このシェルスクリプトは、aceおよびomniORBのパッケージをインストールし、
-# fedoraの開発環境を構築します。
-#
-# $Id$
-#
-
-#---------------------------------------
-# パッケージリスト
-#---------------------------------------
-omnipy="python omniORB-servers omniORBpy omniORBpy-devel omniORBpy-standard"
-openrtm="OpenRTM-aist-Python OpenRTM-aist-Python-example"
-packages="$omnipy $openrtm"
-
-
-#----------------------------------------
-# root かどうかをチェック
-#----------------------------------------
-check_root () {
-    if test ! `id -u` = 0 ; then
-	echo ""
-	echo "This script should be run by root user."
-	echo "Abort."
-	echo ""
-	exit 1
-    fi
-}
-
-#---------------------------------------
-# インストール済パッケージリスト
-#---------------------------------------
-rpm_qa="/tmp/yum_list.txt"
-get_pkg_list () {
-    rpm -qa > $rpm_qa
-}
-clean_pkg_list () {
-    rm -f $rpm_qa
-}
-
-#---------------------------------------
-# リポジトリサイト設定ファイルを生成
-#---------------------------------------
-openrtm_repo () {
-cat <<EOF
-[openrtm]
-name=Fedora \$releasever - \$basearch
-failovermethod=priority
-baseurl=http://www.openrtm.org/pub/Linux/Fedora/releases/\$releasever/Fedora/\$basearch/os/Packages
-enabled=1
-gpgcheck=0
-gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora file:///etc/pki/rpm-gpg/RPM-GPG-KEY
-EOF
-} 
-create_repo() {
-    repo="/etc/yum.repos.d/openrtm.repo"
-    if test ! -f $repo ; then
-	echo "OpenRTM-aist のリポジトリが登録されていません。"
-	echo "OpenRTM-aist のリポジトリ: "
-	echo "  http://www.openrtm.org/pub/Linux/Fedora/"
-	read -p "を追加します。よろしいですか? (y/n) [y] " kick_shell
-
-	if test "x$kick_shell" = "xn" ; then
-	    echo "中断します。"
-	    exit 0
-	else
-	    openrtm_repo > /etc/yum.repos.d/openrtm.repo
-	fi
-    fi
-}
-
-#----------------------------------------
-# パッケージインストール関数
-#----------------------------------------
-install_packages () {
-    for p in $*; do
-	if test "x$p" = "x0.4.2" || test "x$p" = "x0.4.2" ; then
-	    :
-	else
-	    if echo "$p" | grep -q '=0.4.2' ; then
-		str=`echo "$p" |sed 's/=0.4.2//'`
-	    else 
-		str="$p"
-	    fi
-
-	    ins=`rpm -qa $str`
-
-	    if test "x$ins" = "x"; then
-		echo "Now installing: " $p
-		yum install $p
-		echo "done."
-		echo ""
-	    else  
-		if echo "$ins" |grep -q '0.4.2-0' ; then
-			yum install $p
-			echo "done." 
-			echo ""
-	       else 
- 		    echo $ins
-		    echo $str "is already installed."
-		    echo ""
-		fi
-	    fi
-	fi
-    done
-}
-
-
-#------------------------------------------------------------
-# リストを逆順にする
-#------------------------------------------------------------
-reverse () {
-    for i in $*; do
-	echo $i
-    done | sed '1!G;h;$!d'
-}
-
-#----------------------------------------
-# パッケージをアンインストールする
-#----------------------------------------
-uninstall_packages () {
-    for p in $*; do
-	echo "Now uninstalling: " $p
-	yum erase $p
-	echo "done."
-	echo ""
-    done
-}
-
-#---------------------------------------
-# メイン
-#---------------------------------------
-check_root
-if test "x$1" = "x-u" ; then
-    uninstall_packages `reverse $packages`
-else
-    create_repo
-    install_packages $packages
-fi

Copied: trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_python_fedora.sh (from rev 395, branches/RELENG_1_0/OpenRTM-aist-Python/installer/install_scripts/pkg_install_python_fedora.sh)
===================================================================
--- trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_python_fedora.sh	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_python_fedora.sh	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,145 @@
+#!/bin/sh
+#
+# @file pkg_install_fedora.sh
+# @brief OpenRTM-aist dependent packages install script for Fedora
+# @author Noriaki Ando <n-ando at aist.go.jp>
+#         Shinji Kurihara
+#         Tetsuo Ando
+#
+# このシェルスクリプトは、aceおよびomniORBのパッケージをインストールし、
+# fedoraの開発環境を構築します。
+#
+# $Id$
+#
+
+#---------------------------------------
+# パッケージリスト
+#---------------------------------------
+omnipy="python omniORB-servers omniORBpy omniORBpy-devel omniORBpy-standard"
+openrtm="OpenRTM-aist-Python OpenRTM-aist-Python-example"
+packages="$omnipy $openrtm"
+
+
+#----------------------------------------
+# root かどうかをチェック
+#----------------------------------------
+check_root () {
+    if test ! `id -u` = 0 ; then
+	echo ""
+	echo "This script should be run by root user."
+	echo "Abort."
+	echo ""
+	exit 1
+    fi
+}
+
+#---------------------------------------
+# インストール済パッケージリスト
+#---------------------------------------
+rpm_qa="/tmp/yum_list.txt"
+get_pkg_list () {
+    rpm -qa > $rpm_qa
+}
+clean_pkg_list () {
+    rm -f $rpm_qa
+}
+
+#---------------------------------------
+# リポジトリサイト設定ファイルを生成
+#---------------------------------------
+openrtm_repo () {
+cat <<EOF
+[openrtm]
+name=Fedora \$releasever - \$basearch
+failovermethod=priority
+baseurl=http://www.openrtm.org/pub/Linux/Fedora/releases/\$releasever/Fedora/\$basearch/os/Packages
+enabled=1
+gpgcheck=0
+gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora file:///etc/pki/rpm-gpg/RPM-GPG-KEY
+EOF
+} 
+create_repo() {
+    repo="/etc/yum.repos.d/openrtm.repo"
+    if test ! -f $repo ; then
+	echo "OpenRTM-aist のリポジトリが登録されていません。"
+	echo "OpenRTM-aist のリポジトリ: "
+	echo "  http://www.openrtm.org/pub/Linux/Fedora/"
+	read -p "を追加します。よろしいですか? (y/n) [y] " kick_shell
+
+	if test "x$kick_shell" = "xn" ; then
+	    echo "中断します。"
+	    exit 0
+	else
+	    openrtm_repo > /etc/yum.repos.d/openrtm.repo
+	fi
+    fi
+}
+
+#----------------------------------------
+# パッケージインストール関数
+#----------------------------------------
+install_packages () {
+    for p in $*; do
+	if test "x$p" = "x0.4.2" || test "x$p" = "x0.4.2" ; then
+	    :
+	else
+	    if echo "$p" | grep -q '=0.4.2' ; then
+		str=`echo "$p" |sed 's/=0.4.2//'`
+	    else 
+		str="$p"
+	    fi
+
+	    ins=`rpm -qa $str`
+
+	    if test "x$ins" = "x"; then
+		echo "Now installing: " $p
+		yum install $p
+		echo "done."
+		echo ""
+	    else  
+		if echo "$ins" |grep -q '0.4.2-0' ; then
+			yum install $p
+			echo "done." 
+			echo ""
+	       else 
+ 		    echo $ins
+		    echo $str "is already installed."
+		    echo ""
+		fi
+	    fi
+	fi
+    done
+}
+
+
+#------------------------------------------------------------
+# リストを逆順にする
+#------------------------------------------------------------
+reverse () {
+    for i in $*; do
+	echo $i
+    done | sed '1!G;h;$!d'
+}
+
+#----------------------------------------
+# パッケージをアンインストールする
+#----------------------------------------
+uninstall_packages () {
+    for p in $*; do
+	echo "Now uninstalling: " $p
+	yum erase $p
+	echo "done."
+	echo ""
+    done
+}
+
+#---------------------------------------
+# メイン
+#---------------------------------------
+check_root
+if test "x$1" = "x-u" ; then
+    uninstall_packages `reverse $packages`
+else
+    create_repo
+    install_packages $packages
+fi

Deleted: trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_python_ubuntu.sh
===================================================================
--- branches/RELENG_1_0/OpenRTM-aist-Python/installer/install_scripts/pkg_install_python_ubuntu.sh	2011-02-25 03:06:47 UTC (rev 395)
+++ trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_python_ubuntu.sh	2011-09-21 07:57:38 UTC (rev 479)
@@ -1,163 +0,0 @@
-#!/bin/sh
-#
-# @file pkg_install_ubuntu.sh
-# @brief OpenRTM-aist dependent packages install script for Debian-sarge
-# @author Noriaki Ando <n-ando at aist.go.jp>
-#         Shinji Kurihara
-#         Tetsuo Ando
-#         Harumi Miyamoto
-#
-
-#---------------------------------------
-# パッケージリスト
-#---------------------------------------
-omnipy="python python-omniorb2-omg omniidl4-python omniorb4-nameserver"
-openrtm="openrtm-aist-python openrtm-aist-python-example"
-packages="$omnipy $openrtm"
-u_packages="$omnipy $openrtm "
-
-#---------------------------------------
-# ロケールの言語確認
-#---------------------------------------
-check_lang()
-{
-lang="en"
-
-locale | grep ja_JP > /dev/null && lang="jp"
-
-if test "$lang" = "jp" ;then
-    msg1="ディストリビューションを確認してください。\nDebianかUbuntu以外のOSの可能性があります。"
-    msg2="コードネーム :"
-    msg3="このOSはサポートしておりません。"
-    msg4="OpenRTM-aist のリポジトリが登録されていません。"
-    msg5="Source.list に OpenRTM-aist のリポジトリ: "
-    msg6="を追加します。よろしいですか?(y/n)[y] "
-    msg7="中断します。"
-    msg8="ルートユーザーで実行してください。"
-    msg9="インストール中です..."
-    msg10="完了"
-    msg11="アンインストール中です."
-else
-    msg1="This distribution may not be debian/ubuntu."
-    msg2="The code name is : "
-    msg3="This OS is not supported."
-    msg4="No repository entry for OpenRTM-aist is configured in your system."
-    msg5="repository entry for OpenrRTM-aist: "
-    msg6="Do you want to add new repository entry for OpenrRTM-aist in source.list? (y/n) [y] "
-    msg7="Abort."
-    msg8="This script should be run as root."
-    msg9="Now installing: "
-    msg10="done."
-    msg11="Now uninstalling: "
-fi
-
-}
-
-
-#---------------------------------------
-# リポジトリサーバ
-#---------------------------------------
-create_srclist () {
-    codename=`sed -n /DISTRIB_CODENAME=/p /etc/lsb-release`
-    cnames=`echo "$codename" | sed 's/DISTRIB_CODENAME=//'`
-    #cnames="sarge edgy feisty gutsy hardy intrepid"
-    for c in $cnames; do
-	if test -f "/etc/apt/sources.list"; then
-	    res=`grep $c /etc/apt/sources.list`
-	else
-	    echo $msg1
-	    exit
-	fi
-	if test ! "x$res" = "x" ; then
-	    code_name=$c
-	fi
-    done
-    if test ! "x$code_name" = "x"; then
-	echo $msg2 $code_name
-    else
-	echo $msg3
-	exit
-    fi
-    openrtm_repo="deb http://www.openrtm.org/pub/Linux/ubuntu/ $code_name main"
-}
-
-#---------------------------------------
-# ソースリスト更新関数の定義
-#---------------------------------------
-update_source_list () {
-    rtmsite=`grep openrtm /etc/apt/sources.list`
-    if test "x$rtmsite" = "x" ; then
-	echo $msg4
-	echo $msg5
-	echo "  " $openrtm_repo
-	read -p $msg6 kick_shell
-
-	if test "x$kick_shell" = "xn" ; then
-	    echo $msg7
-	    exit 0
-	else
-	    echo $openrtm_repo >> /etc/apt/sources.list
-	fi
-    fi
-}
-
-#----------------------------------------
-# root かどうかをチェック
-#----------------------------------------
-check_root () {
-    if test ! `id -u` = 0 ; then
-	echo ""
-	echo $msg8
-	echo $msg7
-	echo ""
-	exit 1
-    fi
-}
-
-#----------------------------------------
-# パッケージインストール関数
-#----------------------------------------
-install_packages () {
-    for p in $*; do
-	echo $msg9 $p
-	apt-get install $p
-	echo $msg10
-	echo ""
-    done
-}
-
-#------------------------------------------------------------
-# リストを逆順にする
-#------------------------------------------------------------
-reverse () {
-    for i in $*; do
-	echo $i
-    done | sed '1!G;h;$!d'
-}
-
-#----------------------------------------
-# パッケージをアンインストールする
-#----------------------------------------
-uninstall_packages () {
-    for p in $*; do
-	echo $msg11 $p
-	aptitude remove $p
-	echo $msg10
-	echo ""
-    done
-}
-
-#---------------------------------------
-# メイン
-#---------------------------------------
-check_lang
-check_root
-if test "x$1" = "x-u" ; then
-    uninstall_packages `reverse $u_packages`
-else
-    create_srclist
-    update_source_list
-    apt-get update
-    install_packages $packages
-fi
-

Copied: trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_python_ubuntu.sh (from rev 395, branches/RELENG_1_0/OpenRTM-aist-Python/installer/install_scripts/pkg_install_python_ubuntu.sh)
===================================================================
--- trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_python_ubuntu.sh	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_python_ubuntu.sh	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,163 @@
+#!/bin/sh
+#
+# @file pkg_install_ubuntu.sh
+# @brief OpenRTM-aist dependent packages install script for Debian-sarge
+# @author Noriaki Ando <n-ando at aist.go.jp>
+#         Shinji Kurihara
+#         Tetsuo Ando
+#         Harumi Miyamoto
+#
+
+#---------------------------------------
+# パッケージリスト
+#---------------------------------------
+omnipy="python python-omniorb2-omg omniidl4-python omniorb4-nameserver"
+openrtm="openrtm-aist-python openrtm-aist-python-example"
+packages="$omnipy $openrtm"
+u_packages="$omnipy $openrtm "
+
+#---------------------------------------
+# ロケールの言語確認
+#---------------------------------------
+check_lang()
+{
+lang="en"
+
+locale | grep ja_JP > /dev/null && lang="jp"
+
+if test "$lang" = "jp" ;then
+    msg1="ディストリビューションを確認してください。\nDebianかUbuntu以外のOSの可能性があります。"
+    msg2="コードネーム :"
+    msg3="このOSはサポートしておりません。"
+    msg4="OpenRTM-aist のリポジトリが登録されていません。"
+    msg5="Source.list に OpenRTM-aist のリポジトリ: "
+    msg6="を追加します。よろしいですか?(y/n)[y] "
+    msg7="中断します。"
+    msg8="ルートユーザーで実行してください。"
+    msg9="インストール中です..."
+    msg10="完了"
+    msg11="アンインストール中です."
+else
+    msg1="This distribution may not be debian/ubuntu."
+    msg2="The code name is : "
+    msg3="This OS is not supported."
+    msg4="No repository entry for OpenRTM-aist is configured in your system."
+    msg5="repository entry for OpenrRTM-aist: "
+    msg6="Do you want to add new repository entry for OpenrRTM-aist in source.list? (y/n) [y] "
+    msg7="Abort."
+    msg8="This script should be run as root."
+    msg9="Now installing: "
+    msg10="done."
+    msg11="Now uninstalling: "
+fi
+
+}
+
+
+#---------------------------------------
+# リポジトリサーバ
+#---------------------------------------
+create_srclist () {
+    codename=`sed -n /DISTRIB_CODENAME=/p /etc/lsb-release`
+    cnames=`echo "$codename" | sed 's/DISTRIB_CODENAME=//'`
+    #cnames="sarge edgy feisty gutsy hardy intrepid"
+    for c in $cnames; do
+	if test -f "/etc/apt/sources.list"; then
+	    res=`grep $c /etc/apt/sources.list`
+	else
+	    echo $msg1
+	    exit
+	fi
+	if test ! "x$res" = "x" ; then
+	    code_name=$c
+	fi
+    done
+    if test ! "x$code_name" = "x"; then
+	echo $msg2 $code_name
+    else
+	echo $msg3
+	exit
+    fi
+    openrtm_repo="deb http://www.openrtm.org/pub/Linux/ubuntu/ $code_name main"
+}
+
+#---------------------------------------
+# ソースリスト更新関数の定義
+#---------------------------------------
+update_source_list () {
+    rtmsite=`grep openrtm /etc/apt/sources.list`
+    if test "x$rtmsite" = "x" ; then
+	echo $msg4
+	echo $msg5
+	echo "  " $openrtm_repo
+	read -p $msg6 kick_shell
+
+	if test "x$kick_shell" = "xn" ; then
+	    echo $msg7
+	    exit 0
+	else
+	    echo $openrtm_repo >> /etc/apt/sources.list
+	fi
+    fi
+}
+
+#----------------------------------------
+# root かどうかをチェック
+#----------------------------------------
+check_root () {
+    if test ! `id -u` = 0 ; then
+	echo ""
+	echo $msg8
+	echo $msg7
+	echo ""
+	exit 1
+    fi
+}
+
+#----------------------------------------
+# パッケージインストール関数
+#----------------------------------------
+install_packages () {
+    for p in $*; do
+	echo $msg9 $p
+	apt-get install $p
+	echo $msg10
+	echo ""
+    done
+}
+
+#------------------------------------------------------------
+# リストを逆順にする
+#------------------------------------------------------------
+reverse () {
+    for i in $*; do
+	echo $i
+    done | sed '1!G;h;$!d'
+}
+
+#----------------------------------------
+# パッケージをアンインストールする
+#----------------------------------------
+uninstall_packages () {
+    for p in $*; do
+	echo $msg11 $p
+	aptitude remove $p
+	echo $msg10
+	echo ""
+    done
+}
+
+#---------------------------------------
+# メイン
+#---------------------------------------
+check_lang
+check_root
+if test "x$1" = "x-u" ; then
+    uninstall_packages `reverse $u_packages`
+else
+    create_srclist
+    update_source_list
+    apt-get update
+    install_packages $packages
+fi
+

Deleted: trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_python_vine.sh
===================================================================
--- branches/RELENG_1_0/OpenRTM-aist-Python/installer/install_scripts/pkg_install_python_vine.sh	2011-02-25 03:06:47 UTC (rev 395)
+++ trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_python_vine.sh	2011-09-21 07:57:38 UTC (rev 479)
@@ -1,136 +0,0 @@
-#!/bin/sh
-#
-# @file pkg_install_vine.sh
-# @brief OpenRTM-aist dependent packages installation script for Vine Linux
-# @author Noriaki Ando <n-ando at aist.go.jp>
-#         Shinji Kurihara
-#         Tetsuo Ando
-#
-# このシェルスクリプトは、aceおよびomniORBのパッケージをインストールし、
-# Vine Linuxの開発環境を構築します。
-#
-#---------------------------------------
-# Vineバージョン特定
-#---------------------------------------
-vinever=`cat /etc/vine-release | sed 's/.*\([0-9].[0-9]\).*/\1/'`
-
-#---------------------------------------
-# リポジトリサーバ
-#---------------------------------------
-openrtm_repo="rpm     http://www.openrtm.org/pub/Linux/Vine/apt $vinever/\$(ARCH) main"
-
-#---------------------------------------
-# パッケージリスト
-#---------------------------------------
-omnipy="python omniORB-servers omniORBpy omniORBpy-devel omniORBpy-standard"
-openrtm="OpenRTM-aist-Python OpenRTM-aist-Python-example"
-packages="$omnipy $openrtm"
-
-
-
-
-#----------------------------------------
-# root かどうかをチェック
-#----------------------------------------
-check_root () {
-    if test ! `id -u` = 0 ; then
-	echo ""
-	echo "This script should be run by root user."
-	echo "Abort."
-	echo ""
-	exit 1
-    fi
-}
-
-#---------------------------------------
-# ソースリスト更新関数の定義
-#---------------------------------------
-update_source_list () {
-    rtmsite=`grep openrtm /etc/apt/sources.list`
-    if test "x$rtmsite" = "x" ; then
-	echo "OpenRTM-aist のリポジトリが登録されていません。"
-	echo "Source.list に OpenRTM-aist のリポジトリ: "
-	echo "  " $openrtm_repo
-	read -p "を追加します。よろしいですか? (y/n) [y] " kick_shell
-
-	if test "x$kick_shell" = "xn" ; then
-	    echo "中断します。"
-	    exit 0
-	else
-	    echo $openrtm_repo >> /etc/apt/sources.list
-	fi
-    fi
-}
-
-#----------------------------------------
-# パッケージをインストールする
-#----------------------------------------
-install_packages () {
-    for p in $*; do
-	if test "x$p" = "x0.4.2" ; then
-	    :
-	else
-	    if echo "$p" | grep -q '=0.4.2' ; then
-		str=`echo "$p" |sed 's/=0.4.2//'`
-	    else 
-		str="$p"
-	    fi
-
-	    ins=`rpm -qa $str`
-
-	    if test "x$ins" = "x"; then
-		echo "Now installing: " $p
-		apt-get install $p
-		echo "done."
-		echo ""
-	    else  
-		if echo "$ins" |grep -q '0.4.2-0' ; then
-			apt-get install $p
-			echo "done." 
-			echo ""
-	       else 
- 		    echo $ins
-		    echo $str "is already installed."
-		    echo ""
-		fi
-	    fi
-	fi
-    done
-}
-
-
-#------------------------------------------------------------
-# リストを逆順にする
-#------------------------------------------------------------
-reverse () {
-    for i in $*; do
-	echo $i
-    done | sed '1!G;h;$!d'
-}
-
-#----------------------------------------
-# パッケージをアンインストールする
-#----------------------------------------
-uninstall_packages () {
-    for p in $*; do
-	echo "Now uninstalling: " $p
-	rpm -e $p
-	echo "done."
-	echo ""
-    done
-}
-
-
-
-#---------------------------------------
-# メイン
-#---------------------------------------
-check_root
-if test "x$1" = "x-u" ; then
-    uninstall_packages `reverse $packages`
-else
-    update_source_list
-    apt-get update
-    install_packages $packages
-fi
-

Copied: trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_python_vine.sh (from rev 395, branches/RELENG_1_0/OpenRTM-aist-Python/installer/install_scripts/pkg_install_python_vine.sh)
===================================================================
--- trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_python_vine.sh	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_python_vine.sh	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,136 @@
+#!/bin/sh
+#
+# @file pkg_install_vine.sh
+# @brief OpenRTM-aist dependent packages installation script for Vine Linux
+# @author Noriaki Ando <n-ando at aist.go.jp>
+#         Shinji Kurihara
+#         Tetsuo Ando
+#
+# このシェルスクリプトは、aceおよびomniORBのパッケージをインストールし、
+# Vine Linuxの開発環境を構築します。
+#
+#---------------------------------------
+# Vineバージョン特定
+#---------------------------------------
+vinever=`cat /etc/vine-release | sed 's/.*\([0-9].[0-9]\).*/\1/'`
+
+#---------------------------------------
+# リポジトリサーバ
+#---------------------------------------
+openrtm_repo="rpm     http://www.openrtm.org/pub/Linux/Vine/apt $vinever/\$(ARCH) main"
+
+#---------------------------------------
+# パッケージリスト
+#---------------------------------------
+omnipy="python omniORB-servers omniORBpy omniORBpy-devel omniORBpy-standard"
+openrtm="OpenRTM-aist-Python OpenRTM-aist-Python-example"
+packages="$omnipy $openrtm"
+
+
+
+
+#----------------------------------------
+# root かどうかをチェック
+#----------------------------------------
+check_root () {
+    if test ! `id -u` = 0 ; then
+	echo ""
+	echo "This script should be run by root user."
+	echo "Abort."
+	echo ""
+	exit 1
+    fi
+}
+
+#---------------------------------------
+# ソースリスト更新関数の定義
+#---------------------------------------
+update_source_list () {
+    rtmsite=`grep openrtm /etc/apt/sources.list`
+    if test "x$rtmsite" = "x" ; then
+	echo "OpenRTM-aist のリポジトリが登録されていません。"
+	echo "Source.list に OpenRTM-aist のリポジトリ: "
+	echo "  " $openrtm_repo
+	read -p "を追加します。よろしいですか? (y/n) [y] " kick_shell
+
+	if test "x$kick_shell" = "xn" ; then
+	    echo "中断します。"
+	    exit 0
+	else
+	    echo $openrtm_repo >> /etc/apt/sources.list
+	fi
+    fi
+}
+
+#----------------------------------------
+# パッケージをインストールする
+#----------------------------------------
+install_packages () {
+    for p in $*; do
+	if test "x$p" = "x0.4.2" ; then
+	    :
+	else
+	    if echo "$p" | grep -q '=0.4.2' ; then
+		str=`echo "$p" |sed 's/=0.4.2//'`
+	    else 
+		str="$p"
+	    fi
+
+	    ins=`rpm -qa $str`
+
+	    if test "x$ins" = "x"; then
+		echo "Now installing: " $p
+		apt-get install $p
+		echo "done."
+		echo ""
+	    else  
+		if echo "$ins" |grep -q '0.4.2-0' ; then
+			apt-get install $p
+			echo "done." 
+			echo ""
+	       else 
+ 		    echo $ins
+		    echo $str "is already installed."
+		    echo ""
+		fi
+	    fi
+	fi
+    done
+}
+
+
+#------------------------------------------------------------
+# リストを逆順にする
+#------------------------------------------------------------
+reverse () {
+    for i in $*; do
+	echo $i
+    done | sed '1!G;h;$!d'
+}
+
+#----------------------------------------
+# パッケージをアンインストールする
+#----------------------------------------
+uninstall_packages () {
+    for p in $*; do
+	echo "Now uninstalling: " $p
+	rpm -e $p
+	echo "done."
+	echo ""
+    done
+}
+
+
+
+#---------------------------------------
+# メイン
+#---------------------------------------
+check_root
+if test "x$1" = "x-u" ; then
+    uninstall_packages `reverse $packages`
+else
+    update_source_list
+    apt-get update
+    install_packages $packages
+fi
+

Deleted: trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_ubuntu.sh
===================================================================
--- branches/RELENG_1_0/OpenRTM-aist-Python/installer/install_scripts/pkg_install_ubuntu.sh	2011-02-25 03:06:47 UTC (rev 395)
+++ trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_ubuntu.sh	2011-09-21 07:57:38 UTC (rev 479)
@@ -1,164 +0,0 @@
-#!/bin/sh
-#
-# @file pkg_install_ubuntu.sh
-# @brief OpenRTM-aist dependent packages install script for Debian-sarge
-# @author Noriaki Ando <n-ando at aist.go.jp>
-#         Shinji Kurihara
-#         Tetsuo Ando
-#         Harumi Miyamoto
-#
-
-#---------------------------------------
-# パッケージリスト
-#---------------------------------------
-omni="libomniorb4 libomniorb4-dev omniidl4 omniorb4-nameserver"
-openrtm="openrtm-aist openrtm-aist-doc openrtm-aist-dev openrtm-aist-example python-yaml"
-devel="gcc g++ make uuid-dev"
-packages="$devel $omni $openrtm"
-u_packages="$omni $openrtm "
-
-#---------------------------------------
-# ロケールの言語確認
-#---------------------------------------
-check_lang()
-{
-lang="en"
-
-locale | grep ja_JP > /dev/null && lang="jp"
-
-if test "$lang" = "jp" ;then
-    msg1="ディストリビューションを確認してください。\nDebianかUbuntu以外のOSの可能性があります。"
-    msg2="コードネーム :"
-    msg3="このOSはサポートしておりません。"
-    msg4="OpenRTM-aist のリポジトリが登録されていません。"
-    msg5="Source.list に OpenRTM-aist のリポジトリ: "
-    msg6="を追加します。よろしいですか?(y/n)[y] "
-    msg7="中断します。"
-    msg8="ルートユーザーで実行してください。"
-    msg9="インストール中です..."
-    msg10="完了"
-    msg11="アンインストール中です."
-else
-    msg1="This distribution may not be debian/ubuntu."
-    msg2="The code name is : "
-    msg3="This OS is not supported."
-    msg4="No repository entry for OpenRTM-aist is configured in your system."
-    msg5="repository entry for OpenrRTM-aist: "
-    msg6="Do you want to add new repository entry for OpenrRTM-aist in source.list? (y/n) [y] "
-    msg7="Abort."
-    msg8="This script should be run as root."
-    msg9="Now installing: "
-    msg10="done."
-    msg11="Now uninstalling: "
-fi
-
-}
-
-
-#---------------------------------------
-# リポジトリサーバ
-#---------------------------------------
-create_srclist () {
-    codename=`sed -n /DISTRIB_CODENAME=/p /etc/lsb-release`
-    cnames=`echo "$codename" | sed 's/DISTRIB_CODENAME=//'`
-    #cnames="sarge edgy feisty gutsy hardy intrepid"
-    for c in $cnames; do
-	if test -f "/etc/apt/sources.list"; then
-	    res=`grep $c /etc/apt/sources.list`
-	else
-	    echo $msg1
-	    exit
-	fi
-	if test ! "x$res" = "x" ; then
-	    code_name=$c
-	fi
-    done
-    if test ! "x$code_name" = "x"; then
-	echo $msg2 $code_name
-    else
-	echo $msg3
-	exit
-    fi
-    openrtm_repo="deb http://www.openrtm.org/pub/Linux/ubuntu/ $code_name main"
-}
-
-#---------------------------------------
-# ソースリスト更新関数の定義
-#---------------------------------------
-update_source_list () {
-    rtmsite=`grep openrtm /etc/apt/sources.list`
-    if test "x$rtmsite" = "x" ; then
-	echo $msg4
-	echo $msg5
-	echo "  " $openrtm_repo
-	read -p $msg6 kick_shell
-
-	if test "x$kick_shell" = "xn" ; then
-	    echo $msg7
-	    exit 0
-	else
-	    echo $openrtm_repo >> /etc/apt/sources.list
-	fi
-    fi
-}
-
-#----------------------------------------
-# root かどうかをチェック
-#----------------------------------------
-check_root () {
-    if test ! `id -u` = 0 ; then
-	echo ""
-	echo $msg8
-	echo $msg7
-	echo ""
-	exit 1
-    fi
-}
-
-#----------------------------------------
-# パッケージインストール関数
-#----------------------------------------
-install_packages () {
-    for p in $*; do
-	echo $msg9 $p
-	apt-get install $p
-	echo $msg10
-	echo ""
-    done
-}
-
-#------------------------------------------------------------
-# リストを逆順にする
-#------------------------------------------------------------
-reverse () {
-    for i in $*; do
-	echo $i
-    done | sed '1!G;h;$!d'
-}
-
-#----------------------------------------
-# パッケージをアンインストールする
-#----------------------------------------
-uninstall_packages () {
-    for p in $*; do
-	echo $msg11 $p
-	aptitude remove $p
-	echo $msg10
-	echo ""
-    done
-}
-
-#---------------------------------------
-# メイン
-#---------------------------------------
-check_lang
-check_root
-if test "x$1" = "x-u" ; then
-    uninstall_packages `reverse $u_packages`
-else
-    create_srclist
-    update_source_list
-    apt-get update
-    install_packages $packages
-fi
-

Copied: trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_ubuntu.sh (from rev 395, branches/RELENG_1_0/OpenRTM-aist-Python/installer/install_scripts/pkg_install_ubuntu.sh)
===================================================================
--- trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_ubuntu.sh	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_ubuntu.sh	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,164 @@
+#!/bin/sh
+#
+# @file pkg_install_ubuntu.sh
+# @brief OpenRTM-aist dependent packages install script for Debian-sarge
+# @author Noriaki Ando <n-ando at aist.go.jp>
+#         Shinji Kurihara
+#         Tetsuo Ando
+#         Harumi Miyamoto
+#
+
+#---------------------------------------
+# パッケージリスト
+#---------------------------------------
+omni="libomniorb4 libomniorb4-dev omniidl4 omniorb4-nameserver"
+openrtm="openrtm-aist openrtm-aist-doc openrtm-aist-dev openrtm-aist-example python-yaml"
+devel="gcc g++ make uuid-dev"
+packages="$devel $omni $openrtm"
+u_packages="$omni $openrtm "
+
+#---------------------------------------
+# ロケールの言語確認
+#---------------------------------------
+check_lang()
+{
+lang="en"
+
+locale | grep ja_JP > /dev/null && lang="jp"
+
+if test "$lang" = "jp" ;then
+    msg1="ディストリビューションを確認してください。\nDebianかUbuntu以外のOSの可能性があります。"
+    msg2="コードネーム :"
+    msg3="このOSはサポートしておりません。"
+    msg4="OpenRTM-aist のリポジトリが登録されていません。"
+    msg5="Source.list に OpenRTM-aist のリポジトリ: "
+    msg6="を追加します。よろしいですか?(y/n)[y] "
+    msg7="中断します。"
+    msg8="ルートユーザーで実行してください。"
+    msg9="インストール中です..."
+    msg10="完了"
+    msg11="アンインストール中です."
+else
+    msg1="This distribution may not be debian/ubuntu."
+    msg2="The code name is : "
+    msg3="This OS is not supported."
+    msg4="No repository entry for OpenRTM-aist is configured in your system."
+    msg5="repository entry for OpenrRTM-aist: "
+    msg6="Do you want to add new repository entry for OpenrRTM-aist in source.list? (y/n) [y] "
+    msg7="Abort."
+    msg8="This script should be run as root."
+    msg9="Now installing: "
+    msg10="done."
+    msg11="Now uninstalling: "
+fi
+
+}
+
+
+#---------------------------------------
+# リポジトリサーバ
+#---------------------------------------
+create_srclist () {
+    codename=`sed -n /DISTRIB_CODENAME=/p /etc/lsb-release`
+    cnames=`echo "$codename" | sed 's/DISTRIB_CODENAME=//'`
+    #cnames="sarge edgy feisty gutsy hardy intrepid"
+    for c in $cnames; do
+	if test -f "/etc/apt/sources.list"; then
+	    res=`grep $c /etc/apt/sources.list`
+	else
+	    echo $msg1
+	    exit
+	fi
+	if test ! "x$res" = "x" ; then
+	    code_name=$c
+	fi
+    done
+    if test ! "x$code_name" = "x"; then
+	echo $msg2 $code_name
+    else
+	echo $msg3
+	exit
+    fi
+    openrtm_repo="deb http://www.openrtm.org/pub/Linux/ubuntu/ $code_name main"
+}
+
+#---------------------------------------
+# ソースリスト更新関数の定義
+#---------------------------------------
+update_source_list () {
+    rtmsite=`grep openrtm /etc/apt/sources.list`
+    if test "x$rtmsite" = "x" ; then
+	echo $msg4
+	echo $msg5
+	echo "  " $openrtm_repo
+	read -p $msg6 kick_shell
+
+	if test "x$kick_shell" = "xn" ; then
+	    echo $msg7
+	    exit 0
+	else
+	    echo $openrtm_repo >> /etc/apt/sources.list
+	fi
+    fi
+}
+
+#----------------------------------------
+# root かどうかをチェック
+#----------------------------------------
+check_root () {
+    if test ! `id -u` = 0 ; then
+	echo ""
+	echo $msg8
+	echo $msg7
+	echo ""
+	exit 1
+    fi
+}
+
+#----------------------------------------
+# パッケージインストール関数
+#----------------------------------------
+install_packages () {
+    for p in $*; do
+	echo $msg9 $p
+	apt-get install $p
+	echo $msg10
+	echo ""
+    done
+}
+
+#------------------------------------------------------------
+# リストを逆順にする
+#------------------------------------------------------------
+reverse () {
+    for i in $*; do
+	echo $i
+    done | sed '1!G;h;$!d'
+}
+
+#----------------------------------------
+# パッケージをアンインストールする
+#----------------------------------------
+uninstall_packages () {
+    for p in $*; do
+	echo $msg11 $p
+	aptitude remove $p
+	echo $msg10
+	echo ""
+    done
+}
+
+#---------------------------------------
+# メイン
+#---------------------------------------
+check_lang
+check_root
+if test "x$1" = "x-u" ; then
+    uninstall_packages `reverse $u_packages`
+else
+    create_srclist
+    update_source_list
+    apt-get update
+    install_packages $packages
+fi
+

Deleted: trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_vine.sh
===================================================================
--- branches/RELENG_1_0/OpenRTM-aist-Python/installer/install_scripts/pkg_install_vine.sh	2011-02-25 03:06:47 UTC (rev 395)
+++ trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_vine.sh	2011-09-21 07:57:38 UTC (rev 479)
@@ -1,137 +0,0 @@
-#!/bin/sh
-#
-# @file pkg_install_vine.sh
-# @brief OpenRTM-aist dependent packages installation script for Vine Linux
-# @author Noriaki Ando <n-ando at aist.go.jp>
-#         Shinji Kurihara
-#         Tetsuo Ando
-#
-# このシェルスクリプトは、aceおよびomniORBのパッケージをインストールし、
-# Vine Linuxの開発環境を構築します。
-#
-#---------------------------------------
-# Vineバージョン特定
-#---------------------------------------
-vinever=`cat /etc/vine-release | sed 's/.*\([0-9].[0-9]\).*/\1/'`
-
-#---------------------------------------
-# リポジトリサーバ
-#---------------------------------------
-openrtm_repo="rpm     http://www.openrtm.org/pub/Linux/Vine/apt $vinever/\$(ARCH) main"
-
-#---------------------------------------
-# パッケージリスト
-#---------------------------------------
-omni="omniORB omniORB-devel omniORB-servers omniORB-doc"
-openrtm="OpenRTM-aist OpenRTM-aist-devel OpenRTM-aist-doc OpenRTM-aist-example PyYAML"
-libuuid="e2fsprogs e2fsprogs-devel"
-packages="$libuuid $omni $openrtm"
-
-
-
-
-#----------------------------------------
-# root かどうかをチェック
-#----------------------------------------
-check_root () {
-    if test ! `id -u` = 0 ; then
-	echo ""
-	echo "This script should be run by root user."
-	echo "Abort."
-	echo ""
-	exit 1
-    fi
-}
-
-#---------------------------------------
-# ソースリスト更新関数の定義
-#---------------------------------------
-update_source_list () {
-    rtmsite=`grep openrtm /etc/apt/sources.list`
-    if test "x$rtmsite" = "x" ; then
-	echo "OpenRTM-aist のリポジトリが登録されていません。"
-	echo "Source.list に OpenRTM-aist のリポジトリ: "
-	echo "  " $openrtm_repo
-	read -p "を追加します。よろしいですか? (y/n) [y] " kick_shell
-
-	if test "x$kick_shell" = "xn" ; then
-	    echo "中断します。"
-	    exit 0
-	else
-	    echo $openrtm_repo >> /etc/apt/sources.list
-	fi
-    fi
-}
-
-#----------------------------------------
-# パッケージをインストールする
-#----------------------------------------
-install_packages () {
-    for p in $*; do
-	if test "x$p" = "x0.4.2" ; then
-	    :
-	else
-	    if echo "$p" | grep -q '=0.4.2' ; then
-		str=`echo "$p" |sed 's/=0.4.2//'`
-	    else 
-		str="$p"
-	    fi
-
-	    ins=`rpm -qa $str`
-
-	    if test "x$ins" = "x"; then
-		echo "Now installing: " $p
-		apt-get install $p
-		echo "done."
-		echo ""
-	    else  
-		if echo "$ins" |grep -q '0.4.2-0' ; then
-			apt-get install $p
-			echo "done." 
-			echo ""
-	       else 
- 		    echo $ins
-		    echo $str "is already installed."
-		    echo ""
-		fi
-	    fi
-	fi
-    done
-}
-
-
-#------------------------------------------------------------
-# リストを逆順にする
-#------------------------------------------------------------
-reverse () {
-    for i in $*; do
-	echo $i
-    done | sed '1!G;h;$!d'
-}
-
-#----------------------------------------
-# パッケージをアンインストールする
-#----------------------------------------
-uninstall_packages () {
-    for p in $*; do
-	echo "Now uninstalling: " $p
-	rpm -e $p
-	echo "done."
-	echo ""
-    done
-}
-
-
-
-#---------------------------------------
-# メイン
-#---------------------------------------
-check_root
-if test "x$1" = "x-u" ; then
-    uninstall_packages `reverse $packages`
-else
-    update_source_list
-    apt-get update
-    install_packages $packages
-fi
-

Copied: trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_vine.sh (from rev 395, branches/RELENG_1_0/OpenRTM-aist-Python/installer/install_scripts/pkg_install_vine.sh)
===================================================================
--- trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_vine.sh	                        (rev 0)
+++ trunk/OpenRTM-aist-Python/installer/install_scripts/pkg_install_vine.sh	2011-09-21 07:57:38 UTC (rev 479)
@@ -0,0 +1,137 @@
+#!/bin/sh
+#
+# @file pkg_install_vine.sh
+# @brief OpenRTM-aist dependent packages installation script for Vine Linux
+# @author Noriaki Ando <n-ando at aist.go.jp>
+#         Shinji Kurihara
+#         Tetsuo Ando
+#
+# このシェルスクリプトは、aceおよびomniORBのパッケージをインストールし、
+# Vine Linuxの開発環境を構築します。
+#
+#---------------------------------------
+# Vineバージョン特定
+#---------------------------------------
+vinever=`cat /etc/vine-release | sed 's/.*\([0-9].[0-9]\).*/\1/'`
+
+#---------------------------------------
+# リポジトリサーバ
+#---------------------------------------
+openrtm_repo="rpm     http://www.openrtm.org/pub/Linux/Vine/apt $vinever/\$(ARCH) main"
+
+#---------------------------------------
+# パッケージリスト
+#---------------------------------------
+omni="omniORB omniORB-devel omniORB-servers omniORB-doc"
+openrtm="OpenRTM-aist OpenRTM-aist-devel OpenRTM-aist-doc OpenRTM-aist-example PyYAML"
+libuuid="e2fsprogs e2fsprogs-devel"
+packages="$libuuid $omni $openrtm"
+
+
+
+
+#----------------------------------------
+# root かどうかをチェック
+#----------------------------------------
+check_root () {
+    if test ! `id -u` = 0 ; then
+	echo ""
+	echo "This script should be run by root user."
+	echo "Abort."
+	echo ""
+	exit 1
+    fi
+}
+
+#---------------------------------------
+# ソースリスト更新関数の定義
+#---------------------------------------
+update_source_list () {
+    rtmsite=`grep openrtm /etc/apt/sources.list`
+    if test "x$rtmsite" = "x" ; then
+	echo "OpenRTM-aist のリポジトリが登録されていません。"
+	echo "Source.list に OpenRTM-aist のリポジトリ: "
+	echo "  " $openrtm_repo
+	read -p "を追加します。よろしいですか? (y/n) [y] " kick_shell
+
+	if test "x$kick_shell" = "xn" ; then
+	    echo "中断します。"
+	    exit 0
+	else
+	    echo $openrtm_repo >> /etc/apt/sources.list
+	fi
+    fi
+}
+
+#----------------------------------------
+# パッケージをインストールする
+#----------------------------------------
+install_packages () {
+    for p in $*; do
+	if test "x$p" = "x0.4.2" ; then
+	    :
+	else
+	    if echo "$p" | grep -q '=0.4.2' ; then
+		str=`echo "$p" |sed 's/=0.4.2//'`
+	    else 
+		str="$p"
+	    fi
+
+	    ins=`rpm -qa $str`
+
+	    if test "x$ins" = "x"; then
+		echo "Now installing: " $p
+		apt-get install $p
+		echo "done."
+		echo ""
+	    else  
+		if echo "$ins" |grep -q '0.4.2-0' ; then
+			apt-get install $p
+			echo "done." 
+			echo ""
+	       else 
+ 		    echo $ins
+		    echo $str "is already installed."
+		    echo ""
+		fi
+	    fi
+	fi
+    done
+}
+
+
+#------------------------------------------------------------
+# リストを逆順にする
+#------------------------------------------------------------
+reverse () {
+    for i in $*; do
+	echo $i
+    done | sed '1!G;h;$!d'
+}
+
+#----------------------------------------
+# パッケージをアンインストールする
+#----------------------------------------
+uninstall_packages () {
+    for p in $*; do
+	echo "Now uninstalling: " $p
+	rpm -e $p
+	echo "done."
+	echo ""
+    done
+}
+
+
+
+#---------------------------------------
+# メイン
+#---------------------------------------
+check_root
+if test "x$1" = "x-u" ; then
+    uninstall_packages `reverse $packages`
+else
+    update_source_list
+    apt-get update
+    install_packages $packages
+fi
+

Modified: trunk/OpenRTM-aist-Python/installer/makewxs.py
===================================================================
--- trunk/OpenRTM-aist-Python/installer/makewxs.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/installer/makewxs.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -1,204 +1,204 @@
-#!/usr/bin/env python
-#
-# @brief WiX wxsd file generator
-# @date $Date: 2008-02-26 13:58:13 $
-# @author Norkai Ando <n-ando at aist.go.jp>
-#
-# Copyright (C) 2008
-#     Noriaki Ando
-#     Task-intelligence Research Group,
-#     Intelligent Systems Research Institute,
-#     National Institute of
-#         Advanced Industrial Science and Technology (AIST), Japan
-#     All rights reserved.
-#
-# $Id: makewxs.py 1686 2010-01-18 13:36:16Z n-ando $
-#
-
-import yaml
-import yat
-import sys
-import uuid
-import getopt
-import os
-
-def replace_uuid(text):
-    token0 = text.split("__GUID__")
-    text0 = token0[0]
-    for i in range(1, len(token0)):
-        u = str(uuid.uuid1()).upper()
-        text0 += u + token0[i]
-
-    token1 = text0.split("__UUID")
-    text1 = token1[0]
-    for i in range(1, len(token1)):
-        u = "_" + str(uuid.uuid1()).replace("-", "")
-        text1 += u + token1[i]
-    return text1
-
-class file_list:
-    def __init__(self, comp, path, files):
-        self.comp = comp
-        self.path = self.check_path(path)
-        self.files = self.to_basename(files)
-        self.shortnames = {}
-        self.shortext = {}
-        self.output = ""
-        self.head = """%s:
-  GUID: %s
-  Files:
-"""
-        self.fitem = """    - Id: %s
-      ShortName: %s
-      Name: %s
-      Source: %s
-"""
-        self.count = -1
-
-    def check_path(self, path):
-        if path[-1] != "\\" or path[-1] != "/":
-            return path + "\\"
-
-    def to_basename(self, files):
-        out = []
-        for f in files:
-            out.append(os.path.basename(f))
-        return out
-
-    def to_shortname(self, fname):
-        try:
-            name, ext = fname.rsplit(".", 1)
-        except:
-            name = fname
-            ext  = ""
-        if name != None and len(name) > 8:
-            short_name = name[:5] + self.sn_num(name[:5])
-        else:
-            short_name = name
-        if ext != None and len(ext) > 3:
-            short_ext = ext[:3]
-        else:
-            short_ext = ext
-        if short_ext == "":
-            return short_name
-        return short_name + "." + short_ext
-
-    def id(self):
-        self.count += 1
-        return self.comp + '%04d' % (self.count)
-        
-    def sn_num(self, name):
-        if self.shortnames.has_key(name):
-            self.shortnames[name] += 1
-        else:
-            self.shortnames[name] = 0
-        return "%03d" % (self.shortnames[name])
-
-    def se_num(self, ext):
-        if self.shortext.has_key(ext):
-            self.shortext[ext] += 1
-        else:
-            self.shortext[ext] = 0
-        return "%01d" % (self.shortext[ext])
-
-    def write(self, text):
-        self.output += text
-
-    def escape(self, text):
-        return text.replace("\\", "\\\\")
-
-    def yaml(self):
-        self.write(self.head % (self.comp, str(uuid.uuid1()).upper()))
-        for fname in self.files:
-            self.write(self.fitem % (self.escape(self.id()),
-                                     self.escape(self.to_shortname(fname)),
-                                     self.escape(fname),
-                                     self.escape(self.path + fname)))
-        return self.output
-
-
-class make_wxs:
-    def __init__(self, outfile, infile, yaml_files):
-        self.outfile = outfile
-        self.template = self.load_template(infile)
-        self.dict = self.load_yaml(yaml_files)
-
-    def load_template(self, template):
-        fd = open(template, 'r')
-        t = yat.Template(fd.read(), "{% ", " %}")
-        fd.close()
-        return t
-
-    def load_yaml(self, yaml_files):
-        yaml_text = ""
-        for f in yaml_files:
-            fd = open(f, "r")
-            yaml_text += replace_uuid(fd.read())
-            fd.close()
-        return yaml.load(yaml_text)
-
-    def generate(self):
-        of = open(self.outfile, 'w')
-        of.write(self.template.generate(self.dict))
-        of.close()
-
-
-def usage():
-    print """makewxs.py cmd options
-commands:
-  flist: make file list to be included wxs file
-  wxs  : make wxs file from a input template file and yaml files 
-examples:
-  makewxs.py flist -c ComponentName -p Path -o OutputFilename file_names...
-  makewxs.py wxs -o Output.wxs -i InputTempalte input_yaml_files...
-"""
-
-
-def main(argv):
-    if len(argv) == 0:
-        usage()
-        sys.exit(-1)
-
-    cmd = argv[0]
-    out = None
-    if cmd == "flist":
-        opts, args = getopt.getopt(argv[1:], "c:p:o:", [])
-        if opts == None:
-            usage()
-            sys.exit(-1)
-            return
-        for o, a in opts:
-            if o in ("-c"):
-                comp = a
-            if o in ("-p"):
-                path = a
-            if o in ("-o"):
-                out = a
-        fl = file_list(comp, path, args)
-        if out == None:
-            f = sys.stdout
-        else:
-            f = open(out, "w")
-        f.write(fl.yaml())
-        f.close()
-    elif cmd == "wxs":
-        opts, args = getopt.getopt(argv[1:], "o:i:", [])
-        if opts == None:
-            usage()
-            sys.exit(-1)
-            return
-        for o, a in opts:
-            if o in ("-o"):
-                outfile = a
-            if o in ("-i"):
-                infile = a
-        wxs = make_wxs(outfile, infile, args)
-        wxs.generate()
-    elif cmd == "":
-        pass
-    else:
-        pass
-        
-
-if __name__ == "__main__":
-    main(sys.argv[1:])
+#!/usr/bin/env python
+#
+# @brief WiX wxsd file generator
+# @date $Date: 2008-02-26 13:58:13 $
+# @author Norkai Ando <n-ando at aist.go.jp>
+#
+# Copyright (C) 2008
+#     Noriaki Ando
+#     Task-intelligence Research Group,
+#     Intelligent Systems Research Institute,
+#     National Institute of
+#         Advanced Industrial Science and Technology (AIST), Japan
+#     All rights reserved.
+#
+# $Id: makewxs.py 1686 2010-01-18 13:36:16Z n-ando $
+#
+
+import yaml
+import yat
+import sys
+import uuid
+import getopt
+import os
+
+def replace_uuid(text):
+    token0 = text.split("__GUID__")
+    text0 = token0[0]
+    for i in range(1, len(token0)):
+        u = str(uuid.uuid1()).upper()
+        text0 += u + token0[i]
+
+    token1 = text0.split("__UUID")
+    text1 = token1[0]
+    for i in range(1, len(token1)):
+        u = "_" + str(uuid.uuid1()).replace("-", "")
+        text1 += u + token1[i]
+    return text1
+
+class file_list:
+    def __init__(self, comp, path, files):
+        self.comp = comp
+        self.path = self.check_path(path)
+        self.files = self.to_basename(files)
+        self.shortnames = {}
+        self.shortext = {}
+        self.output = ""
+        self.head = """%s:
+  GUID: %s
+  Files:
+"""
+        self.fitem = """    - Id: %s
+      ShortName: %s
+      Name: %s
+      Source: %s
+"""
+        self.count = -1
+
+    def check_path(self, path):
+        if path[-1] != "\\" or path[-1] != "/":
+            return path + "\\"
+
+    def to_basename(self, files):
+        out = []
+        for f in files:
+            out.append(os.path.basename(f))
+        return out
+
+    def to_shortname(self, fname):
+        try:
+            name, ext = fname.rsplit(".", 1)
+        except:
+            name = fname
+            ext  = ""
+        if name != None and len(name) > 8:
+            short_name = name[:5] + self.sn_num(name[:5])
+        else:
+            short_name = name
+        if ext != None and len(ext) > 3:
+            short_ext = ext[:3]
+        else:
+            short_ext = ext
+        if short_ext == "":
+            return short_name
+        return short_name + "." + short_ext
+
+    def id(self):
+        self.count += 1
+        return self.comp + '%04d' % (self.count)
+        
+    def sn_num(self, name):
+        if self.shortnames.has_key(name):
+            self.shortnames[name] += 1
+        else:
+            self.shortnames[name] = 0
+        return "%03d" % (self.shortnames[name])
+
+    def se_num(self, ext):
+        if self.shortext.has_key(ext):
+            self.shortext[ext] += 1
+        else:
+            self.shortext[ext] = 0
+        return "%01d" % (self.shortext[ext])
+
+    def write(self, text):
+        self.output += text
+
+    def escape(self, text):
+        return text.replace("\\", "\\\\")
+
+    def yaml(self):
+        self.write(self.head % (self.comp, str(uuid.uuid1()).upper()))
+        for fname in self.files:
+            self.write(self.fitem % (self.escape(self.id()),
+                                     self.escape(self.to_shortname(fname)),
+                                     self.escape(fname),
+                                     self.escape(self.path + fname)))
+        return self.output
+
+
+class make_wxs:
+    def __init__(self, outfile, infile, yaml_files):
+        self.outfile = outfile
+        self.template = self.load_template(infile)
+        self.dict = self.load_yaml(yaml_files)
+
+    def load_template(self, template):
+        fd = open(template, 'r')
+        t = yat.Template(fd.read(), "{% ", " %}")
+        fd.close()
+        return t
+
+    def load_yaml(self, yaml_files):
+        yaml_text = ""
+        for f in yaml_files:
+            fd = open(f, "r")
+            yaml_text += replace_uuid(fd.read())
+            fd.close()
+        return yaml.load(yaml_text)
+
+    def generate(self):
+        of = open(self.outfile, 'w')
+        of.write(self.template.generate(self.dict))
+        of.close()
+
+
+def usage():
+    print """makewxs.py cmd options
+commands:
+  flist: make file list to be included wxs file
+  wxs  : make wxs file from a input template file and yaml files 
+examples:
+  makewxs.py flist -c ComponentName -p Path -o OutputFilename file_names...
+  makewxs.py wxs -o Output.wxs -i InputTempalte input_yaml_files...
+"""
+
+
+def main(argv):
+    if len(argv) == 0:
+        usage()
+        sys.exit(-1)
+
+    cmd = argv[0]
+    out = None
+    if cmd == "flist":
+        opts, args = getopt.getopt(argv[1:], "c:p:o:", [])
+        if opts == None:
+            usage()
+            sys.exit(-1)
+            return
+        for o, a in opts:
+            if o in ("-c"):
+                comp = a
+            if o in ("-p"):
+                path = a
+            if o in ("-o"):
+                out = a
+        fl = file_list(comp, path, args)
+        if out == None:
+            f = sys.stdout
+        else:
+            f = open(out, "w")
+        f.write(fl.yaml())
+        f.close()
+    elif cmd == "wxs":
+        opts, args = getopt.getopt(argv[1:], "o:i:", [])
+        if opts == None:
+            usage()
+            sys.exit(-1)
+            return
+        for o, a in opts:
+            if o in ("-o"):
+                outfile = a
+            if o in ("-i"):
+                infile = a
+        wxs = make_wxs(outfile, infile, args)
+        wxs.generate()
+    elif cmd == "":
+        pass
+    else:
+        pass
+        
+
+if __name__ == "__main__":
+    main(sys.argv[1:])

Modified: trunk/OpenRTM-aist-Python/installer/uuid.py
===================================================================
--- trunk/OpenRTM-aist-Python/installer/uuid.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/installer/uuid.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -1,479 +1,479 @@
-#!/usr/bin/env python
-
-r"""UUID objects (universally unique identifiers) according to RFC 4122.
-
-This module provides immutable UUID objects (class UUID) and the functions
-uuid1(), uuid3(), uuid4(), uuid5() for generating version 1, 3, 4, and 5
-UUIDs as specified in RFC 4122.
-
-If all you want is a unique ID, you should probably call uuid1() or uuid4().
-Note that uuid1() may compromise privacy since it creates a UUID containing
-the computer's network address.  uuid4() creates a random UUID.
-
-Typical usage:
-
-    >>> import uuid
-
-    # make a UUID based on the host ID and current time
-    >>> uuid.uuid1()
-    UUID('a8098c1a-f86e-11da-bd1a-00112444be1e')
-
-    # make a UUID using an MD5 hash of a namespace UUID and a name
-    >>> uuid.uuid3(uuid.NAMESPACE_DNS, 'python.org')
-    UUID('6fa459ea-ee8a-3ca4-894e-db77e160355e')
-
-    # make a random UUID
-    >>> uuid.uuid4()
-    UUID('16fd2706-8baf-433b-82eb-8c7fada847da')
-
-    # make a UUID using a SHA-1 hash of a namespace UUID and a name
-    >>> uuid.uuid5(uuid.NAMESPACE_DNS, 'python.org')
-    UUID('886313e1-3b8a-5372-9b90-0c9aee199e5d')
-
-    # make a UUID from a string of hex digits (braces and hyphens ignored)
-    >>> x = uuid.UUID('{00010203-0405-0607-0809-0a0b0c0d0e0f}')
-
-    # convert a UUID to a string of hex digits in standard form
-    >>> str(x)
-    '00010203-0405-0607-0809-0a0b0c0d0e0f'
-
-    # get the raw 16 bytes of the UUID
-    >>> x.bytes
-    '\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f'
-
-    # make a UUID from a 16-byte string
-    >>> uuid.UUID(bytes=x.bytes)
-    UUID('00010203-0405-0607-0809-0a0b0c0d0e0f')
-
-This module works with Python 2.3 or higher."""
-
-__author__ = 'Ka-Ping Yee <ping at zesty.ca>'
-__date__ = '$Date: 2007-07-20 15:38:13 $'.split()[1].replace('/', '-')
-__version__ = '$Revision: 1.1.2.1 $'.split()[1]
-
-RESERVED_NCS, RFC_4122, RESERVED_MICROSOFT, RESERVED_FUTURE = [
-    'reserved for NCS compatibility', 'specified in RFC 4122',
-    'reserved for Microsoft compatibility', 'reserved for future definition']
-
-class UUID(object):
-    """Instances of the UUID class represent UUIDs as specified in RFC 4122.
-    UUID objects are immutable, hashable, and usable as dictionary keys.
-    Converting a UUID to a string with str() yields something in the form
-    '12345678-1234-1234-1234-123456789abc'.  The UUID constructor accepts
-    four possible forms: a similar string of hexadecimal digits, or a
-    string of 16 raw bytes as an argument named 'bytes', or a tuple of
-    six integer fields (with 32-bit, 16-bit, 16-bit, 8-bit, 8-bit, and
-    48-bit values respectively) as an argument named 'fields', or a single
-    128-bit integer as an argument named 'int'.
-    
-    UUIDs have these read-only attributes:
-
-        bytes       the UUID as a 16-byte string
-
-        fields      a tuple of the six integer fields of the UUID,
-                    which are also available as six individual attributes
-                    and two derived attributes:
-
-            time_low                the first 32 bits of the UUID
-            time_mid                the next 16 bits of the UUID
-            time_hi_version         the next 16 bits of the UUID
-            clock_seq_hi_variant    the next 8 bits of the UUID
-            clock_seq_low           the next 8 bits of the UUID
-            node                    the last 48 bits of the UUID
-
-            time                    the 60-bit timestamp
-            clock_seq               the 14-bit sequence number
-
-        hex         the UUID as a 32-character hexadecimal string
-
-        int         the UUID as a 128-bit integer
-
-        urn         the UUID as a URN as specified in RFC 4122
-
-        variant     the UUID variant (one of the constants RESERVED_NCS,
-                    RFC_4122, RESERVED_MICROSOFT, or RESERVED_FUTURE)
-
-        version     the UUID version number (1 through 5, meaningful only
-                    when the variant is RFC_4122)
-    """
-
-    def __init__(self, hex=None, bytes=None, fields=None, int=None,
-                       version=None):
-        r"""Create a UUID from either a string of 32 hexadecimal digits,
-        a string of 16 bytes as the 'bytes' argument, a tuple of six
-        integers (32-bit time_low, 16-bit time_mid, 16-bit time_hi_version,
-        8-bit clock_seq_hi_variant, 8-bit clock_seq_low, 48-bit node) as
-        the 'fields' argument, or a single 128-bit integer as the 'int'
-        argument.  When a string of hex digits is given, curly braces,
-        hyphens, and a URN prefix are all optional.  For example, these
-        expressions all yield the same UUID:
-
-        UUID('{12345678-1234-5678-1234-567812345678}')
-        UUID('12345678123456781234567812345678')
-        UUID('urn:uuid:12345678-1234-5678-1234-567812345678')
-        UUID(bytes='\x12\x34\x56\x78'*4)
-        UUID(fields=(0x12345678, 0x1234, 0x5678, 0x12, 0x34, 0x567812345678))
-        UUID(int=0x12345678123456781234567812345678)
-
-        Exactly one of 'hex', 'bytes', 'fields', or 'int' must be given.
-        The 'version' argument is optional; if given, the resulting UUID
-        will have its variant and version number set according to RFC 4122,
-        overriding bits in the given 'hex', 'bytes', 'fields', or 'int'.
-        """
-
-        if [hex, bytes, fields, int].count(None) != 3:
-            raise TypeError('need just one of hex, bytes, fields, or int')
-        if hex is not None:
-            hex = hex.replace('urn:', '').replace('uuid:', '')
-            hex = hex.strip('{}').replace('-', '')
-            if len(hex) != 32:
-                raise ValueError('badly formed hexadecimal UUID string')
-            int = long(hex, 16)
-        if bytes is not None:
-            if len(bytes) != 16:
-                raise ValueError('bytes is not a 16-char string')
-            int = long(('%02x'*16) % tuple(map(ord, bytes)), 16)
-        if fields is not None:
-            if len(fields) != 6:
-                raise ValueError('fields is not a 6-tuple')
-            (time_low, time_mid, time_hi_version,
-             clock_seq_hi_variant, clock_seq_low, node) = fields
-            if not 0 <= time_low < 1<<32L:
-                raise ValueError('field 1 out of range (need a 32-bit value)')
-            if not 0 <= time_mid < 1<<16L:
-                raise ValueError('field 2 out of range (need a 16-bit value)')
-            if not 0 <= time_hi_version < 1<<16L:
-                raise ValueError('field 3 out of range (need a 16-bit value)')
-            if not 0 <= clock_seq_hi_variant < 1<<8L:
-                raise ValueError('field 4 out of range (need an 8-bit value)')
-            if not 0 <= clock_seq_low < 1<<8L:
-                raise ValueError('field 5 out of range (need an 8-bit value)')
-            if not 0 <= node < 1<<48L:
-                raise ValueError('field 6 out of range (need a 48-bit value)')
-            clock_seq = (clock_seq_hi_variant << 8L) | clock_seq_low
-            int = ((time_low << 96L) | (time_mid << 80L) |
-                   (time_hi_version << 64L) | (clock_seq << 48L) | node)
-        if int is not None:
-            if not 0 <= int < 1<<128L:
-                raise ValueError('int is out of range (need a 128-bit value)')
-        if version is not None:
-            if not 1 <= version <= 5:
-                raise ValueError('illegal version number')
-            # Set the variant to RFC 4122.
-            int &= ~(0xc000 << 48L)
-            int |= 0x8000 << 48L
-            # Set the version number.
-            int &= ~(0xf000 << 64L)
-            int |= version << 76L
-        self.__dict__['int'] = int
-
-    def __cmp__(self, other):
-        if isinstance(other, UUID):
-            return cmp(self.int, other.int)
-        return NotImplemented
-
-    def __hash__(self):
-        return hash(self.int)
-
-    def __int__(self):
-        return self.int
-
-    def __repr__(self):
-        return 'UUID(%r)' % str(self)
-
-    def __setattr__(self, name, value):
-        raise TypeError('UUID objects are immutable')
-
-    def __str__(self):
-        hex = '%032x' % self.int
-        return '%s-%s-%s-%s-%s' % (
-            hex[:8], hex[8:12], hex[12:16], hex[16:20], hex[20:])
-
-    def get_bytes(self):
-        bytes = ''
-        for shift in range(0, 128, 8):
-            bytes = chr((self.int >> shift) & 0xff) + bytes
-        return bytes
-
-    bytes = property(get_bytes)
-
-    def get_fields(self):
-        return (self.time_low, self.time_mid, self.time_hi_version,
-                self.clock_seq_hi_variant, self.clock_seq_low, self.node)
-
-    fields = property(get_fields)
-
-    def get_time_low(self):
-        return self.int >> 96L
-   
-    time_low = property(get_time_low)
-
-    def get_time_mid(self):
-        return (self.int >> 80L) & 0xffff
-
-    time_mid = property(get_time_mid)
-
-    def get_time_hi_version(self):
-        return (self.int >> 64L) & 0xffff
-    
-    time_hi_version = property(get_time_hi_version)
-
-    def get_clock_seq_hi_variant(self):
-        return (self.int >> 56L) & 0xff
-
-    clock_seq_hi_variant = property(get_clock_seq_hi_variant)
-    
-    def get_clock_seq_low(self):
-        return (self.int >> 48L) & 0xff
-
-    clock_seq_low = property(get_clock_seq_low)
-
-    def get_time(self):
-        return (((self.time_hi_version & 0x0fffL) << 48L) |
-                (self.time_mid << 32L) | self.time_low)
-
-    time = property(get_time)
-
-    def get_clock_seq(self):
-        return (((self.clock_seq_hi_variant & 0x3fL) << 8L) |
-                self.clock_seq_low)
-
-    clock_seq = property(get_clock_seq)
-    
-    def get_node(self):
-        return self.int & 0xffffffffffff
-
-    node = property(get_node)
-
-    def get_hex(self):
-        return '%032x' % self.int
-
-    hex = property(get_hex)
-
-    def get_urn(self):
-        return 'urn:uuid:' + str(self)
-
-    urn = property(get_urn)
-
-    def get_variant(self):
-        if not self.int & (0x8000 << 48L):
-            return RESERVED_NCS
-        elif not self.int & (0x4000 << 48L):
-            return RFC_4122
-        elif not self.int & (0x2000 << 48L):
-            return RESERVED_MICROSOFT
-        else:
-            return RESERVED_FUTURE
-
-    variant = property(get_variant)
-
-    def get_version(self):
-        # The version bits are only meaningful for RFC 4122 UUIDs.
-        if self.variant == RFC_4122:
-            return int((self.int >> 76L) & 0xf)
-
-    version = property(get_version)
-
-def _ifconfig_getnode():
-    """Get the hardware address on Unix by running ifconfig."""
-    import os
-    for dir in ['', '/sbin/', '/usr/sbin']:
-        try:
-            pipe = os.popen(os.path.join(dir, 'ifconfig'))
-        except IOError:
-            continue
-        for line in pipe:
-            words = line.lower().split()
-            for i in range(len(words)):
-                if words[i] in ['hwaddr', 'ether']:
-                    return int(words[i + 1].replace(':', ''), 16)
-
-def _ipconfig_getnode():
-    """Get the hardware address on Windows by running ipconfig.exe."""
-    import os, re
-    dirs = ['', r'c:\windows\system32', r'c:\winnt\system32']
-    try:
-        import ctypes
-        buffer = ctypes.create_string_buffer(300)
-        ctypes.windll.kernel32.GetSystemDirectoryA(buffer, 300)
-        dirs.insert(0, buffer.value.decode('mbcs'))
-    except:
-        pass
-    for dir in dirs:
-        try:
-            pipe = os.popen(os.path.join(dir, 'ipconfig') + ' /all')
-        except IOError:
-            continue
-        for line in pipe:
-            value = line.split(':')[-1].strip().lower()
-            if re.match('([0-9a-f][0-9a-f]-){5}[0-9a-f][0-9a-f]', value):
-                return int(value.replace('-', ''), 16)
-
-def _netbios_getnode():
-    """Get the hardware address on Windows using NetBIOS calls.
-    See http://support.microsoft.com/kb/118623 for details."""
-    import win32wnet, netbios
-    ncb = netbios.NCB()
-    ncb.Command = netbios.NCBENUM
-    ncb.Buffer = adapters = netbios.LANA_ENUM()
-    adapters._pack()
-    if win32wnet.Netbios(ncb) != 0:
-        return
-    adapters._unpack()
-    for i in range(adapters.length):
-        ncb.Reset()
-        ncb.Command = netbios.NCBRESET
-        ncb.Lana_num = ord(adapters.lana[i])
-        if win32wnet.Netbios(ncb) != 0:
-            continue
-        ncb.Reset()
-        ncb.Command = netbios.NCBASTAT
-        ncb.Lana_num = ord(adapters.lana[i])
-        ncb.Callname = '*'.ljust(16)
-        ncb.Buffer = status = netbios.ADAPTER_STATUS()
-        if win32wnet.Netbios(ncb) != 0:
-            continue
-        status._unpack()
-        bytes = map(ord, status.adapter_address)
-        return ((bytes[0]<<40L) + (bytes[1]<<32L) + (bytes[2]<<24L) +
-                (bytes[3]<<16L) + (bytes[4]<<8L) + bytes[5])
-
-# Thanks to Thomas Heller for ctypes and for his help with its use here.
-
-# If ctypes is available, use it to find system routines for UUID generation.
-_uuid_generate_random = _uuid_generate_time = _UuidCreate = None
-try:
-    import ctypes, ctypes.util
-    _buffer = ctypes.create_string_buffer(16)
-
-    # The uuid_generate_* routines are provided by libuuid on at least
-    # Linux and FreeBSD, and provided by libc on Mac OS X.
-    for libname in ['uuid', 'c']:
-        try:
-            lib = ctypes.CDLL(ctypes.util.find_library(libname))
-        except:
-            continue
-        if hasattr(lib, 'uuid_generate_random'):
-            _uuid_generate_random = lib.uuid_generate_random
-        if hasattr(lib, 'uuid_generate_time'):
-            _uuid_generate_time = lib.uuid_generate_time
-
-    # On Windows prior to 2000, UuidCreate gives a UUID containing the
-    # hardware address.  On Windows 2000 and later, UuidCreate makes a
-    # random UUID and UuidCreateSequential gives a UUID containing the
-    # hardware address.  These routines are provided by the RPC runtime.
-    try:
-        lib = ctypes.windll.rpcrt4
-    except:
-        lib = None
-    _UuidCreate = getattr(lib, 'UuidCreateSequential',
-                          getattr(lib, 'UuidCreate', None))
-except:
-    pass
-
-def _unixdll_getnode():
-    """Get the hardware address on Unix using ctypes."""
-    _uuid_generate_time(_buffer)
-    return UUID(bytes=_buffer.raw).node
-
-def _windll_getnode():
-    """Get the hardware address on Windows using ctypes."""
-    if _UuidCreate(_buffer) == 0:
-        return UUID(bytes=_buffer.raw).node
-
-def _random_getnode():
-    """Get a random node ID, with eighth bit set as suggested by RFC 4122."""
-    import random
-    return random.randrange(0, 1<<48L) | 0x010000000000L
-
-_node = None
-
-def getnode():
-    """Get the hardware address as a 48-bit integer.  The first time this
-    runs, it may launch a separate program, which could be quite slow.  If
-    all attempts to obtain the hardware address fail, we choose a random
-    48-bit number with its eighth bit set to 1 as recommended in RFC 4122."""
-
-    global _node
-    if _node is not None:
-        return _node
-
-    import sys
-    if sys.platform == 'win32':
-        getters = [_windll_getnode, _netbios_getnode, _ipconfig_getnode]
-    else:
-        getters = [_unixdll_getnode, _ifconfig_getnode]
-
-    for getter in getters + [_random_getnode]:
-        try:
-            _node = getter()
-        except:
-            continue
-        if _node is not None:
-            return _node
-
-def uuid1(node=None, clock_seq=None):
-    """Generate a UUID from a host ID, sequence number, and the current time.
-    If 'node' is not given, getnode() is used to obtain the hardware
-    address.  If 'clock_seq' is given, it is used as the sequence number;
-    otherwise a random 14-bit sequence number is chosen."""
-
-    # When the system provides a version-1 UUID generator, use it (but don't
-    # use UuidCreate here because its UUIDs don't conform to RFC 4122).
-    if _uuid_generate_time and node is clock_seq is None:
-        _uuid_generate_time(_buffer)
-        return UUID(bytes=_buffer.raw)
-
-    import time
-    nanoseconds = int(time.time() * 1e9)
-    # 0x01b21dd213814000 is the number of 100-ns intervals between the
-    # UUID epoch 1582-10-15 00:00:00 and the Unix epoch 1970-01-01 00:00:00.
-    timestamp = int(nanoseconds/100) + 0x01b21dd213814000L
-    if clock_seq is None:
-        import random
-        clock_seq = random.randrange(1<<14L) # instead of stable storage
-    time_low = timestamp & 0xffffffffL
-    time_mid = (timestamp >> 32L) & 0xffffL
-    time_hi_version = (timestamp >> 48L) & 0x0fffL
-    clock_seq_low = clock_seq & 0xffL
-    clock_seq_hi_variant = (clock_seq >> 8L) & 0x3fL
-    if node is None:
-        node = getnode()
-    return UUID(fields=(time_low, time_mid, time_hi_version,
-                        clock_seq_hi_variant, clock_seq_low, node), version=1)
-
-def uuid3(namespace, name):
-    """Generate a UUID from the MD5 hash of a namespace UUID and a name."""
-    import md5
-    hash = md5.md5(namespace.bytes + name).digest()
-    return UUID(bytes=hash[:16], version=3)
-
-def uuid4():
-    """Generate a random UUID."""
-
-    # When the system provides a version-4 UUID generator, use it.
-    if _uuid_generate_random:
-        _uuid_generate_random(_buffer)
-        return UUID(bytes=_buffer.raw)
-
-    # Otherwise, get randomness from urandom or the 'random' module.
-    try:
-        import os
-        return UUID(bytes=os.urandom(16), version=4)
-    except:
-        import random
-        bytes = [chr(random.randrange(256)) for i in range(16)]
-        return UUID(bytes=bytes, version=4)
-
-def uuid5(namespace, name):
-    """Generate a UUID from the SHA-1 hash of a namespace UUID and a name."""
-    import sha
-    hash = sha.sha(namespace.bytes + name).digest()
-    return UUID(bytes=hash[:16], version=5)
-
-# The following standard UUIDs are for use with uuid3() or uuid5().
-
-NAMESPACE_DNS = UUID('6ba7b810-9dad-11d1-80b4-00c04fd430c8')
-NAMESPACE_URL = UUID('6ba7b811-9dad-11d1-80b4-00c04fd430c8')
-NAMESPACE_OID = UUID('6ba7b812-9dad-11d1-80b4-00c04fd430c8')
-NAMESPACE_X500 = UUID('6ba7b814-9dad-11d1-80b4-00c04fd430c8')
+#!/usr/bin/env python
+
+r"""UUID objects (universally unique identifiers) according to RFC 4122.
+
+This module provides immutable UUID objects (class UUID) and the functions
+uuid1(), uuid3(), uuid4(), uuid5() for generating version 1, 3, 4, and 5
+UUIDs as specified in RFC 4122.
+
+If all you want is a unique ID, you should probably call uuid1() or uuid4().
+Note that uuid1() may compromise privacy since it creates a UUID containing
+the computer's network address.  uuid4() creates a random UUID.
+
+Typical usage:
+
+    >>> import uuid
+
+    # make a UUID based on the host ID and current time
+    >>> uuid.uuid1()
+    UUID('a8098c1a-f86e-11da-bd1a-00112444be1e')
+
+    # make a UUID using an MD5 hash of a namespace UUID and a name
+    >>> uuid.uuid3(uuid.NAMESPACE_DNS, 'python.org')
+    UUID('6fa459ea-ee8a-3ca4-894e-db77e160355e')
+
+    # make a random UUID
+    >>> uuid.uuid4()
+    UUID('16fd2706-8baf-433b-82eb-8c7fada847da')
+
+    # make a UUID using a SHA-1 hash of a namespace UUID and a name
+    >>> uuid.uuid5(uuid.NAMESPACE_DNS, 'python.org')
+    UUID('886313e1-3b8a-5372-9b90-0c9aee199e5d')
+
+    # make a UUID from a string of hex digits (braces and hyphens ignored)
+    >>> x = uuid.UUID('{00010203-0405-0607-0809-0a0b0c0d0e0f}')
+
+    # convert a UUID to a string of hex digits in standard form
+    >>> str(x)
+    '00010203-0405-0607-0809-0a0b0c0d0e0f'
+
+    # get the raw 16 bytes of the UUID
+    >>> x.bytes
+    '\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f'
+
+    # make a UUID from a 16-byte string
+    >>> uuid.UUID(bytes=x.bytes)
+    UUID('00010203-0405-0607-0809-0a0b0c0d0e0f')
+
+This module works with Python 2.3 or higher."""
+
+__author__ = 'Ka-Ping Yee <ping at zesty.ca>'
+__date__ = '$Date: 2007-07-20 15:38:13 $'.split()[1].replace('/', '-')
+__version__ = '$Revision: 1.1.2.1 $'.split()[1]
+
+RESERVED_NCS, RFC_4122, RESERVED_MICROSOFT, RESERVED_FUTURE = [
+    'reserved for NCS compatibility', 'specified in RFC 4122',
+    'reserved for Microsoft compatibility', 'reserved for future definition']
+
+class UUID(object):
+    """Instances of the UUID class represent UUIDs as specified in RFC 4122.
+    UUID objects are immutable, hashable, and usable as dictionary keys.
+    Converting a UUID to a string with str() yields something in the form
+    '12345678-1234-1234-1234-123456789abc'.  The UUID constructor accepts
+    four possible forms: a similar string of hexadecimal digits, or a
+    string of 16 raw bytes as an argument named 'bytes', or a tuple of
+    six integer fields (with 32-bit, 16-bit, 16-bit, 8-bit, 8-bit, and
+    48-bit values respectively) as an argument named 'fields', or a single
+    128-bit integer as an argument named 'int'.
+    
+    UUIDs have these read-only attributes:
+
+        bytes       the UUID as a 16-byte string
+
+        fields      a tuple of the six integer fields of the UUID,
+                    which are also available as six individual attributes
+                    and two derived attributes:
+
+            time_low                the first 32 bits of the UUID
+            time_mid                the next 16 bits of the UUID
+            time_hi_version         the next 16 bits of the UUID
+            clock_seq_hi_variant    the next 8 bits of the UUID
+            clock_seq_low           the next 8 bits of the UUID
+            node                    the last 48 bits of the UUID
+
+            time                    the 60-bit timestamp
+            clock_seq               the 14-bit sequence number
+
+        hex         the UUID as a 32-character hexadecimal string
+
+        int         the UUID as a 128-bit integer
+
+        urn         the UUID as a URN as specified in RFC 4122
+
+        variant     the UUID variant (one of the constants RESERVED_NCS,
+                    RFC_4122, RESERVED_MICROSOFT, or RESERVED_FUTURE)
+
+        version     the UUID version number (1 through 5, meaningful only
+                    when the variant is RFC_4122)
+    """
+
+    def __init__(self, hex=None, bytes=None, fields=None, int=None,
+                       version=None):
+        r"""Create a UUID from either a string of 32 hexadecimal digits,
+        a string of 16 bytes as the 'bytes' argument, a tuple of six
+        integers (32-bit time_low, 16-bit time_mid, 16-bit time_hi_version,
+        8-bit clock_seq_hi_variant, 8-bit clock_seq_low, 48-bit node) as
+        the 'fields' argument, or a single 128-bit integer as the 'int'
+        argument.  When a string of hex digits is given, curly braces,
+        hyphens, and a URN prefix are all optional.  For example, these
+        expressions all yield the same UUID:
+
+        UUID('{12345678-1234-5678-1234-567812345678}')
+        UUID('12345678123456781234567812345678')
+        UUID('urn:uuid:12345678-1234-5678-1234-567812345678')
+        UUID(bytes='\x12\x34\x56\x78'*4)
+        UUID(fields=(0x12345678, 0x1234, 0x5678, 0x12, 0x34, 0x567812345678))
+        UUID(int=0x12345678123456781234567812345678)
+
+        Exactly one of 'hex', 'bytes', 'fields', or 'int' must be given.
+        The 'version' argument is optional; if given, the resulting UUID
+        will have its variant and version number set according to RFC 4122,
+        overriding bits in the given 'hex', 'bytes', 'fields', or 'int'.
+        """
+
+        if [hex, bytes, fields, int].count(None) != 3:
+            raise TypeError('need just one of hex, bytes, fields, or int')
+        if hex is not None:
+            hex = hex.replace('urn:', '').replace('uuid:', '')
+            hex = hex.strip('{}').replace('-', '')
+            if len(hex) != 32:
+                raise ValueError('badly formed hexadecimal UUID string')
+            int = long(hex, 16)
+        if bytes is not None:
+            if len(bytes) != 16:
+                raise ValueError('bytes is not a 16-char string')
+            int = long(('%02x'*16) % tuple(map(ord, bytes)), 16)
+        if fields is not None:
+            if len(fields) != 6:
+                raise ValueError('fields is not a 6-tuple')
+            (time_low, time_mid, time_hi_version,
+             clock_seq_hi_variant, clock_seq_low, node) = fields
+            if not 0 <= time_low < 1<<32L:
+                raise ValueError('field 1 out of range (need a 32-bit value)')
+            if not 0 <= time_mid < 1<<16L:
+                raise ValueError('field 2 out of range (need a 16-bit value)')
+            if not 0 <= time_hi_version < 1<<16L:
+                raise ValueError('field 3 out of range (need a 16-bit value)')
+            if not 0 <= clock_seq_hi_variant < 1<<8L:
+                raise ValueError('field 4 out of range (need an 8-bit value)')
+            if not 0 <= clock_seq_low < 1<<8L:
+                raise ValueError('field 5 out of range (need an 8-bit value)')
+            if not 0 <= node < 1<<48L:
+                raise ValueError('field 6 out of range (need a 48-bit value)')
+            clock_seq = (clock_seq_hi_variant << 8L) | clock_seq_low
+            int = ((time_low << 96L) | (time_mid << 80L) |
+                   (time_hi_version << 64L) | (clock_seq << 48L) | node)
+        if int is not None:
+            if not 0 <= int < 1<<128L:
+                raise ValueError('int is out of range (need a 128-bit value)')
+        if version is not None:
+            if not 1 <= version <= 5:
+                raise ValueError('illegal version number')
+            # Set the variant to RFC 4122.
+            int &= ~(0xc000 << 48L)
+            int |= 0x8000 << 48L
+            # Set the version number.
+            int &= ~(0xf000 << 64L)
+            int |= version << 76L
+        self.__dict__['int'] = int
+
+    def __cmp__(self, other):
+        if isinstance(other, UUID):
+            return cmp(self.int, other.int)
+        return NotImplemented
+
+    def __hash__(self):
+        return hash(self.int)
+
+    def __int__(self):
+        return self.int
+
+    def __repr__(self):
+        return 'UUID(%r)' % str(self)
+
+    def __setattr__(self, name, value):
+        raise TypeError('UUID objects are immutable')
+
+    def __str__(self):
+        hex = '%032x' % self.int
+        return '%s-%s-%s-%s-%s' % (
+            hex[:8], hex[8:12], hex[12:16], hex[16:20], hex[20:])
+
+    def get_bytes(self):
+        bytes = ''
+        for shift in range(0, 128, 8):
+            bytes = chr((self.int >> shift) & 0xff) + bytes
+        return bytes
+
+    bytes = property(get_bytes)
+
+    def get_fields(self):
+        return (self.time_low, self.time_mid, self.time_hi_version,
+                self.clock_seq_hi_variant, self.clock_seq_low, self.node)
+
+    fields = property(get_fields)
+
+    def get_time_low(self):
+        return self.int >> 96L
+   
+    time_low = property(get_time_low)
+
+    def get_time_mid(self):
+        return (self.int >> 80L) & 0xffff
+
+    time_mid = property(get_time_mid)
+
+    def get_time_hi_version(self):
+        return (self.int >> 64L) & 0xffff
+    
+    time_hi_version = property(get_time_hi_version)
+
+    def get_clock_seq_hi_variant(self):
+        return (self.int >> 56L) & 0xff
+
+    clock_seq_hi_variant = property(get_clock_seq_hi_variant)
+    
+    def get_clock_seq_low(self):
+        return (self.int >> 48L) & 0xff
+
+    clock_seq_low = property(get_clock_seq_low)
+
+    def get_time(self):
+        return (((self.time_hi_version & 0x0fffL) << 48L) |
+                (self.time_mid << 32L) | self.time_low)
+
+    time = property(get_time)
+
+    def get_clock_seq(self):
+        return (((self.clock_seq_hi_variant & 0x3fL) << 8L) |
+                self.clock_seq_low)
+
+    clock_seq = property(get_clock_seq)
+    
+    def get_node(self):
+        return self.int & 0xffffffffffff
+
+    node = property(get_node)
+
+    def get_hex(self):
+        return '%032x' % self.int
+
+    hex = property(get_hex)
+
+    def get_urn(self):
+        return 'urn:uuid:' + str(self)
+
+    urn = property(get_urn)
+
+    def get_variant(self):
+        if not self.int & (0x8000 << 48L):
+            return RESERVED_NCS
+        elif not self.int & (0x4000 << 48L):
+            return RFC_4122
+        elif not self.int & (0x2000 << 48L):
+            return RESERVED_MICROSOFT
+        else:
+            return RESERVED_FUTURE
+
+    variant = property(get_variant)
+
+    def get_version(self):
+        # The version bits are only meaningful for RFC 4122 UUIDs.
+        if self.variant == RFC_4122:
+            return int((self.int >> 76L) & 0xf)
+
+    version = property(get_version)
+
+def _ifconfig_getnode():
+    """Get the hardware address on Unix by running ifconfig."""
+    import os
+    for dir in ['', '/sbin/', '/usr/sbin']:
+        try:
+            pipe = os.popen(os.path.join(dir, 'ifconfig'))
+        except IOError:
+            continue
+        for line in pipe:
+            words = line.lower().split()
+            for i in range(len(words)):
+                if words[i] in ['hwaddr', 'ether']:
+                    return int(words[i + 1].replace(':', ''), 16)
+
+def _ipconfig_getnode():
+    """Get the hardware address on Windows by running ipconfig.exe."""
+    import os, re
+    dirs = ['', r'c:\windows\system32', r'c:\winnt\system32']
+    try:
+        import ctypes
+        buffer = ctypes.create_string_buffer(300)
+        ctypes.windll.kernel32.GetSystemDirectoryA(buffer, 300)
+        dirs.insert(0, buffer.value.decode('mbcs'))
+    except:
+        pass
+    for dir in dirs:
+        try:
+            pipe = os.popen(os.path.join(dir, 'ipconfig') + ' /all')
+        except IOError:
+            continue
+        for line in pipe:
+            value = line.split(':')[-1].strip().lower()
+            if re.match('([0-9a-f][0-9a-f]-){5}[0-9a-f][0-9a-f]', value):
+                return int(value.replace('-', ''), 16)
+
+def _netbios_getnode():
+    """Get the hardware address on Windows using NetBIOS calls.
+    See http://support.microsoft.com/kb/118623 for details."""
+    import win32wnet, netbios
+    ncb = netbios.NCB()
+    ncb.Command = netbios.NCBENUM
+    ncb.Buffer = adapters = netbios.LANA_ENUM()
+    adapters._pack()
+    if win32wnet.Netbios(ncb) != 0:
+        return
+    adapters._unpack()
+    for i in range(adapters.length):
+        ncb.Reset()
+        ncb.Command = netbios.NCBRESET
+        ncb.Lana_num = ord(adapters.lana[i])
+        if win32wnet.Netbios(ncb) != 0:
+            continue
+        ncb.Reset()
+        ncb.Command = netbios.NCBASTAT
+        ncb.Lana_num = ord(adapters.lana[i])
+        ncb.Callname = '*'.ljust(16)
+        ncb.Buffer = status = netbios.ADAPTER_STATUS()
+        if win32wnet.Netbios(ncb) != 0:
+            continue
+        status._unpack()
+        bytes = map(ord, status.adapter_address)
+        return ((bytes[0]<<40L) + (bytes[1]<<32L) + (bytes[2]<<24L) +
+                (bytes[3]<<16L) + (bytes[4]<<8L) + bytes[5])
+
+# Thanks to Thomas Heller for ctypes and for his help with its use here.
+
+# If ctypes is available, use it to find system routines for UUID generation.
+_uuid_generate_random = _uuid_generate_time = _UuidCreate = None
+try:
+    import ctypes, ctypes.util
+    _buffer = ctypes.create_string_buffer(16)
+
+    # The uuid_generate_* routines are provided by libuuid on at least
+    # Linux and FreeBSD, and provided by libc on Mac OS X.
+    for libname in ['uuid', 'c']:
+        try:
+            lib = ctypes.CDLL(ctypes.util.find_library(libname))
+        except:
+            continue
+        if hasattr(lib, 'uuid_generate_random'):
+            _uuid_generate_random = lib.uuid_generate_random
+        if hasattr(lib, 'uuid_generate_time'):
+            _uuid_generate_time = lib.uuid_generate_time
+
+    # On Windows prior to 2000, UuidCreate gives a UUID containing the
+    # hardware address.  On Windows 2000 and later, UuidCreate makes a
+    # random UUID and UuidCreateSequential gives a UUID containing the
+    # hardware address.  These routines are provided by the RPC runtime.
+    try:
+        lib = ctypes.windll.rpcrt4
+    except:
+        lib = None
+    _UuidCreate = getattr(lib, 'UuidCreateSequential',
+                          getattr(lib, 'UuidCreate', None))
+except:
+    pass
+
+def _unixdll_getnode():
+    """Get the hardware address on Unix using ctypes."""
+    _uuid_generate_time(_buffer)
+    return UUID(bytes=_buffer.raw).node
+
+def _windll_getnode():
+    """Get the hardware address on Windows using ctypes."""
+    if _UuidCreate(_buffer) == 0:
+        return UUID(bytes=_buffer.raw).node
+
+def _random_getnode():
+    """Get a random node ID, with eighth bit set as suggested by RFC 4122."""
+    import random
+    return random.randrange(0, 1<<48L) | 0x010000000000L
+
+_node = None
+
+def getnode():
+    """Get the hardware address as a 48-bit integer.  The first time this
+    runs, it may launch a separate program, which could be quite slow.  If
+    all attempts to obtain the hardware address fail, we choose a random
+    48-bit number with its eighth bit set to 1 as recommended in RFC 4122."""
+
+    global _node
+    if _node is not None:
+        return _node
+
+    import sys
+    if sys.platform == 'win32':
+        getters = [_windll_getnode, _netbios_getnode, _ipconfig_getnode]
+    else:
+        getters = [_unixdll_getnode, _ifconfig_getnode]
+
+    for getter in getters + [_random_getnode]:
+        try:
+            _node = getter()
+        except:
+            continue
+        if _node is not None:
+            return _node
+
+def uuid1(node=None, clock_seq=None):
+    """Generate a UUID from a host ID, sequence number, and the current time.
+    If 'node' is not given, getnode() is used to obtain the hardware
+    address.  If 'clock_seq' is given, it is used as the sequence number;
+    otherwise a random 14-bit sequence number is chosen."""
+
+    # When the system provides a version-1 UUID generator, use it (but don't
+    # use UuidCreate here because its UUIDs don't conform to RFC 4122).
+    if _uuid_generate_time and node is clock_seq is None:
+        _uuid_generate_time(_buffer)
+        return UUID(bytes=_buffer.raw)
+
+    import time
+    nanoseconds = int(time.time() * 1e9)
+    # 0x01b21dd213814000 is the number of 100-ns intervals between the
+    # UUID epoch 1582-10-15 00:00:00 and the Unix epoch 1970-01-01 00:00:00.
+    timestamp = int(nanoseconds/100) + 0x01b21dd213814000L
+    if clock_seq is None:
+        import random
+        clock_seq = random.randrange(1<<14L) # instead of stable storage
+    time_low = timestamp & 0xffffffffL
+    time_mid = (timestamp >> 32L) & 0xffffL
+    time_hi_version = (timestamp >> 48L) & 0x0fffL
+    clock_seq_low = clock_seq & 0xffL
+    clock_seq_hi_variant = (clock_seq >> 8L) & 0x3fL
+    if node is None:
+        node = getnode()
+    return UUID(fields=(time_low, time_mid, time_hi_version,
+                        clock_seq_hi_variant, clock_seq_low, node), version=1)
+
+def uuid3(namespace, name):
+    """Generate a UUID from the MD5 hash of a namespace UUID and a name."""
+    import md5
+    hash = md5.md5(namespace.bytes + name).digest()
+    return UUID(bytes=hash[:16], version=3)
+
+def uuid4():
+    """Generate a random UUID."""
+
+    # When the system provides a version-4 UUID generator, use it.
+    if _uuid_generate_random:
+        _uuid_generate_random(_buffer)
+        return UUID(bytes=_buffer.raw)
+
+    # Otherwise, get randomness from urandom or the 'random' module.
+    try:
+        import os
+        return UUID(bytes=os.urandom(16), version=4)
+    except:
+        import random
+        bytes = [chr(random.randrange(256)) for i in range(16)]
+        return UUID(bytes=bytes, version=4)
+
+def uuid5(namespace, name):
+    """Generate a UUID from the SHA-1 hash of a namespace UUID and a name."""
+    import sha
+    hash = sha.sha(namespace.bytes + name).digest()
+    return UUID(bytes=hash[:16], version=5)
+
+# The following standard UUIDs are for use with uuid3() or uuid5().
+
+NAMESPACE_DNS = UUID('6ba7b810-9dad-11d1-80b4-00c04fd430c8')
+NAMESPACE_URL = UUID('6ba7b811-9dad-11d1-80b4-00c04fd430c8')
+NAMESPACE_OID = UUID('6ba7b812-9dad-11d1-80b4-00c04fd430c8')
+NAMESPACE_X500 = UUID('6ba7b814-9dad-11d1-80b4-00c04fd430c8')

Modified: trunk/OpenRTM-aist-Python/installer/yat.py
===================================================================
--- trunk/OpenRTM-aist-Python/installer/yat.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/installer/yat.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -1,835 +1,835 @@
-#!/usr/bin/env python
-#
-# @brief YAT: YAml Template text processor
-# @date $Date: 2008-02-09 20:04:27 $
-# @author Norkai Ando <n-ando at aist.go.jp>
-#
-# Copyright (C) 2008 Noriaki Ando, All rights reserved.
-#
-# $Id: yat.py 775 2008-07-28 16:14:45Z n-ando $
-#
-
-#
-# Usage:
-#------------------------------------------------------------
-# import yaml
-# import yat
-#
-# dict   = yaml.load(open(filename, "r").read())
-# t      = yat.Template(template, "\[", "\]")
-# result = t.generate(dict)
-#------------------------------------------------------------
-#
-# 1. Simple directive:
-#    [dictionary_key]
-#
-#    Nested dictionaries can be expressed by dotted expression.
-#
-# example:
-# dict = {"a": "This is a",
-#         "b": {"1": "This is b.1",
-#               "2": "This is b.2"}
-#        }
-#
-# template:
-# [a]
-#
-# [b.1]
-#
-# [b.2]
-#
-# result:
-# This is a
-# This is b.1
-# This is b.2
-#
-#
-# 2. "for" directive:
-#    [for key in list] statement [endfor]
-#
-#    Iterative evaluation for listed values is performed by "for" statement.
-#    In iteration at each evaluation, the value of the list is assigned to
-#    "key". The "key" also can be the nested dictionary directive.
-#
-# example:
-# dict = {"list": [0, 1, 2],
-#         "listed_dict": [
-#           {"name": "x", "value": "1.0"},
-#           {"name": "y", "value": "0.2"},
-#           {"name": "z", "value": "0.1"}]}
-#
-# template:
-# [for lst in list]
-# [lst],  
-# [endfor]
-# [for lst in listed_dict]
-# [lst.name]: [lst.value]
-# 
-# [endfor]
-#
-# result:
-# 1, 2, 3,
-# x: 1.0
-# y: 0.2
-# x: 0.1
-#
-#
-# 3. "if-index" directive:
-#    [for key in val]
-#    [if-index key is first|even|odd|last|NUMBER] statement1
-#    [elif-index key is first|even|odd|last|NUMBER] statement2
-#    [endif][endfor]
-#
-#    "if-index" is used to specify the index of the "for" iteration.
-#    The "key" string which is defined in the "for" statement is used as index.
-#    A number or predefined directives such as "first", "even", "odd" and
-#    "last" can be used to specify the index.
-#
-# example:
-# dict = {"list": [0,1,2,3,4,5,6,7,8,9,10]}
-#
-# template:
-# [for key in list]
-# [if-index key is 3] [key] is hoge!!
-# [elif-index key is 6] [key] is foo!!
-# [elif-index key is 9] [key] is bar!!
-# [elif-index key is first] [key] is first
-# [elif-index key is last] Omoro-------!!!!
-# [elif-index key is odd] [key] is odd number
-# [elif-index key is even] [key] is even number
-# [endif]
-# [endfor]
-#
-# result:
-#  0 is first
-#  1 is odd number
-#  2 is even number
-#  3 is hoge!!
-#  4 is even number
-#  5 is odd number
-#  6 is foo!!
-#  7 is odd number
-#  8 is even number
-#  9 is bar!!
-#  Omoro-------!!!!
-#
-#
-# 4. "if" directive: [if key is value] text1 [else] text2 [endif]
-#    If "key" is "value", "text1" appears, otherwise "text2" appears.
-#
-# example:
-# dict = {"key1": "a", "key2": "b"}
-#
-# template:
-# [if key1 is a]
-# The key1 is "a".
-# [else]
-# This key1 is not "a".
-# [endif]
-#
-# result:
-# The key1 is "a".
-#
-#
-# 5. "if-any" directive: [if-any key1] text1 [else] text2 [endif]
-#    If the "key1" exists in the dictionary, "text1" appears, otherwise
-#    "text2" appears.
-#
-# example:
-# dict = {"key1": "a", "key2": "b"}
-#
-# template:
-# [if-any key1]
-# key1 exists.
-# [endif][if-any key3]
-# key3 exists.
-# [else]
-# key3 does not exists.
-# [endif]
-#
-# result:
-# key1 exists.
-# key3 does not exists.
-#
-#
-# 6. bracket and comment:
-#    [[] is left bracket if begin mark is "["
-#    [# comment ] is comment if begin/end marks are "[" and "]"
-#
-# example:
-# dict = {}
-#
-# template:
-# [[]bracket]
-# [# comment]
-#
-# result:
-# [bracket]
-#
-import string
-import re
-from types import StringType, IntType, FloatType, DictType, ListType, ClassType
-import sys
-
-class Template:
-    """
-    usage:
-      tempalte_text = read template text from file
-      dictionary    = create dictionaly by using yaml
-      t = Template(tempalte_text)
-      generated_text = t.generate(dictionary)
-
-    """
-    
-    def __init__(self, template, begin_mark="\[", end_mark="\]"):
-        self.__procs = [self.__proc_text,
-                        self.__proc_cmd,
-                        self.__proc_bracket]
-        self.template = template
-
-        # regular expression to devide text into DIRECTIVE, BRACKET and COMMENT
-        #
-        # default:
-        # START_MARK: "["
-        # END_MARK  : "]"
-        # -> START_MARK and END_MARK can be given in ctor
-        #
-        # ITEM: (?:"(?:[^\\"]|\\.)*"|[-\w.]+)
-        # \[(ITEM(?: +ITEM)*)\]|(\[\[\])|\[#[^\]]*\]
-        # ~~~~~~~~(1)~~~~~~ ~~(2)~~~ ~~~(3)~~~~~
-        # (1) COMMAND  : '[' ITEM (whitespace ITEM)* ']
-        #     ITEM     : STRING | NAME
-        #     STRING   : '"' (not-slash-or-dquote | '\' anychar)* '"'
-        #     NAME     : (alphanum | '_' | '-' | '.')+
-        # (2) BEGIN_MARK_ESCAPE : '[[]'
-        # (3) COMMENT  : '[#' not-rbracket
-        #        
-        # re_item      = r'(?:"(?:[^\\"]|\\.)*"|[-\w.]+)'
-        # re_command   = r'\[(%s(?: +%s)*)\]' % (re_item, re_item)
-        # re_beginmark = r'\[\[\]'
-        # re_comment   = r'\[#[^\]]*\]'
-        # re_parse     = re.compile(r'%s|(%s)|%s' 
-        #                     % (re_command, re_beginmark, re_comment))
-        # re_args      = re.compile(r'"(?:[^\\"]|\\.)*"|[-\w.]+')
-        #
-        #
-        re_item      = r'(?:"(?:[^\\"]|\\.)*"|[-\w.:]+)'
-        re_command   = r'%s(%s(?: +%s)*)%s' % \
-            (begin_mark, re_item, re_item, end_mark)
-        re_bracket   = r'%s%s%s' % \
-            (begin_mark, begin_mark, end_mark)
-        re_comment   = r'%s#[^%s]*%s' % \
-            (begin_mark, end_mark, end_mark)
-        self.begin_mark = begin_mark.replace("\\","")
-        self.re_parse = re.compile(r'%s|(%s)|%s' % \
-                                       (re_command, re_bracket, re_comment))
-        self.re_args  = re.compile(r'"(?:[^\\"]|\\.)*"|[-\w.:]+')
-        self.re_number = re.compile(r'[0-9]+')
-
-        # tokenize input text
-        self.token = self.re_parse.split(self.template)
-        self.token_len  = len(self.token)
-        
-        # initialize variables
-        self.script = program
-        self.indent = 4
-        self.script_level  = 2
-        self.level = 0
-        self.index = 0
-        self.cmd_cxt = []
-
-        # parse token
-        self.__parse_template(self.token)
-
-        return
-
-    def generate(self, dict):
-        # eval generated script
-        exec(self.script)
-        # script includes Generator class
-        gen = Generator(self.token, dict)
-        # execute generated script
-        return gen.generate()
-
-    def get_script(self):
-        return self.script
-
-    def __push_level(self):
-        self.level += 1
-
-    def __pop_level(self):
-        self.level -= 1
-
-    def __write_cmd(self, cmd):
-        tmp_cmd  = self.__indent()
-        tmp_cmd += "self.set_index(%s)\n" % (self.index)
-        self.script += tmp_cmd
-        self.__write_cmd_noindex(cmd)
-
-    def __write_cmd_noindex(self, cmd):
-        tmp_cmd  = self.__indent()
-        tmp_cmd += cmd + "\n"
-        self.script += tmp_cmd
-
-    def __parse_template(self, dict):
-        try:
-            # split into (TEXT DIRECTIVE BRACKET)* TEXT
-            self.__parse()
-        except YATException, e:
-            self.__print_error(e)
-            sys.exit(-1)
-
-    def __indent(self):
-        indent = " " * ((self.script_level + self.level) * self.indent)
-        return indent
-
-    def __parse(self):
-        while self.index < self.token_len:
-            self.__procs[self.index % 3]()
-            self.index += 1
-
-    def __proc_text(self):
-        if self.token[self.index] == None:
-            return
-        cmd_text = "self.write_token(%s)" % (self.index)
-        self.__write_cmd(cmd_text)
-        return True
- 
-    def __proc_bracket(self):
-        if self.token[self.index] == None:
-            return
-        cmd_text = "self.write(\"" + self.begin_mark + "\")"
-        self.__write_cmd(cmd_text)
-        return True
-            
-    def __proc_cmd(self):
-        cmd = self.token[self.index]
-        try:
-            args = self.re_args.findall(cmd)
-        except:
-            return
-        self.del_nl_after_cmd()
-        argc = len(args)
-        if argc == 0:
-            raise InvalidDirective(self.lineno(), "_an empty directive_ ")
-
-        # simple directive
-        if argc == 1:
-            if   args[0] == "endfor":
-                self.__endfor_cmd(args)
-                return
-            elif args[0] == "else":
-                self.__else_cmd(args)
-                return
-            elif args[0] == "last":
-                self.__last_cmd(args)
-                return
-            elif args[0] == "endif":
-                self.__endif_cmd(args)
-                return
-            else:
-                self.__cmd(args)
-                return
-        elif argc == 2:
-            if args[0] == "if-any":
-                self.__if_any_cmd(args)
-                return
-        elif argc == 4: # [for key in value]
-            if args[0] == "for" and args[2] == "in":
-                self.__for_cmd(args)
-                return True
-            elif args[0] == "if" and args[2] == "is":
-                self.__if_cmd(args)
-            elif args[0] == "elif" and args[2] == "is":
-                self.__elif_cmd(args)
-            elif args[0] == "if-index" and args[2] == "is":
-                self.__if_index_cmd(args)
-            elif args[0] == "elif-index" and args[2] == "is":
-                self.__elif_index_cmd(args)
-            else:
-                raise InvalidDirective(self.lineno(), cmd)
-        else:
-            raise InvalidDirective(self.lineno(), cmd)
-        return True
-
-    def __cmd(self, args):
-        cmd_text = "self.write_dict(\"%s\")" % (args[0])
-        self.__write_cmd(cmd_text)
-
-    #------------------------------------------------------------
-    # [for] commands
-    # - for
-    # - last
-    # - endfor
-    #------------------------------------------------------------
-    def __for_cmd(self, args):
-        """
-        The following [for] directive
-          [for tmp_key in directive]
-        is converted into the following python command.
-          for i in len(directive):
-              self.dicts.append({tmp_key: ditective[i])
-        and, endfor directive terminate as the following,
-              self.dicts.pop()
-        """
-        key = args[1]
-        directive = args[3]
-        # (key)     : variable string of index variable for [for] block
-        # (key)_list: list value of specified directive
-        # (key)_len : length of the list
-        cmd_text = "%s_list = self.get_list(\"%s\")" % (key, directive)
-        self.__write_cmd(cmd_text)
-        cmd_text = "%s_len = len(%s_list)" % (key, key)
-        self.__write_cmd(cmd_text)
-        cmd_text = "for %s_index in range(len(%s_list)):" % (key, key)
-        self.__write_cmd(cmd_text)
-        self.__push_level()
-        cmd_text = "self.push_dict({\"%s\": %s_list[%s_index]})" \
-            % (key, key, key)
-        self.__write_cmd(cmd_text)
-        self.cmd_cxt.append("for")
-
-    def __endfor_cmd(self, args):
-        try:
-            cxt = self.cmd_cxt.pop()
-            if cxt != "for":
-                raise UnmatchedBlock(self.lineno(), "endfor")
-            self.__write_cmd("self.pop_dict()")
-            self.__pop_level()
-        except:
-            print args, self.lineno()
-            raise UnmatchedBlock(self.lineno(), "endfor")
-        return
-
-    # end of [for] commands
-    #------------------------------------------------------------
-
-    #------------------------------------------------------------
-    # [if] commands
-    # - if
-    # - if-index
-    # - if-any
-    #------------------------------------------------------------
-    def __if_cmd(self, args):
-        """
-        The following [if] directive
-          [if directive is string]
-        is converted into the following python command.
-          if self.__get_string() == "string":
-        """
-        directive = args[1]
-        string = args[3]
-        cmd_text = "if self.get_text(\"%s\") == \"%s\":" % \
-            (directive, string)
-        self.__write_cmd(cmd_text)
-        self.__push_level()
-        self.cmd_cxt.append("if")
-        return
-
-    def __elif_cmd(self, args):
-        if self.cmd_cxt[-1] != "if":
-            raise UnmatchedBlock(self.lineno(), "elif")
-        directive = args[1]
-        string = args[3]
-        cmd_text = "elif self.get_text(\"%s\") == \"%s\":" % \
-            (directive, string)
-        self.__pop_level()
-        self.__write_cmd_noindex(cmd_text)
-        self.__push_level()
-        return
-
-    # [if-index] commands
-    def __if_index_cmd(self, args):
-        # [if-index KEY is [first|even|odd|last|NUMBER]]
-        #  ~~~0~~~  ~1~  2 ~~~~~~~~~~~~~~3~~~~~~~~~~~~
-        cmdlist = {"first": "if %s_index == 0:",
-                   "even" : "if (%s_index %% 2) == 0:",
-                   "odd"  : "if (%s_index %% 2) != 0:",
-                   "last" : "if %s_index == %s_len - 1:"}
-        key = args[1]
-        cmd = args[3]
-        if len(self.re_number.findall(cmd)) == 1:
-            cmd_text = "if %s_index == %s:" % (key, cmd)
-        elif cmdlist.has_key(cmd):
-            if cmd == "last":
-                cmd_text = cmdlist[cmd] % (key,key)
-            else:
-                cmd_text = cmdlist[cmd] % (key)
-        else:
-            raise InvalidDirective(self.lineno(), ''.join(args))
-        self.__write_cmd(cmd_text)
-        self.__push_level()
-        self.cmd_cxt.append("if-index")
-
-    def __elif_index_cmd(self, args):
-        if self.cmd_cxt[-1] != "if-index":
-            raise UnmatchedBlock(self.lineno(), "elif-index")
-        # [elif-index KEY is [first|even|odd|last|NUMBER]]
-        #  ~~~0~~~  ~1~  2 ~~~~~~~~~~~~~~3~~~~~~~~~~~~
-        cmdlist = {"first": "elif %s_index == 0:",
-                   "even" : "elif (%s_index %% 2) == 0:",
-                   "odd"  : "elif (%s_index %% 2) != 0:",
-                   "last" : "elif %s_index == %s_len - 1:"}
-        key = args[1]
-        cmd = args[3]
-        if len(self.re_number.findall(cmd)) == 1:
-            cmd_text = "elif %s_index == %s:" % (key, cmd)
-        elif cmdlist.has_key(cmd):
-            if cmd == "last":
-                cmd_text = cmdlist[cmd] % (key,key)
-            else:
-                cmd_text = cmdlist[cmd] % (key)
-        else:
-            raise InvalidDirective(self.lineno(), ' '.join(args))
-        self.__pop_level()
-        self.__write_cmd_noindex(cmd_text)
-        self.__push_level()
-
-    # [if-any] command
-    def __if_any_cmd(self, args):
-        directive = args[1]
-        cmd_text = "if self.has_key(\"%s\"):" % (directive)
-        self.__write_cmd(cmd_text)
-        self.__push_level()
-        self.cmd_cxt.append("if-any")
-        return
-
-    def __elif_any_cmd(self, args):
-        if self.cmd_cxt[-1] != "if-any":
-            raise UnmatchedBlock(self.lineno(), "elif-any")
-        directive = args[1]
-        cmd_text = "if self.has_key(\"%s\"):" % (directive)
-        self.__pop_level()
-        self.__write_cmd_noindex(cmd_text)
-        self.__push_level()
-        return
-
-    # [else], [endif] commands
-    def __else_cmd(self, args):
-        if self.cmd_cxt[-1] != "if" and self.cmd_cxt[-1] != "if-index" \
-                and self.cmd_cxt[-1] != "if-any":
-            raise UnmatchedBlock(self.lineno(), "else")
-        self.__pop_level()
-        self.__write_cmd_noindex("else:")
-        self.__push_level()
-        return
-
-    def __endif_cmd(self, args):
-        if self.cmd_cxt[-1] != "if" and self.cmd_cxt[-1] != "if-index" \
-                and self.cmd_cxt[-1] != "if-any":
-            raise UnmatchedBlock(self.lineno(), "endif")
-        self.cmd_cxt.pop()
-        self.__pop_level()
-        return
-    # end of [if] commands
-    #------------------------------------------------------------
-
-    def __print_error(self, e):
-        print "Parse Error: line", e.lineno, "in input data"
-        print "  " + ''.join(nesteditem(e.value))
-        lines = self.template.split("\n")
-        length = len(lines)
-        print "------------------------------------------------------------"
-        for i in range(1,10):
-            l = e.lineno - 6 + i
-            if l > 0 and l < length:
-                print lines[l]
-                if i == 5:
-                    uline = '~'*len(lines[l])
-                    print uline
-        print "------------------------------------------------------------"
-    
-    def del_nl_after_cmd(self):
-        # next text index after command
-        next = self.index + 2
-        if next > self.token_len: return
-        if self.token[next] == None: return
-        text = self.token[next]
-        tlen = len(text)
-        if tlen > 0 and text[0] == '\n':
-            self.token[next] = text[1:]
-            return
-        elif tlen > 0 and text[0] == '\r':
-            self.token[next] = text[1:]
-            return
-        elif tlen > 1 and text[0:2] == '\r\n':
-            self.token[next] = text[2:]
-
-    def lineno(self):
-        l = 1
-        for i in range(self.index):
-            if isinstance(self.token[i], StringType):
-                l += self.token[i].count('\n')
-        for i in range(1, self.index, 3):
-            l += 1
-        return l
-
-
-#------------------------------------------------------------
-# Generator and GeneratorBase classes
-#------------------------------------------------------------
-program = """
-class Generator(GeneratorBase):
-    def __init__(self, token, dict):
-        GeneratorBase.__init__(self, token, dict)
-    def generate(self):
-        try:
-            self.process()
-        except YATException, e:
-            self.print_error(e)
-            sys.exit(-1)
-        return self.text
-
-    def process(self):
-"""
-
-class GeneratorBase:
-    def __init__(self, token, dict):
-        self.token = token
-        self.dicts = [dict]
-        self.index = 0
-        self.text = ""
-
-    def print_error(self, e):
-        print "\nTemplate Generation Error: line", e.lineno, "in input data"
-        print "  " + ''.join(nesteditem(e.value))
-        temp = ""
-        for i, s in enumerate(self.token):
-            if s != None:
-                if i % 3 == 1:
-                    temp += "[" + s + "]\n"
-                else:
-                    temp += s
-        lines = temp.split("\n")
-        length = len(lines)
-        print "------------------------------------------------------------"
-        for i in range(1,10):
-            l = e.lineno - 6 + i
-            if l > 0 and l < length:
-                print lines[l]
-                if i == 5:
-                    uline = '~'*len(lines[l])
-                    print uline
-        print "------------------------------------------------------------"
-        
-    def set_index(self, index):
-        self.index = index
-
-    def push_dict(self, dict):
-        self.dicts.append(dict)
-
-    def pop_dict(self):
-        if len(self.dicts) < 2:
-            raise UnmatchedBlock(self.lineno(), "")
-        self.dicts.pop()
-
-    def write(self, text):
-        self.text += text
-
-    def write_dict(self, keytext):
-        self.write(self.get_text(keytext))
-
-    def write_token(self, index):
-        self.write(self.token[index])
-
-    def lineno(self):
-        cnt = 1
-        for i in range(0, self.index, 3):
-            if self.token[i] != None:
-                cnt += self.token[i].count('\n')
-        # count deleted '\n' after commands
-        for i in range(1, self.index, 3):
-            if self.token[i] != None:
-                cnt += 1
-        return cnt
-                                
-    def get_text(self, keytext):
-        val = self.get_value(keytext)
-        if isinstance(val, StringType):
-            return val
-        if isinstance(val, IntType) or isinstance(val, FloatType):
-            return str(val)
-        raise UnexpectedData(self.lineno(), "\"" + keytext + \
-                                 "\" should have string, int or float value.")
-
-    def get_list(self, keytext):
-        val = self.get_value(keytext)
-        if not isinstance(val, ListType):
-            raise UnexpectedData(self.lineno(),
-                                 "\"" + keytext + "\" should have list value.")
-        return val
-
-    def has_key(self, keytext):
-        try:
-            self.get_value(keytext)
-            return True
-        except NotFound, e:
-            return False
-
-    def get_value(self, keytext):
-        keys = keytext.split('.')
-        for i in range(len(self.dicts) - 1, -1, -1):
-            dict_value = self.get_dict_value(keys, self.dicts[i])
-            if dict_value != None:
-                return dict_value
-        raise NotFound(self.lineno(), keytext) 
-
-    def get_dict_value(self, keys, dict):
-        length = len(keys)
-        d = dict
-        for i in range(length):
-            if isinstance(d, DictType) and d.has_key(keys[i]):
-                d = d[keys[i]]
-            else:
-                return None
-        return d
-
-
-#------------------------------------------------------------
-# Exceptions                                
-#------------------------------------------------------------
-class YATException(Exception):
-    pass
-
-class UnknownError(YATException):
-    def __init__(self, lineno):
-        self.lineno = lineno
-        self.value = "Unknown error."
-
-class UnmatchedBlock(YATException):
-    def __init__(self, lineno, msg):
-        self.lineno = lineno
-        self.value = "Unmatched block error: " + msg
-
-class UnexpectedData(YATException):
-    def __init__(self, lineno, msg):
-        self.lineno = lineno
-        self.value = msg
-
-class NotFinalElement(YATException):
-    def __init__(self, dictkey, dictvalue):
-        self.value = "Specified key is not final element: ",\
-            dictkey, "=>", dictvalue
-
-class InvalidDirective(YATException):
-    def __init__(self, lineno, directive):
-        self.lineno = lineno
-        self.value = "Invalid directive: \"[" + directive + "]\""
-
-class UnmatchedData(YATException):
-    def __init__(self, lineno, description):
-        self.lineno = lineno
-        self.value = "Unmatched data and input: ", description
-
-class NotFound(YATException):
-    def __init__(self, lineno, description):
-        self.lineno = lineno
-        self.value = "Value not found for: \"" + description + "\""
-
-#------------------------------------------------------------
-# other functions
-#------------------------------------------------------------
-def nesteditem(aList):
-    for anItem in aList:
-        if type(anItem)==list:
-            for subitem in nesteditem(anItem):
-                yield subitem
-        else:
-            yield anItem
-
-
-
-if __name__ == "__main__":
-    dict = []
-    template = []
-    #------------------------------------------------------------
-    # Example 0
-    #------------------------------------------------------------
-    dict.append({"a": "This is a",
-                 "b": {"1": "This is b.1",
-                       "2": "This is b.2"}
-                 })
-    template.append("""[a]
-
-[b.1]
-
-[b.2]""")
-
-    #------------------------------------------------------------
-    # Example 1
-    #------------------------------------------------------------
-    dict.append({"list": [0, 1, 2],
-                 "listed_dict": [
-                {"name": "x", "value": "1.0"},
-                {"name": "y", "value": "0.2"},
-                {"name": "z", "value": "0.1"}]})
-    template.append("""[for lst in list]
-[lst],  
-[endfor]
-[for lst in listed_dict]
-[lst.name]: [lst.value]
-
-[endfor]""")
-
-    #------------------------------------------------------------
-    # Example 2
-    #------------------------------------------------------------
-    dict.append({"list": [0,1,2,3,4,5,6,7,8,9,10]})
-    template.append("""[for key in list]
-[if-index key is 3] [key] is hoge!!
-[elif-index key is 6] [key] is foo!!
-[elif-index key is 9] [key] is bar!!
-[elif-index key is first] [key] is first
-[elif-index key is last] Omoro-------!!!!
-[elif-index key is odd] [key] is odd number
-[elif-index key is even] [key] is even number
-[endif]
-[endfor]""")
-
-    #------------------------------------------------------------
-    # Example 3
-    #------------------------------------------------------------
-    dict.append({"key1": "a", "key2": "b"})
-    template.append("""[if key1 is a]
-The key1 is "a".
-[else]
-This key1 is not "a".
-[endif]""")
-
-    #------------------------------------------------------------
-    # Example 4
-    #------------------------------------------------------------
-    dict.append({"key1": "a", "key2": "b"})
-    template.append("""[if-any key1]
-key1 exists.
-[endif][if-any key3]
-key3 exists.
-[else]
-key3 does not exists.
-[endif]""")
-
-    dict.append({})
-    template.append("""
-[[]bracket]
-[# comment]
-""")
-
-    import yaml
-    if len(dict) == len(template):
-        for i in range(len(dict)-1,len(dict)):
-            t = Template(template[i])
-            print "-" * 60
-            print "Example:", i
-            print "-" * 60
-            print "Template:\n"
-            print template[i]
-            print "-" * 60
-            print "Dictionary:\n"
-            print yaml.dump(dict[i], default_flow_style=False)
-            print "-" * 60
-            print "Generated Script:\n"
-            print t.get_script()
-            print "-" * 60
-            print "Generated Text:\n"
-            print t.generate(dict[i])
-            print ""
+#!/usr/bin/env python
+#
+# @brief YAT: YAml Template text processor
+# @date $Date: 2008-02-09 20:04:27 $
+# @author Norkai Ando <n-ando at aist.go.jp>
+#
+# Copyright (C) 2008 Noriaki Ando, All rights reserved.
+#
+# $Id: yat.py 775 2008-07-28 16:14:45Z n-ando $
+#
+
+#
+# Usage:
+#------------------------------------------------------------
+# import yaml
+# import yat
+#
+# dict   = yaml.load(open(filename, "r").read())
+# t      = yat.Template(template, "\[", "\]")
+# result = t.generate(dict)
+#------------------------------------------------------------
+#
+# 1. Simple directive:
+#    [dictionary_key]
+#
+#    Nested dictionaries can be expressed by dotted expression.
+#
+# example:
+# dict = {"a": "This is a",
+#         "b": {"1": "This is b.1",
+#               "2": "This is b.2"}
+#        }
+#
+# template:
+# [a]
+#
+# [b.1]
+#
+# [b.2]
+#
+# result:
+# This is a
+# This is b.1
+# This is b.2
+#
+#
+# 2. "for" directive:
+#    [for key in list] statement [endfor]
+#
+#    Iterative evaluation for listed values is performed by "for" statement.
+#    In iteration at each evaluation, the value of the list is assigned to
+#    "key". The "key" also can be the nested dictionary directive.
+#
+# example:
+# dict = {"list": [0, 1, 2],
+#         "listed_dict": [
+#           {"name": "x", "value": "1.0"},
+#           {"name": "y", "value": "0.2"},
+#           {"name": "z", "value": "0.1"}]}
+#
+# template:
+# [for lst in list]
+# [lst],  
+# [endfor]
+# [for lst in listed_dict]
+# [lst.name]: [lst.value]
+# 
+# [endfor]
+#
+# result:
+# 1, 2, 3,
+# x: 1.0
+# y: 0.2
+# x: 0.1
+#
+#
+# 3. "if-index" directive:
+#    [for key in val]
+#    [if-index key is first|even|odd|last|NUMBER] statement1
+#    [elif-index key is first|even|odd|last|NUMBER] statement2
+#    [endif][endfor]
+#
+#    "if-index" is used to specify the index of the "for" iteration.
+#    The "key" string which is defined in the "for" statement is used as index.
+#    A number or predefined directives such as "first", "even", "odd" and
+#    "last" can be used to specify the index.
+#
+# example:
+# dict = {"list": [0,1,2,3,4,5,6,7,8,9,10]}
+#
+# template:
+# [for key in list]
+# [if-index key is 3] [key] is hoge!!
+# [elif-index key is 6] [key] is foo!!
+# [elif-index key is 9] [key] is bar!!
+# [elif-index key is first] [key] is first
+# [elif-index key is last] Omoro-------!!!!
+# [elif-index key is odd] [key] is odd number
+# [elif-index key is even] [key] is even number
+# [endif]
+# [endfor]
+#
+# result:
+#  0 is first
+#  1 is odd number
+#  2 is even number
+#  3 is hoge!!
+#  4 is even number
+#  5 is odd number
+#  6 is foo!!
+#  7 is odd number
+#  8 is even number
+#  9 is bar!!
+#  Omoro-------!!!!
+#
+#
+# 4. "if" directive: [if key is value] text1 [else] text2 [endif]
+#    If "key" is "value", "text1" appears, otherwise "text2" appears.
+#
+# example:
+# dict = {"key1": "a", "key2": "b"}
+#
+# template:
+# [if key1 is a]
+# The key1 is "a".
+# [else]
+# This key1 is not "a".
+# [endif]
+#
+# result:
+# The key1 is "a".
+#
+#
+# 5. "if-any" directive: [if-any key1] text1 [else] text2 [endif]
+#    If the "key1" exists in the dictionary, "text1" appears, otherwise
+#    "text2" appears.
+#
+# example:
+# dict = {"key1": "a", "key2": "b"}
+#
+# template:
+# [if-any key1]
+# key1 exists.
+# [endif][if-any key3]
+# key3 exists.
+# [else]
+# key3 does not exists.
+# [endif]
+#
+# result:
+# key1 exists.
+# key3 does not exists.
+#
+#
+# 6. bracket and comment:
+#    [[] is left bracket if begin mark is "["
+#    [# comment ] is comment if begin/end marks are "[" and "]"
+#
+# example:
+# dict = {}
+#
+# template:
+# [[]bracket]
+# [# comment]
+#
+# result:
+# [bracket]
+#
+import string
+import re
+from types import StringType, IntType, FloatType, DictType, ListType, ClassType
+import sys
+
+class Template:
+    """
+    usage:
+      tempalte_text = read template text from file
+      dictionary    = create dictionaly by using yaml
+      t = Template(tempalte_text)
+      generated_text = t.generate(dictionary)
+
+    """
+    
+    def __init__(self, template, begin_mark="\[", end_mark="\]"):
+        self.__procs = [self.__proc_text,
+                        self.__proc_cmd,
+                        self.__proc_bracket]
+        self.template = template
+
+        # regular expression to devide text into DIRECTIVE, BRACKET and COMMENT
+        #
+        # default:
+        # START_MARK: "["
+        # END_MARK  : "]"
+        # -> START_MARK and END_MARK can be given in ctor
+        #
+        # ITEM: (?:"(?:[^\\"]|\\.)*"|[-\w.]+)
+        # \[(ITEM(?: +ITEM)*)\]|(\[\[\])|\[#[^\]]*\]
+        # ~~~~~~~~(1)~~~~~~ ~~(2)~~~ ~~~(3)~~~~~
+        # (1) COMMAND  : '[' ITEM (whitespace ITEM)* ']
+        #     ITEM     : STRING | NAME
+        #     STRING   : '"' (not-slash-or-dquote | '\' anychar)* '"'
+        #     NAME     : (alphanum | '_' | '-' | '.')+
+        # (2) BEGIN_MARK_ESCAPE : '[[]'
+        # (3) COMMENT  : '[#' not-rbracket
+        #        
+        # re_item      = r'(?:"(?:[^\\"]|\\.)*"|[-\w.]+)'
+        # re_command   = r'\[(%s(?: +%s)*)\]' % (re_item, re_item)
+        # re_beginmark = r'\[\[\]'
+        # re_comment   = r'\[#[^\]]*\]'
+        # re_parse     = re.compile(r'%s|(%s)|%s' 
+        #                     % (re_command, re_beginmark, re_comment))
+        # re_args      = re.compile(r'"(?:[^\\"]|\\.)*"|[-\w.]+')
+        #
+        #
+        re_item      = r'(?:"(?:[^\\"]|\\.)*"|[-\w.:]+)'
+        re_command   = r'%s(%s(?: +%s)*)%s' % \
+            (begin_mark, re_item, re_item, end_mark)
+        re_bracket   = r'%s%s%s' % \
+            (begin_mark, begin_mark, end_mark)
+        re_comment   = r'%s#[^%s]*%s' % \
+            (begin_mark, end_mark, end_mark)
+        self.begin_mark = begin_mark.replace("\\","")
+        self.re_parse = re.compile(r'%s|(%s)|%s' % \
+                                       (re_command, re_bracket, re_comment))
+        self.re_args  = re.compile(r'"(?:[^\\"]|\\.)*"|[-\w.:]+')
+        self.re_number = re.compile(r'[0-9]+')
+
+        # tokenize input text
+        self.token = self.re_parse.split(self.template)
+        self.token_len  = len(self.token)
+        
+        # initialize variables
+        self.script = program
+        self.indent = 4
+        self.script_level  = 2
+        self.level = 0
+        self.index = 0
+        self.cmd_cxt = []
+
+        # parse token
+        self.__parse_template(self.token)
+
+        return
+
+    def generate(self, dict):
+        # eval generated script
+        exec(self.script)
+        # script includes Generator class
+        gen = Generator(self.token, dict)
+        # execute generated script
+        return gen.generate()
+
+    def get_script(self):
+        return self.script
+
+    def __push_level(self):
+        self.level += 1
+
+    def __pop_level(self):
+        self.level -= 1
+
+    def __write_cmd(self, cmd):
+        tmp_cmd  = self.__indent()
+        tmp_cmd += "self.set_index(%s)\n" % (self.index)
+        self.script += tmp_cmd
+        self.__write_cmd_noindex(cmd)
+
+    def __write_cmd_noindex(self, cmd):
+        tmp_cmd  = self.__indent()
+        tmp_cmd += cmd + "\n"
+        self.script += tmp_cmd
+
+    def __parse_template(self, dict):
+        try:
+            # split into (TEXT DIRECTIVE BRACKET)* TEXT
+            self.__parse()
+        except YATException, e:
+            self.__print_error(e)
+            sys.exit(-1)
+
+    def __indent(self):
+        indent = " " * ((self.script_level + self.level) * self.indent)
+        return indent
+
+    def __parse(self):
+        while self.index < self.token_len:
+            self.__procs[self.index % 3]()
+            self.index += 1
+
+    def __proc_text(self):
+        if self.token[self.index] == None:
+            return
+        cmd_text = "self.write_token(%s)" % (self.index)
+        self.__write_cmd(cmd_text)
+        return True
+ 
+    def __proc_bracket(self):
+        if self.token[self.index] == None:
+            return
+        cmd_text = "self.write(\"" + self.begin_mark + "\")"
+        self.__write_cmd(cmd_text)
+        return True
+            
+    def __proc_cmd(self):
+        cmd = self.token[self.index]
+        try:
+            args = self.re_args.findall(cmd)
+        except:
+            return
+        self.del_nl_after_cmd()
+        argc = len(args)
+        if argc == 0:
+            raise InvalidDirective(self.lineno(), "_an empty directive_ ")
+
+        # simple directive
+        if argc == 1:
+            if   args[0] == "endfor":
+                self.__endfor_cmd(args)
+                return
+            elif args[0] == "else":
+                self.__else_cmd(args)
+                return
+            elif args[0] == "last":
+                self.__last_cmd(args)
+                return
+            elif args[0] == "endif":
+                self.__endif_cmd(args)
+                return
+            else:
+                self.__cmd(args)
+                return
+        elif argc == 2:
+            if args[0] == "if-any":
+                self.__if_any_cmd(args)
+                return
+        elif argc == 4: # [for key in value]
+            if args[0] == "for" and args[2] == "in":
+                self.__for_cmd(args)
+                return True
+            elif args[0] == "if" and args[2] == "is":
+                self.__if_cmd(args)
+            elif args[0] == "elif" and args[2] == "is":
+                self.__elif_cmd(args)
+            elif args[0] == "if-index" and args[2] == "is":
+                self.__if_index_cmd(args)
+            elif args[0] == "elif-index" and args[2] == "is":
+                self.__elif_index_cmd(args)
+            else:
+                raise InvalidDirective(self.lineno(), cmd)
+        else:
+            raise InvalidDirective(self.lineno(), cmd)
+        return True
+
+    def __cmd(self, args):
+        cmd_text = "self.write_dict(\"%s\")" % (args[0])
+        self.__write_cmd(cmd_text)
+
+    #------------------------------------------------------------
+    # [for] commands
+    # - for
+    # - last
+    # - endfor
+    #------------------------------------------------------------
+    def __for_cmd(self, args):
+        """
+        The following [for] directive
+          [for tmp_key in directive]
+        is converted into the following python command.
+          for i in len(directive):
+              self.dicts.append({tmp_key: ditective[i])
+        and, endfor directive terminate as the following,
+              self.dicts.pop()
+        """
+        key = args[1]
+        directive = args[3]
+        # (key)     : variable string of index variable for [for] block
+        # (key)_list: list value of specified directive
+        # (key)_len : length of the list
+        cmd_text = "%s_list = self.get_list(\"%s\")" % (key, directive)
+        self.__write_cmd(cmd_text)
+        cmd_text = "%s_len = len(%s_list)" % (key, key)
+        self.__write_cmd(cmd_text)
+        cmd_text = "for %s_index in range(len(%s_list)):" % (key, key)
+        self.__write_cmd(cmd_text)
+        self.__push_level()
+        cmd_text = "self.push_dict({\"%s\": %s_list[%s_index]})" \
+            % (key, key, key)
+        self.__write_cmd(cmd_text)
+        self.cmd_cxt.append("for")
+
+    def __endfor_cmd(self, args):
+        try:
+            cxt = self.cmd_cxt.pop()
+            if cxt != "for":
+                raise UnmatchedBlock(self.lineno(), "endfor")
+            self.__write_cmd("self.pop_dict()")
+            self.__pop_level()
+        except:
+            print args, self.lineno()
+            raise UnmatchedBlock(self.lineno(), "endfor")
+        return
+
+    # end of [for] commands
+    #------------------------------------------------------------
+
+    #------------------------------------------------------------
+    # [if] commands
+    # - if
+    # - if-index
+    # - if-any
+    #------------------------------------------------------------
+    def __if_cmd(self, args):
+        """
+        The following [if] directive
+          [if directive is string]
+        is converted into the following python command.
+          if self.__get_string() == "string":
+        """
+        directive = args[1]
+        string = args[3]
+        cmd_text = "if self.get_text(\"%s\") == \"%s\":" % \
+            (directive, string)
+        self.__write_cmd(cmd_text)
+        self.__push_level()
+        self.cmd_cxt.append("if")
+        return
+
+    def __elif_cmd(self, args):
+        if self.cmd_cxt[-1] != "if":
+            raise UnmatchedBlock(self.lineno(), "elif")
+        directive = args[1]
+        string = args[3]
+        cmd_text = "elif self.get_text(\"%s\") == \"%s\":" % \
+            (directive, string)
+        self.__pop_level()
+        self.__write_cmd_noindex(cmd_text)
+        self.__push_level()
+        return
+
+    # [if-index] commands
+    def __if_index_cmd(self, args):
+        # [if-index KEY is [first|even|odd|last|NUMBER]]
+        #  ~~~0~~~  ~1~  2 ~~~~~~~~~~~~~~3~~~~~~~~~~~~
+        cmdlist = {"first": "if %s_index == 0:",
+                   "even" : "if (%s_index %% 2) == 0:",
+                   "odd"  : "if (%s_index %% 2) != 0:",
+                   "last" : "if %s_index == %s_len - 1:"}
+        key = args[1]
+        cmd = args[3]
+        if len(self.re_number.findall(cmd)) == 1:
+            cmd_text = "if %s_index == %s:" % (key, cmd)
+        elif cmdlist.has_key(cmd):
+            if cmd == "last":
+                cmd_text = cmdlist[cmd] % (key,key)
+            else:
+                cmd_text = cmdlist[cmd] % (key)
+        else:
+            raise InvalidDirective(self.lineno(), ''.join(args))
+        self.__write_cmd(cmd_text)
+        self.__push_level()
+        self.cmd_cxt.append("if-index")
+
+    def __elif_index_cmd(self, args):
+        if self.cmd_cxt[-1] != "if-index":
+            raise UnmatchedBlock(self.lineno(), "elif-index")
+        # [elif-index KEY is [first|even|odd|last|NUMBER]]
+        #  ~~~0~~~  ~1~  2 ~~~~~~~~~~~~~~3~~~~~~~~~~~~
+        cmdlist = {"first": "elif %s_index == 0:",
+                   "even" : "elif (%s_index %% 2) == 0:",
+                   "odd"  : "elif (%s_index %% 2) != 0:",
+                   "last" : "elif %s_index == %s_len - 1:"}
+        key = args[1]
+        cmd = args[3]
+        if len(self.re_number.findall(cmd)) == 1:
+            cmd_text = "elif %s_index == %s:" % (key, cmd)
+        elif cmdlist.has_key(cmd):
+            if cmd == "last":
+                cmd_text = cmdlist[cmd] % (key,key)
+            else:
+                cmd_text = cmdlist[cmd] % (key)
+        else:
+            raise InvalidDirective(self.lineno(), ' '.join(args))
+        self.__pop_level()
+        self.__write_cmd_noindex(cmd_text)
+        self.__push_level()
+
+    # [if-any] command
+    def __if_any_cmd(self, args):
+        directive = args[1]
+        cmd_text = "if self.has_key(\"%s\"):" % (directive)
+        self.__write_cmd(cmd_text)
+        self.__push_level()
+        self.cmd_cxt.append("if-any")
+        return
+
+    def __elif_any_cmd(self, args):
+        if self.cmd_cxt[-1] != "if-any":
+            raise UnmatchedBlock(self.lineno(), "elif-any")
+        directive = args[1]
+        cmd_text = "if self.has_key(\"%s\"):" % (directive)
+        self.__pop_level()
+        self.__write_cmd_noindex(cmd_text)
+        self.__push_level()
+        return
+
+    # [else], [endif] commands
+    def __else_cmd(self, args):
+        if self.cmd_cxt[-1] != "if" and self.cmd_cxt[-1] != "if-index" \
+                and self.cmd_cxt[-1] != "if-any":
+            raise UnmatchedBlock(self.lineno(), "else")
+        self.__pop_level()
+        self.__write_cmd_noindex("else:")
+        self.__push_level()
+        return
+
+    def __endif_cmd(self, args):
+        if self.cmd_cxt[-1] != "if" and self.cmd_cxt[-1] != "if-index" \
+                and self.cmd_cxt[-1] != "if-any":
+            raise UnmatchedBlock(self.lineno(), "endif")
+        self.cmd_cxt.pop()
+        self.__pop_level()
+        return
+    # end of [if] commands
+    #------------------------------------------------------------
+
+    def __print_error(self, e):
+        print "Parse Error: line", e.lineno, "in input data"
+        print "  " + ''.join(nesteditem(e.value))
+        lines = self.template.split("\n")
+        length = len(lines)
+        print "------------------------------------------------------------"
+        for i in range(1,10):
+            l = e.lineno - 6 + i
+            if l > 0 and l < length:
+                print lines[l]
+                if i == 5:
+                    uline = '~'*len(lines[l])
+                    print uline
+        print "------------------------------------------------------------"
+    
+    def del_nl_after_cmd(self):
+        # next text index after command
+        next = self.index + 2
+        if next > self.token_len: return
+        if self.token[next] == None: return
+        text = self.token[next]
+        tlen = len(text)
+        if tlen > 0 and text[0] == '\n':
+            self.token[next] = text[1:]
+            return
+        elif tlen > 0 and text[0] == '\r':
+            self.token[next] = text[1:]
+            return
+        elif tlen > 1 and text[0:2] == '\r\n':
+            self.token[next] = text[2:]
+
+    def lineno(self):
+        l = 1
+        for i in range(self.index):
+            if isinstance(self.token[i], StringType):
+                l += self.token[i].count('\n')
+        for i in range(1, self.index, 3):
+            l += 1
+        return l
+
+
+#------------------------------------------------------------
+# Generator and GeneratorBase classes
+#------------------------------------------------------------
+program = """
+class Generator(GeneratorBase):
+    def __init__(self, token, dict):
+        GeneratorBase.__init__(self, token, dict)
+    def generate(self):
+        try:
+            self.process()
+        except YATException, e:
+            self.print_error(e)
+            sys.exit(-1)
+        return self.text
+
+    def process(self):
+"""
+
+class GeneratorBase:
+    def __init__(self, token, dict):
+        self.token = token
+        self.dicts = [dict]
+        self.index = 0
+        self.text = ""
+
+    def print_error(self, e):
+        print "\nTemplate Generation Error: line", e.lineno, "in input data"
+        print "  " + ''.join(nesteditem(e.value))
+        temp = ""
+        for i, s in enumerate(self.token):
+            if s != None:
+                if i % 3 == 1:
+                    temp += "[" + s + "]\n"
+                else:
+                    temp += s
+        lines = temp.split("\n")
+        length = len(lines)
+        print "------------------------------------------------------------"
+        for i in range(1,10):
+            l = e.lineno - 6 + i
+            if l > 0 and l < length:
+                print lines[l]
+                if i == 5:
+                    uline = '~'*len(lines[l])
+                    print uline
+        print "------------------------------------------------------------"
+        
+    def set_index(self, index):
+        self.index = index
+
+    def push_dict(self, dict):
+        self.dicts.append(dict)
+
+    def pop_dict(self):
+        if len(self.dicts) < 2:
+            raise UnmatchedBlock(self.lineno(), "")
+        self.dicts.pop()
+
+    def write(self, text):
+        self.text += text
+
+    def write_dict(self, keytext):
+        self.write(self.get_text(keytext))
+
+    def write_token(self, index):
+        self.write(self.token[index])
+
+    def lineno(self):
+        cnt = 1
+        for i in range(0, self.index, 3):
+            if self.token[i] != None:
+                cnt += self.token[i].count('\n')
+        # count deleted '\n' after commands
+        for i in range(1, self.index, 3):
+            if self.token[i] != None:
+                cnt += 1
+        return cnt
+                                
+    def get_text(self, keytext):
+        val = self.get_value(keytext)
+        if isinstance(val, StringType):
+            return val
+        if isinstance(val, IntType) or isinstance(val, FloatType):
+            return str(val)
+        raise UnexpectedData(self.lineno(), "\"" + keytext + \
+                                 "\" should have string, int or float value.")
+
+    def get_list(self, keytext):
+        val = self.get_value(keytext)
+        if not isinstance(val, ListType):
+            raise UnexpectedData(self.lineno(),
+                                 "\"" + keytext + "\" should have list value.")
+        return val
+
+    def has_key(self, keytext):
+        try:
+            self.get_value(keytext)
+            return True
+        except NotFound, e:
+            return False
+
+    def get_value(self, keytext):
+        keys = keytext.split('.')
+        for i in range(len(self.dicts) - 1, -1, -1):
+            dict_value = self.get_dict_value(keys, self.dicts[i])
+            if dict_value != None:
+                return dict_value
+        raise NotFound(self.lineno(), keytext) 
+
+    def get_dict_value(self, keys, dict):
+        length = len(keys)
+        d = dict
+        for i in range(length):
+            if isinstance(d, DictType) and d.has_key(keys[i]):
+                d = d[keys[i]]
+            else:
+                return None
+        return d
+
+
+#------------------------------------------------------------
+# Exceptions                                
+#------------------------------------------------------------
+class YATException(Exception):
+    pass
+
+class UnknownError(YATException):
+    def __init__(self, lineno):
+        self.lineno = lineno
+        self.value = "Unknown error."
+
+class UnmatchedBlock(YATException):
+    def __init__(self, lineno, msg):
+        self.lineno = lineno
+        self.value = "Unmatched block error: " + msg
+
+class UnexpectedData(YATException):
+    def __init__(self, lineno, msg):
+        self.lineno = lineno
+        self.value = msg
+
+class NotFinalElement(YATException):
+    def __init__(self, dictkey, dictvalue):
+        self.value = "Specified key is not final element: ",\
+            dictkey, "=>", dictvalue
+
+class InvalidDirective(YATException):
+    def __init__(self, lineno, directive):
+        self.lineno = lineno
+        self.value = "Invalid directive: \"[" + directive + "]\""
+
+class UnmatchedData(YATException):
+    def __init__(self, lineno, description):
+        self.lineno = lineno
+        self.value = "Unmatched data and input: ", description
+
+class NotFound(YATException):
+    def __init__(self, lineno, description):
+        self.lineno = lineno
+        self.value = "Value not found for: \"" + description + "\""
+
+#------------------------------------------------------------
+# other functions
+#------------------------------------------------------------
+def nesteditem(aList):
+    for anItem in aList:
+        if type(anItem)==list:
+            for subitem in nesteditem(anItem):
+                yield subitem
+        else:
+            yield anItem
+
+
+
+if __name__ == "__main__":
+    dict = []
+    template = []
+    #------------------------------------------------------------
+    # Example 0
+    #------------------------------------------------------------
+    dict.append({"a": "This is a",
+                 "b": {"1": "This is b.1",
+                       "2": "This is b.2"}
+                 })
+    template.append("""[a]
+
+[b.1]
+
+[b.2]""")
+
+    #------------------------------------------------------------
+    # Example 1
+    #------------------------------------------------------------
+    dict.append({"list": [0, 1, 2],
+                 "listed_dict": [
+                {"name": "x", "value": "1.0"},
+                {"name": "y", "value": "0.2"},
+                {"name": "z", "value": "0.1"}]})
+    template.append("""[for lst in list]
+[lst],  
+[endfor]
+[for lst in listed_dict]
+[lst.name]: [lst.value]
+
+[endfor]""")
+
+    #------------------------------------------------------------
+    # Example 2
+    #------------------------------------------------------------
+    dict.append({"list": [0,1,2,3,4,5,6,7,8,9,10]})
+    template.append("""[for key in list]
+[if-index key is 3] [key] is hoge!!
+[elif-index key is 6] [key] is foo!!
+[elif-index key is 9] [key] is bar!!
+[elif-index key is first] [key] is first
+[elif-index key is last] Omoro-------!!!!
+[elif-index key is odd] [key] is odd number
+[elif-index key is even] [key] is even number
+[endif]
+[endfor]""")
+
+    #------------------------------------------------------------
+    # Example 3
+    #------------------------------------------------------------
+    dict.append({"key1": "a", "key2": "b"})
+    template.append("""[if key1 is a]
+The key1 is "a".
+[else]
+This key1 is not "a".
+[endif]""")
+
+    #------------------------------------------------------------
+    # Example 4
+    #------------------------------------------------------------
+    dict.append({"key1": "a", "key2": "b"})
+    template.append("""[if-any key1]
+key1 exists.
+[endif][if-any key3]
+key3 exists.
+[else]
+key3 does not exists.
+[endif]""")
+
+    dict.append({})
+    template.append("""
+[[]bracket]
+[# comment]
+""")
+
+    import yaml
+    if len(dict) == len(template):
+        for i in range(len(dict)-1,len(dict)):
+            t = Template(template[i])
+            print "-" * 60
+            print "Example:", i
+            print "-" * 60
+            print "Template:\n"
+            print template[i]
+            print "-" * 60
+            print "Dictionary:\n"
+            print yaml.dump(dict[i], default_flow_style=False)
+            print "-" * 60
+            print "Generated Script:\n"
+            print t.get_script()
+            print "-" * 60
+            print "Generated Text:\n"
+            print t.generate(dict[i])
+            print ""

Modified: trunk/OpenRTM-aist-Python/setup.py
===================================================================
--- trunk/OpenRTM-aist-Python/setup.py	2011-09-16 09:37:35 UTC (rev 478)
+++ trunk/OpenRTM-aist-Python/setup.py	2011-09-21 07:57:38 UTC (rev 479)
@@ -14,6 +14,8 @@
 from distutils import version
 from distutils.command.build import build
 from distutils.command.sdist import sdist
+from distutils.command.install import install
+from distutils.command.install_data import install_data
 
 
 core.DEBUG = False
@@ -25,32 +27,21 @@
 if os.sep == '/':
   g_os = "unix"
   if sys.version_info[0:3] >= (2, 6, 0):
-    dist_dir = os.path.join(sys.prefix,'lib','python'+sys.version[:3],'dist-packages')
-    if os.path.isdir(dist_dir):
-      sitedir = os.path.join("lib", "python" + sys.version[:3], "dist-packages")
-    else:
-      sitedir = os.path.join("lib", "python" + sys.version[:3], "site-packages")
     example_sitedir = os.path.join("share", "OpenRTM-aist", "examples", "python")
   elif sys.version_info[0:3] >= (2, 2, 0):
-    sitedir = os.path.join("lib", "python" + sys.version[:3], "site-packages")
     example_sitedir = os.path.join("share", "OpenRTM-aist", "examples", "python")
 elif os.sep == ':':
-  sitedir = os.path.join("lib", "site-packages")
   example_sitedir = os.path.join("lib", "site-packages")
 elif os.sep == '\\':
   print "os: win32"
   g_os = "win32"
-  sitedir = os.path.join("lib", "site-packages")
   example_sitedir = os.path.join("lib", "site-packages")
 else:
   if sys.version_info[0:3] >= (2, 2, 0):
-    sitedir = os.path.join("lib", "site-packages")
     example_sitedir = os.path.join("lib", "site-packages")
   else:
-    sitedir = "."
     example_sitedir = os.path.join("lib", "site-packages")
 
-
 def compile_idl(cmd, pars, files):
   """
   Put together command line for python stubs generation.
@@ -249,6 +240,7 @@
                   ('build_ext',     has_ext_modules),
                   ('build_scripts', has_scripts)]
 
+
 class OtherSetupForSdist(sdist):
 
   def initialize_options(self):
@@ -257,7 +249,6 @@
     sdist.initialize_options(self)
     if is_examples:
       self.template = "MANIFEST_examples.in"
-      #self.manifest = "MANIFEST"
       self.use_defaults = 0
       self.force_manifest = 1
       stub_dirs = ["SimpleService","SimpleService__POA"]
@@ -276,7 +267,6 @@
       for dir_ in stub_dirs:
         if not os.path.isdir(os.path.join(os.getcwd(),"OpenRTM_aist","RTM_IDL",dir_)):
           os.mkdir(os.path.join(os.getcwd(),"OpenRTM_aist","RTM_IDL",dir_))
-    
 
   def make_distribution (self):
     """Create the source distribution(s).  First, we create the release
@@ -316,6 +306,23 @@
       dir_util.remove_tree(base_dir, dry_run=self.dry_run)
 
 
+install_data_dir = None
+
+class Install(install):
+  def run(self):
+    global install_data_dir
+    install_data_dir = self.install_purelib
+    install.run(self)
+
+class InstallData(install_data):
+  def run(self):
+    global install_data_dir
+    for i in range(len(self.data_files)):
+      dir = os.path.join(install_data_dir,self.data_files[i][0])
+      self.data_files[i] = (dir,self.data_files[i][1])
+    install_data.run(self)
+
+
 ############################### data for setup() ###########################################
 
 
@@ -330,6 +337,9 @@
                  "OpenRTM_aist.RTM_IDL.SDOPackage",
                  "OpenRTM_aist.RTM_IDL.SDOPackage__POA",
                  "OpenRTM_aist.RTM_IDL.device_interfaces",
+                 "OpenRTM_aist.ext",
+                 "OpenRTM_aist.ext.sdo",
+                 "OpenRTM_aist.ext.sdo.observer",
                  "OpenRTM_aist.utils",
                  "OpenRTM_aist.utils.rtcd",
                  "OpenRTM_aist.utils.rtcprof",
@@ -440,13 +450,16 @@
                   "OpenRTM_aist.examples.Templates",
                   "OpenRTM_aist.examples.TkJoyStick",
                   "OpenRTM_aist.examples.TkLRFViewer",
+                  "OpenRTM_aist.ext",
+                  "OpenRTM_aist.ext.sdo",
+                  "OpenRTM_aist.ext.sdo.observer",
                   "OpenRTM_aist.utils",
                   "OpenRTM_aist.utils.rtcd",
                   "OpenRTM_aist.utils.rtcprof",
                   "OpenRTM_aist.utils.rtc-template",
                   "OpenRTM_aist.utils.rtm-naming"]
 
-unix_data_files = [(sitedir,['OpenRTM-aist.pth'])]
+unix_data_files = [("",['OpenRTM-aist.pth'])]
 
 idl_files= glob.glob(os.path.join('OpenRTM_aist',
                                   'RTM_IDL',
@@ -457,44 +470,49 @@
                                             'device_interfaces',
                                             '*.idl'))
 
-unix_data_files.append((os.path.join(sitedir,'OpenRTM_aist', 'utils', 'rtcd'),
+unix_data_files.append((os.path.join('OpenRTM_aist', 'utils', 'rtcd'),
                         ['OpenRTM_aist/utils/rtcd/rtcd.conf']))
-unix_data_files.append((os.path.join(sitedir,'OpenRTM_aist', 'utils', 'rtcd'),
+unix_data_files.append((os.path.join('OpenRTM_aist', 'utils', 'rtcd'),
                         ['OpenRTM_aist/utils/rtcd/rtc.conf']))
+unix_data_files.append((os.path.join('OpenRTM_aist', 'ext', 'sdo', 'observer'),
+                        ['OpenRTM_aist/ext/sdo/observer/rtc.conf']))
 
 for idl in idl_files:
-  unix_data_files.append((os.path.join(sitedir, 'OpenRTM_aist', 'RTM_IDL'),
+  unix_data_files.append((os.path.join('OpenRTM_aist', 'RTM_IDL'),
                           [idl]))
 
 for device_idl in device_if_idl_files:
-  unix_data_files.append((os.path.join(sitedir, 'OpenRTM_aist', 'RTM_IDL',
+  unix_data_files.append((os.path.join('OpenRTM_aist', 'RTM_IDL',
                                        'device_interfaces'), [device_idl]))
 
+import copy
+win32_data_files = copy.deepcopy(unix_data_files)
 
-win32_data_files = unix_data_files
-
-win32_data_files.append((os.path.join(sitedir,'OpenRTM_aist', 'examples'),
+win32_data_files.append((os.path.join('OpenRTM_aist', 'examples'),
                          ['OpenRTM_aist/examples/rtc.conf.sample']))
-win32_data_files.append((os.path.join(sitedir,'OpenRTM_aist', 'examples'),
+win32_data_files.append((os.path.join('OpenRTM_aist', 'examples'),
                          ['OpenRTM_aist/examples/component.conf']))
-win32_data_files.append((os.path.join(sitedir,'OpenRTM_aist', 'utils', 'rtcd'),
-                         ['OpenRTM_aist/utils/rtcd/rtcd.conf']))
+win32_data_files.append((os.path.join('OpenRTM_aist', 'ext', 'sdo', 'observer'),
+                         ['OpenRTM_aist/ext/sdo/observer/setup.bat']))
 
+unix_data_files.append((os.path.join('OpenRTM_aist', 'ext', 'sdo', 'observer'),
+                        ['OpenRTM_aist/ext/sdo/observer/setup.sh']))
+
 templates_xml = glob.glob(os.path.join('OpenRTM_aist',
                                        'examples',
                                        'Templates',
                                        '*.xml'))
 
 for tmp_xml in templates_xml:
-  win32_data_files.append((os.path.join(sitedir,'OpenRTM_aist', 'examples', 'Templates'),
+  win32_data_files.append((os.path.join('OpenRTM_aist', 'examples', 'Templates'),
                            [tmp_xml]))
 
 
 ##############################################################################################
 
 pkg_name      = "OpenRTM-aist-Python"
-pkg_version   = "1.0.0"
-pkg_desc      = "Python modules for OpenRTM-aist-1.0"
+pkg_version   = "1.1.0"
+pkg_desc      = "Python modules for OpenRTM-aist-1.1"
 pkg_author    = "Shinji Kurihara and Noriaki Ando"
 pkg_email     = "n-ando at aist.go.jp"
 pkg_url       = "http://www.openrtm.org/"
@@ -506,14 +524,14 @@
 National Institute of Advanced Industrial Science and Technology (AIST), Japan.
 Please see http://www.openrtm.org/ for more detail.
 """
-pkg_license   = "EPL"
+pkg_license   = "LGPL"
 
 examples_install = False
 
 cwd_ = os.getcwd()
 
-if cwd_.find("OpenRTM-aist-Python-example-1.0.0") != -1 or \
-      cwd_.find("openrtm-aist-python-example-1.0.0") != -1:
+if cwd_.find("OpenRTM-aist-Python-example-1.1.0") != -1 or \
+      cwd_.find("openrtm-aist-python-example-1.1.0") != -1:
 
   examples_install = True
 
@@ -530,10 +548,12 @@
                  url              = pkg_url,
                  long_description = pkg_long_desc,
                  license          = pkg_license,
-                 cmdclass         = { "build":Build, "build_idl":Build_idl, "build_doc":Build_doc, "sdist":OtherSetupForSdist },
+                 cmdclass         = { "build":Build, "build_idl":Build_idl, "build_doc":Build_doc,
+                                      "sdist":OtherSetupForSdist, "install":Install, "install_data":InstallData },
                  packages         = unix_packages,
                  scripts= ['OpenRTM_aist/utils/rtcprof/rtcprof_python',
-                           'OpenRTM_aist/utils/rtcd/rtcd_python'],
+                           'OpenRTM_aist/utils/rtcd/rtcd_python',
+                           'OpenRTM_aist/ext/sdo/observer/setup.sh'],
                  data_files       = unix_data_files)
       
     # for RTM zip (sdist)
@@ -549,11 +569,12 @@
                  url              = pkg_url,
                  long_description = pkg_long_desc,
                  license          = pkg_license,
-                 cmdclass         = { "build":Build, "build_idl":Build_idl, "build_doc":Build_doc, "sdist":OtherSetupForSdist  },
+                 cmdclass         = { "build":Build, "build_idl":Build_idl, "build_doc":Build_doc, "sdist":OtherSetupForSdist},
                  packages         = win32_packages,
                  scripts= ['OpenRTM_aist/utils/rtcprof/rtcprof_python.bat',
                            'OpenRTM_aist/utils/rtcd/rtcd_python.bat',
-                           'OpenRTM_aist/utils/rtcd/rtcd_python.exe'],
+                           'OpenRTM_aist/utils/rtcd/rtcd_python.exe',
+                           'OpenRTM_aist/ext/sdo/observer/setup.bat'],
                  data_files       = win32_data_files,
                  script_args      = ["sdist", "--format=zip"])
 
@@ -561,7 +582,7 @@
       # for examples (sdist)
       g_qkc_option = "-u"
       pkg_name      = "OpenRTM-aist-Python-example"
-      pkg_desc      = "Python example components for OpenRTM-aist-1.0"
+      pkg_desc      = "Python example components for OpenRTM-aist-1.1"
       is_examples   = True
 
       core.setup(name             = pkg_name,
@@ -584,7 +605,7 @@
         # for examples (build, install)
         g_qkc_option = "-u"
         pkg_name      = "OpenRTM-aist-Python-example"
-        pkg_desc      = "Python example components for OpenRTM-aist-1.0"
+        pkg_desc      = "Python example components for OpenRTM-aist-1.1"
 
         core.setup(name             = pkg_name,
                    version          = pkg_version,
@@ -609,11 +630,13 @@
                url              = pkg_url,
                long_description = pkg_long_desc,
                license          = pkg_license,
-               cmdclass         = { "build":Build, "build_idl":Build_idl, "build_doc":Build_doc  },
+               cmdclass         = { "build":Build, "build_idl":Build_idl, "build_doc":Build_doc,
+                                    "install":Install, "install_data":InstallData },
                packages         = win32_packages,
                scripts= ['OpenRTM_aist/utils/rtcprof/rtcprof_python.bat',
                          'OpenRTM_aist/utils/rtcd/rtcd_python.bat',
-                         'OpenRTM_aist/utils/rtcd/rtcd_python.exe'],
+                         'OpenRTM_aist/utils/rtcd/rtcd_python.exe',
+                         'OpenRTM_aist/ext/sdo/observer/setup.bat'],
                data_files       = win32_data_files)
 #               script_args      = ["sdist", "--format=zip"])
 


Property changes on: trunk/OpenRTM-aist-Python/setup.py
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/RELENG_1_0/OpenRTM-aist-Python/setup.py:345-395
/branches/RELENG_1_1/OpenRTM-aist-Python/setup.py:396-412
   + /branches/RELENG_1_0/OpenRTM-aist-Python/setup.py:345-395
/branches/RELENG_1_1/OpenRTM-aist-Python/setup.py:396-478



openrtm-commit メーリングリストの案内