Github user ottobackwards commented on a diff in the pull request: https://github.com/apache/metron/pull/884#discussion_r159921114 --- Diff: metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/shell/StellarResult.java --- @@ -0,0 +1,185 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package org.apache.metron.stellar.common.shell; + +import java.util.Optional; + +/** + * The result of executing a Stellar expression within a StellarShellExecutor. + */ +public class StellarResult { + + /** + * Indicates that a Stellar expression resulted in either + * success or an error. + */ + enum Status { + SUCCESS, + ERROR, + TERMINATE + } + + /** + * Indicates either success or failure of executing the expression. + */ + private Status status; + + /** + * The result of executing the expression. Only valid when execution is successful. + */ + private Optional<Object> value; + + /** + * The error that occurred when executing the expression. Only valid when execution results in an error. + */ + private Optional<Throwable> exception; + + /** + * Indicates if the value is null; + * + * A null is a valid result, but cannot be unwrapped from an Optional. Because of this + * a boolean is used to indicate if the result is a success and the value is null. + */ + private boolean isValueNull; + + /** + * Private constructor to construct a result indicate success. Use the static methods; success. + * + * @param status Indicates success or failure. + * @param value The value of executing the expression. + */ + private StellarResult(Status status, Object value) { + this.status = status; + this.value = Optional.ofNullable(value); + this.exception = Optional.empty(); + this.isValueNull = (value == null); --- End diff -- && status == Status.SUCESS ?
---