On 11/01/2008, Niall Pemberton <[EMAIL PROTECTED]> wrote:
>
> On Jan 11, 2008 9:50 AM, Stuart McCulloch <[EMAIL PROTECTED]>
> wrote:
> >
> > On 11/01/2008, Niall Pemberton <[EMAIL PROTECTED]> wrote:
> > >
> > > On Jan 10, 2008 5:51 PM, Stuart McCulloch <[EMAIL PROTECTED]
> >
> > > wrote:
> > > >
> > > > On 10/01/2008, Niall Pemberton <[EMAIL PROTECTED]> wrote:
> > > > >
> > > > > On Jan 10, 2008 2:56 AM, Stuart McCulloch <
> [EMAIL PROTECTED]
> > > >
> > > > > wrote:
> > > > > > On 10/01/2008, Niall Pemberton <[EMAIL PROTECTED]>
> wrote:
> > > > > > >
> > > > > > > On Jan 9, 2008 5:35 PM, Stuart McCulloch <
> > > [EMAIL PROTECTED]>
> > > > > > > wrote:
> > > > > > > > On 09/01/2008, Niall Pemberton <[EMAIL PROTECTED]>
> > > wrote:
> > > > > > > >
> > > > > > > > > On Jan 9, 2008 6:11 AM, Stuart McCulloch <
> > > > > [EMAIL PROTECTED]>
> > > > > > > > wrote:
> > > > > > > > > > Hi Carsten / Niall,
> > > > > > > > > >
> > > > > > > > > > I've mocked up a quick patch and attached it to
> > > > > > > > > > http://issues.apache.org/jira/browse/FELIX-449
> > > > > > > > > > could you give it a spin and see if it resolves the
> problem?
> > > > > (see
> > > > > > > below
> > > > > > > > for
> > > > > > > > > > the new config option)
> > > > > > > > >
> > > > > > > > > Hey, thanks for the quick response - I'll give it a spin
> and
> > > put
> > > > > > > > > feedback on the Jira ticket FELIX-449
> > > > > > > >
> > > > > > > > thanks, I've made some improvements based on your feedback -
> can
> > > you
> > > > > > > build
> > > > > > > > the plugin from svn and try it out?
> > > > > > >
> > > > > > > Looks good from the "non-OSGi" manifest entries PoV (using
> > > > > > > excludeDependencies=false) - its picked up a couple of entries
> > > from
> > > > > > > BeanUtils (e.g. Extension-Name)
> > > > > >
> > > > > >
> > > > > > if you use Carsten's original suggestion of a global wildcard
> > > export:
> > > > > >
> > > > > >    <Export-Package>*;version="${pom.version}"</Export-Package>
> > > > > >
> > > > > > then you must set excludeDependencies to _true_ otherwise you
> will
> > > pull
> > > > > > in all sorts of other packages and classes from your
> dependencies -
> > > and
> > > > > > your final jarfile will be much larger than the pre-bundle one.
> > > > > >
> > > > > > - but I could sort those out now by
> > > > > > > specifying them explicitly.
> > > > > >
> > > > > >
> > > > > > FYI, you can always use the:
> > > > > >
> > > > >
> >    <_removeheaders>comma,separated,list,of,headers</_removeheaders>
> > > > > >
> > > > > > instruction to remove unwanted headers - but setting
> Export-Package
> > > to
> > > > > > an explicit package list (or excludeDependencies to true) means
> that
> > > you
> > > > > > shouldn't get the beanutils stuff to begin with...
> > > > > >
> > > > > > The one thing that strikes me though are
> > > > > > > the version numbers are all the same - I don't really know how
> > > OSGi
> > > > > > > works, but for example (if I use excludeDependencies=false) I
> > > would
> > > > > > > have expected to see the dependencies version numbers
> somewhere in
> > > the
> > > > > > > export/import statements - for example Validator
> 1.4-SNAPSHOTdepends
> > > > > > > on BeanUtils 1.7 - but all the version numbers spcify
> > > 1.4.0.SNAPSHOT -
> > > > > > > is this correct?
> > > > > >
> > > > > >
> > > > > > all _exported_ packages will be marked with the same version,
> > > because
> > > > > > you've told Bnd to do this in the above Export-Package
> instruction
> > > (and
> > > > > > where the same package is also imported, the import will then
> use
> > > the
> > > > > > same version).
> > > > >
> > > > > Using "excludeDependencies=false" that makes sense - but for
> > > > > "excludeDependencies=true" I would have thought the import
> statements
> > > > > for dependencies would be specified - which they currently don't
> seem
> > > > > to be.
> > > >
> > > >
> > > > Bnd does not see the excludeDependencies option - all this option
> does
> > > is
> > > > change how much of the Maven classpath the bundleplugin passes to
> Bnd.
> > > > The excludeDependencies option is only there to ease the migration
> to
> > > the
> > > > bundleplugin, so you can start with
> <Export-Package>*</Export-Package>
> > > >
> > > > If you want the full benefits of the bundleplugin you need to
> understand
> > > how
> > > > Bnd works - it doesn't zip the contents of target/classes, it pulls
> > > classes
> > > > and
> > > > resources from the classpath into a bundle.
> > > >
> > > > Setting <Export-Package>*</Export-Package> says to Bnd: put the
> whole
> > > > classpath into the bundle, which would normally include dependencies
> > > such
> > > > as the beanutils. With excludeDependencies set to true we only give
> Bnd
> > > the
> > > > local classpath, so you get the bundle you'd expect (ie. just
> > > > target/classes).
> > > >
> > > > However because Bnd works primarily from the classpath, cutting it
> down
> > > to
> > > > the local project means it has no version information about
> > > dependencies,
> > > > although you are free to add this detail yourself using
> <Import-Package>
> > > >
> > > > To get the true power of Bnd you need to tell it exactly which
> packages
> > > you
> > > > want to export and which to keep private - you can then pass the
> > > complete
> > > > classpath to Bnd and it will add versioned imports where possible.
> > >
> > > Clearly I have little knowledge in this area, but with maven's
> > > knowledge of dependencies and Bnds capabilities of examining jars it
> > > would seem a good enhancement for the bundle plugin to be able to
> > > generate version numbers for the import statement. Perhaps it would
> > > mean call bnd for each dependency jar, specifying the version
> > > discovered from maven and merging all the results it generates to come
> > > up with a complete import statement - and that may be OTT.
> >
> >
> > very OTT given that you can already do this :) you just need to be
> explicit
> > and list
> > what packages you want to export and which to keep private - then you
> can
> > pass
> > the whole classpath to Bnd (ie. don't set excludeDependencies) and you
> will
> > get
> > versioned imports where appropriate.
> >
> > also, a lot of the time you don't actually want to depend on a fixed
> version
> > but on
> > a range (ie. to include minor changes with no API breakage) so you'd
> > probably end
> > up setting your own versions anyway....
> >
> > either way I'd recommend reading Peter's page on Bnd (
> > http://aqute.biz/Code/Bnd)
>
> You're right and I will try to at some point. At this moment I don't
> use OSGi - just trying to help out getting commons components
> OSGi-enabled. Thanks for all your patience and explanations.


just remembered that there is another way to easily add OSGi metadata
without
changing to the new bundle packaging - you can use the manifest goal to add
it:

           <plugin>
             <artifactId>maven-jar-plugin</artifactId>
             <configuration>
               <archive>
                 <manifestFile>${project.build.outputDirectory
}/META-INF/MANIFEST.MF</manifestFile>
               </archive>
             </configuration>
           </plugin>
           <plugin>
             <groupId>org.apache.felix</groupId>
             <artifactId>maven-bundle-plugin</artifactId>
             <executions>
               <execution>
                 <id>bundle-manifest</id>
                 <phase>process-classes</phase>
                 <goals>
                   <goal>manifest</goal>
                 </goals>
               </execution>
             </executions>
           </plugin>

this will generate a manifest based on your existing build (ie. under
target/classes)
and add the resulting OSGi enabled manifest during the normal jar packaging
step :)

Btw, update wrt. versioning - we only version imports if the providing
jarfile contains
OSGi metadata, otherwise we use the default "no-version" which will match
anyone
who exports it. This is safer than importing a very specific version based
on the jar's
version / dependency version, as when the other jar is wrapped as an OSGi
bundle
they might choose to use a slightly different version string... which would
not match
the 'calculated' import and cause all sorts of breakage

Limiting version detection to only use OSGi metadata means you know you'll
be able
to deploy against the same jarfile you compiled against - hope that makes
sense :)

