org.apache.jackrabbit.rmi.server.RemoteAdapterFactory Maven / Gradle / Ivy
Show all versions of jackrabbit-jcr-rmi Show documentation
/*
* 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.jackrabbit.rmi.server;
import java.rmi.RemoteException;
import java.security.Principal;
import java.util.Iterator;
import javax.jcr.Item;
import javax.jcr.NamespaceRegistry;
import javax.jcr.Node;
import javax.jcr.NodeIterator;
import javax.jcr.Property;
import javax.jcr.PropertyIterator;
import javax.jcr.Repository;
import javax.jcr.Session;
import javax.jcr.Workspace;
import javax.jcr.lock.Lock;
import javax.jcr.lock.LockManager;
import javax.jcr.nodetype.ItemDefinition;
import javax.jcr.nodetype.NodeDefinition;
import javax.jcr.nodetype.NodeType;
import javax.jcr.nodetype.NodeTypeIterator;
import javax.jcr.nodetype.NodeTypeManager;
import javax.jcr.nodetype.PropertyDefinition;
import javax.jcr.observation.EventIterator;
import javax.jcr.observation.ObservationManager;
import javax.jcr.query.Query;
import javax.jcr.query.QueryManager;
import javax.jcr.query.QueryResult;
import javax.jcr.query.Row;
import javax.jcr.query.RowIterator;
import javax.jcr.security.AccessControlEntry;
import javax.jcr.security.AccessControlManager;
import javax.jcr.security.AccessControlPolicy;
import javax.jcr.security.AccessControlPolicyIterator;
import javax.jcr.security.Privilege;
import javax.jcr.version.Version;
import javax.jcr.version.VersionHistory;
import javax.jcr.version.VersionIterator;
import javax.jcr.version.VersionManager;
import org.apache.jackrabbit.rmi.remote.RemoteEventCollection;
import org.apache.jackrabbit.rmi.remote.RemoteItem;
import org.apache.jackrabbit.rmi.remote.RemoteItemDefinition;
import org.apache.jackrabbit.rmi.remote.RemoteIterator;
import org.apache.jackrabbit.rmi.remote.RemoteLock;
import org.apache.jackrabbit.rmi.remote.RemoteLockManager;
import org.apache.jackrabbit.rmi.remote.RemoteNamespaceRegistry;
import org.apache.jackrabbit.rmi.remote.RemoteNode;
import org.apache.jackrabbit.rmi.remote.RemoteNodeDefinition;
import org.apache.jackrabbit.rmi.remote.RemoteNodeType;
import org.apache.jackrabbit.rmi.remote.RemoteNodeTypeManager;
import org.apache.jackrabbit.rmi.remote.RemoteObservationManager;
import org.apache.jackrabbit.rmi.remote.RemoteProperty;
import org.apache.jackrabbit.rmi.remote.RemotePropertyDefinition;
import org.apache.jackrabbit.rmi.remote.RemoteQuery;
import org.apache.jackrabbit.rmi.remote.RemoteQueryManager;
import org.apache.jackrabbit.rmi.remote.RemoteQueryResult;
import org.apache.jackrabbit.rmi.remote.RemoteRepository;
import org.apache.jackrabbit.rmi.remote.RemoteRow;
import org.apache.jackrabbit.rmi.remote.RemoteSession;
import org.apache.jackrabbit.rmi.remote.RemoteVersion;
import org.apache.jackrabbit.rmi.remote.RemoteVersionHistory;
import org.apache.jackrabbit.rmi.remote.RemoteVersionManager;
import org.apache.jackrabbit.rmi.remote.RemoteWorkspace;
import org.apache.jackrabbit.rmi.remote.principal.RemotePrincipal;
import org.apache.jackrabbit.rmi.remote.security.RemoteAccessControlEntry;
import org.apache.jackrabbit.rmi.remote.security.RemoteAccessControlManager;
import org.apache.jackrabbit.rmi.remote.security.RemoteAccessControlPolicy;
import org.apache.jackrabbit.rmi.remote.security.RemotePrivilege;
/**
* Factory interface for creating remote adapters for local resources.
* This interface defines how the local JCR interfaces are adapted to
* remote JCR-RMI references. The adaption mechanism can be
* modified (for example to add extra features) by changing the
* remote adapter factory used by the repository server.
*
* Note that the {@link ServerObject ServerObject} base class provides
* a number of utility methods designed to work with a remote adapter
* factory. Adapter implementations may want to inherit that functionality
* by subclassing from ServerObject.
*
* @see org.apache.jackrabbit.rmi.client.LocalAdapterFactory
* @see org.apache.jackrabbit.rmi.server.ServerAdapterFactory
* @see org.apache.jackrabbit.rmi.server.ServerObject
*/
public interface RemoteAdapterFactory {
/**
* Returns the port number to which the server objects created by
* this factory are bound. This method is mostly used internally by
* the {@link ServerObject} constructor to determine which port number
* to use.
*
* @return port number, or 0 for a random port
*/
int getPortNumber();
/**
* Returns a remote adapter for the given local repository.
*
* @param repository local repository
* @return remote repository adapter
* @throws RemoteException on RMI errors
*/
RemoteRepository getRemoteRepository(Repository repository)
throws RemoteException;
/**
* Returns a remote adapter for the given local session.
*
* @param session local session
* @return remote session adapter
* @throws RemoteException on RMI errors
*/
RemoteSession getRemoteSession(Session session) throws RemoteException;
/**
* Returns a remote adapter for the given local workspace.
*
* @param workspace local workspace
* @return remote workspace adapter
* @throws RemoteException on RMI errors
*/
RemoteWorkspace getRemoteWorkspace(Workspace workspace)
throws RemoteException;
/**
* Returns a remote adapter for the given local observation manager.
*
* @param observationManager local observation manager
* @return remote observation manager adapter
* @throws RemoteException on RMI errors
*/
RemoteObservationManager getRemoteObservationManager(
ObservationManager observationManager)
throws RemoteException;
/**
* Returns a remote adapter for the given local namespace registry.
*
* @param registry local namespace registry
* @return remote namespace registry adapter
* @throws RemoteException on RMI errors
*/
RemoteNamespaceRegistry getRemoteNamespaceRegistry(
NamespaceRegistry registry) throws RemoteException;
/**
* Returns a remote adapter for the given local node type manager.
*
* @param manager local node type manager
* @return remote node type manager adapter
* @throws RemoteException on RMI errors
*/
RemoteNodeTypeManager getRemoteNodeTypeManager(NodeTypeManager manager)
throws RemoteException;
/**
* Returns a remote adapter for the given local item. This method
* will return an adapter that implements only the
* {@link Item Item} interface. The caller may want to introspect
* the local item to determine whether to use either the
* {@link #getRemoteNode(Node) getRemoteNode} or the
* {@link #getRemoteProperty(Property) getRemoteProperty} method instead.
*
* @param item local item
* @return remote item adapter
* @throws RemoteException on RMI errors
*/
RemoteItem getRemoteItem(Item item) throws RemoteException;
/**
* Returns a remote adapter for the given local property.
*
* @param property local property
* @return remote property adapter
* @throws RemoteException on RMI errors
*/
RemoteProperty getRemoteProperty(Property property) throws RemoteException;
/**
* Returns a remote adapter for the given local node.
*
* @param node local node
* @return remote node adapter
* @throws RemoteException on RMI errors
*/
RemoteNode getRemoteNode(Node node) throws RemoteException;
/**
* Returns a remote adapter for the given local version.
*
* @param version local version
* @return remote version adapter
* @throws RemoteException on RMI errors
*/
RemoteVersion getRemoteVersion(Version version) throws RemoteException;
/**
* Returns a remote adapter for the given local version history.
*
* @param versionHistory local version history
* @return remote version history adapter
* @throws RemoteException on RMI errors
*/
RemoteVersionHistory getRemoteVersionHistory(VersionHistory versionHistory)
throws RemoteException;
/**
* Returns a remote adapter for the given local node type.
*
* @param type local node type
* @return remote node type adapter
* @throws RemoteException on RMI errors
*/
RemoteNodeType getRemoteNodeType(NodeType type) throws RemoteException;
/**
* Returns a remote adapter for the given local item definition.
* This method will return an adapter that implements only the
* {@link ItemDefinition ItemDefinition} interface. The caller may want to introspect
* the local item definition to determine whether to use either the
* {@link #getRemoteNodeDefinition(NodeDefinition) getRemoteNodeDef} or the
* {@link #getRemotePropertyDefinition(PropertyDefinition) getRemotePropertyDef}
* method instead.
*
* @param def local item definition
* @return remote item definition adapter
* @throws RemoteException on RMI errors
*/
RemoteItemDefinition getRemoteItemDefinition(ItemDefinition def) throws RemoteException;
/**
* Returns a remote adapter for the given local node definition.
*
* @param def local node definition
* @return remote node definition adapter
* @throws RemoteException on RMI errors
*/
RemoteNodeDefinition getRemoteNodeDefinition(NodeDefinition def) throws RemoteException;
/**
* Returns a remote adapter for the given local property definition.
*
* @param def local property definition
* @return remote property definition adapter
* @throws RemoteException on RMI errors
*/
RemotePropertyDefinition getRemotePropertyDefinition(PropertyDefinition def)
throws RemoteException;
/**
* Returns a remote adapter for the given local lock.
*
* @param lock local lock
* @return remote lock adapter
* @throws RemoteException on RMI errors
*/
RemoteLock getRemoteLock(Lock lock) throws RemoteException;
/**
* Returns a remote adapter for the given local query manager.
*
* @param session current session
* @param manager local query manager
* @return remote query manager adapter
* @throws RemoteException on RMI errors
*/
RemoteQueryManager getRemoteQueryManager(
Session session, QueryManager manager) throws RemoteException;
/**
* Returns a remote adapter for the given local query.
*
* @param query local query
* @return remote query adapter
* @throws RemoteException on RMI errors
*/
RemoteQuery getRemoteQuery(Query query) throws RemoteException;
/**
* Returns a remote adapter for the given local query result.
*
* @param result local query result
* @return remote query result adapter
* @throws RemoteException on RMI errors
*/
RemoteQueryResult getRemoteQueryResult(QueryResult result)
throws RemoteException;
/**
* Returns a remote adapter for the given local query row.
*
* @param row local query row
* @return remote query row adapter
* @throws RemoteException on RMI errors
*/
RemoteRow getRemoteRow(Row row) throws RemoteException;
/**
* Returns a remote adapter for the given local events.
*
* @param listenerId The listener identifier to which the events are to be
* dispatched.
* @param events the local events
* @return remote event iterator adapter
* @throws RemoteException on RMI errors
*/
RemoteEventCollection getRemoteEvent(long listenerId, EventIterator events)
throws RemoteException;
/**
* Returns a remote adapter for the given local node iterator.
*
* @param iterator local node iterator
* @return remote iterator adapter
* @throws RemoteException on RMI errors
*/
RemoteIterator getRemoteNodeIterator(NodeIterator iterator)
throws RemoteException;
/**
* Returns a remote adapter for the given local property iterator.
*
* @param iterator local property iterator
* @return remote iterator adapter
* @throws RemoteException on RMI errors
*/
RemoteIterator getRemotePropertyIterator(PropertyIterator iterator)
throws RemoteException;
/**
* Returns a remote adapter for the given local version iterator.
*
* @param iterator local version iterator
* @return remote iterator adapter
* @throws RemoteException on RMI errors
*/
RemoteIterator getRemoteVersionIterator(VersionIterator iterator)
throws RemoteException;
/**
* Returns a remote adapter for the given local node type iterator.
*
* @param iterator local node type iterator
* @return remote iterator adapter
* @throws RemoteException on RMI errors
*/
RemoteIterator getRemoteNodeTypeIterator(NodeTypeIterator iterator)
throws RemoteException;
/**
* Returns a remote adapter for the given local row iterator.
*
* @param iterator local row iterator
* @return remote iterator adapter
* @throws RemoteException on RMI errors
*/
RemoteIterator getRemoteRowIterator(RowIterator iterator)
throws RemoteException;
RemoteLockManager getRemoteLockManager(LockManager lockManager)
throws RemoteException;
RemoteVersionManager getRemoteVersionManager(Session session, VersionManager versionManager)
throws RemoteException;
/**
* Returns a remote adapter for the given local access control manager.
*
* @param acm local access control manager
* @return remote access control manager
* @throws RemoteException on RMI errors
*/
RemoteAccessControlManager getRemoteAccessControlManager(
AccessControlManager acm) throws RemoteException;
/**
* Returns a remote adapter for the given local access control manager.
*
* @return remote access control manager
* @throws RemoteException on RMI errors
*/
public RemotePrivilege getRemotePrivilege(final Privilege local)
throws RemoteException;
/**
* Returns a remote adapter for the given local access control manager.
*
* @return remote access control manager
* @throws RemoteException on RMI errors
*/
public RemotePrivilege[] getRemotePrivilege(final Privilege[] local)
throws RemoteException;
/**
* Returns a remote adapter for the given local access control manager.
*
* @return remote access control manager
* @throws RemoteException on RMI errors
*/
public RemoteAccessControlPolicy getRemoteAccessControlPolicy(
final AccessControlPolicy local) throws RemoteException;
/**
* Returns a remote adapter for the given local access control manager.
*
* @return remote access control manager
* @throws RemoteException on RMI errors
*/
public RemoteAccessControlPolicy[] getRemoteAccessControlPolicy(
final AccessControlPolicy[] local) throws RemoteException;
/**
* Returns a remote adapter for the given local access control manager.
*
* @return remote access control manager
* @throws RemoteException on RMI errors
*/
public RemoteIterator getRemoteAccessControlPolicyIterator(
AccessControlPolicyIterator iterator) throws RemoteException;
/**
* Returns a remote adapter for the given local access control manager.
*
* @return remote access control manager
* @throws RemoteException on RMI errors
*/
public RemoteAccessControlEntry getRemoteAccessControlEntry(
final AccessControlEntry local) throws RemoteException;
/**
* Returns a remote adapter for the given local access control manager.
*
* @return remote access control manager
* @throws RemoteException on RMI errors
*/
public RemoteAccessControlEntry[] getRemoteAccessControlEntry(
final AccessControlEntry[] local) throws RemoteException;
/**
* Returns a remote adapter for the given local access control manager.
*
* @return remote access control manager
* @throws RemoteException on RMI errors
*/
public RemotePrincipal getRemotePrincipal(final Principal principal)
throws RemoteException;
/**
* Returns a remote adapter for the given local access control manager.
*
* @return remote access control manager
* @throws RemoteException on RMI errors
*/
public RemoteIterator getRemotePrincipalIterator(
final Iterator principals) throws RemoteException;
}