Index: C:/_DATA/workspace.java/jackrabbit/contrib/jcr-rmi/src/java/org/apache/jackrabbit/rmi/remote/RemoteProperty.java =================================================================== --- C:/_DATA/workspace.java/jackrabbit/contrib/jcr-rmi/src/java/org/apache/jackrabbit/rmi/remote/RemoteProperty.java (revision 280284) +++ C:/_DATA/workspace.java/jackrabbit/contrib/jcr-rmi/src/java/org/apache/jackrabbit/rmi/remote/RemoteProperty.java (working copy) @@ -46,6 +46,7 @@ * class provides two convenience methods to satisfy these requirements. * * @author Jukka Zitting + * @author Michael Singer * @see javax.jcr.Property * @see org.apache.jackrabbit.rmi.client.ClientProperty * @see org.apache.jackrabbit.rmi.server.ServerProperty @@ -56,11 +57,11 @@ * Remote version of the * {@link javax.jcr.Property#getValue() Property.getValue()} method. * - * @return property value + * @return property RemoteValue * @throws RepositoryException on repository errors * @throws RemoteException on RMI errors */ - Value getValue() throws RepositoryException, RemoteException; + RemoteValue getValue() throws RepositoryException, RemoteException; /** * Remote version of the @@ -66,11 +67,11 @@ * Remote version of the * {@link javax.jcr.Property#getValues() Property.getValues()} method. * - * @return property values + * @return property RemoteValue[] * @throws RepositoryException on repository errors * @throws RemoteException on RMI errors */ - Value[] getValues() throws RepositoryException, RemoteException; + RemoteValue[] getValues() throws RepositoryException, RemoteException; /** * Remote version of the Index: C:/_DATA/workspace.java/jackrabbit/contrib/jcr-rmi/src/java/org/apache/jackrabbit/rmi/remote/RemotePropertyDefinition.java =================================================================== --- C:/_DATA/workspace.java/jackrabbit/contrib/jcr-rmi/src/java/org/apache/jackrabbit/rmi/remote/RemotePropertyDefinition.java (revision 280284) +++ C:/_DATA/workspace.java/jackrabbit/contrib/jcr-rmi/src/java/org/apache/jackrabbit/rmi/remote/RemotePropertyDefinition.java (working copy) @@ -18,8 +18,6 @@ import java.rmi.RemoteException; -import javax.jcr.Value; - /** * Remote version of the JCR {@link javax.jcr.nodetype.PropertyDefinition PropertyDefinition} * interface. Used by the @@ -74,7 +72,7 @@ * @return default values * @throws RemoteException on RMI errors */ - Value[] getDefaultValues() throws RemoteException; + RemoteValue[] getDefaultValues() throws RemoteException; /** * Remote version of the Index: C:/_DATA/workspace.java/jackrabbit/contrib/jcr-rmi/src/java/org/apache/jackrabbit/rmi/remote/RemoteRepository.java =================================================================== --- C:/_DATA/workspace.java/jackrabbit/contrib/jcr-rmi/src/java/org/apache/jackrabbit/rmi/remote/RemoteRepository.java (revision 280284) +++ C:/_DATA/workspace.java/jackrabbit/contrib/jcr-rmi/src/java/org/apache/jackrabbit/rmi/remote/RemoteRepository.java (working copy) @@ -115,5 +115,8 @@ */ RemoteSession login(Credentials credentials, String workspace) throws RepositoryException, RemoteException; + + RemoteSession login(String username, String password) + throws RepositoryException, RemoteException; } Index: C:/_DATA/workspace.java/jackrabbit/contrib/jcr-rmi/src/java/org/apache/jackrabbit/rmi/remote/RemoteRow.java =================================================================== --- C:/_DATA/workspace.java/jackrabbit/contrib/jcr-rmi/src/java/org/apache/jackrabbit/rmi/remote/RemoteRow.java (revision 280284) +++ C:/_DATA/workspace.java/jackrabbit/contrib/jcr-rmi/src/java/org/apache/jackrabbit/rmi/remote/RemoteRow.java (working copy) @@ -20,7 +20,6 @@ import java.rmi.RemoteException; import javax.jcr.RepositoryException; -import javax.jcr.Value; /** * Remote version of the JCR {@link javax.jcr.query.Row Row} interface. @@ -44,7 +43,7 @@ * @throws RepositoryException on repository errors * @throws RemoteException on RMI errors */ - Value[] getValues() throws RepositoryException, RemoteException; + RemoteValue[] getValues() throws RepositoryException, RemoteException; /** * @see javax.jcr.query.Row#getValue(String) @@ -54,6 +53,6 @@ * @throws RepositoryException on repository errors * @throws RemoteException on RMI errors */ - Value getValue(String propertyName) + RemoteValue getValue(String propertyName) throws RepositoryException, RemoteException; } Index: C:/_DATA/workspace.java/jackrabbit/contrib/jcr-rmi/src/java/org/apache/jackrabbit/rmi/server/ServerLock.java =================================================================== --- C:/_DATA/workspace.java/jackrabbit/contrib/jcr-rmi/src/java/org/apache/jackrabbit/rmi/server/ServerLock.java (revision 278927) +++ C:/_DATA/workspace.java/jackrabbit/contrib/jcr-rmi/src/java/org/apache/jackrabbit/rmi/server/ServerLock.java (working copy) @@ -17,10 +17,10 @@ package org.apache.jackrabbit.rmi.server; import java.rmi.RemoteException; -import java.rmi.server.UnicastRemoteObject; import javax.jcr.RepositoryException; import javax.jcr.lock.Lock; +import javax.rmi.PortableRemoteObject; import org.apache.jackrabbit.rmi.remote.RemoteLock; @@ -31,10 +31,11 @@ * interface. * * @author Jukka Zitting + * @author Michael Singer * @see javax.jcr.lock.Lock * @see org.apache.jackrabbit.rmi.remote.RemoteLock */ -public class ServerLock extends UnicastRemoteObject implements RemoteLock { +public class ServerLock extends PortableRemoteObject implements RemoteLock { /** The adapted local lock. */ private Lock lock; Index: C:/_DATA/workspace.java/jackrabbit/contrib/jcr-rmi/src/java/org/apache/jackrabbit/rmi/server/ServerObject.java =================================================================== --- C:/_DATA/workspace.java/jackrabbit/contrib/jcr-rmi/src/java/org/apache/jackrabbit/rmi/server/ServerObject.java (revision 278927) +++ C:/_DATA/workspace.java/jackrabbit/contrib/jcr-rmi/src/java/org/apache/jackrabbit/rmi/server/ServerObject.java (working copy) @@ -16,8 +16,8 @@ */ package org.apache.jackrabbit.rmi.server; +import java.rmi.Remote; import java.rmi.RemoteException; -import java.rmi.server.UnicastRemoteObject; import javax.jcr.AccessDeniedException; import javax.jcr.InvalidItemStateException; @@ -41,10 +41,10 @@ import javax.jcr.lock.LockException; import javax.jcr.nodetype.ConstraintViolationException; import javax.jcr.nodetype.NoSuchNodeTypeException; +import javax.jcr.nodetype.NodeDefinition; import javax.jcr.nodetype.NodeType; import javax.jcr.nodetype.NodeTypeIterator; import javax.jcr.nodetype.PropertyDefinition; -import javax.jcr.nodetype.NodeDefinition; import javax.jcr.query.InvalidQueryException; import javax.jcr.version.Version; import javax.jcr.version.VersionException; @@ -50,6 +50,7 @@ import javax.jcr.version.VersionException; import javax.jcr.version.VersionHistory; import javax.jcr.version.VersionIterator; +import javax.rmi.PortableRemoteObject; import org.apache.jackrabbit.rmi.remote.RemoteItem; import org.apache.jackrabbit.rmi.remote.RemoteNode; @@ -65,8 +66,9 @@ * to instantiate new server adapters. * * @author Jukka Zitting + * @author Michael Singer */ -public class ServerObject extends UnicastRemoteObject { +public class ServerObject extends PortableRemoteObject implements Remote { /** Factory for creating server adapters. */ private RemoteAdapterFactory factory; Index: C:/_DATA/workspace.java/jackrabbit/contrib/jcr-rmi/src/java/org/apache/jackrabbit/rmi/server/ServerProperty.java =================================================================== --- C:/_DATA/workspace.java/jackrabbit/contrib/jcr-rmi/src/java/org/apache/jackrabbit/rmi/server/ServerProperty.java (revision 278927) +++ C:/_DATA/workspace.java/jackrabbit/contrib/jcr-rmi/src/java/org/apache/jackrabbit/rmi/server/ServerProperty.java (working copy) @@ -24,6 +24,7 @@ import org.apache.jackrabbit.rmi.remote.RemoteProperty; import org.apache.jackrabbit.rmi.remote.RemotePropertyDefinition; +import org.apache.jackrabbit.rmi.remote.RemoteValue; import org.apache.jackrabbit.rmi.value.SerialValueFactory; /** @@ -34,6 +35,7 @@ * interface. * * @author Jukka Zitting + * @author Michael Singer * @see javax.jcr.Property * @see org.apache.jackrabbit.rmi.remote.RemoteProperty */ @@ -56,7 +58,7 @@ } /** {@inheritDoc} */ - public Value getValue() throws RepositoryException, RemoteException { + public RemoteValue getValue() throws RepositoryException, RemoteException { try { return SerialValueFactory.makeSerialValue(property.getValue()); } catch (RepositoryException ex) { @@ -65,7 +67,7 @@ } /** {@inheritDoc} */ - public Value[] getValues() throws RepositoryException, RemoteException { + public RemoteValue[] getValues() throws RepositoryException, RemoteException { try { return SerialValueFactory.makeSerialValueArray(property.getValues()); } catch (RepositoryException ex) { Index: C:/_DATA/workspace.java/jackrabbit/contrib/jcr-rmi/src/java/org/apache/jackrabbit/rmi/server/ServerPropertyDefinition.java =================================================================== --- C:/_DATA/workspace.java/jackrabbit/contrib/jcr-rmi/src/java/org/apache/jackrabbit/rmi/server/ServerPropertyDefinition.java (revision 278927) +++ C:/_DATA/workspace.java/jackrabbit/contrib/jcr-rmi/src/java/org/apache/jackrabbit/rmi/server/ServerPropertyDefinition.java (working copy) @@ -18,10 +18,10 @@ import java.rmi.RemoteException; -import javax.jcr.Value; import javax.jcr.nodetype.PropertyDefinition; import org.apache.jackrabbit.rmi.remote.RemotePropertyDefinition; +import org.apache.jackrabbit.rmi.remote.RemoteValue; import org.apache.jackrabbit.rmi.value.SerialValueFactory; /** @@ -33,6 +33,7 @@ * interface. * * @author Jukka Zitting + * @author Michael Singer * @see javax.jcr.nodetype.PropertyDefinition * @see org.apache.jackrabbit.rmi.remote.RemotePropertyDefinition */ @@ -66,7 +67,7 @@ } /** {@inheritDoc} */ - public Value[] getDefaultValues() throws RemoteException { + public RemoteValue[] getDefaultValues() throws RemoteException { return SerialValueFactory.makeSerialValueArray(def.getDefaultValues()); } Index: C:/_DATA/workspace.java/jackrabbit/contrib/jcr-rmi/src/java/org/apache/jackrabbit/rmi/server/ServerRepository.java =================================================================== --- C:/_DATA/workspace.java/jackrabbit/contrib/jcr-rmi/src/java/org/apache/jackrabbit/rmi/server/ServerRepository.java (revision 278927) +++ C:/_DATA/workspace.java/jackrabbit/contrib/jcr-rmi/src/java/org/apache/jackrabbit/rmi/server/ServerRepository.java (working copy) @@ -22,6 +22,7 @@ import javax.jcr.Repository; import javax.jcr.RepositoryException; import javax.jcr.Session; +import javax.jcr.SimpleCredentials; import org.apache.jackrabbit.rmi.remote.RemoteRepository; import org.apache.jackrabbit.rmi.remote.RemoteSession; @@ -34,6 +35,7 @@ * interface. * * @author Jukka Zitting + * @author Michael Singer * @see javax.jcr.Repository * @see org.apache.jackrabbit.rmi.remote.RemoteRepository */ @@ -109,4 +111,18 @@ } } + /** + * convenience method to enable simple login from .NET without + * Credentials implementation on the .NET side + */ + public RemoteSession login(String username, String password) throws RepositoryException, RemoteException { + SimpleCredentials creds = new SimpleCredentials(username, password.toCharArray()); + try{ + Session session = repository.login(creds); + return getFactory().getRemoteSession(session); + } catch (RepositoryException ex) { + throw getRepositoryException(ex); + } + } + } Index: C:/_DATA/workspace.java/jackrabbit/contrib/jcr-rmi/src/java/org/apache/jackrabbit/rmi/server/ServerRow.java =================================================================== --- C:/_DATA/workspace.java/jackrabbit/contrib/jcr-rmi/src/java/org/apache/jackrabbit/rmi/server/ServerRow.java (revision 278927) +++ C:/_DATA/workspace.java/jackrabbit/contrib/jcr-rmi/src/java/org/apache/jackrabbit/rmi/server/ServerRow.java (working copy) @@ -19,10 +19,10 @@ import java.rmi.RemoteException; import javax.jcr.RepositoryException; -import javax.jcr.Value; import javax.jcr.query.Row; import org.apache.jackrabbit.rmi.remote.RemoteRow; +import org.apache.jackrabbit.rmi.remote.RemoteValue; import org.apache.jackrabbit.rmi.value.SerialValueFactory; /** @@ -32,6 +32,7 @@ * interface. * * @author Philipp Koch + * @author Michael Singer * @see javax.jcr.query.Row * @see org.apache.jackrabbit.rmi.remote.RemoteRow */ @@ -54,12 +55,12 @@ } /** {@inheritDoc} */ - public Value[] getValues() throws RepositoryException, RemoteException { - return row.getValues(); + public RemoteValue[] getValues() throws RepositoryException, RemoteException { + return SerialValueFactory.makeSerialValueArray(row.getValues()); } /** {@inheritDoc} */ - public Value getValue(String propertyName) + public RemoteValue getValue(String propertyName) throws RepositoryException, RemoteException { return SerialValueFactory.makeSerialValue(row.getValue(propertyName)); } Index: C:/_DATA/workspace.java/jackrabbit/contrib/jcr-rmi/src/java/org/apache/jackrabbit/rmi/value/SerialValueFactory.java =================================================================== --- C:/_DATA/workspace.java/jackrabbit/contrib/jcr-rmi/src/java/org/apache/jackrabbit/rmi/value/SerialValueFactory.java (revision 278927) +++ C:/_DATA/workspace.java/jackrabbit/contrib/jcr-rmi/src/java/org/apache/jackrabbit/rmi/value/SerialValueFactory.java (working copy) @@ -17,6 +17,7 @@ package org.apache.jackrabbit.rmi.value; import java.io.InputStream; +import java.rmi.RemoteException; import java.util.Calendar; import javax.jcr.Node; @@ -26,6 +27,9 @@ import javax.jcr.ValueFactory; import javax.jcr.ValueFormatException; +import org.apache.jackrabbit.rmi.remote.RemoteValue; +import org.apache.jackrabbit.rmi.server.ServerValue; + /** * The SerialValueFactory class is used in the RMI infrastructure * to create serializable Value instances on the client side. @@ -42,6 +46,7 @@ * @version $Revision$, $Date$ * @author Jukka Zitting * @author Felix Meschberger + * @author Michael Singer * @since 0.16.4.1 */ public class SerialValueFactory implements ValueFactory { @@ -72,9 +77,9 @@ * @param values the values to be decorated * @return array of decorated values */ - public static Value[] makeSerialValueArray(Value[] values) { + public static RemoteValue[] makeSerialValueArray(Value[] values) throws RemoteException { if (values != null) { - Value[] serials = new Value[values.length]; + RemoteValue[] serials = new RemoteValue[values.length]; for (int i = 0; i < values.length; i++) { serials[i] = makeSerialValue(values[i]); } @@ -80,7 +85,7 @@ } return serials; } else { - return new Value[0]; + return new RemoteValue[0]; } } @@ -91,15 +96,15 @@ * @param value the value to be decorated * @return the decorated value */ - public static Value makeSerialValue(Value value) { + public static RemoteValue makeSerialValue(Value value) throws RemoteException { // if the value is already serializable, just return it // - or should we test for SerialValue ?? if (value instanceof SerialValue) { - return value; + return new ServerValue(value); } // convert to a general vaule - return new SerialValue(new StatefulValueAdapter(value)); + return new ServerValue(new SerialValue(new StatefulValueAdapter(value))); } /**