Skip to content

Commit f41a642

Browse files
authored
Merge pull request #84 from LionWeb-org/annotations
Annotations
2 parents 88af476 + 17adee0 commit f41a642

File tree

58 files changed

+2154
-1053
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+2154
-1053
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package io.lionweb.lioncore.java.api;
2+
3+
import io.lionweb.lioncore.java.model.ClassifierInstance;
4+
import javax.annotation.Nonnull;
5+
import javax.annotation.Nullable;
6+
7+
/** This is able to find a Node or an Annotation Instance given its ID. */
8+
public interface ClassifierInstanceResolver {
9+
10+
/**
11+
* This returns the Classifier Instance or null if the Classifier Instance cannot be found by this
12+
* Classifier InstanceResolver.
13+
*/
14+
@Nullable
15+
ClassifierInstance<?> resolve(String instanceID);
16+
17+
@Nonnull
18+
default ClassifierInstance<?> strictlyResolve(String instanceID) {
19+
ClassifierInstance<?> partial = resolve(instanceID);
20+
if (partial == null) {
21+
throw new UnresolvedClassifierInstanceException(instanceID);
22+
} else {
23+
return partial;
24+
}
25+
}
26+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package io.lionweb.lioncore.java.api;
2+
3+
import io.lionweb.lioncore.java.model.ClassifierInstance;
4+
import java.util.ArrayList;
5+
import java.util.List;
6+
import javax.annotation.Nullable;
7+
8+
/** This combines several ClassifierInstanceResolvers. */
9+
public class CompositeClassifierInstanceResolver implements ClassifierInstanceResolver {
10+
private List<ClassifierInstanceResolver> classifierInstanceResolvers = new ArrayList<>();
11+
12+
public CompositeClassifierInstanceResolver() {}
13+
14+
public CompositeClassifierInstanceResolver(
15+
ClassifierInstanceResolver... classifierInstanceResolvers) {
16+
for (ClassifierInstanceResolver classifierInstanceResolver : classifierInstanceResolvers) {
17+
add(classifierInstanceResolver);
18+
}
19+
}
20+
21+
public CompositeClassifierInstanceResolver add(
22+
ClassifierInstanceResolver classifierInstanceResolver) {
23+
classifierInstanceResolvers.add(classifierInstanceResolver);
24+
return this;
25+
}
26+
27+
@Nullable
28+
@Override
29+
public ClassifierInstance<?> resolve(String instanceID) {
30+
for (ClassifierInstanceResolver classifierInstanceResolver : classifierInstanceResolvers) {
31+
ClassifierInstance<?> instance = classifierInstanceResolver.resolve(instanceID);
32+
if (instance != null) {
33+
return instance;
34+
}
35+
}
36+
return null;
37+
}
38+
39+
@Override
40+
public String toString() {
41+
return "CompositeClassifierInstanceResolver(" + classifierInstanceResolvers + ")";
42+
}
43+
}

core/src/main/java/io/lionweb/lioncore/java/api/CompositeNodeResolver.java

-41
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package io.lionweb.lioncore.java.api;
2+
3+
import io.lionweb.lioncore.java.model.ClassifierInstance;
4+
import io.lionweb.lioncore.java.model.Node;
5+
import java.util.HashMap;
6+
import java.util.List;
7+
import java.util.Map;
8+
import javax.annotation.Nonnull;
9+
import javax.annotation.Nullable;
10+
11+
/**
12+
* This NodeResolver consult a given list of classifier instances to find the one with the requested
13+
* ID.
14+
*/
15+
public class LocalClassifierInstanceResolver implements ClassifierInstanceResolver {
16+
private Map<String, ClassifierInstance<?>> instances = new HashMap<>();
17+
18+
public LocalClassifierInstanceResolver() {}
19+
20+
public LocalClassifierInstanceResolver(List<ClassifierInstance<?>> instances) {
21+
instances.forEach(n -> add(n));
22+
}
23+
24+
public void add(@Nonnull ClassifierInstance<?> instance) {
25+
instances.put(instance.getID(), instance);
26+
}
27+
28+
@Nullable
29+
@Override
30+
public ClassifierInstance<?> resolve(String instanceID) {
31+
return instances.get(instanceID);
32+
}
33+
34+
public void addAll(@Nonnull List<? extends ClassifierInstance<?>> instances) {
35+
instances.forEach(n -> add(n));
36+
}
37+
38+
@Override
39+
public String toString() {
40+
return "LocalClassifierInstanceResolver(" + instances.keySet() + ")";
41+
}
42+
43+
public void addTree(@Nonnull Node root) {
44+
add(root);
45+
root.getChildren().forEach(c -> addTree(c));
46+
}
47+
}

core/src/main/java/io/lionweb/lioncore/java/api/LocalNodeResolver.java

-43
This file was deleted.

core/src/main/java/io/lionweb/lioncore/java/api/NodeResolver.java

-23
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package io.lionweb.lioncore.java.api;
2+
3+
public class UnresolvedClassifierInstanceException extends RuntimeException {
4+
private String instanceID;
5+
6+
public String getInstanceID() {
7+
return instanceID;
8+
}
9+
10+
public UnresolvedClassifierInstanceException(String instanceID) {
11+
super("Unable to resolve classifier instance with ID=" + instanceID);
12+
}
13+
}

core/src/main/java/io/lionweb/lioncore/java/api/UnresolvedNodeException.java

-13
This file was deleted.

0 commit comments

Comments
 (0)