Hi Rodrigo,

(I've started a new thread for this topic - rather than have multiple topics
in one thread)

On 19/09/2007, Rodrigo Madera <[EMAIL PROTECTED]> wrote:
>
> Hello again,
>
> Comming with another problem, I have a service called Greeter with
> GreeterImpl.
> The only method available is "public String sayHello()".
>
> Now I want to create an OSGi command provider for any OSGi shell.
> For this, I created GreeterShell. But now I need the interfaces from (in
> this case)
> org.eclipse.osgi.framework.console.
>
> The problem I have is with importing. In a normal Eclipse project I would
> add this
> to the manifest and all would be solved:
>
>         Import-Package: org.eclipse.osgi.framework.console;version="1.0.0"
>
> But I can't figure out how to do this on BND (nor SCR, of course).
> How can this be done using the plugins?


if your code imports org.eclipse.osgi.framework.console and you have the
console bundle marked as a "provided" maven dependency (which you need
for it to compile) then it should be automatically added to the manifest.

for example, this POM:

===================================================================
<?xml version="1.0" encoding="UTF8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd"; xmlns="
http://maven.apache.org/POM/4.0.0"; xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance";>

  <modelVersion>4.0.0</modelVersion>
  <groupId>examples.console</groupId>
  <artifactId>myConsole</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>myConsole example</name>
  <packaging>bundle</packaging>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <version>1.0.0</version>
        <extensions>true</extensions>
        <configuration>
          <instructions>
            <Bundle-Activator>examples.console.internal.Activator
</Bundle-Activator>
            <Private-Package>examples.console.internal</Private-Package>
          </instructions>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <dependencies>
    <dependency>
      <groupId>org.osgi</groupId>
      <artifactId>osgi_R4_core</artifactId>
      <version>1.0</version>
    </dependency>
    <dependency>
      <groupId>org.osgi</groupId>
      <artifactId>osgi_R4_compendium</artifactId>
      <version>1.0</version>
    </dependency>
    <dependency>
      <groupId>org.eclipse</groupId>
      <artifactId>osgi</artifactId>
      <version>3.3.0-v20070530</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>

  <repositories>
    <repository>
      <id>eclipse</id>
      <url>http://repo1.maven.org/eclipse</url>
    </repository>
  </repositories>

</project>
===================================================================

and this Java class:

===================================================================
package examples.console.internal;

import org.eclipse.osgi.framework.console.CommandProvider;

import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;

public class Activator
    implements BundleActivator
{
    static class MyCommands implements CommandProvider
    {
        public String getHelp()
        {
            return "don't panic :)";
        }
    }

    public void start( BundleContext bc )
        throws Exception
    {
    }

    public void stop( BundleContext bc )
        throws Exception
    {
    }
}
===================================================================

produce the following manifest using "mvn clean install":

===================================================================
Manifest-Version: 1.0
Bundle-SymbolicName: examples.console.myConsole
Import-Package: org.eclipse.osgi.framework.console;version=1.0,org.osg
 i.framework;version=1.4
Bundle-Activator: examples.console.internal.Activator
Created-By: 1.5.0 (IBM Corporation)
Bundle-ManifestVersion: 2
Bundle-Name: myConsole example
Bnd-LastModified: 1190176961184
Tool: Bnd-0.0.160
Bundle-Version: 1.0.0.SNAPSHOT
Private-Package: examples.console.internal
===================================================================

which has org.eclipse.osgi.framework.console;version=1.0 as an import

HTH

Thanks for any input,
> Rodrigo
>
> On 9/18/07, Rodrigo Madera <[EMAIL PROTECTED]> wrote:
> >
> > Thanks, I was just putting the scr.component tag.
> >
> > So for the record, and those using the search facility, the solution was
> > to add both scr.component and scr.service to the service implementation
> > class.
> >
> > Thank you,
> > Rodrigo
> >
> > On 9/18/07, Felix Meschberger <[EMAIL PROTECTED]> wrote:
> > >
> > > Hi Rodrigo,
> > >
> > > The interface is not marked. The implementation is marked with
> > > @scr.component to indicate to the SCR plugin, that this class contains
> a
> > > component with tags to be converted to a descriptor. In addition, the
> > > @scr.service tag would be added to add the <service> element to the
> > > descriptor.
> > >
> > > For example:
> > >
> > >         package sample;
> > >         import iface.MyService
> > >         /**
> > >          * @scr.component
> > >          * @scr.service
> > >          */
> > >         public class MyServiceImpl implements MyService {
> > >         }
> > >
> > > This results in the following descriptor:
> > >
> > >         <?xml version="1.0" encoding="UTF-8"?>
> > >         <components xmlns:scr="http://www.osgi.org/xmlns/scr/v1.0.0";>
> > >             <scr:component enabled="true" immediate="true"
> > >         name="sample.MyServiceImpl">
> > >                 <scr:implementation class="sample.MyServiceImpl" />
> > >                 <scr:property name="service.pid"
> > >         value=" sample.MyServiceImpl" />
> > >                 <scr:service>
> > >                     <provide interface="iface.MyService" />
> > >                 </scr:service>
> > >             </scr:component>
> > >         </components>
> > >
> > > Hope this helps.
> > >
> > > You will find more applications of the SCR plugin tags in the Sling
> Core
> > > project at [1]
> > >
> > > Regards
> > > Felix
> > >
> > > [1] http://svn.apache.org/viewvc/incubator/sling/trunk/core/
> > >
> > >
> > > Am Dienstag, den 18.09.2007, 06:14 -0300 schrieb Rodrigo Madera:
> > > > Hey Bertrand,
> > > >
> > > > Thanks for the information. I'm already producing code with the
> > > plug-in, but
> > > > unfortunately with a misconfiguration somewhere. Could you provide a
> > > simple
> > > > example?
> > > >
> > > > For example, MyService interface and MyServiceImpl would be marked
> > > with
> > > > scr.service and scr.component respectively, correct? That's what I'm
> > > doing
> > > > but something is not right.
> > > >
> > > > Thanks for any insight,
> > > > Rodrigo
> > > >
> > > > On 9/15/07, Bertrand Delacretaz < [EMAIL PROTECTED]> wrote:
> > > > >
> > > > > Hi Rodrigo,
> > > > >
> > > > > On 9/15/07, Rodrigo Madera <[EMAIL PROTECTED]> wrote:
> > > > > >... I'm trying to develop a Declarative Service using the
> > > > > maven-bundle-plugin,
> > > > > > but I can't find documentation on it....
> > > > >
> > > > > The docs are at
> > > > > http://felix.apache.org/site/maven-bundle-plugin-bnd.html ,  but
> to
> > > > > create Declarative Services you should also have a look at the
> > > > > maven-scr-plugin, see
> > > > > http://felix.apache.org/site/maven-scr-plugin.html
> > > > >
> > > > > -Bertrand
> > > > >
> > > > >
> > > ---------------------------------------------------------------------
> > > > > 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]
> > >
> > >
> >
>



-- 
Cheers, Stuart

Reply via email to