1 /* 2 * scriptable-dataset (https://github.com/hazendaz/scriptable-dataset) 3 * 4 * Copyright 2011-2024 Hazendaz. 5 * 6 * All rights reserved. This program and the accompanying materials 7 * are made available under the terms of The Apache Software License, 8 * Version 2.0 which accompanies this distribution, and is available at 9 * https://www.apache.org/licenses/LICENSE-2.0.txt 10 * 11 * Contributors: 12 * Gunnar Morling 13 * Hazendaz (Jeremy Landis). 14 */ 15 package de.gmorling.scriptabledataset; 16 17 import de.gmorling.scriptabledataset.handlers.ScriptInvocationHandler; 18 19 import java.util.ArrayList; 20 import java.util.List; 21 import java.util.Objects; 22 23 import lombok.ToString; 24 25 /** 26 * Configures the usage of one scripting language with a prefix and a list of invocation handlers. 27 */ 28 @ToString 29 public class ScriptableDataSetConfig { 30 31 /** The prefix. */ 32 private final String prefix; 33 34 /** The language name. */ 35 private final String languageName; 36 37 /** The handlers. */ 38 private final List<ScriptInvocationHandler> handlers = new ArrayList<>(); 39 40 /** 41 * Creates a new ScriptableDataSetConfig. 42 * 43 * @param languageName 44 * The name of the language as expected by the JSR 223 scripting engine manager, e.g. "jruby". May not be 45 * null. 46 * @param prefix 47 * A prefix, which shall precede fields in a ScriptableDataSet in that language, e.g. "jruby:". May not 48 * be null. 49 */ 50 public ScriptableDataSetConfig(String languageName, String prefix) { 51 this(languageName, prefix, null); 52 } 53 54 /** 55 * Creates a new ScriptableDataSetConfig. 56 * 57 * @param languageName 58 * The name of the language as expected by the JSR 223 scripting engine manager, e.g. "jruby". May not be 59 * null. 60 * @param prefix 61 * A prefix, which shall precede fields in a ScriptableDataSet in that language, e.g. "jruby:". May not 62 * be null. 63 * @param handlers 64 * An optional list with handlers to be applied for fields with the given prefix. 65 */ 66 public ScriptableDataSetConfig(String languageName, String prefix, List<ScriptInvocationHandler> handlers) { 67 68 Objects.requireNonNull(languageName); 69 Objects.requireNonNull(prefix); 70 71 this.prefix = prefix; 72 this.languageName = languageName; 73 74 if (handlers != null) { 75 this.handlers.addAll(handlers); 76 } 77 } 78 79 /** 80 * Gets the prefix. 81 * 82 * @return the prefix 83 */ 84 public String getPrefix() { 85 return prefix; 86 } 87 88 /** 89 * Gets the language name. 90 * 91 * @return the language name 92 */ 93 public String getLanguageName() { 94 return languageName; 95 } 96 97 /** 98 * Gets the handlers. 99 * 100 * @return the handlers 101 */ 102 public List<ScriptInvocationHandler> getHandlers() { 103 return handlers; 104 } 105 106 }