Spec-Zone.ru › OpenJDK 24

Класс SettingControl

java.lang.Object
jdk.jfr.SettingControl
public abstract class SettingControl extends Object
Базовый класс для расширения, чтобы создать элементы управления настройками.

Следующий пример демонстрирует простое реализацию элемента управления настройками для регулярных выражений:

final class RegExpControl extends SettingControl {
    private Pattern pattern = Pattern.compile(".*");

    @Override
    public void setValue(String value) {
        this.pattern = Pattern.compile(value);
    }

    @Override
    public String combine(Set<String> values) {
        return String.join("|", values);
    }

    @Override
    public String getValue() {
        return pattern.toString();
    }

    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();
Since:
9
См. также:
  • SettingDefinition

Краткое описание конструкторов

SettingControl()
Модификатор Конструктор Описание
protected
Конструктор для вызова подклассами.

Краткое описание методов

Модификатор и тип Метод Описание
abstract String combine(Set<String> settingValues)
Объединяет значения настроек для всех активных записей в одно значение, когда одновременно выполняются несколько записей.
abstract String getValue()
Возвращает текущее используемое значение для этой настройки, а не null.
abstract void setValue(String settingValue)
Устанавливает значение для этой настройки.

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, 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.
https://download.java.net/java/early_access/jdk24/docs/api/jdk.jfr/jdk/jfr/SettingControl.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API