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 2010/05/11 14:33:29 UTC

svn commit: r943101 - in /incubator/river/jtsk/trunk/src/org/apache/river/api: ./ security/ services/ services/lease/ throwable/ throwable/lease/ throwable/rmi/ util/

Author: peter_firmstone
Date: Tue May 11 12:33:28 2010
New Revision: 943101

URL: http://svn.apache.org/viewvc?rev=943101&view=rev
Log:
River-323 Significant refactoring and layout changes.

This will break some tests causing a failled Hudson build, however I think it best to get the code out there, so I can get some assistance.

By default the qa tests now utilise the ConcurrentDynamicPolicyProvider and DynamicPolicyProvider uses a pluggable SPI.

Added:
    incubator/river/jtsk/trunk/src/org/apache/river/api/
    incubator/river/jtsk/trunk/src/org/apache/river/api/security/
    incubator/river/jtsk/trunk/src/org/apache/river/api/security/RevokePermission.java
      - copied, changed from r933907, incubator/river/jtsk/trunk/src/org/apache/river/security/RevokePermission.java
    incubator/river/jtsk/trunk/src/org/apache/river/api/security/RevokeablePolicy.java
      - copied, changed from r933907, incubator/river/jtsk/trunk/src/org/apache/river/security/policy/spi/RevokeablePolicy.java
    incubator/river/jtsk/trunk/src/org/apache/river/api/services/
    incubator/river/jtsk/trunk/src/org/apache/river/api/services/lease/
    incubator/river/jtsk/trunk/src/org/apache/river/api/services/lease/LeaseRenewalService.java   (with props)
    incubator/river/jtsk/trunk/src/org/apache/river/api/services/lease/LeaseRenewalSet.java   (with props)
    incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/
    incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/lease/
    incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/lease/LeaseUnmarshalException.java   (with props)
    incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/
    incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/ConnectIOException.java
      - copied, changed from r940002, incubator/river/jtsk/trunk/src/net/jini/exception/rmi/ConnectIOException.java
    incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/ExportException.java
      - copied, changed from r940002, incubator/river/jtsk/trunk/src/net/jini/exception/rmi/ExportException.java
    incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/MarshalException.java
      - copied, changed from r940002, incubator/river/jtsk/trunk/src/net/jini/exception/rmi/MarshalException.java
    incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/NoSuchObjectException.java
      - copied, changed from r940002, incubator/river/jtsk/trunk/src/net/jini/exception/rmi/NoSuchObjectException.java
    incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/ServerError.java
      - copied, changed from r940002, incubator/river/jtsk/trunk/src/net/jini/exception/rmi/ServerError.java
    incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/ServerException.java
      - copied, changed from r940002, incubator/river/jtsk/trunk/src/net/jini/exception/rmi/ServerException.java
    incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/ServerNotActiveException.java
      - copied, changed from r940002, incubator/river/jtsk/trunk/src/net/jini/exception/rmi/ServerNotActiveException.java
    incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/UnknownHostException.java
      - copied, changed from r940002, incubator/river/jtsk/trunk/src/net/jini/exception/rmi/UnknownHostException.java
    incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/UnmarshalException.java
      - copied, changed from r940002, incubator/river/jtsk/trunk/src/net/jini/exception/rmi/UnmarshalException.java
    incubator/river/jtsk/trunk/src/org/apache/river/api/util/
    incubator/river/jtsk/trunk/src/org/apache/river/api/util/Facade.java
      - copied, changed from r937157, incubator/river/jtsk/trunk/src/net/jini/discovery/Facade.java
    incubator/river/jtsk/trunk/src/org/apache/river/api/util/ResultStream.java
      - copied, changed from r939155, incubator/river/jtsk/trunk/src/net/jini/core/lookup/ResultStream.java

Copied: incubator/river/jtsk/trunk/src/org/apache/river/api/security/RevokePermission.java (from r933907, incubator/river/jtsk/trunk/src/org/apache/river/security/RevokePermission.java)
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/src/org/apache/river/api/security/RevokePermission.java?p2=incubator/river/jtsk/trunk/src/org/apache/river/api/security/RevokePermission.java&p1=incubator/river/jtsk/trunk/src/org/apache/river/security/RevokePermission.java&r1=933907&r2=943101&rev=943101&view=diff
==============================================================================
--- incubator/river/jtsk/trunk/src/org/apache/river/security/RevokePermission.java (original)
+++ incubator/river/jtsk/trunk/src/org/apache/river/api/security/RevokePermission.java Tue May 11 12:33:28 2010
@@ -3,15 +3,17 @@
  * and open the template in the editor.
  */
 
