You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2006/05/04 11:42:58 UTC

svn commit: r399638 - in /jackrabbit/trunk/jcr-rmi/src/java/org/apache/jackrabbit/rmi: client/ClientNode.java client/ClientProperty.java server/ServerNode.java

Author: jukka
Date: Thu May  4 02:42:57 2006
New Revision: 399638

URL: http://svn.apache.org/viewcvs?rev=399638&view=rev
Log:
JCR-420: Avoid NullPointerExceptions when removing property values using calls like Property.setValue(null).

Modified:
    jackrabbit/trunk/jcr-rmi/src/java/org/apache/jackrabbit/rmi/client/ClientNode.java
    jackrabbit/trunk/jcr-rmi/src/java/org/apache/jackrabbit/rmi/client/ClientProperty.java
    jackrabbit/trunk/jcr-rmi/src/java/org/apache/jackrabbit/rmi/server/ServerNode.java

Modified: jackrabbit/trunk/jcr-rmi/src/java/org/apache/jackrabbit/rmi/client/ClientNode.java
URL: http://svn.apache.org/viewcvs/jackrabbit/trunk/jcr-rmi/src/java/org/apache/jackrabbit/rmi/client/ClientNode.java?rev=399638&r1=399637&r2=399638&view=diff
==============================================================================
--- jackrabbit/trunk/jcr-rmi/src/java/org/apache/jackrabbit/rmi/client/ClientNode.java (original)
+++ jackrabbit/trunk/jcr-rmi/src/java/org/apache/jackrabbit/rmi/client/ClientNode.java Thu May  4 02:42:57 2006
@@ -119,9 +119,14 @@
     public Property setProperty(String name, Value value)
             throws RepositoryException {
         try {
-            RemoteProperty property =
-                remote.setProperty(name, SerialValueFactory.makeSerialValue(value));
-            return getFactory().getProperty(getSession(), property);
+            if (value == null) {
+                remote.setProperty(name, (Value) null);
+                return null;
+            } else {
+                RemoteProperty property = remote.setProperty(
+                        name, SerialValueFactory.makeSerialValue(value));
+                return getFactory().getProperty(getSession(), property);
+            }
         } catch (RemoteException ex) {
             throw new RemoteRepositoryException(ex);
         }
@@ -131,9 +136,14 @@
     public Property setProperty(String name, Value[] values)
             throws RepositoryException {
         try {
-            Value[] serials = SerialValueFactory.makeSerialValueArray(values);
-            RemoteProperty property = remote.setProperty(name, serials);
-            return getFactory().getProperty(getSession(), property);
+            if (values == null) {
+                remote.setProperty(name, (Value[]) null);
+                return null;
+            } else {
+                Value[] serials = SerialValueFactory.makeSerialValueArray(values);
+                RemoteProperty property = remote.setProperty(name, serials);
+                return getFactory().getProperty(getSession(), property);
+            }
         } catch (RemoteException ex) {
             throw new RemoteRepositoryException(ex);
         }
@@ -142,23 +152,35 @@
     /** {@inheritDoc} */
     public Property setProperty(String name, String[] strings)
             throws RepositoryException {
-        Value[] values = new Value[strings.length];
-        for (int i = 0; i < strings.length; i++) {
-            values[i] = getSession().getValueFactory().createValue(strings[i]);
+        if (strings == null) {
+            return setProperty(name, (Value[]) null);
+        } else {
+            Value[] values = new Value[strings.length];
+            for (int i = 0; i < strings.length; i++) {
+                values[i] = getSession().getValueFactory().createValue(strings[i]);
+            }
+            return setProperty(name, values);
         }
-        return setProperty(name, values);
     }
 
     /** {@inheritDoc} */
     public Property setProperty(String name, String value)
             throws RepositoryException {
-        return setProperty(name, getSession().getValueFactory().createValue(value));
+        if (value == null) {
+            return setProperty(name, (Value) null);
+        } else {
+            return setProperty(name, getSession().getValueFactory().createValue(value));
+        }
     }
 
     /** {@inheritDoc} */
     public Property setProperty(String name, InputStream value)
             throws RepositoryException {
-        return setProperty(name, getSession().getValueFactory().createValue(value));
+        if (value == null) {
+            return setProperty(name, (Value) null);
+        } else {
+            return setProperty(name, getSession().getValueFactory().createValue(value));
+        }
     }
 
     /** {@inheritDoc} */
@@ -182,13 +204,21 @@
     /** {@inheritDoc} */
     public Property setProperty(String name, Calendar value)
             throws RepositoryException {
-        return setProperty(name, getSession().getValueFactory().createValue(value));
+        if (value == null) {
+            return setProperty(name, (Value) null);
+        } else {
+            return setProperty(name, getSession().getValueFactory().createValue(value));
+        }
     }
 
     /** {@inheritDoc} */
     public Property setProperty(String name, Node value)
             throws RepositoryException {
-        return setProperty(name, getSession().getValueFactory().createValue(value));
+        if (value == null) {
+            return setProperty(name, (Value) null);
+        } else {
+            return setProperty(name, getSession().getValueFactory().createValue(value));
+        }
     }
 
     /** {@inheritDoc} */

Modified: jackrabbit/trunk/jcr-rmi/src/java/org/apache/jackrabbit/rmi/client/ClientProperty.java
URL: http://svn.apache.org/viewcvs/jackrabbit/trunk/jcr-rmi/src/java/org/apache/jackrabbit/rmi/client/ClientProperty.java?rev=399638&r1=399637&r2=399638&view=diff
==============================================================================
--- jackrabbit/trunk/jcr-rmi/src/java/org/apache/jackrabbit/rmi/client/ClientProperty.java (original)
+++ jackrabbit/trunk/jcr-rmi/src/java/org/apache/jackrabbit/rmi/client/ClientProperty.java Thu May  4 02:42:57 2006
@@ -165,7 +165,11 @@
      * {@inheritDoc}
      */
     public void setValue(Calendar value) throws RepositoryException {
-        setValue(getSession().getValueFactory().createValue(value));
+        if (value == null) {
+            setValue((Value) null);
+        } else {
+            setValue(getSession().getValueFactory().createValue(value));
+        }
     }
 
     /**
@@ -185,7 +189,11 @@
      * {@inheritDoc}
      */
     public void setValue(InputStream value) throws RepositoryException {
-        setValue(getSession().getValueFactory().createValue(value));
+        if (value == null) {
+            setValue((Value) null);
+        } else {
+            setValue(getSession().getValueFactory().createValue(value));
+        }
     }
 
     /**
@@ -205,7 +213,11 @@
      * {@inheritDoc}
      */
     public void setValue(Node value) throws RepositoryException {
-        setValue(getSession().getValueFactory().createValue(value));
+        if (value == null) {
+            setValue((Value) null);
+        } else {
+            setValue(getSession().getValueFactory().createValue(value));
+        }
     }
 
     /**
@@ -215,7 +227,11 @@
      * {@inheritDoc}
      */
     public void setValue(String value) throws RepositoryException {
-        setValue(getSession().getValueFactory().createValue(value));
+        if (value == null) {
+            setValue((Value) null);
+        } else {
+            setValue(getSession().getValueFactory().createValue(value));
+        }
     }
 
     /**
@@ -225,17 +241,25 @@
      * {@inheritDoc}
      */
     public void setValue(String[] strings) throws RepositoryException {
-        Value[] values = new Value[strings.length];
-        for (int i = 0; i < strings.length; i++) {
-            values[i] = getSession().getValueFactory().createValue(strings[i]);
+        if (strings == null) {
+            setValue((Value[]) null);
+        } else {
+            Value[] values = new Value[strings.length];
+            for (int i = 0; i < strings.length; i++) {
+                values[i] = getSession().getValueFactory().createValue(strings[i]);
+            }
+            setValue(values);
         }
-        setValue(values);
     }
 
     /** {@inheritDoc} */
     public void setValue(Value value) throws RepositoryException {
         try {
-            remote.setValue(SerialValueFactory.makeSerialValue(value));
+            if (value == null) {
+                remote.setValue((Value) null);
+            } else {
+                remote.setValue(SerialValueFactory.makeSerialValue(value));
+            }
         } catch (RemoteException ex) {
             throw new RemoteRepositoryException(ex);
         }
@@ -244,7 +268,11 @@
     /** {@inheritDoc} */
     public void setValue(Value[] values) throws RepositoryException {
         try {
-            remote.setValue(SerialValueFactory.makeSerialValueArray(values));
+            if (values == null) {
+                remote.setValue((Value[]) null);
+            } else {
+                remote.setValue(SerialValueFactory.makeSerialValueArray(values));
+            }
         } catch (RemoteException ex) {
             throw new RemoteRepositoryException(ex);
         }

Modified: jackrabbit/trunk/jcr-rmi/src/java/org/apache/jackrabbit/rmi/server/ServerNode.java
URL: http://svn.apache.org/viewcvs/jackrabbit/trunk/jcr-rmi/src/java/org/apache/jackrabbit/rmi/server/ServerNode.java?rev=399638&r1=399637&r2=399638&view=diff
==============================================================================
--- jackrabbit/trunk/jcr-rmi/src/java/org/apache/jackrabbit/rmi/server/ServerNode.java (original)
+++ jackrabbit/trunk/jcr-rmi/src/java/org/apache/jackrabbit/rmi/server/ServerNode.java Thu May  4 02:42:57 2006
@@ -253,7 +253,12 @@
     public RemoteProperty setProperty(String name, Value value, int type)
             throws RepositoryException, RemoteException {
         try {
-            return getFactory().getRemoteProperty(node.setProperty(name, value, type));
+            Property property = node.setProperty(name, value, type);
+            if (property == null) {
+                return null;
+            } else {
+                return getFactory().getRemoteProperty(property);
+            }
         } catch (RepositoryException ex) {
             throw getRepositoryException(ex);
         }
@@ -304,7 +309,11 @@
             throws RepositoryException, RemoteException {
         try {
             Property property = node.setProperty(name, values);
-            return getFactory().getRemoteProperty(property);
+            if (property == null) {
+                return null;
+            } else {
+                return getFactory().getRemoteProperty(property);
+            }
         } catch (RepositoryException ex) {
             throw getRepositoryException(ex);
         }