Niall
>
> > Niall
> > >
> > > > > also note when you set excludeDependencies to true you are not
> giving
> > > > > > Bnd any information about dependencies, so it can't detect the
> > > versions.
> > > > >
> > > > > OK but can't the maven plugin pass the dependency versions to Bnd?
> > > >
> > > >
> > > > Yes - and the way the plugin does this is by passing the complete
> > > classpath.
> > > > But then you're back to having to tell Bnd exactly what you want to
> > > export
> > > > and what you want to keep private...
> > > >
> > > >
> > > > Niall
> > > > >
> > > > > > so to sum up, for basic OSGi manifest entries with minimum of
> fuss
> > > use:
> > > > > >
> > > > > >    <configuration>
> > > > > >       <excludeDependencies>true</excludeDependencies>
> > > > > >       <instructions>
> > > > > >          <Export-Package>*;version=${pom.version
> }</Export-Package>
> > > > > >       </instructions>
> > > > > >    </configuration>
> > > > > >
> > > > > > but if you want better OSGi manifest entries consider something
> > > like:
> > > > > >
> > > > > >    <configuration>
> > > > > >       <instructions>
> > > > > >          <Export-Package>
> > > > > >             some.public.pkg;version=${pom.version},
> > > > > >             wildcard.public.pkg.*;version=${pom.version}
> > > > > >          </Export-Package>
> > > > > >          <Private-Package>
> > > > > >             some.internal.pkg,
> > > > > >             wildcard.internal.pkg.*
> > > > > >          </Private-Package>
> > > > > >       </instructions>
> > > > > >    </configuration>
> > > > > >
> > > > > > note you have to be a bit more careful here, because any
> packages
> > > > > > that aren't covered by Export-Package or Private-Package will
> _not_
> > > > > > be pulled into the final bundle.
> > > > > >
> > > > > > the bundleplugin and Bnd are documented at:
> > > > > >
> > > > > >    http://felix.apache.org/site/maven-bundle-plugin-bnd.html
> > > > > >    http://aqute.biz/Code/Bnd  (has full list of Bnd
> instructions)
> > > > > >
> > > > > > HTH
> > > > > >
> > > > > >
> > > > > > Niall
> > > > > > >
> > > > > > > > > Niall
> > > > > > > > >
> > > > > > > > > > --
> > > > > > > > > > Cheers, Stuart
> > > > > > > > > >
> > > > > > > > > > ---------- Forwarded message ----------
> > > > > > > > > > From: Stuart McCulloch (JIRA) <[EMAIL PROTECTED] >
> > > > > > > > > > Date: 9 Jan 2008 13:59
> > > > > > > > > > Subject: [jira] Updated: (FELIX-449) Add option to limit
> the
> > > > > > > classpath
> > > > > > > > > > passed to BND to just the local project (ie.
> target/classes)
> > > > > > > > > > To: dev@felix.apache.org
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >      [
> > > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > >
> > >
> https://issues.apache.org/jira/browse/FELIX-449?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
> > > > > > > > > > ]
> > > > > > > > > >
> > > > > > > > > > Stuart McCulloch updated FELIX-449:
> > > > > > > > > > -----------------------------------
> > > > > > > > > >
> > > > > > > > > >     Attachment: FELIX_449_20080109.txt
> > > > > > > > > >
> > > > > > > > > > Suggested patch - when applied to trunk, you can use:
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >       <plugin>
> > > > > > > > > >         <groupId>org.apache.felix</groupId>
> > > > > > > > > >         <artifactId>maven-bundle-plugin</artifactId>
> > > > > > > > > >         <extensions>true</extensions>
> > > > > > > > > >         <configuration>
> > > > > > > > > >
> <excludeDependencies>true</excludeDependencies>
> > > > > > > > > >
> > > > > > > > > >           <instructions>
> > > > > > > > > >             <Export-Package>*;version=${pom.version
> > > > > > > }</Export-Package>
> > > > > > > > > >           </instructions>
> > > > > > > > > >         </configuration>
> > > > > > > > > >       </plugin>
> > > > > > > > > >
> > > > > > > > > >  to bundle the project classpath, excluding
> dependencies.
> > > > > > > > > >
> > > > > > > > > > PS: feel free to suggest alternative names for this
> option!
> > > > > > > > > >
> > > > > > > > > > > Add option to limit the classpath passed to BND to
> just
> > > the
> > > > > local
> > > > > > > > project
> > > > > > > > > > (ie. target/classes)
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > >
> > >
> ----------------------------------------------------------------------------------------------
> > > > > > > > > > >
> > > > > > > > > > >                 Key: FELIX-449
> > > > > > > > > > >                 URL:
> > > > > > > https://issues.apache.org/jira/browse/FELIX-449
> > > > > > > > > > >             Project: Felix
> > > > > > > > > > >          Issue Type: Improvement
> > > > > > > > > > >          Components: Maven Bundle Plugin
> > > > > > > > > > >    Affects Versions: 1.0.0
> > > > > > > > > > >            Reporter: Stuart McCulloch
> > > > > > > > > > >            Assignee: Stuart McCulloch
> > > > > > > > > > >         Attachments: FELIX_449_20080109.txt
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > Email thread from Apache Commons:
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > > On Dec 28, 2007 12:35 PM, Carsten Ziegeler <
> > > > > [EMAIL PROTECTED]>
> > > > > > > > wrote:
> > > > > > > > > > > > Hi,
> > > > > > > > > > > >
> > > > > > > > > > > > in the meantime Stuart fixed the problem with the
> maven
> > > > > > > > bundleplugin, so
> > > > > > > > > > > > I think we can give it a test drive :)
> > > > > > > > > > > >
> > > > > > > > > > > > Attached is a patch for the parent pom of commons
> and
> > > one to
> > > > > > > > demonstrate
> > > > > > > > > > > > how to add support for OSGi to commons-lang.
> > > > > > > > > > > >
> > > > > > > > > > > > The changes to the parent pom are minimal: it just
> adds
> > > the
> > > > > > > maven
> > > > > > > > > > > > bundleplugin from the Apache Felix project. We
> currently
> > > > > need to
> > > > > > > use
> > > > > > > > a
> > > > > > > > > > > > snapshot version, but a release is comming soon.
> > > > > > > > > > > > Besides adding the plugin, the patch also configures
> the
> > > > > bundle
> > > > > > > > symbolic
> > > > > > > > > > > > name for all modules. The symbolic name is the
> unique
> > > > > identifier
> > > > > > > > which
> > > > > > > > > > > > should follow java package naming. The best value is
> to
> > > use
> > > > > > > > something
> > > > > > > > > > > > like "org.apache.commons.{artifactId}" where
> artifact id
> > > is
> > > > > > > > commons-lang
> > > > > > > > > > > > or commons-collections etc.
> > > > > > > > > >  > >
> > > > > > > > > > > > The patch to commons lang is also very simple. It
> > > changes
> > > > > the
> > > > > > > parent
> > > > > > > > pom
> > > > > > > > > > > > to the current snapshot (which includes the changes
> from
> > > > > above)
> > > > > > > and
> > > > > > > > sets
> > > > > > > > > > > > the packaging to bundle - this ensures that the
> > > bundleplugin
> > > > > > > runs
> > > > > > > > and
> > > > > > > > > > > > creates the resulting jar file. So the bundleplugin
> > > replaces
> > > > > the
> > > > > > > > maven
> > > > > > > > > > > > jar plugin. If you leave the packaging as "jar" the
> > > > > bundleplugin
> > > > > > > > will
> > > > > > > > > > > > not run.
> > > > > > > > > > > > The last part of the patch adds the configuration to
> the
> > > > > > > > bundleplugin.
> > > > > > > > > > > > The export "*" exports all packages definied in this
> > > module
> > > > > for
> > > > > > > > other
> > > > > > > > > > > > bundles, so all classes are public. All packages are
> > > marked
> > > > > with
> > > > > > > the
> > > > > > > > > > > > current version which allows to run different
> versions
> > > in
> > > > > > > parallel.
> > > > > > > > > > > > The imports are not specified as they are calculated
> > > > > > > automatically
> > > > > > > > by
> > > > > > > > > > > > the bundleplugin.
> > > > > > > > > > > >
> > > > > > > > > > > > And that's it :)
> > > > > > > > > > > >
> > > > > > > > > > > > The changes to the other projects should be similar.
> > > > > > > > > > > I tried using the bundle plugin (I checked out and
> built
> > > the
> > > > > > > latest
> > > > > > > > > > > from svn) with Commons Validator and it produced the
> > > following
> > > > > > > > > > > MANIFEST.MF:
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > >
> > >
> http://people.apache.org/~niallp/commons-osgi/commons-validator-MANIFEST.MF
> > > > > > > > > > > It seems to have picked up some Manifest entries from
> > > > > BeanUtils  -
> > > > > > > for
> > > > > > > > > > example:
> > > > > > > > > > > Extension-Name: org.apache.commons.beanutils
> > > > > > > > > >  > Implementation-Version: 1.6
> > > > > > > > > > > Specification-Title: Jakarta Commons Beanutils
> > > > > > > > > > > Implementation-Title: org.apache.commons.beanutils
> > > > > > > > > >
> > > > > > > > > > > Niall
> > > > > > > > > > > (N.B. The BeanUtils 1.7.0 jar has version incorectly
> > > > > specifying
> > > > > > > 1.6 in
> > > > > > > > > > > its manifest.
> > > > > > > > > > > > Carsten
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > > --
> > > > > > > > > > > > Carsten Ziegeler
> > > > > > > > > > > > [EMAIL PROTECTED]
> > > > > > > > > > > >
> > > > > > > > > > > > Index:
> > > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > >
> > >
> /Users/cziegeler/Developer/workspaces/default/commons-proper/commons-parent/pom.xml
> > > > > > > > > > > >
> > > > > > >
> > > ===================================================================
> > > > > > > > > > > > ---
> > > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > >
> > >
> /Users/cziegeler/Developer/workspaces/default/commons-proper/commons-parent/pom.xml
> > > > > > > > > > (revision 605909)
> > > > > > > > > > > > +++
> > > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > >
> > >
> /Users/cziegeler/Developer/workspaces/default/commons-proper/commons-parent/pom.xml
> > > > > > > > > > (working copy)
> > > > > > > > > > > > @@ -159,6 +159,12 @@
> > > > > > > > > > >
> >            <artifactId>maven-release-plugin</artifactId>
> > > > > > > > > > > >            <version>2.0-beta-7</version>
> > > > > > > > > > > >          </plugin>
> > > > > > > > > >  > > +        <plugin>
> > > > > > > > > > > > +          <groupId>org.apache.felix</groupId>
> > > > > > > > > > > >
> +          <artifactId>maven-bundle-plugin</artifactId>
> > > > > > > > > > > > +          <version> 1.1.0-SNAPSHOT</version>
> > > > > > > > > > > > +          <inherited>true</inherited>
> > > > > > > > > > > > +        </plugin>
> > > > > > > > > > > >        </plugins>
> > > > > > > > > > > >      </pluginManagement>
> > > > > > > > > > > >      <plugins>
> > > > > > > > > > > > @@ -194,6 +200,15 @@
> > > > > > > > > > > >            <jdkLevel>${maven.compile.source
> }</jdkLevel>
> > > > > > > > > > > >          </configuration>
> > > > > > > > > > > >        </plugin>
> > > > > > > > > > > > +      <plugin>
> > > > > > > > > > > > +        <groupId>org.apache.felix</groupId>
> > > > > > > > > > > >
> +        <artifactId>maven-bundle-plugin</artifactId>
> > > > > > > > > > > > +        <configuration>
> > > > > > > > > > > > +          <instructions>
> > > > > > > > > > > > +
> > > > > > > > > >
> > > > > > > > <Bundle-SymbolicName>org.apache.commons.${pom.artifactId}
> > > > > > > </Bundle-SymbolicName>
> > > > > > > > > > > > +          </instructions>
> > > > > > > > > > > > +        </configuration>
> > > > > > > > > > > > +      </plugin>
> > > > > > > > > > > >      </plugins>
> > > > > > > > > > > >    </build>
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > > Index:
> > > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > >
> > >
> /Users/cziegeler/Developer/workspaces/default/commons-proper/lang/pom.xml
> > > > > > > > > > > >
> > > > > > >
> > > ===================================================================
> > > > > > > > > > > > ---
> > > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > >
> > >
> /Users/cziegeler/Developer/workspaces/default/commons-proper/lang/pom.xml
> > > > > > > > > > (revision 605909)
> > > > > > > > > > > > +++
> > > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > >
> > >
> /Users/cziegeler/Developer/workspaces/default/commons-proper/lang/pom.xml
> > > > > > > > > > (working copy)
> > > > > > > > > >  > > @@ -22,13 +22,14 @@
> > > > > > > > > > > >    <parent>
> > > > > > > > > > > >      <groupId>org.apache.commons</groupId>
> > > > > > > > > > > >      <artifactId>commons-parent</artifactId>
> > > > > > > > > > > > -    <version>5</version>
> > > > > > > > > > > > +    <version>6-SNAPSHOT</version>
> > > > > > > > > > > >    </parent>
> > > > > > > > > > > >    <modelVersion>4.0.0</modelVersion>
> > > > > > > > > > > >    <groupId>commons-lang</groupId>
> > > > > > > > > > > >    <artifactId>commons-lang</artifactId>
> > > > > > > > > > > >    <version>2.4-SNAPSHOT</version>
> > > > > > > > > > > >    <name>Commons Lang</name>
> > > > > > > > > > > > +  <packaging>bundle</packaging>
> > > > > > > > > > > >
> > > > > > > > > > > >    <inceptionYear>2001</inceptionYear>
> > > > > > > > > > > >      <description>
> > > > > > > > > > > > @@ -401,6 +402,16 @@
> > > > > > > > > > > >            <tarLongFileMode>gnu</tarLongFileMode>
> > > > > > > > > > > >          </configuration>
> > > > > > > > > > > >        </plugin>
> > > > > > > > > > > > +      <plugin>
> > > > > > > > > > > > +        <groupId> org.apache.felix</groupId>
> > > > > > > > > > > >
> +        <artifactId>maven-bundle-plugin</artifactId>
> > > > > > > > > > > > +        <extensions>true</extensions>
> > > > > > > > > > > > +        <configuration>
> > > > > > > > > > > > +          <instructions>
> > > > > > > > > > > > +
> > > > > > > > <Export-Package>*;version=${pom.version}</Export-Package>
> > > > > > > > > > > > +          </instructions>
> > > > > > > > > > > > +        </configuration>
> > > > > > > > > > > > +      </plugin>
> > > > > > > > > > > >      </plugins>
> > > > > > > > > > > >    </build>
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > >
> > > > >
> ---------------------------------------------------------------------
> > > > > > > > > > > > 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]
> > > > > > > > > >
> > > > > > > > > > --
> > > > > > > > > > This message is automatically generated by JIRA.
> > > > > > > > > > -
> > > > > > > > > > You can reply to this email to add a comment to the
> issue
> > > > > online.
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > --
> > > > > > > > Cheers, Stuart
> > > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > --
> > > > > > Cheers, Stuart
> > > > > >
> > > > >
> > > >
> > > > --
> > > > Cheers, Stuart
> > > >
> > >
> >
> >
> >
> > --
> > Cheers, Stuart
> >
>

-- 
Cheers, Stuart

Reply via email to