On 3/12/10 4:20, Guillaume Nodet wrote:
Guys, I'd like to bring this discussion on the felix list, because
this is the place where the decision has to be made (given the maven
bundle plugin and bundle repository are felix subprojects).

Basically, the discussion is the following.  I have recently enhanced
the maven bundle plugin to support an extended syntax for the Import /
Export service.   In addition, I've added better support for blueprint
so that if you build a blueprint bundle, the Import-/Export-Service
headers will be generated and in turn transformed into OBR
requirements when writing the repository.xml file.

The syntax is the following (fully compatible with a simple comma
separated list of course):

Import-Service ::= requirement ( ',' requirement ) *
requirement ::= classname ( ';' resolution-directive ) ( ';' filter-attribute )
availability-directive ::= 'availability' ':=' ( 'mandatory' | 'optional' )
filter-attribute ::= 'filter' '=' ldap-filter

Export-Service ::= export ( ',' export ) *
export ::= classname ( ';' attribute ) *
attribute ::= token '=' value

Here are examples:
Export-Service:
   org.apache.aries.transaction.test.TestBean;tranStrategy=Required,
   org.apache.aries.transaction.test.TestBean;tranStrategy=Supports,
   org.apache.aries.transaction.test.TestBean;tranStrategy=RequiresNew,
   org.apache.aries.transaction.test.TestBean;tranStrategy=Mandatory,
   org.apache.aries.transaction.test.TestBean;tranStrategy=NotSupported,
   org.apache.aries.transaction.test.TestBean;tranStrategy=Never
Import-Service:
   javax.sql.DataSource;filter="(xa.aware=true)",
   javax.sql.DataSource;filter="(xa.aware=false)",
   
org.apache.aries.blueprint.NamespaceHandler;filter="(osgi.service.blueprint.namespace=http://aries.apache.org/xmlns/transactions/v1.0.0)"

So now, the question is: do you guys see a problem with that ? or
should we use a different set of headers ?
I plan to provide patches for bnd / bindex asap to bring them on par
with that (I had a chat with Peter who said he did not see any
objection).

I don't have any issue with this, since it mirrors the generic capability/requirement approach of OBR.

However, I seem to recall that we did have an issue once where some people weren't happy that we were adding service dependencies to our OBR descriptions and we ended up removing some of them...I don't remember the exact details of that issue.

-> richard


On Thu, Mar 11, 2010 at 17:56, Alasdair Nottingham<[email protected]>  wrote:
On 11 March 2010 15:06, Guillaume Nodet<[email protected]>  wrote:
On Thu, Mar 11, 2010 at 15:39, Alasdair Nottingham<[email protected]>  wrote:
Looking at the OSGi R1 spec the syntax is:

Import-Service: class-name (, class-name )*

If present, this header describes the services the bundle may use.
This header provides advisory information
that is not used by the Framework. It is intended for use by
server-side management tools.
Do we want to support OSGi<  R4 ? We have some requirements on R4.2
afaik, so that doesn't hold either.
I'm sorry but I don't see what this has to do with OSGi spec versions.
The point is the only time Import/Export-Service was specified it was
a list of class names. Having one person/group unilaterally ignore a
standard is not a good thing. As I has said before it makes sense to
me to have an expanded syntax, but we cannot do this unilaterally. Who
knows what other OSGi tools we could break.

Also Bug https://www.osgi.org/bugzilla/show_bug.cgi?id=70 in the OSGi
public bugzilla is because bindex only supports the syntax I
described.
What would you say if:
  * bindex is patched to support this enhanced syntax
I'd be happier, but I would still be worried about taking unilateral action.

  * we use a different set of headers: XxxImport-Service / XxxExport-Service
Much better.

On the subject of double definition, ok I accept I don't have to write
the double definition, but it is still there. Also all the change did
was allow users of the tool you updated to not have to worry about it,
any other user still needs to consider it. What is to stop someone
editing outside of your tool the blueprint and getting them out of
sync.
I don't think it's a fair argument.  What if you change the classes
without changing
  the import package header ?
Damn you for spotting the one inconsistency in my argument. In fact
this is why people generally argue that you generate the manifest. The
problem I have, again, is that you either generate the import packages
from the byte code, or tools like PDE enforce the at build time, so
you have a build time solution here. Sure if you splice new classes
into an existing jars bad things can happen, but in my experience that
is less common than updating xml files in jar files.

In this discussion, blueprint is only a part of the problem.
Blueprint is not the only way
to use services in OSGi, so I'd really like to think about a global solution.

