You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by ri...@apache.org on 2011/08/11 16:56:27 UTC
svn commit: r1156640 - in
/felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test: recipes/
src/org/apache/felix/framework/test/
src/org/apache/felix/framework/test/classloading/b005/
src/org/apache/felix/framework/test/classloading/b006/
Author: rickhall
Date: Thu Aug 11 14:56:27 2011
New Revision: 1156640
URL: http://svn.apache.org/viewvc?rev=1156640&view=rev
Log:
Add a reexport test case.
Added:
felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/classloading/b006/
felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/classloading/b006/Placeholder.java
- copied, changed from r1156632, felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/classloading/b008/Placeholder.java
Modified:
felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/recipes/classloading.b006.bnd
felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/TestClassLoading.java
felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/classloading/b005/B005Class.java
Modified: felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/recipes/classloading.b006.bnd
URL: http://svn.apache.org/viewvc/felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/recipes/classloading.b006.bnd?rev=1156640&r1=1156639&r2=1156640&view=diff
==============================================================================
--- felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/recipes/classloading.b006.bnd (original)
+++ felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/recipes/classloading.b006.bnd Thu Aug 11 14:56:27 2011
@@ -1,5 +1,5 @@
-Bundle-SymbolicName: org.apache.felix.framework.test.classloading.b005
-Private-Package: org.apache.felix.framework.test.classloading.b005
-Require-Bundle: org.apache.felix.framework.test.classloading.b003; visibility:="reexport"
+Bundle-SymbolicName: org.apache.felix.framework.test.classloading.b006
+Private-Package: org.apache.felix.framework.test.classloading.b006
+Require-Bundle: org.apache.felix.framework.test.classloading.b005
Import-Package: !*
Modified: felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/TestClassLoading.java
URL: http://svn.apache.org/viewvc/felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/TestClassLoading.java?rev=1156640&r1=1156639&r2=1156640&view=diff
==============================================================================
--- felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/TestClassLoading.java (original)
+++ felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/TestClassLoading.java Thu Aug 11 14:56:27 2011
@@ -32,6 +32,7 @@ public class TestClassLoading extends Fe
private Bundle m_bundleA = null;
private Bundle m_bundleB = null;
private Bundle m_bundleC = null;
+ private Bundle m_bundleD = null;
public void testPackageInfo() throws Exception
{
@@ -177,6 +178,8 @@ public class TestClassLoading extends Fe
public void testRequireReexport() throws Exception
{
+ // Scenario 1
+ // Test reexport visibility with cyclical bundles.
try
{
// Load some bundles that export some packages.
@@ -205,6 +208,77 @@ public class TestClassLoading extends Fe
{
cleanup();
}
+
+ // Scenario 2
+ // Test reexport visibility with a longer chain.
+ try
+ {
+ // Load some bundles that export some packages.
+ InputStream is = this.getClass().getClassLoader().getResourceAsStream("classloading.b002.jar");
+ m_bundleA = getBundleContext().installBundle("classloading.b002.jar", is);
+ is = this.getClass().getClassLoader().getResourceAsStream("classloading.b003.jar");
+ m_bundleB = getBundleContext().installBundle("classloading.b003.jar", is);
+ // Load a bundle that requires B, where B reexports A.
+ is = this.getClass().getClassLoader().getResourceAsStream("classloading.b005.jar");
+ m_bundleC = getBundleContext().installBundle("classloading.b005.jar", is);
+ // Load a bundle that requires C.
+ is = this.getClass().getClassLoader().getResourceAsStream("classloading.b006.jar");
+ m_bundleD = getBundleContext().installBundle("classloading.b006.jar", is);
+
+ Class clazz;
+ try
+ {
+ clazz = m_bundleD.loadClass(
+ "org.apache.felix.framework.test.classloading.b002.CycleAAA");
+ assertNotNull("Class should not be null.", clazz);
+ }
+ catch (Exception ex)
+ {
+ assertTrue("Reexported class should be visible.", false);
+ }
+ }
+ finally
+ {
+ cleanup();
+ }
+
+ // Scenario 3
+ // Test reexport visibility with a longer chain, but resolve in reverse
+ // dependency order. We saw an error in such a situation when the reexported
+ // packages were being calculating incorrectly.
+ try
+ {
+ // Load some bundles that export some packages.
+ InputStream is = this.getClass().getClassLoader().getResourceAsStream("classloading.b002.jar");
+ m_bundleA = getBundleContext().installBundle("classloading.b002.jar", is);
+ getPackageAdmin().resolveBundles(new Bundle[] { m_bundleA });
+ is = this.getClass().getClassLoader().getResourceAsStream("classloading.b003.jar");
+ m_bundleB = getBundleContext().installBundle("classloading.b003.jar", is);
+ getPackageAdmin().resolveBundles(new Bundle[] { m_bundleB });
+ // Load a bundle that requires B, where B reexports A.
+ is = this.getClass().getClassLoader().getResourceAsStream("classloading.b005.jar");
+ m_bundleC = getBundleContext().installBundle("classloading.b005.jar", is);
+ getPackageAdmin().resolveBundles(new Bundle[] { m_bundleC });
+ // Load a bundle that requires C.
+ is = this.getClass().getClassLoader().getResourceAsStream("classloading.b006.jar");
+ m_bundleD = getBundleContext().installBundle("classloading.b006.jar", is);
+
+ Class clazz;
+ try
+ {
+ clazz = m_bundleD.loadClass(
+ "org.apache.felix.framework.test.classloading.b002.CycleAAA");
+ assertNotNull("Class should not be null.", clazz);
+ }
+ catch (Exception ex)
+ {
+ assertTrue("Reexported class should be visible.", false);
+ }
+ }
+ finally
+ {
+ cleanup();
+ }
}
public void testRequireImportExport() throws Exception
@@ -307,6 +381,18 @@ public class TestClassLoading extends Fe
}
m_bundleC = null;
}
+ if (m_bundleD != null)
+ {
+ try
+ {
+ m_bundleD.uninstall();
+ }
+ catch (Exception ex)
+ {
+ // Ummm?
+ }
+ m_bundleD = null;
+ }
refreshFramework();
}
}
Modified: felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/classloading/b005/B005Class.java
URL: http://svn.apache.org/viewvc/felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/classloading/b005/B005Class.java?rev=1156640&r1=1156639&r2=1156640&view=diff
==============================================================================
--- felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/classloading/b005/B005Class.java (original)
+++ felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/classloading/b005/B005Class.java Thu Aug 11 14:56:27 2011
@@ -6,9 +6,9 @@
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -18,8 +18,6 @@
*/
package org.apache.felix.framework.test.classloading.b005;
-import org.apache.felix.framework.test.classloading.b004.*;
-
public class B005Class
{
Copied: felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/classloading/b006/Placeholder.java (from r1156632, felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/classloading/b008/Placeholder.java)
URL: http://svn.apache.org/viewvc/felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/classloading/b006/Placeholder.java?p2=felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/classloading/b006/Placeholder.java&p1=felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/classloading/b008/Placeholder.java&r1=1156632&r2=1156640&rev=1156640&view=diff
==============================================================================
--- felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/classloading/b008/Placeholder.java (original)
+++ felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/classloading/b006/Placeholder.java Thu Aug 11 14:56:27 2011
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.felix.framework.test.classloading.b008;
+package org.apache.felix.framework.test.classloading.b006;
public class Placeholder
{