Good mornign! It's me again!
I tried not to question anything more, I thought your advise would helped me
but I changed ALL junit dependencies version from 3.8.1 to 4.8.1 in the entire
ipojo project and all its subprojects (including junit4osgi, handler extender,
felix-command, swing-gui, and the rest of them) the only places where I found
junit version where in all pom.xml files, so that is what I did.
After that there was the same missing packages problem
"org.osgi.framework.BundleException: Unresolved constraint in bundle
org.apache.felix.ipojo.junit4osgi [463]: package; (package=org.junit.internal)".
Weird since as clement said:
"junit4osgi embeds junit. So, you can't use a different version. But you can easily
modify the junit4osgi bundle to expose the missing package / update the junit
dependency"
I understood that my junit jar (id 408) is not the one that is providing junit
packages, this is junit4osgi's labour. So I looked inside the manifest of
junit4osgi and I am not sure why it is not exporting those packages missing
packages (likeorg.junit.internal) : legible MANIFEST:
Manifest-Version:1.0
Export-Package:
org.apache.felix.ipojo.junit4osgi.helpers;uses:=
"org.apache.felix.ipojo.junit4osgi,
org.apache.felix.ipojo.architecture,
org.apache.felix.ipojo,
org.osgi.framework,
org.osgi.service.cm,
org.apache.felix.ipojo.metadata,
org.apache.felix.ipojo.parser",
junit.framework;uses:=
"org.junit.runner.manipulation,
org.junit.runner,
org.junit.runner.notification,
org.junit",
org.apache.felix.ipojo.junit4osgi;uses:=
"junit.framework,
org.osgi.framework,
org.osgi.service.packageadmin",
junit.runner;uses:=
"junit.framework",
junit.textui;uses:="junit.framework,
junit.runner",
junit.extensions;uses:=
"junit.framework"
iPOJO-Components:
component{
$classname="org.apache.felix.ipojo.junit4osgi.impl.JunitExtender_1"
org.apache.felix.ipojo.extender:extender{
$extension="Test-Suite"
$onarrival="onBundleArrival"
$ondeparture="onBundleDeparture"
}
callback{
$transition="invalidate"
$method="stopping"
}
callback{
$transition="validate"
$method="starting"
}
provides{}
manipulation{
$super="org.apache.felix.ipojo.junit4osgi.impl.JunitExtender"
field{$name="m_suites"
$type="java.util.Map"}
field{$name="m_printer"
$type="junit.textui.ResultPrinter"}
field{$name="m_log"$type="org.osgi.service.log.LogService"}
method{$name="$init"}
method{$arguments="{junit.framework.Test}"$name="doRun"$return="junit.framework.TestResult"}
}
requires{$field="m_log"$default-implementation="org.apache.felix.ipojo.junit4osgi.impl.LogServiceImpl"$optional="true"}
}
instance{$component="org.apache.felix.ipojo.junit4osgi.impl.JunitExtender_1"}
Private-Package:
org.apache.felix.ipojo.junit4osgi.impl,
org.apache.felix.ipojo.junit4osgi.test
Built-By:annakarinanavasoriano
Tool:Bnd-0.0.255
Bundle-Name:ApacheFelixiPOJOOSGiJunitRunner
Created-By:ApacheMavenBundlePlugin&iPOJO1.4.0
Bundle-Vendor:TheApacheSoftwareFoundation
Build-Jdk:1.6.0_20
Bundle-Version:1.1.0.SNAPSHOT
Bnd-LastModified:1284058534606
Bundle-ManifestVersion:2Bundle-License:http://www.apache.org/licenses/LICENSE-2.0.txt
Bundle-Description:ApacheFelixisanOSGiimplementation.
Import-Package:
org.apache.felix.ipojo.junit4osgi.helpers,
org.junit.internal,
junit.runner,
org.apache.felix.ipojo;version=1.6,
org.junit.runner.notification,
javax.xml.parsers,
org.osgi.service.packageadmin;version=1.1,
org.w3c.dom,
junit.textui,
org.apache.felix.ipojo.parser;version=1.6,
org.junit,
junit.extensions,
org.junit.runner.manipulation,
org.osgi.service.log;version=1.2,
junit.framework,
org.apache.felix.ipojo.junit4osgi,
org.apache.felix.ipojo.architecture;version=1.6,
org.junit.runner,
org.osgi.framework;version=1.2,
org.osgi.service.cm;version=1.1,
org.apache.felix.ipojo.metadata
Bundle-SymbolicName:org.apache.felix.ipojo.junit4osgi
Bundle-DocURL:http://www.apache.org/
Then I decided to include this missing packages to the junit-4.8.1.jar, I did
that and that Unresolved constraint problem disappeared. But isn't this
opposed to the previous fact that junit4osgi embed junit? do I need to add this
missing packages to the junit-4.8.1.jar's MANIFEST? or as it is embedded it
should act the same than previously when it was not necessary to add anything
to junit.jar since that wasn't the packages provider (it was junit4osgi)?
Well, the thing is that even thinking the previous assumptions. I included to the
junit-4.8.1.jar the missing packages. But the same problem with junit command. I mean
junit command is not available in felix ("command not found") even having
everything installed and activated. Then I did the same inspect:
[ 408] [Active ] [ 1]
file:/Applications/NetBeans/sges-v3/glassfish/modules/junit-4.8.1.jar
[ 458] [Active ] [ 1] Apache Felix iPOJO (1.7.0.SNAPSHOT)
[ 459] [Active ] [ 1] Apache Felix iPOJO OSGi Junit Runner - Swing Gui
(1.1.0.SNAPSHOT)
[ 462] [Active ] [ 1] Apache Felix iPOJO Extender Pattern Handler
(1.5.0.SNAPSHOT)
[ 463] [Active ] [ 1] Apache Felix iPOJO OSGi Junit Runner
(1.1.0.SNAPSHOT)
[ 464] [Active ] [ 1] Apache Felix iPOJO OSGi Junit Runner - Felix
Command (1.1.0.SNAPSHOT)
-> inspect s c 464
Apache Felix iPOJO OSGi Junit Runner - Felix Command (464) provides services:
-----------------------------------------------------------------------------
component.class = org.apache.felix.ipojo.junit4osgi.command.JunitCommand
component.description =<unknown value type>
component.properties =<unknown value type>
component.providedServiceSpecifications = org.apache.felix.shell.Command
factory.name = org.apache.felix.ipojo.junit4osgi.command.JunitCommand
factory.state = 1
objectClass = org.apache.felix.ipojo.Factory,
org.osgi.service.cm.ManagedServiceFactory
service.id = 44
service.pid = org.apache.felix.ipojo.junit4osgi.command.JunitCommand
->
I am not sure but I think that there is a problem trying to have packages from junit4osgi
and also from junit. but the problem is that I don't know how to "force" the
export of all needed packages from the junit4osgi project. I mean, the manifest is
created automatically when compiling the maven project from the pom.xml and the
metadata.xml files. Mi junit4osgi MANIFEST is the entire one above. So Do you know if
in that resulting manifest file are missing exports? what could cause that problem? and
how can I add those exports?
Thanks again, I just need this working and do not know what else to do.
On Sep 9, 2010, at 8:01 PM, Clement Escoffier wrote:
On 09.09.2010, at 19:32, Anna Karina Nava Soriano wrote:
I know that about annotations, I already solved it in my tests (it is not a
problem anymore), but I need some classes of junit 4.8.
I can try your advice, I only need to be sure that if I update the junit
dependency it wont break anything from junit4osgi. Let me check if I caught
the idea... for updating the junit dependency I only need to change the junit
version in felix command pom.xml:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
</dependency>
I noticed that I already changed that version but in junit4osgi jar.
Then the question is... is there a problem if I change everything to
junit-4.8.1 or what would be the alternative? adapting to 3.8.1? (this last
option will be more difficult for me, trying to find workarounds for missing
classes in junit-3.8.1
Thank you very very much! this is important for me!
You can safely update to 4.8.1. As this version contains the classes from the
3.8.1.
Regards,
Clement
On Sep 9, 2010, at 7:11 PM, Clement Escoffier wrote:
Hi,
junit4osgi embeds junit. So, you can't use a different version. But you can
easily modify the junit4osgi bundle to expose the missing package / update the
junit dependency. However, the launcher does not support annotations, so, you
must use the junit 3 development model.
Regards,
Clement
On 09.09.2010, at 18:01, Anna Karina Nava Soriano wrote:
thanks Richard!!!!
Now in the junit-4.8.1.jar MANIFEST I included all the missing packages and the
result is:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.1
Export-Package: org.junit.runner.notification,org.junit,
org.junit.runner.manipulation,org.junit.runner
Created-By: 1.5.0_20-141 (Apple Inc.)
Now everithing is able to be installed and started:
[ 404] [Active ] [ 1] Apache Felix iPOJO Extender Pattern Handler (1.4.0)
[ 405] [Active ] [ 1] Apache Felix iPOJO OSGi Junit Runner - Felix
Command (1.0.0)
[ 408] [Active ] [ 1]
file:/Applications/NetBeans/sges-v3/glassfish/modules/junit-4.8.1.jar
[ 409] [Active ] [ 1] Apache Felix iPOJO OSGi Junit Runner - Swing Gui
(1.0.0)
[ 410] [Active ] [ 1] Apache Felix iPOJO OSGi Junit Runner
(1.1.0.SNAPSHOT)
[ 412] [Active ] [ 1] Apache Felix iPOJO (1.6.4)
[ 428] [Active ] [ 1] Broker Project Services TESTS (1.3)
but even having the Felix Command bundle installed and active. I got no junit
command :( and previously I was. In fact if I type help
-> help
bundlelevel
cd
find
headers
help
inspect
install
log
ps
refresh
resolve
scr
shutdown
start
startlevel
stop
sysprop
uninstall
update
version
see? no junit command :( I haven't changed that bundle at all. I don't know
what is happening here. I tried uninstall everything from 404 and reinstalling
it but having the same result. May be it is there is a problem if some part of
the unit test packages are being exported by junit4osgi and other by the junit
library? I don't know how to make junit4osgi treat this packages the same way
since its manifest is automatically built when I compile the junit4osgi project
Thanks for your supor!
On Sep 9, 2010, at 3:34 PM, Richard S. Hall wrote:
On 9/9/10 6:28, Anna Karina Nava Soriano wrote:
Hello everyone!
Nice tool junit4osgi!
I am working with junit4osgi and needed to extend the JunitExtender class to
run tests in a particular way (the reason is not important). MyJunitExtender
is the new class and it extends JunitExtender and only overrides the run
method. I tested it and this was working fine! (obviously I changed
metadata.xml to tell the new MyJunitExtender class) so far so good.
The thing is that I need now org.junit.internal.JUnitSystem. So in MyJunitExtender I
added "import org.junit.internal.JUnitSystem;" then I compile the project
again, and the import-Package in my new MANIFEST looks like this:
....
Import-Package: org.apache.felix.ipojo.junit4osgi.helpers, org.junit.i
nternal, junit.runner, org.apache.felix.ipojo;version=1.6, org.junit.
runner.notification, javax.xml.parsers, org.osgi.service.packageadmin
;version=1.1, org.w3c.dom, junit.textui, org.apache.felix.ipojo.parse
r;version=1.6, org.junit, junit.extensions, org.junit.runner.manipula
tion, org.osgi.service.log;version=1.2, junit.framework, org.apache.f
elix.ipojo.junit4osgi, org.apache.felix.ipojo.architecture;version=1.
6, org.junit.runner, org.osgi.framework;version=1.2, org.osgi.service
.cm;version=1.1, org.apache.felix.ipojo.metadata
....
as you can see, the org.junit.internal is there. I install this new jar in my
Felix (see the last line)
....
[ 320] [Active ] [ 1]
file:/Applications/NetBeans/sges-v3/glassfish/modules/junit-4.8.1.jar
[ 326] [Active ] [ 1] Apache Felix iPOJO Extender Pattern Handler (1.4.0)
[ 327] [Installed ] [ 1] Apache Felix iPOJO OSGi Junit Runner - Felix
Command (1.0.0)
[ 330] [Installed ] [ 1] Apache Felix iPOJO OSGi Junit Runner - Swing Gui
(1.0.0)
[ 332] [Active ] [ 1] Apache Felix iPOJO (1.6.4)
[ 339] [Installed ] [ 1] Broker Project Services TESTS (1.3)
[ 354] [Installed ] [ 1] Apache Felix iPOJO OSGi Junit Runner
(1.1.0.SNAPSHOT)
and when I do "start 354" it keeps saying:
"org.osgi.framework.BundleException: Unresolved constraint in bundle
org.apache.felix.ipojo.junit4osgi [354]: package; (package=org.junit.internal)"
I know probably there is some stupid thing that I am missing. My junit file (you can see
it with the id "320") has this manifest:
"Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.1
Created-By: 1.5.0_20-141 (Apple Inc.)"
If that's all it has, then it is not a bundle. It needs to, at least, export
its packages.
-> richard
So... does somebody knows what am I doing wrong? I am new in the junit4osgi
world and I always get kind of lost with all dependencies.
Thank you so much in advance!
---------------------------------------------------------------------
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]
---------------------------------------------------------------------
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]
---------------------------------------------------------------------
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]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]