@Override protected <C extends ConfiguredObject> ListenableFuture<C> addChildAsync(Class<C> childClass, Map<String, Object> attributes) { if(childClass == VirtualHost.class) { throw new UnsupportedOperationException("The redirecting virtualhost node automatically manages the creation" + " of the redirecting virtualhost. Creating it explicitly is not supported."); } else { return super.addChildAsync(childClass, attributes); } }
@Override protected <C extends ConfiguredObject> ListenableFuture<C> addChildAsync(Class<C> childClass, Map<String, Object> attributes) { checkVHostStateIsActive(); return super.addChildAsync(childClass, attributes); }
@Override protected <C extends ConfiguredObject> ListenableFuture<C> addChildAsync(final Class<C> childClass, final Map<String, Object> attributes) { if(childClass == Group.class) { return getObjectFactory().createAsync(childClass, attributes, this); } else { return super.addChildAsync(childClass, attributes); } }
@Override public ListenableFuture<C> execute() { authoriseCreateChild(childClass, attributes); return doAfter(addChildAsync(childClass, attributes), new CallableWithArgument<ListenableFuture<C>, C>() { @Override public ListenableFuture<C> call(final C child) throws Exception { if (child != null) { childAdded(child); } return Futures.immediateFuture(child); } }); }
@Override protected <C extends ConfiguredObject> ListenableFuture<C> addChildAsync(Class<C> childClass, Map<String, Object> attributes) { if (childClass == GroupMember.class) { String memberName = (String) attributes.get(GroupMember.NAME); _groupDatabase.addUserToGroup(memberName, getName()); UUID id = UUID.randomUUID(); Map<String,Object> attrMap = new HashMap<String, Object>(); attrMap.put(GroupMember.ID,id); attrMap.put(GroupMember.NAME, memberName); GroupMemberAdapter groupMemberAdapter = new GroupMemberAdapter(attrMap); groupMemberAdapter.create(); return Futures.immediateFuture((C) groupMemberAdapter); } else { return super.addChildAsync(childClass, attributes); } }
@Override protected <C extends ConfiguredObject> ListenableFuture<C> addChildAsync(Class<C> childClass, Map<String, Object> attributes) { if (childClass == Group.class) { String groupName = (String) attributes.get(ConfiguredObject.NAME); if (getState() != State.ACTIVE) { throw new IllegalConfigurationException(String.format("Group provider '%s' is not activated. Cannot create a group.", getName())); } _groupDatabase.createGroup(groupName); Map<String,Object> attrMap = new HashMap<String, Object>(); UUID id = UUID.randomUUID(); attrMap.put(ConfiguredObject.ID, id); attrMap.put(ConfiguredObject.NAME, groupName); GroupAdapter groupAdapter = new GroupAdapter(attrMap); groupAdapter.create(); return Futures.immediateFuture((C) groupAdapter); } else { return super.addChildAsync(childClass, attributes); } }