1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18 package org.apache.commons.pipeline.validation;
19
20 import org.apache.commons.pipeline.Stage;
21
22 /**
23 * This class is used to store a collection of information about a particular
24 * validation failure.
25 *
26 */
27 public class ValidationFailure {
28 /**
29 * Enumeration of possible causes of validation failure
30 */
31 public enum Type {
32 /**
33 * Indicates that a stage appears to be unable to consume the output of the previous stage
34 */
35 STAGE_CONNECT,
36 /**
37 * Indicates that a branch could not consume the output (type mismatch) of pipeline
38 * stages feeding the branch.
39 */
40 BRANCH_CONNECT,
41 /**
42 * Indicates that a branch to consume the branch output of a stage could not be found.
43 */
44 BRANCH_NOT_FOUND,
45 /**
46 * Other validation error - see detail message.
47 */
48 OTHER
49 };
50
51 private Type type;
52 private String message;
53 private Stage upstream;
54 private Stage downstream;
55
56 /**
57 * Creates a new instance of ValidationError
58 * @param type The type of problem encountered
59 * @param message A message with more detailed information about the problem
60 * @param upstream A reference to the upstream stage
61 * @param downstream A reference to a downstream stage
62 */
63 public ValidationFailure(Type type, String message, Stage upstream, Stage downstream) {
64 this.type = type;
65 this.message = message;
66 this.upstream = upstream;
67 this.downstream = downstream;
68 }
69
70 /**
71 * Type identifying what sort of problem was encountered
72 * @return the type of problem encountered
73 */
74 public Type getType() {
75 return this.type;
76 }
77
78 /**
79 * Returns the descriptive message about the error
80 * @return message describing the error
81 */
82 public String getMessage() {
83 return this.message;
84 }
85
86 /**
87 * The stage upstream of the connection that could not be validated
88 * @return reference to the upstream Stage
89 */
90 public Stage getUpstreamStage() {
91 return this.upstream;
92 }
93
94 /**
95 * The stage downstream of the connection that could not be validated
96 * @return reference to the downstream Stage
97 */
98 public Stage getDownstreamStage() {
99 return this.downstream;
100 }
101 }