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&gt;=1.0.0)(!(version&gt;=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&gt;=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&gt;=1.0.0)(!(version&gt;=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&gt;=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&gt;=1.0.0)(!(version&gt;=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&gt;=1.0.0)(!(version&gt;=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&gt;=1.0.0)(!(version&gt;=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]

Reply via email to