diff --git a/src/main/java/com/syncleus/dann/graph/AssignableCloud.java b/src/main/java/com/syncleus/dann/graph/AssignableCloud.java new file mode 100644 index 0000000000000000000000000000000000000000..8ba2d67d0bd1ad04eeb28969c45c915f68d937f0 --- /dev/null +++ b/src/main/java/com/syncleus/dann/graph/AssignableCloud.java @@ -0,0 +1,35 @@ +/****************************************************************************** + * * + * Copyright: (c) Syncleus, Inc. * + * * + * You may redistribute and modify this source code under the terms and * + * conditions of the Open Source Community License - Type C version 1.0 * + * or any later version as published by Syncleus, Inc. at www.syncleus.com. * + * There should be a copy of the license included with this file. If a copy * + * of the license is not included you are granted no right to distribute or * + * otherwise use this file except through a legal and valid license. You * + * should also contact Syncleus, Inc. at the information below if you cannot * + * find a license: * + * * + * Syncleus, Inc. * + * 2604 South 12th Street * + * Philadelphia, PA 19148 * + * * + ******************************************************************************/ +package com.syncleus.dann.graph; + +import java.util.Map; +import java.util.Set; + +public interface AssignableCloud< + T, + EP extends AssignableCloud.Endpoint<? extends T> + > extends Cloud<T,EP> +{ + interface Endpoint<T> extends Cloud.Endpoint<T> + { + void setTarget(T newTarget) throws InvalidEdgeException; + } + + void reassign(Map<? extends EP,? extends T> reassignments) throws InvalidGraphException; +} diff --git a/src/main/java/com/syncleus/dann/graph/AssignableEdge.java b/src/main/java/com/syncleus/dann/graph/AssignableEdge.java new file mode 100644 index 0000000000000000000000000000000000000000..fe9d1d3802469418ff143930ac007c4d9ff62706 --- /dev/null +++ b/src/main/java/com/syncleus/dann/graph/AssignableEdge.java @@ -0,0 +1,29 @@ +/****************************************************************************** + * * + * Copyright: (c) Syncleus, Inc. * + * * + * You may redistribute and modify this source code under the terms and * + * conditions of the Open Source Community License - Type C version 1.0 * + * or any later version as published by Syncleus, Inc. at www.syncleus.com. * + * There should be a copy of the license included with this file. If a copy * + * of the license is not included you are granted no right to distribute or * + * otherwise use this file except through a legal and valid license. You * + * should also contact Syncleus, Inc. at the information below if you cannot * + * find a license: * + * * + * Syncleus, Inc. * + * 2604 South 12th Street * + * Philadelphia, PA 19148 * + * * + ******************************************************************************/ +package com.syncleus.dann.graph; + +public interface AssignableEdge< + T, + EP extends AssignableEdge.Endpoint<? extends T> + > extends Edge<T, EP>, AssignableCloud<T,EP> +{ + interface Endpoint<T> extends Edge.Endpoint<T>, AssignableCloud.Endpoint<T> + { + }; +} diff --git a/src/main/java/com/syncleus/dann/graph/AssignableGraph.java b/src/main/java/com/syncleus/dann/graph/AssignableGraph.java index 9be50dc7c6e4db61e4166d77f173f5ddf913d5a2..4fdc973d2f1da4d1064dc0f011d4b84800080309 100644 --- a/src/main/java/com/syncleus/dann/graph/AssignableGraph.java +++ b/src/main/java/com/syncleus/dann/graph/AssignableGraph.java @@ -23,22 +23,28 @@ public interface AssignableGraph< E extends Cloud<N,? extends Cloud.Endpoint<? extends N>>, NEP extends AssignableGraph.NodeEndpoint<N, E>, EEP extends AssignableGraph.EdgeEndpoint<N, E> - > extends Graph<N,E,NEP,EEP> + > extends Graph<N,E,NEP,EEP>, AssignableCloud<Object,AssignableGraph.Endpoint<?, N,E>> { + interface Endpoint< + T, + N, + E extends Cloud<N,? extends Cloud.Endpoint<? extends N>> + > + extends Graph.Endpoint<T,N,E>, AssignableCloud.Endpoint<T> + { + }; interface NodeEndpoint< ON, OE extends Cloud<ON,? extends Cloud.Endpoint<? extends ON>> - > extends Graph.NodeEndpoint<ON,OE>, Cloud.AssignableEndpoint<ON> + > extends Graph.NodeEndpoint<ON,OE>, AssignableCloud.Endpoint<ON> { - void setTarget(ON newTarget) throws InvalidGraphException; }; interface EdgeEndpoint< ON, OE extends Cloud<ON,? extends Cloud.Endpoint<? extends ON>> - > extends Graph.EdgeEndpoint<ON,OE>, Cloud.AssignableEndpoint<OE> + > extends Graph.EdgeEndpoint<ON,OE>, AssignableCloud.Endpoint<OE> { - void setTarget(OE newTarget) throws InvalidGraphException; }; } diff --git a/src/main/java/com/syncleus/dann/graph/Cloud.java b/src/main/java/com/syncleus/dann/graph/Cloud.java index 094c4cac65fa3d7a075847823726d28eb61971e1..053fb050f4fdeb199d1c7c2c13f4c41dee28f512 100644 --- a/src/main/java/com/syncleus/dann/graph/Cloud.java +++ b/src/main/java/com/syncleus/dann/graph/Cloud.java @@ -40,11 +40,6 @@ public interface Cloud< T getTarget(); }; - interface AssignableEndpoint<T> extends Cloud.Endpoint<T> - { - void setTarget(T newTarget) throws InvalidEdgeException; - }; - Set<EP> getEndpoints(); Set<EP> getEndpoints(Object target); Set<T> getTargets(); diff --git a/src/main/java/com/syncleus/dann/graph/Graph.java b/src/main/java/com/syncleus/dann/graph/Graph.java index 16484623ae7828b98e2e10470983865b7797fa6f..0b5e66b7c1ff067776e92b28a437e2bd993cac5c 100644 --- a/src/main/java/com/syncleus/dann/graph/Graph.java +++ b/src/main/java/com/syncleus/dann/graph/Graph.java @@ -19,6 +19,7 @@ package com.syncleus.dann.graph; import java.util.Set; +import com.sun.xml.internal.org.jvnet.fastinfoset.ExternalVocabulary; /** * Represents a graph as a collection of nodes connected by edges. A graph does @@ -34,11 +35,13 @@ import java.util.Set; * @param <E> The type of edge for the given node type */ public interface Graph< + A, N, E extends Cloud<N,? extends Cloud.Endpoint<? extends N>>, + AE extends Graph.Endpoint<A, N, E>, NE extends Graph.NodeEndpoint<N, E>, EE extends Graph.EdgeEndpoint<N, E> - > extends Cloud<Object,Graph.Endpoint<?, N,E>> + > extends Cloud<A,AE> { interface Endpoint< T, diff --git a/src/main/java/com/syncleus/dann/graph/HyperEdge.java b/src/main/java/com/syncleus/dann/graph/HyperEdge.java index 9bf419301f2c0f25411834bce881b383ce32e068..9a5689103d6479658bc7ebeeee3b02a3d1629830 100644 --- a/src/main/java/com/syncleus/dann/graph/HyperEdge.java +++ b/src/main/java/com/syncleus/dann/graph/HyperEdge.java @@ -19,13 +19,13 @@ package com.syncleus.dann.graph; public interface HyperEdge< - N, - EP extends Edge.Endpoint<N> - > extends Edge<N, EP> + T, + EP extends HyperEdge.Endpoint<? extends T> + > extends Edge<T, EP> { - interface Endpoint<NN, EN extends NN> extends Edge.Endpoint<NN, EN> + interface Endpoint<NN> extends Edge.Endpoint<NN> { }; - boolean isSymmetric(HyperEdge<N> symmetricEdge); + boolean isSymmetric(HyperEdge<T,EP> symmetricEdge); } diff --git a/src/main/java/com/syncleus/dann/graph/JoinableCloud.java b/src/main/java/com/syncleus/dann/graph/JoinableCloud.java new file mode 100644 index 0000000000000000000000000000000000000000..e0841a681b3e6986d0e9d53a09945cb06a896e7d --- /dev/null +++ b/src/main/java/com/syncleus/dann/graph/JoinableCloud.java @@ -0,0 +1,36 @@ +/****************************************************************************** + * * + * Copyright: (c) Syncleus, Inc. * + * * + * You may redistribute and modify this source code under the terms and * + * conditions of the Open Source Community License - Type C version 1.0 * + * or any later version as published by Syncleus, Inc. at www.syncleus.com. * + * There should be a copy of the license included with this file. If a copy * + * of the license is not included you are granted no right to distribute or * + * otherwise use this file except through a legal and valid license. You * + * should also contact Syncleus, Inc. at the information below if you cannot * + * find a license: * + * * + * Syncleus, Inc. * + * 2604 South 12th Street * + * Philadelphia, PA 19148 * + * * + ******************************************************************************/ +package com.syncleus.dann.graph; + +import java.util.Map; +import java.util.Set; + +public interface JoinableCloud< + T, + EP extends JoinableCloud.Endpoint<? extends T> + > extends Cloud<T,EP> +{ + interface Endpoint<T> extends Cloud.Endpoint<T> + { + } + + EP join(T edge) throws InvalidGraphException; + Map<T, EP> joins(Set<? extends T> edges) throws InvalidGraphException; + Map<T, Set<EP>> joins(Map<? extends T,? extends Integer> edges) throws InvalidGraphException; +} diff --git a/src/main/java/com/syncleus/dann/graph/JoinableEdge.java b/src/main/java/com/syncleus/dann/graph/JoinableEdge.java new file mode 100644 index 0000000000000000000000000000000000000000..ba71ce8b8d36b3c15c4a960e3eb120feeb49633b --- /dev/null +++ b/src/main/java/com/syncleus/dann/graph/JoinableEdge.java @@ -0,0 +1,29 @@ +/****************************************************************************** + * * + * Copyright: (c) Syncleus, Inc. * + * * + * You may redistribute and modify this source code under the terms and * + * conditions of the Open Source Community License - Type C version 1.0 * + * or any later version as published by Syncleus, Inc. at www.syncleus.com. * + * There should be a copy of the license included with this file. If a copy * + * of the license is not included you are granted no right to distribute or * + * otherwise use this file except through a legal and valid license. You * + * should also contact Syncleus, Inc. at the information below if you cannot * + * find a license: * + * * + * Syncleus, Inc. * + * 2604 South 12th Street * + * Philadelphia, PA 19148 * + * * + ******************************************************************************/ +package com.syncleus.dann.graph; + +public interface JoinableEdge< + T, + EP extends JoinableEdge.Endpoint<? extends T> + > extends Edge<T, EP>, JoinableCloud<T,EP> +{ + interface Endpoint<T> extends Edge.Endpoint<T>, JoinableCloud.Endpoint<T> + { + }; +} diff --git a/src/main/java/com/syncleus/dann/graph/JoinableGraph.java b/src/main/java/com/syncleus/dann/graph/JoinableGraph.java new file mode 100644 index 0000000000000000000000000000000000000000..11d2fdda98024be950b763dca0a4563f119c9e41 --- /dev/null +++ b/src/main/java/com/syncleus/dann/graph/JoinableGraph.java @@ -0,0 +1,42 @@ +/****************************************************************************** + * * + * Copyright: (c) Syncleus, Inc. * + * * + * You may redistribute and modify this source code under the terms and * + * conditions of the Open Source Community License - Type C version 1.0 * + * or any later version as published by Syncleus, Inc. at www.syncleus.com. * + * There should be a copy of the license included with this file. If a copy * + * of the license is not included you are granted no right to distribute or * + * otherwise use this file except through a legal and valid license. You * + * should also contact Syncleus, Inc. at the information below if you cannot * + * find a license: * + * * + * Syncleus, Inc. * + * 2604 South 12th Street * + * Philadelphia, PA 19148 * + * * + ******************************************************************************/ +package com.syncleus.dann.graph; + +public interface JoinableGraph< + N, + E extends Cloud<N,? extends Cloud.Endpoint<? extends N>>, + NEP extends JoinableGraph.NodeEndpoint<N, E>, + EEP extends JoinableGraph.EdgeEndpoint<N, E> + > extends Graph<N,E,NEP,EEP> +{ + + interface NodeEndpoint< + ON, + OE extends Cloud<ON,? extends Cloud.Endpoint<? extends ON>> + > extends Graph.NodeEndpoint<ON,OE>, JoinableCloud.Endpoint<ON> + { + }; + + interface EdgeEndpoint< + ON, + OE extends Cloud<ON,? extends Cloud.Endpoint<? extends ON>> + > extends Graph.EdgeEndpoint<ON,OE>, JoinableCloud.Endpoint<OE> + { + }; +} diff --git a/src/main/java/com/syncleus/dann/graph/MixableBidirectedEdge.java b/src/main/java/com/syncleus/dann/graph/MixableBidirectedEdge.java index 283d55251d83950bd98257994d284169ccf3d26a..daa2fe264c9504f62c4f71a33ed64a8648d6d771 100644 --- a/src/main/java/com/syncleus/dann/graph/MixableBidirectedEdge.java +++ b/src/main/java/com/syncleus/dann/graph/MixableBidirectedEdge.java @@ -18,9 +18,18 @@ ******************************************************************************/ package com.syncleus.dann.graph; -public interface MixableBidirectedEdge<N, LN extends N, RN extends N> extends Edge<N> +public interface MixableBidirectedEdge< + T, + LT extends T, + RT extends T, + EP extends MixableBidirectedEdge.Endpoint<? extends T, ? extends LT, ? extends RT> + > extends Edge<T, EP> { - interface Endpoint<NN, EN extends NN, ON extends NN> extends Edge.Endpoint<NN, EN> + interface Endpoint< + NN, + EN extends NN, + ON extends NN + > extends Edge.Endpoint<NN> { enum Direction { @@ -31,8 +40,8 @@ public interface MixableBidirectedEdge<N, LN extends N, RN extends N> extends Ed Endpoint<NN, ON,EN> getNeighbor(); }; - Endpoint<N, LN,RN> getLeftEndPoint(); - Endpoint<N, RN,LN> getRightEndPoint(); + EP getLeftEndPoint(); + EP getRightEndPoint(); boolean isIntroverted(); boolean isExtroverted(); boolean isDirected(); diff --git a/src/main/java/com/syncleus/dann/graph/MutableCloud.java b/src/main/java/com/syncleus/dann/graph/MutableCloud.java new file mode 100644 index 0000000000000000000000000000000000000000..dd6066718ca5096d5f02d2ea20416d2c47b241ca --- /dev/null +++ b/src/main/java/com/syncleus/dann/graph/MutableCloud.java @@ -0,0 +1,29 @@ +/****************************************************************************** + * * + * Copyright: (c) Syncleus, Inc. * + * * + * You may redistribute and modify this source code under the terms and * + * conditions of the Open Source Community License - Type C version 1.0 * + * or any later version as published by Syncleus, Inc. at www.syncleus.com. * + * There should be a copy of the license included with this file. If a copy * + * of the license is not included you are granted no right to distribute or * + * otherwise use this file except through a legal and valid license. You * + * should also contact Syncleus, Inc. at the information below if you cannot * + * find a license: * + * * + * Syncleus, Inc. * + * 2604 South 12th Street * + * Philadelphia, PA 19148 * + * * + ******************************************************************************/ +package com.syncleus.dann.graph; + +public interface MutableCloud< + T, + EP extends MutableCloud.Endpoint<? extends T> + > extends AssignableCloud<T,EP>, JoinableCloud<T,EP>, PartibleCloud<T, EP> +{ + interface Endpoint<T> extends AssignableCloud.Endpoint<T>, JoinableCloud.Endpoint<T>, PartibleCloud.Endpoint<T> + { + } +} diff --git a/src/main/java/com/syncleus/dann/graph/MutableEdge.java b/src/main/java/com/syncleus/dann/graph/MutableEdge.java index 9559255572bac270b033af6feb084ef7be06af20..9abece6c8bf9e58864c4a47e928702138c575664 100644 --- a/src/main/java/com/syncleus/dann/graph/MutableEdge.java +++ b/src/main/java/com/syncleus/dann/graph/MutableEdge.java @@ -21,9 +21,9 @@ package com.syncleus.dann.graph; public interface MutableEdge< T, EP extends MutableEdge.Endpoint<? extends T> - > extends Edge<T, EP>, AssignableCloud<T,EP> + > extends AssignableEdge<T, EP>, JoinableEdge<T,EP>, PartibleEdge<T,EP>, MutableCloud<T,EP> { - interface Endpoint<T> extends Edge.Endpoint<T>, AssignableCloud.Endpoint<T> + interface Endpoint<T> extends AssignableEdge.Endpoint<T>, JoinableEdge.Endpoint<T>, PartibleEdge.Endpoint<T>, MutableCloud.Endpoint<T> { }; } diff --git a/src/main/java/com/syncleus/dann/graph/MutableGraph.java b/src/main/java/com/syncleus/dann/graph/MutableGraph.java index 109590b74f68c3b9b750414c5927c52b70db2b9c..883213c27db775b83e231ac7b33f0de05fce8d33 100644 --- a/src/main/java/com/syncleus/dann/graph/MutableGraph.java +++ b/src/main/java/com/syncleus/dann/graph/MutableGraph.java @@ -24,21 +24,22 @@ import java.util.Set; public interface MutableGraph< N, E extends Cloud<N,? extends Cloud.Endpoint<? extends N>>, - NE extends MutableGraph.NodeEndpoint<N, E>, - EE extends MutableGraph.EdgeEndpoint<N, E> - > extends AssignableGraph<N,E,NE,EE> + NEP extends MutableGraph.NodeEndpoint<N, E>, + EEP extends MutableGraph.EdgeEndpoint<N, E> + > extends Graph<N,E,NEP,EEP> { + interface NodeEndpoint< - N, - E extends Cloud<N,? extends Cloud.Endpoint<? extends N>> - > extends AssignableGraph.NodeEndpoint<N,E> + ON, + OE extends Cloud<ON,? extends Cloud.Endpoint<? extends ON>> + > extends Graph.NodeEndpoint<ON,OE>, PartibleCloud.Endpoint<ON> { }; interface EdgeEndpoint< ON, OE extends Cloud<ON,? extends Cloud.Endpoint<? extends ON>> - > extends AssignableGraph.EdgeEndpoint<ON,OE> + > extends Graph.EdgeEndpoint<ON,OE>, PartibleCloud.Endpoint<OE> { }; diff --git a/src/main/java/com/syncleus/dann/graph/MutableHyperEdge.java b/src/main/java/com/syncleus/dann/graph/MutableHyperEdge.java index 3ba41f83f6d79d4e8bd9311568cee253e3fc826d..de36949f15fe68cc41807a4aef32f1a408a4d115 100644 --- a/src/main/java/com/syncleus/dann/graph/MutableHyperEdge.java +++ b/src/main/java/com/syncleus/dann/graph/MutableHyperEdge.java @@ -22,17 +22,10 @@ import java.util.*; public interface MutableHyperEdge< T, - EP extends Edge.Endpoint<T> + EP extends MutableHyperEdge.Endpoint<? extends T> > extends HyperEdge<T,EP>, MutableEdge<T,EP> { - interface Endpoint<NN, EN extends NN> extends HyperEdge.Endpoint<NN, EN>, MutableEdge.Endpoint<NN, EN> + interface Endpoint<NN> extends HyperEdge.Endpoint<NN>, MutableEdge.Endpoint<NN> { }; - - Endpoint<T, T> join(final T node) throws InvalidEdgeException; - Map<T,Endpoint<T, T>> join(final Set<T> nodes) throws InvalidEdgeException; - void leave(final Endpoint<T, T> endPoint) throws InvalidEdgeException; - void leave(final Set<Endpoint<T, T>> endPoint) throws InvalidEdgeException; - void clear() throws InvalidEdgeException; - Map<T,Endpoint<T, T>> reconfigure(final Set<T> connectNodes, final Set<Endpoint<T, T>> disconnectEndPoints) throws InvalidEdgeException; } diff --git a/src/main/java/com/syncleus/dann/graph/PartibleCloud.java b/src/main/java/com/syncleus/dann/graph/PartibleCloud.java new file mode 100644 index 0000000000000000000000000000000000000000..82ba759cfd3dc736b65e8dd42043be9f1ba4f8c3 --- /dev/null +++ b/src/main/java/com/syncleus/dann/graph/PartibleCloud.java @@ -0,0 +1,36 @@ +/****************************************************************************** + * * + * Copyright: (c) Syncleus, Inc. * + * * + * You may redistribute and modify this source code under the terms and * + * conditions of the Open Source Community License - Type C version 1.0 * + * or any later version as published by Syncleus, Inc. at www.syncleus.com. * + * There should be a copy of the license included with this file. If a copy * + * of the license is not included you are granted no right to distribute or * + * otherwise use this file except through a legal and valid license. You * + * should also contact Syncleus, Inc. at the information below if you cannot * + * find a license: * + * * + * Syncleus, Inc. * + * 2604 South 12th Street * + * Philadelphia, PA 19148 * + * * + ******************************************************************************/ +package com.syncleus.dann.graph; + +import java.util.Set; + +public interface PartibleCloud< + T, + EP extends PartibleCloud.Endpoint<? extends T> + > extends Cloud<T,EP> +{ + interface Endpoint<T> extends Cloud.Endpoint<T> + { + void part() throws InvalidEdgeException; + } + + void leave(MutableGraph.EdgeEndpoint<?, ?> endpoint) throws InvalidGraphException; + void leave(Set<? extends MutableGraph.EdgeEndpoint<?, ?>> endpoints) throws InvalidGraphException; + void clear() throws InvalidGraphException; +} diff --git a/src/main/java/com/syncleus/dann/graph/PartibleEdge.java b/src/main/java/com/syncleus/dann/graph/PartibleEdge.java new file mode 100644 index 0000000000000000000000000000000000000000..1f43ef25a34a5e9cb8507d01cb72a008ff9ce786 --- /dev/null +++ b/src/main/java/com/syncleus/dann/graph/PartibleEdge.java @@ -0,0 +1,29 @@ +/****************************************************************************** + * * + * Copyright: (c) Syncleus, Inc. * + * * + * You may redistribute and modify this source code under the terms and * + * conditions of the Open Source Community License - Type C version 1.0 * + * or any later version as published by Syncleus, Inc. at www.syncleus.com. * + * There should be a copy of the license included with this file. If a copy * + * of the license is not included you are granted no right to distribute or * + * otherwise use this file except through a legal and valid license. You * + * should also contact Syncleus, Inc. at the information below if you cannot * + * find a license: * + * * + * Syncleus, Inc. * + * 2604 South 12th Street * + * Philadelphia, PA 19148 * + * * + ******************************************************************************/ +package com.syncleus.dann.graph; + +public interface PartibleEdge< + T, + EP extends PartibleEdge.Endpoint<? extends T> + > extends Edge<T, EP>, PartibleCloud<T,EP> +{ + interface Endpoint<T> extends Edge.Endpoint<T>, PartibleCloud.Endpoint<T> + { + }; +} diff --git a/src/main/java/com/syncleus/dann/graph/PartibleGraph.java b/src/main/java/com/syncleus/dann/graph/PartibleGraph.java new file mode 100644 index 0000000000000000000000000000000000000000..19547419540acefbfd9a7cb7b5519d4bb29deea4 --- /dev/null +++ b/src/main/java/com/syncleus/dann/graph/PartibleGraph.java @@ -0,0 +1,42 @@ +/****************************************************************************** + * * + * Copyright: (c) Syncleus, Inc. * + * * + * You may redistribute and modify this source code under the terms and * + * conditions of the Open Source Community License - Type C version 1.0 * + * or any later version as published by Syncleus, Inc. at www.syncleus.com. * + * There should be a copy of the license included with this file. If a copy * + * of the license is not included you are granted no right to distribute or * + * otherwise use this file except through a legal and valid license. You * + * should also contact Syncleus, Inc. at the information below if you cannot * + * find a license: * + * * + * Syncleus, Inc. * + * 2604 South 12th Street * + * Philadelphia, PA 19148 * + * * + ******************************************************************************/ +package com.syncleus.dann.graph; + +public interface PartibleGraph< + N, + E extends Cloud<N,? extends Cloud.Endpoint<? extends N>>, + NEP extends PartibleGraph.NodeEndpoint<N, E>, + EEP extends PartibleGraph.EdgeEndpoint<N, E> + > extends Graph<N,E,NEP,EEP> +{ + + interface NodeEndpoint< + ON, + OE extends Cloud<ON,? extends Cloud.Endpoint<? extends ON>> + > extends Graph.NodeEndpoint<ON,OE>, PartibleCloud.Endpoint<ON> + { + }; + + interface EdgeEndpoint< + ON, + OE extends Cloud<ON,? extends Cloud.Endpoint<? extends ON>> + > extends Graph.EdgeEndpoint<ON,OE>, PartibleCloud.Endpoint<OE> + { + }; +}