-package org.apache.river.security;
+package org.apache.river.api.security;
 
 import java.security.Permission;
 
 /**
  * RevokePermission allows for a permission to be granted at runtime or
- * revoked.  A Thread invoking this Permission must have the permission that
- * is to be granted.  A RevokePermission cannot grant itself a permission
- * it doesn't already have.
+ * revoked.  The revoker thread needs no permission other than a this.  
+ * A RevokePermission cannot grant itself a permission it doesn't already have.
+ * 
+ * A domain with revoke permission can not revoke a RevokePermission
+ * unless it has been 
  * 
  * It should cache all revokes, such that a refresh operation, doesn't add
  * any revoked permissions.  I'm not sure about grant's though, should they be
@@ -19,41 +21,34 @@ import java.security.Permission;
  * -- seems logical.
  * 
  * 
- * @author peter
+ * @author Peter Firmstone
  */
 public class RevokePermission extends Permission {
     private static final long serialVersionUID = 1L;
-    private final String actions;
     
-    public RevokePermission(String name){
-        super(name);
-        actions = "";
-    }
-
-    public RevokePermission(String name, String actions){
-        super(name);
-        this.actions = actions;
+    public RevokePermission(){
+        super("");
     }
     
     @Override
     public boolean implies(Permission permission) {
-        throw new UnsupportedOperationException("Not supported yet.");
+        if (permission instanceof RevokePermission) return true;
+        return false;
     }
 
     @Override
     public boolean equals(Object obj) {
-        throw new UnsupportedOperationException("Not supported yet.");
+        if (obj instanceof RevokePermission) return true;
+        return false;
     }
 
     @Override
     public int hashCode() {
-        throw new UnsupportedOperationException("Not supported yet.");
+        return RevokePermission.class.hashCode();
     }
 
     @Override
     public String getActions() {
-        throw new UnsupportedOperationException("Not supported yet.");
+        return "";
     }
-    
-
 }

Copied: incubator/river/jtsk/trunk/src/org/apache/river/api/security/RevokeablePolicy.java (from r933907, incubator/river/jtsk/trunk/src/org/apache/river/security/policy/spi/RevokeablePolicy.java)
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/src/org/apache/river/api/security/RevokeablePolicy.java?p2=incubator/river/jtsk/trunk/src/org/apache/river/api/security/RevokeablePolicy.java&p1=incubator/river/jtsk/trunk/src/org/apache/river/security/policy/spi/RevokeablePolicy.java&r1=933907&r2=943101&rev=943101&view=diff
==============================================================================
--- incubator/river/jtsk/trunk/src/org/apache/river/security/policy/spi/RevokeablePolicy.java (original)
+++ incubator/river/jtsk/trunk/src/org/apache/river/api/security/RevokeablePolicy.java Tue May 11 12:33:28 2010
@@ -3,7 +3,7 @@
  * and open the template in the editor.
  */
 
-package org.apache.river.security.policy.spi;
+package org.apache.river.api.security;
 
 import java.security.Permission;
 import java.security.Principal;

Added: incubator/river/jtsk/trunk/src/org/apache/river/api/services/lease/LeaseRenewalService.java
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/src/org/apache/river/api/services/lease/LeaseRenewalService.java?rev=943101&view=auto
==============================================================================
--- incubator/river/jtsk/trunk/src/org/apache/river/api/services/lease/LeaseRenewalService.java (added)
+++ incubator/river/jtsk/trunk/src/org/apache/river/api/services/lease/LeaseRenewalService.java Tue May 11 12:33:28 2010
@@ -0,0 +1,57 @@
+/*
+ * 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.api.services.lease;
+
+import java.rmi.RemoteException;
+
+/**
+ * Interface to the lease renewal service. The interface is not a remote
+ * interface; each implementation of the renewal service exports proxy
+ * objects that implement the <code>LeaseRenewalService</code> interface
+ * that use an implementation-specific protocol to communicate with the
+ * actual remote server. All of the proxy methods obey normal RMI remote
+ * interface semantics. Two proxy objects are equal if they are proxies
+ * for the same renewal service. Every method invocation (on both a
+ * <code>LeaseRenewalService</code> and any <code>LeaseRenewalSet</code>
+ * it has created) is atomic with respect to other invocations.
+ * 
+ * @author Sun Microsystems, Inc.
+ * @see LeaseRenewalSet 
+ */
+
+public interface LeaseRenewalService {
+    /**
+     * Create a new <code>LeaseRenewalSet</code> that the client can
+     * populate with leases to be renewed. The initial duration of the
+     * lease granted on this set will be less than or equal to
+     * <code>leaseDuration</code>.
+     * <p>
+     * Two calls to this method should never return objects that are
+     * equal.
+     *
+     * @param leaseDuration requested lease duration in milliseconds
+     * @return a new <code>LeaseRenewalSet</code> in the renewal service
+     * @throws IllegalArgumentException if <code>leaseDuration</code> is
+     *	       not positive, <code>Lease.ANY</code>, or
+     *	       <code>Lease.FOREVER</code>
+     * @throws RemoteException if a communication-related exception
+     *	       occurs
+     */
+    public LeaseRenewalSet createLeaseRenewalSet(long leaseDuration) 
+	throws RemoteException;
+}

Propchange: incubator/river/jtsk/trunk/src/org/apache/river/api/services/lease/LeaseRenewalService.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/river/jtsk/trunk/src/org/apache/river/api/services/lease/LeaseRenewalSet.java
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/src/org/apache/river/api/services/lease/LeaseRenewalSet.java?rev=943101&view=auto
==============================================================================
--- incubator/river/jtsk/trunk/src/org/apache/river/api/services/lease/LeaseRenewalSet.java (added)
+++ incubator/river/jtsk/trunk/src/org/apache/river/api/services/lease/LeaseRenewalSet.java Tue May 11 12:33:28 2010
@@ -0,0 +1,478 @@
+/*
+ * 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.api.services.lease;
+
+//import java.rmi.MarshalledObject;
+import java.rmi.RemoteException;
+import net.jini.core.event.EventRegistration;
+import net.jini.core.event.RemoteEventListener;
+import net.jini.core.lease.Lease;
+import net.jini.io.MarshalledInstance;
+import org.apache.river.api.throwable.lease.LeaseUnmarshalException;
+
+/**
+ * A collection of leases being managed by a lease renewal service.
+ * <p>
+ * Clients of the renewal service organize the leases they wish to
+ * have renewed into <em>lease renewal sets</em> (or <em>sets</em>,
+ * for short). These sets are represented by objects implementing this
+ * interface. The
+ * <code>LeaseRenewalService.createLeaseRenewalSet</code> method is
+ * provided to create sets. Sets are populated by methods on the sets
+ * themselves. Two leases in the same set need not be granted by the
+ * same service or have the same expiration time; in addition, they
+ * can be added or removed from the set independently.
+ * <p>
+ * This interface is not a remote interface; each implementation of the
+ * renewal service exports proxy objects that implement the
+ * <code>LeaseRenewalSet</code> interface that use an
+ * implementation-specific protocol to communicate with the actual
+ * remote server. All of the proxy methods obey normal RMI remote
+ * interface semantics except where explicitly noted. Two proxy objects
+ * are equal if they are proxies for the same set created by the same
+ * renewal service. Every method invocation (on both a
+ * <code>LeaseRenewalService</code> and all the
+ * <code>LeaseRenewalSet</code> instances created by that server) is
+ * atomic with respect to other invocations.
+ * <p>
+ * A number of the methods in this class throw
+ * <code>RemoteException</code>, each of these may throw the
+ * <code>java.rmi.NoSuchObjectException</code> subclass. If a client
+ * receives a <code>NoSuchObjectException</code> when calling a method
+ * on a renewal set, the client can infer that the set has been
+ * destroyed; however, it should not infer that the renewal service
+ * has been destroyed.
+ * <p>
+ * The term <em>client lease</em> is used to refer to a lease that has
+ * been placed into a renewal set. Client leases are distinct from the
+ * leases that the renewal service grants on renewal sets it has
+ * created.
+ * <p>
+ * Each client lease has two expiration related times associated with
+ * it: the <em>desired expiration</em> time for the lease, and the
+ * <em>actual expiration</em> time granted when the lease was created
+ * or last renewed. The desired expiration represents when the client
+ * would like the lease to expire. The actual expiration represents
+ * when the lease is going to expire if it is not renewed. Both time
+ * values are absolute times, not relative time durations. When a
+ * client lease's desired expiration arrives, the lease will be
+ * removed from the set without further client intervention.
+ * <p>
+ * Each client lease also has two other associated attributes: a
+ * desired <em>renewal duration</em> and a <em>remaining desired
+ * duration</em>. The desired renewal duration is specified by the
+ * client (directly or indirectly) when the lease is added to the
+ * set. This duration must normally be a positive number, however, it
+ * may be <code>Lease.ANY</code> if the lease's desired expiration is
+ * <code>Lease.FOREVER</code>. The remaining desired duration is
+ * always the desired expiration less the current time.
+ * <p>
+ * Each time a client lease is renewed, the renewal service will ask
+ * for an extension equal to the lease's renewal duration if the
+ * renewal duration is:
+ * <ul>
+ *     <li> Lease.ANY, or 
+ *     <li> less than the remaining desired duration, 
+ * </ul>
+ * 
+ * otherwise, it will ask for an extension equal to the lease's
+ * remaining desired duration.
+ * <p>
+ * If a client lease's actual expiration is later than its desired
+ * expiration, the renewal service will not renew the lease; the lease
+ * will remain in the set until its desired expiration is reached, the
+ * set is destroyed, or it is removed by the client.
+ * <p>
+ * Each set is leased from the renewal service. If the lease on a set
+ * expires or is cancelled, the renewal service will destroy the set
+ * and take no further action with regard to the client leases in the
+ * set. Each lease renewal set has associated with it an expiration
+ * warning event that occurs at a client-specified time before the
+ * lease on the set expires. Clients can register for warning events
+ * using methods provided by the set. A registration for warning
+ * events does not have its own lease, but instead is covered by the
+ * same lease under which the set was granted.
+ * <p>
+ * The term <em>definite exception</em> is used to refer to an
+ * exception that could be thrown by an operation on a client lease
+ * (such as a remote method call) that would be indicative of a
+ * permanent failure of the client lease. For purposes of this
+ * document, all bad object exceptions, bad invocation exceptions, and
+ * <code>LeaseException</code>s are considered to be definite
+ * exceptions.
+ * <p>
+ * Each lease renewal set has associated with it a renewal failure
+ * event that will occur in either of two cases: if any client lease
+ * in the set reaches its actual expiration before its desired
+ * expiration is reached, or if the renewal service attempts to renew
+ * a client lease and gets a definite exception. Clients can register
+ * for failure events using methods provided by the set. A
+ * registration for failure event does not have its own lease, but
+ * instead is covered by the same lease under which the set was
+ * granted.
+ * <p>
+ * Once placed in a set, a client lease will stay there until one or
+ * more of the following occurs:
+ * <ul>
+ *     <li> The lease on the set itself expires or is cancelled,
+ *          causing destruction of the set
+ *     <li> The client lease is removed by the client
+ *     <li> The client lease's actual or desired expiration is reached
+ *     <li> A renewal attempt on the client lease results in a
+ *          definite exception
+ * </ul>
+ * <p>
+ * Each client lease in a set will be renewed as long as it is in the
+ * set. If a renewal call throws an indefinite exception, the renewal
+ * service should retry the lease renewal until the lease would
+ * otherwise be removed from the set. The renewal service will never
+ * cancel a client lease. The preferred method of cancelling a client
+ * lease is for the client to first remove the lease from the set and
+ * then call cancel on it. It is also permissible for the client to
+ * cancel the lease without first removing the lease from the set,
+ * although this is likely to result in additional network traffic.
+ * <p>
+ * Client leases get returned to clients in a number of ways (via
+ * <code>remove</code> and <code>getLeases</code> calls, as components
+ * of events, etc.). In general, they should have their serial format
+ * set to <code>Lease.DURATION</code> before being transferred to the
+ * client's virtual machine. In some exceptional circumstances, this
+ * may not be possible (for example, the client lease was recovered
+ * from persistent storage and could not be deserialized in the
+ * server's virtual machine). In these cases, it is acceptable to
+ * transfer the lease to the client using the
+ * <code>Lease.ABSOLUTE</code> serial format.
+ * <p>
+ * Whenever a client lease gets returned to a client, its actual
+ * expiration should reflect either:
+ * <ul>
+ *     <li> The result of the last successful renewal call that the
+ *          renewal service made or
+ *     <li> The expiration time the lease originally had when it was
+ *          added to the set, if the renewal service has not yet
+ *          successfully renewed the lease
+ * </ul>
+ * 
+ * @author Sun Microsystems, Inc.
+ * @see LeaseRenewalService
+ */
+
+public interface LeaseRenewalSet {
+    /**
+     * The event id for all <code>RenewalFailureEvent</code> objects.
+     *
+     * @see RenewalFailureEvent
+     */
+    final static public long RENEWAL_FAILURE_EVENT_ID = 0;
+
+    /**
+     * The event id for all <code>ExpirationWarningEvent</code> objects.
+     *
+     * @see ExpirationWarningEvent
+     */
+    final static public long EXPIRATION_WARNING_EVENT_ID = 1;
+
+    /**
+     * Include a client lease in the set for a specified duration and
+     * with a specified renewal duration.
+     * <p>
+     * The <code>leaseToRenew</code> argument specifies the lease to be
+     * added to the set. An <code>IllegalArgumentException</code> must
+     * be thrown if the lease was granted by the renewal service
+     * itself. If <code>leaseToRenew</code> is <code>null</code>, a
+     * <code>NullPointerException</code> must be thrown.
+     * <p>
+     * The <code>desiredDuration</code> argument is the number of
+     * milliseconds the client would like the lease to remain in the
+     * set. It is used to calculate the lease's initial desired
+     * expiration by adding <code>desiredDuration</code> to the current
+     * time (as viewed by the service). If this causes an overflow, a
+     * desired expiration of <code>Long.MAX_VALUE</code> will be
+     * used. Unlike a lease duration, the desired duration is
+     * unilaterally specified by the client, not negotiated between the
+     * client and the service. Note, a negative value for
+     * <code>desiredDuration</code> (including <code>Lease.ANY</code>)
+     * will result in a desired expiration that is in the past, causing
+     * <code>leaseToRenew</code> to be dropped from the set; this action
+     * will neither result in an exception or an event.
+     * <p>
+     * If the actual expiration time of <code>leaseToRenew</code> is
+     * less than the current time (as viewed by the renewal service) and
+     * the current time is less than the desired expiration time for
+     * <code>leaseToRenew</code>, the method will return
+     * normally. However, <code>leaseToRenew</code> will be dropped from
+     * the set and a renewal failure event will be generated.
+     * <p>
+     * The <code>renewDuration</code> is the initial renewal duration to
+     * associate with <code>leaseToRenew</code> (in milliseconds). If
+     * <code>desiredDuration</code> is exactly
+     * <code>Long.MAX_VALUE</code>, the <code>renewDuration</code> may
+     * be any positive number or <code>Lease.ANY</code>; otherwise it
+     * must be a positive number. If these requirements are not met, the
+     * renewal service must throw an
+     * <code>IllegalArgumentException</code>.
+     * <p>
+     * Calling this method with a lease that is equivalent to a client
+     * lease already in the set will associate the existing client lease
+     * in the set with the new desired duration and renew duration. The
+     * client lease is not replaced because it is more likely that the
+     * renewal service, rather than the client, has an up-to-date lease
+     * expiration. The service is more likely to have an up-to-date
+     * expiration because the client should not be renewing a lease that
+     * it has passed to a lease renewal service unless the lease is
+     * removed first. These semantics also allow <code>renewFor</code>
+     * to be used in an idempotent fashion.
+     *
+     * @param leaseToRenew the lease to be added to the renewal set
+     * @param desiredDuration the maximum length of time in milliseconds
+     *	      the <code>leaseToRenew</code> should remain in the set, or
+     *	      <code>Lease.FOREVER</code> which implies there is no
+     *	      pre-specified time when the lease should be removed from
+     *	      the set
+     * @param renewDuration the lease duration to request when renewing
+     *	      the lease, unless <code>renewDuration</code> is greater
+     *	      than the remainder of the <code>desiredDuration</code>
+     * @throws IllegalArgumentException if <code>desiredDuration</code>
+     *	       is <code>Lease.FOREVER</code>, <code>renewDuration</code>
+     *	       is not a positive value, <code>Lease.FOREVER</code>, or
+     *	       <code>Lease.ANY</code>. If <code>desiredDuration</code>
+     *	       is not <code>Lease.FOREVER</code>,
+     *	       <code>IllegalArgumentException</code> will be thrown if
+     *	       <code>renewDuration</code> is not a positive value or
+     *	       <code>Lease.ANY</code>. <code>IllegalArgumentException</code>
+     *	       will also be thrown if <code>leaseToRenew</code> 
+     *	       was granted by this renewal service.
+     * @throws NullPointerException if <code>leaseToRenew</code> is
+     *	       <code>null</code>
+     * @throws RemoteException if a communication-related exception
+     *	       occurs
+     */
+    public void renewFor(Lease leaseToRenew, long desiredDuration,
+			 long  renewDuration)
+	throws RemoteException;
+
+    /**
+     * Include a client lease in the set for a specified duration.
+     * <p>
+     * Calling this method is equivalent to making the following call 
+     * on this set:
+     *
+     * <pre>
+     *     renewFor(leaseToRenew, desiredDuration, Lease.FOREVER)
+     * </pre>
+     *
+     * @param leaseToRenew the lease to be added to the renewal set
+     * @param desiredDuration the maximum length of time in milliseconds
+     *	      the <code>leaseToRenew</code> should remain in the set, or
+     *	      <code>Lease.FOREVER</code> which implies there is no
+     *	      pre-specified time when the lease should be removed from
+     *	      the set
+     * @throws IllegalArgumentException if <code>leaseToRenew</code> 
+     *	       was granted by this renewal service
+     * @throws NullPointerException if <code>leaseToRenew</code> is
+     *	       <code>null</code>
+     * @throws RemoteException if a communication-related exception
+     *	       occurs
+     */
+    public void renewFor(Lease leaseToRenew, long desiredDuration)
+	throws RemoteException;
+
+    /**
+     * Removes the specified lease from set. If the lease is currently
+     * in the set it will be returned, otherwise <code>null</code> will
+     * be returned. <code>leaseToRemove</code> will not be 
+     * canceled by this call.
+     *
+     * @param leaseToRemove lease to be removed from the set
+     * @return the removed lease if it was in the set or
+     *	       <code>null</code> if it was not
+     * @throws NullPointerException if <code>leaseToRemove</code> is
+     *	       <code>null</code>
+     * @throws RemoteException if a communication-related exception
+     *	       occurs
+     */
+    public Lease remove(Lease leaseToRemove) 
+	throws RemoteException;
+    
+    /**
+     * Returns all the leases currently in the set. 
+     *
+     * @return the leases in the set. Return a zero length array if
+     *	       there are not leases currently in the set.
+     * @throws LeaseUnmarshalException if one or more of the leases can
+     *	       not be unmarshalled. The throwing of a
+     *	       <code>LeaseUnmarshalException</code> represents a,
+     *	       possibly transient, failure in the ability to unmarshal
+     *	       one or more client leases in the set, it does not
+     *	       necessarily imply anything about the state of the renewal
+     *	       service or the set themselves.
+     * @throws RemoteException if a communication-related exception
+     *	       occurs
+     */
+    public Lease[] getLeases() throws LeaseUnmarshalException, RemoteException;
+
+    /**
+     * Register for the expiration warning event associated with this
+     * set.
+     * <p>
+     * This method allows the client to register for notification of
+     * the approaching expiration of the set's lease. The
+     * <code>listener</code> argument specifies what listener should
+     * be notified when the lease is about to expire. The
+     * <code>minWarning</code> argument specifies a minimum number of
+     * milliseconds before lease expiration that the first event
+     * delivery attempt should be made by the service. The service may
+     * also make subsequent delivery attempts if the first and any
+     * subsequent attempts have been indeterminate. The
+     * <code>minWarning</code> argument must be zero or a positive
+     * number; if it is not, an <code>IllegalArgumentException</code>
+     * must be thrown. If the current expiration of the set's lease is
+     * less than <code>minWarning</code> milliseconds away, the event
+     * will occur immediately (though it will take time to propagate
+     * to the listener).
+     * <p>
+     * The <code>handback</code> argument to this method specifies an
+     * object that will be part of the expiration warning event
+     * notification. This mechanism is detailed in the Jini
+     * Distributed Event Specification.
+     * <p>
+     * This method returns the event registration for this event. The
+     * <code>Lease</code> object associated with the registration will
+     * be equivalent (in the sense of <code>equals</code>) to the
+     * <code>Lease</code> on the renewal set. Because the event
+     * registration shares a lease with the set, clients that want to
+     * just remove their expiration warning registration without
+     * destroying the set should use the
+     * <code>clearExpirationWarningListener</code> method instead of
+     * cancelling the registration's lease. The registration's event
+     * ID will be
+     * <code>LeaseRenewalSet.EXPIRATION_WARNING_EVENT_ID</code>. The
+     * source of the registration will be the set. The method must
+     * throw a <code>NullPointerException</code> if the
+     * <code>listener</code> argument is <code>null</code>. If an
+     * event handler has already been specified for this event the
+     * current registration is replaced with the new one. Because both
+     * registrations are for the same kind of event, the events sent
+     * to the new registration must be in the same sequence as the
+     * events sent to the old registration.
+     *
+     * @param listener the listener to be notified when this event
+     *	      occurs
+     * @param minWarning how long before the lease on the set expires
+     *	      should the event be sent
+     * @param handback an object to be handed back to the listener when
+     *	      the warning event occurs
+     * @return an <code>EventRegistration</code> describing the event
+     *	       registration
+     * @throws IllegalArgumentException if <code>minWarning</code> is
+     *	       negative
+     * @throws NullPointerException if <code>listener</code> is
+     *	       <code>null</code>
+     * @throws RemoteException if a communication-related exception
+     *	       occurs
+     */
+    public EventRegistration setExpirationWarningListener(
+	                         RemoteEventListener listener, 
+				 long                minWarning, 
+				 MarshalledInstance    handback)
+	throws RemoteException;
+
+    /**
+     * Remove the listener currently registered for expiration warning
+     * events. It is safe to call this method even if no listener is
+     * currently registered.
+     *
+     * @throws RemoteException if a communication-related exception
+     *	       occurs
+     */
+    public void clearExpirationWarningListener()
+	throws RemoteException;
+
+    /**
+     * Register for the renewal failure event associated with this set.
+     * <p>    
+     * This method allows the client to register for the event
+     * associated with the failure to renew a client lease in the
+     * set. These events are generated when a client lease expires
+     * while it is still in the set, or when the service attempts to
+     * renew a client lease and gets a definite exception. The
+     * listener argument specifies the listener to be notified if a
+     * client lease could not be renewed.
+     * <p>
+     * The <code>handback</code> argument specifies an object that
+     * will be part of the renewal failure event notification. This
+     * mechanism is detailed in the Jini Distributed Event
+     * Specification.
+     * <p>
+     * This method returns the event registration for this event. The
+     * <code>Lease</code> object associated with the registration will
+     * be equivalent (in the sense of <code>equals</code>) to the
+     * <code>Lease</code> on the renewal set. Because the event
+     * registration shares a lease with the set, clients that want to
+     * just remove their expiration warning registration without
+     * destroying the set should use the
+     * <code>clearRenewalFailureListener</code> method, instead of
+     * cancelling the registration's lease. The registration's event
+     * ID will be
+     * <code>LeaseRenewalSet.RENEWAL_FAILURE_EVENT_ID</code>. The
+     * source of the registration will be the set. The method must
+     * throw <code>NullPointerException</code> if the
+     * <code>listener</code> argument is <code>null</code>. If an
+     * event handler has already been specified for this event the
+     * current registration is replaced with the new one. The returned
+     * event registration must have the same event ID as the replaced
+     * registration. Because both registrations are for the same kind
+     * of event, the events sent to the new registration must be in
+     * the same sequence as the events sent to the old registration.
+     *
+     * @param listener the listener to be notified when this event
+     *	      occurs
+     * @param handback an object to be handed back to the listener when
+     *	      the warning event occurs
+     * @return an <code>EventRegistration</code> describing the event
+     *	      registration
+     * @throws NullPointerException if <code>listener</code> is
+     *	       <code>null</code>
+     * @throws RemoteException if a communication-related exception
+     *	       occurs
+     */
+    public EventRegistration setRenewalFailureListener(
+				 RemoteEventListener listener, 
+				 MarshalledInstance handback)
+	throws RemoteException;
+
+    /**
+     * Remove the listener currently registered for renewal failure
+     * events. It is safe to call this method even if no listener is
+     * currently registered.
+     *
+     * @throws RemoteException if a communication-related exception
+     *	       occurs
+     */
+    public void clearRenewalFailureListener()
+	throws RemoteException;
+
+    /**
+     * Returns the lease that controls the lifetime of this set. Can
+     * be used to extend or end the sets lifetime. Note that this method
+     * does not make a remote call.
+     *
+     * @return the lease that controls the lifetime of this set
+     */
+    public Lease getRenewalSetLease();
+}

Propchange: incubator/river/jtsk/trunk/src/org/apache/river/api/services/lease/LeaseRenewalSet.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/lease/LeaseUnmarshalException.java
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/lease/LeaseUnmarshalException.java?rev=943101&view=auto
==============================================================================
--- incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/lease/LeaseUnmarshalException.java (added)
+++ incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/lease/LeaseUnmarshalException.java Tue May 11 12:33:28 2010
@@ -0,0 +1,266 @@
+/*
+ * 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.api.throwable.lease;
+
+//import java.rmi.MarshalledObject;
+import net.jini.core.lease.Lease;
+import net.jini.io.MarshalledInstance;
+
+/**
+ * Exception thrown when a lease renewal set can't unmarshal one or more
+ * leases being returned by a <code>getLeases</code> call.
+ * <p>
+ * When unmarshalling an instance of <code>MarshalledObject</code>, one
+ * of the following checked exceptions is possible: an
+ * <code>IOException</code> can occur while deserializing the object
+ * from its internal representation; and a
+ * <code>ClassNotFoundException</code> can occur if, while deserializing
+ * the object from its internal representation, either the class file of
+ * the object cannot be found, or the class file of either an interface
+ * or a class referenced by the object being deserialized cannot be
+ * found. Typically, a <code>ClassNotFoundException</code> occurs when
+ * the codebase from which to retrieve the needed class file is not
+ * currently available.
+ * <p>
+ * This class provides a mechanism that clients of the lease renewal
+ * service may use for efficient handling of the exceptions that may
+ * occur when unmarshalling elements of a set of marshalled
+ * <code>Lease</code> objects. When elements in such a set are
+ * unmarshalled, the <code>LeaseUnmarshalException</code> class may be
+ * used to collect and report pertinent information generated when
+ * failure occurs while unmarshalling the elements of the set.
+ * <p>
+ * The information that may be of interest to entities that receive this
+ * exception class is contained in the following fields: a set of
+ * <code>Lease</code> objects in which each element is the result of a
+ * successful unmarshalling attempt, a set of marshalled
+ * <code>Lease</code> objects in which each element could not be
+ * successfully unmarshalled, and a set of exceptions
+ * (<code>IOException</code>, <code>ClassNotFoundException</code>, or
+ * some unchecked exception) in which each element corresponds to one of
+ * the unmarshalling failures.
+ * <p>
+ * Thus, when exceptional conditions occur while unmarshalling a set of
+ * marshalled <code>Lease</code> objects, this class can be used not
+ * only to indicate that an exceptional condition has occurred, but also
+ * to provide information that can be used to perform error handling
+ * activities such as: determining if it is feasible to continue with
+ * processing, reporting errors, attempting recovery, and debugging.
+ * <p>
+ * Note that this exception class should be used only to report
+ * exceptional conditions occurring when unmarshalling a set of
+ * marshalled <code>Lease</code> objects.
+ * 
+ * @author Sun Microsystems, Inc.
+ * @see Lease 
+ */
+
+public class LeaseUnmarshalException extends Exception {
+    private static final long serialVersionUID = -6736107321698417489L;
+
+    /**
+     * Array containing the set of instances of <code>Lease</code> that
+     * were successfully unmarshalled during the process in which at
+     * least one failure occurred.
+     *
+     * @serial
+     */
+    final private Lease[] unmarshalledLeases;
+
+    /**
+     * Array containing the set of <code>Lease</code> instances that
+     * could not be unmarshalled. This set should contain at least one
+     * element.
+     *
+     * @serial
+     */
+    final private MarshalledInstance[] stillMarshalledLeases;
+
+    /**
+     * Array containing the set of exceptions that occurred during the
+     * unmarshalling process. Each element in this set should be an
+     * instance of <code>IOException</code>,
+     * <code>ClassNotFoundException</code>, or some unchecked
+     * exception. Furthermore, there should be a one-to-one
+     * correspondence between each element in this set and each element
+     * in the set of still-to-be-unmarshalled <code>Lease</code>
+     * instances. That is, the element of this set corresponding to
+     * index i should be an instance of the exception that occurred
+     * while attempting to unmarshal the element at index i of
+     * <code>stillMarshalledLeases</code>.
+     *
+     * @serial 
+     */
+    final private Throwable[] exceptions;
+
+    /**
+     * Constructs a new instance of <code>LeaseUnmarshalException</code>
+     * with a specified message.
+     *
+     * @param leases array containing the set of instances of
+     *	      <code>Lease</code> that were successfully unmarshalled
+     * @param marshalledLeases array containing the set of marshalled
+     *	      <code>Lease</code> instances that could not be
+     *	      unmarshalled
+     * @param exceptions array containing the set of exceptions that
+     *	      occurred during the unmarshalling process. Each element in
+     *	      this set should be an instance of
+     *	      <code>IOException</code>,
+     *	      <code>ClassNotFoundException</code>, or some unchecked
+     *	      exception. Furthermore, there should be a one-to-one
+     *	      correspondence between each element in this set and each
+     *	      element in the <code>marshalledLeases</code> argument.
+     *	      <p>
+     *	      That is, the element of this set corresponding to index i
+     *	      should be an instance of the exception that occurred while
+     *	      attempting to unmarshal the element at index i of the
+     *	      <code>marshalledLeases</code> argument.
+     * @param message the detail message
+     * @throws IllegalArgumentException when the number of elements in
+     *	       the <code>exceptions</code> argument is not equal to the
+     *	       number of elements in the <code>marshalledLeases</code>
+     *	       argument
+     */
+    public LeaseUnmarshalException(String  message,
+				   Lease[] leases,
+				   MarshalledInstance[] marshalledLeases,
+				   Throwable[] exceptions)
+    {
+	super(message);
+	validate(marshalledLeases, exceptions);
+
+	this.unmarshalledLeases = leases;
+	this.stillMarshalledLeases = marshalledLeases;
+	this.exceptions = exceptions;
+    }
+
+    /**
+     * Constructs a new instance of <code>LeaseUnmarshalException</code>.
+     *
+     * @param leases array containing the set of instances of
+     *	      <code>Lease</code> that were successfully unmarshalled
+     * @param marshalledLeases array containing the set of marshalled
+     *	      <code>Lease</code> instances that could not be
+     *	      unmarshalled
+     * @param exceptions array containing the set of exceptions that
+     *	      occurred during the unmarshalling process. Each element in
+     *	      this set should be an instance of
+     *	      <code>IOException</code>,
+     *	      <code>ClassNotFoundException</code>, or some unchecked
+     *	      exception. Furthermore, there should be a one-to-one
+     *	      correspondence between each element in this set and each
+     *	      element in the <code>marshalledLeases</code> argument.
+     *	      <p>
+     *	      That is, the element of this set corresponding to index i
+     *	      should be an instance of the exception that occurred while
+     *	      attempting to unmarshal the element at index i of the
+     *	      <code>marshalledLeases</code> argument.
+     * @throws IllegalArgumentException when the number of elements in
+     *	       the <code>exceptions</code> argument is not equal to the
+     *	       number of elements in the <code>marshalledLeases</code>
+     *	       argument
+     */
+    public LeaseUnmarshalException(Lease[] leases,
+				   MarshalledInstance[] marshalledLeases,
+				   Throwable[] exceptions)
+    {
+	super();
+	validate(marshalledLeases, exceptions);
+
+	this.unmarshalledLeases = leases;
+	this.stillMarshalledLeases = marshalledLeases;
+	this.exceptions = exceptions;
+    }
+
+    /**
+     * Helper method for constructors. Throws an
+     * <code>IllegalArgumentException</code> if the length of
+     * <code>marshalledLeases</code> does not match the length of
+     * <code>exceptions</code>.
+     */
+    private void validate(MarshalledInstance[] marshalledLeases,
+			  Throwable[] exceptions)
+    {
+	/*
+	 * If the number of exceptions does not equal number of leases
+	 * that could not be unmarshalled, throw exception.
+	 */
+	if(exceptions.length != marshalledLeases.length) {
+	    throw new IllegalArgumentException
+			   ("exceptions.length ("+exceptions.length
+			    +") is not equal to marshalledLeases.length ("
+			    +marshalledLeases.length +")");
+	}
+    }
+
+    /**
+     * Accessor method that returns an array consisting of instances of
+     * <code>Lease</code>, where each element of the array corresponds
+     * to a successfully unmarshalled object. Note that the same array
+     * is returned on each invocation of this method; that is, a copy is
+     * not made.
+     *
+     * @return array of instances of <code>Lease</code>, where each
+     *	       element corresponds to a successfully unmarshalled object
+     */
+    public Lease[] getLeases() {
+	return unmarshalledLeases;
+    }
+
+    /**
+     * Accessor method that returns an array consisting of instances of
+     * <code>MarshalledObject</code>, where each element of the array is
+     * a marshalled instance of the <code>Lease</code> interface, and
+     * corresponds to an object that could not be successfully
+     * unmarshalled. Note that the same array is returned on each
+     * invocation of this method; that is, a copy is not made.
+     *
+     * @return array of marshalled instances of <code>Lease</code>,
+     *	       where each element corresponds to an object in which
+     *	       failure occurred while attempting to unmarshal the object
+     */
+    public MarshalledInstance[] getMarshalledLeases() {
+	return stillMarshalledLeases;
+    }
+
+    /**
+     * Accessor method that returns an array consisting of instances of
+     * <code>Throwable</code>, where each element of the array
+     * corresponds to one of the exceptions that occurred during the
+     * unmarshalling process. Note that the same array is returned on
+     * each invocation of this method; that is, a copy is not made.
+     * <p> 
+     * Each element in the return set should be an instance of
+     * <code>IOException</code>, <code>ClassNotFoundException</code>, or
+     * some unchecked exception. Additionally, there should be a
+     * one-to-one correspondence between each element in the array
+     * returned by this method and the array returned by the
+     * <code>getMarshalledLeases</code> method. That is, the i-th
+     * element of the set returned by this method should be an instance
+     * of the exception that occurred while attempting to unmarshal the
+     * i-th element of the set returned by the
+     * <code>getMarshalledLeases</code> method.
+     *
+     * @return array of instances of <code>Throwable</code>, where each
+     *	       element corresponds to one of the exceptions that
+     *	       occurred during the unmarshalling process
+     */
+    public Throwable[] getExceptions() {
+	return exceptions;
+    }
+}

Propchange: incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/lease/LeaseUnmarshalException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Copied: incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/ConnectIOException.java (from r940002, incubator/river/jtsk/trunk/src/net/jini/exception/rmi/ConnectIOException.java)
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/ConnectIOException.java?p2=incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/ConnectIOException.java&p1=incubator/river/jtsk/trunk/src/net/jini/exception/rmi/ConnectIOException.java&r1=940002&r2=943101&rev=943101&view=diff
==============================================================================
--- incubator/river/jtsk/trunk/src/net/jini/exception/rmi/ConnectIOException.java (original)
+++ incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/ConnectIOException.java Tue May 11 12:33:28 2010
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package net.jini.exception.rmi;
+package org.apache.river.api.throwable.rmi;
 
 import java.rmi.RemoteException;
 

Copied: incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/ExportException.java (from r940002, incubator/river/jtsk/trunk/src/net/jini/exception/rmi/ExportException.java)
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/ExportException.java?p2=incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/ExportException.java&p1=incubator/river/jtsk/trunk/src/net/jini/exception/rmi/ExportException.java&r1=940002&r2=943101&rev=943101&view=diff
==============================================================================
--- incubator/river/jtsk/trunk/src/net/jini/exception/rmi/ExportException.java (original)
+++ incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/ExportException.java Tue May 11 12:33:28 2010
@@ -36,7 +36,7 @@
  * @author  Mikhail A. Markov
  * @version $Revision: 1.4.4.2 $
  */
-package net.jini.exception.rmi;
+package org.apache.river.api.throwable.rmi;
 
 import java.rmi.RemoteException;
 

Copied: incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/MarshalException.java (from r940002, incubator/river/jtsk/trunk/src/net/jini/exception/rmi/MarshalException.java)
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/MarshalException.java?p2=incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/MarshalException.java&p1=incubator/river/jtsk/trunk/src/net/jini/exception/rmi/MarshalException.java&r1=940002&r2=943101&rev=943101&view=diff
==============================================================================
--- incubator/river/jtsk/trunk/src/net/jini/exception/rmi/MarshalException.java (original)
+++ incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/MarshalException.java Tue May 11 12:33:28 2010
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package net.jini.exception.rmi;
+package org.apache.river.api.throwable.rmi;
 
 import java.rmi.RemoteException;
 

Copied: incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/NoSuchObjectException.java (from r940002, incubator/river/jtsk/trunk/src/net/jini/exception/rmi/NoSuchObjectException.java)
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/NoSuchObjectException.java?p2=incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/NoSuchObjectException.java&p1=incubator/river/jtsk/trunk/src/net/jini/exception/rmi/NoSuchObjectException.java&r1=940002&r2=943101&rev=943101&view=diff
==============================================================================
--- incubator/river/jtsk/trunk/src/net/jini/exception/rmi/NoSuchObjectException.java (original)
+++ incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/NoSuchObjectException.java Tue May 11 12:33:28 2010
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package net.jini.exception.rmi;
+package org.apache.river.api.throwable.rmi;
 
 import java.rmi.RemoteException;
 

Copied: incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/ServerError.java (from r940002, incubator/river/jtsk/trunk/src/net/jini/exception/rmi/ServerError.java)
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/ServerError.java?p2=incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/ServerError.java&p1=incubator/river/jtsk/trunk/src/net/jini/exception/rmi/ServerError.java&r1=940002&r2=943101&rev=943101&view=diff
==============================================================================
--- incubator/river/jtsk/trunk/src/net/jini/exception/rmi/ServerError.java (original)
+++ incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/ServerError.java Tue May 11 12:33:28 2010
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package net.jini.exception.rmi;
+package org.apache.river.api.throwable.rmi;
 
 import java.rmi.RemoteException;
 

Copied: incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/ServerException.java (from r940002, incubator/river/jtsk/trunk/src/net/jini/exception/rmi/ServerException.java)
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/ServerException.java?p2=incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/ServerException.java&p1=incubator/river/jtsk/trunk/src/net/jini/exception/rmi/ServerException.java&r1=940002&r2=943101&rev=943101&view=diff
==============================================================================
--- incubator/river/jtsk/trunk/src/net/jini/exception/rmi/ServerException.java (original)
+++ incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/ServerException.java Tue May 11 12:33:28 2010
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package net.jini.exception.rmi;
+package org.apache.river.api.throwable.rmi;
 
 import java.rmi.RemoteException;
 

Copied: incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/ServerNotActiveException.java (from r940002, incubator/river/jtsk/trunk/src/net/jini/exception/rmi/ServerNotActiveException.java)
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/ServerNotActiveException.java?p2=incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/ServerNotActiveException.java&p1=incubator/river/jtsk/trunk/src/net/jini/exception/rmi/ServerNotActiveException.java&r1=940002&r2=943101&rev=943101&view=diff
==============================================================================
--- incubator/river/jtsk/trunk/src/net/jini/exception/rmi/ServerNotActiveException.java (original)
+++ incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/ServerNotActiveException.java Tue May 11 12:33:28 2010
@@ -21,7 +21,7 @@
  * @author  Mikhail A. Markov
  * @version $Revision: 1.4.4.2 $
  */
-package net.jini.exception.rmi;
+package org.apache.river.api.throwable.rmi;
 
 
 /**

Copied: incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/UnknownHostException.java (from r940002, incubator/river/jtsk/trunk/src/net/jini/exception/rmi/UnknownHostException.java)
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/UnknownHostException.java?p2=incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/UnknownHostException.java&p1=incubator/river/jtsk/trunk/src/net/jini/exception/rmi/UnknownHostException.java&r1=940002&r2=943101&rev=943101&view=diff
==============================================================================
--- incubator/river/jtsk/trunk/src/net/jini/exception/rmi/UnknownHostException.java (original)
+++ incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/UnknownHostException.java Tue May 11 12:33:28 2010
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package net.jini.exception.rmi;
+package org.apache.river.api.throwable.rmi;
 
 import java.rmi.RemoteException;
 

Copied: incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/UnmarshalException.java (from r940002, incubator/river/jtsk/trunk/src/net/jini/exception/rmi/UnmarshalException.java)
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/UnmarshalException.java?p2=incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/UnmarshalException.java&p1=incubator/river/jtsk/trunk/src/net/jini/exception/rmi/UnmarshalException.java&r1=940002&r2=943101&rev=943101&view=diff
==============================================================================
--- incubator/river/jtsk/trunk/src/net/jini/exception/rmi/UnmarshalException.java (original)
+++ incubator/river/jtsk/trunk/src/org/apache/river/api/throwable/rmi/UnmarshalException.java Tue May 11 12:33:28 2010
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package net.jini.exception.rmi;
+package org.apache.river.api.throwable.rmi;
 
 import java.rmi.RemoteException;
 

Copied: incubator/river/jtsk/trunk/src/org/apache/river/api/util/Facade.java (from r937157, incubator/river/jtsk/trunk/src/net/jini/discovery/Facade.java)
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/src/org/apache/river/api/util/Facade.java?p2=incubator/river/jtsk/trunk/src/org/apache/river/api/util/Facade.java&p1=incubator/river/jtsk/trunk/src/net/jini/discovery/Facade.java&r1=937157&r2=943101&rev=943101&view=diff
==============================================================================
--- incubator/river/jtsk/trunk/src/net/jini/discovery/Facade.java (original)
+++ incubator/river/jtsk/trunk/src/org/apache/river/api/util/Facade.java Tue May 11 12:33:28 2010
@@ -3,7 +3,7 @@
  * and open the template in the editor.
  */
 
-package net.jini.discovery;
+package org.apache.river.api.util;
 
 /**
  * @author Peter Firmstone.

Copied: incubator/river/jtsk/trunk/src/org/apache/river/api/util/ResultStream.java (from r939155, incubator/river/jtsk/trunk/src/net/jini/core/lookup/ResultStream.java)
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/src/org/apache/river/api/util/ResultStream.java?p2=incubator/river/jtsk/trunk/src/org/apache/river/api/util/ResultStream.java&p1=incubator/river/jtsk/trunk/src/net/jini/core/lookup/ResultStream.java&r1=939155&r2=943101&rev=943101&view=diff
==============================================================================
--- incubator/river/jtsk/trunk/src/net/jini/core/lookup/ResultStream.java (original)
+++ incubator/river/jtsk/trunk/src/org/apache/river/api/util/ResultStream.java Tue May 11 12:33:28 2010
@@ -3,7 +3,7 @@
  * and open the template in the editor.
  */
 
-package net.jini.core.lookup;
+package org.apache.river.api.util;
 
 /**
  * This interface is similar to an Enumerator, it is designed to return