Yes, I just had fixed the issue and seen your mail. It was successful. However when I stop the bundle and again start it, shows :
anupam@anupam:~/Dev/ApacheCelix/git_celix/DM_proj_001/build/deploy/myproject-deploy$ sh run.sh -> Anupam, Hello World Launcher: Framework Started -> lb ID State Name 0 Active framework 1 Active apache_celix_shell 2 Active apache_celix_shell_tui 3 Active dm_bundle_001 -> stop 3 Anupam, Goodbye World -> lb ID State Name 0 Active framework 1 Active apache_celix_shell 2 Active apache_celix_shell_tui 3 Resolved dm_bundle_001 -> start 3 ERROR: Illegal argument [70003]: "Failed to get property [name=DM_HELLO]" at bundleContext_getProperty(/home/anupam/Dev/ApacheCelix/git_celix/celix-src/framework/private/src/bundle_context.c:374) Anupam, Hello World Thanks & Regards Anupam Datta On Thu, Jun 9, 2016 at 5:03 PM, Gabriele Ricciardi <[email protected] > wrote: > Hi Anupam, > > I think I found your issue: you declared in your activator > > #define HELLO_ACTIVATOR "DM HELLO" > > Defines in general should not contain spaces, but in this case it's even > more important because the properties_load() function parses properties in > the format KEY = VALUE , where both KEY and VALUE are strings containing > "conventional characters (i.e. a-z, A-Z, 1-9, . , - , _ ... and I > wouldn't dare to use something different :-) ) > > Try to fix your define in > > #define HELLO_ACTIVATOR "DM_HELLO" > > and then put in your config.properties (by the way, I could not find custom > properties in the config.properties you sent us) > > DM_HELLO=<whatever_string.you-prefer> > > I tried it right now starting from your project and it works fine. > > Regards, > > Gabriele > > > 2016-06-09 11:45 GMT+02:00 Anupam Datta <[email protected]>: > > > Hi I tried your suggestion and it showed (null) on the test.prop ie. it > > didn't take the property value from config.properties > > > > I am sending the directory structure and my built proj > > > > I followed the instruction : > > > https://github.com/apache/celix/blob/develop/documents/getting_started/readme.md > > > > anupam@anupam:~/Dev/ApacheCelix/git_celix/DM_proj_001$ tree > > . > > ├── build > > │ ├── bundles > > │ │ └── dm_bundle_001 > > │ │ ├── CMakeFiles > > │ │ │ ├── CMakeDirectoryInformation.cmake > > │ │ │ ├── dm_bundle_001_bundle.dir > > │ │ │ │ ├── build.make > > │ │ │ │ ├── cmake_clean.cmake > > │ │ │ │ ├── DependInfo.cmake > > │ │ │ │ ├── depend.internal > > │ │ │ │ ├── depend.make > > │ │ │ │ └── progress.make > > │ │ │ ├── dm_bundle_001.dir > > │ │ │ │ ├── build.make > > │ │ │ │ ├── C.includecache > > │ │ │ │ ├── cmake_clean.cmake > > │ │ │ │ ├── DependInfo.cmake > > │ │ │ │ ├── depend.internal > > │ │ │ │ ├── depend.make > > │ │ │ │ ├── flags.make > > │ │ │ │ ├── link.txt > > │ │ │ │ ├── private > > │ │ │ │ │ └── src > > │ │ │ │ │ └── activator.c.o > > │ │ │ │ └── progress.make > > │ │ │ ├── myproject-deploy.dir > > │ │ │ │ ├── build.make > > │ │ │ │ ├── cmake_clean.cmake > > │ │ │ │ ├── DependInfo.cmake > > │ │ │ │ ├── depend.internal > > │ │ │ │ ├── depend.make > > │ │ │ │ └── progress.make > > │ │ │ └── progress.marks > > │ │ ├── cmake_install.cmake > > │ │ ├── dm_bundle_001_content > > │ │ │ └── libdm_bundle_001.so.1 > > │ │ ├── dm_bundle_001_gen > > │ │ │ ├── lib-dm_bundle_001-copy-timestamp > > │ │ │ ├── MANIFEST.MF > > │ │ │ ├── MANIFEST.step1 > > │ │ │ └── MANIFEST.step2 > > │ │ ├── dm_bundle_001.zip > > │ │ ├── libdm_bundle_001.so -> libdm_bundle_001.so.1 > > │ │ ├── libdm_bundle_001.so.1 -> libdm_bundle_001.so.1.0.0 > > │ │ ├── libdm_bundle_001.so.1.0.0 > > │ │ ├── Makefile > > │ │ └── myproject-deploy-timestamp > > │ ├── CMakeCache.txt > > │ ├── CMakeFiles > > │ │ ├── 3.5.1 > > │ │ │ ├── CMakeCCompiler.cmake > > │ │ │ ├── CMakeDetermineCompilerABI_C.bin > > │ │ │ ├── CMakeSystem.cmake > > │ │ │ └── CompilerIdC > > │ │ │ ├── a.out > > │ │ │ └── CMakeCCompilerId.c > > │ │ ├── bundles.dir > > │ │ │ ├── build.make > > │ │ │ ├── cmake_clean.cmake > > │ │ │ ├── DependInfo.cmake > > │ │ │ ├── depend.internal > > │ │ │ ├── depend.make > > │ │ │ └── progress.make > > │ │ ├── cmake.check_cache > > │ │ ├── CMakeDirectoryInformation.cmake > > │ │ ├── CMakeOutput.log > > │ │ ├── CMakeRuleHashes.txt > > │ │ ├── CMakeTmp > > │ │ ├── deploy.dir > > │ │ │ ├── build.make > > │ │ │ ├── cmake_clean.cmake > > │ │ │ ├── DependInfo.cmake > > │ │ │ ├── depend.internal > > │ │ │ ├── depend.make > > │ │ │ └── progress.make > > │ │ ├── feature_tests.bin > > │ │ ├── feature_tests.c > > │ │ ├── Makefile2 > > │ │ ├── Makefile.cmake > > │ │ ├── progress.marks > > │ │ ├── rat.dir > > │ │ │ ├── build.make > > │ │ │ ├── cmake_clean.cmake > > │ │ │ ├── DependInfo.cmake > > │ │ │ └── progress.make > > │ │ └── TargetDirectories.txt > > │ ├── cmake_install.cmake > > │ ├── deploy > > │ │ └── myproject-deploy > > │ │ ├── config.properties > > │ │ ├── config.properties.step1 > > │ │ ├── core > > │ │ ├── myproject-deploy > > │ │ └── run.sh > > │ └── Makefile > > ├── bundles > > │ └── dm_bundle_001 > > │ ├── CMakeLists.txt > > │ └── private > > │ └── src > > │ └── activator.c > > └── CMakeLists.txt > > > > 24 directories, 78 files > > > > And my project is attached. > > > > Thanks & Regards > > Anupam Datta > > > > On Thu, Jun 2, 2016 at 8:28 PM, Gabriele Ricciardi < > > [email protected]> wrote: > > > >> Hi Anupam, > >> > >> In principle your code looks correct, so I tried (more or less) the same > >> as you and for me it works fine. > >> > >> Just to be sure, and also to give you a reference example, find attached > >> a sample project based on the hello_world. > >> > >> Probably you already know how to build a bundle, but just in case (and > >> assuming you already have Celix correctly installed on your machine) > >> > >> - Untar the project > >> - Create a hello_props_build folder besides it > >> - cd hello_props_build && ccmake > >> -DCELIX_DIR=<path_to_your_celix_install_path> ../hello_props > >> - make && make deploy > >> - cd deploy/hello_properties > >> - echo 'DM_HELLO=test.props' >> config.properties > >> - sh run.sh > >> > >> This should print the Hello World and then the property just appended to > >> the config.properties . > >> > >> I hope this clarify a bit! > >> > >> Regards, > >> > >> Gabriele Ricciardi > >> > >> > >> 2016-06-01 12:10 GMT+02:00 Anupam Datta <[email protected]>: > >> > >>> I tried with config.properties but not sure how actually I can achieve > >>> that. Do you have any example code or clear docs ? > >>> I had added DM_HELLO="hello_properties" in config.properties file > >>> and in activator.c file I added : > >>> > >>> #define HELLO_ACTIVATOR "DM HELLO" //DM_HELLO is the name of the > property > >>> mentioned in config.properties file > >>> char *dm_hello_data = NULL; > >>> > >>> Then inside bundleActivator_create(... > >>> I added bundleContext_getProperty(context, HELLO_ACTIVATOR, > >>> &dm_hello_data); > >>> > >>> Inside bundleActivator_start(.... > >>> I added : printf("%sHello %s\n", dm_hello_data, data->word); > >>> > >>> But I could not get "hello_properties" printed in last line ie . > >>> printf("%sHello > >>> %s\n", dm_hello_data, data->word); > >>> > >>> Let me know what is the exact way of adding and retrieving from > >>> config.properties > >>> > >>> Thanks & Regards > >>> Anupam Datta > >>> > >>> On Fri, May 27, 2016 at 1:36 PM, Pepijn Noltes <[email protected] > > > >>> wrote: > >>> > >>> > Hi, > >>> > > >>> > On Thu, May 26, 2016 at 9:11 AM, Anupam Datta <[email protected]> > >>> wrote: > >>> > > Hi Pepjin, > >>> > > I had some query regarding celix : > >>> > > > >>> > > 1. is it possible to pass arguments to bundles ? ie. at the time of > >>> > > starting I want to send some configurable parameters. > >>> > > >>> > Yes. Currently there are two ways. > >>> > > >>> > 1 Add a property to the config.properties file. A bundle can > retrieve > >>> > the values using the bundleContext_getProperty. See [1] and [2]. > >>> > When possible we try to follow the Java OSGi api (adapted to C). > >>> > 2 Declare a env variable. In case of the Celix > >>> > bundleContext_getProperty method if a property is not present in the > >>> > framework properties (read the config.properties file) the framework > >>> > will look if there is an environment variable present with the > >>> > requested property name > >>> > > >>> > [1] > >>> > > >>> > https://osgi.org/javadoc/r4v43/core/org/osgi/framework/BundleContext.html#getProperty%28java.lang.String%29 > >>> > [2] > >>> > > >>> > https://github.com/apache/celix/blob/master/framework/public/include/bundle_context.h > >>> > > >>> > Another way is to use the config admin, this is more flexible but > also > >>> > more complex. And there are still some TODO's left for the config > >>> > admin. > >>> > > >>> > > >>> > > 2. What is the way of remotely controlling and data capturing via > >>> celix > >>> > > bundles ? Is there any server where device can register itself via > >>> celix > >>> > > and from server through browser we can start stop bundle and fetch > >>> data? > >>> > > I had seen the remote shell and remote service folder but not much > >>> > > documentation is available there in the folders to understand how > >>> exactly > >>> > > it works. > >>> > > >>> > For remote controlling the bundles you can use the remote shell and > >>> Apache > >>> > ACE. > >>> > For remote shell you can try the remote_shell example (in the > >>> > deploy/remote_shell folder of the build). > >>> > When started use a telnet program to connect (telnet localhost 6666). > >>> > The remote_shell depends on the shell bundle. > >>> > Note that remote_shell is a nice feature to gain remote control, but > >>> > is (by design) not secure. > >>> > > >>> > An other option is to use Apache ACE. In this case different devices > >>> > can register to Apache ACE using the deployment_admin bundle. You can > >>> > then use Apache ACE to define which bundles should be deployed on > >>> > which devices. See Apache ACE [3] for more info. You can combine this > >>> > with remote shell for more control. > >>> > > >>> > [3] https://ace.apache.org/ > >>> > > >>> > > >>> > > >>> > Remote services can be used to create distributed application base on > >>> > services. The Apache Celix remote services implementation works with > >>> > the Amdatu Remote Services implementation [4] > >>> > The remote-services-cfg example should work out of the box to give > you > >>> an > >>> > idea. > >>> > Note that although technically remote services works, you still need > >>> > to put considerable effort in it to get something working. > >>> > We are aware of this and are working on a solution to simplify the > use > >>> > of remote services, but for the time being manually effort is needed > >>> > to get it running. > >>> > > >>> > [4] http://www.amdatu.org/components/remote.html > >>> > > >>> > Could you specify in more details why do want to build / meand with > >>> > 'data capturing via celix' ? Because I am not sure if the remote > >>> > services is want you want (synchronized communication). > >>> > > >>> > > >>> > > >>> > > > >>> > > Thanks & Regards > >>> > > Anupam Datta > >>> > > > >>> > > On Tue, May 24, 2016 at 12:42 AM, Anupam Datta <[email protected]> > >>> wrote: > >>> > > > >>> > >> Thank you Pepjin. I will definitely try that out. > >>> > >> > >>> > >> Thanks & Regards > >>> > >> Anupam Datta > >>> > >> On 24-May-2016 12:28 AM, "Pepijn Noltes" <[email protected]> > >>> > wrote: > >>> > >> > >>> > >>> Hi Anupam, > >>> > >>> > >>> > >>> Please use the documentation at > >>> > >>> https://github.com/apache/celix/tree/develop/documents > >>> > >>> The idea is when a new Celix release has been made, the website > >>> will > >>> > >>> refer to documentation github. > >>> > >>> > >>> > >>> On Mon, May 23, 2016 at 11:52 AM, Anupam Datta <[email protected] > > > >>> > wrote: > >>> > >>> > Hi, > >>> > >>> > I had tried with git version as per the doc : > >>> > >>> > https://celix.apache.org/documentation/getting_started.html > >>> > >>> > after > >>> > >>> > make all > >>> > >>> > I did : > >>> > >>> > #install the framework and the bundles > >>> > >>> > sudo make install-all > >>> > >>> > > >>> > >>> > It showed me error : make: *** No rule to make target > >>> 'install-all'. > >>> > >>> Stop. > >>> > >>> > > >>> > >>> > So I did sudo make install > >>> > >>> > > >>> > >>> > log file attached : install_log.txt > >>> > >>> > > >>> > >>> > I created the demo project . After creating, built it and > another > >>> > error > >>> > >>> > showed : > >>> > >>> > > >>> > >>> > -- Using jar to create bundles > >>> > >>> > -- bundle function is deprecated. update target 'hello_001' to > >>> > >>> add_bundle > >>> > >>> > -- Configuring done > >>> > >>> > CMake Error at > >>> > >>> > > >>> /usr/local/share/celix/cmake/modules/cmake_celix/Packaging.cmake:149 > >>> > >>> > (add_library): > >>> > >>> > Cannot find source file: > >>> > >>> > > >>> > >>> > ( > >>> > >>> > > >>> > >>> > Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh > >>> .h++ .hm > >>> > >>> .hpp > >>> > >>> > .hxx .in .txx > >>> > >>> > Call Stack (most recent call first): > >>> > >>> > > >>> > >>> > >>> > > >>> > /usr/local/share/celix/cmake/modules/cmake_celix/PackagingLegacy.cmake:41 > >>> > >>> > (add_bundle) > >>> > >>> > bundles/hello_001/CMakeLists.txt:4 (bundle) > >>> > >>> > > >>> > >>> > >>> > >>> The documentation was incorrect. The should be no parentheses > >>> around > >>> > >>> the bundle SOURCES. > >>> > >>> If you remove them, it should work .... > >>> > >>> > >>> > >>> > > >>> > >>> > CMake Error: CMake can not determine linker language for > target: > >>> > >>> hello_001 > >>> > >>> > CMake Error: Cannot determine link language for target > >>> "hello_001". > >>> > >>> > -- Generating done > >>> > >>> > -- Build files have been written to: > >>> > >>> > /home/anupam/Dev/ApacheCelix/git_celix/DM_proj_001-build > >>> > >>> > > >>> > >>> > So what was the issue with it? The directory structure of the > >>> demo > >>> > proj > >>> > >>> : > >>> > >>> > > >>> > >>> > ├── DM_proj_001 > >>> > >>> > │ ├── bundles > >>> > >>> > │ │ └── hello_001 > >>> > >>> > │ │ ├── CMakeLists.txt > >>> > >>> > │ │ └── private > >>> > >>> > │ │ └── src > >>> > >>> > │ │ └── activator.c > >>> > >>> > │ └── CMakeLists.txt > >>> > >>> > └── DM_proj_001-build > >>> > >>> > ├── bundles > >>> > >>> > │ └── hello_001 > >>> > >>> > │ ├── CMakeFiles > >>> > >>> > │ │ ├── CMakeDirectoryInformation.cmake > >>> > >>> > │ │ ├── hello_001_bundle.dir > >>> > >>> > │ │ │ ├── build.make > >>> > >>> > │ │ │ ├── cmake_clean.cmake > >>> > >>> > │ │ │ ├── DependInfo.cmake > >>> > >>> > │ │ │ └── progress.make > >>> > >>> > │ │ ├── hello_001.dir > >>> > >>> > │ │ │ ├── build.make > >>> > >>> > │ │ │ ├── cmake_clean.cmake > >>> > >>> > │ │ │ ├── DependInfo.cmake > >>> > >>> > │ │ │ ├── depend.make > >>> > >>> > │ │ │ ├── flags.make > >>> > >>> > │ │ │ └── progress.make > >>> > >>> > │ │ └── progress.marks > >>> > >>> > │ ├── cmake_install.cmake > >>> > >>> > │ ├── hello_001_gen > >>> > >>> > │ │ ├── MANIFEST.MF > >>> > >>> > │ │ ├── MANIFEST.step1 > >>> > >>> > │ │ └── MANIFEST.step2 > >>> > >>> > │ └── Makefile > >>> > >>> > ├── CMakeCache.txt > >>> > >>> > ├── CMakeFiles > >>> > >>> > │ ├── 3.5.1 > >>> > >>> > │ │ ├── CMakeCCompiler.cmake > >>> > >>> > │ │ ├── CMakeDetermineCompilerABI_C.bin > >>> > >>> > │ │ ├── CMakeSystem.cmake > >>> > >>> > │ │ └── CompilerIdC > >>> > >>> > │ │ ├── a.out > >>> > >>> > │ │ └── CMakeCCompilerId.c > >>> > >>> > │ ├── bundles.dir > >>> > >>> > │ │ ├── build.make > >>> > >>> > │ │ ├── cmake_clean.cmake > >>> > >>> > │ │ ├── DependInfo.cmake > >>> > >>> > │ │ └── progress.make > >>> > >>> > │ ├── cmake.check_cache > >>> > >>> > │ ├── CMakeDirectoryInformation.cmake > >>> > >>> > │ ├── CMakeOutput.log > >>> > >>> > │ ├── CMakeRuleHashes.txt > >>> > >>> > │ ├── CMakeTmp > >>> > >>> > │ ├── deploy.dir > >>> > >>> > │ │ ├── build.make > >>> > >>> > │ │ ├── cmake_clean.cmake > >>> > >>> > │ │ ├── DependInfo.cmake > >>> > >>> > │ │ └── progress.make > >>> > >>> > │ ├── feature_tests.bin > >>> > >>> > │ ├── feature_tests.c > >>> > >>> > │ ├── Makefile2 > >>> > >>> > │ ├── Makefile.cmake > >>> > >>> > │ ├── progress.marks > >>> > >>> > │ ├── rat.dir > >>> > >>> > │ │ ├── build.make > >>> > >>> > │ │ ├── cmake_clean.cmake > >>> > >>> > │ │ ├── DependInfo.cmake > >>> > >>> > │ │ └── progress.make > >>> > >>> > │ └── TargetDirectories.txt > >>> > >>> > ├── cmake_install.cmake > >>> > >>> > └── Makefile > >>> > >>> > > >>> > >>> > Please share your view on it. let me know if any other log is > >>> needed. > >>> > >>> > > >>> > >>> > Thanks & Regards > >>> > >>> > Anupam Datta > >>> > >>> > > >>> > >>> > >>> > >>> Greetings, > >>> > >>> Pepijn > >>> > >>> > >>> > >> > >>> > > >>> > >> > >> > > >
