You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@river.apache.org by pe...@apache.org on 2020/07/05 11:41:42 UTC

svn commit: r1879521 [16/37] - in /river/jtsk/modules/modularize/apache-river: ./ browser/ browser/src/main/java/org/apache/river/example/browser/ extra/ groovy-config/ river-activation/ river-collections/ river-collections/src/main/java/org/apache/riv...

Modified: river/jtsk/modules/modularize/apache-river/river-services/mercury/mercury-dl/src/main/java/org/apache/river/mercury/proxy/MailboxProxy.java
URL: http://svn.apache.org/viewvc/river/jtsk/modules/modularize/apache-river/river-services/mercury/mercury-dl/src/main/java/org/apache/river/mercury/proxy/MailboxProxy.java?rev=1879521&r1=1879520&r2=1879521&view=diff
==============================================================================
--- river/jtsk/modules/modularize/apache-river/river-services/mercury/mercury-dl/src/main/java/org/apache/river/mercury/proxy/MailboxProxy.java (original)
+++ river/jtsk/modules/modularize/apache-river/river-services/mercury/mercury-dl/src/main/java/org/apache/river/mercury/proxy/MailboxProxy.java Sun Jul  5 11:41:39 2020
@@ -1,275 +1,275 @@
-/*
- * 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.river.mercury;
-
-import org.apache.river.proxy.ThrowThis;
-import net.jini.core.constraint.MethodConstraints;
-import net.jini.core.constraint.RemoteMethodControl;
-import net.jini.id.ReferentUuid;
-import net.jini.id.ReferentUuids;
-import net.jini.id.Uuid;
-import net.jini.security.TrustVerifier;
-import net.jini.security.proxytrust.ProxyTrustIterator;
-import net.jini.security.proxytrust.SingletonProxyTrustIterator;
-
-import java.lang.reflect.Method;
-import java.io.IOException;
-import java.io.InvalidObjectException;
-import java.io.ObjectInputStream;
-import java.io.ObjectStreamException;
-import java.io.Serializable;
-import java.rmi.RemoteException;
-
-import javax.security.auth.Subject;
-
-import net.jini.admin.Administrable;
-import net.jini.core.lease.Lease;
-import net.jini.core.lease.LeaseDeniedException;
-import net.jini.event.EventMailbox;
-import net.jini.event.MailboxRegistration;
-import net.jini.event.MailboxPullRegistration;
-import net.jini.event.PullEventMailbox;
-
-/**
- * A MailboxProxy is a proxy for the event mailbox service.  
- * This is the object passed to clients of this service.
- * It implements the <code>PullEventMailbox</code> and the 
- * <code>Administrable</code> interfaces.
- *
- * @author Sun Microsystems, Inc.
- *
- * @since 1.1
- */
-class MailboxProxy implements PullEventMailbox,
-    Administrable, Serializable, ReferentUuid 
-{
-
-    private static final long serialVersionUID = 2L;
-
-    /**
-     * The reference to the event mailbox service implementation
-     *
-     * @serial
-     */
-    final MailboxBackEnd mailbox;
-
-    /**
-     * The proxy's <code>Uuid</code>
-     *
-     * @serial
-     */
-    final Uuid proxyID;
-
-    /**
-     * Creates a mailbox proxy, returning an instance
-     * that implements RemoteMethodControl if the server does too.
-     *
-     * @param mailbox the server proxy
-     * @param id the ID of the server
-     */
-    static MailboxProxy create(MailboxBackEnd mailbox, Uuid id) {
-        if (mailbox instanceof RemoteMethodControl) {
-            return new ConstrainableMailboxProxy(mailbox, id, null);
-        } else {
-            return new MailboxProxy(mailbox, id);
-        }
-    }
-
-    /** Convenience constructor. */
-    private MailboxProxy(MailboxBackEnd mailbox, Uuid proxyID) {
-        if (mailbox == null || proxyID == null) {
-            throw new IllegalArgumentException("Cannot accept null arguments");
-        }
-	this.mailbox = mailbox;
-	this.proxyID = proxyID;
-    }
-
-    // inherit javadoc from parent
-    public MailboxRegistration register(long duration) 
-        throws RemoteException, LeaseDeniedException {
-        // Check for a bad argument
-        // Note that -1 (i.e. Lease.ANY) is a valid request
-        if (duration < 1 && duration != Lease.ANY)
-            throw new IllegalArgumentException(
-                "Duration values must be positive");
-        return mailbox.register(duration);
-    }
-
-    // inherit javadoc from parent
-    public MailboxPullRegistration pullRegister(long duration) 
-        throws RemoteException, LeaseDeniedException {
-        // Check for a bad argument
-        // Note that -1 (i.e. Lease.ANY) is a valid request
-        if (duration < 1 && duration != Lease.ANY)
-            throw new IllegalArgumentException(
-                "Duration values must be positive");
-        return mailbox.pullRegister(duration);
-    }
-    
-    // inherit javadoc from parent
-    public Object getAdmin() throws RemoteException {
-        return mailbox.getAdmin();
-    }
-
-    /* From net.jini.id.ReferentUuid */
-    /**
-     * Returns the universally unique identifier that has been assigned to the
-     * resource this proxy represents.
-     *
-     * @return the instance of <code>Uuid</code> that is associated with the
-     *         resource this proxy represents. This method will not return
-     *         <code>null</code>.
-     *
-     * @see net.jini.id.ReferentUuid
-     */
-    public Uuid getReferentUuid() {
-        return proxyID;
-    }
-
-    /** Proxies for servers with the same proxyID have the same hash code. */
-    public int hashCode() {
-	return proxyID.hashCode();
-    }
-
-    /** 
-     * Proxies for servers with the same <code>proxyID</code> are 
-     * considered equal. 
-     */
-    public boolean equals(Object o) {
-	return ReferentUuids.compare(this,o);
-    }
-    
-    /** When an instance of this class is deserialized, this method is
-     *  automatically invoked. This implementation of this method validates
-     *  the state of the deserialized instance.
-     *
-     * @throws <code>InvalidObjectException</code> if the state of the
-     *         deserialized instance of this class is found to be invalid.
-     */
-    private void readObject(ObjectInputStream s)
-                               throws IOException, ClassNotFoundException
-    {
-        s.defaultReadObject();
-        /* Verify server */
-        if(mailbox == null) {
-            throw new InvalidObjectException("MailboxProxy.readObject "
-                                             +"failure - mailbox "
-                                             +"field is null");
-        }//endif
-        /* Verify proxyID */
-        if(proxyID == null) {
-            throw new InvalidObjectException("MailboxProxy.proxyID "
-                                             +"failure - proxyID "
-                                             +"field is null");
-        }//endif
-    }//end readObject
-
-    /** During deserialization of an instance of this class, if it is found
-     *  that the stream contains no data, this method is automatically
-     *  invoked. Because it is expected that the stream should always
-     *  contain data, this implementation of this method simply declares
-     *  that something must be wrong.
-     *
-     * @throws <code>InvalidObjectException</code> to indicate that there
-     *         was no data in the stream during deserialization of an
-     *         instance of this class; declaring that something is wrong.
-     */
-    private void readObjectNoData() throws ObjectStreamException {
-        throw new InvalidObjectException("no data found when attempting to "
-                                         +"deserialize MailboxProxy instance");
-    }//end readObjectNoData
-
-    
-    /** A subclass of MailboxProxy that implements RemoteMethodControl. */
-    final static class ConstrainableMailboxProxy extends MailboxProxy
-        implements RemoteMethodControl
-    {
-        private static final long serialVersionUID = 1L;
-
-        /** Creates an instance of this class. */
-        private ConstrainableMailboxProxy(MailboxBackEnd mailbox, Uuid uuid,
-            MethodConstraints methodConstraints)
-        {
-            super(constrainServer(mailbox, methodConstraints),
-                  uuid);
-        }
-
-       /**
-         * Returns a copy of the server proxy with the specified client
-         * constraints and methods mapping.
-         */
-        private static MailboxBackEnd constrainServer(
-            MailboxBackEnd mailbox,
-            MethodConstraints methodConstraints)
-        {
-            return (MailboxBackEnd)
-                ((RemoteMethodControl)mailbox).setConstraints(methodConstraints);
-        }
-
-        /** {@inheritDoc} */
-        public RemoteMethodControl setConstraints(
-            MethodConstraints constraints)
-        {
-            return new ConstrainableMailboxProxy(mailbox, proxyID,
-                constraints);
-        }
-
-        /** {@inheritDoc} */
-        public MethodConstraints getConstraints() {
-            return ((RemoteMethodControl) mailbox).getConstraints();
-        }
-
-        /* Note that the superclass's hashCode method is OK as is. */
-        /* Note that the superclass's equals method is OK as is. */
-
-        /**
-         * Returns a proxy trust iterator that is used in
-         * <code>ProxyTrustVerifier</code> to retrieve this object's
-         * trust verifier.
-         */
-        private ProxyTrustIterator getProxyTrustIterator() {
-            return new SingletonProxyTrustIterator(mailbox);
-        }//end getProxyTrustIterator
-	
-	/** Performs various functions related to the trust verification
-         *  process for the current instance of this proxy class, as
-         *  detailed in the description for this class.
-         *
-         * @throws <code>InvalidObjectException</code> if any of the
-         *         requirements for trust verification (as detailed in the
-         *         class description) are not satisfied.
-         */
-        private void readObject(ObjectInputStream s)
-                                   throws IOException, ClassNotFoundException
-        {
-	    /* Note that basic validation of the fields of this class was
-             * already performed in the readObject() method of this class'
-             * super class.
-             */
-            s.defaultReadObject();
-	    // Verify that the server implements RemoteMethodControl
-            if( !(mailbox instanceof RemoteMethodControl) ) {
-                throw new InvalidObjectException(
-		    "MailboxAdminProxy.readObject failure - mailbox " +
-		    "does not implement constrainable functionality ");
-            }//endif
-        }//end readObject 
-
-
-    }
-}
+/*
+ * 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.river.mercury.proxy;
+
+import org.apache.river.proxy.ThrowThis;
+import net.jini.core.constraint.MethodConstraints;
+import net.jini.core.constraint.RemoteMethodControl;
+import net.jini.id.ReferentUuid;
+import net.jini.id.ReferentUuids;
+import net.jini.id.Uuid;
+import net.jini.security.TrustVerifier;
+import net.jini.security.proxytrust.ProxyTrustIterator;
+import net.jini.security.proxytrust.SingletonProxyTrustIterator;
+
+import java.lang.reflect.Method;
+import java.io.IOException;
+import java.io.InvalidObjectException;
+import java.io.ObjectInputStream;
+import java.io.ObjectStreamException;
+import java.io.Serializable;
+import java.rmi.RemoteException;
+
+import javax.security.auth.Subject;
+
+import net.jini.admin.Administrable;
+import net.jini.core.lease.Lease;
+import net.jini.core.lease.LeaseDeniedException;
+import net.jini.event.EventMailbox;
+import net.jini.event.MailboxRegistration;
+import net.jini.event.MailboxPullRegistration;
+import net.jini.event.PullEventMailbox;
+
+/**
+ * A MailboxProxy is a proxy for the event mailbox service.  
+ * This is the object passed to clients of this service.
+ * It implements the <code>PullEventMailbox</code> and the 
+ * <code>Administrable</code> interfaces.
+ *
+ * @author Sun Microsystems, Inc.
+ *
+ * @since 1.1
+ */
+public class MailboxProxy implements PullEventMailbox,
+    Administrable, Serializable, ReferentUuid 
+{
+
+    private static final long serialVersionUID = 2L;
+
+    /**
+     * The reference to the event mailbox service implementation
+     *
+     * @serial
+     */
+    final MailboxBackEnd mailbox;
+
+    /**
+     * The proxy's <code>Uuid</code>
+     *
+     * @serial
+     */
+    final Uuid proxyID;
+
+    /**
+     * Creates a mailbox proxy, returning an instance
+     * that implements RemoteMethodControl if the server does too.
+     *
+     * @param mailbox the server proxy
+     * @param id the ID of the server
+     */
+    public static MailboxProxy create(MailboxBackEnd mailbox, Uuid id) {
+        if (mailbox instanceof RemoteMethodControl) {
+            return new ConstrainableMailboxProxy(mailbox, id, null);
+        } else {
+            return new MailboxProxy(mailbox, id);
+        }
+    }
+
+    /** Convenience constructor. */
+    private MailboxProxy(MailboxBackEnd mailbox, Uuid proxyID) {
+        if (mailbox == null || proxyID == null) {
+            throw new IllegalArgumentException("Cannot accept null arguments");
+        }
+	this.mailbox = mailbox;
+	this.proxyID = proxyID;
+    }
+
+    // inherit javadoc from parent
+    public MailboxRegistration register(long duration) 
+        throws RemoteException, LeaseDeniedException {
+        // Check for a bad argument
+        // Note that -1 (i.e. Lease.ANY) is a valid request
+        if (duration < 1 && duration != Lease.ANY)
+            throw new IllegalArgumentException(
+                "Duration values must be positive");
+        return mailbox.register(duration);
+    }
+
+    // inherit javadoc from parent
+    public MailboxPullRegistration pullRegister(long duration) 
+        throws RemoteException, LeaseDeniedException {
+        // Check for a bad argument
+        // Note that -1 (i.e. Lease.ANY) is a valid request
+        if (duration < 1 && duration != Lease.ANY)
+            throw new IllegalArgumentException(
+                "Duration values must be positive");
+        return mailbox.pullRegister(duration);
+    }
+    
+    // inherit javadoc from parent
+    public Object getAdmin() throws RemoteException {
+        return mailbox.getAdmin();
+    }
+
+    /* From net.jini.id.ReferentUuid */
+    /**
+     * Returns the universally unique identifier that has been assigned to the
+     * resource this proxy represents.
+     *
+     * @return the instance of <code>Uuid</code> that is associated with the
+     *         resource this proxy represents. This method will not return
+     *         <code>null</code>.
+     *
+     * @see net.jini.id.ReferentUuid
+     */
+    public Uuid getReferentUuid() {
+        return proxyID;
+    }
+
+    /** Proxies for servers with the same proxyID have the same hash code. */
+    public int hashCode() {
+	return proxyID.hashCode();
+    }
+
+    /** 
+     * Proxies for servers with the same <code>proxyID</code> are 
+     * considered equal. 
+     */
+    public boolean equals(Object o) {
+	return ReferentUuids.compare(this,o);
+    }
+    
+    /** When an instance of this class is deserialized, this method is
+     *  automatically invoked. This implementation of this method validates
+     *  the state of the deserialized instance.
+     *
+     * @throws <code>InvalidObjectException</code> if the state of the
+     *         deserialized instance of this class is found to be invalid.
+     */
+    private void readObject(ObjectInputStream s)
+                               throws IOException, ClassNotFoundException
+    {
+        s.defaultReadObject();
+        /* Verify server */
+        if(mailbox == null) {
+            throw new InvalidObjectException("MailboxProxy.readObject "
+                                             +"failure - mailbox "
+                                             +"field is null");
+        }//endif
+        /* Verify proxyID */
+        if(proxyID == null) {
+            throw new InvalidObjectException("MailboxProxy.proxyID "
+                                             +"failure - proxyID "
+                                             +"field is null");
+        }//endif
+    }//end readObject
+
+    /** During deserialization of an instance of this class, if it is found
+     *  that the stream contains no data, this method is automatically
+     *  invoked. Because it is expected that the stream should always
+     *  contain data, this implementation of this method simply declares
+     *  that something must be wrong.
+     *
+     * @throws <code>InvalidObjectException</code> to indicate that there
+     *         was no data in the stream during deserialization of an
+     *         instance of this class; declaring that something is wrong.
+     */
+    private void readObjectNoData() throws ObjectStreamException {
+        throw new InvalidObjectException("no data found when attempting to "
+                                         +"deserialize MailboxProxy instance");
+    }//end readObjectNoData
+
+    
+    /** A subclass of MailboxProxy that implements RemoteMethodControl. */
+    final static class ConstrainableMailboxProxy extends MailboxProxy
+        implements RemoteMethodControl
+    {
+        private static final long serialVersionUID = 1L;
+
+        /** Creates an instance of this class. */
+        private ConstrainableMailboxProxy(MailboxBackEnd mailbox, Uuid uuid,
+            MethodConstraints methodConstraints)
+        {
+            super(constrainServer(mailbox, methodConstraints),
+                  uuid);
+        }
+
+       /**
+         * Returns a copy of the server proxy with the specified client
+         * constraints and methods mapping.
+         */
+        private static MailboxBackEnd constrainServer(
+            MailboxBackEnd mailbox,
+            MethodConstraints methodConstraints)
+        {
+            return (MailboxBackEnd)
+                ((RemoteMethodControl)mailbox).setConstraints(methodConstraints);
+        }
+
+        /** {@inheritDoc} */
+        public RemoteMethodControl setConstraints(
+            MethodConstraints constraints)
+        {
+            return new ConstrainableMailboxProxy(mailbox, proxyID,
+                constraints);
+        }
+
+        /** {@inheritDoc} */
+        public MethodConstraints getConstraints() {
+            return ((RemoteMethodControl) mailbox).getConstraints();
+        }
+
+        /* Note that the superclass's hashCode method is OK as is. */
+        /* Note that the superclass's equals method is OK as is. */
+
+        /**
+         * Returns a proxy trust iterator that is used in
+         * <code>ProxyTrustVerifier</code> to retrieve this object's
+         * trust verifier.
+         */
+        private ProxyTrustIterator getProxyTrustIterator() {
+            return new SingletonProxyTrustIterator(mailbox);
+        }//end getProxyTrustIterator
+	
+	/** Performs various functions related to the trust verification
+         *  process for the current instance of this proxy class, as
+         *  detailed in the description for this class.
+         *
+         * @throws <code>InvalidObjectException</code> if any of the
+         *         requirements for trust verification (as detailed in the
+         *         class description) are not satisfied.
+         */
+        private void readObject(ObjectInputStream s)
+                                   throws IOException, ClassNotFoundException
+        {
+	    /* Note that basic validation of the fields of this class was
+             * already performed in the readObject() method of this class'
+             * super class.
+             */
+            s.defaultReadObject();
+	    // Verify that the server implements RemoteMethodControl
+            if( !(mailbox instanceof RemoteMethodControl) ) {
+                throw new InvalidObjectException(
+		    "MailboxAdminProxy.readObject failure - mailbox " +
+		    "does not implement constrainable functionality ");
+            }//endif
+        }//end readObject 
+
+
+    }
+}

