private InMemoryResource createMemberResource(ResourceId resourceId) { checkNotNull(resourceId,"Member resource identifier cannot be null"); checkState(!this.members.containsKey(resourceId),"A resource with id '%s' is already a member of the container",resourceId); return createChild(resourceId,template().memberTemplate()); }
@Override public ResourceTemplate memberTemplate() { return ImmutableTemplateFactory.newImmutable(template().memberTemplate()); }
@Override public Resource addMember(ResourceId resourceId) { checkNotNull(resourceId,"Member resource identifier cannot be null"); Key memberId = Key.newInstance(resourceId); checkState(!this.members.containsKey(memberId),"A resource with id '%s' is already a member of the container",resourceId); JPAResource newResource=createChild(resourceId,template().memberTemplate()); createMember(memberId); return newResource; }
/** * NOTE: For the time being containers will always behave as containers. * Whenever we support downgrading containers to resources the visitor will * have to be updated to reflect that. */ private void verifyInteractionModel(InteractionModel interactionModel) { if(interactionModel==null) { return; } Set<InteractionModel> acceptable=Sets.newHashSet(); containerTemplate().memberTemplate().accept(new AcceptableInteractionModelCollector(acceptable)); if(!acceptable.contains(interactionModel)) { throw new UnsupportedInteractionModelException(interactionModel,acceptable); } }
@Override DelegatedResourceSnapshot addMember(Name<?> resourceName, DelegatedResourceSnapshot ctx) { checkNotNull(resourceName,"Member resource name cannot be null"); ContainerTemplate containerTemplate=(ContainerTemplate)template(); DelegatedResourceSnapshot newMember=ctx.newChildResource(ResourceId.createId(resourceName, containerTemplate.memberTemplate()),DelegatedResourceSnapshot.class); this.members.addMember(newMember); newMember.markNew(); ctx.markDirty(); if(LOGGER.isTraceEnabled()) { LOGGER.trace("Added member '{}' to '{}'",newMember.resourceId(),ctx.resourceId()); } return newMember; }