I agree, but as I said before I would prefer a solution that didn't
require double definition in all cases which is what we have here. I
am happy for this to be an "in addition", but I do not want to force
the double definition.

Alasdair

On 11 March 2010 13:50, Guillaume Nodet<[email protected]>  wrote:
Not sure what you mean by pointing this.
None of those constants describe the exact syntax of the headers.
Just take a look at:
   
http://www.osgi.org/javadoc/r4v42/org/osgi/framework/Constants.html#IMPORT_PACKAGE

It simply does not say anything about what this header looks like,
only what its intent is.
In addition, the syntax isn't defined at all (see 3.2.1.23) whereas
the other headers are clearly described.

I don't have any problem discussing this issue as you see, but I still
fail to see the real problem you have in using those headers.

On Thu, Mar 11, 2010 at 14:36, Alasdair Nottingham<[email protected]>  wrote:
You pointed me at where it is documented in the OSGi Javadoc:

http://www.osgi.org/javadoc/r4v42/org/osgi/framework/Constants.html#IMPORT_SERVICE

Alasdair

On 11 March 2010 11:48, Guillaume Nodet<[email protected]>  wrote:
On Thu, Mar 11, 2010 at 12:35, Alasdair Nottingham<[email protected]>  wrote:
As I have explained before I am -1 for this for the following reason:

1. I hate any type of double definition. It just results in errors
when they get out of sync.
I don't understand.  What i've done is exactly to remove double
definitions which were in obr.xml files.

2. The Import-Service and Export-Service headers are not expressive
enough. They only allow you to specify a comma separated list of
service classes. You cannot specify service properties or service
filters for publishing or consuming services.

I think it is a reasonable fall back to use these headers, but not as
a primary thing.
Nobody has ever said they consist in a comma separated list of service classes.
The way I've implemented the generation is exactly what you're asking for.

Export-Service:  foo.bar.Interface;availability:=optional;x=v

You're right about the filters, I haven't put those on the header, but
I'll fix that asap.

Unless you can prove that there are some informations that can't be
put on those headers,
I think it really simplifies the role of the tooling to not have to
dig into multiple different formats.

Alasdair

On 11 March 2010 09:47, Guillaume Nodet<[email protected]>  wrote:
On Thu, Mar 11, 2010 at 10:07, Jeremy Hughes<[email protected]>  wrote:
I was wondering about this change. AIUI the Export-Service and
Import-Service are deprecated and adding them means a duplication of
meta-data. I haven't yet seen what is making use of them - I guess
it's to populate an OBR repository.xml. Because it's non-standard (not
in the blueprint spec) whatever is expecting those exports/imports to
be there, if it didn't find any, it would need to look for
blueprint.xml files and services imported/exported there just in case
the tool that generated the bundle didn't include export/import
service headers.
I don't think this would be a good idea to have a generic osgi tool do that.
I think the real problem would be that it would not catch pure osgi
bundle (those who don't
use blueprint at all, such as the aries-transaction-manager for example).
In such cases, the only way is to rely on those headers, so it makes
sense to not bloat
all osgi tools and instead leverage those headers imho.

I'm not sure in which way the metadata in those headers is limited.
And if it is, we should
extend it imho.  And there will always be cases where you can't know
the whole data
unless in the real environment (imagine if one of the service property
is computed at runtime,
or if the exact class exported isn't easily determined and you export
all its interfaces ...).
So I think you can know the intent, but not always the end result.

Anyway, if you prefer enhancing OBR, maven-bundle-plugin, bnd and
bindex to natively support
introspecting blueprint bundles, declarative services, iPojo in
addition to those headers (which are
still the only way if you use the plain OSGI api), you're welcome to
do so.  Once your patches
are in, I'll happily remove those bits ;-)

I'm more -0 for this change, because it doesn't hurt, but a consumer
of the gen'd headers can't be guaranteed that they fully represent
what's in the blueprint.xml files.

Cheers,
Jeremy

On 10 March 2010 21:18,<[email protected]>  wrote:
Author: gnodet
Date: Wed Mar 10 21:18:42 2010
New Revision: 921573

URL: http://svn.apache.org/viewvc?rev=921573&view=rev
Log:
ARIES-197: remove the obr.xml files and use the latest plugin snapshot which is 
able to introspect the blueprint bundles

