/* * 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 com.sun.jini.outrigger; import java.rmi.RemoteException; import net.jini.core.entry.Entry; import net.jini.core.entry.UnusableEntryException; import net.jini.space.JavaSpace05; import net.jini.space.MatchSet; /** * Interface for the iterators returned by the <code>contents()</code> * method of <code>JavaSpaceAdmin</code>. Note * <code>AdminIterator</code>s do not survive restarts of the * underlying space. * <p> * * @deprecated Use {@link MatchSet} instead. <code>MatchSet</code>s * can be obtained using the * {@link JavaSpace05#contents JavaSpace05.contents} * method. * * @author Sun Microsystems, Inc. * * @see JavaSpaceAdmin */ public interface AdminIterator { /** * Return the next entry in the sequence. Returns <code>null</code> * if there are no more matching entries in the space. * <p> * This method is idempotent in the face of <code>RemoteException</code>s. * * @throws UnusableEntryException if the field of next entry in * sequence can't be deserialized (usually this is because the class * in question could not be loaded). */ public Entry next() throws UnusableEntryException, RemoteException; /** * The effect of this call depends on the most recent call to * <code>next()</code>: * <ul> * <li> If the last call to <code>next()</code> returned an * <code>Entry</code> that entry will be removed from the space. * <p> * <li> If the last call to <code>next()</code> threw a * <code>UnusableEntryException</code> the <code>Entry</code> that * could not be deserialized will be removed from the space. * <p> * <li> If the last call to <code>next()</code> returned * <code>null</code>, threw a <code>RemoteException</code>, or * <code>next()</code> has not yet been called on this iterator a * <code>IllegalStateException</code> will be thrown and no entry will * be removed. * <p> * </ul> * This method is idempotent in the face of * <code>RemoteException</code>. * <p> * @throws IllegalStateException if <code>next()</code> has not be * called on this iterator, or the last invocation of * <code>next()</code> returned <code>null</code> or threw * <code>RemoteException</code>. */ public void delete() throws RemoteException; /** * Tell the server that this iterator is no longer in use. All * operations on a closed iterator have undefined results, except * the <code>close()</code> method. * <p> * This method is idempotent in the face of <code>RemoteException</code>. */ public void close() throws RemoteException; }