/** * {@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); } }
@Override public Resource call() throws Exception { Resource result=sut.createResource(resource,initialData,getSessionConfiguration(resource)); assertThat(result,notNullValue()); assertThat((Object)result.id().name(),equalTo((Object)id)); assertThat(result.id().templateId(),equalTo(BookHandler.ID)); assertThat(resourceHandler.hasResource(resourceName),equalTo(false)); return result; } }
@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)); }
public void testCreate$exceptionPath() throws Exception { BookContainerHandler containerHandler = new BookContainerHandler(); BookHandler resourceHandler=new BookHandler(); final Name<String> containerName = name("container"); final NameProvider provider = NameProvider.create(containerName); assertThat(provider.pendingMemberNames(),not((contains(memberName)))); try { resourceHandler.get(memberSnapshot); fail("Resource should not be available in the resource handler"); } catch (UnknownResourceException e1) {