Author: cziegeler
Date: Mon Jul 19 11:32:29 2010
New Revision: 965433

URL: http://svn.apache.org/viewvc?rev=965433&view=rev
Log:
FELIX-2478 : Cardinality attribute for Property annotation should be of type 
string

Added:
    
felix/trunk/scr-annotations/src/main/java/org/apache/felix/scr/annotations/PropertyUnbounded.java
   (with props)
Modified:
    
felix/trunk/scr-annotations/src/main/java/org/apache/felix/scr/annotations/Property.java
    felix/trunk/scrplugin/pom.xml
    
felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/PropertyTag.java

Modified: 
felix/trunk/scr-annotations/src/main/java/org/apache/felix/scr/annotations/Property.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/scr-annotations/src/main/java/org/apache/felix/scr/annotations/Property.java?rev=965433&r1=965432&r2=965433&view=diff
==============================================================================
--- 
felix/trunk/scr-annotations/src/main/java/org/apache/felix/scr/annotations/Property.java
 (original)
+++ 
felix/trunk/scr-annotations/src/main/java/org/apache/felix/scr/annotations/Property.java
 Mon Jul 19 11:32:29 2010
@@ -128,18 +128,25 @@ public @interface Property {
      * the Wrapper class), if the cardinality is positive, the property is
      * stored in an array (primitve types are unboxed, that is Boolean type
      * values are stored in boolean[]). The actual value defines the maximum
-     * number of elements in the vector or array, where −2147483648
-     * (Integer.MIN_INT) describes an unbounded Vector and 2147483647
-     * (Integer.MAX_INT) describes an unbounded array. If the cardinality is
+     * number of elements in the vector or array. If the cardinality is
      * zero, the property is a scalar value. If the defined value of the
-     * property is set in the value attribute, the cardinality defaults to0
+     * property is set in the value attribute, the cardinality defaults to 0
      * (zero for scalar value). If the property is defined in one or more
      * properties starting with values, the cardinality defaults to
-     * 2147483647 (Integer.MAX_INT), that is an unbounded array.
+     * an unbounded array.
      */
     int cardinality() default 0;
 
     /**
+     * This defines if the property is unbounded. The property can either be
+     * an unbounded array or vector. If this attribute is set to any other
+     * value than {...@link PropertyUnbounded#DEFAULT},
+     * this overrides the {...@link #cardinality()}.
+     * @since 1.4
+     */
+    PropertyUnbounded unbounded() default PropertyUnbounded.DEFAULT;
+
+    /**
      * Boolean flag defining whether a metatype descriptor entry should be
      * generated for this property or not. By default a metatype descriptor
      * entry, i.e. an AD element, is generated except for the properties

Added: 
felix/trunk/scr-annotations/src/main/java/org/apache/felix/scr/annotations/PropertyUnbounded.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/scr-annotations/src/main/java/org/apache/felix/scr/annotations/PropertyUnbounded.java?rev=965433&view=auto
==============================================================================
--- 
felix/trunk/scr-annotations/src/main/java/org/apache/felix/scr/annotations/PropertyUnbounded.java
 (added)
+++ 
felix/trunk/scr-annotations/src/main/java/org/apache/felix/scr/annotations/PropertyUnbounded.java
 Mon Jul 19 11:32:29 2010
@@ -0,0 +1,35 @@
+/*
+ * 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.felix.scr.annotations;
+
+/**
+ * Options for {...@link Property#unbounded()} property.
+ * @since 1.4
+ */
+public enum PropertyUnbounded {
+
+    /** Property is not unbounded. This is the default. */
+    DEFAULT,
+
+    /** Property is an unbounded array. */
+    ARRAY,
+
+    /** Property is an unbounded vector. */
+    VECTOR
+}

Propchange: 
felix/trunk/scr-annotations/src/main/java/org/apache/felix/scr/annotations/PropertyUnbounded.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
felix/trunk/scr-annotations/src/main/java/org/apache/felix/scr/annotations/PropertyUnbounded.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision rev url

Propchange: 
felix/trunk/scr-annotations/src/main/java/org/apache/felix/scr/annotations/PropertyUnbounded.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: felix/trunk/scrplugin/pom.xml
URL: 
http://svn.apache.org/viewvc/felix/trunk/scrplugin/pom.xml?rev=965433&r1=965432&r2=965433&view=diff
==============================================================================
--- felix/trunk/scrplugin/pom.xml (original)
+++ felix/trunk/scrplugin/pom.xml Mon Jul 19 11:32:29 2010
@@ -67,7 +67,7 @@
                <dependency>
                        <groupId>org.apache.felix</groupId>
                        
<artifactId>org.apache.felix.scr.annotations</artifactId>
-                       <version>1.3.0</version>
+                       <version>1.3.1-SNAPSHOT</version>
                </dependency>
         
         <!-- Sling Servlet SCR Annotation -->

Modified: 
felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/PropertyTag.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/PropertyTag.java?rev=965433&r1=965432&r2=965433&view=diff
==============================================================================
--- 
felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/PropertyTag.java
 (original)
+++ 
felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/PropertyTag.java
 Mon Jul 19 11:32:29 2010
@@ -20,8 +20,7 @@ package org.apache.felix.scrplugin.tags.
 
 import java.util.*;
 
-import org.apache.felix.scr.annotations.Property;
-import org.apache.felix.scr.annotations.PropertyOption;
+import org.apache.felix.scr.annotations.*;
 import org.apache.felix.scrplugin.Constants;
 import org.apache.felix.scrplugin.tags.JavaClassDescription;
 import org.apache.felix.scrplugin.tags.JavaField;
@@ -124,6 +123,10 @@ public class PropertyTag extends Abstrac
                 return Util.getShortValues(annotation, desc, "shortValue");
             }
 
+            public PropertyUnbounded unbounded() {
+                return Util.getEnumValue(annotation, "unbounded", 
PropertyUnbounded.class, Property.class);
+            }
+
             public Class<? extends java.lang.annotation.Annotation> 
annotationType() {
                 return null;
             }
@@ -234,7 +237,15 @@ public class PropertyTag extends Abstrac
             }
         }
 
-        if (this.annotation.cardinality() != 0) {
+        // cardinality handling
+        final PropertyUnbounded pu = this.annotation.unbounded();
+        if ( pu != PropertyUnbounded.DEFAULT ) {
+            if ( pu == PropertyUnbounded.ARRAY ) {
+                map.put(Constants.PROPERTY_CARDINALITY, "+");
+            } else {
+                map.put(Constants.PROPERTY_CARDINALITY, "-");
+            }
+        } else if (this.annotation.cardinality() != 0) {
             map.put(Constants.PROPERTY_CARDINALITY, 
String.valueOf(this.annotation.cardinality()));
         }
 


Reply via email to