/* * 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.core.security; import org.apache.jackrabbit.api.security.authorization.PrivilegeManager; import org.apache.jackrabbit.core.HierarchyManager; import org.apache.jackrabbit.core.fs.FileSystem; import org.apache.jackrabbit.spi.commons.conversion.NamePathResolver; import javax.jcr.Session; import javax.security.auth.Subject; import java.io.File; /** * An <code>AMContext</code> is used to provide <code>Session</code> specific * context information for an <code>AccessManager</code>. * * @see AccessManager#init(AMContext) * @see AccessManager#init(AMContext, org.apache.jackrabbit.core.security.authorization.AccessControlProvider, org.apache.jackrabbit.core.security.authorization.WorkspaceAccessManager) */ public class AMContext { /** * the physical home dir */ private final File physicalHomeDir; /** * the virtual jackrabbit filesystem */ private final FileSystem fs; /** * Subject whose access rights the access manager should reflect */ private final Subject subject; private final Session session; /** * hierarchy manager for resolving ItemId-to-Path mapping */ private final HierarchyManager hierMgr; /** * The privilege manager */ private final PrivilegeManager privilegeMgr; /** * name and path resolver for resolving JCR name/path strings to internal * Name/Path objects (and vice versa). */ private final NamePathResolver resolver; /** * name of the workspace */ private final String workspaceName; /** * Creates a new <code>AMContext</code>. * * @param physicalHomeDir the physical home directory * @param fs the virtual jackrabbit filesystem * @param session the session. * @param subject subject whose access rights should be reflected * @param hierMgr hierarchy manager * @param privilegeMgr privilege manager * @param resolver name and path resolver * @param workspaceName workspace name */ public AMContext(File physicalHomeDir, FileSystem fs, Session session, Subject subject, HierarchyManager hierMgr, PrivilegeManager privilegeMgr, NamePathResolver resolver, String workspaceName) { this.physicalHomeDir = physicalHomeDir; this.fs = fs; this.session = session; this.subject = subject; this.hierMgr = hierMgr; this.privilegeMgr = privilegeMgr; this.resolver = resolver; this.workspaceName = workspaceName; } /** * Returns the physical home directory * * @return the physical home directory */ public File getHomeDir() { return physicalHomeDir; } /** * Returns the virtual filesystem * * @return the virtual filesystem */ public FileSystem getFileSystem() { return fs; } /** * Returns the session * * @return the session */ public Session getSession() { return session; } /** * Returns the subject * * @return the subject */ public Subject getSubject() { return subject; } /** * Returns the hierarchy manager * * @return the hierarchy manager */ public HierarchyManager getHierarchyManager() { return hierMgr; } /** * Returns the privilege manager * * @return the privilege manager */ public PrivilegeManager getPrivilegeManager() { return privilegeMgr; } /** * Returns the namespace resolver * * @return the namespace resolver */ public NamePathResolver getNamePathResolver() { return resolver; } /** * Returns the name of the workspace. * * @return the name of the workspace */ public String getWorkspaceName() { return workspaceName; } }