Modified: river/jtsk/modules/modularize/apache-river/river-services/mercury/mercury-dl/src/main/java/org/apache/river/mercury/proxy/MercuryPermission.java
URL: http://svn.apache.org/viewvc/river/jtsk/modules/modularize/apache-river/river-services/mercury/mercury-dl/src/main/java/org/apache/river/mercury/proxy/MercuryPermission.java?rev=1879521&r1=1879520&r2=1879521&view=diff
==============================================================================
--- river/jtsk/modules/modularize/apache-river/river-services/mercury/mercury-dl/src/main/java/org/apache/river/mercury/proxy/MercuryPermission.java (original)
+++ river/jtsk/modules/modularize/apache-river/river-services/mercury/mercury-dl/src/main/java/org/apache/river/mercury/proxy/MercuryPermission.java Sun Jul  5 11:41:39 2020
@@ -1,59 +1,59 @@
-/*
- * 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.river.mercury;
-
-import net.jini.security.AccessPermission;
-
-/**
- * Represents permissions that can be used to express the access control policy
- * for the Mercury server exported with a 
- * {@link net.jini.jeri.BasicJeriExporter}. This class
- * can be passed to {@link net.jini.jeri.BasicInvocationDispatcher}, 
- * and then used in
- * security policy permission grants. <p>
- *
- * An instance contains a name (also referred to as a "target name") but no
- * actions list; you either have the named permission or you don't. The
- * convention is that the target name is the non-qualified name of the remote
- * method being invoked. Wildcard matches are supported using the syntax
- * specified by {@link AccessPermission}. <p>
- *
- * The possible target names for use with a Mercury server are specified in the
- * package documentation for {@link org.apache.river.mercury}.
- *
- * @author Sun Microsystems, Inc.
- * @since 2.0
- */
-public class MercuryPermission extends AccessPermission {
-
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * Creates an instance with the specified target name.
-     *
-     * @param name the target name
-     * @throws NullPointerException if the target name is <code>null</code>
-     * @throws IllegalArgumentException if the target name does not match
-     * the syntax specified in the comments at the beginning of the {@link
-     * AccessPermission} class
-     */
-    public MercuryPermission(String name) {
-       super(name);
-    }
-}
+/*
+ * 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.river.mercury.proxy;
+
+import net.jini.security.AccessPermission;
+
+/**
+ * Represents permissions that can be used to express the access control policy
+ * for the Mercury server exported with a 
+ * {@link net.jini.jeri.BasicJeriExporter}. This class
+ * can be passed to {@link net.jini.jeri.BasicInvocationDispatcher}, 
+ * and then used in
+ * security policy permission grants. <p>
+ *
+ * An instance contains a name (also referred to as a "target name") but no
+ * actions list; you either have the named permission or you don't. The
+ * convention is that the target name is the non-qualified name of the remote
+ * method being invoked. Wildcard matches are supported using the syntax
+ * specified by {@link AccessPermission}. <p>
+ *
+ * The possible target names for use with a Mercury server are specified in the
+ * package documentation for {@link org.apache.river.mercury}.
+ *
+ * @author Sun Microsystems, Inc.
+ * @since 2.0
+ */
+public class MercuryPermission extends AccessPermission {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * Creates an instance with the specified target name.
+     *
+     * @param name the target name
+     * @throws NullPointerException if the target name is <code>null</code>
+     * @throws IllegalArgumentException if the target name does not match
+     * the syntax specified in the comments at the beginning of the {@link
+     * AccessPermission} class
+     */
+    public MercuryPermission(String name) {
+       super(name);
+    }
+}

