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 */ 018package org.fcrepo.kernel.modeshape.rdf.impl; 019 020import com.hp.hpl.jena.rdf.model.Resource; 021import org.fcrepo.kernel.api.models.FedoraResource; 022import org.fcrepo.kernel.api.identifiers.IdentifierConverter; 023 024import javax.jcr.RepositoryException; 025import java.security.AccessControlException; 026 027import static java.util.stream.Stream.of; 028import static com.hp.hpl.jena.datatypes.xsd.XSDDatatype.XSDboolean; 029import static com.hp.hpl.jena.graph.NodeFactory.createLiteral; 030import static com.hp.hpl.jena.graph.Triple.create; 031import static org.fcrepo.kernel.api.RdfLexicon.WRITABLE; 032import static org.fcrepo.kernel.modeshape.utils.FedoraTypesUtils.getJcrNode; 033 034/** 035 * @author cabeer 036 * @since 10/1/14 037 */ 038public class AclRdfContext extends NodeRdfContext { 039 /** 040 * Default constructor. 041 * 042 * @param resource the resource 043 * @param idTranslator the property of idTranslator 044 * @throws javax.jcr.RepositoryException if repository exception occurred 045 */ 046 public AclRdfContext(final FedoraResource resource, 047 final IdentifierConverter<Resource, FedoraResource> idTranslator) throws RepositoryException { 048 super(resource, idTranslator); 049 050 boolean writable = false; 051 try { 052 getJcrNode(resource()).getSession().checkPermission( resource().getPath(), "add_node,set_property,remove" ); 053 writable = true; 054 } catch ( final AccessControlException ex ) { 055 writable = false; 056 } 057 concat(of(create(subject(), WRITABLE.asNode(), createLiteral(String.valueOf(writable), XSDboolean)))); 058 } 059}