{"record":{"id":"5ddfb6d94999ea0f","repo":"pinpoint-apm/pinpoint","slug":"baseclassname-must-not-be-empty","errorCode":null,"errorMessage":"baseClassName must not be empty","messagePattern":"baseClassName must not be empty","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"agent-module/bootstraps/bootstrap-core/src/main/java/com/navercorp/pinpoint/bootstrap/instrument/matcher/LambdaExpressionMatcher.java","lineNumber":18,"sourceCode":"package com.navercorp.pinpoint.bootstrap.instrument.matcher;\n\nimport com.navercorp.pinpoint.bootstrap.instrument.matcher.operand.InterfaceInternalNameMatcherOperand;\nimport com.navercorp.pinpoint.bootstrap.instrument.matcher.operand.MatcherOperand;\nimport com.navercorp.pinpoint.bootstrap.instrument.matcher.operand.PackageInternalNameMatcherOperand;\nimport com.navercorp.pinpoint.common.util.StringUtils;\n\nimport java.util.Objects;\n\npublic class LambdaExpressionMatcher implements PackageBasedMatcher {\n    static final String LAMBDA_INSTANCE_NAME_PREFIX = \"$$Lambda$\";\n    private final String basePackageName;\n    private final MatcherOperand matcherOperand;\n\n    public LambdaExpressionMatcher(String baseClassName, String functionalInterfaceName) {\n        Objects.requireNonNull(baseClassName, \"baseClassName\");\n        if (!StringUtils.hasText(baseClassName)) {\n            throw new IllegalArgumentException(\"baseClassName must not be empty\");\n        }\n        Objects.requireNonNull(functionalInterfaceName, \"functionalInterfaceName\");\n        if (!StringUtils.hasText(functionalInterfaceName)) {\n            throw new IllegalArgumentException(\"functionalInterfaceName must not be empty\");\n        }\n        this.basePackageName = baseClassName + LAMBDA_INSTANCE_NAME_PREFIX;\n\n        final MatcherOperand operand = new PackageInternalNameMatcherOperand(basePackageName);\n        final MatcherOperand functionalInterfaceMatcherOperand = new InterfaceInternalNameMatcherOperand(functionalInterfaceName, false);\n        this.matcherOperand = operand.and(functionalInterfaceMatcherOperand);\n    }\n\n    @Override\n    public String getBasePackageName() {\n        return this.basePackageName;\n    }\n\n    @Override","sourceCodeStart":1,"sourceCodeEnd":36,"githubUrl":"https://github.com/pinpoint-apm/pinpoint/blob/744c3d3075e595656abb1ae331ad2c0e4c9eb996/agent-module/bootstraps/bootstrap-core/src/main/java/com/navercorp/pinpoint/bootstrap/instrument/matcher/LambdaExpressionMatcher.java#L1-L36","documentation":"Constructor guard in LambdaExpressionMatcher: the baseClassName argument is null or empty (StringUtils/Objects check), so the lambda-targeting matcher cannot determine which enclosing class's $$Lambda$ instances to match.","triggerScenarios":"Thrown at agent-module/bootstraps/bootstrap-core/src/main/java/com/navercorp/pinpoint/bootstrap/instrument/matcher/LambdaExpressionMatcher.java:18 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Supply a valid fully-qualified base class name to LambdaExpressionMatcher","Validate the plugin's target class configuration before creating the matcher"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"744c3d3075e595656abb1ae331ad2c0e4c9eb996","analyzedAt":"2026-09-07T18:48:45.289Z","contentChangedAt":"2026-09-07T18:48:45.289Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}