/*
* 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.transaction.Transaction;
import net.jini.core.transaction.TransactionException;
import net.jini.core.constraint.MethodConstraints;
import net.jini.space.JavaSpace05;
/**
* Sub-interface of <code>JavaSpaceAdmin</code> that
* adds a method that allows iterators to be created with
* a given set of constraints.<p>
*
* @deprecated The {@link JavaSpace05#contents JavaSpace05.contents}
* method can be used to view the space's contents.
*
* @author Sun Microsystems, Inc.
* @since 2.0
*/
public interface ConstrainableJavaSpaceAdmin extends JavaSpaceAdmin {
/**
* 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>
* Note, because this is a convenience method for
* <code>contents(Entry, Transaction, int,
* MethodConstraints)</code> the constraints associated with
* <code>contents(Entry, Transaction, int,
* MethodConstraints)</code> are used for any calls though this
* method, not the constraints associated with this method.
*
* @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>
* Note, because this is a convenience method for
* <code>contents(Entry, Transaction, int,
* MethodConstraints)</code> the constraints associated with
* <code>contents(Entry, Transaction, int,
* MethodConstraints)</code> are used for any calls though this
* method, not the constraints associated with this method.
*
* @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 postive, or <code>USE_DEFUALT</code>.
*/
AdminIterator contents(Entry tmpl, Transaction txn, int fetchSize)
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. The returned iterator
* will support proxy trust verification and will enforce
* the specified <code>MethodConstraints</code>.
* <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.
* @param constrains the <code>MethodConstraints</code> the
* returned proxy should enforce.
* @return An object that can be used to iterate over entries
* in the space.
* @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 postive, or <code>USE_DEFUALT</code>.
*/
AdminIterator contents(Entry tmpl, Transaction txn, int fetchSize,
MethodConstraints constrains)
throws TransactionException, RemoteException;
}