You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by ba...@apache.org on 2024/05/27 15:06:07 UTC
(jackrabbit-oak) branch issue/oak-6773 updated: OAK-6773: Convert oak-store-composite to OSGi R7 annotations
This is an automated email from the ASF dual-hosted git repository.
baedke pushed a commit to branch issue/oak-6773
in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git
The following commit(s) were added to refs/heads/issue/oak-6773 by this push:
new 81325f770e OAK-6773: Convert oak-store-composite to OSGi R7 annotations
81325f770e is described below
commit 81325f770e06d809c630a0888245b418120be898
Author: Manfred Baedke <ma...@gmail.com>
AuthorDate: Mon May 27 17:02:11 2024 +0200
OAK-6773: Convert oak-store-composite to OSGi R7 annotations
Explicitly added bind/unbind methods for OSGi service references which have previously been auto-generated by the Felix SCR plugin (to avoid major version changes).
---
.../oak/composite/CompositeNodeStoreService.java | 54 ++++++++++++++++++++--
.../CrossMountReferenceValidatorProvider.java | 15 +++++-
.../composite/PrivateStoreValidatorProvider.java | 13 ++++++
.../composite/checks/NodeStoreChecksService.java | 22 +++++++--
.../checks/NodeTypeMountedNodeStoreChecker.java | 15 ++++--
.../oak/composite/checks/package-info.java | 18 +++++++-
.../jackrabbit/oak/composite/package-info.java | 2 +-
7 files changed, 122 insertions(+), 17 deletions(-)
diff --git a/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/CompositeNodeStoreService.java b/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/CompositeNodeStoreService.java
index bbebbb7150..fbcadd2a3a 100644
--- a/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/CompositeNodeStoreService.java
+++ b/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/CompositeNodeStoreService.java
@@ -67,7 +67,11 @@ public class CompositeNodeStoreService {
private static final String MOUNT_ROLE_PREFIX = "composite-mount-";
- @Reference(cardinality = ReferenceCardinality.MANDATORY, policy = ReferencePolicy.STATIC)
+ @Reference(
+ cardinality = ReferenceCardinality.MANDATORY,
+ bind = "bindMountInfoProvider",
+ unbind = "unbindMountInfoProvider",
+ policy = ReferencePolicy.STATIC)
private MountInfoProvider mountInfoProvider;
private List<NodeStoreWithProps> nodeStores = new ArrayList<>();
@@ -78,6 +82,10 @@ public class CompositeNodeStoreService {
@Reference
private StatisticsProvider statisticsProvider = StatisticsProvider.NOOP;
+ private static final String ENABLE_CHECKS = "enableChecks";
+ private static final String PROP_SEED_MOUNT = "seedMount";
+ private static final String PATH_STATS = "pathStats";
+
@ComponentPropertyType
@interface Config {
@AttributeDefinition(
@@ -116,11 +124,11 @@ public class CompositeNodeStoreService {
private boolean enableChecks;
@Activate
- protected void activate(ComponentContext context, Config config) throws IOException, CommitFailedException {
+ protected void activate(ComponentContext context, Map<String, ?> config) throws IOException, CommitFailedException {
this.context = context;
- seedMount = config.seedMount();
- pathStats = config.pathStats();
- enableChecks = config.enableChecks();
+ seedMount = PropertiesUtil.toString(config.get(PROP_SEED_MOUNT), null);
+ pathStats = PropertiesUtil.toBoolean(config.get(PATH_STATS), false);
+ enableChecks = PropertiesUtil.toBoolean(config.get(ENABLE_CHECKS), true);
registerCompositeNodeStore();
}
@@ -293,6 +301,42 @@ public class CompositeNodeStoreService {
}
}
+ @SuppressWarnings("unused")
+ protected void bindMountInfoProvider(MountInfoProvider mip) {
+ this.mountInfoProvider = mip;
+ }
+
+ @SuppressWarnings("unused")
+ protected void unbindMountInfoProvider(MountInfoProvider mip) {
+ if (this.mountInfoProvider == mip) {
+ this.mountInfoProvider = null;
+ }
+ }
+
+ @SuppressWarnings("unused")
+ protected void bindChecks(NodeStoreChecks checks) {
+ this.checks = checks;
+ }
+
+ @SuppressWarnings("unused")
+ protected void unbindChecks(NodeStoreChecks checks) {
+ if (this.checks == checks) {
+ this.checks = null;
+ }
+ }
+
+ @SuppressWarnings("unused")
+ protected void bindStatisticsProvider(StatisticsProvider sp) {
+ this.statisticsProvider = sp;
+ }
+
+ @SuppressWarnings("unused")
+ protected void unbindStatisticsProvider(StatisticsProvider sp) {
+ if (this.statisticsProvider == sp) {
+ this.statisticsProvider = null;
+ }
+ }
+
private static class NodeStoreWithProps {
private final NodeStoreProvider nodeStore;
diff --git a/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/CrossMountReferenceValidatorProvider.java b/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/CrossMountReferenceValidatorProvider.java
index 8cb5157726..52b352105d 100644
--- a/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/CrossMountReferenceValidatorProvider.java
+++ b/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/CrossMountReferenceValidatorProvider.java
@@ -50,7 +50,7 @@ public class CrossMountReferenceValidatorProvider extends ValidatorProvider {
private boolean failOnDetection;
- @Reference
+ @Reference(bind = "bindMountInfoProvider", unbind = "unbindMountInfoProvider")
private MountInfoProvider mountInfoProvider = Mounts.defaultMountInfoProvider();
public CrossMountReferenceValidatorProvider() {
@@ -80,4 +80,17 @@ public class CrossMountReferenceValidatorProvider extends ValidatorProvider {
this.failOnDetection = failOnDetection;
return this;
}
+
+ @SuppressWarnings("unused")
+ protected void bindMountInfoProvider(MountInfoProvider mip) {
+ this.mountInfoProvider = mip;
+ }
+
+ @SuppressWarnings("unused")
+ protected void unbindMountInfoProvider(MountInfoProvider mip) {
+ if (this.mountInfoProvider == mip) {
+ this.mountInfoProvider = null;
+ }
+
+ }
}
diff --git a/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/PrivateStoreValidatorProvider.java b/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/PrivateStoreValidatorProvider.java
index 9a8eb93dc3..bd93d97cbc 100644
--- a/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/PrivateStoreValidatorProvider.java
+++ b/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/PrivateStoreValidatorProvider.java
@@ -98,6 +98,19 @@ public class PrivateStoreValidatorProvider extends ValidatorProvider {
return failOnDetection;
}
+ @SuppressWarnings("unused")
+ protected void bindMountInfoProvider(MountInfoProvider mip) {
+ this.mountInfoProvider = mip;
+ }
+
+ @SuppressWarnings("unused")
+ protected void unbindMountInfoProvider(MountInfoProvider mip) {
+ if (this.mountInfoProvider == mip) {
+ this.mountInfoProvider = null;
+ }
+
+ }
+
private class PrivateStoreValidator extends DefaultValidator {
private final String path;
diff --git a/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/checks/NodeStoreChecksService.java b/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/checks/NodeStoreChecksService.java
index 8e8dba9d75..592a1f5fad 100644
--- a/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/checks/NodeStoreChecksService.java
+++ b/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/checks/NodeStoreChecksService.java
@@ -42,7 +42,7 @@ public class NodeStoreChecksService implements NodeStoreChecks {
service = MountedNodeStoreChecker.class)
private List<MountedNodeStoreChecker<?>> checkers = new CopyOnWriteArrayList<>();
- @Reference
+ @Reference(bind = "bindMip", unbind = "unbindMip")
private MountInfoProvider mip;
// used by SCR
@@ -100,13 +100,27 @@ public class NodeStoreChecksService implements NodeStoreChecks {
if ( ( mounted || under ) && keepGoing ) {
tree.getChildren().forEach( child -> visit(child, mountedStore, errorHolder, context, c));
}
- }
-
+ }
+
+ @SuppressWarnings("unused")
protected void bindChecker(MountedNodeStoreChecker<?> checker) {
checkers.add(checker);
}
-
+
+ @SuppressWarnings("unused")
protected void unbindChecker(MountedNodeStoreChecker<?> checker) {
checkers.remove(checker);
}
+
+ @SuppressWarnings("unused")
+ protected void bindMip(MountInfoProvider mip) {
+ this.mip = mip;
+ }
+
+ @SuppressWarnings("unused")
+ protected void unbindMip(MountInfoProvider mip) {
+ if (this.mip == mip) {
+ this.mip = null;
+ }
+ }
}
diff --git a/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/checks/NodeTypeMountedNodeStoreChecker.java b/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/checks/NodeTypeMountedNodeStoreChecker.java
index 3375eab708..88ddb19b12 100644
--- a/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/checks/NodeTypeMountedNodeStoreChecker.java
+++ b/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/checks/NodeTypeMountedNodeStoreChecker.java
@@ -26,6 +26,7 @@ import org.osgi.service.component.annotations.ConfigurationPolicy;
import org.osgi.service.metatype.annotations.AttributeDefinition;
import org.apache.jackrabbit.oak.api.Root;
import org.apache.jackrabbit.oak.api.Tree;
+import org.apache.jackrabbit.oak.commons.PropertiesUtil;
import org.apache.jackrabbit.oak.composite.MountedNodeStore;
import org.apache.jackrabbit.oak.namepath.NamePathMapper;
import org.apache.jackrabbit.oak.plugins.nodetype.ReadOnlyNodeTypeManager;
@@ -43,7 +44,11 @@ public class NodeTypeMountedNodeStoreChecker implements
MountedNodeStoreChecker<NodeTypeMountedNodeStoreChecker.Context> {
private final Logger log = LoggerFactory.getLogger(getClass());
-
+
+ private static final String INVALID_NODE_TYPE = "invalidNodeType";
+ private static final String ERROR_LABEL = "errorLabel";
+ private static final String EXCLUDED_NODE_TYPES = "excludedNodeTypes";
+
@ComponentPropertyType
@interface Config {
@AttributeDefinition(
@@ -79,10 +84,10 @@ public class NodeTypeMountedNodeStoreChecker implements
this.excludedNodeTypes = ImmutableSet.copyOf(excludedNodeTypes);
}
- protected void activate(ComponentContext ctx, Config config) {
- invalidNodeType = checkNotNull(config.invalidNodeType(), "invalidNodeType");
- errorLabel = checkNotNull(config.errorLabel(), "errorLabel");
- excludedNodeTypes = ImmutableSet.copyOf(config.excludedNodeTypes());
+ protected void activate(ComponentContext ctx) {
+ invalidNodeType = checkNotNull(PropertiesUtil.toString(ctx.getProperties().get(INVALID_NODE_TYPE), null), INVALID_NODE_TYPE);
+ errorLabel = checkNotNull(PropertiesUtil.toString(ctx.getProperties().get(ERROR_LABEL), null), ERROR_LABEL);
+ excludedNodeTypes = ImmutableSet.copyOf(PropertiesUtil.toStringArray(ctx.getProperties().get(EXCLUDED_NODE_TYPES), new String[0]));
}
@Override
diff --git a/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/checks/package-info.java b/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/checks/package-info.java
index 8dfb422328..ecbd27d417 100755
--- a/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/checks/package-info.java
+++ b/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/checks/package-info.java
@@ -1,4 +1,20 @@
-@Version("1.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.
+ */
+@Version("0.0.1")
package org.apache.jackrabbit.oak.composite.checks;
import org.osgi.annotation.versioning.Version;
\ No newline at end of file
diff --git a/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/package-info.java b/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/package-info.java
index bac267ef1b..6efb8de2a2 100644
--- a/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/package-info.java
+++ b/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/package-info.java
@@ -55,7 +55,7 @@
* This is obviously correct but may be slow.
* {@link org.apache.jackrabbit.oak.composite.CompositionContext#getContributingStores(java.lang.String, java.util.function.Function)}
*/
-@Version("1.0.0")
+@Version("0.5.1")
package org.apache.jackrabbit.oak.composite;
import org.osgi.annotation.versioning.Version;
\ No newline at end of file