I admit, I don't see it at first glance.
If you want to email me privately a zip of your setup to easily
reproduce it, I could take a look.
-> richard
On 3/10/12 17:37 , matias san martin wrote:
Hi Richard,Thank you for taking
the time to analyze my problem. I don't think it is a problem of
"logging", because if I print the number of missing requirements in the
2nd iteration (where the question rises), it prints that 2 reqs are
missing (that would be Runner and InterRunner).
At the bottom of this mail you can find the content of the repository.xml files
I'm using [1].
Note that they are pasted all together but in my test they are separated in 3
different files (corresponding to repo1,repo2,repo3). The names of the packages
and bundles are ones
I'm using in my test (in my original question they were simplified).
These files were created using the bindex tool.
I can share the bundles I'm using too (if they are needed). I'm really curious
about
this behavior and can't think of any explanation (note that I'm just
starting using OSGi and Felix).
Many thanks again for taking the time to try to understand the problem I'm
presenting.
Regards
[1] Sorry I couldn't use a better way of posting the information (e.g. using
pastebind or sth) because this mail was being detected as SPAM
/////////////////////////////////////// REPOSITORY FILES
//////////////////////////////////////////////////////
<?xml version='1.0' encoding='utf-8'?>
<?xml-stylesheet type='text/xsl' href='http://www.osgi.org/www/obr2html.xsl';?>
<repository lastmodified='20120310183715.359' name='repository_1'>
<resource id='test.osgi.dynload.bundle.echoer.console/1.0.0'
presentationname='Console'
symbolicname='test.osgi.dynload.bundle.echoer.console'
uri='test.osgi.dynload.bundle.echoer.console_1.0.0.jar'
version='1.0.0'>
<size>
1859
</size>
<capability name='bundle'>
<p n='manifestversion' v='2'/>
<p n='presentationname' v='Console'/>
<p n='symbolicname' v='test.osgi.dynload.bundle.echoer.console'/>
<p n='version' t='version' v='1.0.0'/>
</capability>
<capability name='package'>
<p n='package' v='test.osgi.dynload.bundle.echoer.console'/>
<p n='uses' v='test.osgi.dynload.bundle.inter.echoer'/>
<p n='version' t='version'
v='1.0.0'/>
</capability>
<require
extend='false'
filter='(&(package=test.osgi.dynload.bundle.inter.echoer)(version>=1.0.0)(!(version>=2.0.0)))'
multiple='false' name='package' optional='false'>
Import package test.osgi.dynload.bundle.inter.echoer
;version=[1.0.0,2.0.0)
</require>
<require extend='false' filter='(|(ee=JavaSE-1.6))' multiple='false'
name='ee' optional='false'>
Execution Environment (|(ee=JavaSE-1.6))
</require>
</resource>
<resource id='test.osgi.dynload.bundle.interEch/1.0.0'
presentationname='InterEch'
symbolicname='test.osgi.dynload.bundle.interEch'
uri='test.osgi.dynload.bundle.interEch_1.0.0.jar' version='1.0.0'>
<size>
1968
</size>
<capability name='bundle'>
<p n='manifestversion' v='2'/>
<p n='presentationname' v='InterEch'/>
<p n='symbolicname' v='test.osgi.dynload.bundle.interEch'/>
<p n='version' t='version' v='1.0.0'/>
</capability>
<capability name='package'>
<p n='package' v='test.osgi.dynload.bundle.inter.echoer'/>
<p n='version' t='version' v='1.0.0'/>
</capability>
<require extend='false' filter='(|(ee=JavaSE-1.6))' multiple='false'
name='ee' optional='false'>
Execution
Environment (|(ee=JavaSE-1.6))
</require>
</resource>
<resource id='test.osgi.dynload.bundle.main/1.0.0'
presentationname='Main' symbolicname='test.osgi.dynload.bundle.main'
uri='test.osgi.dynload.bundle.main_1.0.0.jar' version='1.0.0'>
<size>
1720
</size>
<capability name='bundle'>
<p n='manifestversion' v='2'/>
<p n='presentationname' v='Main'/>
<p n='symbolicname' v='test.osgi.dynload.bundle.main'/>
<p n='version' t='version' v='1.0.0'/>
</capability>
<require extend='false'
filter='(&(package=org.osgi.framework)(version>=1.3.0))' multiple='false'
name='package' optional='false'>
Import package org.osgi.framework ;version=1.3.0
</require>
<require extend='false'
filter='(&(package=test.osgi.dynload.bundle.echoer.console)(version>=1.0.0)(!(version>=2.0.0)))'
multiple='false' name='package' optional='false'>
Import package test.osgi.dynload.bundle.echoer.console
;version=[1.0.0,2.0.0)
</require>
<require extend='false'
filter='(&(package=test.osgi.dynload.bundle.inter.echoer)(version>=1.0.0))'
multiple='false' name='package' optional='false'>
Import package test.osgi.dynload.bundle.inter.echoer ;version=1.0.0
</require>
<require extend='false'
filter='(&(package=test.osgi.dynload.bundle.runner.thread)(version>=1.0.0)(!(version>=2.0.0)))'
multiple='false' name='package' optional='false'>
Import package test.osgi.dynload.bundle.runner.thread
;version=[1.0.0,2.0.0)
</require>
<require extend='false' filter='(|(ee=JavaSE-1.6))' multiple='false'
name='ee' optional='false'>
Execution Environment (|(ee=JavaSE-1.6))
</require>
</resource>
</repository>
<!------------------------------------------------------------------------------------->
<repository lastmodified='20120309202958.415' name='repository2'>
<resource id='test.osgi.dynload.bundle.runner.thread/1.0.0'
presentationname='Runner Thread'
symbolicname='test.osgi.dynload.bundle.runner.thread'
uri='test.osgi.dynload.bundle.runner.thread_1.0.0.jar'
version='1.0.0'>
<size>
3030
</size>
<capability name='bundle'>
<p n='manifestversion' v='2'/>
<p n='presentationname' v='Runner Thread'/>
<p n='symbolicname' v='test.osgi.dynload.bundle.runner.thread'/>
<p n='version' t='version' v='1.0.0'/>
</capability>
<capability name='package'>
<p n='package' v='test.osgi.dynload.bundle.runner.thread'/>
<p n='uses'
v='test.osgi.dynload.bundle.inter.echoer,test.osgi.dynload.bundle.inter.runner'/>
<p n='version'
t='version' v='1.0.0'/>
</capability>
<require extend='false'
filter='(&(package=test.osgi.dynload.bundle.inter.echoer)(version>=1.0.0)(!(version>=2.0.0)))'
multiple='false' name='package' optional='false'>
Import package test.osgi.dynload.bundle.inter.echoer
;version=[1.0.0,2.0.0)
</require>
<require extend='false'
filter='(&(package=test.osgi.dynload.bundle.inter.runner)(version>=1.0.0)(!(version>=2.0.0)))'
multiple='false' name='package' optional='false'>
Import package test.osgi.dynload.bundle.inter.runner
;version=[1.0.0,2.0.0)
</require>
<require extend='false' filter='(|(ee=JavaSE-1.6))' multiple='false'
name='ee' optional='false'>
Execution Environment (|(ee=JavaSE-1.6))
</require>
</resource>
</repository>
<!------------------------------------------------------------------------------------->
<?xml version='1.0' encoding='utf-8'?>
<?xml-stylesheet type='text/xsl' href='http://www.osgi.org/www/obr2html.xsl';?>
<repository lastmodified='20120304150726.987' name='Repository3'>
<resource id='test.osgi.dynload.bundle.interRun/1.0.0'
presentationname='InterRun'
symbolicname='test.osgi.dynload.bundle.interRun'
uri='test.osgi.dynload.bundle.interRun_1.0.0.jar' version='1.0.0'>
<size>
1967
</size>
<capability name='bundle'>
<p n='manifestversion' v='2'/>
<p n='presentationname'
v='InterRun'/>
<p n='symbolicname' v='test.osgi.dynload.bundle.interRun'/>
<p n='version' t='version' v='1.0.0'/>
</capability>
<capability name='package'>
<p n='package' v='test.osgi.dynload.bundle.inter.runner'/>
<p n='version' t='version' v='1.0.0'/>
</capability>
<require extend='false' filter='(|(ee=JavaSE-1.6))' multiple='false'
name='ee' optional='false'>
Execution Environment (|(ee=JavaSE-1.6))
</require>
</resource>
</repository>
////////////////////////////////////////////////////////////////////////////////////////////////////////////
________________________________
De: Richard S. Hall<[email protected]>
Para: [email protected]
Enviado: sábado, 10 de marzo de 2012 2:02
Asunto: Re: OBR resolver knows about a requirement of a missing requirement
Perhaps you are printing the messages in the wrong spot while recursing...just
a thought. Otherwise, it might be necessary to see your repository.xml file.
"San Martín, Matías"<[email protected]> wrote:
Hi everybody,
first of all sorry about the odd mail subject, I will try to explain
myself better.
The context of the problem:
=================
I have the following bundles:
Main
Depends on (packages): Console, InterConsole, Runner
Console:
Depends on: InterConsole
Exports (package): Console
InterConsole:
Exports: InterConsole
Runner:
Depends on: InterConsole, InterRunner
Exports: Runner
InterRunner:
Exports: InterRunner
//////////////////////////
I have the following OBR repositories:
Repo1: (contains) Main, Console, InterConsole
Repo2: Runner
Repo3: InterRunner
//////////////////////////
Then I have this (pseudo)code/logic:
1- Install Repo1 in OBR repository admin
2- discover resource Main
3- get a new resolver
4- try to deploy Main
5- If there are missing dependencies, print them, else go to pont 9
6- Find repository that contains missing dependencies
7- Install repository found
8- Go to point 3
9- Bundle deployed
The run output:
==========
The execution of the logic just mentioned prints this:
Got new resolver
Missing dependency: InterRunner
Missing dependency: Runner
Installed Repository 3
Installed Repository 2
Got new resolver
Bundle deployed
The question/problem:
===============
How is possible that the first resolver knows about the missing
dependency InterRunner if the Runner is not known yet???!!!
Any thoughts???
Thank you in advance for taking the time to read and give any thought
to
my problem.
Regards
---------------------------------------------------------------------
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]