001/* 002 * Licensed to DuraSpace under one or more contributor license agreements. 003 * See the NOTICE file distributed with this work for additional information 004 * regarding copyright ownership. 005 * 006 * DuraSpace licenses this file to you under the Apache License, 007 * Version 2.0 (the "License"); you may not use this file except in 008 * compliance with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018 019package org.fcrepo.kernel.api.services; 020 021import org.apache.jena.rdf.model.Model; 022import org.fcrepo.kernel.api.Transaction; 023import org.fcrepo.kernel.api.identifiers.FedoraId; 024import org.fcrepo.kernel.api.models.WebacAcl; 025 026/** 027 * Service for creating and retrieving {@link WebacAcl} 028 * 029 * @author peichman 030 * @author whikloj 031 * @since 6.0.0 032 */ 033public interface WebacAclService { 034 035 /** 036 * Retrieve an existing WebACL by transaction and path 037 * 038 * @param fedoraId the fedoraID to the resource the ACL is part of 039 * @param transaction the transaction 040 * @return retrieved ACL 041 */ 042 WebacAcl find(final Transaction transaction, final FedoraId fedoraId); 043 044 /** 045 * Retrieve or create a new WebACL by transaction and path 046 * 047 * @param transaction the transaction 048 * @param fedoraId the fedoraID to the resource the ACL is part of 049 * @param userPrincipal the user creating the ACL. 050 * @param model the contents of the ACL RDF. 051 */ 052 void create(final Transaction transaction, final FedoraId fedoraId, final String userPrincipal, 053 final Model model); 054}