David Bosschaert [
http://community.jboss.org/people/bosschaert] replied to the discussion
"Deployer ordering question (JBoss OSGi)"
To view the discussion, visit:
http://community.jboss.org/message/549421#549421
--------------------------------------------------------------
Ales Justin wrote:
> In the JBoss OSGi project I have
http://github.com/jbosgi/jbosgi-framework/blob/master/core/src/main/java/...
a deployer that adds some metadata to the deployment unit.
I only see you reading from deployment unit, but not writing.
protected void internalDeploy(DeploymentUnit unit) throws DeploymentException
{
StartLevelPlugin slp = bundleManager.getOptionalPlugin(StartLevelPlugin.class);
if (slp == null)
return;
OSGiMetaData md = unit.getAttachment(OSGiMetaData.class);
if (md instanceof AbstractOSGiMetaData)
{
AbstractOSGiMetaData amd = (AbstractOSGiMetaData)md;
int bsl = slp.getInitialBundleStartLevel(
md.getBundleSymbolicName(),
Version.parseVersion(md.getBundleVersion()));
if (bsl != StartLevelPlugin.INITIAL_BUNDLE_STARTLEVEL_UNSPECIFIED)
{
amd.setInitialStartLevel(bsl);
}
}
}
In the very last line I'm writing to the deployment metadata that is already in the
deployment unit.
In the
http://github.com/jbosgi/jbosgi-framework/blob/master/core/src/main/java/...
OSGiBundleState I want to read that metadata out again after the bundle is installed.
Currently in the code it initialises that metadata at the beginning of the start() method
but that's really too late because you also want to be able to read out the start
level of bundles that are just installed.>
> Is there a callback I can add to OSGiBundleState that gets called after my
OSGiStartLevelMetaDataDeployer has run but still as part of the bundle install?
I don't understand what exactly do you mean / need.
I need to access this OSGiMetaData in the OSGiBundleState after the bundle was installed
but before someone calls start(). I tried overriding changeState() with reacting to the
Bundle.INSTALLED change state but that's always called back before my deployer was
called (too early).
So I need a callback in the OSGiBundleState that calls me back at the right time so I can
initialize the state based on what's in the OSGiMetaData. I couldn't find the
right callback for that. Maybe we need to somehow get the OSGiStartLevelMetaDataDeployer
to run a bit earlier as well to achieve this, I'm not sure...
--------------------------------------------------------------
Reply to this message by going to Community
[
http://community.jboss.org/message/549421#549421]
Start a new discussion in JBoss Microcontainer at Community
[
http://community.jboss.org/choose-container!input.jspa?contentType=1&...]