// Path: rulette-core/src/main/java/com/github/kislayverma/rulette/core/metadata/RuleInputMetaData.java
// public class RuleInputMetaData implements Serializable {
//     private static final long serialVersionUID = 7018331311799000825L;
//     private final String name;
//     private final int priority;
//     private final RuleInputType ruleInputType;
//     private final String dataType;
//     private final String rangeLowerBoundFieldName;
//     private final String rangeUpperBoundFieldName;
// 
//     public RuleInputMetaData(String name, int priority, RuleInputType ruleType, String dataType,
//             String rangeLowerBoundFieldName, String rangeUpperBoundFieldName) {
//         this.name = name;
//         this.priority = priority;
//         this.ruleInputType = ruleType;
//         this.dataType = dataType;
//         this.rangeLowerBoundFieldName = rangeLowerBoundFieldName;
//         this.rangeUpperBoundFieldName = rangeUpperBoundFieldName;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public int getPriority() {
//         return priority;
//     }
// 
//     public RuleInputType getRuleInputType() {
//         return ruleInputType;
//     }
// 
//     public String getDataType() {
//         return dataType;
//     }
// 
//     public String getRangeLowerBoundFieldName() {
//         return rangeLowerBoundFieldName;
//     }
// 
//     public String getRangeUpperBoundFieldName() {
//         return rangeUpperBoundFieldName;
//     }
// 
//     @Override
//     public String toString() {
//         return "RuleInputMetaData{" +
//             "name='" + name + '\'' +
//             ", priority=" + priority +
//             ", ruleInputType=" + ruleInputType +
//             ", dataType='" + dataType + '\'' +
//             ", rangeLowerBoundFieldName='" + rangeLowerBoundFieldName + '\'' +
//             ", rangeUpperBoundFieldName='" + rangeUpperBoundFieldName + '\'' +
//             '}';
//     }
// }
// 
// Path: rulette-core/src/main/java/com/github/kislayverma/rulette/core/ruleinput/type/RuleInputType.java
// public enum RuleInputType {
//     VALUE,
//     RANGE
// }


import com.github.kislayverma.rulette.core.metadata.RuleInputMetaData;
import com.github.kislayverma.rulette.core.ruleinput.type.RuleInputType;
import java.io.Serializable;
package com.github.kislayverma.rulette.core.ruleinput;


public abstract class RuleInput implements Serializable {
    private static final long serialVersionUID = 2370282382386651591L;

// Path: rulette-core/src/main/java/com/github/kislayverma/rulette/core/metadata/RuleInputMetaData.java
// public class RuleInputMetaData implements Serializable {
//     private static final long serialVersionUID = 7018331311799000825L;
//     private final String name;
//     private final int priority;
//     private final RuleInputType ruleInputType;
//     private final String dataType;
//     private final String rangeLowerBoundFieldName;
//     private final String rangeUpperBoundFieldName;
// 
//     public RuleInputMetaData(String name, int priority, RuleInputType ruleType, String dataType,
//             String rangeLowerBoundFieldName, String rangeUpperBoundFieldName) {
//         this.name = name;
//         this.priority = priority;
//         this.ruleInputType = ruleType;
//         this.dataType = dataType;
//         this.rangeLowerBoundFieldName = rangeLowerBoundFieldName;
//         this.rangeUpperBoundFieldName = rangeUpperBoundFieldName;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public int getPriority() {
//         return priority;
//     }
// 
//     public RuleInputType getRuleInputType() {
//         return ruleInputType;
//     }
// 
//     public String getDataType() {
//         return dataType;
//     }
// 
//     public String getRangeLowerBoundFieldName() {
//         return rangeLowerBoundFieldName;
//     }
// 
//     public String getRangeUpperBoundFieldName() {
//         return rangeUpperBoundFieldName;
//     }
// 
//     @Override
//     public String toString() {
//         return "RuleInputMetaData{" +
//             "name='" + name + '\'' +
//             ", priority=" + priority +
//             ", ruleInputType=" + ruleInputType +
//             ", dataType='" + dataType + '\'' +
//             ", rangeLowerBoundFieldName='" + rangeLowerBoundFieldName + '\'' +
//             ", rangeUpperBoundFieldName='" + rangeUpperBoundFieldName + '\'' +
//             '}';
//     }
// }
// 
// Path: rulette-core/src/main/java/com/github/kislayverma/rulette/core/ruleinput/type/RuleInputType.java
// public enum RuleInputType {
//     VALUE,
//     RANGE
// }


// Path: rulette-core/src/main/java/com/github/kislayverma/rulette/core/ruleinput/RuleInput.java
import com.github.kislayverma.rulette.core.metadata.RuleInputMetaData;
import com.github.kislayverma.rulette.core.ruleinput.type.RuleInputType;
import java.io.Serializable;

package com.github.kislayverma.rulette.core.ruleinput;


public abstract class RuleInput implements Serializable {
    private static final long serialVersionUID = 2370282382386651591L;

    protected RuleInputMetaData metaData;