Modified: river/jtsk/modules/modularize/apache-river/river-services/mercury/mercury-dl/src/main/java/org/apache/river/mercury/proxy/ProxyUtil.java
URL: http://svn.apache.org/viewvc/river/jtsk/modules/modularize/apache-river/river-services/mercury/mercury-dl/src/main/java/org/apache/river/mercury/proxy/ProxyUtil.java?rev=1879521&r1=1879520&r2=1879521&view=diff
==============================================================================
--- river/jtsk/modules/modularize/apache-river/river-services/mercury/mercury-dl/src/main/java/org/apache/river/mercury/proxy/ProxyUtil.java (original)
+++ river/jtsk/modules/modularize/apache-river/river-services/mercury/mercury-dl/src/main/java/org/apache/river/mercury/proxy/ProxyUtil.java Sun Jul  5 11:41:39 2020
@@ -1,77 +1,77 @@
-/*
- * 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.river.mercury;
-
-import java.lang.reflect.Method;
-
-/**
- * Convenience class that contains a package protected static utility method
- * used by the proxy classes of this package in proxy trust verification
- * process.
- *
- * Note that this class cannot be instantiated.
- *
- * @author Sun Microsystems, Inc.
- */
-class ProxyUtil {
-
-    /** This class cannot be instantiated. */
-    private ProxyUtil() {
-	throw new AssertionError("class cannot be instantiated");
-    }//end constructor
-
-    /**
-     * Returns the public method for the specified <code>Class</code> type,
-     * method name, and array of parameter types.
-     * <p>
-     * This method is typically used in place of {@link Class#getMethod
-     * Class.getMethod} to get a method that should definitely be defined;
-     * thus, this method throws an error instead of an exception if the
-     * given method is missing.
-     * <p>
-     * This method is convenient for the initialization of a static
-     * variable for use as the <code>mappings</code> argument to 
-     * {@link org.apache.river.proxy.ConstrainableProxyUtil#translateConstraints 
-     * ConstrainableProxyUtil.translateConstraints}.
-     *
-     * @param type           the <code>Class</code> type that defines the
-     *                       method of interest
-     * @param name           <code>String</code> containing the name of the
-     *                       method of interest
-     * @param parameterTypes the <code>Class</code> types of the parameters
-     *                       to the method of interest
-     *
-     * @return a <code>Method</code> object that provides information about,
-     *         and access to, the method of interest
-     *
-     * @throws <code>NoSuchMethodError</code> if the method of interest cannot
-     *         be found
-     * @throws <code>NullPointerException</code> if <code>type</code> or
-     *         <code>name</code> is <code>null</code> 
-     */
-    static Method getMethod(Class type,
-				   String name,
-				   Class[] parameterTypes)
-    {
-        try {
-            return type.getMethod(name, parameterTypes);
-        } catch (NoSuchMethodException e) {
-            throw (Error)(new NoSuchMethodError(e.getMessage()).initCause(e));
-        }
-    }//end getMethod
-}//end class ProxyUtil
+/*
+ * 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.river.mercury.proxy;
+
+import java.lang.reflect.Method;
+
+/**
+ * Convenience class that contains a package protected static utility method
+ * used by the proxy classes of this package in proxy trust verification
+ * process.
+ *
+ * Note that this class cannot be instantiated.
+ *
+ * @author Sun Microsystems, Inc.
+ */
+class ProxyUtil {
+
+    /** This class cannot be instantiated. */
+    private ProxyUtil() {
+	throw new AssertionError("class cannot be instantiated");
+    }//end constructor
+
+    /**
+     * Returns the public method for the specified <code>Class</code> type,
+     * method name, and array of parameter types.
+     * <p>
+     * This method is typically used in place of {@link Class#getMethod
+     * Class.getMethod} to get a method that should definitely be defined;
+     * thus, this method throws an error instead of an exception if the
+     * given method is missing.
+     * <p>
+     * This method is convenient for the initialization of a static
+     * variable for use as the <code>mappings</code> argument to 
+     * {@link org.apache.river.proxy.ConstrainableProxyUtil#translateConstraints 
+     * ConstrainableProxyUtil.translateConstraints}.
+     *
+     * @param type           the <code>Class</code> type that defines the
+     *                       method of interest
+     * @param name           <code>String</code> containing the name of the
+     *                       method of interest
+     * @param parameterTypes the <code>Class</code> types of the parameters
+     *                       to the method of interest
+     *
+     * @return a <code>Method</code> object that provides information about,
+     *         and access to, the method of interest
+     *
+     * @throws <code>NoSuchMethodError</code> if the method of interest cannot
+     *         be found
+     * @throws <code>NullPointerException</code> if <code>type</code> or
+     *         <code>name</code> is <code>null</code> 
+     */
+    static Method getMethod(Class type,
+				   String name,
+				   Class[] parameterTypes)
+    {
+        try {
+            return type.getMethod(name, parameterTypes);
+        } catch (NoSuchMethodException e) {
+            throw (Error)(new NoSuchMethodError(e.getMessage()).initCause(e));
+        }
+    }//end getMethod
+}//end class ProxyUtil

