public DummyAttributeDefinition addAttrDef(DummyObjectClass accountObjectClass, String attrName, Class<?> type, boolean isRequired, boolean isMulti) { DummyAttributeDefinition attrDef = new DummyAttributeDefinition(attrName, type, isRequired, isMulti); accountObjectClass.add(attrDef); return attrDef; }
private void buildAttributes(ObjectClassInfoBuilder icfObjClassBuilder, DummyObjectClass dummyObjectClass) { for (DummyAttributeDefinition dummyAttrDef : dummyObjectClass.getAttributeDefinitions()) { AttributeInfoBuilder attrBuilder = new AttributeInfoBuilder(dummyAttrDef.getAttributeName(), dummyAttrDef.getAttributeType()); attrBuilder.setMultiValued(dummyAttrDef.isMulti()); attrBuilder.setRequired(dummyAttrDef.isRequired()); attrBuilder.setReturnedByDefault(dummyAttrDef.isReturnedByDefault()); icfObjClassBuilder.addAttributeInfo(attrBuilder.build()); } }
protected void checkSchema(String attrName, Collection<Object> values, String operationName) throws SchemaViolationException { if (resource == null || !resource.isEnforceSchema()) { return; } DummyObjectClass accountObjectClass; try { accountObjectClass = getObjectClass(); } catch (Exception e) { // No not enforce schema if the schema is broken (simulated) return; } if (accountObjectClass == null) { // Nothing to check return; } DummyAttributeDefinition attributeDefinition = getAttributeDefinition(attrName); if (attributeDefinition == null) { throw new SchemaViolationException("Attribute "+attrName+" is not defined in resource schema"); } if (attributeDefinition.isRequired() && (values == null || values.isEmpty())) { throw new SchemaViolationException(operationName + " of required attribute "+attrName+" results in no values"); } if (!attributeDefinition.isMulti() && values != null && values.size() > 1) { throw new SchemaViolationException(operationName + " of single-valued attribute "+attrName+" results in "+values.size()+" values"); } }
public boolean isReturnedByDefault(String attrName) { final DummyAttributeDefinition attributeDefinition = getAttributeDefinition(attrName); if (attributeDefinition != null) { return attributeDefinition.isReturnedByDefault(); } else { System.out.println("Warning: attribute " + attrName + " is not defined in " + this); return false; } } }
public DummyAttributeDefinition getAttributeDefinition(String attrName) { for (DummyAttributeDefinition attrDef: attributeDefinitions) { if (attrName.equals(attrDef.getAttributeName())) { return attrDef; } } return null; }
/** * Extend schema in piratey fashion. Arr! This is used in many tests. Lots of attributes, various combination of types, etc. */ public void extendSchemaPirate() throws ConnectException, FileNotFoundException, SchemaViolationException, ConflictException, InterruptedException { populateWithDefaultSchema(); DummyObjectClass accountObjectClass = dummyResource.getAccountObjectClass(); addAttrDef(accountObjectClass, DUMMY_ACCOUNT_ATTRIBUTE_TITLE_NAME, String.class, false, true); addAttrDef(accountObjectClass, DUMMY_ACCOUNT_ATTRIBUTE_SHIP_NAME, String.class, false, false); addAttrDef(accountObjectClass, DUMMY_ACCOUNT_ATTRIBUTE_LOCATION_NAME, String.class, false, false); DummyAttributeDefinition lootAttrDef = addAttrDef(accountObjectClass, DUMMY_ACCOUNT_ATTRIBUTE_LOOT_NAME, Integer.class, false, false); lootAttrDef.setReturnedByDefault(false); DummyAttributeDefinition treasureAttrDef = addAttrDef(accountObjectClass, DUMMY_ACCOUNT_ATTRIBUTE_TREASURE_NAME, String.class, false, false); treasureAttrDef.setReturnedByDefault(false); addAttrDef(accountObjectClass, DUMMY_ACCOUNT_ATTRIBUTE_WEALTH_NAME, Integer.class, false, false); addAttrDef(accountObjectClass, DUMMY_ACCOUNT_ATTRIBUTE_WEAPON_NAME, String.class, false, true); addAttrDef(accountObjectClass, DUMMY_ACCOUNT_ATTRIBUTE_DRINK_NAME, String.class, false, true); addAttrDef(accountObjectClass, DUMMY_ACCOUNT_ATTRIBUTE_QUOTE_NAME, String.class, false, true); addAttrDef(accountObjectClass, DUMMY_ACCOUNT_ATTRIBUTE_GOSSIP_NAME, String.class, false, true); addAttrDef(accountObjectClass, DUMMY_ACCOUNT_ATTRIBUTE_WATER_NAME, String.class, false, false); addAttrDef(accountObjectClass, DUMMY_ACCOUNT_ATTRIBUTE_ENLIST_TIMESTAMP_NAME, ZonedDateTime.class, false, false); DummyObjectClass groupObjectClass = dummyResource.getGroupObjectClass(); addAttrDef(groupObjectClass, DUMMY_GROUP_ATTRIBUTE_DESCRIPTION, String.class, false, false); addAttrDef(groupObjectClass, DUMMY_GROUP_ATTRIBUTE_CC, String.class, false, false); DummyObjectClass privilegeObjectClass = dummyResource.getPrivilegeObjectClass(); addAttrDef(privilegeObjectClass, DUMMY_PRIVILEGE_ATTRIBUTE_POWER, Integer.class, false, false); isExtendedSchema = true; }
throw new InvalidAttributeValueException("Unknown account attribute '"+name+"'"); if (!attrDef.isReturnedByDefault()) { if (attributesToGet != null && !attributesToGet.contains(name)) { continue;
public void addAttributeDefinition(String attributeName, Class<?> attributeType, boolean isRequired, boolean isMulti) { DummyAttributeDefinition attrDef = new DummyAttributeDefinition(attributeName,attributeType,isRequired,isMulti); add(attrDef); }