Author: angela
Date: Wed Sep 11 14:28:00 2013
New Revision: 1521872

URL: http://svn.apache.org/r1521872
Log:
OAK-528 : Support configurable/pluggable restrictions (WIP)

Added:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/OsgiRestrictionProvider.java
Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/restriction/RestrictionProviderImpl.java

Added: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/OsgiRestrictionProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/OsgiRestrictionProvider.java?rev=1521872&view=auto
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/OsgiRestrictionProvider.java
 (added)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/OsgiRestrictionProvider.java
 Wed Sep 11 14:28:00 2013
@@ -0,0 +1,87 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file 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 KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.oak.osgi;
+
+import java.util.Set;
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+import javax.jcr.RepositoryException;
+import javax.jcr.Value;
+import javax.jcr.security.AccessControlException;
+
+import org.apache.jackrabbit.oak.api.Tree;
+import 
org.apache.jackrabbit.oak.spi.security.authorization.restriction.CompositeRestrictionProvider;
+import 
org.apache.jackrabbit.oak.spi.security.authorization.restriction.Restriction;
+import 
org.apache.jackrabbit.oak.spi.security.authorization.restriction.RestrictionDefinition;
+import 
org.apache.jackrabbit.oak.spi.security.authorization.restriction.RestrictionPattern;
+import 
org.apache.jackrabbit.oak.spi.security.authorization.restriction.RestrictionProvider;
+
+/**
+ * {@link RestrictionProvider} implementation that combines all available OSGi
+ * restriction providers.
+ */
+public class OsgiRestrictionProvider  extends 
AbstractServiceTracker<RestrictionProvider> implements RestrictionProvider {
+
+    public OsgiRestrictionProvider() {
+        super(RestrictionProvider.class);
+    }
+
+    @Nonnull
+    @Override
+    public Set<RestrictionDefinition> getSupportedRestrictions(@Nullable 
String oakPath) {
+        return getProvider().getSupportedRestrictions(oakPath);
+    }
+
+    @Nonnull
+    @Override
+    public Restriction createRestriction(@Nullable String oakPath, @Nonnull 
String oakName, @Nonnull Value value) throws AccessControlException, 
RepositoryException {
+        return getProvider().createRestriction(oakPath, oakName, value);
+    }
+
+    @Nonnull
+    @Override
+    public Restriction createRestriction(@Nullable String oakPath, @Nonnull 
String oakName, @Nonnull Value... values) throws AccessControlException, 
RepositoryException {
+        return getProvider().createRestriction(oakPath, oakName, values);
+    }
+
+    @Nonnull
+    @Override
+    public Set<Restriction> readRestrictions(@Nullable String oakPath, 
@Nonnull Tree aceTree) {
+        return getProvider().readRestrictions(oakPath, aceTree);
+    }
+
+    @Override
+    public void writeRestrictions(String oakPath, Tree aceTree, 
Set<Restriction> restrictions) throws RepositoryException {
+        getProvider().writeRestrictions(oakPath, aceTree, restrictions);
+    }
+
+    @Override
+    public void validateRestrictions(@Nullable String oakPath, @Nonnull Tree 
aceTree) throws AccessControlException, RepositoryException {
+        getProvider().validateRestrictions(oakPath, aceTree);
+    }
+
+    @Nonnull
+    @Override
+    public RestrictionPattern getPattern(@Nullable String oakPath, @Nonnull 
Tree tree) {
+        return getProvider().getPattern(oakPath, tree);
+    }
+
+    //------------------------------------------------------------< private 
>---
+    private RestrictionProvider getProvider() {
+        return CompositeRestrictionProvider.newInstance(getServices());
+    }
+}
\ No newline at end of file

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/restriction/RestrictionProviderImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/restriction/RestrictionProviderImpl.java?rev=1521872&r1=1521871&r2=1521872&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/restriction/RestrictionProviderImpl.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/restriction/RestrictionProviderImpl.java
 Wed Sep 11 14:28:00 2013
@@ -21,6 +21,8 @@ import java.util.List;
 import java.util.Map;
 
 import com.google.common.collect.ImmutableMap;
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Service;
 import org.apache.jackrabbit.oak.api.PropertyState;
 import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.api.Type;
@@ -29,6 +31,7 @@ import org.apache.jackrabbit.oak.spi.sec
 import 
org.apache.jackrabbit.oak.spi.security.authorization.restriction.RestrictionDefinition;
 import 
org.apache.jackrabbit.oak.spi.security.authorization.restriction.RestrictionDefinitionImpl;
 import 
org.apache.jackrabbit.oak.spi.security.authorization.restriction.RestrictionPattern;
+import 
org.apache.jackrabbit.oak.spi.security.authorization.restriction.RestrictionProvider;
 
 /**
  * Default restriction provider implementation that supports the following
@@ -43,6 +46,8 @@ import org.apache.jackrabbit.oak.spi.sec
  *     parent node is taken into consideration when evaluating the 
permissions.</li>
  * </ul>
  */
+@Component
+@Service(RestrictionProvider.class)
 public class RestrictionProviderImpl extends AbstractRestrictionProvider {
 
     public RestrictionProviderImpl() {


Reply via email to