All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.jackrabbit.rmi.server.RemoteAdapterFactory Maven / Gradle / Ivy

Go to download

JCR-RMI is a transparent Remote Method Invocation (RMI) layer for the Content Repository for Java Technology API (JCR). The layer makes it possible to remotely access JCR content repositories.

There is a newer version: 2.21.26-beta
Show newest version
/*
 * 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; }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy