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() {