Removed:
    incubator/aries/trunk/application/application-converters/obr.xml
    incubator/aries/trunk/application/application-install/obr.xml
    incubator/aries/trunk/application/application-management/obr.xml
    incubator/aries/trunk/application/application-obr-resolver/obr.xml
    incubator/aries/trunk/application/application-runtime/obr.xml
    incubator/aries/trunk/application/application-utils/obr.xml
    incubator/aries/trunk/blueprint/blueprint-bundle/obr.xml
    incubator/aries/trunk/transaction/transaction-blueprint/obr.xml
    incubator/aries/trunk/transaction/transaction-manager/obr.xml
    incubator/aries/trunk/web/web-urlhandler/obr.xml
Modified:
    incubator/aries/trunk/application/application-management/pom.xml
    incubator/aries/trunk/application/application-obr-resolver/pom.xml
    incubator/aries/trunk/application/application-runtime/pom.xml
    incubator/aries/trunk/application/application-utils/pom.xml
    incubator/aries/trunk/blueprint/blueprint-bundle/pom.xml
    incubator/aries/trunk/blueprint/blueprint-core/pom.xml
    incubator/aries/trunk/parent/default-parent/pom.xml
    incubator/aries/trunk/transaction/transaction-blueprint/pom.xml
    incubator/aries/trunk/transaction/transaction-testbundle/pom.xml
    incubator/aries/trunk/web/web-urlhandler/pom.xml

Modified: incubator/aries/trunk/application/application-management/pom.xml
URL: 
http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-management/pom.xml?rev=921573&r1=921572&r2=921573&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-management/pom.xml (original)
+++ incubator/aries/trunk/application/application-management/pom.xml Wed Mar 10 
21:18:42 2010
@@ -77,16 +77,6 @@
                 <configuration>
                     <instructions>
                         
<Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
-<Import-Service>
-                            
org.apache.aries.application.ApplicationMetadataFactory,
-                            
org.apache.aries.application.DeploymentMetadataFactory,
-                            
org.apache.aries.application.management.AriesApplicationResolver,
-                            
org.apache.aries.application.management.LocalPlatform,
-                            
org.apache.aries.application.management.ApplicationContextManager
-</Import-Service>
-<Export-Service>
-                            
org.apache.aries.application.management.AriesApplicationManager
-</Export-Service>
                         
<_versionpolicy>[$(version;==;$(@)),$(version;+;$(@)))</_versionpolicy>
                         
<_removeheaders>Ignore-Package,Include-Resource,Private-Package,Bundle-DocURL</_removeheaders>
                     </instructions>

Modified: incubator/aries/trunk/application/application-obr-resolver/pom.xml
URL: 
http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-obr-resolver/pom.xml?rev=921573&r1=921572&r2=921573&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-obr-resolver/pom.xml 
(original)
+++ incubator/aries/trunk/application/application-obr-resolver/pom.xml Wed Mar 
10 21:18:42 2010
@@ -56,12 +56,6 @@
                 <configuration>
                     <instructions>
                         
<Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
-<Import-Service>
-                            org.osgi.service.obr.RepositoryAdmin
-</Import-Service>
-<Export-Service>
-                            
org.apache.aries.application.management.AriesApplicationResolver
-</Export-Service>
                         
<_versionpolicy>[$(version;==;$(@)),$(version;+;$(@)))</_versionpolicy>
                         
<_removeheaders>Ignore-Package,Include-Resource,Private-Package,Bundle-DocURL</_removeheaders>
                     </instructions>

Modified: incubator/aries/trunk/application/application-runtime/pom.xml
URL: 
http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-runtime/pom.xml?rev=921573&r1=921572&r2=921573&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-runtime/pom.xml (original)
+++ incubator/aries/trunk/application/application-runtime/pom.xml Wed Mar 10 
21:18:42 2010
@@ -77,11 +77,6 @@
                 <configuration>
                     <instructions>
                         
<Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
-<Export-Service>
-                            
org.apache.aries.application.management.ApplicationContextManager,
-                            
org.apache.aries.application.management.LocalPlatform,
-                            
org.apache.aries.application.management.AriesApplicationResolver
-</Export-Service>
                         
<_versionpolicy>[$(version;==;$(@)),$(version;+;$(@)))</_versionpolicy>
                         
<_removeheaders>Ignore-Package,Include-Resource,Private-Package,Bundle-DocURL</_removeheaders>
                     </instructions>

Modified: incubator/aries/trunk/application/application-utils/pom.xml
URL: 
http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-utils/pom.xml?rev=921573&r1=921572&r2=921573&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-utils/pom.xml (original)
+++ incubator/aries/trunk/application/application-utils/pom.xml Wed Mar 10 
21:18:42 2010
@@ -68,12 +68,6 @@
     <build>
         <resources>
             <resource>
