This is an automated email from the ASF dual-hosted git repository. rombert pushed a commit to annotated tag org.apache.sling.jcr.repoinit-1.0.0 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-jcr-repoinit.git
commit 22a05d6f8e408d0e85a3b7d28871a378a33811ff Author: Bertrand Delacretaz <bdelacre...@apache.org> AuthorDate: Fri Jan 22 18:18:22 2016 +0000 SLING-5449 - remove AclSetup component and adapt integration tests git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/repoinit/oak-jcr@1726268 13f79535-47bb-0310-9956-ffa450edef68 --- .../sling/repoinit/jcr/AclOperationVisitor.java | 2 + .../apache/sling/repoinit/jcr/impl/AclSetup.java | 154 --------------------- .../sling/repoinit/jcr/{ => impl}/AclUtil.java | 2 +- .../repoinit/jcr/{ => impl}/ServiceUserUtil.java | 2 +- .../apache/sling/repoinit/jcr/package-info.java | 21 +++ .../org/apache/sling/repoinit/jcr/TestUtil.java | 1 + 6 files changed, 26 insertions(+), 156 deletions(-) diff --git a/src/main/java/org/apache/sling/repoinit/jcr/AclOperationVisitor.java b/src/main/java/org/apache/sling/repoinit/jcr/AclOperationVisitor.java index 6403e65..f206351 100644 --- a/src/main/java/org/apache/sling/repoinit/jcr/AclOperationVisitor.java +++ b/src/main/java/org/apache/sling/repoinit/jcr/AclOperationVisitor.java @@ -24,6 +24,8 @@ import java.util.List; import javax.jcr.Session; +import org.apache.sling.repoinit.jcr.impl.AclUtil; +import org.apache.sling.repoinit.jcr.impl.ServiceUserUtil; import org.apache.sling.repoinit.parser.operations.AclLine; import org.apache.sling.repoinit.parser.operations.CreateServiceUser; import org.apache.sling.repoinit.parser.operations.DeleteServiceUser; diff --git a/src/main/java/org/apache/sling/repoinit/jcr/impl/AclSetup.java b/src/main/java/org/apache/sling/repoinit/jcr/impl/AclSetup.java deleted file mode 100644 index 9bb2606..0000000 --- a/src/main/java/org/apache/sling/repoinit/jcr/impl/AclSetup.java +++ /dev/null @@ -1,154 +0,0 @@ -/* - * 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.sling.repoinit.jcr.impl; - -import java.io.StringReader; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -import javax.jcr.Session; - -import org.apache.felix.scr.annotations.Activate; -import org.apache.felix.scr.annotations.Component; -import org.apache.felix.scr.annotations.ConfigurationPolicy; -import org.apache.felix.scr.annotations.Reference; -import org.apache.sling.repoinit.jcr.AclOperationVisitor; -import org.apache.sling.repoinit.parser.AclDefinitionsParser; -import org.apache.sling.repoinit.parser.operations.Operation; -import org.apache.sling.commons.threads.ThreadPool; -import org.apache.sling.commons.threads.ThreadPoolManager; -import org.apache.sling.jcr.api.SlingRepository; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import aQute.bnd.annotation.component.Deactivate; - -/** OSGi component that sets up service users and ACLS - * based on configurations created by the repoinit provisioning - * model processor. - * - * As Oak requires a path to exist before setting an ACL on it, - * this component needs to retry setting ACLs when that fails - * due to a non-existing path. - */ -@Component( - configurationFactory=true, - metatype=false, - configurationPid=AclSetup.CONFIG_PID, - policy=ConfigurationPolicy.REQUIRE) -public class AclSetup implements Runnable { - private final Logger log = LoggerFactory.getLogger(getClass()); - public static final String CONFIG_PID = "org.apache.sling.repoinit.jcr.AclSetup"; - public static final String ACLDEF_PROP_PREFIX = "repoinit.text."; - public static final String THREAD_POOL_NAME = "ACL Definitions"; - - private List<String> todo; - private ThreadPool threadPool; - private boolean running; - - @Reference - AclDefinitionsParser parser; - - @Reference - ThreadPoolManager threadPoolManager; - - @Reference - SlingRepository repository; - - @Activate - public void activate(Map<String, Object> config) { - todo = new ArrayList<String>(); - threadPool = threadPoolManager.get(THREAD_POOL_NAME); - - for(String key : config.keySet()) { - if(key.startsWith(ACLDEF_PROP_PREFIX)) { - final String value = (String)config.get(key); - todo.add(value); - } - } - if(todo.isEmpty()) { - log.error("No {} properties in configuration {}, nothing to do", ACLDEF_PROP_PREFIX, config); - } else { - log.info("Got {} ACL definitions to execute asynchronously", todo.size()); - running = true; - threadPool.execute(this); - } - } - - @Deactivate - public void deactivate(Map<String, Object> config) { - synchronized (this) { - running = false; - threadPoolManager.release(threadPool); - } - } - - private void sleep(int msec) { - try { - Thread.sleep(msec); - } catch(InterruptedException ignore) { - } - } - - @Override - public void run() { - log.info("Applying {} ACL definition snippets", todo.size()); - - List<String> newTodo = new ArrayList<String>(); - Session s = null; - try { - s = repository.loginAdministrative(null); - final AclOperationVisitor visitor = new AclOperationVisitor(s); - for(String repoinit : todo) { - try { - for(Operation op : parser.parse(new StringReader(repoinit))) { - op.accept(visitor); - s.save(); - } - } catch(Exception e) { - log.warn("Exception while executing an ACL definition:" + e.toString(), e); - newTodo.add(repoinit); - } - } - } catch(Exception e) { - log.warn("Exception while executing ACL definitions, will retry everything:" + e.toString(), e); - newTodo = todo; - } finally { - if(s != null) { - s.logout(); - } - } - - // TODO schedule with exponential backoff? - if(!newTodo.isEmpty() && running) { - sleep(1000); - } - - synchronized (this) { - todo = newTodo; - if(todo.isEmpty()) { - log.info("All ACL definitions executed"); - } else if(running) { - log.info("{} ACL definitions left to execute, will retry", todo.size()); - threadPool.execute(this); - } else { - log.info("Some operations failed but not running anymore"); - } - } - } -} diff --git a/src/main/java/org/apache/sling/repoinit/jcr/AclUtil.java b/src/main/java/org/apache/sling/repoinit/jcr/impl/AclUtil.java similarity index 98% rename from src/main/java/org/apache/sling/repoinit/jcr/AclUtil.java rename to src/main/java/org/apache/sling/repoinit/jcr/impl/AclUtil.java index 10a7967..efe3cf5 100644 --- a/src/main/java/org/apache/sling/repoinit/jcr/AclUtil.java +++ b/src/main/java/org/apache/sling/repoinit/jcr/impl/AclUtil.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sling.repoinit.jcr; +package org.apache.sling.repoinit.jcr.impl; import java.security.Principal; import java.util.List; diff --git a/src/main/java/org/apache/sling/repoinit/jcr/ServiceUserUtil.java b/src/main/java/org/apache/sling/repoinit/jcr/impl/ServiceUserUtil.java similarity index 98% rename from src/main/java/org/apache/sling/repoinit/jcr/ServiceUserUtil.java rename to src/main/java/org/apache/sling/repoinit/jcr/impl/ServiceUserUtil.java index 65fa155..5f33145 100644 --- a/src/main/java/org/apache/sling/repoinit/jcr/ServiceUserUtil.java +++ b/src/main/java/org/apache/sling/repoinit/jcr/impl/ServiceUserUtil.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sling.repoinit.jcr; +package org.apache.sling.repoinit.jcr.impl; import javax.jcr.RepositoryException; import javax.jcr.Session; diff --git a/src/main/java/org/apache/sling/repoinit/jcr/package-info.java b/src/main/java/org/apache/sling/repoinit/jcr/package-info.java new file mode 100644 index 0000000..a2fd18a --- /dev/null +++ b/src/main/java/org/apache/sling/repoinit/jcr/package-info.java @@ -0,0 +1,21 @@ +/******************************************************************************* + * 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. + ******************************************************************************/ + +@Version("1.0.0") +package org.apache.sling.repoinit.jcr; + +import aQute.bnd.annotation.Version; diff --git a/src/test/java/org/apache/sling/repoinit/jcr/TestUtil.java b/src/test/java/org/apache/sling/repoinit/jcr/TestUtil.java index 612e699..5c68f3f 100644 --- a/src/test/java/org/apache/sling/repoinit/jcr/TestUtil.java +++ b/src/test/java/org/apache/sling/repoinit/jcr/TestUtil.java @@ -31,6 +31,7 @@ import javax.jcr.SimpleCredentials; import org.apache.commons.io.IOUtils; import org.apache.jackrabbit.api.security.user.Authorizable; import org.apache.jackrabbit.api.security.user.User; +import org.apache.sling.repoinit.jcr.impl.ServiceUserUtil; import org.apache.sling.repoinit.parser.AclParsingException; import org.apache.sling.repoinit.parser.impl.ACLDefinitionsParserService; import org.apache.sling.repoinit.parser.operations.Operation; -- To stop receiving notification emails like this one, please contact "commits@sling.apache.org" <commits@sling.apache.org>.