@Override public void visitContainer(Container resource) { InMemoryResourceRepository.this.containers.put(resource.id(),resource); } }
@Override public void visitContainer(Container resource) { visitResource(resource); for(ResourceId id:PersistentResourceState.this.deletedMembers.keySet()) { Member member=resource.findMember(id); resource.removeMember(member); } for(DelegatedResourceSnapshot member:PersistentResourceState.this.newMembers.values()) { Resource addedResource = resource.addMember(member.resourceId()); member.setDelegate(addedResource); } }
private String generatePathForMember(Resource child, Container parent, String desiredPath) throws EndpointNotFoundException { Member member = parent.findMember(child.id()); if(member!=null) { Endpoint endpoint=getResourceEndpoint(parent.id()); ContainerTemplate parentTemplate=this.templateManagementService.templateOfId(parent.id().templateId(),ContainerTemplate.class); if(parentTemplate==null) { throw new IllegalStateException("Could not find template resource '"+parent+"'"); } String slugPath=getSlugPath(parent, desiredPath); return PathBuilder. create(). addSegment(endpoint.path()). addSegment(parentTemplate.memberPath().or("")). addSegment(member.number()). addSegment(slugPath). build(); } return null; }
@Override public void execute(ResourceRepository sut) { Resource result1 = sut.resourceOfId(resourceId); debug("Retrieving resource {%s}: %s",resourceId,result1); Resource attachment = result1.attach(PersonHandler.ADDRESS_ID,attachmentId); sut.add(attachment); debug("Created attachment: %s",attachment); Container result2 = sut.containerOfId(containerId); debug("Retrieving container {%s}: %s",containerId,result2); Slug slug1=result2.addSlug("test"); debug("Created slug: %s",slug1); Slug slug2=result2.addSlug("anotherTest"); debug("Created slug: %s",slug2); Resource member = result2.addMember(memberId); sut.add(member); debug("Created member: %s",member); } }
@Test public void testAddSlug$new$derived_path$not_mergeable$lower() throws Exception { Slug original = this.container.addSlug("slug"); original.nextPath(); assertThat(original.version(),equalTo(1L)); original.nextPath(); assertThat(original.version(),equalTo(2L)); original.nextPath(); assertThat(original.version(),equalTo(3L)); Slug slug = this.container.addSlug("slug_2"); assertThat(slug,notNullValue()); assertThat(slug.preferredPath(),equalTo("slug_2")); assertThat(slug.version(),equalTo(1L)); assertThat(original.version(),equalTo(3L)); }
@Override public void visitContainer(Container resource) { visitResource(resource); for(DelegatedResourceSnapshot member:TransientResourceState.this.members(ctx)) { Resource newResource = resource.addMember(member.resourceId()); member.setDelegate(newResource); } }
@Override public void visitContainer(Container resource) { for(Member member:resource.members()) { DelegatedResourceSnapshot memberResourceSnapshot = session.resolveResource(member.memberId()); checkState(memberResourceSnapshot!=null,"Could not resolve member %s of container %s",member,resource); memberRepository.registerMember(memberResourceSnapshot); } } }
@Test public void testAddSlug$new$derived_path$not_mergeable$equal() throws Exception { Slug original = this.container.addSlug("slug"); original.nextPath(); assertThat(original.version(),equalTo(1L)); original.nextPath(); assertThat(original.version(),equalTo(2L)); original.nextPath(); assertThat(original.version(),equalTo(3L)); Slug slug = this.container.addSlug("slug_3"); assertThat(slug,sameInstance(original)); assertThat(original.version(),equalTo(3L)); }
/** * {@inheritDoc} */ @Override public final Collection<PublicResource> members() { List<PublicResource> members=Lists.newArrayList(); for(Member member:resolveAs(Container.class).members()) { members.add(createResource(member.memberId())); } return Collections.unmodifiableList(members); }
static JPASlug create(String slugPath, Container container) { Matcher matcher=SLUG_PATH_PATTERN.matcher(slugPath); String path=slugPath; long version=0; if(matcher.matches()) { String strVersion = matcher.group(3); if(strVersion!=null) { String strPath = matcher.group(1); if(!strPath.isEmpty()) { path=strPath; version=Long.parseLong(strVersion); } } } return new JPASlug(container.id(),path,version); }
static InMemorySlug create(String slugPath, Container container) { Matcher matcher = SLUG_PATH_PATTERN.matcher(slugPath); String path=slugPath; long version=0; if(matcher.matches()) { String strVersion = matcher.group(3); if(strVersion!=null) { String strPath = matcher.group(1); if(!strPath.isEmpty()) { path=strPath; version=Long.parseLong(strVersion); } } } return new InMemorySlug(container.id(),path,version); } }
@Override public void visitContainer(Container resource) { DelegatedContainerSnapshot snapshot=new DelegatedContainerSnapshot(resource.id(),handlerClass(template,ContainerHandler.class)); snapshot.setParentState(ParentState.parentOf(resource)); snapshot.setPersistencyState(PersistencyState.newPersistentReferenceState(resource.id(),template)); result.set(snapshot); } }
@Test public void testAddSlug$new$derived_path$mergeable() throws Exception { Slug original = this.container.addSlug("slug"); Slug slug = this.container.addSlug("slug_23"); assertThat(slug,sameInstance(original)); assertThat(original.version(),equalTo(23L)); assertThat(this.container.findSlug("slug"),sameInstance(original)); }
@Test public void testCreate$compositeCornerCaseSimpleClash() throws Exception { InMemorySlug slug=InMemorySlug.create("__23", container); System.out.println(slug); assertThat(slug.preferredPath(),equalTo("_")); assertThat(slug.version(),equalTo(23L)); assertThat(slug.containerId(),equalTo(this.container.id())); }
@Test public void testCreate$compositeCornerCaseComplexClash() throws Exception { InMemorySlug slug=InMemorySlug.create("__23_24", container); System.out.println(slug); assertThat(slug.preferredPath(),equalTo("__23")); assertThat(slug.version(),equalTo(24L)); assertThat(slug.containerId(),equalTo(this.container.id())); }
@Test public void testCreate$compositeCornerCase() throws Exception { InMemorySlug slug=InMemorySlug.create("__", container); System.out.println(slug); assertThat(slug.preferredPath(),equalTo("__")); assertThat(slug.version(),equalTo(0L)); assertThat(slug.containerId(),equalTo(this.container.id())); }
@Test public void testCreate$simpleClash() throws Exception { InMemorySlug slug=InMemorySlug.create("slug_23", container); System.out.println(slug); assertThat(slug.preferredPath(),equalTo("slug")); assertThat(slug.version(),equalTo(23L)); assertThat(slug.containerId(),equalTo(this.container.id())); }