-<directory>${basedir}</directory>
-<includes>
-<include>obr.xml</include>
-</includes>
-</resource>
-<resource>
                 <targetPath>OSGI-INF/blueprint</targetPath>
                 <filtering>false</filtering>
                 
<directory>${basedir}/src/main/resources/OSGI-INF/blueprint</directory>
@@ -101,10 +95,6 @@
                             
org.apache.aries.application.utils.manifest;version="${pom.version}",
                             
org.apache.aries.application.utils.management;version="${pom.version}"
                         </Export-Package>
-<Export-Service>
-                            
org.apache.aries.application.ApplicationMetadataFactory,
-                            
org.apache.aries.application.DeploymentMetadataFactory
-</Export-Service>
                         
<_versionpolicy>[$(version;==;$(@)),$(version;+;$(@)))</_versionpolicy>
                         
<_removeheaders>Ignore-Package,Include-Resource,Private-Package,Bundle-DocURL</_removeheaders>
                     </instructions>

Modified: incubator/aries/trunk/blueprint/blueprint-bundle/pom.xml
URL: 
http://svn.apache.org/viewvc/incubator/aries/trunk/blueprint/blueprint-bundle/pom.xml?rev=921573&r1=921572&r2=921573&view=diff
==============================================================================
--- incubator/aries/trunk/blueprint/blueprint-bundle/pom.xml (original)
+++ incubator/aries/trunk/blueprint/blueprint-bundle/pom.xml Wed Mar 10 
21:18:42 2010
@@ -69,7 +69,7 @@
                 <artifactId>maven-bundle-plugin</artifactId>
                 <configuration>
                     <instructions>
-<Bundle-SymbolicName>${pom.groupId}</Bundle-SymbolicName>
+<Bundle-SymbolicName>${pom.groupId};blueprint.graceperiod:=false</Bundle-SymbolicName>
                         
<Bundle-Activator>org.apache.aries.blueprint.container.BlueprintExtender</Bundle-Activator>
                         <Import-Package>
                             !org.apache.aries.blueprint*,
@@ -102,10 +102,11 @@
                             OSGI-INF*
                         </Private-Package>
                         <Export-Service>
-                            org.apache.aries.blueprint.ParserService,
-                            
org.apache.aries.blueprint.NamespaceHandler;osgi.service.blueprint.namespace=http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0,
-                            
org.apache.aries.blueprint.NamespaceHandler;osgi.service.blueprint.namespace=http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.0.0
+                            org.apache.aries.blueprint.ParserService
                         </Export-Service>
+<Import-Service>
+                            
org.osgi.service.cm.ConfigurationAdmin;availability:=optional
+</Import-Service>
                         <!-- include the right NOTICE with attribution to the 
OSGi alliance -->
                         
<Include-Resource>{maven-resources},META-INF/NOTICE=../NOTICE</Include-Resource>
                         
<_versionpolicy>[$(version;==;$(@)),$(version;+;$(@)))</_versionpolicy>

Modified: incubator/aries/trunk/blueprint/blueprint-core/pom.xml
URL: 
http://svn.apache.org/viewvc/incubator/aries/trunk/blueprint/blueprint-core/pom.xml?rev=921573&r1=921572&r2=921573&view=diff
==============================================================================
--- incubator/aries/trunk/blueprint/blueprint-core/pom.xml (original)
+++ incubator/aries/trunk/blueprint/blueprint-core/pom.xml Wed Mar 10 21:18:42 
2010
@@ -105,7 +105,11 @@
                           org.apache.aries.util.tracker;resolution:=optional,
                           org.osgi.service.event*;resolution:=optional,
                           org.osgi.service.framework;resolution:=optional,
-                          *</Import-Package>
+                          *
+</Import-Package>
+<Export-Service>
+                            org.apache.aries.blueprint.ParserService
+</Export-Service>
                         
<_versionpolicy>[$(version;==;$(@)),$(version;+;$(@)))</_versionpolicy>
                         
<_removeheaders>Ignore-Package,Include-Resource,Private-Package,Bundle-DocURL</_removeheaders>
                     </instructions>

Modified: incubator/aries/trunk/parent/default-parent/pom.xml
URL: 
http://svn.apache.org/viewvc/incubator/aries/trunk/parent/default-parent/pom.xml?rev=921573&r1=921572&r2=921573&view=diff
==============================================================================
--- incubator/aries/trunk/parent/default-parent/pom.xml (original)
+++ incubator/aries/trunk/parent/default-parent/pom.xml Wed Mar 10 21:18:42 2010
@@ -151,14 +151,6 @@
     <build>
         <resources>
             <resource>
