Hi, >>Could you tell me what happens when you remove the <ipojo/> element too >>leaving the metadata.xml empty?
I get an error when there is no contents in the metadata.xml file. >>I could suggest you a trick to define a bogus >>component inside metadata.xml(Will require you to maintain a bogus class) >>so that eclipse-ipojo-plugin will not fail on metadata.xml and move along >>its way with annotations. I added a bogus class into the cook.michael package and put the @Component/@Instantiate/@Validate/@Invalidate back into the code. Then added this component to the metadata.xml file: <ipojo> <component className="cook.michael.BogusClass"/> </ipojo> The above results in the start and stop not being invoked. >>Instead of embedding Felix into eclipse you can use its own Equinox >>launcher. I'm developing atop Felix, because the target device is Felix based, so I would like to keep it on the same platform. Thank you for your help. Mike On 10/11/12 9:47 PM, "Göktürk Gezer" <[email protected]> wrote: >On Fri, Oct 12, 2012 at 4:25 AM, Cook, Michael J. (OCTO) < >[email protected]> wrote: > >> Göktürk, >> >> Thank you! I used #2 below and it worked well. I was able to launch the >> bundle, and I saw it output the traces I had been looking for. >> > >Cool ! > > >> >> On the first, if I remove the contents of the metadata.xml file, how >>can I >> use iPOJO to generate the bundle? If I leave in the <ipojo/> element, >>and >> I run iPOJO's "Create Bundle", I get a warning: "Neither component >>types, >> nor instances in /Users/mcook008/Workspaces/MyEclipse >> 8.6/iPojoTest/metadata.xml". Start and stop are not called, although the >> class is marked with @Component and @Instantiate and start/stop is >>marked >> with @Validate/@Invalidate. >> > >Well, I actually never used eclipse-ipojo-plugin before but it seems to be >dependent on metadata.xml but also sees the annotations on its way. > >Could you tell me what happens when you remove the <ipojo/> element too >leaving the metadata.xml empty? > >If above trick didn't work and you want to stick with eclipse-ipojo-plugin >while using annotations. I could suggest you a trick to define a bogus >component inside metadata.xml(Will require you to maintain a bogus class) >so that eclipse-ipojo-plugin will not fail on metadata.xml and move along >its way with annotations. > >Also it seems to me that your development environment is heavy. Instead of >embedding Felix into eclipse you can use its own Equinox launcher. >I suggest you to have a look at >http://felix.apache.org/site/apache-felix-ipojo-eclipse-integration.html >where >you can see basic setup.(You can use annotations or metadata of your >choice >in this setup) > > >Gokturk > > >> >> Mike >> >> >> >> On 10/11/12 8:54 PM, "Göktürk Gezer" <[email protected]> wrote: >> >> >Well i thought at first that you didn't specify metadata.xml but i see >>now >> >that you did. Mixing metadata.xml and annotations for one single >>component >> >is a mistake. For same component you must go with one of them. >> > >> >So there are 2 different ways for you: >> > >> >1- Using only annotations: Just disable the metadata.xml (easily >>delete it >> >or comment out the content ) and leave the annotations as it is. >> >2- Using only medata.xml: If you want to use metadata.xml then remove >>all >> >annotations including @validate and @invalidate and make sure your >> >metadata.xml looks like this: >> > >> ><ipojo> >> ><component className="cook.michael.MyComponentImpl"> >> > <callback transition="validate" method="start"/> >> > <callback transition="invalidate" method="stop"/> >> ></component> >> ><instance component="cook.michael.MyComponentImpl"/> >> ></ipojo> >> > >> >Either way should bring you where you want. Just don't mix annotation >>and >> >metadata usage for same component. >> > >> >Regards, >> >Gokturk >> > >> > >> > >> >On Fri, Oct 12, 2012 at 3:32 AM, Cook, Michael J. (OCTO) < >> >[email protected]> wrote: >> > >> >> Hi Göktürk, >> >> >> >> OK... Tried that. Still the same thing. There's not much to my >>code, >> >>so >> >> I'm including it below. Please let me know if you see anything. >> >> >> >> Thank you for helping me, >> >> Mike >> >> >> >> >> >> MyComponentImpl.java: >> >> >> >> package cook.michael; >> >> >> >> import java.io.BufferedWriter; >> >> import java.io.File; >> >> import java.io.FileWriter; >> >> import java.io.IOException; >> >> >> >> import org.apache.felix.ipojo.annotations.Component; >> >> import org.apache.felix.ipojo.annotations.Invalidate; >> >> import org.apache.felix.ipojo.annotations.Validate; >> >> import org.apache.felix.ipojo.annotations.Instantiate; >> >> >> >> @Component >> >> @Instantiate >> >> public class MyComponentImpl { >> >> >> >> @Validate >> >> public void start() throws IOException { >> >> System.err.println("Starting: " ); >> >> >> >> System.out.println("I'm starting..."); >> >> try{ >> >> // Create file >> >> FileWriter fstream = new >> >>FileWriter("/Users/mcook008/out.txt"); >> >> BufferedWriter out = new BufferedWriter(fstream); >> >> out.write("Hello Java"); >> >> //Close the output stream >> >> out.close(); >> >> }catch (Exception e){//Catch exception if any >> >> System.err.println("Error: " + e.getMessage()); >> >> } >> >> throw new IOException() ; >> >> } >> >> >> >> @Invalidate >> >> public void stop() { >> >> System.out.println("I'm leaving !"); >> >> } >> >> } >> >> >> >> >> >> metadata.xml: >> >> >> >> <ipojo> >> >> <component className="cook.michael.MyComponentImpl"/> >> >> <instance component="cook.michael.MyComponentImpl"/> >> >> </ipojo> >> >> >> >> >> >> >> >> iPojoTest.bnd: >> >> >> >> Import-Package: * >> >> Export-Package: * >> >> #Private-Package: >> >> >> >> >> >> Generated manefest.mf: >> >> >> >> Manifest-Version: 1.0 >> >> Export-Package: >>org.apache.felix.ipojo.handler.temporal,org.apache.fel >> >> >>ix.ipojo.transaction,org.apache.felix.ipojo.extender,org.apache.felix >> >> >>.ipojo.whiteboard,org.apache.felix.ipojo.handlers.event,org.apache.fe >> >> >>lix.ipojo.handlers.jmx,org.apache.felix.ipojo.annotations,cook.michae >> >> l >> >> iPOJO-Components: component { >>$classname="cook.michael.MyComponentImpl >> >> " manipulation { method { $name="$init" }method { $name="start" >>}meth >> >> od { $name="stop" }}}instance { >>$component="cook.michael.MyComponentI >> >> mpl" }component { $name="cook.michael.MyComponentImpl" >>$classname="co >> >> ok.michael.MyComponentImpl" $public="true" >>org.apache.felix.ipojo.ann >> >> otations:instantiate { }callback { $transition="invalidate" >>$method=" >> >> stop" }callback { $transition="validate" $method="start" >>}manipulatio >> >> n { method { $name="$init" }method { $name="start" }method { >>$name="s >> >> top" }}} >> >> Built-By: clement >> >> Tool: Bnd-0.0.249 >> >> Bundle-Name: Apache Felix iPOJO Annotations >> >> Created-By: 1.6.0_35 (Apple Inc.) & iPOJO >> >> Bundle-Vendor: The Apache Software Foundation >> >> Bundle-Version: 1.8.2 >> >> Build-Jdk: 1.6.0_31 >> >> Bnd-LastModified: 1350001458935 >> >> Bundle-ManifestVersion: 2 >> >> Bundle-Description: iPOJO Annotations >> >> Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt >> >> Bundle-DocURL: >>http://felix.apache.org/site/how-to-use-ipojo-annotatio >> >> ns.html >> >> Import-Package: org.osgi.service.log;version=1.3, >>org.apache.felix.ipo >> >> jo.handler.temporal, org.apache.felix.ipojo.transaction, >>org.apache.f >> >> elix.ipojo.architecture;version=0.9.0, >>org.apache.felix.ipojo.extende >> >> r, org.apache.felix.ipojo.whiteboard, >>org.apache.felix.ipojo;version= >> >> 0.9.0, org.apache.felix.ipojo.handlers.event, >>org.apache.felix.ipojo. >> >> handlers.jmx, org.osgi.service.cm;version=1.2, >>org.apache.felix.ipojo >> >> .annotations, cook.michael >> >> Bundle-SymbolicName: iPojoTest >> >> Originally-Created-By: Apache Maven Bundle Plugin >> >> >> >> >> >> >> >> >> >> On 10/11/12 7:54 PM, "Göktürk Gezer" <[email protected]> wrote: >> >> >> >> >Hi, >> >> > >> >> >First of all @Component is mandatory.(For annotation based usage). >> >> > >> >> >But this only defines your component. To actually instantiate it you >> >> >should >> >> >do it deliberately. One way to do that is using @Instantiate >> >>annotation. >> >> > >> >> >So your code would be like: >> >> > >> >> >@Component >> >> >@Instantiate >> >> >public class foo{ >> >> > >> >> > @Validate >> >> > public void start() >> >> >.......... >> >> >.......... >> >> >} >> >> > >> >> >On Fri, Oct 12, 2012 at 1:00 AM, Cook, Michael J. (OCTO) < >> >> >[email protected]> wrote: >> >> > >> >> >> Sorry. Just rechecked. Used @ Component on the class. And >> >> >> @Invalidate/@validate on the methods. Just tried removing the >> >> >>@Component. >> >> >> Same result. No output. >> >> >> >> >> >> Mike >> >> >> Michael Cook >> >> >> VP Technology Innovation >> >> >> Comcast >> >> >> One Comcast Center >> >> >> Philadelphia, PA 19103 >> >> >> (o) 215-286-8260 >> >> >> (m) 609-458-0332 >> >> >> >> >> >> ----- Original Message ----- >> >> >> From: Cook, Michael J. (OCTO) >> >> >> Sent: Thursday, October 11, 2012 05:47 PM >> >> >> To: '[email protected]' <[email protected]> >> >> >> Subject: Re: Getting Started with iPOJO >> >> >> >> >> >> I used @validate/@invalidate alone. >> >> >> >> >> >> Mike >> >> >> >> >> >> Michael Cook >> >> >> VP Technology Innovation >> >> >> Comcast >> >> >> One Comcast Center >> >> >> Philadelphia, PA 19103 >> >> >> (o) 215-286-8260 >> >> >> (m) 609-458-0332 >> >> >> >> >> >> ----- Original Message ----- >> >> >> From: Göktürk Gezer [mailto:[email protected]] >> >> >> Sent: Thursday, October 11, 2012 05:39 PM >> >> >> To: [email protected] <[email protected]> >> >> >> Subject: Re: Getting Started with iPOJO >> >> >> >> >> >> Hi, >> >> >> >> >> >> I need to ask this first since it's not on your code snippet: Did >>you >> >> >>use >> >> >> @Component annotation for class where you've declared your start() >> >> >>stop() >> >> >> methods? Or did you use @Validate,@Invalidate alone? >> >> >> >> >> >> >> >> >> *Regards,* >> >> >> *Gokturk* >> >> >> >> >> >> On Thu, Oct 11, 2012 at 8:13 PM, Cook, Michael J. (OCTO) < >> >> >> [email protected]> wrote: >> >> >> >> >> >> > Hi, >> >> >> > >> >> >> > I can't seem to find a good article that will help me resolve >>the >> >> >> "getting >> >> >> > started" issue I am facing. >> >> >> > >> >> >> > I am using Eclipse Juno (4.2) on my Mac. >> >> >> > >> >> >> > I have downloaded and installed the iPOJO eclipse plugin, from: >> >> >> > http://clement.plop-plop.net/update/ >> >> >> > >> >> >> > I have created a sample project following the instructions at: >> >> >> > http://felix.apache.org/site/ipojo-eclipse-plug-in.html >> >> >> > >> >> >> > I have integrated Felix into Eclipse as a project, following >> >> >>instructions >> >> >> > here: >> >> http://felix.apache.org/site/integrating-felix-with-eclipse.html >> >> >> > >> >> >> > I have downloaded the following iPOJO bundle: >> >> >> > org.apache.felix.ipojo-1.8.2.jar >> >> >> > >> >> >> > I've launched Felix in the Eclipse console and I've installed >>the >> >> >> > org.apache.felix.ipojo-1.8.2.jar bundle and started it. >> >> >> > >> >> >> > I've created a test bundle using iPOJO called iPojoTest.jar and >> >>I've >> >> >> > installed it and started it in the OSGI console. >> >> >> > >> >> >> > I run bundles in the console and I get: >> >> >> > >> >> >> > g! bundles >> >> >> > >> >> >> > 0|Active | 0|org.apache.felix.framework (3.0.7) >> >> >> > >> >> >> > 1|Active | 1|org.apache.felix.bundlerepository >>(1.6.2) >> >> >> > >> >> >> > 2|Active | 1|org.apache.felix.gogo.command (0.6.1) >> >> >> > >> >> >> > 3|Active | 1|org.apache.felix.gogo.runtime (0.6.1) >> >> >> > >> >> >> > 4|Active | 1|org.apache.felix.gogo.shell (0.6.1) >> >> >> > >> >> >> > 12|Active | 1|iPojoTest (1.4.0) >> >> >> > >> >> >> > 13|Active | 1|org.apache.felix.ipojo (1.8.2) >> >> >> > >> >> >> > >> >> >> > So, the bundle seems to have started. >> >> >> > >> >> >> > But I don't get any console output from my sysoutsŠ >> >> >> > >> >> >> > Here are the start() and stop() methods: >> >> >> > >> >> >> > >> >> >> > @Validate >> >> >> > >> >> >> > public void start() throws IOException { >> >> >> > >> >> >> > System.out.println("I'm starting..."); >> >> >> > >> >> >> > try{ >> >> >> > >> >> >> > // Create file >> >> >> > >> >> >> > FileWriter fstream = new >> >> >> > FileWriter("/Users/mcook008/out.txt"); >> >> >> > >> >> >> > BufferedWriter out = new >>BufferedWriter(fstream); >> >> >> > >> >> >> > out.write("Hello Java"); >> >> >> > >> >> >> > //Close the output stream >> >> >> > >> >> >> > out.close(); >> >> >> > >> >> >> > }catch (Exception e){//Catch exception if any >> >> >> > >> >> >> > System.err.println("Error: " + >>e.getMessage()); >> >> >> > >> >> >> > } >> >> >> > >> >> >> > throw new IOException() ; >> >> >> > >> >> >> > } >> >> >> > >> >> >> > @Invalidate >> >> >> > >> >> >> > public void stop() { >> >> >> > >> >> >> > System.out.println("I'm leaving !"); >> >> >> > >> >> >> > } >> >> >> > >> >> >> > >> >> >> > >> >> >> > >> >> >> > I added in the file write to see if a file would be created. >>There >> >> >>is no >> >> >> > file created. So, while OSGi thinks the bundle is ACTIVE, the >> >>start >> >> >> method >> >> >> > appears never have to been called. >> >> >> > >> >> >> > >> >> >> > Can anyone tell me what I may have done wrong or provide a clue >>as >> >>to >> >> >> what >> >> >> > to look at to help diagnose the problem? >> >> >> > >> >> >> > >> >> >> > Thanks, >> >> >> > >> >> >> > Mike >> >> >> > >> >> >> > >> >> >> >> >> >> >> >> >> --------------------------------------------------------------------- >> >> To unsubscribe, e-mail: [email protected] >> >> For additional commands, e-mail: [email protected] >> >> >> >> >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [email protected] >> For additional commands, e-mail: [email protected] >> >> --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]

