/** * Create a new name provider. * * @param resource * the name of the owner of the name provider. * @return a name provider. */ public static NameProvider create(Name<String> resource) { Objects.requireNonNull(resource,"Owner name cannot be null"); return new NameProvider(resource); }
/** * Add a name to the list of available names for a given attachment. * * @param attachmentId * the name of the attachment. * @param nextName * the member name. */ public void addAttachmentName(String attachmentId, Name<String> nextName) { nameSource(attachmentId).addName(nextName); }
@SuppressWarnings("unchecked") @Test public void testCreate$happyPath() throws Exception { BookContainerHandler containerHandler = new BookContainerHandler(); BookHandler resourceHandler=new BookHandler(); final Name<String> containerName = name("container"); final NameProvider provider = NameProvider.create(containerName); final Name<String> memberName = name("resource"); provider.addMemberName(memberName); containerHandler.addNameProvider(provider.owner(),provider); containerHandler.setBookHandler(resourceHandler); final DataSet data = DataSets.createDataSet(memberName); new Expectations() {{ snapshot.name();result=containerName; memberSnapshot.name();result=memberName; }}; containerHandler.create(snapshot, data, session); assertThat(provider.pendingMemberNames(),not((contains(memberName)))); assertThat(resourceHandler.get(memberSnapshot),sameInstance(data)); }
@SuppressWarnings("unchecked") @Test public void testMemberNameLifecycle() { Name<String> owner = name("test"); NameProvider sut = NameProvider.create(owner); sut.addMemberName(name("m1")); sut.addMemberName(name("m2")); assertThat(sut.pendingMemberNames(),contains(name("m1"),name("m2"))); assertThat(sut.nextMemberName(),equalTo(name("m1"))); assertThat(sut.pendingMemberNames(),contains(name("m2"))); assertThat(sut.nextMemberName(),equalTo(name("m2"))); assertThat(sut.pendingMemberNames(),hasSize(0)); try { sut.nextMemberName(); fail("Should not provide member names if not available"); } catch (ApplicationRuntimeException e) { assertThat(e.getMessage(),equalTo("No more member names available for resource 'test'")); } }
@Test public void testCreate$nonNull() throws Exception { Name<String> owner = name("test"); NameProvider sut = NameProvider.create(owner); assertThat(sut,notNullValue()); assertThat(sut.owner(),equalTo(owner)); assertThat(sut.pendingMemberNames(),hasSize(0)); assertThat(sut.pendingResourceNames(),hasSize(0)); }
@SuppressWarnings("unchecked") @Test public void testAttachmentNameLifecycle() { Name<String> owner = name("test"); NameProvider sut = NameProvider.create(owner); sut.addAttachmentName("attachment",name("m1")); sut.addAttachmentName("attachment",name("m2")); assertThat(sut.pendingAttachmentNames("attachment"),contains(name("m1"),name("m2"))); assertThat(sut.nextAttachmentName("attachment"),equalTo(name("m1"))); assertThat(sut.pendingAttachmentNames("attachment"),contains(name("m2"))); assertThat(sut.nextAttachmentName("attachment"),equalTo(name("m2"))); assertThat(sut.pendingAttachmentNames("attachment"),hasSize(0)); try { sut.nextAttachmentName("attachment"); fail("Should not provide attachment names if not available"); } catch (ApplicationRuntimeException e) { assertThat(e.getMessage(),equalTo("No more attachment <<attachment>> names available for resource 'test'")); } }
@SuppressWarnings("unchecked") @Test public void testResourceNameLifecycle() { Name<String> owner = name("test"); NameProvider sut = NameProvider.create(owner); sut.addResourceName(name("m1")); sut.addResourceName(name("m2")); assertThat(sut.pendingResourceNames(),contains(name("m1"),name("m2"))); assertThat(sut.nextResourceName(),equalTo(name("m1"))); assertThat(sut.pendingResourceNames(),contains(name("m2"))); assertThat(sut.nextResourceName(),equalTo(name("m2"))); assertThat(sut.pendingResourceNames(),hasSize(0)); try { sut.nextResourceName(); fail("Should not provide resource names if not available"); } catch (ApplicationRuntimeException e) { assertThat(e.getMessage(),equalTo("No more resource names available for resource 'test'")); } }
@Test public void testAttachmentNameLifecycle$unknownAttachment() { Name<String> owner = name("test"); NameProvider sut = NameProvider.create(owner); assertThat(sut.pendingAttachmentNames("attachment"),hasSize(0)); try { sut.nextAttachmentName("attachment"); fail("Should not provide attachment names if not available"); } catch (ApplicationRuntimeException e) { assertThat(e.getMessage(),equalTo("No more attachment <<attachment>> names available for resource 'test'")); } }
NameProvider nameProvider = NameProvider.create(resourceName); final Name<String> id = NamingScheme.getDefault().name("book1"); nameProvider.addMemberName(id);
@Test(expected=NullPointerException.class) public void testCreate$null() throws Exception { NameProvider.create(null); }
/** * {@inheritDoc}<br> * * Create a new book resource. */ @Override public ResourceSnapshot create(ContainerSnapshot container, DataSet representation, WriteSession session) { NameProvider nameProvider = nameProvider(container.name()); Name<?> nextName = nameProvider.nextMemberName(); try { bookHandler().add(nextName,representation); ResourceSnapshot newMember = container.addMember(nextName); session.saveChanges(); return newMember; } catch (Exception e) { bookHandler().remove(nextName); throw new ApplicationRuntimeException("Could not create member",e); } }
BookHandler resourceHandler=new BookHandler(); final Name<String> containerName = name("container"); final NameProvider provider = NameProvider.create(containerName); final Name<String> memberName = name("resource"); provider.addMemberName(memberName); containerHandler.addNameProvider(provider.owner(),provider); containerHandler.setBookHandler(resourceHandler); assertThat(e.getCause(),instanceOf(WriteSessionException.class)); assertThat(e.getCause().getMessage(),equalTo("FAILURE")); assertThat(provider.pendingMemberNames(),not((contains(memberName)))); try { resourceHandler.get(memberSnapshot);