Just to be on the same page I installed eclipse-ipojo-plugin too. First finding : you don't need a bogus component. You can just type <ipojo> <component/> </ipojo>
inside you metadata.xml and it'll pass silently. Besides you might be hitting a bug we've fixed in trunk, because in the same scenario I suggested to you I saw some elements in MANIFEST which shouldn't be there. Could you share me your MANIFEST for the final state(bogus metadata.xml + annotations)? On Fri, Oct 12, 2012 at 5:05 AM, Cook, Michael J. (OCTO) < [email protected]> wrote: > 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] > >

