blob: 62f11580f4d06e162394724a095a9e8858a8ead3 [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.decorator;
import javax.jcr.Item;
import javax.jcr.Node;
import javax.jcr.Property;
import javax.jcr.Repository;
import javax.jcr.Session;
import javax.jcr.Workspace;
import javax.jcr.ValueFactory;
import javax.jcr.ItemVisitor;
import javax.jcr.query.Query;
import javax.jcr.query.QueryResult;
import javax.jcr.query.QueryManager;
import javax.jcr.version.Version;
import javax.jcr.version.VersionHistory;
import javax.jcr.lock.Lock;
/**
* Default implementation of a {@link DecoratorFactory}. All decorator instances
* simply wrap the original instance and forward the call to it.
*/
public class DefaultDecoratorFactory implements DecoratorFactory {
/**
* {@inheritDoc}
*/
public Repository getRepositoryDecorator(Repository repository) {
return new RepositoryDecorator(this, repository);
}
/**
* {@inheritDoc}
*/
public Session getSessionDecorator(Repository repository, Session session) {
return new SessionDecorator(this, repository, session);
}
/**
* {@inheritDoc}
*/
public Workspace getWorkspaceDecorator(Session session, Workspace workspace) {
return new WorkspaceDecorator(this, session, workspace);
}
/**
* {@inheritDoc}
*/
public Node getNodeDecorator(Session session, Node node) {
if (node instanceof Version) {
return getVersionDecorator(session, (Version) node);
} else if (node instanceof VersionHistory) {
return getVersionHistoryDecorator(session, (VersionHistory) node);
} else {
return new NodeDecorator(this, session, node);
}
}
/**
* {@inheritDoc}
*/
public Property getPropertyDecorator(Session session, Property property) {
return new PropertyDecorator(this, session, property);
}
/**
* {@inheritDoc}
*/
public Lock getLockDecorator(Session session, Lock lock) {
return new LockDecorator(this, session, lock);
}
/**
* {@inheritDoc}
*/
public Version getVersionDecorator(Session session, Version version) {
return new VersionDecorator(this, session, version);
}
/**
* {@inheritDoc}
*/
public VersionHistory getVersionHistoryDecorator(Session session,
VersionHistory versionHistory) {
return new VersionHistoryDecorator(this, session, versionHistory);
}
/**
* {@inheritDoc}
*/
public Item getItemDecorator(Session session, Item item) {
if (item instanceof Version) {
return getVersionDecorator(session, (Version) item);
} else if (item instanceof VersionHistory) {
return getVersionHistoryDecorator(session, (VersionHistory) item);
} else if (item instanceof Node) {
return getNodeDecorator(session, (Node) item);
} else if (item instanceof Property) {
return getPropertyDecorator(session, (Property) item);
} else {
return new ItemDecorator(this, session, item);
}
}
/**
* {@inheritDoc}
*/
public QueryManager getQueryManagerDecorator(Session session,
QueryManager queryManager) {
return new QueryManagerDecorator(this, session, queryManager);
}
/**
* {@inheritDoc}
*/
public Query getQueryDecorator(Session session, Query query) {
return new QueryDecorator(this, session, query);
}
/**
* {@inheritDoc}
*/
public QueryResult getQueryResultDecorator(Session session,
QueryResult result) {
return new QueryResultDecorator(this, session, result);
}
/**
* {@inheritDoc}
*/
public ValueFactory getValueFactoryDecorator(Session session,
ValueFactory valueFactory) {
return new ValueFactoryDecorator(this, session, valueFactory);
}
/**
* {@inheritDoc}
*/
public ItemVisitor getItemVisitorDecorator(Session session,
ItemVisitor visitor) {
return new ItemVisitorDecorator(this, session, visitor);
}
}