Author: rickhall
Date: Tue Jun 15 19:20:46 2010
New Revision: 955011
URL: http://svn.apache.org/viewvc?rev=955011&view=rev
Log:
Add support for reinstalling virtual bundles.
Modified:
felix/sandbox/rickhall/vb/framework-vb/src/main/java/org/apache/felix/framework/BundleContextImpl.java
felix/sandbox/rickhall/vb/framework-vb/src/main/java/org/apache/felix/framework/BundleImpl.java
felix/sandbox/rickhall/vb/framework-vb/src/main/java/org/apache/felix/framework/Felix.java
felix/sandbox/rickhall/vb/framework-vb/src/main/java/org/apache/felix/framework/UnmanagedModuleImpl.java
Modified:
felix/sandbox/rickhall/vb/framework-vb/src/main/java/org/apache/felix/framework/BundleContextImpl.java
URL:
http://svn.apache.org/viewvc/felix/sandbox/rickhall/vb/framework-vb/src/main/java/org/apache/felix/framework/BundleContextImpl.java?rev=955011&r1=955010&r2=955011&view=diff
==============================================================================
---
felix/sandbox/rickhall/vb/framework-vb/src/main/java/org/apache/felix/framework/BundleContextImpl.java
(original)
+++
felix/sandbox/rickhall/vb/framework-vb/src/main/java/org/apache/felix/framework/BundleContextImpl.java
Tue Jun 15 19:20:46 2010
@@ -124,7 +124,7 @@ class BundleContextImpl implements Felix
public VirtualModuleContext reinstallBundle(Bundle bundle, VirtualModule
vm)
throws BundleException
{
- return null;
+ return m_felix.reinstallBundle(m_bundle, (BundleImpl) bundle, vm);
}
public Bundle getBundle(long id)
Modified:
felix/sandbox/rickhall/vb/framework-vb/src/main/java/org/apache/felix/framework/BundleImpl.java
URL:
http://svn.apache.org/viewvc/felix/sandbox/rickhall/vb/framework-vb/src/main/java/org/apache/felix/framework/BundleImpl.java?rev=955011&r1=955010&r2=955011&view=diff
==============================================================================
---
felix/sandbox/rickhall/vb/framework-vb/src/main/java/org/apache/felix/framework/BundleImpl.java
(original)
+++
felix/sandbox/rickhall/vb/framework-vb/src/main/java/org/apache/felix/framework/BundleImpl.java
Tue Jun 15 19:20:46 2010
@@ -1046,7 +1046,7 @@ class BundleImpl implements Bundle
boolean used = false;
for (int i = 0; !unresolved && !used && (i < m_modules.size()); i++)
{
- List<Module> dependents = ((ModuleImpl)
m_modules.get(i)).getDependents();
+ List<Module> dependents = ((AbstractModuleImpl)
m_modules.get(i)).getDependents();
for (int j = 0; (dependents != null) && (j < dependents.size()) &&
!used; j++)
{
if (dependents.get(j) != m_modules.get(i))
Modified:
felix/sandbox/rickhall/vb/framework-vb/src/main/java/org/apache/felix/framework/Felix.java
URL:
http://svn.apache.org/viewvc/felix/sandbox/rickhall/vb/framework-vb/src/main/java/org/apache/felix/framework/Felix.java?rev=955011&r1=955010&r2=955011&view=diff
==============================================================================
---
felix/sandbox/rickhall/vb/framework-vb/src/main/java/org/apache/felix/framework/Felix.java
(original)
+++
felix/sandbox/rickhall/vb/framework-vb/src/main/java/org/apache/felix/framework/Felix.java
Tue Jun 15 19:20:46 2010
@@ -2788,6 +2788,49 @@ ex.printStackTrace();
return new VirtualModuleContextImpl(bundle);
}
+ VirtualModuleContext reinstallBundle(BundleImpl manager, BundleImpl vb,
VirtualModule vm)
+ throws BundleException
+ {
+ // Acquire bundle lock.
+ try
+ {
+ acquireBundleLock(vb, Bundle.INSTALLED);
+ }
+ catch (IllegalStateException ex)
+ {
+ throw new BundleException(
+ "Bundle " + vb
+ + " cannot be reinstalled, since it is not in INSTALLED
state.");
+ }
+
+ try
+ {
+ Throwable rethrow = null;
+
+ if (vb.getCurrentModule() instanceof UnmanagedModuleImpl)
+ {
+ ((UnmanagedModuleImpl)
vb.getCurrentModule()).setVirtualModule(vm);
+ }
+ else
+ {
+ throw new BundleException(
+ "Cannot reinstall bundle "
+ + vb + " since it is not a virtual bundle.");
+ }
+ }
+ finally
+ {
+ // Always release bundle lock.
+ releaseBundleLock(vb);
+ }
+
+ // Fire bundle event.
+ fireBundleEvent(BundleEvent.INSTALLED, vb);
+
+ // Return virtual module context.
+ return new VirtualModuleContextImpl(vb);
+ }
+
/**
* Retrieves a bundle from its location.
*
Modified:
felix/sandbox/rickhall/vb/framework-vb/src/main/java/org/apache/felix/framework/UnmanagedModuleImpl.java
URL:
http://svn.apache.org/viewvc/felix/sandbox/rickhall/vb/framework-vb/src/main/java/org/apache/felix/framework/UnmanagedModuleImpl.java?rev=955011&r1=955010&r2=955011&view=diff
==============================================================================
---
felix/sandbox/rickhall/vb/framework-vb/src/main/java/org/apache/felix/framework/UnmanagedModuleImpl.java
(original)
+++
felix/sandbox/rickhall/vb/framework-vb/src/main/java/org/apache/felix/framework/UnmanagedModuleImpl.java
Tue Jun 15 19:20:46 2010
@@ -45,7 +45,7 @@ import org.osgi.framework.Version;
public class UnmanagedModuleImpl extends AbstractModuleImpl
{
- private final VirtualModule m_vm;
+ private VirtualModule m_vm;
public UnmanagedModuleImpl(
Logger logger, Map configMap,
@@ -56,11 +56,16 @@ public class UnmanagedModuleImpl extends
m_vm = vm;
}
- public VirtualModule getVirtualModule()
+ public synchronized VirtualModule getVirtualModule()
{
return m_vm;
}
+ public synchronized void setVirtualModule(VirtualModule vm)
+ {
+ m_vm = vm;
+ }
+
public Content getContent()
{
return null;