/** * {@inheritDoc} */ @Override public final Status status() { Status result=Status.PUBLISHED; if(this.endpoint.deleted()!=null) { return Status.GONE; } return result; }
/** * {@inheritDoc} */ @Override public Endpoint endpointOfResource(ResourceId id) { this.readLock.lock(); try { Endpoint endpoint = this.endpointsByResourceName.get(id); if(endpoint!=null && endpoint.deleted()!=null) { endpoint=null; } return endpoint; } finally { this.readLock.unlock(); } }
private Endpoint verifyEndpoint(String path, Resource resource) { Endpoint endpoint = findEndpoint(resource); assertThat(endpoint,notNullValue()); assertThat(endpoint.path(),equalTo(path)); assertThat(endpoint.deleted(),nullValue()); return endpoint; }
@Override public URI resolve(ResourceSnapshot resource) { ResourceId resourceId = ResourceId.createId( resource.name(), resource.templateId()); try { Endpoint endpoint = context(). resolveResource( resourceId); URI result = null; if(endpoint!=null && endpoint.deleted()==null) { result=this.canonicalBase.resolve(endpoint.path()); } return result; } catch (ApplicationEngineException e) { throw new SnapshotResolutionException("Could not resolve endpoint for resource '"+resourceId+"'",e); } }
private ResourceSnapshot resolveManagedResource(URI path) { try { Endpoint endpoint= applicationEngine(). endpointManagementService(). resolveEndpoint(path.toString()); ResourceSnapshot result=null; if(endpoint!=null && endpoint.deleted()==null) { org.ldp4j.application.kernel.resource.Resource resource = context(). resolveResource(endpoint); if(resource!=null) { ResourceId resourceId = resource.id(); result= this.session. find( ResourceSnapshot.class, resourceId.name(), context().resourceTemplate(resource).handlerClass()); } } return result; } catch (Exception e) { throw new SnapshotResolutionException("Could not resolve resource for endpoint '"+this.canonicalBase.resolve(path)+"'",e); } } }
@Test public void testResolverSnapshotResolver$resolveEndpoint$endpointGone() throws Exception { final URI base = URI.create("http://www.examples.org/base/"); final String path="resource/path/"; new Expectations() {{ engine.unwrap(DefaultApplicationEngine.class);result=engine; engine.endpointManagementService();result=endpointManagementService; endpointManagementService.resolveEndpoint(path);result=endpoint; endpoint.deleted();result=new Date(); }}; new MockUp<ApplicationEngine>() { @Mock public ApplicationEngine engine() throws ApplicationEngineException { return engine; } }; CoreRuntimeDelegate sut=new CoreRuntimeDelegate(); ResourceSnapshotResolver resolver = sut.createResourceResolver(base, session); assertThat(resolver.resolve(base.resolve(path)),nullValue()); }
@Test public void testResolverSnapshotResolver$resolveEndpoint$kernelResourceNotFound() throws Exception { final URI base = URI.create("http://www.examples.org/base/"); final String path="resource/path/"; new Expectations() {{ engine.unwrap(DefaultApplicationEngine.class);result=engine; engine.endpointManagementService();result=endpointManagementService; endpointManagementService.resolveEndpoint(path);result=endpoint; endpoint.deleted();result=null; engine.unwrap(DefaultApplicationEngine.class);result=engine; engine.activeContext();result=context; context.resolveResource(endpoint);result=null; }}; new MockUp<ApplicationEngine>() { @Mock public ApplicationEngine engine() throws ApplicationEngineException { return engine; } }; CoreRuntimeDelegate sut=new CoreRuntimeDelegate(); ResourceSnapshotResolver resolver = sut.createResourceResolver(base, session); assertThat(resolver.resolve(base.resolve(path)),nullValue()); }
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; }
@Test public void testResolverSnapshotResolver$resolveSnapshot$resourceGone() throws Exception { final URI base = URI.create("http://www.examples.org/base/"); final ResourceId resourceId = ResourceId.createId(NamingScheme.getDefault().name("name"),"template"); new Expectations() {{ snapshot.name();result=resourceId.name(); snapshot.templateId();result=resourceId.templateId(); engine.unwrap(DefaultApplicationEngine.class);result=engine; engine.activeContext();result=context; context.resolveResource(resourceId);result=endpoint; endpoint.deleted();result=new Date(); }}; new MockUp<ApplicationEngine>() { @Mock public ApplicationEngine engine() throws ApplicationEngineException { return engine; } }; CoreRuntimeDelegate sut=new CoreRuntimeDelegate(); ResourceSnapshotResolver resolver = sut.createResourceResolver(base, session); assertThat(resolver.resolve(snapshot),nullValue()); }
@Test public void testResolverSnapshotResolver$resolveSnapshot$happyPath() throws Exception { final URI base = URI.create("http://www.examples.org/base/"); final String path="resource/path/"; final ResourceId resourceId = ResourceId.createId(NamingScheme.getDefault().name("name"),"template"); new Expectations() {{ snapshot.name();result=resourceId.name(); snapshot.templateId();result=resourceId.templateId(); engine.unwrap(DefaultApplicationEngine.class);result=engine; engine.activeContext();result=context; context.resolveResource(resourceId);result=endpoint; endpoint.deleted();result=null; endpoint.path();result=path; }}; new MockUp<ApplicationEngine>() { @Mock public ApplicationEngine engine() throws ApplicationEngineException { return engine; } }; CoreRuntimeDelegate sut=new CoreRuntimeDelegate(); ResourceSnapshotResolver resolver = sut.createResourceResolver(base, session); assertThat(resolver.resolve(snapshot),equalTo(base.resolve(path))); }
assertThat(endpoint.deleted(),equalTo(nlmd));
@Test public void testResolverSnapshotResolver$resolveEndpoint$happyPath() throws Exception { final URI base = URI.create("http://www.examples.org/base/"); final String path="resource/path/"; final ResourceId resourceId = ResourceId.createId(NamingScheme.getDefault().name("name"),"template"); new Expectations() {{ engine.unwrap(DefaultApplicationEngine.class);result=engine; engine.endpointManagementService();result=endpointManagementService; endpointManagementService.resolveEndpoint(path);result=endpoint; endpoint.deleted();result=null; engine.unwrap(DefaultApplicationEngine.class);result=engine; engine.activeContext();result=context; context.resolveResource(endpoint);result=resource; resource.id();result=resourceId; engine.unwrap(DefaultApplicationEngine.class);result=engine; engine.activeContext();result=context; context.resourceTemplate(resource);result=template; template.handlerClass();result=ResourceHandler.class; session.find(ResourceSnapshot.class,resourceId.name(),ResourceHandler.class);result=snapshot; }}; new MockUp<ApplicationEngine>() { @Mock public ApplicationEngine engine() throws ApplicationEngineException { return engine; } }; CoreRuntimeDelegate sut=new CoreRuntimeDelegate(); ResourceSnapshotResolver resolver = sut.createResourceResolver(base, session); assertThat(resolver.resolve(base.resolve(path)),sameInstance(snapshot)); }