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-api:0.2.2
024 *   Bundle      : ldp4j-application-api-0.2.2.jar
025 * #-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=#
026 */
027package org.ldp4j.application.ext.annotations;
028
029import java.lang.annotation.Documented;
030import java.lang.annotation.ElementType;
031import java.lang.annotation.Retention;
032import java.lang.annotation.RetentionPolicy;
033import java.lang.annotation.Target;
034
035import org.ldp4j.application.ext.ResourceHandler;
036
037/**
038 * Used for defining templates for Indirect Container LDP Resources.
039 */
040@Documented
041@Retention(RetentionPolicy.RUNTIME)
042@Target({ElementType.TYPE})
043public @interface IndirectContainer {
044
045  /**
046   * The identifier of the template. The identifier must be
047   * application-unique.
048   *
049   * @return the identifier of the template.
050   */
051  String id();
052
053  /**
054   * The human-based name of the template.
055   *
056   * @return the name of the template.
057   */
058  String name() default "";
059
060  /**
061   * A description of the purpose of the template.
062   *
063   * @return the description of the template
064   */
065  String description() default "";
066
067  /**
068   * The attachments of the template.
069   *
070   * @return the attachments of the template
071   */
072  Attachment[] attachments() default {};
073
074  /**
075   * The {@code ResourceHandler} class that will handle the member resources
076   * of the container.
077   *
078   * @return the class that will handle the members of the container.
079   */
080  Class<? extends ResourceHandler> memberHandler();
081
082  /**
083   * If defined, the path prefix to be used when publishing member resources.
084   *
085   * @return the path prefix used for publishing member resources
086   */
087  String memberPath() default "";
088
089  /**
090   * The membership predicate to use for relating the member resources with
091   * the container.
092   *
093   * @return the membership predicate used for relating container members
094   */
095  String membershipPredicate() default "http://www.w3.org/ns/ldp#member";
096
097  /**
098   * The membership relation to use for defining direction of the relationship
099   * between the member resources with the container.
100   *
101   * @return the membership relation used for defining direction of the
102   *         relationship between the member resources with the container.
103   */
104  MembershipRelation membershipRelation() default MembershipRelation.HAS_MEMBER;
105
106  /**
107   * The predicate that should be used for specifying the indirect identifier
108   * (URIRef) of a member of the container
109   *
110   * @return the predicate used for specifying the indirect identifier of a
111   *         member of the container
112   */
113  String insertedContentRelation() default "http://www.w3.org/ns/ldp#MemberSubject";
114
115}