From c0f9db6b9c7eb0b49dad6fe59b7c4721446db3d8 Mon Sep 17 00:00:00 2001 From: Nicola Isotta Date: Fri, 17 Apr 2026 16:30:36 +0200 Subject: [PATCH] fix the evaluation of the default name of CDI beans according to the specs, the first char must always be lowercased --- .../beans/impl/model/WebBeansModelProviderImpl.java | 12 ++++-------- .../modules/web/beans/model/NamedJakartaTest.java | 3 +-- .../netbeans/modules/web/beans/model/NamedTest.java | 3 +-- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/enterprise/web.beans/src/org/netbeans/modules/web/beans/impl/model/WebBeansModelProviderImpl.java b/enterprise/web.beans/src/org/netbeans/modules/web/beans/impl/model/WebBeansModelProviderImpl.java index 7501ba0dccdb..49d591b35989 100644 --- a/enterprise/web.beans/src/org/netbeans/modules/web/beans/impl/model/WebBeansModelProviderImpl.java +++ b/enterprise/web.beans/src/org/netbeans/modules/web/beans/impl/model/WebBeansModelProviderImpl.java @@ -509,14 +509,10 @@ private String getNamedName( Element element, AnnotationMirror namedAnnotation ) if ( element instanceof TypeElement ){ String name = element.getSimpleName().toString(); if ( name.length() >0 ){ - // XXX we may use Introspector.decapitalize - String withoutPrefix = name.substring(1); - // #249438 - if (!withoutPrefix.isEmpty() && Character.isUpperCase(withoutPrefix.charAt(0))) { - return name; - } else { - return Character.toLowerCase(name.charAt(0)) + withoutPrefix; - } + // According to the CDI spec: + // The default name for a managed bean is the unqualified class name of the bean class, + // after converting the first character to lower case. + return Character.toLowerCase(name.charAt(0)) + name.substring(1); } else { return name; diff --git a/enterprise/web.beans/test/unit/src/org/netbeans/modules/web/beans/model/NamedJakartaTest.java b/enterprise/web.beans/test/unit/src/org/netbeans/modules/web/beans/model/NamedJakartaTest.java index 8871de6a8bfd..d45cb3f94833 100644 --- a/enterprise/web.beans/test/unit/src/org/netbeans/modules/web/beans/model/NamedJakartaTest.java +++ b/enterprise/web.beans/test/unit/src/org/netbeans/modules/web/beans/model/NamedJakartaTest.java @@ -112,11 +112,10 @@ else if ( "foo.Iface".equals( fqn )){ String name = model.getName(element); assertEquals("iface", name); } - // #249438 else if ("foo.CApital".equals(fqn)) { iface = element; String name = model.getName(element); - assertEquals("CApital", name); + assertEquals("cApital", name); } } else if ( element instanceof VariableElement ){ diff --git a/enterprise/web.beans/test/unit/src/org/netbeans/modules/web/beans/model/NamedTest.java b/enterprise/web.beans/test/unit/src/org/netbeans/modules/web/beans/model/NamedTest.java index d30e313adb05..9b45a512c11e 100644 --- a/enterprise/web.beans/test/unit/src/org/netbeans/modules/web/beans/model/NamedTest.java +++ b/enterprise/web.beans/test/unit/src/org/netbeans/modules/web/beans/model/NamedTest.java @@ -112,11 +112,10 @@ else if ( "foo.Iface".equals( fqn )){ String name = model.getName(element); assertEquals("iface", name); } - // #249438 else if ("foo.CApital".equals(fqn)) { iface = element; String name = model.getName(element); - assertEquals("CApital", name); + assertEquals("cApital", name); } } else if ( element instanceof VariableElement ){