@Test public void testValidateArguments() { FunctionArgumentAttributeValue stringAttr1 = null; FunctionArgumentAttributeValue stringAttr2 = null; FunctionArgumentAttributeValue stringAttr3 = null; FunctionArgumentAttributeValue intAttr = null; try { stringAttr1 = new FunctionArgumentAttributeValue(DataTypes.DT_STRING.createAttributeValue("abc")); stringAttr2 = new FunctionArgumentAttributeValue(DataTypes.DT_STRING.createAttributeValue("def")); stringAttr3 = new FunctionArgumentAttributeValue(DataTypes.DT_STRING.createAttributeValue("ghi")); intAttr = new FunctionArgumentAttributeValue(DataTypes.DT_INTEGER.createAttributeValue(1)); } catch (Exception e) { fail("creating attribute e="+ e); } FunctionDefinitionEquality<String> fd = new FunctionDefinitionEquality<String>(XACML3.ID_FUNCTION_STRING_EQUAL, DataTypes.DT_STRING); List<String> convertedValues = new ArrayList<String>(); List<FunctionArgument> listFunctionArguments = new ArrayList<FunctionArgument>(); listFunctionArguments.add(stringAttr1); listFunctionArguments.add(stringAttr2); Status status = fd.validateArguments(listFunctionArguments, convertedValues); assertTrue(status.isOk()); assertEquals(convertedValues.size(),2); listFunctionArguments.remove(1); status = fd.validateArguments(listFunctionArguments, convertedValues); assertFalse(status.isOk()); assertEquals("Expected 2 arguments, got 1", status.getStatusMessage()); assertEquals("urn:oasis:names:tc:xacml:1.0:status:processing-error", status.getStatusCode().getStatusCodeValue().stringValue()); listFunctionArguments.add(stringAttr2); listFunctionArguments.add(stringAttr3); status = fd.validateArguments(listFunctionArguments, convertedValues); assertFalse(status.isOk()); assertEquals("Expected 2 arguments, got 3", status.getStatusMessage()); assertEquals("urn:oasis:names:tc:xacml:1.0:status:processing-error", status.getStatusCode().getStatusCodeValue().stringValue()); listFunctionArguments.clear(); listFunctionArguments.add(null); listFunctionArguments.add(stringAttr1); status = fd.validateArguments(listFunctionArguments, convertedValues); assertFalse(status.isOk()); assertEquals("Got null argument at arg index 0", status.getStatusMessage()); assertEquals("urn:oasis:names:tc:xacml:1.0:status:processing-error", status.getStatusCode().getStatusCodeValue().stringValue()); listFunctionArguments.clear(); listFunctionArguments.add(stringAttr1); Bag bag = new Bag(); FunctionArgument bagArg = new FunctionArgumentBag(bag); listFunctionArguments.add(bagArg); status = fd.validateArguments(listFunctionArguments, convertedValues); assertFalse(status.isOk()); assertEquals("Expected a simple value, saw a bag at arg index 1", status.getStatusMessage()); assertEquals("urn:oasis:names:tc:xacml:1.0:status:processing-error", status.getStatusCode().getStatusCodeValue().stringValue()); listFunctionArguments.clear(); listFunctionArguments.add(stringAttr1); listFunctionArguments.add(intAttr); status = fd.validateArguments(listFunctionArguments, convertedValues); assertFalse(status.isOk()); assertEquals("Expected data type 'string' saw 'integer' at arg index 1", status.getStatusMessage()); assertEquals("urn:oasis:names:tc:xacml:1.0:status:processing-error", status.getStatusCode().getStatusCodeValue().stringValue()); }
public Status validateArguments(List<FunctionArgument> listFunctionArguments, List<I> convertedValues) { Status listLengthStatus = validateArgumentListLength(listFunctionArguments); if ( ! listLengthStatus.isOk()) { return listLengthStatus; } for (int i = 0; i < listFunctionArguments.size(); i++) { FunctionArgument functionArgument = listFunctionArguments.get(i); ConvertedArgument<I> argument = new ConvertedArgument<I>(functionArgument, getDataTypeArgs(), false); if ( ! argument.isOk()) { return new StdStatus(argument.getStatus().getStatusCode(), argument.getStatus().getStatusMessage() + " at arg index " + i ); } if (convertedValues != null) { convertedValues.add(argument.getValue()); } } return StdStatus.STATUS_OK; }
FunctionDefinitionHomogeneousSimple extends FunctionDefinitionBase<O,I> { public Status validateArguments(List<FunctionArgument> listFunctionArguments, List<I> convertedValues) { Status listLengthStatus = validateArgumentListLength(listFunctionArguments); if ( ! listLengthStatus.isOk()) { return listLengthStatus; } for (int i = 0; i < listFunctionArguments.size(); i++) { FunctionArgument functionArgument = listFunctionArguments.get(i); ConvertedArgument<I> argument = new ConvertedArgument<I>(functionArgument, getDataTypeArgs(), false); if ( ! argument.isOk()) { return new StdStatus(argument.getStatus().getStatusCode(), argument.getStatus().getStatusMessage() + " at arg index " + i ); } if (convertedValues != null) { convertedValues.add(argument.getValue()); } } return StdStatus.STATUS_OK; } }
FunctionDefinitionHomogeneousSimple extends FunctionDefinitionBase<O,I> { public Status validateArguments(List<FunctionArgument> listFunctionArguments, List<I> convertedValues) { Status listLengthStatus = validateArgumentListLength(listFunctionArguments); if ( ! listLengthStatus.isOk()) { return listLengthStatus; } for (int i = 0; i < listFunctionArguments.size(); i++) { FunctionArgument functionArgument = listFunctionArguments.get(i); ConvertedArgument<I> argument = new ConvertedArgument<I>(functionArgument, getDataTypeArgs(), false); if ( ! argument.isOk()) { return new StdStatus(argument.getStatus().getStatusCode(), argument.getStatus().getStatusMessage() + " at arg index " + i ); } if (convertedValues != null) { convertedValues.add(argument.getValue()); } } return StdStatus.STATUS_OK; } FunctionDefinitionHomogeneousSimple(Identifier idIn, DataType<O> dataTypeReturnIn, DataType<I> dataTypeArgsIn, Integer nArgs); }
FunctionDefinitionHomogeneousSimple extends FunctionDefinitionBase<O,I> { public Status validateArguments(List<FunctionArgument> listFunctionArguments, List<I> convertedValues) { Status listLengthStatus = validateArgumentListLength(listFunctionArguments); if ( ! listLengthStatus.isOk()) { return listLengthStatus; } for (int i = 0; i < listFunctionArguments.size(); i++) { FunctionArgument functionArgument = listFunctionArguments.get(i); ConvertedArgument<I> argument = new ConvertedArgument<I>(functionArgument, getDataTypeArgs(), false); if ( ! argument.isOk()) { return new StdStatus(argument.getStatus().getStatusCode(), argument.getStatus().getStatusMessage() + " at arg index " + i ); } if (convertedValues != null) { convertedValues.add(argument.getValue()); } } return StdStatus.STATUS_OK; } FunctionDefinitionHomogeneousSimple(Identifier idIn, DataType<O> dataTypeReturnIn, DataType<I> dataTypeArgsIn, Integer nArgs); Integer getNumArgs(); Status validateArguments(List<FunctionArgument> listFunctionArguments, List<I> convertedValues); Status validateArgumentListLength(List<FunctionArgument> listFunctionArguments); }
FunctionDefinitionHomogeneousSimple extends FunctionDefinitionBase<O,I> { public Status validateArguments(List<FunctionArgument> listFunctionArguments, List<I> convertedValues) { Status listLengthStatus = validateArgumentListLength(listFunctionArguments); if ( ! listLengthStatus.isOk()) { return listLengthStatus; } for (int i = 0; i < listFunctionArguments.size(); i++) { FunctionArgument functionArgument = listFunctionArguments.get(i); ConvertedArgument<I> argument = new ConvertedArgument<I>(functionArgument, getDataTypeArgs(), false); if ( ! argument.isOk()) { return new StdStatus(argument.getStatus().getStatusCode(), argument.getStatus().getStatusMessage() + " at arg index " + i ); } if (convertedValues != null) { convertedValues.add(argument.getValue()); } } return StdStatus.STATUS_OK; } FunctionDefinitionHomogeneousSimple(Identifier idIn, DataType<O> dataTypeReturnIn, DataType<I> dataTypeArgsIn, Integer nArgs); Integer getNumArgs(); Status validateArguments(List<FunctionArgument> listFunctionArguments, List<I> convertedValues); Status validateArgumentListLength(List<FunctionArgument> listFunctionArguments);  }