| /* |
| * 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.oak.api; |
| |
| import java.io.Closeable; |
| import org.jetbrains.annotations.NotNull; |
| |
| /** |
| * Authentication session for accessing a content repository. |
| * A {@code ContentSession} provides access to the actual |
| * content through its {@link #getLatestRoot()} method. |
| * <p> |
| * This interface is thread-safe. |
| */ |
| public interface ContentSession extends Closeable { |
| |
| /** |
| * This methods provides access to information related to authentication |
| * and authorization of this content session. Multiple calls to this method |
| * may return different instances which are guaranteed to be equal wrt. |
| * to {@link Object#equals(Object)}. |
| * |
| * @return immutable {@link AuthInfo} instance |
| */ |
| @NotNull |
| AuthInfo getAuthInfo(); |
| |
| /** |
| * The name of the workspace this {@code ContentSession} instance has |
| * been created for. If no workspace name has been specified during |
| * repository login this method will return the name of the default |
| * workspace. |
| * <p> |
| * TODO clarify workspace handling once multiple workspaces are |
| * supported. See OAK-118. |
| * |
| * @return name of the workspace this instance has been created for or |
| * {@code null} if this content session is repository bound. |
| */ |
| String getWorkspaceName(); |
| |
| /** |
| * The current head root as seen by this content session. Use |
| * {@link Root#commit()} to atomically apply the changes made in that |
| * subtree the underlying Microkernel. |
| * <p> |
| * The root instance gives you a stable view of the tree at the time the |
| * root is acquired. In certain setups (i.e. clusters) changes committed |
| * through other sessions might not be immediately reflected through this |
| * call. <p> |
| * Please note this method is possibly expensive because it internally reads |
| * from the backend to detect if there were any changes (from any session). |
| * |
| * @return the current head root |
| */ |
| @NotNull |
| Root getLatestRoot(); |
| } |