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

org.apache.jackrabbit.rmi.server.ServerNode 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 javax.jcr.Node;
import javax.jcr.NodeIterator;
import javax.jcr.Property;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.Value;
import javax.jcr.lock.Lock;
import javax.jcr.version.Version;

import org.apache.jackrabbit.rmi.remote.RemoteItem;
import org.apache.jackrabbit.rmi.remote.RemoteIterator;
import org.apache.jackrabbit.rmi.remote.RemoteLock;
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.RemoteProperty;
import org.apache.jackrabbit.rmi.remote.RemoteVersion;
import org.apache.jackrabbit.rmi.remote.RemoteVersionHistory;

/**
 * @deprecated RMI support is deprecated and will be removed in a future version of Jackrabbit; see Jira ticket JCR-4972 for more information.
 * 

* Remote adapter for the JCR {@link javax.jcr.Node Node} interface. * This class makes a local node available as an RMI service using * the {@link org.apache.jackrabbit.rmi.remote.RemoteNode RemoteNode} * interface. * * @see javax.jcr.Node * @see org.apache.jackrabbit.rmi.remote.RemoteNode */ @Deprecated public class ServerNode extends ServerItem implements RemoteNode { /** The adapted local node. */ private Node node; /** * Creates a remote adapter for the given local node. * * @param node local node * @param factory remote adapter factory * @throws RemoteException on RMI errors */ public ServerNode(Node node, RemoteAdapterFactory factory) throws RemoteException { super(node, factory); this.node = node; } /** {@inheritDoc} */ public RemoteNode addNode(String path) throws RepositoryException, RemoteException { try { return getRemoteNode(node.addNode(path)); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public RemoteNode addNode(String path, String type) throws RepositoryException, RemoteException { try { return getRemoteNode(node.addNode(path, type)); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public RemoteProperty getProperty(String path) throws RepositoryException, RemoteException { try { return getFactory().getRemoteProperty(node.getProperty(path)); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public RemoteIterator getProperties() throws RepositoryException, RemoteException { try { return getFactory().getRemotePropertyIterator(node.getProperties()); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public RemoteItem getPrimaryItem() throws RepositoryException, RemoteException { try { return getRemoteItem(node.getPrimaryItem()); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public RemoteIterator getProperties(String pattern) throws RepositoryException, RemoteException { try { return getFactory().getRemotePropertyIterator(node.getProperties(pattern)); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public RemoteIterator getProperties(String[] globs) throws RepositoryException, RemoteException { try { return getFactory().getRemotePropertyIterator(node.getProperties(globs)); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public RemoteIterator getReferences() throws RepositoryException, RemoteException { try { return getFactory().getRemotePropertyIterator(node.getReferences()); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public RemoteIterator getReferences(String name) throws RepositoryException, RemoteException { try { return getFactory().getRemotePropertyIterator(node.getReferences(name)); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public String getIdentifier() throws RepositoryException, RemoteException { try { return node.getIdentifier(); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ @SuppressWarnings("deprecation") public String getUUID() throws RepositoryException, RemoteException { try { return node.getUUID(); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public boolean hasNodes() throws RepositoryException, RemoteException { try { return node.hasNodes(); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public boolean hasProperties() throws RepositoryException, RemoteException { try { return node.hasProperties(); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public boolean hasProperty(String path) throws RepositoryException, RemoteException { try { return node.hasProperty(path); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public RemoteNodeType[] getMixinNodeTypes() throws RepositoryException, RemoteException { try { return getRemoteNodeTypeArray(node.getMixinNodeTypes()); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public RemoteNodeType getPrimaryNodeType() throws RepositoryException, RemoteException { try { return getFactory().getRemoteNodeType(node.getPrimaryNodeType()); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public boolean isNodeType(String type) throws RepositoryException, RemoteException { try { return node.isNodeType(type); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public RemoteIterator getNodes() throws RepositoryException, RemoteException { try { return getFactory().getRemoteNodeIterator(node.getNodes()); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public RemoteIterator getNodes(String pattern) throws RepositoryException, RemoteException { try { return getFactory().getRemoteNodeIterator(node.getNodes(pattern)); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public RemoteIterator getNodes(String[] globs) throws RepositoryException, RemoteException { try { return getFactory().getRemoteNodeIterator(node.getNodes(globs)); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public RemoteNode getNode(String path) throws RepositoryException, RemoteException { try { return getRemoteNode(node.getNode(path)); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public boolean hasNode(String path) throws RepositoryException, RemoteException { try { return node.hasNode(path); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public RemoteProperty setProperty(String name, Value value) throws RepositoryException, RemoteException { try { return getFactory().getRemoteProperty(node.setProperty(name, value)); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public RemoteProperty setProperty(String name, Value value, int type) throws RepositoryException, RemoteException { try { Property property = node.setProperty(name, value, type); if (property == null) { return null; } else { return getFactory().getRemoteProperty(property); } } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public void addMixin(String name) throws RepositoryException, RemoteException { try { node.addMixin(name); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public boolean canAddMixin(String name) throws RepositoryException, RemoteException { try { return node.canAddMixin(name); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public void removeMixin(String name) throws RepositoryException, RemoteException { try { node.removeMixin(name); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public void orderBefore(String src, String dst) throws RepositoryException, RemoteException { try { node.orderBefore(src, dst); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public RemoteProperty setProperty(String name, Value[] values) throws RepositoryException, RemoteException { try { Property property = node.setProperty(name, values); if (property == null) { return null; } else { return getFactory().getRemoteProperty(property); } } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public RemoteNodeDefinition getDefinition() throws RepositoryException, RemoteException { try { return getFactory().getRemoteNodeDefinition(node.getDefinition()); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public RemoteVersion checkin() throws RepositoryException, RemoteException { try { return getFactory().getRemoteVersion(node.checkin()); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public void checkout() throws RepositoryException, RemoteException { try { node.checkout(); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public String getCorrespondingNodePath(String workspace) throws RepositoryException, RemoteException { try { return node.getCorrespondingNodePath(workspace); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public int getIndex() throws RepositoryException, RemoteException { try { return node.getIndex(); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public RemoteIterator merge(String workspace, boolean bestEffort) throws RepositoryException, RemoteException { try { return getFactory().getRemoteNodeIterator(node.merge(workspace, bestEffort)); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public void cancelMerge(String versionUUID) throws RepositoryException, RemoteException { try { node.cancelMerge(getVersionByUUID(versionUUID)); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public void doneMerge(String versionUUID) throws RepositoryException, RemoteException { try { node.doneMerge(getVersionByUUID(versionUUID)); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public void restore(String version, boolean removeExisting) throws RepositoryException, RemoteException { try { node.restore(version, removeExisting); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public void restoreByUUID(String versionUUID, boolean removeExisting) throws RepositoryException, RemoteException { try { node.restore(getVersionByUUID(versionUUID), removeExisting); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public void restore(String versionUUID, String path, boolean removeExisting) throws RepositoryException, RemoteException { try { node.restore(getVersionByUUID(versionUUID), path, removeExisting); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public void restoreByLabel(String label, boolean removeExisting) throws RepositoryException, RemoteException { try { node.restoreByLabel(label, removeExisting); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public void update(String workspace) throws RepositoryException, RemoteException { try { node.update(workspace); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public boolean holdsLock() throws RepositoryException, RemoteException { try { return node.holdsLock(); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public boolean isCheckedOut() throws RepositoryException, RemoteException { try { return node.isCheckedOut(); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public RemoteVersionHistory getVersionHistory() throws RepositoryException, RemoteException { try { return getFactory().getRemoteVersionHistory(node.getVersionHistory()); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public RemoteVersion getBaseVersion() throws RepositoryException, RemoteException { try { return getFactory().getRemoteVersion(node.getBaseVersion()); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public boolean isLocked() throws RepositoryException, RemoteException { try { return node.isLocked(); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public RemoteProperty setProperty(String name, Value[] values, int type) throws RepositoryException, RemoteException { try { Property property = node.setProperty(name, values, type); return getFactory().getRemoteProperty(property); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public void unlock() throws RepositoryException, RemoteException { try { node.unlock(); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public RemoteLock getLock() throws RepositoryException, RemoteException { try { return getFactory().getRemoteLock(node.getLock()); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public RemoteLock lock(boolean isDeep, boolean isSessionScoped) throws RepositoryException, RemoteException { try { Lock lock = node.lock(isDeep, isSessionScoped); return getFactory().getRemoteLock(lock); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public RemoteIterator getSharedSet() throws RepositoryException, RemoteException { try { NodeIterator sharedSet = node.getSharedSet(); return getFactory().getRemoteNodeIterator(sharedSet); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public void followLifecycleTransition(String transition) throws RepositoryException, RemoteException { try { node.followLifecycleTransition(transition); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public String[] getAllowedLifecycleTransistions() throws RepositoryException, RemoteException { try { return node.getAllowedLifecycleTransistions(); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public RemoteIterator getWeakReferences() throws RepositoryException, RemoteException { try { return getFactory().getRemotePropertyIterator(node.getWeakReferences()); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public RemoteIterator getWeakReferences(String name) throws RepositoryException, RemoteException { try { return getFactory().getRemotePropertyIterator(node.getWeakReferences(name)); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public void removeShare() throws RepositoryException, RemoteException { try { node.removeShare(); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public void removeSharedSet() throws RepositoryException, RemoteException { try { node.removeSharedSet(); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } /** {@inheritDoc} */ public void setPrimaryType(String nodeTypeName) throws RepositoryException, RemoteException { try { node.setPrimaryType(nodeTypeName); } catch (RepositoryException ex) { throw getRepositoryException(ex); } } //---------- Implementation helper ----------------------------------------- /** * Returns the {@link Version} instance for the given UUID. * * @param versionUUID The UUID of the version. * * @return The version node. * * @throws RepositoryException if an error occurrs accessing the version * node or if the UUID does not denote a version. */ protected Version getVersionByUUID(String versionUUID) throws RepositoryException { // get the version node by its UUID from the version history's session Session session = node.getSession(); Node versionNode = session.getNodeByUUID(versionUUID); // check whether the node is a session, which it should be according // to the spec (methods returning nodes should automatically return // the correct type). if (versionNode instanceof Version) { return (Version) versionNode; } // otherwise fail throw new RepositoryException("Cannot find version " + versionUUID); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy