Using this model :
with version "6.0.0-SNAPSHOT"
class org.kevoree.Instance extends org.kevoree.Element {
with instantiation "false"
att name: String with index
}
class org.kevoree.Channel extends org.kevoree.Instance {
rel outputs: org.kevoree.OutputPort with opposite "channels"
}
class org.kevoree.Component extends org.kevoree.Instance {
rel outputs: org.kevoree.OutputPort with opposite "channels"
}
class org.kevoree.Port extends org.kevoree.Element {
att name: String with index
rel channels: org.kevoree.Channel with opposite "outputs"
}
class org.kevoree.OutputPort extends org.kevoree.Port {
}
I wrote this code which instanciate a Component, add it an OutputPort and then tries to retrieve the OutputPort from the Component :
import org.KevoreeModel;
import org.junit.Test;
import org.kevoree.*;
import org.kevoree.modeling.KCallback;
import org.kevoree.modeling.memory.manager.DataManagerBuilder;
import org.kevoree.modeling.scheduler.impl.DirectScheduler;
public class BugTest {
@Test
public void test() throws Exception {
final KevoreeModel tm = new KevoreeModel(DataManagerBuilder.create().withScheduler(new DirectScheduler()).build());
tm.connect(new KCallback() {
@Override
public void on(Object cb) {
final Component component1 = tm.createComponent(0, 0);
component1.setName("comp0");
final OutputPort outputPort = tm.createOutputPort(0, 0);
component1.addOutputs(outputPort);
outputPort.getChannels(new KCallback<Channel[]>() {
@Override
public void on(Channel[] channels) {
for (Channel channel : channels) {
System.out.println("Channel : " + channel.getName());
}
}
});
}
});
}
}
The resulting error is :
java.lang.ClassCastException: org.kevoree.impl.ComponentImpl cannot be cast to org.kevoree.Channel
at org.kevoree.impl.OutputPortImpl$1.on(OutputPortImpl.java:46)
at org.kevoree.impl.OutputPortImpl$1.on(OutputPortImpl.java:41)
at org.kevoree.modeling.memory.resolver.impl.DistortedTimeResolver$2$1$1$1$1.on(DistortedTimeResolver.java:180)
at org.kevoree.modeling.memory.resolver.impl.DistortedTimeResolver$2$1$1$1$1.on(DistortedTimeResolver.java:162)
at org.kevoree.modeling.memory.resolver.impl.DistortedTimeResolver.getOrLoadAndMarkAll(DistortedTimeResolver.java:688)
at org.kevoree.modeling.memory.resolver.impl.DistortedTimeResolver$2$1$1$1.on(DistortedTimeResolver.java:162)
at org.kevoree.modeling.memory.resolver.impl.DistortedTimeResolver$2$1$1$1.on(DistortedTimeResolver.java:142)
at org.kevoree.modeling.memory.resolver.impl.DistortedTimeResolver.getOrLoadAndMarkAll(DistortedTimeResolver.java:688)
at org.kevoree.modeling.memory.resolver.impl.DistortedTimeResolver$2$1$1.on(DistortedTimeResolver.java:142)
at org.kevoree.modeling.memory.resolver.impl.DistortedTimeResolver$2$1$1.on(DistortedTimeResolver.java:127)
at org.kevoree.modeling.memory.resolver.impl.DistortedTimeResolver.getOrLoadAndMarkAll(DistortedTimeResolver.java:688)
at org.kevoree.modeling.memory.resolver.impl.DistortedTimeResolver$2$1.on(DistortedTimeResolver.java:127)
at org.kevoree.modeling.memory.resolver.impl.DistortedTimeResolver$2$1.on(DistortedTimeResolver.java:117)
at org.kevoree.modeling.memory.resolver.impl.DistortedTimeResolver.getOrLoadAndMark(DistortedTimeResolver.java:657)
at org.kevoree.modeling.memory.resolver.impl.DistortedTimeResolver$2.run(DistortedTimeResolver.java:117)
at org.kevoree.modeling.scheduler.impl.DirectScheduler.dispatch(DirectScheduler.java:10)
at org.kevoree.modeling.memory.manager.impl.DataManager.lookupAllObjects(DataManager.java:328)
at org.kevoree.modeling.abs.AbstractKObject.internal_getRelation(AbstractKObject.java:364)
at org.kevoree.modeling.abs.AbstractKObject.getRelation(AbstractKObject.java:351)
at org.kevoree.impl.OutputPortImpl.getChannels(OutputPortImpl.java:41)
at BugTest$1.on(BugTest.java:20)
at org.kevoree.modeling.memory.manager.impl.DataManager$2$1$1$1.on(DataManager.java:271)
at org.kevoree.modeling.memory.manager.impl.DataManager$2$1$1$1.on(DataManager.java:239)
at org.kevoree.modeling.cdn.impl.MemoryContentDeliveryDriver.get(MemoryContentDeliveryDriver.java:54)
at org.kevoree.modeling.memory.manager.impl.DataManager$2$1$1.on(DataManager.java:239)
at org.kevoree.modeling.memory.manager.impl.DataManager$2$1$1.on(DataManager.java:230)
at org.kevoree.modeling.cdn.impl.MemoryContentDeliveryDriver.atomicGetIncrement(MemoryContentDeliveryDriver.java:43)
at org.kevoree.modeling.memory.manager.impl.DataManager$2$1.on(DataManager.java:229)
at org.kevoree.modeling.memory.manager.impl.DataManager$2$1.on(DataManager.java:216)
at org.kevoree.modeling.cdn.impl.MemoryContentDeliveryDriver.connect(MemoryContentDeliveryDriver.java:93)
at org.kevoree.modeling.memory.manager.impl.DataManager$2.run(DataManager.java:216)
at org.kevoree.modeling.scheduler.impl.DirectScheduler.dispatch(DirectScheduler.java:10)
at org.kevoree.modeling.memory.manager.impl.DataManager.connect(DataManager.java:213)
at org.kevoree.modeling.abs.AbstractKModel.connect(AbstractKModel.java:34)
at BugTest.test(BugTest.java:13)
[...]
Using this model :
I wrote this code which instanciate a Component, add it an OutputPort and then tries to retrieve the OutputPort from the Component :
The resulting error is :