blob: 262dbdb3a3efc2b69fc0684c5331eeb800ddd18a [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. 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.base;
import java.io.IOException;
import java.io.InputStream;
import javax.jcr.AccessDeniedException;
import javax.jcr.InvalidItemStateException;
import javax.jcr.InvalidSerializedDataException;
import javax.jcr.ItemExistsException;
import javax.jcr.NamespaceRegistry;
import javax.jcr.NoSuchWorkspaceException;
import javax.jcr.PathNotFoundException;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.UnsupportedRepositoryOperationException;
import javax.jcr.Workspace;
import javax.jcr.lock.LockException;
import javax.jcr.nodetype.ConstraintViolationException;
import javax.jcr.nodetype.NodeTypeManager;
import javax.jcr.observation.ObservationManager;
import javax.jcr.query.QueryManager;
import javax.jcr.version.Version;
import javax.jcr.version.VersionException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.sax.SAXResult;
import javax.xml.transform.stream.StreamSource;
import org.xml.sax.ContentHandler;
/**
* Workspace base class.
*/
public class BaseWorkspace implements Workspace {
private static final NamespaceRegistry NAMESPACE_REGISTRY =
new BaseNamespaceRegistry();
/** Not implemented. {@inheritDoc} */
public Session getSession() {
throw new UnsupportedOperationException();
}
/** Not implemented. {@inheritDoc} */
public String getName() {
throw new UnsupportedOperationException();
}
/**
* Implemented by calling <code>copy(getName(), srcAbsPath, destAbsPath).
* {@inheritDoc}
*/
public void copy(String srcAbsPath, String destAbsPath)
throws ConstraintViolationException, VersionException,
AccessDeniedException, PathNotFoundException, ItemExistsException,
LockException, RepositoryException {
copy(getName(), srcAbsPath, destAbsPath);
}
/** Not implemented. {@inheritDoc} */
public void copy(String srcWorkspace, String srcAbsPath, String destAbsPath)
throws NoSuchWorkspaceException, ConstraintViolationException,
VersionException, AccessDeniedException, PathNotFoundException,
ItemExistsException, LockException, RepositoryException {
throw new UnsupportedRepositoryOperationException();
}
/** Not implemented. {@inheritDoc} */
public void clone(String srcWorkspace, String srcAbsPath,
String destAbsPath, boolean removeExisting)
throws NoSuchWorkspaceException, ConstraintViolationException,
VersionException, AccessDeniedException, PathNotFoundException,
ItemExistsException, LockException, RepositoryException {
throw new UnsupportedRepositoryOperationException();
}
/** Not implemented. {@inheritDoc} */
public void move(String srcAbsPath, String destAbsPath)
throws ConstraintViolationException, VersionException,
AccessDeniedException, PathNotFoundException, ItemExistsException,
LockException, RepositoryException {
throw new UnsupportedRepositoryOperationException();
}
/** Not implemented. {@inheritDoc} */
public void restore(Version[] versions, boolean removeExisting)
throws ItemExistsException,
UnsupportedRepositoryOperationException, VersionException,
LockException, InvalidItemStateException, RepositoryException {
throw new UnsupportedRepositoryOperationException();
}
/** Not implemented. {@inheritDoc} */
public QueryManager getQueryManager() throws RepositoryException {
throw new UnsupportedRepositoryOperationException();
}
/** Not implemented. {@inheritDoc} */
public NamespaceRegistry getNamespaceRegistry() throws RepositoryException {
return NAMESPACE_REGISTRY;
}
/** Not implemented. {@inheritDoc} */
public NodeTypeManager getNodeTypeManager() throws RepositoryException {
throw new UnsupportedRepositoryOperationException();
}
/** Not implemented. {@inheritDoc} */
public ObservationManager getObservationManager()
throws UnsupportedRepositoryOperationException, RepositoryException {
throw new UnsupportedRepositoryOperationException();
}
/** Not implemented. {@inheritDoc} */
public String[] getAccessibleWorkspaceNames() throws RepositoryException {
return new String[] { getName() };
}
/** Not implemented. {@inheritDoc} */
public ContentHandler getImportContentHandler(String parentAbsPath,
int uuidBehavior) throws PathNotFoundException,
ConstraintViolationException, VersionException, LockException,
RepositoryException {
throw new UnsupportedRepositoryOperationException();
}
/**
* Implemented by calling
* <code>transformer.transform(new StreamSource(in), new SAXResult(handler))</code>
* with an identity {@link Transformer Transformer} and a
* {@link ContentHandler ContentHandler} instance created by calling
* <code>getImportContentHandler(parentAbsPath, uuidBehaviour)</code>.
* Possible {@see TransformerException TransformerExceptions} and
* {@see TransformerConfigurationException TransformerConfigurationExceptions}
* are converted to {@link IOException IOExceptions}.
* {@inheritDoc}
*/
public void importXML(String parentAbsPath, InputStream in, int uuidBehavior)
throws IOException, PathNotFoundException, ItemExistsException,
ConstraintViolationException, InvalidSerializedDataException,
LockException, RepositoryException {
try {
ContentHandler handler =
getImportContentHandler(parentAbsPath, uuidBehavior);
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer();
transformer.transform(new StreamSource(in), new SAXResult(handler));
} catch (TransformerConfigurationException e) {
throw new IOException(
"Unable to configure a SAX transformer: " + e.getMessage());
} catch (TransformerException e) {
throw new IOException(
"Unable to deserialize a SAX stream: " + e.getMessage());
}
}
}