@Override public void visitMembershipAwareContainerTemplate(MembershipAwareContainerTemplate template) { visitContainerTemplate(template); this.introspector.membershipAware=true; this.introspector.membershipPredicate=template.membershipPredicate(); this.introspector.membershipRelation=template.membershipRelation(); }
@Override public final MembershipRelation membershipRelation() { return template().membershipRelation(); }
@Override public final URI membershipPredicate() { return template().membershipPredicate(); }
@Override protected void configureValidationConstraints(ValidatorBuilder builder, Individual<?, ?> individual, DataSet metadata) { super.configureValidationConstraints(builder, individual, metadata); builder.withPropertyConstraint(ValidationConstraintFactory.mandatoryPropertyValues(individual.property(containerTemplate().membershipRelation().term().as(URI.class)))); Property rootProperty = individual.property(LDP.MEMBERSHIP_RESOURCE.as(URI.class)); if(rootProperty!=null) { builder.withPropertyConstraint(ValidationConstraintFactory.readOnlyProperty(rootProperty)); } else { builder.withPropertyConstraint(ValidationConstraintFactory.readOnlyProperty(LDP.MEMBERSHIP_RESOURCE.as(URI.class))); } }
final void configureMemberValidationConstraints(ValidatorBuilder builder, Individual<?, ?> individual, DataSet metadata) { URI predicate = containerTemplate().membershipPredicate(); switch(containerTemplate().membershipRelation()) { case HAS_MEMBER: configureHasMemberValidationConstraints(builder,individual,metadata,predicate); break; case IS_MEMBER_OF: configureIsMemberOfValidationConstraints(builder,individual,metadata,predicate); break; default: throw new AssertionError("Unsupported membership relation "+containerTemplate().membershipRelation()); } }
final void fillInMemberMetadata(ContentPreferences contentPreferences, Individual<?,?> individual, Context ctx) { if(!contentPreferences.mayInclude(Preference.MEMBERSHIP_TRIPLES)) { return; } URI predicate = containerTemplate().membershipPredicate(); switch(containerTemplate().membershipRelation()) { case HAS_MEMBER: populateHasMember(individual, ctx, predicate); break; case IS_MEMBER_OF: populateIsMemberOf(individual, ctx, predicate); break; default: throw new IllegalStateException("Unsupported membership relation "+containerTemplate().membershipRelation()); } }
@Override protected void fillInMetadata(ContentPreferences contentPreferences, Individual<?, ?> individual, Context ctx) { super.fillInMetadata(contentPreferences,individual,ctx); T template = containerTemplate(); individual. addValue( ctx.property(RDF.TYPE), ctx.reference(containerType())). addValue( ctx.property(template.membershipRelation().term()), ctx.reference(template.membershipPredicate())); Individual<?, ?> membershipResource=null; if(!isRoot()) { membershipResource = ctx.newIndividual(parent()); } else { membershipResource = ctx.reference(LDP.MEMBER_SUBJECT); } individual. addValue( ctx.property(LDP.MEMBERSHIP_RESOURCE), membershipResource); if(contentPreferences.mayInclude(Preference.MEMBERSHIP_TRIPLES)) { fillInMemberMetadata(contentPreferences,membershipResource,ctx); } }