Skip to content

Commit d53aeef

Browse files
authored
Merge pull request #226 from bci-oss/bug/#223-correct-return-type-for-getconstraint
Adapted changes in case there's more than one constraint on a Trait
2 parents 8075c5b + 8c612c9 commit d53aeef

File tree

6 files changed

+30
-36
lines changed

6 files changed

+30
-36
lines changed

core/sds-aspect-model-java-generator/src/main/resources/java-static-class-property-lib.vm

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -67,15 +67,15 @@
6767
#if( $util.hasContainerType( $property ) )
6868
$codeGenerationConfig.getImportTracker().importExplicit( $StaticConstraintContainerProperty )
6969
#set( $containedType = $util.getCharacteristicJavaType( $property, $codeGenerationConfig ) )
70-
#propertyDeclaration() StaticConstraintContainerProperty<$containedType, $propertyType, #getConstraintClassName(), #getCharacteristicClassName()>
70+
#propertyDeclaration() StaticConstraintContainerProperty<$containedType, $propertyType, #getCharacteristicClassName()>
7171
$util.toConstant( $property.getName() ) = #staticProperty( $property $codeGenerationConfig );
7272
#elseif( $util.hasUnit( $property.getCharacteristic().get() ) )
7373
$codeGenerationConfig.getImportTracker().importExplicit( $StaticConstraintUnitProperty )
7474
$codeGenerationConfig.getImportTracker().importExplicit( $Unit )
75-
#propertyDeclaration() StaticConstraintUnitProperty<$propertyType, #getConstraintClassName(), #getCharacteristicClassName()>
75+
#propertyDeclaration() StaticConstraintUnitProperty<$propertyType, #getCharacteristicClassName()>
7676
$util.toConstant( $property.getName() ) = #staticProperty( $property $codeGenerationConfig );
7777
#else
78-
#propertyDeclaration() StaticConstraintProperty<$propertyType, #getConstraintClassName(), #getCharacteristicClassName()>
78+
#propertyDeclaration() StaticConstraintProperty<$propertyType, #getCharacteristicClassName()>
7979
$util.toConstant( $property.getName() ) = #staticProperty( $property $codeGenerationConfig );
8080
#end
8181
#else
@@ -108,14 +108,13 @@
108108
#if( $util.hasContainerType( $property ) )
109109
$codeGenerationConfig.getImportTracker().importExplicit( $StaticConstraintContainerProperty )
110110
#set( $containedType = $util.getCharacteristicJavaType( $property, $codeGenerationConfig ) )
111-
new StaticConstraintContainerProperty<$containedType, $propertyType, #getConstraintClassName(),
112-
#getCharacteristicClassName()>(
111+
new StaticConstraintContainerProperty<$containedType, $propertyType, #getCharacteristicClassName()>(
113112
#elseif( $util.hasUnit( $property.getCharacteristic().get() ) )
114113
$codeGenerationConfig.getImportTracker().importExplicit( $StaticConstraintUnitProperty )
115114
$codeGenerationConfig.getImportTracker().importExplicit( $Unit )
116-
new StaticConstraintUnitProperty<$propertyType, #getConstraintClassName(), #getCharacteristicClassName()>(
115+
new StaticConstraintUnitProperty<$propertyType, #getCharacteristicClassName()>(
117116
#else
118-
new StaticConstraintProperty<$propertyType, #getConstraintClassName(), #getCharacteristicClassName()>(
117+
new StaticConstraintProperty<$propertyType, #getCharacteristicClassName()>(
119118
#end
120119
#else
121120
#if( $util.hasContainerType( $property ) && !$propertyType.startsWith( "Map" ) )
@@ -149,8 +148,8 @@ Optional.of("$property.getPayloadName()"),
149148
## Body
150149
#if( $Trait.isAssignableFrom( $property.getCharacteristic().get().getClass() ) )
151150
@Override
152-
public #getConstraintClassName() getConstraint() {
153-
return (#getConstraintClassName())((Trait)getCharacteristic().get()).getConstraints().iterator().next();
151+
public List<Constraint> getConstraints() {
152+
return ((Trait)getCharacteristic().get()).getConstraints();
154153
}
155154

156155
@Override

core/sds-aspect-model-java-generator/src/test/java/io/openmanufacturing/sds/aspectmodel/java/StaticMetaModelJavaGeneratorTest.java

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,8 @@
4040
import io.openmanufacturing.sds.aspectmetamodel.KnownVersion;
4141
import io.openmanufacturing.sds.metamodel.datatypes.Curie;
4242
import io.openmanufacturing.sds.metamodel.impl.DefaultCharacteristic;
43-
import io.openmanufacturing.sds.metamodel.impl.DefaultFixedPointConstraint;
44-
import io.openmanufacturing.sds.metamodel.impl.DefaultLengthConstraint;
4543
import io.openmanufacturing.sds.metamodel.impl.DefaultList;
4644
import io.openmanufacturing.sds.metamodel.impl.DefaultMeasurement;
47-
import io.openmanufacturing.sds.metamodel.impl.DefaultRangeConstraint;
48-
import io.openmanufacturing.sds.metamodel.impl.DefaultRegularExpressionConstraint;
4945
import io.openmanufacturing.sds.staticmetamodel.StaticContainerProperty;
5046
import io.openmanufacturing.sds.staticmetamodel.StaticProperty;
5147
import io.openmanufacturing.sds.staticmetamodel.StaticUnitProperty;
@@ -266,25 +262,25 @@ public void testGenerateStaticMetaModelWithConstraints( final KnownVersion metaM
266262
result.assertFields( "MetaAspectWithConstraints",
267263
ImmutableMap.<String, Object> builder().put( "NAMESPACE", String.class ).put( "MODEL_ELEMENT_URN", String.class )
268264
.put( "CHARACTERISTIC_NAMESPACE", String.class ).put( "INSTANCE", "MetaAspectWithConstraints" ).put( "TEST_PROPERTY_WITH_REGULAR_EXPRESSION",
269-
new TypeToken<StaticConstraintProperty<String, DefaultRegularExpressionConstraint, DefaultCharacteristic>>() {
265+
new TypeToken<StaticConstraintProperty<String, DefaultCharacteristic>>() {
270266
} ).put( "TEST_PROPERTY_WITH_DECIMAL_MIN_DECIMAL_MAX_RANGE_CONSTRAINT",
271-
new TypeToken<StaticConstraintProperty<BigDecimal, DefaultRangeConstraint, DefaultMeasurement>>() {
267+
new TypeToken<StaticConstraintProperty<BigDecimal, DefaultMeasurement>>() {
272268
} ).put( "TEST_PROPERTY_WITH_DECIMAL_MAX_RANGE_CONSTRAINT",
273-
new TypeToken<StaticConstraintProperty<BigDecimal, DefaultRangeConstraint, DefaultMeasurement>>() {
269+
new TypeToken<StaticConstraintProperty<BigDecimal, DefaultMeasurement>>() {
274270
} ).put( "TEST_PROPERTY_WITH_MIN_MAX_RANGE_CONSTRAINT",
275-
new TypeToken<StaticConstraintProperty<Integer, DefaultRangeConstraint, DefaultMeasurement>>() {
271+
new TypeToken<StaticConstraintProperty<Integer, DefaultMeasurement>>() {
276272
} ).put( "TEST_PROPERTY_WITH_MIN_RANGE_CONSTRAINT",
277-
new TypeToken<StaticConstraintProperty<Integer, DefaultRangeConstraint, DefaultMeasurement>>() {
273+
new TypeToken<StaticConstraintProperty<Integer, DefaultMeasurement>>() {
278274
} ).put( "TEST_PROPERTY_RANGE_CONSTRAINT_WITH_FLOAT_TYPE",
279-
new TypeToken<StaticConstraintProperty<Float, DefaultRangeConstraint, DefaultMeasurement>>() {
275+
new TypeToken<StaticConstraintProperty<Float, DefaultMeasurement>>() {
280276
} ).put( "TEST_PROPERTY_RANGE_CONSTRAINT_WITH_DOUBLE_TYPE",
281-
new TypeToken<StaticConstraintProperty<Double, DefaultRangeConstraint, DefaultMeasurement>>() {
277+
new TypeToken<StaticConstraintProperty<Double, DefaultMeasurement>>() {
282278
} ).put( "TEST_PROPERTY_WITH_MIN_MAX_LENGTH_CONSTRAINT",
283-
new TypeToken<StaticConstraintProperty<String, DefaultLengthConstraint, DefaultCharacteristic>>() {
279+
new TypeToken<StaticConstraintProperty<String, DefaultCharacteristic>>() {
284280
} ).put( "TEST_PROPERTY_WITH_MIN_LENGTH_CONSTRAINT",
285-
new TypeToken<StaticConstraintProperty<BigInteger, DefaultLengthConstraint, DefaultCharacteristic>>() {
281+
new TypeToken<StaticConstraintProperty<BigInteger, DefaultCharacteristic>>() {
286282
} ).put( "TEST_PROPERTY_COLLECTION_LENGTH_CONSTRAINT",
287-
new TypeToken<StaticConstraintContainerProperty<BigInteger, List<BigInteger>, DefaultLengthConstraint, DefaultList>>() {
283+
new TypeToken<StaticConstraintContainerProperty<BigInteger, List<BigInteger>, DefaultList>>() {
288284
} ).build(), new HashMap<>() );
289285
}
290286

@@ -361,7 +357,7 @@ public void testGenerateStaticMetaModelWithFixedPointConstraints( final KnownVer
361357
result.assertFields( "MetaAspectWithFixedPoint",
362358
ImmutableMap.<String, Object> builder().put( "NAMESPACE", String.class ).put( "MODEL_ELEMENT_URN", String.class )
363359
.put( "CHARACTERISTIC_NAMESPACE", String.class ).put( "INSTANCE", "MetaAspectWithFixedPoint" )
364-
.put( "TEST_PROPERTY", new TypeToken<StaticConstraintProperty<BigDecimal, DefaultFixedPointConstraint, DefaultMeasurement>>() {
360+
.put( "TEST_PROPERTY", new TypeToken<StaticConstraintProperty<BigDecimal, DefaultMeasurement>>() {
365361
} ).build(), new HashMap<>() );
366362
}
367363

core/sds-aspect-static-meta-model-java/src/main/java/io/openmanufacturing/sds/staticmetamodel/constraint/ConstraintProperty.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,15 @@
1313

1414
package io.openmanufacturing.sds.staticmetamodel.constraint;
1515

16+
import java.util.List;
17+
1618
import io.openmanufacturing.sds.metamodel.Characteristic;
1719
import io.openmanufacturing.sds.metamodel.Constraint;
1820

19-
public interface ConstraintProperty<C extends Constraint, C2 extends Characteristic> {
21+
public interface ConstraintProperty<C extends Characteristic> {
2022

21-
C getConstraint();
23+
List<Constraint> getConstraints();
2224

23-
C2 getBaseCharacteristic();
25+
C getBaseCharacteristic();
2426
}
2527

core/sds-aspect-static-meta-model-java/src/main/java/io/openmanufacturing/sds/staticmetamodel/constraint/StaticConstraintContainerProperty.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
import java.util.Optional;
1717

1818
import io.openmanufacturing.sds.metamodel.Characteristic;
19-
import io.openmanufacturing.sds.metamodel.Constraint;
2019
import io.openmanufacturing.sds.metamodel.Property;
2120
import io.openmanufacturing.sds.metamodel.ScalarValue;
2221
import io.openmanufacturing.sds.metamodel.loader.MetaModelBaseAttributes;
@@ -26,8 +25,8 @@
2625
* Extends {@link StaticConstraintProperty} to represent container or wrapper types like {@code Collection} or {@code
2726
* Optional} and carries type information about the contained type and includes a constraint
2827
*/
29-
public abstract class StaticConstraintContainerProperty<R, T, C extends Constraint, C2 extends Characteristic>
30-
extends StaticConstraintProperty<T, C, C2> implements ContainerProperty<R> {
28+
public abstract class StaticConstraintContainerProperty<R, T, C extends Characteristic>
29+
extends StaticConstraintProperty<T, C> implements ContainerProperty<R> {
3130

3231
public StaticConstraintContainerProperty(
3332
final MetaModelBaseAttributes metaModelBaseAttributes,

core/sds-aspect-static-meta-model-java/src/main/java/io/openmanufacturing/sds/staticmetamodel/constraint/StaticConstraintProperty.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
import java.util.Optional;
1717

1818
import io.openmanufacturing.sds.metamodel.Characteristic;
19-
import io.openmanufacturing.sds.metamodel.Constraint;
2019
import io.openmanufacturing.sds.metamodel.Property;
2120
import io.openmanufacturing.sds.metamodel.ScalarValue;
2221
import io.openmanufacturing.sds.metamodel.impl.DefaultProperty;
@@ -26,8 +25,8 @@
2625
/**
2726
* Extends the BAMM {@link DefaultProperty} definition with a concrete type and a constraint.
2827
*/
29-
public abstract class StaticConstraintProperty<T, C extends Constraint, C2 extends Characteristic>
30-
extends StaticProperty<T> implements ConstraintProperty<C, C2> {
28+
public abstract class StaticConstraintProperty<T, C extends Characteristic>
29+
extends StaticProperty<T> implements ConstraintProperty<C> {
3130

3231
public StaticConstraintProperty(
3332
final MetaModelBaseAttributes metaModelBaseAttributes,

core/sds-aspect-static-meta-model-java/src/main/java/io/openmanufacturing/sds/staticmetamodel/constraint/StaticConstraintUnitProperty.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
import java.util.Optional;
1717

1818
import io.openmanufacturing.sds.metamodel.Characteristic;
19-
import io.openmanufacturing.sds.metamodel.Constraint;
2019
import io.openmanufacturing.sds.metamodel.Property;
2120
import io.openmanufacturing.sds.metamodel.Quantifiable;
2221
import io.openmanufacturing.sds.metamodel.ScalarValue;
@@ -30,8 +29,8 @@
3029
* Only {@link Quantifiable} properties that actually carry a {@code Unit} will be represented by a {@code
3130
* StaticConstraintUnitProperty}, however in practice this will be the case for most quantifiables.
3231
*/
33-
public abstract class StaticConstraintUnitProperty<T, C extends Constraint, C2 extends Characteristic>
34-
extends StaticConstraintProperty<T, C, C2> implements UnitProperty {
32+
public abstract class StaticConstraintUnitProperty<T, C extends Characteristic>
33+
extends StaticConstraintProperty<T, C> implements UnitProperty {
3534

3635
public StaticConstraintUnitProperty(
3736
final MetaModelBaseAttributes metaModelBaseAttributes,

0 commit comments

Comments
 (0)