Modified: river/jtsk/modules/modularize/apache-river/river-services/mercury/mercury-dl/src/main/java/org/apache/river/mercury/proxy/ProxyVerifier.java
URL: http://svn.apache.org/viewvc/river/jtsk/modules/modularize/apache-river/river-services/mercury/mercury-dl/src/main/java/org/apache/river/mercury/proxy/ProxyVerifier.java?rev=1879521&r1=1879520&r2=1879521&view=diff
==============================================================================
--- river/jtsk/modules/modularize/apache-river/river-services/mercury/mercury-dl/src/main/java/org/apache/river/mercury/proxy/ProxyVerifier.java (original)
+++ river/jtsk/modules/modularize/apache-river/river-services/mercury/mercury-dl/src/main/java/org/apache/river/mercury/proxy/ProxyVerifier.java Sun Jul  5 11:41:39 2020
@@ -1,147 +1,147 @@
-/*
- * 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.river.mercury;
-
-import org.apache.river.landlord.ConstrainableLandlordLease;
-import org.apache.river.landlord.Landlord;
-import org.apache.river.landlord.LandlordProxyVerifier;
-import net.jini.core.constraint.MethodConstraints;
-import net.jini.core.constraint.RemoteMethodControl;
-import net.jini.id.ReferentUuid;
-import net.jini.id.Uuid;
-import net.jini.security.TrustVerifier;
-import net.jini.security.proxytrust.TrustEquivalence;
-import java.io.Serializable;
-import java.rmi.RemoteException;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-/** Defines a trust verifier for the smart proxies of a Mercury server. */
-final class ProxyVerifier implements TrustVerifier, Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    /** Logger for logging information about this instance */
-    private static final Logger logger = 
-	Logger.getLogger("net.jini.security.trust");
-
-    private static final String proxyVerifierSourceClass = 
-	ProxyVerifier.class.getName();
-
-    /** The Mercury server proxy. */
-    private final RemoteMethodControl serverProxy;
-    
-    /**
-     * The unique identifier associated with the backend server referenced
-     * by the <code>serverProxy</code>, used for comparison with the IDs
-     * extracted from the smart proxies being verified.
-     *
-     * @serial
-     */
-    private final Uuid proxyID;
-
-    /**
-     * Returns a verifier for the smart proxies of the specified Mercury server
-     * proxy.
-     *
-     * @param serverProxy the Mercury server proxy
-     * @throws UnsupportedOperationException if <code>serverProxy</code> does
-     *	       not implement both {@link RemoteMethodControl} and {@link
-     *	       TrustEquivalence}
-     */
-    ProxyVerifier(MailboxBackEnd serverProxy, Uuid proxyID) {
-	if (!(serverProxy instanceof RemoteMethodControl)) {
-	    throw new UnsupportedOperationException(
-		"No verifier available for non-constrainable service");
-	} else if (!(serverProxy instanceof TrustEquivalence)) {
-	    throw new UnsupportedOperationException(
-		"Verifier requires service proxy to implement " +
-		"TrustEquivalence");
-	} else if (proxyID == null) {
-	    throw new IllegalArgumentException(
-	        "Proxy id cannot be null");
-	}
-	this.serverProxy = (RemoteMethodControl) serverProxy;
-        this.proxyID = proxyID;
-    }
-
-    /**
-     * @throws NullPointerException {@inheritDoc}
-     */
-    public boolean isTrustedObject(Object obj, TrustVerifier.Context ctx)
-	throws RemoteException
-    {
-	if (logger.isLoggable(Level.FINER)) {
-	    logger.entering(proxyVerifierSourceClass, "isTrustedObject",
-	        new Object[] { obj, ctx });
-	}
-	if (obj == null || ctx == null) {
-	    throw new NullPointerException("Arguments must not be null");
-	}
-	RemoteMethodControl otherServerProxy;
-	Uuid inputProxyID = null;
-	if (obj instanceof Registration.ConstrainableRegistration) {
-	    Registration reg = (Registration) obj;
-	    // verify sub-components
-	    if (!isTrustedObject(reg.lease, ctx) ||
-		!isTrustedObject(reg.listener, ctx)) {
-		return false;
-	    }
-	    otherServerProxy = (RemoteMethodControl) reg.mailbox;
-	} else if (obj instanceof MailboxBackEnd && 
-	           obj instanceof RemoteMethodControl) {
-            /* Inner proxy verification case. To simplify logic, below,
-	     * just assume the same Uuid that we have in hand.
-	     */ 
-	    otherServerProxy = (RemoteMethodControl)obj;
-	    inputProxyID = proxyID;
-	} else if (obj instanceof MailboxProxy.ConstrainableMailboxProxy) {
-	    otherServerProxy = (RemoteMethodControl) ((MailboxProxy)obj).mailbox;
-	    inputProxyID = ((ReferentUuid)obj).getReferentUuid();
-	} else if (obj instanceof MailboxAdminProxy.ConstrainableMailboxAdminProxy) {
-	    otherServerProxy = (RemoteMethodControl) ((MailboxAdminProxy)obj).server;
-	    inputProxyID = ((ReferentUuid)obj).getReferentUuid();
-	} else if (obj instanceof ListenerProxy.ConstrainableListenerProxy) {
-	    otherServerProxy = (RemoteMethodControl) ((ListenerProxy)obj).server;
-	} else if (obj instanceof ConstrainableLandlordLease) {
-	    final LandlordProxyVerifier lpv =
-		new LandlordProxyVerifier((Landlord)serverProxy, proxyID);
-	    return lpv.isTrustedObject(obj, ctx);
-	} else {
-	    logger.log(Level.FINEST, "Object {0} is not a supported type",
-		obj);
-	    return false;
-	}
-	
-	// For top-level proxies, quickly verify proxy Uuid
-	if ((inputProxyID != null) &&
-	    !(proxyID.equals(inputProxyID))) {
-	    return false;
-	}
-
-	MethodConstraints mc = otherServerProxy.getConstraints();
-	TrustEquivalence trusted =
-	    (TrustEquivalence) serverProxy.setConstraints(mc);
-	boolean result = trusted.checkTrustEquivalence(otherServerProxy);
-	if (logger.isLoggable(Level.FINER)) {
-	    logger.exiting(proxyVerifierSourceClass, "isTrustedObject", 
-	        Boolean.valueOf(result));
-	}
-	return result;
-    }
-}
+/*
+ * 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.river.mercury.proxy;
+
+import org.apache.river.landlord.ConstrainableLandlordLease;
+import org.apache.river.landlord.Landlord;
+import org.apache.river.landlord.LandlordProxyVerifier;
+import net.jini.core.constraint.MethodConstraints;
+import net.jini.core.constraint.RemoteMethodControl;
+import net.jini.id.ReferentUuid;
+import net.jini.id.Uuid;
+import net.jini.security.TrustVerifier;
+import net.jini.security.proxytrust.TrustEquivalence;
+import java.io.Serializable;
+import java.rmi.RemoteException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/** Defines a trust verifier for the smart proxies of a Mercury server. */
+public final class ProxyVerifier implements TrustVerifier, Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /** Logger for logging information about this instance */
+    private static final Logger logger = 
+	Logger.getLogger("net.jini.security.trust");
+
+    private static final String proxyVerifierSourceClass = 
+	ProxyVerifier.class.getName();
+
+    /** The Mercury server proxy. */
+    private final RemoteMethodControl serverProxy;
+    
+    /**
+     * The unique identifier associated with the backend server referenced
+     * by the <code>serverProxy</code>, used for comparison with the IDs
+     * extracted from the smart proxies being verified.
+     *
+     * @serial
+     */
+    private final Uuid proxyID;
+
+    /**
+     * Returns a verifier for the smart proxies of the specified Mercury server
+     * proxy.
+     *
+     * @param serverProxy the Mercury server proxy
+     * @throws UnsupportedOperationException if <code>serverProxy</code> does
+     *	       not implement both {@link RemoteMethodControl} and {@link
+     *	       TrustEquivalence}
+     */
+    public ProxyVerifier(MailboxBackEnd serverProxy, Uuid proxyID) {
+	if (!(serverProxy instanceof RemoteMethodControl)) {
+	    throw new UnsupportedOperationException(
+		"No verifier available for non-constrainable service");
+	} else if (!(serverProxy instanceof TrustEquivalence)) {
+	    throw new UnsupportedOperationException(
+		"Verifier requires service proxy to implement " +
+		"TrustEquivalence");
+	} else if (proxyID == null) {
+	    throw new IllegalArgumentException(
+	        "Proxy id cannot be null");
+	}
+	this.serverProxy = (RemoteMethodControl) serverProxy;
+        this.proxyID = proxyID;
+    }
+
+    /**
+     * @throws NullPointerException {@inheritDoc}
+     */
+    public boolean isTrustedObject(Object obj, TrustVerifier.Context ctx)
+	throws RemoteException
+    {
+	if (logger.isLoggable(Level.FINER)) {
+	    logger.entering(proxyVerifierSourceClass, "isTrustedObject",
+	        new Object[] { obj, ctx });
+	}
+	if (obj == null || ctx == null) {
+	    throw new NullPointerException("Arguments must not be null");
+	}
+	RemoteMethodControl otherServerProxy;
+	Uuid inputProxyID = null;
+	if (obj instanceof Registration.ConstrainableRegistration) {
+	    Registration reg = (Registration) obj;
+	    // verify sub-components
+	    if (!isTrustedObject(reg.lease, ctx) ||
+		!isTrustedObject(reg.listener, ctx)) {
+		return false;
+	    }
+	    otherServerProxy = (RemoteMethodControl) reg.mailbox;
+	} else if (obj instanceof MailboxBackEnd && 
+	           obj instanceof RemoteMethodControl) {
+            /* Inner proxy verification case. To simplify logic, below,
+	     * just assume the same Uuid that we have in hand.
+	     */ 
+	    otherServerProxy = (RemoteMethodControl)obj;
+	    inputProxyID = proxyID;
+	} else if (obj instanceof MailboxProxy.ConstrainableMailboxProxy) {
+	    otherServerProxy = (RemoteMethodControl) ((MailboxProxy)obj).mailbox;
+	    inputProxyID = ((ReferentUuid)obj).getReferentUuid();
+	} else if (obj instanceof MailboxAdminProxy.ConstrainableMailboxAdminProxy) {
+	    otherServerProxy = (RemoteMethodControl) ((MailboxAdminProxy)obj).server;
+	    inputProxyID = ((ReferentUuid)obj).getReferentUuid();
+	} else if (obj instanceof ListenerProxy.ConstrainableListenerProxy) {
+	    otherServerProxy = (RemoteMethodControl) ((ListenerProxy)obj).server;
+	} else if (obj instanceof ConstrainableLandlordLease) {
+	    final LandlordProxyVerifier lpv =
+		new LandlordProxyVerifier((Landlord)serverProxy, proxyID);
+	    return lpv.isTrustedObject(obj, ctx);
+	} else {
+	    logger.log(Level.FINEST, "Object {0} is not a supported type",
+		obj);
+	    return false;
+	}
+	
+	// For top-level proxies, quickly verify proxy Uuid
+	if ((inputProxyID != null) &&
+	    !(proxyID.equals(inputProxyID))) {
+	    return false;
+	}
+
+	MethodConstraints mc = otherServerProxy.getConstraints();
+	TrustEquivalence trusted =
+	    (TrustEquivalence) serverProxy.setConstraints(mc);
+	boolean result = trusted.checkTrustEquivalence(otherServerProxy);
+	if (logger.isLoggable(Level.FINER)) {
+	    logger.exiting(proxyVerifierSourceClass, "isTrustedObject", 
+	        Boolean.valueOf(result));
+	}
+	return result;
+    }
+}