-<directory>${project.basedir}</directory>
-<filtering>false</filtering>
-<includes>
-<include>obr.xml</include>
-</includes>
-</resource>
-
-<resource>
                 <directory>${project.basedir}/src/main/resources</directory>
                 <filtering>false</filtering>
                 <includes>
@@ -231,7 +223,7 @@
                 <plugin>
                     <groupId>org.apache.felix</groupId>
                     <artifactId>maven-bundle-plugin</artifactId>
-<version>2.0.1</version>
+<version>2.1.0-SNAPSHOT</version>
                     <extensions>true</extensions>
                 </plugin>


Modified: incubator/aries/trunk/transaction/transaction-blueprint/pom.xml
URL: 
http://svn.apache.org/viewvc/incubator/aries/trunk/transaction/transaction-blueprint/pom.xml?rev=921573&r1=921572&r2=921573&view=diff
==============================================================================
--- incubator/aries/trunk/transaction/transaction-blueprint/pom.xml (original)
+++ incubator/aries/trunk/transaction/transaction-blueprint/pom.xml Wed Mar 10 
21:18:42 2010
@@ -92,13 +92,6 @@
                             org.apache.aries.transaction.parsing
                         </Private-Package>
                         
<Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
-<Import-Service>
-                           javax.transaction.TransactionManager
-</Import-Service>
-<Export-Service>
-                            org.apache.aries.blueprint.Interceptor,
-                            org.apache.aries.blueprint.NamespaceHandler
-</Export-Service>
                     </instructions>
                 </configuration>
             </plugin>

Modified: incubator/aries/trunk/transaction/transaction-testbundle/pom.xml
URL: 
http://svn.apache.org/viewvc/incubator/aries/trunk/transaction/transaction-testbundle/pom.xml?rev=921573&r1=921572&r2=921573&view=diff
==============================================================================
--- incubator/aries/trunk/transaction/transaction-testbundle/pom.xml (original)
+++ incubator/aries/trunk/transaction/transaction-testbundle/pom.xml Wed Mar 10 
21:18:42 2010
@@ -44,11 +44,13 @@
             <plugin>
                 <groupId>org.apache.felix</groupId>
                 <artifactId>maven-bundle-plugin</artifactId>
-<version>2.0.1</version>
                 <extensions>true</extensions>
                 <configuration>
                     <instructions>
                          
<Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
+
+<nsh_interface>org.apache.aries.blueprint.NamespaceHandler</nsh_interface>
+<nsh_namespace>osgi.service.blueprint.namespace</nsh_namespace>
                     </instructions>
                 </configuration>
             </plugin>

Modified: incubator/aries/trunk/web/web-urlhandler/pom.xml
URL: 
http://svn.apache.org/viewvc/incubator/aries/trunk/web/web-urlhandler/pom.xml?rev=921573&r1=921572&r2=921573&view=diff
==============================================================================
--- incubator/aries/trunk/web/web-urlhandler/pom.xml (original)
+++ incubator/aries/trunk/web/web-urlhandler/pom.xml Wed Mar 10 21:18:42 2010
@@ -61,10 +61,6 @@
                         <Export-Package>
                             
org.apache.aries.web.converter;version="${pom.version}",
                         </Export-Package>
-<Export-Service>
-                            org.apache.aries.web.converter.WarToWabConverter,
-                            
org.osgi.service.url.URLStreamHandlerService;url.handler.protocol=webbundle
-</Export-Service>
                         
<_versionpolicy>[$(version;==;$(@)),$(version;+;$(@)))</_versionpolicy>
                         
<_removeheaders>Ignore-Package,Include-Resource,Private-Package,Bundle-DocURL</_removeheaders>
                     </instructions>





--
Cheers,
Guillaume Nodet
------------------------
Blog: http://gnodet.blogspot.com/
------------------------
Open Source SOA
http://fusesource.com



--
Alasdair Nottingham
[email protected]



--
Cheers,
Guillaume Nodet
------------------------
Blog: http://gnodet.blogspot.com/
------------------------
Open Source SOA
http://fusesource.com



--
Alasdair Nottingham
[email protected]



--
Cheers,
Guillaume Nodet
------------------------
Blog: http://gnodet.blogspot.com/
------------------------
Open Source SOA
http://fusesource.com



--
Alasdair Nottingham
[email protected]



--
Cheers,
Guillaume Nodet
------------------------
Blog: http://gnodet.blogspot.com/
------------------------
Open Source SOA
http://fusesource.com



--
Alasdair Nottingham
[email protected]



Reply via email to