private DelegatedResourceSnapshot instantiateTemplate(ResourceId resourceId, ResourceTemplate template) { DelegatedResourceSnapshot snapshot=null; TemplateIntrospector introspector=TemplateIntrospector.newInstance(template); if(!introspector.isContainer()) { snapshot=new DelegatedResourceSnapshot(resourceId,template.handlerClass()); } else { snapshot=new DelegatedContainerSnapshot(resourceId,handlerClass(template,ContainerHandler.class)); } return snapshot; }
@Override public void visitResourceTemplate(ResourceTemplate template) { TemplateIntrospector introspector = TemplateIntrospector.newInstance(template); assertThat(introspector.template(),sameInstance(template)); assertThat(introspector.isResource(),equalTo(true)); assertThat(introspector.isContainer(),equalTo(false)); assertThat(introspector.isBasicContainer(),equalTo(false)); assertThat(introspector.isMembershipAwareContainer(),equalTo(false)); assertThat(introspector.isDirectContainer(),equalTo(false)); assertThat(introspector.isIndirectContainer(),equalTo(false)); }
@Override public void visitBasicContainerTemplate(BasicContainerTemplate template) { TemplateIntrospector introspector = TemplateIntrospector.newInstance(template); assertThat(introspector.template(),sameInstance((ResourceTemplate)template)); assertThat(introspector.isResource(),equalTo(false)); assertThat(introspector.isContainer(),equalTo(true)); assertThat(introspector.isBasicContainer(),equalTo(true)); assertThat(introspector.isMembershipAwareContainer(),equalTo(false)); assertThat(introspector.isDirectContainer(),equalTo(false)); assertThat(introspector.isIndirectContainer(),equalTo(false)); }
protected final JPAResource createChild(ResourceId resourceId, ResourceTemplate template) { JPAResource newResource=null; if(!TemplateIntrospector.newInstance(template).isContainer()) { newResource=new JPAResource(resourceId,this.id); } else { newResource=new JPAContainer(resourceId,this.id); } newResource.setTemplateLibrary(getTemplateLibrary()); return newResource; }
protected final InMemoryResource createChild(ResourceId resourceId, ResourceTemplate template) { InMemoryResource newResource=null; if(!TemplateIntrospector.newInstance(template).isContainer()) { newResource=new InMemoryResource(resourceId,this.id); } else { newResource=new InMemoryContainer(resourceId,this.id); } newResource.setTemplateLibrary(getTemplateLibrary()); return newResource; }
Capabilities endpointCapabilities(Endpoint endpoint) { MutableCapabilities result=new MutableCapabilities(); Resource resource = resolveResource(endpoint); ResourceTemplate template=resourceTemplate(resource); Class<? extends ResourceHandler> handlerClass = template.handlerClass(); result.setQueryable(Queryable.class.isAssignableFrom(handlerClass)); result.setModifiable(Modifiable.class.isAssignableFrom(handlerClass)); result.setDeletable(Deletable.class.isAssignableFrom(handlerClass) && !resource.isRoot()); // TODO: Analyze how to provide patch support result.setPatchable(false); TemplateIntrospector introspector = TemplateIntrospector.newInstance(template); result.setFactory(introspector.isContainer()); return result; }
@Override public void visitDirectContainerTemplate(DirectContainerTemplate template) { TemplateIntrospector introspector = TemplateIntrospector.newInstance(template); assertThat(introspector.template(),sameInstance((ResourceTemplate)template)); assertThat(introspector.isResource(),equalTo(false)); assertThat(introspector.isContainer(),equalTo(true)); assertThat(introspector.isBasicContainer(),equalTo(false)); assertThat(introspector.isMembershipAwareContainer(),equalTo(true)); assertThat(introspector.isDirectContainer(),equalTo(true)); assertThat(introspector.isIndirectContainer(),equalTo(false)); assertThat(introspector.getMembershipPredicate(),equalTo(template.membershipPredicate())); assertThat(introspector.getMembershipRelation(),equalTo(template.membershipRelation())); }
@Override public void visitIndirectContainerTemplate(IndirectContainerTemplate template) { TemplateIntrospector introspector = TemplateIntrospector.newInstance(template); assertThat(introspector.template(),sameInstance((ResourceTemplate)template)); assertThat(introspector.isResource(),equalTo(false)); assertThat(introspector.isContainer(),equalTo(true)); assertThat(introspector.isBasicContainer(),equalTo(false)); assertThat(introspector.isMembershipAwareContainer(),equalTo(true)); assertThat(introspector.isDirectContainer(),equalTo(false)); assertThat(introspector.isIndirectContainer(),equalTo(true)); assertThat(introspector.getMembershipPredicate(),equalTo(template.membershipPredicate())); assertThat(introspector.getMembershipRelation(),equalTo(template.membershipRelation())); assertThat(introspector.getInsertedContentRelation(),equalTo(template.insertedContentRelation())); }
@Override public void visitDelegatedContainerSnapshot(DelegatedContainerSnapshot container) { if(!container.hasMember(child) || !TemplateIntrospector.newInstance(container.template()).isMembershipAwareContainer()) { return; } if(!container.isRoot()) { UnitOfWork.getCurrent().registerDirty(container.parent()); } } }
private URI getIndirectId(Container container, DataSet dataSet) { TemplateIntrospector introspector= TemplateIntrospector. newInstance( this.templateManagementService. templateOfId(container.id().templateId())); if(!introspector.isIndirectContainer()) { return null; } URI insertedContentRelation=introspector.getInsertedContentRelation(); IndirectIdCollector collector= new IndirectIdCollector( false, insertedContentRelation, getInsertedContentRelationProperty(dataSet,insertedContentRelation)); return collector.getIndirectId(); }
private void deleteAttachedResource(DelegatedResourceSnapshot snapshot) { TemplateIntrospector introspector = TemplateIntrospector.newInstance(parent().template()); if(!introspector.isContainer()) { return; } DelegatedContainerSnapshot parent=(DelegatedContainerSnapshot)snapshot; if(parent.softRemoveMember(this)) { UnitOfWork.getCurrent().registerDirty(parent); if(introspector.isMembershipAwareContainer() && !parent.isRoot()) { UnitOfWork.getCurrent().registerDirty(parent.parent()); } } }
DefaultPublicResource createResource(Endpoint endpoint) { if(endpoint==null) { return null; } if(endpoint.deleted()!=null) { return new DefaultGonePublicResource(this.applicationContext,endpoint); } ResourceTemplate resourceTemplate = resolveTemplate(endpoint); TemplateIntrospector introspector = TemplateIntrospector.newInstance(resourceTemplate); DefaultPublicResource resource=null; if(introspector.isBasicContainer()) { resource=new DefaultPublicBasicContainer(this.applicationContext,endpoint); } else if(introspector.isDirectContainer()) { resource=new DefaultPublicDirectContainer(this.applicationContext,endpoint); } else if(introspector.isIndirectContainer()) { resource=new DefaultPublicIndirectContainer(this.applicationContext,endpoint); } else { // Assume RDF source resource=new DefaultPublicRDFSource(this.applicationContext,endpoint); } return resource; }