Modified: river/jtsk/modules/modularize/apache-river/river-services/mercury/mercury-dl/src/main/java/org/apache/river/mercury/proxy/Registration.java
URL: http://svn.apache.org/viewvc/river/jtsk/modules/modularize/apache-river/river-services/mercury/mercury-dl/src/main/java/org/apache/river/mercury/proxy/Registration.java?rev=1879521&r1=1879520&r2=1879521&view=diff
==============================================================================
--- river/jtsk/modules/modularize/apache-river/river-services/mercury/mercury-dl/src/main/java/org/apache/river/mercury/proxy/Registration.java (original)
+++ river/jtsk/modules/modularize/apache-river/river-services/mercury/mercury-dl/src/main/java/org/apache/river/mercury/proxy/Registration.java Sun Jul  5 11:41:39 2020
@@ -1,390 +1,390 @@
-/*
- * 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.river.mercury;
-
-import java.io.IOException;
-import java.io.InvalidObjectException;
-import java.io.ObjectInputStream;
-import java.io.ObjectStreamException;
-import java.io.Serializable;
-import java.lang.reflect.Method;
-import java.rmi.RemoteException;
-import java.util.Collection;
-
-import javax.security.auth.Subject;
-
-import org.apache.river.landlord.ConstrainableLandlordLease;
-import org.apache.river.proxy.ConstrainableProxyUtil; 
-import org.apache.river.proxy.ThrowThis;
-import net.jini.core.constraint.MethodConstraints;
-import net.jini.core.constraint.RemoteMethodControl;
-import net.jini.id.ReferentUuid;
-import net.jini.id.ReferentUuids;
-import net.jini.id.Uuid;
-import net.jini.security.proxytrust.ProxyTrustIterator;
-import net.jini.security.proxytrust.SingletonProxyTrustIterator;
-import net.jini.security.TrustVerifier;
-
-import net.jini.event.MailboxPullRegistration;
-import net.jini.event.MailboxRegistration;
-import net.jini.event.RemoteEventIterator;
-import net.jini.core.event.RemoteEventListener;
-import net.jini.core.lease.Lease;
-
-/**
- * The <tt>Registration</tt> class is the client-side proxy
- * returned to event mailbox clients as the result of the 
- * registration process. It implements the <tt>MailboxRegistration</tt>
- * interface and delegates functionality to the mailbox service
- * where necessary.
- *
- * @author Sun Microsystems, Inc.
- *
- * @since 1.1
- */ 
-class Registration implements MailboxPullRegistration, 
-    Serializable, ReferentUuid 
-{
-
-    private static final long serialVersionUID = 2L;
-
-    /** Unique identifier for this registration */
-    final Uuid registrationID;
-
-    /** Reference to service implementation */
-    final MailboxBackEnd mailbox;
-
-    /** Reference to service provided RemoteEventListener implementation */
-    final ListenerProxy listener;
-
-    /** The service's registration lease */ 
-    final Lease lease;
- 
-    /**
-     * Creates a mailbox registration proxy, returning an instance 
-     * that implements RemoteMethodControl if the server does too.
-     *
-     * @param server the server proxy
-     * @param id the ID of the lease set
-     * @param lease the lease set's lease
-     */
-    static Registration create(Uuid id, MailboxBackEnd server, Lease lease) {
-	if (server instanceof RemoteMethodControl) {
-	    return new ConstrainableRegistration(id, server, lease, null);
-	} else {
-	    return new Registration(id, server, lease);
-	}
-    }
-
-    /** Convenience constructor */
-    private Registration(Uuid id, MailboxBackEnd srv, Lease l) {
-        if (id == null || srv == null || l == null)
-            throw new IllegalArgumentException("Cannot accept null arguments");
-        registrationID = id;
-        mailbox = srv;
-        listener = ListenerProxy.create(id, srv);
-        lease = l;
-    }
-
-    // inherit javadoc from supertype
-    public Lease getLease() {
-	return lease;
-    }
-    
-    // inherit javadoc from supertype
-    public RemoteEventListener getListener() {
-	return listener;
-    }
-
-    // inherit javadoc from supertype
-    public void enableDelivery(RemoteEventListener target) 
-	throws RemoteException
-    {
-        // Prevent resubmission of this registration's listener
-	if ((target instanceof ListenerProxy) &&
-	    (listener.equals((ListenerProxy)target))) {
-	    throw new IllegalArgumentException("Cannot resubmit " +
-		"a target that was provided by the EventMailbox service");
-	} else { // OK to make the call, now
-	    try {
-	        mailbox.enableDelivery(registrationID, target);
-	    } catch (ThrowThis tt) { 
-	        tt.throwRemoteException();
-	    }
-	}
-    }
-
-    // inherit javadoc from supertype
-    public void disableDelivery() throws RemoteException {
-	try { 
-            mailbox.disableDelivery(registrationID);
-	} catch (ThrowThis tt) { 
-	    tt.throwRemoteException();
-	}
-    }
-    
-    // inherit javadoc from supertype
-    public RemoteEventIterator getRemoteEvents() 
-	throws RemoteException 
-    {
-        RemoteEventIteratorImpl i = null;
-	try { 
-            RemoteEventIteratorData d = mailbox.getRemoteEvents(registrationID);
-            i = new RemoteEventIteratorImpl(
-                d.uuid, registrationID, mailbox, d.events);
-	} catch (ThrowThis tt) { 
-	    tt.throwRemoteException();
-	}
-	return i;
-    }
-
-    // inherit javadoc from supertype
-    public void addUnknownEvents(Collection unknownEvents)
-	throws RemoteException
-    {
-        //TODO - verify collection contains RemoteEvents
-	try { 
-            mailbox.addUnknownEvents(registrationID, unknownEvents);
-	} catch (ThrowThis tt) { 
-	    tt.throwRemoteException();
-	}
-        
-    }
-    
-    /* From net.jini.id.ReferentUuid */
-    /**
-     * Returns the universally unique identifier that has been assigned to the
-     * resource this proxy represents.
-     *
-     * @return the instance of <code>Uuid</code> that is associated with the
-     *         resource this proxy represents. This method will not return
-     *         <code>null</code>.
-     *
-     * @see net.jini.id.ReferentUuid
-     */
-    public Uuid getReferentUuid() {
-        return registrationID;
-    }
-
-    /** Proxies with the same registrationID have the same hash code. */
-    public int hashCode() {
-        return registrationID.hashCode();
-    }
-
-    /** Proxies with the same registrationID are considered equal. */
-    public boolean equals(Object o) {
-        return ReferentUuids.compare(this,o);
-    }
-
-   /** When an instance of this class is deserialized, this method is
-     *  automatically invoked. This implementation of this method validates
-     *  the state of the deserialized instance.
-     *
-     * @throws <code>InvalidObjectException</code> if the state of the
-     *         deserialized instance of this class is found to be invalid.
-     */
-    private void readObject(ObjectInputStream s)
-                               throws IOException, ClassNotFoundException
-    {
-        s.defaultReadObject();
-        /* Verify server */
-        if(mailbox == null) {
-            throw new InvalidObjectException("Registration.readObject "
-                                             +"failure - mailbox "
-                                             +"field is null");
-        }//endif
-        /* Verify registrationID */
-        if(registrationID == null) {
-            throw new InvalidObjectException
-                                  ("Registration.readObject "
-                                   +"failure - registrationID field is null");
-        }//endif
-        /* Verify regLease */
-        if(lease == null) {
-            throw new InvalidObjectException
-                                        ("Registration.readObject "
-                                         +"failure - lease field is null");
-        }//endif
-        /* Verify listener */
-        if(listener == null) {
-            throw new InvalidObjectException
-                                        ("Registration.readObject "
-                                         +"failure - listener field is null");
-        }//endif
-    }//end readObject
-
-    /** During deserialization of an instance of this class, if it is found
-     *  that the stream contains no data, this method is automatically
-     *  invoked. Because it is expected that the stream should always
-     *  contain data, this implementation of this method simply declares
-     *  that something must be wrong.
-     *
-     * @throws <code>InvalidObjectException</code> to indicate that there
-     *         was no data in the stream during deserialization of an
-     *         instance of this class; declaring that something is wrong.
-     */
-    private void readObjectNoData() throws ObjectStreamException {
-        throw new InvalidObjectException("no data found when attempting to "
-                                         +"deserialize Registration instance");
-    }//end readObjectNoData
-
-    /** A subclass of Registration that implements RemoteMethodControl. */
-    final static class ConstrainableRegistration extends Registration 
-        implements RemoteMethodControl 
-    {
-	private static final long serialVersionUID = 1L;
-
-	// Mappings from client to server methods, 
-	private static final Method[] methodMap1 = {
-	    ProxyUtil.getMethod(MailboxPullRegistration.class,
-	        "getRemoteEvents", new Class[] {}),
-            ProxyUtil.getMethod(MailboxBackEnd.class, 
-	        "getRemoteEvents", new Class[] {Uuid.class}), 
-            // Use the same constraints for getNextBatch as getRemoteEvents
-	    ProxyUtil.getMethod(MailboxPullRegistration.class,
-	        "getRemoteEvents", new Class[] {}),
-            ProxyUtil.getMethod(MailboxBackEnd.class, 
-	        "getNextBatch", new Class[] {
-		    Uuid.class, Uuid.class, long.class, Object.class}), 
-	    ProxyUtil.getMethod(MailboxPullRegistration.class,
-	        "addUnknownEvents", new Class[] {Collection.class}),
-            ProxyUtil.getMethod(MailboxBackEnd.class, 
-	        "addUnknownEvents", new Class[] {Uuid.class, Collection.class}), 
-	    ProxyUtil.getMethod(MailboxRegistration.class,
-	        "enableDelivery", new Class[] {RemoteEventListener.class}),
-	    ProxyUtil.getMethod(MailboxBackEnd.class, 
-	        "enableDelivery", new Class[] {Uuid.class, 
-		RemoteEventListener.class}), 
-	    ProxyUtil.getMethod(MailboxRegistration.class,
-	        "disableDelivery", new Class[] {}),
-	    ProxyUtil.getMethod(MailboxBackEnd.class, 
-	        "disableDelivery", new Class[] {Uuid.class})
-	};
-	/**
-	 * The client constraints placed on this proxy or <code>null</code>.
-	 *
-	 * @serial
-	 */
-	private MethodConstraints methodConstraints;
-
-	/** Creates an instance of this class. */
-	private ConstrainableRegistration(Uuid id, MailboxBackEnd server,
-            Lease lease, MethodConstraints methodConstraints)
-	{
-	    super(id, constrainServer(server, methodConstraints),
-	          lease);
-	    this.methodConstraints = methodConstraints;
-	}
-	
-	// inherit javadoc from supertype
-	public RemoteEventIterator getRemoteEvents(long maxEvents, long timeout) 
-	    throws RemoteException 
-	{ 
-	    //
-	    //TODO - return constrained remote iterator impl
-	    //
- 	    return super.getRemoteEvents();
-	}
-
-	/**
-	 * Returns a copy of the server proxy with the specified client
-	 * constraints and methods mapping.
-	 */
-	private static MailboxBackEnd constrainServer(
-	    MailboxBackEnd server,
-	    MethodConstraints methodConstraints)
-	{
-	    return (MailboxBackEnd) 
-	        ((RemoteMethodControl)server).setConstraints(
-		    ConstrainableProxyUtil.translateConstraints(
-		        methodConstraints, methodMap1));
-	}
-	/** {@inheritDoc} */
-	public RemoteMethodControl setConstraints(
-	    MethodConstraints constraints)
-	{
-	    return new ConstrainableRegistration(registrationID, mailbox, lease, 
-	        constraints);
-	}
-
-	/** {@inheritDoc} */
-	public MethodConstraints getConstraints() {
-	    return methodConstraints;
-	}
-
-        /* Note that the superclass's hashCode method is OK as is. */
-        /* Note that the superclass's equals method is OK as is. */
-
-	/* Note that the superclass's hashCode method is OK as is. */
-        /**
-         * Returns a proxy trust iterator that is used in
-         * <code>ProxyTrustVerifier</code> to retrieve this object's
-         * trust verifier.
-         */
-        private ProxyTrustIterator getProxyTrustIterator() {
-            return new SingletonProxyTrustIterator(mailbox);
-        }//end getProxyTrustIterator
-
-	/**
-	 * Verifies that the registrationID, lease and mailbox fields are 
-	 * not null, that mailbox implements RemoteMethodControl, and that the 
-	 * mailbox proxy has the appropriate method constraints.
-	 *
-	 * @throws InvalidObjectException if registrationID, lease or mailbox
-	 *         is null, if mailbox does not implement RemoteMethodControl, 
-	 *         or if server has the wrong constraints
-	 */
-	private void readObject(ObjectInputStream s)
-	    throws IOException, ClassNotFoundException
-	{
-            /* Note that basic validation of the fields of this class was
-             * already performed in the readObject() method of this class'
-             * super class.
-             */
-            s.defaultReadObject();
-            /* Verify the server and its constraints */
-            ConstrainableProxyUtil.verifyConsistentConstraints(methodConstraints,
-                                                        mailbox,
-                                                        methodMap1);
-            if( !(lease instanceof ConstrainableLandlordLease) ) {
-                throw new InvalidObjectException
-                                ("Registration.readObject failure - "
-                                 +"lease is not an instance of "
-                                 +"ConstrainableLandlordLease");
-            }//endif
-
-            if( !(listener instanceof ListenerProxy.ConstrainableListenerProxy) ) {
-                throw new InvalidObjectException
-                                ("Registration.readObject failure - "
-                                 +"listener is not an instance of "
-                                 +"ListenerProxy.ConstrainableListenerProxy");
-            }//endif
-
-            /* Verify listener's ID */
-            if(registrationID !=
-	       ((ListenerProxy.ConstrainableListenerProxy)listener).registrationID) 
-            {
-                throw new InvalidObjectException
-                                        ("Registration.readObject "
-                                         +"failure - listener ID "
-                                         +"is not equal to "
-                                         +"proxy ID");
-            }            
-	}
-    }
-}
+/*
+ * 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.river.mercury.proxy;
+
+import java.io.IOException;
+import java.io.InvalidObjectException;
+import java.io.ObjectInputStream;
+import java.io.ObjectStreamException;
+import java.io.Serializable;
+import java.lang.reflect.Method;
+import java.rmi.RemoteException;
+import java.util.Collection;
+
+import javax.security.auth.Subject;
+
+import org.apache.river.landlord.ConstrainableLandlordLease;
+import org.apache.river.proxy.ConstrainableProxyUtil; 
+import org.apache.river.proxy.ThrowThis;
+import net.jini.core.constraint.MethodConstraints;
+import net.jini.core.constraint.RemoteMethodControl;
+import net.jini.id.ReferentUuid;
+import net.jini.id.ReferentUuids;
+import net.jini.id.Uuid;
+import net.jini.security.proxytrust.ProxyTrustIterator;
+import net.jini.security.proxytrust.SingletonProxyTrustIterator;
+import net.jini.security.TrustVerifier;
+
+import net.jini.event.MailboxPullRegistration;
+import net.jini.event.MailboxRegistration;
+import net.jini.event.RemoteEventIterator;
+import net.jini.core.event.RemoteEventListener;
+import net.jini.core.lease.Lease;
+
+/**
+ * The <tt>Registration</tt> class is the client-side proxy
+ * returned to event mailbox clients as the result of the 
+ * registration process. It implements the <tt>MailboxRegistration</tt>
+ * interface and delegates functionality to the mailbox service
+ * where necessary.
+ *
+ * @author Sun Microsystems, Inc.
+ *
+ * @since 1.1
+ */ 
+public class Registration implements MailboxPullRegistration, 
+    Serializable, ReferentUuid 
+{
+
+    private static final long serialVersionUID = 2L;
+
+    /** Unique identifier for this registration */
+    final Uuid registrationID;
+
+    /** Reference to service implementation */
+    final MailboxBackEnd mailbox;
+
+    /** Reference to service provided RemoteEventListener implementation */
+    final ListenerProxy listener;
+
+    /** The service's registration lease */ 
+    final Lease lease;
+ 
+    /**
+     * Creates a mailbox registration proxy, returning an instance 
+     * that implements RemoteMethodControl if the server does too.
+     *
+     * @param server the server proxy
+     * @param id the ID of the lease set
+     * @param lease the lease set's lease
+     */
+    public static Registration create(Uuid id, MailboxBackEnd server, Lease lease) {
+	if (server instanceof RemoteMethodControl) {
+	    return new ConstrainableRegistration(id, server, lease, null);
+	} else {
+	    return new Registration(id, server, lease);
+	}
+    }
+
+    /** Convenience constructor */
+    private Registration(Uuid id, MailboxBackEnd srv, Lease l) {
+        if (id == null || srv == null || l == null)
+            throw new IllegalArgumentException("Cannot accept null arguments");
+        registrationID = id;
+        mailbox = srv;
+        listener = ListenerProxy.create(id, srv);
+        lease = l;
+    }
+
+    // inherit javadoc from supertype
+    public Lease getLease() {
+	return lease;
+    }
+    
+    // inherit javadoc from supertype
+    public RemoteEventListener getListener() {
+	return listener;
+    }
+
+    // inherit javadoc from supertype
+    public void enableDelivery(RemoteEventListener target) 
+	throws RemoteException
+    {
+        // Prevent resubmission of this registration's listener
+	if ((target instanceof ListenerProxy) &&
+	    (listener.equals((ListenerProxy)target))) {
+	    throw new IllegalArgumentException("Cannot resubmit " +
+		"a target that was provided by the EventMailbox service");
+	} else { // OK to make the call, now
+	    try {
+	        mailbox.enableDelivery(registrationID, target);
+	    } catch (ThrowThis tt) { 
+	        tt.throwRemoteException();
+	    }
+	}
+    }
+
+    // inherit javadoc from supertype
+    public void disableDelivery() throws RemoteException {
+	try { 
+            mailbox.disableDelivery(registrationID);
+	} catch (ThrowThis tt) { 
+	    tt.throwRemoteException();
+	}
+    }
+    
+    // inherit javadoc from supertype
+    public RemoteEventIterator getRemoteEvents() 
+	throws RemoteException 
+    {
+        RemoteEventIteratorImpl i = null;
+	try { 
+            RemoteEventIteratorData d = mailbox.getRemoteEvents(registrationID);
+            i = new RemoteEventIteratorImpl(
+                d.uuid, registrationID, mailbox, d.events);
+	} catch (ThrowThis tt) { 
+	    tt.throwRemoteException();
+	}
+	return i;
+    }
+
+    // inherit javadoc from supertype
+    public void addUnknownEvents(Collection unknownEvents)
+	throws RemoteException
+    {
+        //TODO - verify collection contains RemoteEvents
+	try { 
+            mailbox.addUnknownEvents(registrationID, unknownEvents);
+	} catch (ThrowThis tt) { 
+	    tt.throwRemoteException();
+	}
+        
+    }
+    
+    /* From net.jini.id.ReferentUuid */
+    /**
+     * Returns the universally unique identifier that has been assigned to the
+     * resource this proxy represents.
+     *
+     * @return the instance of <code>Uuid</code> that is associated with the
+     *         resource this proxy represents. This method will not return
+     *         <code>null</code>.
+     *
+     * @see net.jini.id.ReferentUuid
+     */
+    public Uuid getReferentUuid() {
+        return registrationID;
+    }
+
+    /** Proxies with the same registrationID have the same hash code. */
+    public int hashCode() {
+        return registrationID.hashCode();
+    }
+
+    /** Proxies with the same registrationID are considered equal. */
+    public boolean equals(Object o) {
+        return ReferentUuids.compare(this,o);
+    }
+
+   /** When an instance of this class is deserialized, this method is
+     *  automatically invoked. This implementation of this method validates
+     *  the state of the deserialized instance.
+     *
+     * @throws <code>InvalidObjectException</code> if the state of the
+     *         deserialized instance of this class is found to be invalid.
+     */
+    private void readObject(ObjectInputStream s)
+                               throws IOException, ClassNotFoundException
+    {
+        s.defaultReadObject();
+        /* Verify server */
+        if(mailbox == null) {
+            throw new InvalidObjectException("Registration.readObject "
+                                             +"failure - mailbox "
+                                             +"field is null");
+        }//endif
+        /* Verify registrationID */
+        if(registrationID == null) {
+            throw new InvalidObjectException
+                                  ("Registration.readObject "
+                                   +"failure - registrationID field is null");
+        }//endif
+        /* Verify regLease */
+        if(lease == null) {
+            throw new InvalidObjectException
+                                        ("Registration.readObject "
+                                         +"failure - lease field is null");
+        }//endif
+        /* Verify listener */
+        if(listener == null) {
+            throw new InvalidObjectException
+                                        ("Registration.readObject "
+                                         +"failure - listener field is null");
+        }//endif
+    }//end readObject
+
+    /** During deserialization of an instance of this class, if it is found
+     *  that the stream contains no data, this method is automatically
+     *  invoked. Because it is expected that the stream should always
+     *  contain data, this implementation of this method simply declares
+     *  that something must be wrong.
+     *
+     * @throws <code>InvalidObjectException</code> to indicate that there
+     *         was no data in the stream during deserialization of an
+     *         instance of this class; declaring that something is wrong.
+     */
+    private void readObjectNoData() throws ObjectStreamException {
+        throw new InvalidObjectException("no data found when attempting to "
+                                         +"deserialize Registration instance");
+    }//end readObjectNoData
+
+    /** A subclass of Registration that implements RemoteMethodControl. */
+    final static class ConstrainableRegistration extends Registration 
+        implements RemoteMethodControl 
+    {
+	private static final long serialVersionUID = 1L;
+
+	// Mappings from client to server methods, 
+	private static final Method[] methodMap1 = {
+	    ProxyUtil.getMethod(MailboxPullRegistration.class,
+	        "getRemoteEvents", new Class[] {}),
+            ProxyUtil.getMethod(MailboxBackEnd.class, 
+	        "getRemoteEvents", new Class[] {Uuid.class}), 
+            // Use the same constraints for getNextBatch as getRemoteEvents
+	    ProxyUtil.getMethod(MailboxPullRegistration.class,
+	        "getRemoteEvents", new Class[] {}),
+            ProxyUtil.getMethod(MailboxBackEnd.class, 
+	        "getNextBatch", new Class[] {
+		    Uuid.class, Uuid.class, long.class, Object.class}), 
+	    ProxyUtil.getMethod(MailboxPullRegistration.class,
+	        "addUnknownEvents", new Class[] {Collection.class}),
+            ProxyUtil.getMethod(MailboxBackEnd.class, 
+	        "addUnknownEvents", new Class[] {Uuid.class, Collection.class}), 
+	    ProxyUtil.getMethod(MailboxRegistration.class,
+	        "enableDelivery", new Class[] {RemoteEventListener.class}),
+	    ProxyUtil.getMethod(MailboxBackEnd.class, 
+	        "enableDelivery", new Class[] {Uuid.class, 
+		RemoteEventListener.class}), 
+	    ProxyUtil.getMethod(MailboxRegistration.class,
+	        "disableDelivery", new Class[] {}),
+	    ProxyUtil.getMethod(MailboxBackEnd.class, 
+	        "disableDelivery", new Class[] {Uuid.class})
+	};
+	/**
+	 * The client constraints placed on this proxy or <code>null</code>.
+	 *
+	 * @serial
+	 */
+	private MethodConstraints methodConstraints;
+
+	/** Creates an instance of this class. */
+	private ConstrainableRegistration(Uuid id, MailboxBackEnd server,
+            Lease lease, MethodConstraints methodConstraints)
+	{
+	    super(id, constrainServer(server, methodConstraints),
+	          lease);
+	    this.methodConstraints = methodConstraints;
+	}
+	
+	// inherit javadoc from supertype
+	public RemoteEventIterator getRemoteEvents(long maxEvents, long timeout) 
+	    throws RemoteException 
+	{ 
+	    //
+	    //TODO - return constrained remote iterator impl
+	    //
+ 	    return super.getRemoteEvents();
+	}
+
+	/**
+	 * Returns a copy of the server proxy with the specified client
+	 * constraints and methods mapping.
+	 */
+	private static MailboxBackEnd constrainServer(
+	    MailboxBackEnd server,
+	    MethodConstraints methodConstraints)
+	{
+	    return (MailboxBackEnd) 
+	        ((RemoteMethodControl)server).setConstraints(
+		    ConstrainableProxyUtil.translateConstraints(
+		        methodConstraints, methodMap1));
+	}
+	/** {@inheritDoc} */
+	public RemoteMethodControl setConstraints(
+	    MethodConstraints constraints)
+	{
+	    return new ConstrainableRegistration(registrationID, mailbox, lease, 
+	        constraints);
+	}
+
+	/** {@inheritDoc} */
+	public MethodConstraints getConstraints() {
+	    return methodConstraints;
+	}
+
+        /* Note that the superclass's hashCode method is OK as is. */
+        /* Note that the superclass's equals method is OK as is. */
+
+	/* Note that the superclass's hashCode method is OK as is. */
+        /**
+         * Returns a proxy trust iterator that is used in
+         * <code>ProxyTrustVerifier</code> to retrieve this object's
+         * trust verifier.
+         */
+        private ProxyTrustIterator getProxyTrustIterator() {
+            return new SingletonProxyTrustIterator(mailbox);
+        }//end getProxyTrustIterator
+
+	/**
+	 * Verifies that the registrationID, lease and mailbox fields are 
+	 * not null, that mailbox implements RemoteMethodControl, and that the 
+	 * mailbox proxy has the appropriate method constraints.
+	 *
+	 * @throws InvalidObjectException if registrationID, lease or mailbox
+	 *         is null, if mailbox does not implement RemoteMethodControl, 
+	 *         or if server has the wrong constraints
+	 */
+	private void readObject(ObjectInputStream s)
+	    throws IOException, ClassNotFoundException
+	{
+            /* Note that basic validation of the fields of this class was
+             * already performed in the readObject() method of this class'
+             * super class.
+             */
+            s.defaultReadObject();
+            /* Verify the server and its constraints */
+            ConstrainableProxyUtil.verifyConsistentConstraints(methodConstraints,
+                                                        mailbox,
+                                                        methodMap1);
+            if( !(lease instanceof ConstrainableLandlordLease) ) {
+                throw new InvalidObjectException
+                                ("Registration.readObject failure - "
+                                 +"lease is not an instance of "
+                                 +"ConstrainableLandlordLease");
+            }//endif
+
+            if( !(listener instanceof ListenerProxy.ConstrainableListenerProxy) ) {
+                throw new InvalidObjectException
+                                ("Registration.readObject failure - "
+                                 +"listener is not an instance of "
+                                 +"ListenerProxy.ConstrainableListenerProxy");
+            }//endif
+
+            /* Verify listener's ID */
+            if(registrationID !=
+	       ((ListenerProxy.ConstrainableListenerProxy)listener).registrationID) 
+            {
+                throw new InvalidObjectException
+                                        ("Registration.readObject "
+                                         +"failure - listener ID "
+                                         +"is not equal to "
+                                         +"proxy ID");
+            }            
+	}
+    }
+}

