Skip to content
Snippets Groups Projects
Commit 55c79ff4 authored by Nelson Tavares de Sousa's avatar Nelson Tavares de Sousa
Browse files

adapted old error throwing logic

parent 3c77564c
No related branches found
No related tags found
No related merge requests found
...@@ -278,7 +278,7 @@ public abstract class AbstractStage { ...@@ -278,7 +278,7 @@ public abstract class AbstractStage {
} }
public void onValidating(final List<InvalidPortConnection> invalidPortConnections) { public void onValidating(final List<InvalidPortConnection> invalidPortConnections) {
this.checkTypeCompliance(); this.checkTypeCompliance(invalidPortConnections);
changeState(StageState.VALIDATED); changeState(StageState.VALIDATED);
} }
...@@ -300,15 +300,20 @@ public abstract class AbstractStage { ...@@ -300,15 +300,20 @@ public abstract class AbstractStage {
/** /**
* Checks if connections to this pipe are correct in regards to type compliance. * Checks if connections to this pipe are correct in regards to type compliance.
* Incoming elements must be instanceof input port type * Incoming elements must be instanceof input port type.
*
* @param invalidPortConnections
* List of invalid connections. Adding invalid connections to this list is a performance advantage in comparison to returning a list by each stage.
*/ */
private void checkTypeCompliance() { private void checkTypeCompliance(final List<InvalidPortConnection> invalidPortConnections) {
for (InputPort<?> port : getInputPorts()) { for (InputPort<?> port : getInputPorts()) {
Class<?> targetType = port.getType(); Class<?> targetType = port.getType();
Class<?> sourceType = port.pipe.getSourcePort().getType(); Class<?> sourceType = port.pipe.getSourcePort().getType();
if (targetType != null && sourceType != null) { if (targetType != null && sourceType != null) {
if (targetType.isAssignableFrom(sourceType)) { // kinda instanceof, but for Class class if (targetType.isAssignableFrom(sourceType)) { // kinda instanceof, but for Class class
throw new IllegalStateException("2002 - Invalid pipe at " + port.toString() + ": " + targetType + " is not a superclass/type of " + sourceType); invalidPortConnections.add(new InvalidPortConnection(port.pipe.getSourcePort(), port));
// throw new IllegalStateException("2002 - Invalid pipe at " + port.toString() + ": " + targetType + " is not a superclass/type of " +
// sourceType);
} }
} }
} }
......
...@@ -34,6 +34,7 @@ public class AnalysisNotValidException extends RuntimeException { ...@@ -34,6 +34,7 @@ public class AnalysisNotValidException extends RuntimeException {
@Override @Override
public String getMessage() { public String getMessage() {
final StringBuilder builder = new StringBuilder(this.invalidPortConnections.size() * 40); final StringBuilder builder = new StringBuilder(this.invalidPortConnections.size() * 40);
builder.append("2002 - ");
builder.append(this.invalidPortConnections.size()); builder.append(this.invalidPortConnections.size());
builder.append(" invalid port connections were detected.\n"); builder.append(" invalid port connections were detected.\n");
Joiner.on("\n").appendTo(builder, this.invalidPortConnections); Joiner.on("\n").appendTo(builder, this.invalidPortConnections);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment