org.apache.jackrabbit.jca.JCASessionHandle Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jackrabbit-jca Show documentation
Show all versions of jackrabbit-jca Show documentation
A resource adapter for Jackrabbit as specified by JCA 1.0 and 1.5.
/*
* 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.jca;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.security.AccessControlException;
import javax.jcr.AccessDeniedException;
import javax.jcr.Credentials;
import javax.jcr.InvalidItemStateException;
import javax.jcr.InvalidSerializedDataException;
import javax.jcr.Item;
import javax.jcr.ItemExistsException;
import javax.jcr.ItemNotFoundException;
import javax.jcr.LoginException;
import javax.jcr.NamespaceException;
import javax.jcr.Node;
import javax.jcr.PathNotFoundException;
import javax.jcr.Property;
import javax.jcr.Repository;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.UnsupportedRepositoryOperationException;
import javax.jcr.ValueFactory;
import javax.jcr.Workspace;
import javax.jcr.lock.LockException;
import javax.jcr.nodetype.ConstraintViolationException;
import javax.jcr.nodetype.NoSuchNodeTypeException;
import javax.jcr.retention.RetentionManager;
import javax.jcr.security.AccessControlManager;
import javax.jcr.version.VersionException;
import javax.transaction.xa.XAException;
import javax.transaction.xa.XAResource;
import javax.transaction.xa.Xid;
import org.xml.sax.ContentHandler;
import org.xml.sax.SAXException;
/**
* This class implements the JCA implementation of session.
*/
public final class JCASessionHandle implements Session, XAResource {
/**
* Managed connection.
*/
private JCAManagedConnection mc;
/**
* Construct a new session.
*/
public JCASessionHandle(JCAManagedConnection mc) {
this.mc = mc;
}
/**
* Return the managed connection.
*/
public JCAManagedConnection getManagedConnection() {
return mc;
}
/**
* Set the managed connection.
*/
public void setManagedConnection(JCAManagedConnection mc) {
this.mc = mc;
}
/**
* Return the session.
*/
private Session getSession() {
return mc.getSession(this);
}
/**
* Return the repository.
*/
public Repository getRepository() {
return getSession().getRepository();
}
/**
* Return the user id.
*/
public String getUserID() {
return getSession().getUserID();
}
/**
* Return the attribute.
*/
public Object getAttribute(String name) {
return getSession().getAttribute(name);
}
/**
* Return the attribute names.
*/
public String[] getAttributeNames() {
return getSession().getAttributeNames();
}
/**
* Return the workspace.
*/
public Workspace getWorkspace() {
return getSession().getWorkspace();
}
/**
* Impersonate another user.
*/
public Session impersonate(Credentials cred)
throws LoginException, RepositoryException {
throw new RepositoryException("impersonate(..) not supported in managed environment");
}
/**
* Return the root node.
*/
public Node getRootNode()
throws RepositoryException {
return getSession().getRootNode();
}
/**
* Return node by UUID.
*/
@SuppressWarnings("deprecation")
public Node getNodeByUUID(String uuid)
throws ItemNotFoundException, RepositoryException {
return getSession().getNodeByUUID(uuid);
}
/**
* Return the item.
*/
public Item getItem(String arg0)
throws PathNotFoundException, RepositoryException {
return getSession().getItem(arg0);
}
/**
* Return true if item exists.
*/
public boolean itemExists(String arg0)
throws RepositoryException {
return getSession().itemExists(arg0);
}
/**
* Move the item.
*/
public void move(String arg0, String arg1)
throws ItemExistsException, PathNotFoundException, VersionException,
ConstraintViolationException, LockException, RepositoryException {
getSession().move(arg0, arg1);
}
/**
* Save the session.
*/
public void save()
throws AccessDeniedException, ItemExistsException,
ConstraintViolationException, InvalidItemStateException, VersionException,
LockException, NoSuchNodeTypeException, RepositoryException {
getSession().save();
}
/**
* Refresh the session.
*/
public void refresh(boolean arg0)
throws RepositoryException {
getSession().refresh(arg0);
}
/**
* Return true if it has pending changes.
*/
public boolean hasPendingChanges()
throws RepositoryException {
return getSession().hasPendingChanges();
}
/**
* Return the value factory.
*/
public ValueFactory getValueFactory()
throws UnsupportedRepositoryOperationException, RepositoryException {
return getSession().getValueFactory();
}
/**
* Check permission.
*/
public void checkPermission(String arg0, String arg1)
throws AccessControlException, RepositoryException {
getSession().checkPermission(arg0, arg1);
}
/**
* Return the import content handler.
*/
public ContentHandler getImportContentHandler(String arg0, int arg1)
throws PathNotFoundException, ConstraintViolationException, VersionException,
LockException, RepositoryException {
return getSession().getImportContentHandler(arg0, arg1);
}
/**
* Import XML content.
*/
public void importXML(String arg0, InputStream arg1, int arg2)
throws IOException, PathNotFoundException, ItemExistsException,
ConstraintViolationException, VersionException, InvalidSerializedDataException,
LockException, RepositoryException {
getSession().importXML(arg0, arg1, arg2);
}
/**
* Export system view.
*/
public void exportSystemView(String arg0, ContentHandler arg1, boolean arg2, boolean arg3)
throws PathNotFoundException, SAXException, RepositoryException {
getSession().exportSystemView(arg0, arg1, arg2, arg3);
}
/**
* Export system view.
*/
public void exportSystemView(String arg0, OutputStream arg1, boolean arg2, boolean arg3)
throws IOException, PathNotFoundException, RepositoryException {
getSession().exportSystemView(arg0, arg1, arg2, arg3);
}
/**
* Export document view.
*/
public void exportDocumentView(String arg0, ContentHandler arg1, boolean arg2, boolean arg3)
throws PathNotFoundException, SAXException, RepositoryException {
getSession().exportDocumentView(arg0, arg1, arg2, arg3);
}
/**
* Export document view.
*/
public void exportDocumentView(String arg0, OutputStream arg1, boolean arg2, boolean arg3)
throws IOException, PathNotFoundException, RepositoryException {
getSession().exportDocumentView(arg0, arg1, arg2, arg3);
}
/**
* Set namespace prefix.
*/
public void setNamespacePrefix(String arg0, String arg1)
throws NamespaceException, RepositoryException {
getSession().setNamespacePrefix(arg0, arg1);
}
/**
* Return namespace prefixes.
*/
public String[] getNamespacePrefixes()
throws RepositoryException {
return getSession().getNamespacePrefixes();
}
/**
* Return namespace URI.
*/
public String getNamespaceURI(String arg0)
throws NamespaceException, RepositoryException {
return getSession().getNamespaceURI(arg0);
}
/**
* Return namespace prefix.
*/
public String getNamespacePrefix(String arg0)
throws NamespaceException, RepositoryException {
return getSession().getNamespacePrefix(arg0);
}
/**
* Logout the session.
*/
public void logout() {
mc.closeHandle(this);
}
/**
* Return true if session is live.
*/
public boolean isLive() {
return getSession().isLive();
}
/**
* Add lock token.
*/
@SuppressWarnings("deprecation")
public void addLockToken(String arg0) {
getSession().addLockToken(arg0);
}
/**
* Return the lock tokens.
*/
@SuppressWarnings("deprecation")
public String[] getLockTokens() {
return getSession().getLockTokens();
}
/**
* Remove lock token.
*/
@SuppressWarnings("deprecation")
public void removeLockToken(String arg0) {
getSession().removeLockToken(arg0);
}
public AccessControlManager getAccessControlManager()
throws RepositoryException {
return getSession().getAccessControlManager();
}
public Node getNode(String arg0) throws RepositoryException {
return getSession().getNode(arg0);
}
public Node getNodeByIdentifier(String arg0) throws RepositoryException {
return getSession().getNodeByIdentifier(arg0);
}
public Property getProperty(String arg0) throws RepositoryException {
return getSession().getProperty(arg0);
}
public RetentionManager getRetentionManager()
throws RepositoryException {
return getSession().getRetentionManager();
}
public boolean hasCapability(String arg0, Object arg1, Object[] arg2)
throws RepositoryException {
return getSession().hasCapability(arg0, arg1, arg2);
}
public boolean hasPermission(String arg0, String arg1)
throws RepositoryException {
return getSession().hasPermission(arg0, arg1);
}
public boolean nodeExists(String path) throws RepositoryException {
return getSession().nodeExists(path);
}
public boolean propertyExists(String path) throws RepositoryException {
return getSession().propertyExists(path);
}
public void removeItem(String path) throws RepositoryException {
getSession().removeItem(path);
}
//--------------------------------------------------------< XAResource >--
private XAResource getXAResource() throws XAException {
Session session = getSession();
if (session instanceof XAResource) {
return (XAResource) session;
} else {
throw new XAException(
"XA transactions are not supported with " + session);
}
}
public void start(Xid xid, int flags) throws XAException {
getXAResource().start(xid, flags);
}
public void end(Xid xid, int flags) throws XAException {
getXAResource().end(xid, flags);
}
public int prepare(Xid xid) throws XAException {
return getXAResource().prepare(xid);
}
public void rollback(Xid xid) throws XAException {
getXAResource().rollback(xid);
}
public void commit(Xid xid, boolean onePhase) throws XAException {
getXAResource().commit(xid, onePhase);
}
public void forget(Xid xid) throws XAException {
getXAResource().forget(xid);
}
public Xid[] recover(int flag) throws XAException {
return getXAResource().recover(flag);
}
public boolean isSameRM(XAResource xares) throws XAException {
if (xares instanceof JCASessionHandle) {
xares = ((JCASessionHandle) xares).getXAResource();
}
return getXAResource().isSameRM(xares);
}
public int getTransactionTimeout() throws XAException {
return getXAResource().getTransactionTimeout();
}
public boolean setTransactionTimeout(int seconds) throws XAException {
return getXAResource().setTransactionTimeout(seconds);
}
}