Класс SettingControl
public abstract class SettingControl extends Object
В следующем примере показана реализация элемента управления настройками для регулярных выражений:
final class RegExpControl extends SettingControl {
private static final String DEFAULT_VALUE = ".*";
private Pattern pattern = Pattern.compile(DEFAULT_VALUE);
@Override
public String combine(Set<String> values) {
List<String> valid = new ArrayList<>();
for (String value : values) {
try {
Pattern.compile(value);
valid.add(value);
} catch (PatternSyntaxException pse) {
// Ignore invalid patterns
}
}
if (valid.isEmpty()) {
return DEFAULT_VALUE;
}
if (valid.size() == 1) {
return valid.getFirst();
}
return "(" + String.join(")|(", valid) + ")";
}
@Override
public void setValue(String value) {
try {
this.pattern = Pattern.compile(value);
} catch (PatternSyntaxException pse) {
// Ignore invalid patterns
}
}
@Override
public String getValue() {
return pattern.pattern();
}
public boolean matches(String s) {
return pattern.matcher(s).find();
}
}
setValue(String), getValue() и combine(Set<String>) вызываются при изменении значения настройки, что обычно происходит при запуске или остановке записи. Метод combine(Set<String>) вызывается для определения используемого значения, когда одновременно выполняется несколько записей. Элемент управления настройками должен иметь конструктор по умолчанию, который можно вызвать при регистрации события.
Чтобы использовать элемент управления настройками с событием, добавьте метод, который возвращает значение boolean и принимает элемент управления настройками в качестве параметра. Аннотируйте метод аннотацией @SettingDefinition. По умолчанию в качестве имени настройки используется имя метода, но его можно явно задать с помощью аннотации @Name. Если метод возвращает true, событие будет зафиксировано.
Рекомендуется, чтобы метод setValue(String) обновлял эффективную структуру данных, которую можно быстро проверить при фиксации события.
В следующем примере показано, как создать событие, использующее описанный выше фильтр регулярных выражений.
abstract class HTTPRequest extends Event {
@Label("Request URI")
protected String uri;
@Label("Servlet URI Filter")
@SettingDefinition
protected boolean uriFilter(RegExpControl regExp) {
return regExp.matches(uri);
}
}
@Label("HTTP Get Request")
class HTTPGetRequest extends HTTPRequest {
}
@Label("HTTP Post Request")
class HTTPPostRequest extends HTTPRequest {
}
class ExampleServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
HTTPGetRequest request = new HTTPGetRequest();
request.begin();
request.uri = req.getRequestURI();
...
request.commit();
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp) {
HTTPPostRequest request = new HTTPPostRequest();
request.begin();
request.uri = req.getRequestURI();
...
request.commit();
}
}
В следующем примере показано, как фильтровать события, задав настройку "uriFilter" указанными регулярными выражениями.
Recording r = new Recording();
r.enable("HTTPGetRequest").with("uriFilter", "https://www.example.com/list/.*");
r.enable("HTTPPostRequest").with("uriFilter", "https://www.example.com/login/.*");
r.start();
- Начиная с:
- 9
- См. также:
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Конструктор для вызова конструкторами подклассов. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
abstract String |
combine |
Объединяет значения настроек всех выполняющихся записей в одно значение, если одновременно выполняется несколько записей. |
abstract String |
getValue() |
Возвращает используемое в данный момент значение этой настройки, не null. |
abstract void |
setValue |
Задает значение этой настройки. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли другой объект этому объекту. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API подлежит удалению в будущей версии. Финализация объявлена устаревшей и подлежит удалению в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Переводит текущий поток в состояние ожидания до пробуждения, обычно в результате уведомления или прерывания. |
final void |
wait |
Переводит текущий поток в состояние ожидания до пробуждения, обычно в результате уведомления или прерывания, либо до истечения определенного промежутка реального времени. |
final void |
wait |
Переводит текущий поток в состояние ожидания до пробуждения, обычно в результате уведомления или прерывания, либо до истечения определенного промежутка реального времени. |
Подробное описание конструкторов
SettingControl
protected SettingControl()
Подробное описание методов
combine
public abstract String combine(Set<String> settingValues)
Правила объединения значений настроек зависят от реализованного элемента управления настройками, однако все записи должны получать как минимум все запрошенные ими события.
Этот метод не должен иметь побочных эффектов, поскольку вызывающий код может кэшировать значения. Метод не должен возвращать null или выбрасывать исключение. Если значение недопустимо для этого элемента управления настройками, его следует игнорировать.
Примеры:
Если элемент управления настройками представляет порог, а одновременно выполняются три записи со значениями настройки "10 ms", "8 s" и "1 ms", этот метод возвращает "1 ms", поскольку это означает, что все записи получат как минимум все запрошенные данные.
Если элемент управления настройками представляет набор имен, а одновременно выполняются две записи со значениями настройки "Smith, Jones" и "Jones,
Williams", возвращаемое значение — "Smith, Jones, Williams", поскольку будут приняты все имена.
Если элемент управления настройками представляет логическое условие, а одновременно выполняются четыре записи со следующими значениями: "true", "false", "false" и "incorrect", этот метод возвращает "true", поскольку все записи получат как минимум все запрошенные данные.
- Параметры:
-
settingValues— набор значений, неnull - Возвращает:
- используемое значение, не
null
setValue
public abstract void setValue(String settingValue)
Если значение настройки недопустимо для этой настройки, метод не выбрасывает исключение. Вместо этого значение игнорируется.
- Параметры:
-
settingValue— строковое значение, неnull
getValue
public abstract String getValue()
null. Значение, возвращаемое этим методом, допустимо в качестве аргумента методов setValue(String) и combine(Set).
Этот метод вызывается при регистрации события для получения значения по умолчанию. Поэтому важно, чтобы допустимое значение можно было вернуть сразу после создания экземпляра этого класса. Возвращать null недопустимо.
- Возвращает:
- значение настройки, не
null
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.