Modified: river/jtsk/modules/modularize/apache-river/river-services/mercury/mercury-dl/src/main/java/org/apache/river/mercury/proxy/RemoteEventData.java
URL: http://svn.apache.org/viewvc/river/jtsk/modules/modularize/apache-river/river-services/mercury/mercury-dl/src/main/java/org/apache/river/mercury/proxy/RemoteEventData.java?rev=1879521&r1=1879520&r2=1879521&view=diff
==============================================================================
--- river/jtsk/modules/modularize/apache-river/river-services/mercury/mercury-dl/src/main/java/org/apache/river/mercury/proxy/RemoteEventData.java (original)
+++ river/jtsk/modules/modularize/apache-river/river-services/mercury/mercury-dl/src/main/java/org/apache/river/mercury/proxy/RemoteEventData.java Sun Jul  5 11:41:39 2020
@@ -1,114 +1,114 @@
-/*
- * 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.river.mercury;
-
-import org.apache.river.proxy.MarshalledWrapper;
-
-import java.io.InvalidObjectException;
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.Serializable;
-import java.util.Collection;
-
-import net.jini.core.event.RemoteEvent;
-import net.jini.id.Uuid;
-import net.jini.io.MarshalledInstance;
-
-/**
- * Simple struct to hold a <code>RemoteEvent</code> and its associated 
- * <code>Object</code> (cookie) obtained from an <code>EventLog</code>.
- */
-class RemoteEventData implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * <code>MarshalledObject</code> that holds desired
-     * <code>RemoteEvent</code>. Wrapping the remote event
-     * permits deserialization to occur on demand on the 
-     * client-side.
-     */
-    private MarshalledInstance mi;
-
-    /** Cookie associated with the <code>RemoteEvent</code> */
-    private final Object cookie;
-    
-    /** 
-     * <code>true</code> if the last time this object was unmarshalled 
-     * integrity was being enforced, <code>false</code> otherwise.
-     */
-    private transient boolean integrity;
-
-    /**
-     * Creates a new RemoteEventData instance.
-     * @param re value of <code>re</code> field.
-     * @param cookie value of <code>cookie</code> field.
-     */
-    RemoteEventData(RemoteEvent re, Object cookie) {
-        try {
-            mi = (re==null)?null:new MarshalledInstance(re);
-        } catch (IOException ioe) {
-            mi = null;
-        }
-	this.cookie = cookie;
-    }
-    
-    public RemoteEvent getRemoteEvent() throws ClassNotFoundException {
-        if (mi == null) 
-            throw new ClassNotFoundException(
-                "Failed to create server-side remote event");
-        RemoteEvent re = null;
-        try {
-            re = (RemoteEvent)mi.get(integrity);
-        } catch (IOException ioe) {
-            throw new ClassNotFoundException(
-                "Failed to create client-side remote event", ioe);
-        }
-        return re;
-    }
-    
-    public Object getCookie() {
-        return cookie;
-    }
-    
-    /**
-     * Use <code>readObject</code> method to capture whether or
-     * not integrity was being enforced when this object was
-     * unmarshalled, and to perform basic integrity checks.
-     */
-    private void readObject(ObjectInputStream in)
-	throws IOException, ClassNotFoundException
-    {
-	in.defaultReadObject();
-
-	if (cookie == null) 
-	    throw new InvalidObjectException("null cookie");
-
-	// get value for integrity flag
-	integrity = MarshalledWrapper.integrityEnforced(in);
-    }
-    
-    /** 
-     * We should always have data in the stream, if this method
-     * gets called there is something wrong.
-     */
-    private void readObjectNoData() throws InvalidObjectException {
-	throw new 
-	    InvalidObjectException("RemoteEventData should always have data");
-    }
-
-}
+/*
+ * 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.river.mercury.proxy;
+
+import org.apache.river.proxy.MarshalledWrapper;
+
+import java.io.InvalidObjectException;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.Serializable;
+import java.util.Collection;
+
+import net.jini.core.event.RemoteEvent;
+import net.jini.id.Uuid;
+import net.jini.io.MarshalledInstance;
+
+/**
+ * Simple struct to hold a <code>RemoteEvent</code> and its associated 
+ * <code>Object</code> (cookie) obtained from an <code>EventLog</code>.
+ */
+public class RemoteEventData implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * <code>MarshalledObject</code> that holds desired
+     * <code>RemoteEvent</code>. Wrapping the remote event
+     * permits deserialization to occur on demand on the 
+     * client-side.
+     */
+    private MarshalledInstance mi;
+
+    /** Cookie associated with the <code>RemoteEvent</code> */
+    private final Object cookie;
+    
+    /** 
+     * <code>true</code> if the last time this object was unmarshalled 
+     * integrity was being enforced, <code>false</code> otherwise.
+     */
+    private transient boolean integrity;
+
+    /**
+     * Creates a new RemoteEventData instance.
+     * @param re value of <code>re</code> field.
+     * @param cookie value of <code>cookie</code> field.
+     */
+    public RemoteEventData(RemoteEvent re, Object cookie) {
+        try {
+            mi = (re==null)?null:new MarshalledInstance(re);
+        } catch (IOException ioe) {
+            mi = null;
+        }
+	this.cookie = cookie;
+    }
+    
+    public RemoteEvent getRemoteEvent() throws ClassNotFoundException {
+        if (mi == null) 
+            throw new ClassNotFoundException(
+                "Failed to create server-side remote event");
+        RemoteEvent re = null;
+        try {
+            re = (RemoteEvent)mi.get(integrity);
+        } catch (IOException ioe) {
+            throw new ClassNotFoundException(
+                "Failed to create client-side remote event", ioe);
+        }
+        return re;
+    }
+    
+    public Object getCookie() {
+        return cookie;
+    }
+    
+    /**
+     * Use <code>readObject</code> method to capture whether or
+     * not integrity was being enforced when this object was
+     * unmarshalled, and to perform basic integrity checks.
+     */
+    private void readObject(ObjectInputStream in)
+	throws IOException, ClassNotFoundException
+    {
+	in.defaultReadObject();
+
+	if (cookie == null) 
+	    throw new InvalidObjectException("null cookie");
+
+	// get value for integrity flag
+	integrity = MarshalledWrapper.integrityEnforced(in);
+    }
+    
+    /** 
+     * We should always have data in the stream, if this method
+     * gets called there is something wrong.
+     */
+    private void readObjectNoData() throws InvalidObjectException {
+	throw new 
+	    InvalidObjectException("RemoteEventData should always have data");
+    }
+
+}