You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by gn...@apache.org on 2016/10/20 11:45:13 UTC
svn commit: r1765806 - in /felix/trunk/framework/src:
main/java/org/apache/felix/framework/
main/java/org/apache/felix/framework/util/
test/java/org/apache/felix/framework/
test/java/org/apache/felix/framework/util/
Author: gnodet
Date: Thu Oct 20 11:45:13 2016
New Revision: 1765806
URL: http://svn.apache.org/viewvc?rev=1765806&view=rev
Log:
[FELIX-5384] EventDispatcher#createWhitelistFromHooks fails under security
Added:
felix/trunk/framework/src/main/java/org/apache/felix/framework/EventDispatcher.java
- copied, changed from r1765805, felix/trunk/framework/src/main/java/org/apache/felix/framework/util/EventDispatcher.java
felix/trunk/framework/src/test/java/org/apache/felix/framework/EventDispatcherTest.java
- copied, changed from r1765805, felix/trunk/framework/src/test/java/org/apache/felix/framework/util/EventDispatcherTest.java
Removed:
felix/trunk/framework/src/main/java/org/apache/felix/framework/util/EventDispatcher.java
felix/trunk/framework/src/test/java/org/apache/felix/framework/util/EventDispatcherTest.java
Modified:
felix/trunk/framework/src/main/java/org/apache/felix/framework/DTOFactory.java
felix/trunk/framework/src/main/java/org/apache/felix/framework/Felix.java
Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/DTOFactory.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/DTOFactory.java?rev=1765806&r1=1765805&r2=1765806&view=diff
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/DTOFactory.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/DTOFactory.java Thu Oct 20 11:45:13 2016
@@ -365,7 +365,7 @@ public class DTOFactory
dto.properties = convertAttrsToDTO(framework.getConfig());
dto.bundles = new ArrayList<BundleDTO>();
- for (Bundle b : framework.getBundleContext().getBundles())
+ for (Bundle b : framework._getBundleContext().getBundles())
{
dto.bundles.add(DTOFactory.createDTO(b, BundleDTO.class));
}
@@ -375,7 +375,7 @@ public class DTOFactory
ServiceReference<?>[] refs = null;
try
{
- refs = framework.getBundleContext().getAllServiceReferences(null, null);
+ refs = framework._getBundleContext().getAllServiceReferences(null, null);
}
catch (InvalidSyntaxException e)
{
Copied: felix/trunk/framework/src/main/java/org/apache/felix/framework/EventDispatcher.java (from r1765805, felix/trunk/framework/src/main/java/org/apache/felix/framework/util/EventDispatcher.java)
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/EventDispatcher.java?p2=felix/trunk/framework/src/main/java/org/apache/felix/framework/EventDispatcher.java&p1=felix/trunk/framework/src/main/java/org/apache/felix/framework/util/EventDispatcher.java&r1=1765805&r2=1765806&rev=1765806&view=diff
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/util/EventDispatcher.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/EventDispatcher.java Thu Oct 20 11:45:13 2016
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.felix.framework.util;
+package org.apache.felix.framework;
import java.security.AccessController;
import java.security.PrivilegedAction;
@@ -33,8 +33,7 @@ import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
-import org.apache.felix.framework.Logger;
-import org.apache.felix.framework.ServiceRegistry;
+import org.apache.felix.framework.util.*;
import org.osgi.framework.AllServiceListener;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
@@ -470,7 +469,7 @@ public class EventDispatcher
fireEventAsynchronously(this, Request.FRAMEWORK_EVENT, listeners, event);
}
- public void fireBundleEvent(BundleEvent event, Framework felix)
+ public void fireBundleEvent(BundleEvent event, Felix felix)
{
// Take a snapshot of the listener array.
Map<BundleContext, List<ListenerInfo>> listeners = null;
@@ -530,7 +529,7 @@ public class EventDispatcher
}
public void fireServiceEvent(
- final ServiceEvent event, final Dictionary oldProps, final Framework felix)
+ final ServiceEvent event, final Dictionary oldProps, final Felix felix)
{
// Take a snapshot of the listener array.
Map<BundleContext, List<ListenerInfo>> listeners = null;
@@ -549,7 +548,7 @@ public class EventDispatcher
// TODO: OSGi R4.3 - This is ugly and inefficient.
private Map<BundleContext, List<ListenerInfo>> filterListenersUsingHooks(
- ServiceEvent event, Framework felix, Map<BundleContext, List<ListenerInfo>> listeners)
+ ServiceEvent event, Felix felix, Map<BundleContext, List<ListenerInfo>> listeners)
{
Set<ServiceReference<org.osgi.framework.hooks.service.EventHook>> ehs =
m_registry.getHookRegistry().getHooks(org.osgi.framework.hooks.service.EventHook.class);
@@ -602,7 +601,7 @@ public class EventDispatcher
// Keep a copy of the System Bundle Listeners, as they might be removed by the hooks, but we
// actually need to keep them in the end.
- if (bc == felix.getBundleContext())
+ if (bc == felix._getBundleContext())
systemBundleListeners = new ArrayList<ListenerInfo>(entry.getValue());
}
shrinkableMap =
@@ -661,7 +660,7 @@ public class EventDispatcher
// Put the system bundle listeners back, because they really need to be called
// regardless whether they were removed by the hooks or not.
if (systemBundleListeners != null)
- newMap.put(felix.getBundleContext(), systemBundleListeners);
+ newMap.put(felix._getBundleContext(), systemBundleListeners);
listeners = newMap;
}
@@ -670,7 +669,7 @@ public class EventDispatcher
}
private <T> Set<BundleContext> createWhitelistFromHooks(
- EventObject event, Framework felix,
+ EventObject event, Felix felix,
Map<BundleContext, List<ListenerInfo>> listeners1,
Map<BundleContext, List<ListenerInfo>> listeners2,
Class<T> hookClass)
@@ -681,7 +680,7 @@ public class EventDispatcher
if (!hooks.isEmpty())
{
boolean systemBundleListener = false;
- BundleContext systemBundleContext = felix.getBundleContext();
+ BundleContext systemBundleContext = felix._getBundleContext();
whitelist = new HashSet<BundleContext>();
for (Entry<BundleContext, List<ListenerInfo>> entry : listeners1.entrySet())
Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/Felix.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/Felix.java?rev=1765806&r1=1765805&r2=1765806&view=diff
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/Felix.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/Felix.java Thu Oct 20 11:45:13 2016
@@ -57,7 +57,6 @@ import org.apache.felix.framework.cache.
import org.apache.felix.framework.capabilityset.CapabilitySet;
import org.apache.felix.framework.capabilityset.SimpleFilter;
import org.apache.felix.framework.ext.SecurityProvider;
-import org.apache.felix.framework.util.EventDispatcher;
import org.apache.felix.framework.util.FelixConstants;
import org.apache.felix.framework.util.ListenerInfo;
import org.apache.felix.framework.util.MapToDictionary;
Copied: felix/trunk/framework/src/test/java/org/apache/felix/framework/EventDispatcherTest.java (from r1765805, felix/trunk/framework/src/test/java/org/apache/felix/framework/util/EventDispatcherTest.java)
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/test/java/org/apache/felix/framework/EventDispatcherTest.java?p2=felix/trunk/framework/src/test/java/org/apache/felix/framework/EventDispatcherTest.java&p1=felix/trunk/framework/src/test/java/org/apache/felix/framework/util/EventDispatcherTest.java&r1=1765805&r2=1765806&rev=1765806&view=diff
==============================================================================
--- felix/trunk/framework/src/test/java/org/apache/felix/framework/util/EventDispatcherTest.java (original)
+++ felix/trunk/framework/src/test/java/org/apache/felix/framework/EventDispatcherTest.java Thu Oct 20 11:45:13 2016
@@ -16,21 +16,12 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.felix.framework.util;
+package org.apache.felix.framework;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
import junit.framework.TestCase;
-import org.apache.felix.framework.Logger;
-import org.apache.felix.framework.ServiceRegistry;
import org.easymock.EasyMock;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
@@ -39,7 +30,6 @@ import org.osgi.framework.ServiceEvent;
import org.osgi.framework.ServiceListener;
import org.osgi.framework.ServiceReference;
import org.osgi.framework.hooks.service.EventHook;
-import org.osgi.framework.launch.Framework;
public class EventDispatcherTest extends TestCase
{
@@ -136,11 +126,7 @@ public class EventDispatcherTest extends
assertEquals("Precondition failed", 0, fired.size());
- Framework framework = EasyMock.createNiceMock(Framework.class);
- EasyMock.replay(new Object[]
- {
- framework
- });
+ Felix framework = new Felix(new HashMap());
ed.fireServiceEvent(event, null, framework);
assertEquals(1, fired.size());