Skip to content

Commit 8390997

Browse files
committed
Improvements from PR review.
1 parent 6dc272f commit 8390997

File tree

18 files changed

+86
-260
lines changed

18 files changed

+86
-260
lines changed

core/esmf-aspect-meta-model-java/src/main/java/org/eclipse/esmf/metamodel/ComplexType.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,7 @@ public interface ComplexType extends Type, StructureElement {
3131
default List<ComplexType> getExtendingElements() {
3232
return Collections.emptyList();
3333
}
34-
35-
default List<ComplexType> getExtendingElements( final ExtendedAspectContext context ) {
36-
return Collections.emptyList();
37-
}
38-
34+
3935
default boolean isAbstractEntity() {
4036
return false;
4137
}

core/esmf-aspect-meta-model-java/src/main/java/org/eclipse/esmf/metamodel/ExtendedAspectContext.java

Lines changed: 0 additions & 29 deletions
This file was deleted.

core/esmf-aspect-meta-model-java/src/main/java/org/eclipse/esmf/metamodel/impl/DefaultAbstractEntity.java

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

19-
import org.eclipse.esmf.aspectmodel.urn.AspectModelUrn;
2019
import org.eclipse.esmf.metamodel.AbstractEntity;
2120
import org.eclipse.esmf.metamodel.ComplexType;
2221
import org.eclipse.esmf.metamodel.Property;
@@ -28,14 +27,14 @@ public static DefaultAbstractEntity createDefaultAbstractEntity(
2827
final MetaModelBaseAttributes metaModelBaseAttributes,
2928
final List<? extends Property> properties,
3029
final Optional<ComplexType> _extends,
31-
final List<AspectModelUrn> extendingElements ) {
30+
final List<ComplexType> extendingElements ) {
3231
return new DefaultAbstractEntity( metaModelBaseAttributes, properties, _extends, extendingElements );
3332
}
3433

3534
public DefaultAbstractEntity( final MetaModelBaseAttributes metaModelBaseAttributes,
3635
final List<? extends Property> properties,
3736
final Optional<ComplexType> _extends,
38-
final List<AspectModelUrn> extendingElements ) {
37+
final List<ComplexType> extendingElements ) {
3938
super( metaModelBaseAttributes, properties, _extends, extendingElements );
4039
}
4140

core/esmf-aspect-meta-model-java/src/main/java/org/eclipse/esmf/metamodel/impl/DefaultComplexType.java

Lines changed: 4 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -14,42 +14,25 @@
1414
package org.eclipse.esmf.metamodel.impl;
1515

1616
import java.util.ArrayList;
17-
import java.util.Collections;
1817
import java.util.List;
19-
import java.util.Map;
20-
import java.util.Objects;
2118
import java.util.Optional;
22-
import java.util.WeakHashMap;
23-
import java.util.stream.Collectors;
2419

25-
import org.eclipse.esmf.aspectmodel.urn.AspectModelUrn;
26-
import org.eclipse.esmf.metamodel.Aspect;
2720
import org.eclipse.esmf.metamodel.ComplexType;
28-
import org.eclipse.esmf.metamodel.ExtendedAspectContext;
2921
import org.eclipse.esmf.metamodel.Property;
3022
import org.eclipse.esmf.metamodel.loader.MetaModelBaseAttributes;
3123
import org.eclipse.esmf.metamodel.visitor.AspectVisitor;
3224

3325
public class DefaultComplexType extends ModelElementImpl implements ComplexType {
34-
35-
/**
36-
* Used to keep track of all {@link ComplexType} instances regardles of whether they are directly or indirectly
37-
* referenced in the {@link Aspect}.
38-
*/
39-
private static final WeakHashMap<AspectModelUrn, ComplexType> instances = new WeakHashMap<>();
40-
4126
private final List<Property> properties;
4227
private final Optional<ComplexType> _extends;
43-
private final List<AspectModelUrn> extendingElements;
28+
private final List<ComplexType> extendingElements;
4429

4530
protected DefaultComplexType(
4631
final MetaModelBaseAttributes metaModelBaseAttributes,
4732
final List<? extends Property> properties,
4833
final Optional<ComplexType> _extends,
49-
final List<AspectModelUrn> extendingElements ) {
34+
final List<ComplexType> extendingElements ) {
5035
super( metaModelBaseAttributes );
51-
//noinspection OptionalGetWithoutIsPresent
52-
instances.put( metaModelBaseAttributes.getUrn().get(), this );
5336
this.properties = new ArrayList<>( properties );
5437
this._extends = _extends;
5538
this.extendingElements = extendingElements;
@@ -71,26 +54,11 @@ public Optional<ComplexType> getExtends() {
7154
}
7255

7356
/**
74-
* @return all {@link ComplexType} instances from the {@link DefaultComplexType#instances} Map which extend this
75-
* Abstract Entity.
57+
* @return all {@link ComplexType} instances which extend this Abstract Entity.
7658
*/
77-
@Deprecated( forRemoval = true )
7859
@Override
7960
public List<ComplexType> getExtendingElements() {
80-
return extendingElements.stream().map( instances::get ).filter( Objects::nonNull ).collect( Collectors.toList() );
81-
}
82-
83-
@Override
84-
public List<ComplexType> getExtendingElements( final ExtendedAspectContext context ) {
85-
return extendingElements.stream()
86-
.map( urn -> context.loadedElements().get( urn ) )
87-
.filter( Objects::nonNull )
88-
.map( modelElement -> (ComplexType) modelElement )
89-
.collect( Collectors.toList() );
90-
}
91-
92-
public static Map<AspectModelUrn, ComplexType> getInstances() {
93-
return Collections.unmodifiableMap( instances );
61+
return extendingElements;
9462
}
9563

9664
@Override

core/esmf-aspect-meta-model-java/src/main/java/org/eclipse/esmf/metamodel/impl/DefaultEntity.java

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

19-
import org.eclipse.esmf.aspectmodel.urn.AspectModelUrn;
2019
import org.eclipse.esmf.metamodel.ComplexType;
2120
import org.eclipse.esmf.metamodel.Entity;
2221
import org.eclipse.esmf.metamodel.Property;
@@ -40,7 +39,7 @@ public DefaultEntity(
4039
final MetaModelBaseAttributes metaModelBaseAttributes,
4140
final List<? extends Property> properties,
4241
final Optional<ComplexType> _extends,
43-
final List<AspectModelUrn> extendingElements ) {
42+
final List<ComplexType> extendingElements ) {
4443
super( metaModelBaseAttributes, properties, _extends, extendingElements );
4544
}
4645

core/esmf-aspect-meta-model-java/src/main/java/org/eclipse/esmf/metamodel/loader/AspectModelLoader.java

Lines changed: 1 addition & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import java.util.Map;
2020
import java.util.Optional;
2121
import java.util.Set;
22-
import java.util.function.Function;
2322
import java.util.function.Predicate;
2423
import java.util.stream.Collectors;
2524

@@ -35,12 +34,10 @@
3534
import org.eclipse.esmf.aspectmodel.resolver.exceptions.InvalidNamespaceException;
3635
import org.eclipse.esmf.aspectmodel.resolver.exceptions.InvalidRootElementCountException;
3736
import org.eclipse.esmf.aspectmodel.resolver.services.VersionedModel;
38-
import org.eclipse.esmf.aspectmodel.urn.AspectModelUrn;
3937
import org.eclipse.esmf.aspectmodel.versionupdate.MigratorService;
4038
import org.eclipse.esmf.aspectmodel.vocabulary.SAMM;
4139
import org.eclipse.esmf.metamodel.Aspect;
4240
import org.eclipse.esmf.metamodel.AspectContext;
43-
import org.eclipse.esmf.metamodel.ExtendedAspectContext;
4441
import org.eclipse.esmf.metamodel.ModelElement;
4542
import org.eclipse.esmf.metamodel.ModelNamespace;
4643
import org.eclipse.esmf.metamodel.NamedElement;
@@ -203,19 +200,6 @@ public static Try<Aspect> getSingleAspect( final VersionedModel versionedModel )
203200
return getSingleAspect( versionedModel, aspect -> true );
204201
}
205202

206-
/**
207-
* Convenience method to load the single Aspect + it's extended context from a model, when the model contains exactly one Aspect.
208-
*
209-
* <b>Caution:</b> The method handles this special case. Aspect Models are allowed to contain any number of Aspects (including zero),
210-
* so for the general case you should use {@link #getElements(VersionedModel)} instead.
211-
*
212-
* @param versionedModel The RDF model representation of the Aspect model
213-
* @return the single Aspect contained in the model together with it's extended context
214-
*/
215-
public static Try<ExtendedAspectContext> getSingleAspectWithContext( final VersionedModel versionedModel ) {
216-
return getSingleAspectWithContext( versionedModel, aspect -> true );
217-
}
218-
219203
/**
220204
* Convenience method to load the single Aspect from a model, when the model contains exactly one Aspect. Does the same as
221205
* {@link #getSingleAspect(VersionedModel)} but throws an exception on failure.
@@ -232,24 +216,7 @@ public static Aspect getSingleAspectUnchecked( final VersionedModel versionedMod
232216
throw new AspectLoadingException( cause );
233217
} );
234218
}
235-
236-
/**
237-
* Convenience method to load the single Aspect from a model, when the model contains exactly one Aspect. Does the same as
238-
* {@link #getSingleAspectWithContext(VersionedModel)} but throws an exception on failure.
239-
*
240-
* <b>Caution:</b> The method handles this special case. Aspect Models are allowed to contain any number of Aspects (including zero),
241-
* so for the general case you should use {@link #getElementsUnchecked(VersionedModel)} instead.
242-
*
243-
* @param versionedModel The RDF model representation of the Aspect model
244-
* @return the single Aspect contained in the model plus it's extended context (elements loaded in the context of this model)
245-
*/
246-
public static ExtendedAspectContext getSingleAspectUncheckedWithContext( final VersionedModel versionedModel ) {
247-
return getSingleAspectWithContext( versionedModel ).getOrElseThrow( cause -> {
248-
LOG.error( "Could not load aspect", cause );
249-
throw new AspectLoadingException( cause );
250-
} );
251-
}
252-
219+
253220
/**
254221
* Similar to {@link #getSingleAspect(VersionedModel)}, except that a predicate can be provided to select which of potentially
255222
* multiple aspects should be selected
@@ -285,32 +252,4 @@ public static Try<AspectContext> getAspectContext( final File input ) {
285252
getSingleAspect( versionedModel, aspect -> aspect.getName().equals( input.getName() ) )
286253
.map( aspect -> new AspectContext( versionedModel, aspect ) ) );
287254
}
288-
289-
/**
290-
* Similar to {@link #getSingleAspectWithContext(VersionedModel)}, except that a predicate can be provided to select which of potentially
291-
* multiple aspects should be selected
292-
* @param versionedModel the RDF model reprensentation of the Aspect model
293-
* @param selector the predicate to select an Aspect
294-
* @return the extended context, or a failure if 0 or more than 1 matching Aspects were found
295-
*/
296-
public static Try<ExtendedAspectContext> getSingleAspectWithContext( final VersionedModel versionedModel, final Predicate<Aspect> selector ) {
297-
final Try<List<ModelElement>> allElements = getElements( versionedModel );
298-
final List<Aspect> aspects = allElements.map( elements -> elements.stream().filter( element -> element.is( Aspect.class ) )
299-
.map( element -> element.as( Aspect.class ) )
300-
.filter( selector )
301-
.toList() ).get();
302-
return switch ( aspects.size() ) {
303-
case 1 -> Try.success( new ExtendedAspectContext( versionedModel, aspects.iterator().next(), getLoadedElementMap( allElements.get() ) ) );
304-
case 0 -> Try.failure( new InvalidRootElementCountException( "No Aspects were found in the model" ) );
305-
default -> Try.failure( new AspectLoadingException( "Multiple Aspects were found in the resolved model" ) );
306-
};
307-
}
308-
309-
private static Map<AspectModelUrn, ModelElement> getLoadedElementMap( final List<ModelElement> loadedElements ) {
310-
return loadedElements.stream()
311-
.filter( element -> element.is( NamedElement.class ) )
312-
.map( element -> element.as( NamedElement.class ) )
313-
.filter( element -> element.getAspectModelUrn().isPresent() )
314-
.collect( Collectors.toMap( element -> element.getAspectModelUrn().get(), Function.identity() ) );
315-
}
316255
}

core/esmf-aspect-meta-model-java/src/main/java/org/eclipse/esmf/metamodel/loader/ModelElementFactory.java

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@
1414
package org.eclipse.esmf.metamodel.loader;
1515

1616
import java.util.HashMap;
17+
import java.util.List;
1718
import java.util.Map;
19+
import java.util.Objects;
1820
import java.util.Optional;
1921
import java.util.Set;
2022
import java.util.function.Supplier;
@@ -27,19 +29,18 @@
2729
import org.apache.jena.rdf.model.Statement;
2830
import org.apache.jena.vocabulary.RDF;
2931
import org.apache.jena.vocabulary.RDFS;
30-
31-
import com.google.common.collect.Streams;
32-
33-
import org.eclipse.esmf.samm.KnownVersion;
3432
import org.eclipse.esmf.aspectmodel.urn.AspectModelUrn;
3533
import org.eclipse.esmf.aspectmodel.vocabulary.SAMM;
3634
import org.eclipse.esmf.aspectmodel.vocabulary.SAMMC;
3735
import org.eclipse.esmf.aspectmodel.vocabulary.UNIT;
36+
import org.eclipse.esmf.metamodel.ComplexType;
3837
import org.eclipse.esmf.metamodel.Entity;
3938
import org.eclipse.esmf.metamodel.ModelElement;
4039
import org.eclipse.esmf.metamodel.ModelNamespace;
4140
import org.eclipse.esmf.metamodel.QuantityKind;
41+
import org.eclipse.esmf.metamodel.QuantityKinds;
4242
import org.eclipse.esmf.metamodel.Unit;
43+
import org.eclipse.esmf.metamodel.Units;
4344
import org.eclipse.esmf.metamodel.impl.DefaultUnit;
4445
import org.eclipse.esmf.metamodel.loader.instantiator.AbstractEntityInstantiator;
4546
import org.eclipse.esmf.metamodel.loader.instantiator.AspectInstantiator;
@@ -72,9 +73,9 @@
7273
import org.eclipse.esmf.metamodel.loader.instantiator.StructuredValueInstantiator;
7374
import org.eclipse.esmf.metamodel.loader.instantiator.TimeSeriesInstantiator;
7475
import org.eclipse.esmf.metamodel.loader.instantiator.TraitInstantiator;
76+
import org.eclipse.esmf.samm.KnownVersion;
7577

76-
import org.eclipse.esmf.metamodel.QuantityKinds;
77-
import org.eclipse.esmf.metamodel.Units;
78+
import com.google.common.collect.Streams;
7879

7980
public class ModelElementFactory extends AttributeValueRetriever {
8081
private final KnownVersion metaModelVersion;
@@ -224,4 +225,12 @@ protected SAMMC getSammc() {
224225
public UNIT getUnit() {
225226
return unit;
226227
}
228+
229+
public List<ComplexType> getExtendingElements( final List<AspectModelUrn> extendingElements ) {
230+
return extendingElements.stream().map( urn -> getModel().createResource( urn.toString() ) )
231+
.map( loadedElements::get )
232+
.filter( Objects::nonNull )
233+
.map( modelElement -> (ComplexType) modelElement )
234+
.collect( Collectors.toList() );
235+
}
227236
}

core/esmf-aspect-meta-model-java/src/main/java/org/eclipse/esmf/metamodel/loader/instantiator/AbstractEntityInstantiator.java

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

19-
import org.eclipse.esmf.aspectmodel.urn.AspectModelUrn;
2019
import org.eclipse.esmf.metamodel.AbstractEntity;
2120
import org.eclipse.esmf.metamodel.ComplexType;
2221
import org.eclipse.esmf.metamodel.Property;
@@ -32,10 +31,10 @@ public AbstractEntityInstantiator( final ModelElementFactory modelElementFactory
3231

3332
@Override
3433
protected AbstractEntity createDefaultEntity(
35-
MetaModelBaseAttributes metaModelBaseAttributes,
36-
List<Property> properties,
37-
Optional<ComplexType> extendedEntity,
38-
List<AspectModelUrn> extendingComplexTypes ) {
34+
final MetaModelBaseAttributes metaModelBaseAttributes,
35+
final List<Property> properties,
36+
final Optional<ComplexType> extendedEntity,
37+
final List<ComplexType> extendingComplexTypes ) {
3938
return new DefaultAbstractEntity(
4039
metaModelBaseAttributes,
4140
properties,

0 commit comments

Comments
 (0)