FELIX-4957 : [DS][RFC-212] Various issues with field references

git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1690437 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/helper/FieldHandler.java b/scr/src/main/java/org/apache/felix/scr/impl/helper/FieldHandler.java
index 1b55ff0..eac2f18 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/helper/FieldHandler.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/helper/FieldHandler.java
@@ -498,6 +498,12 @@
                     }
                 }
             }
+            
+            // null the field if optional and unary
+            if ( !metadata.isMultiple() && metadata.isOptional() )
+            {
+            	this.setFieldValue(componentInstance, null);
+            }
         }
         catch ( final InvocationTargetException ite)
         {
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/helper/FieldMethods.java b/scr/src/main/java/org/apache/felix/scr/impl/helper/FieldMethods.java
index eb8967a..72c8676 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/helper/FieldMethods.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/helper/FieldMethods.java
@@ -16,16 +16,14 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
-
 package org.apache.felix.scr.impl.helper;
 
-
 import org.apache.felix.scr.impl.metadata.DSVersion;
 import org.apache.felix.scr.impl.metadata.ReferenceMetadata;
 
 /**
- * @version $Rev$ $Date$
+ * FieldMethods provides implementations for bind/unbind/updated
+ * which handle manipulation of fields.
  */
 public class FieldMethods implements ReferenceMethods
 {
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/manager/SingleComponentManager.java b/scr/src/main/java/org/apache/felix/scr/impl/manager/SingleComponentManager.java
index fa781e5..14858e6 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/manager/SingleComponentManager.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/manager/SingleComponentManager.java
@@ -897,7 +897,7 @@
         }
     }
 
-    void ungetService( )
+    private void ungetService( )
     {
         deleteComponent( ComponentConstants.DEACTIVATION_REASON_UNSPECIFIED );
     }