name = param.getName().getCode(); if (param.getMinimumOccurs() != 0) { return Parameters.cast(group.parameter(name), param.getValueClass());
@Override public int getMinimumOccurs() {return descriptor.getMinimumOccurs();} @Override public int getMaximumOccurs() {return descriptor.getMaximumOccurs();}
/** * Creates a parameter initialized to the values of the given one. */ private ServiceParameter(final ParameterDescriptor<?> parameter) { super(parameter); memberName = getMemberName(parameter); optionality = parameter.getMinimumOccurs() > 0; repeatability = parameter.getMaximumOccurs() > 1; }
/** * Creates a parameter initialized to the values of the given one. */ private ServiceParameter(final ParameterDescriptor<?> parameter) { super(parameter); memberName = getMemberName(parameter); optionality = parameter.getMinimumOccurs() > 0; repeatability = parameter.getMaximumOccurs() > 1; }
/** * Returns {@code true} if the given parameter can be omitted. A parameter can be omitted * if it is not mandatory and has a value equals to the default value. */ private static boolean isOmitted(final ParameterValue<?> parameter) { final Object value = parameter.getValue(); if (value == null) { // Implies that the default value is also null. return true; } final ParameterDescriptor<?> descriptor = parameter.getDescriptor(); return descriptor.getMinimumOccurs() == 0 && value.equals(descriptor.getDefaultValue()); }
/** * Returns {@code true} if the given parameter can be omitted. A parameter can be omitted * if it is not mandatory and has a value equals to the default value. */ private static boolean isOmitted(final ParameterValue<?> parameter) { final Object value = parameter.getValue(); if (value == null) { // Implies that the default value is also null. return true; } final ParameterDescriptor<?> descriptor = parameter.getDescriptor(); return descriptor.getMinimumOccurs() == 0 && value.equals(descriptor.getDefaultValue()); }
if (descriptor.getMinimumOccurs() == 0) { return null; // Test pass.
/** * Creates a new descriptor with the same properties than the {@code provided} one, but completed with * information not found in GML. Those extra information are given by the {@code complete} descriptor. * * <p>It is the caller's responsibility to construct the {@code merged} properties as a merge of the properties * of the two given descriptors. This can be done with the help of {@link #mergeArrays(String, Class, Collection, * Map, Identifier)} among others.</p> */ private static <T> ParameterDescriptor<T> create(final Map<String,?> merged, final ParameterDescriptor<?> provided, final ParameterDescriptor<T> complete) { final Class<T> valueClass = complete.getValueClass(); return new DefaultParameterDescriptor<>(merged, provided.getMinimumOccurs(), provided.getMaximumOccurs(), // Values below this point are not provided in GML documents, // so they must be inferred from the pre-defined descriptor. valueClass, Parameters.getValueDomain(complete), CollectionsExt.toArray(complete.getValidValues(), valueClass), complete.getDefaultValue()); }
/** * Creates a new descriptor with the same properties than the {@code provided} one, but completed with * information not found in GML. Those extra information are given by the {@code complete} descriptor. * * <p>It is the caller's responsibility to construct the {@code merged} properties as a merge of the properties * of the two given descriptors. This can be done with the help of {@link #mergeArrays(String, Class, Collection, * Map, Identifier)} among others.</p> */ private static <T> ParameterDescriptor<T> create(final Map<String,?> merged, final ParameterDescriptor<?> provided, final ParameterDescriptor<T> complete) { final Class<T> valueClass = complete.getValueClass(); return new DefaultParameterDescriptor<>(merged, provided.getMinimumOccurs(), provided.getMaximumOccurs(), // Values below this point are not provided in GML documents, // so they must be inferred from the pre-defined descriptor. valueClass, Parameters.getValueDomain(complete), CollectionsExt.toArray(complete.getValidValues(), valueClass), complete.getDefaultValue()); }
return that.getMinimumOccurs() == getMinimumOccurs() && that.getMaximumOccurs() == getMaximumOccurs() && that.getValidValues() == null &&
return that.getMinimumOccurs() == getMinimumOccurs() && that.getMaximumOccurs() == getMaximumOccurs() && that.getValidValues() == null &&
/** * Tests {@code DefaultParameterDescriptor} constructor * with valid and invalid minimum and maximum values. */ @Test @DependsOnMethod("testOptionalInteger") @SuppressWarnings("UnnecessaryBoxing") public void testRangeValidation() { try { create("Test range", 20, 4, 12); fail("minimum > maximum"); } catch (IllegalArgumentException exception) { assertEquals("Range [20 … 4] is not valid.", exception.getMessage()); } final ParameterDescriptor<Integer> descriptor = create("Test range", 4, 20, 12); assertEquals("name", "Test range", descriptor.getName().getCode()); assertEquals("valueClass", Integer.class, descriptor.getValueClass()); assertNull ("validValues", descriptor.getValidValues()); assertEquals("defaultValue", Integer.valueOf(12), descriptor.getDefaultValue()); assertEquals("minimumValue", Integer.valueOf( 4), descriptor.getMinimumValue()); assertEquals("maximumValue", Integer.valueOf(20), descriptor.getMaximumValue()); assertEquals("minimumOccurs", 1, descriptor.getMinimumOccurs()); assertEquals("maximumOccurs", 1, descriptor.getMaximumOccurs()); }
assertBetween("ParameterDescriptor: getDefaultValue() out of range.", min, max, def); assertBetween("ParameterDescriptor: getMinimumOccurs() shall returns 0 or 1.", 0, 1, object.getMinimumOccurs()); assertEquals("ParameterDescriptor: getMaximumOccurs() shall returns exactly 1.", 1, object.getMaximumOccurs());
assertBetween("ParameterDescriptor: getDefaultValue() out of range.", min, max, def); assertBetween("ParameterDescriptor: getMinimumOccurs() shall returns 0 or 1.", 0, 1, object.getMinimumOccurs()); assertEquals("ParameterDescriptor: getMaximumOccurs() shall returns exactly 1.", 1, object.getMaximumOccurs());
/** * Tests a descriptor for a parameter restricted to some values. * This is typically (but not necessarily) a code list parameter. */ @Test public void testEnumeration() { final String[] enumeration = {"Apple", "Orange", "りんご"}; final ParameterDescriptor<String> descriptor = create( "Enumeration param", String.class, enumeration, "Apple"); assertEquals ("name", "Enumeration param", descriptor.getName().getCode()); assertEquals ("valueClass", String.class, descriptor.getValueClass()); assertArrayEquals("validValues", enumeration, descriptor.getValidValues().toArray()); assertEquals ("defaultValue", "Apple", descriptor.getDefaultValue()); assertNull ("minimumValue", descriptor.getMinimumValue()); assertNull ("maximumValue", descriptor.getMaximumValue()); assertEquals ("minimumOccurs", 1, descriptor.getMinimumOccurs()); assertEquals ("maximumOccurs", 1, descriptor.getMaximumOccurs()); assertNull ("unit", descriptor.getUnit()); /* * Invalid operation: element not in the list of valid elements. */ try { DefaultParameterDescriptor<String> p = create("Enumeration param", String.class, enumeration, "Pear"); fail("Should not be allowed to create " + p); } catch (IllegalArgumentException e) { assertEquals("Parameter “Enumeration param” can not take the “Pear” value.", e.getMessage()); } }
assertEquals ("descriptor.unit", reference.getUnit(), descriptor.getUnit()); assertEquals ("descriptor.valueClass", reference.getValueClass(), descriptor.getValueClass()); assertEquals ("descriptor.minimumOccurs", reference.getMinimumOccurs(), descriptor.getMinimumOccurs()); assertEquals ("descriptor.maximumOccurs", reference.getMaximumOccurs(), descriptor.getMaximumOccurs()); Validators.validate(r);
/** * Verifies the properties of an operation method parameter. * * @param expected a parameter descriptor containing the expected properties (except remarks). * @param actual the parameter descriptor to verify. */ public static void verifyMethodParameter(final ParameterDescriptor<?> expected, final ParameterDescriptor<?> actual) { assertEquals("name", expected.getName(), actual.getName()); assertEquals("valueClass", expected.getValueClass(), actual.getValueClass()); assertEquals("validValues", expected.getValidValues(), actual.getValidValues()); assertEquals("unit", expected.getUnit(), actual.getUnit()); assertEquals("minimumOccurs", DEFAULT_OCCURRENCE, actual.getMinimumOccurs()); assertEquals("maximumOccurs", DEFAULT_OCCURRENCE, actual.getMaximumOccurs()); }
/** * Compare values of the given service identifications against the value expected for the * instance created by {@link #create()} method. */ private static void verify(final DefaultServiceIdentification id) { assertEquals("serviceTypeVersion", "1.0", getSingleton(id.getServiceTypeVersions())); assertEquals("serviceType", "Web Map Server", String.valueOf(id.getServiceType())); assertEquals("abstract", "A dummy service for testing purpose.", String.valueOf(id.getAbstract())); assertEquals("citation", NilReason.MISSING, NilReason.forObject(id.getCitation())); assertEquals("couplingType", UnsupportedCodeList.valueOf("loose"), id.getCouplingType()); final DefaultCoupledResource resource = getSingleton(id.getCoupledResources()); // assertEquals("scopedName", "mySpace:ABC-123", …) skipped because not present in new ISO 19115-3:2016. // assertEquals("resourceReference", "WMS specification", …) skipped because not present in legacy ISO 19139:2007. final DefaultOperationMetadata op = resource.getOperation(); assertNotNull("operation", op); assertEquals("operationName", "Get Map", op.getOperationName()); assertEquals("distributedComputingPlatform", UnsupportedCodeList.valueOf("WEB_SERVICES"), getSingleton(op.getDistributedComputingPlatforms())); assertEquals("connectPoints", NilReason.MISSING, NilReason.forObject(getSingleton(op.getConnectPoints()))); final ParameterDescriptor<?> param = getSingleton(op.getParameters()); assertEquals("name", "Version", String.valueOf(param.getName())); assertEquals("minimumOccurs", 0, param.getMinimumOccurs()); assertEquals("maximumOccurs", 1, param.getMaximumOccurs()); // assertEquals("direction", ParameterDirection.IN, param.getDirection()); }
/** * Tests the creation of a simple descriptor for an optional parameter without minimum or maximum value. */ @Test public void testOptionalInteger() { final ParameterDescriptor<Integer> descriptor = createSimpleOptional("Simple param", Integer.class); assertEquals("name", "Simple param", descriptor.getName().getCode()); assertEquals("valueClass", Integer.class, descriptor.getValueClass()); assertNull ("validValues", descriptor.getValidValues()); assertNull ("defaultValue", descriptor.getDefaultValue()); assertNull ("minimumValue", descriptor.getMinimumValue()); assertNull ("maximumValue", descriptor.getMaximumValue()); assertEquals("minimumOccurs", 0, descriptor.getMinimumOccurs()); assertEquals("maximumOccurs", 1, descriptor.getMaximumOccurs()); }
assertNotSame("Different obligation.", complete, merged); assertSame ("name", complete.getName(), merged.getName()); assertEquals ("minimumOccurs", 0, merged.getMinimumOccurs()); // From provided descriptor. assertEquals ("maximumOccurs", 1, merged.getMaximumOccurs()); assertEquals ("valueClass", Integer.class, merged.getValueClass()); // From complete descriptor. assertNotSame("Different remark.", complete, merged); assertSame ("name", complete.getName(), merged.getName()); assertEquals ("minimumOccurs", 0, merged.getMinimumOccurs()); assertEquals ("maximumOccurs", 1, merged.getMaximumOccurs()); assertEquals ("valueClass", Integer.class, merged.getValueClass());