001/** 002 * #-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# 003 * This file is part of the LDP4j Project: 004 * http://www.ldp4j.org/ 005 * 006 * Center for Open Middleware 007 * http://www.centeropenmiddleware.com/ 008 * #-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# 009 * Copyright (C) 2014-2016 Center for Open Middleware. 010 * #-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# 011 * Licensed under the Apache License, Version 2.0 (the "License"); 012 * you may not use this file except in compliance with the License. 013 * You may obtain a copy of the License at 014 * 015 * http://www.apache.org/licenses/LICENSE-2.0 016 * 017 * Unless required by applicable law or agreed to in writing, software 018 * distributed under the License is distributed on an "AS IS" BASIS, 019 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 020 * See the License for the specific language governing permissions and 021 * limitations under the License. 022 * #-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# 023 * Artifact : org.ldp4j.framework:ldp4j-application-kernel-api:0.2.1 024 * Bundle : ldp4j-application-kernel-api-0.2.1.jar 025 * #-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# 026 */ 027package org.ldp4j.application.kernel.resource; 028 029import java.net.URI; 030import java.util.Date; 031import java.util.Set; 032 033import org.ldp4j.application.data.constraints.Constraints; 034import org.ldp4j.application.engine.context.HttpRequest; 035import org.ldp4j.application.kernel.constraints.ConstraintReport; 036import org.ldp4j.application.kernel.constraints.ConstraintReportId; 037 038/** 039 * TODO: Update API to enable using Individual identifiers instead of plain 040 * URIs when dealing with indirect identifiers. 041 */ 042public interface Resource { 043 044 ResourceId id(); 045 046 void setIndirectId(URI indirectId); 047 048 URI indirectId(); 049 050 boolean isRoot(); 051 052 ResourceId parentId(); 053 054 Attachment findAttachment(ResourceId resourceId); 055 056 Resource attach(String attachmentId, ResourceId resourceId); 057 058 <T extends Resource> T attach(String attachmentId, ResourceId resourceId, Class<? extends T> clazz); 059 060 boolean detach(Attachment attachment); 061 062 Set<? extends Attachment> attachments(); 063 064 void accept(ResourceVisitor visitor); 065 066 ConstraintReport addConstraintReport(Constraints constraints, Date date, HttpRequest request); 067 068 Set<ConstraintReportId> constraintReports(); 069 070 void removeFailure(ConstraintReport report); 071 072}