You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by ma...@apache.org on 2011/03/17 00:20:51 UTC
svn commit: r1082343 -
/felix/trunk/http/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/manager/ExtenderManagerImpl.java
Author: marrs
Date: Wed Mar 16 23:20:51 2011
New Revision: 1082343
URL: http://svn.apache.org/viewvc?rev=1082343&view=rev
Log:
FELIX-2881 Fixed the problem.
Modified:
felix/trunk/http/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/manager/ExtenderManagerImpl.java
Modified: felix/trunk/http/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/manager/ExtenderManagerImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/manager/ExtenderManagerImpl.java?rev=1082343&r1=1082342&r2=1082343&view=diff
==============================================================================
--- felix/trunk/http/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/manager/ExtenderManagerImpl.java (original)
+++ felix/trunk/http/whiteboard/src/main/java/org/apache/felix/http/whiteboard/internal/manager/ExtenderManagerImpl.java Wed Mar 16 23:20:51 2011
@@ -16,17 +16,19 @@
*/
package org.apache.felix.http.whiteboard.internal.manager;
-import org.osgi.service.http.HttpContext;
-import org.osgi.service.http.HttpService;
-import org.osgi.framework.ServiceReference;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.Constants;
-import org.apache.felix.http.api.ExtHttpService;
-import org.apache.felix.http.base.internal.logger.SystemLogger;
+import java.util.Collection;
+import java.util.HashMap;
-import javax.servlet.Servlet;
import javax.servlet.Filter;
-import java.util.HashMap;
+import javax.servlet.Servlet;
+
+import org.apache.felix.http.api.ExtHttpService;
+import org.apache.felix.http.base.internal.logger.SystemLogger;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.Constants;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.http.HttpContext;
+import org.osgi.service.http.HttpService;
public final class ExtenderManagerImpl
implements ExtenderManager
@@ -162,20 +164,38 @@ public final class ExtenderManagerImpl
public synchronized void unregisterAll()
{
- if (this.httpService != null) {
- for (AbstractMapping mapping : this.mapping.values()) {
- mapping.unregister(this.httpService);
- }
- }
+ AbstractMapping[] mappings = null;
+ HttpService service;
+ synchronized (this) {
+ service = this.httpService;
+ if (service != null) {
+ Collection<AbstractMapping> values = this.mapping.values();
+ mappings = values.toArray(new AbstractMapping[values.size()]);
+ }
+ }
+ if (mappings != null) {
+ for (AbstractMapping mapping : mappings) {
+ mapping.unregister(service);
+ }
+ }
}
private synchronized void registerAll()
{
- if (this.httpService != null) {
- for (AbstractMapping mapping : this.mapping.values()) {
- mapping.register(this.httpService);
- }
- }
+ AbstractMapping[] mappings = null;
+ HttpService service;
+ synchronized (this) {
+ service = this.httpService;
+ if (service != null) {
+ Collection<AbstractMapping> values = this.mapping.values();
+ mappings = values.toArray(new AbstractMapping[values.size()]);
+ }
+ }
+ if (mappings != null) {
+ for (AbstractMapping mapping : mappings) {
+ mapping.register(service);
+ }
+ }
}
private synchronized void addMapping(Object key, AbstractMapping mapping)