/*
* 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 com.sun.jini.admin.DestroyAdmin;
import java.rmi.RemoteException;
import net.jini.admin.JoinAdmin;
import net.jini.core.entry.Entry;
import net.jini.core.transaction.Transaction;
import net.jini.core.transaction.TransactionException;
import net.jini.space.JavaSpace;
import net.jini.space.JavaSpace05;
/**
* This interface contains all the administrative methods that Outrigger
* provides to control its JavaSpaces<sup><font size=-2>TM</font></sup>
* service. <p>
*
* @deprecated Invoke the {@link JoinAdmin} and {@link
* DestroyAdmin} methods though those interfaces. A view
* of the space contents can be obtained through the
* {@link JavaSpace05#contents JavaSpace05.contents}
* method.
*
* @author Sun Microsystems, Inc.
*/
public interface JavaSpaceAdmin extends JoinAdmin, DestroyAdmin {
/**
* Can be passed to <code>contents</code> to indicate
* no preference for the fetch size.
*/
int USE_DEFAULT = -1;
/**
* Return the space that this administrative object governs.
* @throws RemoteException if communications with the
* server is necessary and it can not be completed.
*/
JavaSpace space() throws RemoteException;
/**
* Return an <code>AdminIterator</code> that will iterate over all
* the entries in the space that match the given template and are
* visible under the given transaction.
* <p>
* The interactions between other operations on the space and
* the returned iterator are undefined
* <p>
* @param tmpl The iterator should return only entries that match
* tmpl
* @param txn The iterator should return only entries that match
* this transaction
* @throws RemoteException if communications with the
* server is necessary and it can not be completed.
* @throws TransactionException if there is a problem with
* <code>txn</code>.
* @throws SecurityException If the space is performing
* access control and it can not be confirmed
* that the subject making this call has permission
* to create an <code>AdminIterator</code> with
* the specified template and transaction.
*/
AdminIterator contents(Entry tmpl, Transaction txn)
throws TransactionException, RemoteException;
/**
* Return an <code>AdminIterator</code> that will iterate over all
* the entries in the space that match the given template and are
* visible under the given transaction.
* <p>
* The interactions between other operations on the space and
* the returned iterator are undefined
* <p>
* @param tmpl The iterator should return only entries that match
* tmpl
* @param txn The iterator should return only entries that match
* this transaction
* @param fetchSize advice on how many entries to fetch when the iterator
* has to go to the server for more entries.
* @throws RemoteException if communications with the
* server is necessary and it can not be completed.
* @throws TransactionException if there is a problem with
* <code>txn</code>.
* @throws SecurityException If the space is performing
* access control and it can not be confirmed
* that the subject making this call has permission
* to create an <code>AdminIterator</code> with
* the specified template and transaction.
* @throws IllegalArgumentException if fetchSize is
* not positive, or <code>USE_DEFAULT</code>.
*/
AdminIterator contents(Entry tmpl, Transaction txn, int fetchSize)
throws TransactionException, RemoteException;
}