You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ss...@apache.org on 2016/12/09 21:44:20 UTC

svn commit: r1773477 - /sling/branches/testing/mocks/osgi-mock-1.x/src/main/java/org/apache/sling/testing/mock/osgi/OsgiMetadataUtil.java

Author: sseifert
Date: Fri Dec  9 21:44:20 2016
New Revision: 1773477

URL: http://svn.apache.org/viewvc?rev=1773477&view=rev
Log:
SLING-6372 support ReferencePolicyOption

Modified:
    sling/branches/testing/mocks/osgi-mock-1.x/src/main/java/org/apache/sling/testing/mock/osgi/OsgiMetadataUtil.java

Modified: sling/branches/testing/mocks/osgi-mock-1.x/src/main/java/org/apache/sling/testing/mock/osgi/OsgiMetadataUtil.java
URL: http://svn.apache.org/viewvc/sling/branches/testing/mocks/osgi-mock-1.x/src/main/java/org/apache/sling/testing/mock/osgi/OsgiMetadataUtil.java?rev=1773477&r1=1773476&r2=1773477&view=diff
==============================================================================
--- sling/branches/testing/mocks/osgi-mock-1.x/src/main/java/org/apache/sling/testing/mock/osgi/OsgiMetadataUtil.java (original)
+++ sling/branches/testing/mocks/osgi-mock-1.x/src/main/java/org/apache/sling/testing/mock/osgi/OsgiMetadataUtil.java Fri Dec  9 21:44:20 2016
@@ -386,6 +386,7 @@ final class OsgiMetadataUtil {
         private final String interfaceType;
         private final ReferenceCardinality cardinality;
         private final ReferencePolicy policy;
+        private final ReferencePolicyOption policyOption;
         private final String bind;
         private final String unbind;
 
@@ -395,6 +396,7 @@ final class OsgiMetadataUtil {
             this.interfaceType = getAttributeValue(node, "interface");
             this.cardinality = toCardinality(getAttributeValue(node, "cardinality"));
             this.policy = toPolicy(getAttributeValue(node, "policy"));
+            this.policyOption = toPolicyOption(getAttributeValue(node, "policy-option"));
             this.bind = getAttributeValue(node, "bind");
             this.unbind = getAttributeValue(node, "unbind");
         }
@@ -419,6 +421,10 @@ final class OsgiMetadataUtil {
             return policy;
         }
 
+        public ReferencePolicyOption getPolicyOption() {
+            return policyOption;
+        }
+        
         public String getBind() {
             return this.bind;
         }
@@ -445,6 +451,15 @@ final class OsgiMetadataUtil {
             return ReferencePolicy.STATIC;
         }
 
+        private static ReferencePolicyOption toPolicyOption(String value) {
+            for (ReferencePolicyOption item : ReferencePolicyOption.values()) {
+                if (StringUtils.equalsIgnoreCase(item.name(), value)) {
+                    return item;
+                }
+            }
+            return ReferencePolicyOption.RELUCTANT;
+        }
+        
     }
 
 
@@ -513,4 +528,28 @@ final class OsgiMetadataUtil {
         DYNAMIC;
     }
 
+    /**
+     * Options for {@link Reference#policyOption()} property.
+     */
+    enum ReferencePolicyOption {
+
+        /**
+         * The reluctant policy option is the default policy option.
+         * When a new target service for a reference becomes available,
+         * references having the reluctant policy option for the static
+         * policy or the dynamic policy with a unary cardinality will
+         * ignore the new target service. References having the dynamic
+         * policy with a multiple cardinality will bind the new
+         * target service
+         */
+        RELUCTANT,
+
+        /**
+         * When a new target service for a reference becomes available,
+         * references having the greedy policy option will bind the new
+         * target service.
+         */
+        GREEDY;
+    }
+    
 }