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]
>
>