You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by cz...@apache.org on 2013/12/23 14:17:31 UTC

svn commit: r1553110 - in /felix/trunk/coordinator/src/main/java/org/apache/felix/coordinator/impl: CoordinationImpl.java CoordinatorImpl.java

Author: cziegeler
Date: Mon Dec 23 13:17:31 2013
New Revision: 1553110

URL: http://svn.apache.org/r1553110
Log:
FELIX-2647 : Implement Coordinator Service - start permission checking

Modified:
    felix/trunk/coordinator/src/main/java/org/apache/felix/coordinator/impl/CoordinationImpl.java
    felix/trunk/coordinator/src/main/java/org/apache/felix/coordinator/impl/CoordinatorImpl.java

Modified: felix/trunk/coordinator/src/main/java/org/apache/felix/coordinator/impl/CoordinationImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/coordinator/src/main/java/org/apache/felix/coordinator/impl/CoordinationImpl.java?rev=1553110&r1=1553109&r2=1553110&view=diff
==============================================================================
--- felix/trunk/coordinator/src/main/java/org/apache/felix/coordinator/impl/CoordinationImpl.java (original)
+++ felix/trunk/coordinator/src/main/java/org/apache/felix/coordinator/impl/CoordinationImpl.java Mon Dec 23 13:17:31 2013
@@ -69,7 +69,7 @@ public class CoordinationImpl implements
 
     private final ArrayList<Participant> participants;
 
-    private final HashMap<Class<?>, Object> variables;
+    private final Map<Class<?>, Object> variables;
 
     private TimerTask timeoutTask;
 
@@ -214,6 +214,8 @@ public class CoordinationImpl implements
                 this.waitLock.notifyAll();
             }
 
+            this.associatedThread = null;
+
             if ( this.failReason != null )
             {
                 throw new CoordinationException("Nested coordination failed", this,

Modified: felix/trunk/coordinator/src/main/java/org/apache/felix/coordinator/impl/CoordinatorImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/coordinator/src/main/java/org/apache/felix/coordinator/impl/CoordinatorImpl.java?rev=1553110&r1=1553109&r2=1553110&view=diff
==============================================================================
--- felix/trunk/coordinator/src/main/java/org/apache/felix/coordinator/impl/CoordinatorImpl.java (original)
+++ felix/trunk/coordinator/src/main/java/org/apache/felix/coordinator/impl/CoordinatorImpl.java Mon Dec 23 13:17:31 2013
@@ -18,12 +18,14 @@
  */
 package org.apache.felix.coordinator.impl;
 
+import java.security.Permission;
 import java.util.Collection;
 import java.util.TimerTask;
 
 import org.osgi.framework.Bundle;
 import org.osgi.service.coordinator.Coordination;
 import org.osgi.service.coordinator.CoordinationException;
+import org.osgi.service.coordinator.CoordinationPermission;
 import org.osgi.service.coordinator.Coordinator;
 import org.osgi.service.coordinator.Participant;
 
@@ -123,12 +125,22 @@ public class CoordinatorImpl implements 
         }
     }
 
+    private void checkPermission(final String coordinationName, final String actions )
+    {
+        final SecurityManager securityManager = System.getSecurityManager();
+        if (securityManager != null)
+        {
+            final Permission permission = new CoordinationPermission(coordinationName, this.owner, actions);
+            securityManager.checkPermission(permission);
+        }
+    }
+
     /**
      * @see org.osgi.service.coordinator.Coordinator#create(java.lang.String, long)
      */
     public Coordination create(final String name, final long timeout)
     {
-        // TODO: check permission
+        this.checkPermission(name, CoordinationPermission.INITIATE);
 
     	// check arguments
     	checkName(name);