You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by st...@apache.org on 2026/07/19 20:33:02 UTC

(openwebbeans) 02/02: OWB-1467 simplify code by using more modern Java patterns

This is an automated email from the ASF dual-hosted git repository.

asf-gitbox-commits pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/openwebbeans.git

commit cfc3137e4b0cb5823562c6c0e7defb881c19d21a
Author: Mark Struberg <st...@apache.org>
AuthorDate: Sun Jul 19 22:32:13 2026 +0200

    OWB-1467 simplify code by using more modern Java patterns
---
 .../webbeans/annotation/AnnotationManager.java     |  8 ++---
 .../java/org/apache/webbeans/boot/Bootstrap.java   |  2 +-
 .../creation/CdiInterceptorBeanBuilder.java        |  3 +-
 .../component/creation/InterceptorBeanBuilder.java |  4 +--
 .../org/apache/webbeans/config/BeansDeployer.java  |  2 +-
 .../apache/webbeans/config/DefaultAnnotation.java  | 23 ++++---------
 .../webbeans/config/OwbTypeVariableImpl.java       | 38 ++++++++--------------
 .../InjectionPointConfiguratorImpl.java            |  6 ++--
 .../ObserverMethodConfiguratorImpl.java            |  5 +--
 .../webbeans/container/InjectionResolver.java      |  4 +--
 .../corespi/scanner/AbstractMetaDataDiscovery.java |  4 +--
 .../corespi/scanner/xbean/OwbAnnotationFinder.java |  2 +-
 .../webbeans/deployment/StereoTypeModel.java       |  6 ++--
 .../java/org/apache/webbeans/event/EventImpl.java  |  2 +-
 .../apache/webbeans/event/EventMetadataImpl.java   |  2 +-
 .../apache/webbeans/event/NotificationManager.java | 14 ++------
 .../apache/webbeans/event/ObserverMethodImpl.java  |  1 -
 .../webbeans/inject/InjectableConstructor.java     |  2 +-
 .../apache/webbeans/inject/InjectableMethod.java   |  2 +-
 .../inject/impl/InjectionPointFactory.java         |  2 +-
 .../webbeans/inject/impl/InjectionPointImpl.java   |  2 +-
 .../webbeans/inject/instance/InstanceImpl.java     |  5 +--
 .../intercept/InterceptorResolutionService.java    |  8 ++---
 .../java/org/apache/webbeans/jms/JMSModel.java     |  2 +-
 .../webbeans/portable/AbstractAnnotated.java       |  6 ++--
 .../portable/AnnotatedConstructorImpl.java         |  2 +-
 .../webbeans/portable/AnnotatedTypeImpl.java       |  2 +-
 .../apache/webbeans/portable/InstanceProducer.java |  2 +-
 .../LazyInterceptorDefinedInjectionTarget.java     |  2 +-
 .../events/generics/GProcessSyntheticBean.java     |  1 -
 .../generics/GProcessSyntheticObserverMethod.java  |  1 -
 .../webbeans/proxy/AbstractProxyFactory.java       |  2 +-
 .../proxy/InterceptorDecoratorProxyFactory.java    |  2 +-
 .../webbeans/proxy/NormalScopeProxyFactory.java    |  4 +--
 .../webbeans/proxy/SubclassProxyFactory.java       |  2 +-
 .../java/org/apache/webbeans/util/ClassUtil.java   |  2 +-
 .../org/apache/webbeans/util/GenericsUtil.java     |  4 +--
 .../webbeans/util/InjectionExceptionUtil.java      |  2 +-
 38 files changed, 69 insertions(+), 114 deletions(-)

diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/annotation/AnnotationManager.java b/webbeans-impl/src/main/java/org/apache/webbeans/annotation/AnnotationManager.java
index 4cf49a2fc..a52810edb 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/annotation/AnnotationManager.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/annotation/AnnotationManager.java
@@ -149,7 +149,7 @@ public final class AnnotationManager
         }
 
         // check for stereotypes _explicitly_ declared on the bean class (not inherited)
-        Annotation[] stereoTypes = getStereotypeMetaAnnotations(typeAnns.toArray(new Annotation[typeAnns.size()]));
+        Annotation[] stereoTypes = getStereotypeMetaAnnotations(typeAnns.toArray(new Annotation[0]));
         Map<Class<? extends Annotation>, Annotation> annotationsFromSteretypes = new HashMap<>();
         for (Annotation stereoType : stereoTypes)
         {
@@ -368,7 +368,7 @@ public final class AnnotationManager
     public Annotation[] getQualifierAnnotations(Annotation... annotations)
     {
         Set<Annotation> qualifiers = getQualifierAnnotations(Arrays.asList(annotations));
-        return qualifiers.toArray(new Annotation[qualifiers.size()]);
+        return qualifiers.toArray(new Annotation[0]);
     }
 
     /**
@@ -726,7 +726,7 @@ public final class AnnotationManager
             else if (annotType.equals(Named.class))
             {
                 Named name = (Named) annotation;
-                if (!name.value().equals(""))
+                if (!name.value().isEmpty())
                 {
                     throw new WebBeansConfigurationException("@StereoType annotation can not define @Named " +
                             "annotation with value");
@@ -902,7 +902,7 @@ public final class AnnotationManager
         return repeatableMethodCache.computeIfAbsent(type, it -> Optional.ofNullable(resolveRepeatableMethod(it)));
     }
         
-    protected Method resolveRepeatableMethod(Class<?> type)
+    private Method resolveRepeatableMethod(Class<?> type)
     {
         Method value;
         try
diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/boot/Bootstrap.java b/webbeans-impl/src/main/java/org/apache/webbeans/boot/Bootstrap.java
index 143576371..d99cdded3 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/boot/Bootstrap.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/boot/Bootstrap.java
@@ -54,7 +54,7 @@ public class Bootstrap
         long begin = System.currentTimeMillis();
         
         containerLifecycle.startApplication(properties);
-        Runtime.getRuntime().addShutdownHook(new Thread(() -> latch.countDown()));
+        Runtime.getRuntime().addShutdownHook(new Thread(latch::countDown));
         
         log.log(Level.INFO, OWBLogConst.INFO_0001, Long.toString(System.currentTimeMillis() - begin));
         latch.await();
diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/CdiInterceptorBeanBuilder.java b/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/CdiInterceptorBeanBuilder.java
index 2533d6782..52e67eb84 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/CdiInterceptorBeanBuilder.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/CdiInterceptorBeanBuilder.java
@@ -28,6 +28,7 @@ import java.lang.annotation.ElementType;
 import java.lang.annotation.Target;
 import java.lang.reflect.Method;
 import java.util.Collections;
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
@@ -80,7 +81,7 @@ public class CdiInterceptorBeanBuilder<T> extends InterceptorBeanBuilder<T, CdiI
             for (Annotation a : interceptorBindings)
             {
                 Target target = a.annotationType().getAnnotation(Target.class);
-                if (target == null || !asList(target.value()).equals(asList(ElementType.TYPE)))
+                if (target == null || !asList(target.value()).equals(List.of(ElementType.TYPE)))
                 {
                     throw new WebBeansConfigurationException(
                             a.annotationType().getName() + " doesn't have strictly @Target(TYPE) but has lifecycle methods. " +
diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/InterceptorBeanBuilder.java b/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/InterceptorBeanBuilder.java
index afef5b65a..ee23b91df 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/InterceptorBeanBuilder.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/InterceptorBeanBuilder.java
@@ -239,7 +239,7 @@ public abstract class InterceptorBeanBuilder<T, B extends InterceptorBean<T>> ex
         if (aroundInvokeMethod != null)
         {
             interceptorFound = true;
-            interceptionMethods.put(InterceptionType.AROUND_INVOKE, aroundInvokeMethod.toArray(new Method[aroundInvokeMethod.size()]));
+            interceptionMethods.put(InterceptionType.AROUND_INVOKE, aroundInvokeMethod.toArray(new Method[0]));
         }
 
         if (postConstructMethods.size() > 0)
@@ -286,7 +286,7 @@ public abstract class InterceptorBeanBuilder<T, B extends InterceptorBean<T>> ex
             clazzParameters.add(ClassUtil.getClazz(parameter.getBaseType()));
         }
 
-        Class<?>[] params = clazzParameters.toArray(new Class<?>[clazzParameters.size()]);
+        Class<?>[] params = clazzParameters.toArray(new Class<?>[0]);
 
         if (params.length != 1 || !params[0].equals(InvocationContext.class))
         {
diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java b/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
index 2b2c8e73d..5b4e08f74 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
@@ -1882,7 +1882,7 @@ public class BeansDeployer
                 Set<Annotation> annTypeAnnotations = annotatedType.getAnnotations();
                 if (annTypeAnnotations != null)
                 {
-                    classAnnotations = annTypeAnnotations.toArray(new Annotation[annTypeAnnotations.size()]);
+                    classAnnotations = annTypeAnnotations.toArray(new Annotation[0]);
                 }
                 else
                 {
diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/config/DefaultAnnotation.java b/webbeans-impl/src/main/java/org/apache/webbeans/config/DefaultAnnotation.java
index 81df3a776..4af0dc1dc 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/config/DefaultAnnotation.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/config/DefaultAnnotation.java
@@ -50,24 +50,15 @@ public final class DefaultAnnotation implements InvocationHandler, Annotation
     @Override
     public Object invoke(Object proxy, Method method, Object[] args) throws Throwable
     {
-        if ("hashCode".equals(method.getName()))
+        return switch (method.getName())
         {
-            return hashCode();
-        }
-        else if ("equals".equals(method.getName()))
-        {
-            return equals(args[0]);
-        }
-        else if ("annotationType".equals(method.getName()))
-        {
-            return annotationType();
-        }
-        else if ("toString".equals(method.getName()))
-        {
-            return toString();
-        }
+            case "hashCode" -> hashCode();
+            case "equals" -> equals(args[0]);
+            case "annotationType" -> annotationType();
+            case "toString" -> toString();
+            default -> method.getDefaultValue();
+        };
 
-        return method.getDefaultValue();
     }
 
     @Override
diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/config/OwbTypeVariableImpl.java b/webbeans-impl/src/main/java/org/apache/webbeans/config/OwbTypeVariableImpl.java
index b75c47e90..ecc162ac0 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/config/OwbTypeVariableImpl.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/config/OwbTypeVariableImpl.java
@@ -84,34 +84,22 @@ public class OwbTypeVariableImpl
         public Object invoke(Object proxy, Method method, Object[] args) throws Throwable
         {
             String methodName = method.getName();
-            if ("equals".equals(methodName))
+            return switch (methodName)
             {
-                return typeVariableEquals(args[0]);
-            }
-            else if ("hashCode".equals(methodName))
-            {
-                return typeVariableHashCode();
-            }
-            else if ("toString".equals(methodName))
-            {
-                return typeVariableToString();
-            }
-            else if ("getName".equals(methodName))
-            {
-                return getName();
-            }
-            else if ("getGenericDeclaration".equals(methodName))
-            {
-                return getGenericDeclaration();
-            }
-            else if ("getBounds".equals(methodName))
-            {
-                return getBounds();
-            }
+                case "equals" -> typeVariableEquals(args[0]);
+                case "hashCode" -> typeVariableHashCode();
+                case "toString" -> typeVariableToString();
+                case "getName" -> getName();
+                case "getGenericDeclaration" -> getGenericDeclaration();
+                case "getBounds" -> getBounds();
+                default ->
+
+
+                    // new method from java8...
+                    null;
+            };
 
 
-            // new method from java8...
-            return null;
         }
 
         /** method from TypeVariable */
diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/configurator/InjectionPointConfiguratorImpl.java b/webbeans-impl/src/main/java/org/apache/webbeans/configurator/InjectionPointConfiguratorImpl.java
index 833ce9c00..e754e540c 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/configurator/InjectionPointConfiguratorImpl.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/configurator/InjectionPointConfiguratorImpl.java
@@ -25,6 +25,7 @@ import jakarta.enterprise.inject.spi.configurator.InjectionPointConfigurator;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Member;
 import java.lang.reflect.Type;
+import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Set;
 
@@ -70,10 +71,7 @@ public class InjectionPointConfiguratorImpl implements InjectionPointConfigurato
     @Override
     public InjectionPointConfigurator addQualifiers(Annotation... qualifiers)
     {
-        for (Annotation qualifier : qualifiers)
-        {
-            this.qualifiers.add(qualifier);
-        }
+        this.qualifiers.addAll(Arrays.asList(qualifiers));
         return this;
     }
 
diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/configurator/ObserverMethodConfiguratorImpl.java b/webbeans-impl/src/main/java/org/apache/webbeans/configurator/ObserverMethodConfiguratorImpl.java
index 1f721bce0..73a044fdd 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/configurator/ObserverMethodConfiguratorImpl.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/configurator/ObserverMethodConfiguratorImpl.java
@@ -215,10 +215,7 @@ public class ObserverMethodConfiguratorImpl<T> implements ObserverMethodConfigur
     @Override
     public ObserverMethodConfigurator<T> addQualifiers(Annotation... qualifiers)
     {
-        for (Annotation qualifier : qualifiers)
-        {
-            this.qualifiers.add(qualifier);
-        }
+        this.qualifiers.addAll(Arrays.asList(qualifiers));
         return this;
     }
 
diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionResolver.java b/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionResolver.java
index 63b523ce2..804a543d1 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionResolver.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionResolver.java
@@ -171,7 +171,7 @@ public class InjectionResolver
         }
 
         // not that happy about this check here and at runtime but few TCKs test Weld behavior only...
-        Bean<?> bean = resolve(implResolveByType(false, type, injectionPoint.getQualifiers().toArray(new Annotation[injectionPoint.getQualifiers().size()])),
+        Bean<?> bean = resolve(implResolveByType(false, type, injectionPoint.getQualifiers().toArray(new Annotation[0])),
                                      injectionPoint);
         if (bean != null && ManagedBean.class.isInstance(bean))
         {
@@ -266,7 +266,7 @@ public class InjectionResolver
         }
 
         Set<Annotation> qualSet = injectionPoint.getQualifiers();
-        Annotation[] qualifiers = qualSet.toArray(new Annotation[qualSet.size()]);
+        Annotation[] qualifiers = qualSet.toArray(new Annotation[0]);
 
         Set<Bean<?>> beanSet = implResolveByType(injectionPoint.isDelegate(), type, clazz, qualifiers);
 
diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/corespi/scanner/AbstractMetaDataDiscovery.java b/webbeans-impl/src/main/java/org/apache/webbeans/corespi/scanner/AbstractMetaDataDiscovery.java
index 24f87fd4e..9627855a4 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/corespi/scanner/AbstractMetaDataDiscovery.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/corespi/scanner/AbstractMetaDataDiscovery.java
@@ -317,7 +317,7 @@ public abstract class AbstractMetaDataDiscovery implements BdaScannerService
 
     protected void filterExcludedJars(Set<URL> classPathUrls)
     {
-        classPathUrls.removeIf(i -> isExcludedJar(i));
+        classPathUrls.removeIf(this::isExcludedJar);
     }
     
     protected boolean isExcludedJar(URL url)
@@ -421,7 +421,7 @@ public abstract class AbstractMetaDataDiscovery implements BdaScannerService
             OpenWebBeansConfiguration owbConfiguration = WebBeansContext.currentInstance().getOpenWebBeansConfiguration();
             String scanningExcludesProperty = owbConfiguration.getProperty(OpenWebBeansConfiguration.SCAN_EXCLUSION_PATHS);
             List<String> excludes = owbConfiguration.splitValues(scanningExcludesProperty);
-            scanningExcludes = excludes.toArray(new String[excludes.size()]);
+            scanningExcludes = excludes.toArray(new String[0]);
         }
     }
 
diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/corespi/scanner/xbean/OwbAnnotationFinder.java b/webbeans-impl/src/main/java/org/apache/webbeans/corespi/scanner/xbean/OwbAnnotationFinder.java
index c3d358ee4..d3ce0e0c7 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/corespi/scanner/xbean/OwbAnnotationFinder.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/corespi/scanner/xbean/OwbAnnotationFinder.java
@@ -57,7 +57,7 @@ public class OwbAnnotationFinder extends AnnotationFinder
         {
             // ignore, will not affect all cases
         }
-        Stream.of(classes).forEach(c -> super.readClassDef(c));
+        Stream.of(classes).forEach(super::readClassDef);
     }
 
     public ClassInfo getClassInfo(String className)
diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/deployment/StereoTypeModel.java b/webbeans-impl/src/main/java/org/apache/webbeans/deployment/StereoTypeModel.java
index d0646405f..2eb9d6cbf 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/deployment/StereoTypeModel.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/deployment/StereoTypeModel.java
@@ -21,6 +21,7 @@ package org.apache.webbeans.deployment;
 import java.lang.annotation.Annotation;
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Target;
+import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Set;
 import java.util.logging.Level;
@@ -136,10 +137,7 @@ public class StereoTypeModel implements IStereoTypeModel
         {
             Annotation[] ibs =
                 annotationManager.getInterceptorBindingMetaAnnotations(annotations);
-            for (Annotation ann : ibs)
-            {
-                interceptorBindingTypes.add(ann);
-            }
+            interceptorBindingTypes.addAll(Arrays.asList(ibs));
         }
 
         if (annotationManager.hasStereoTypeMetaAnnotation(annotations))
diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/event/EventImpl.java b/webbeans-impl/src/main/java/org/apache/webbeans/event/EventImpl.java
index a28682253..58b44ba53 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/event/EventImpl.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/event/EventImpl.java
@@ -88,7 +88,7 @@ public class EventImpl<T> implements Event<T>, Serializable
         else
         {
             Set<Annotation> qualifiers = metadata.getQualifiers();
-            return new EventMetadataImpl(null, metadata.getType(), metadata.getInjectionPoint(), qualifiers.toArray(new Annotation[qualifiers.size()]), webBeansContext);
+            return new EventMetadataImpl(null, metadata.getType(), metadata.getInjectionPoint(), qualifiers.toArray(new Annotation[0]), webBeansContext);
         }
     }
 
diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/event/EventMetadataImpl.java b/webbeans-impl/src/main/java/org/apache/webbeans/event/EventMetadataImpl.java
index 6c9a3cee5..223d33de3 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/event/EventMetadataImpl.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/event/EventMetadataImpl.java
@@ -142,7 +142,7 @@ public class EventMetadataImpl implements EventMetadata, Serializable
         webBeansContext.getAnnotationManager().checkQualifierConditions(bindings);
         Set<Annotation> newQualifiers = ArrayUtil.asSet(bindings);
         newQualifiers.addAll(qualifiers);
-        return new EventMetadataImpl(type, subtype, injectionPoint, newQualifiers.toArray(new Annotation[newQualifiers.size()]), webBeansContext);
+        return new EventMetadataImpl(type, subtype, injectionPoint, newQualifiers.toArray(new Annotation[0]), webBeansContext);
     }
     
     private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException
diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/event/NotificationManager.java b/webbeans-impl/src/main/java/org/apache/webbeans/event/NotificationManager.java
index d0d0b7e69..c2c0a6238 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/event/NotificationManager.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/event/NotificationManager.java
@@ -117,14 +117,7 @@ public class NotificationManager
 
     // this is actually faster than a lambda Comparator.comparingInt(ObserverMethod::getPriority)
     private Comparator<? super ObserverMethod<? super Object>> observerMethodComparator
-        = new Comparator<>()
-    {
-        @Override
-        public int compare(ObserverMethod<? super Object> o1, ObserverMethod<? super Object> o2)
-        {
-            return Integer.compare(o1.getPriority(), o2.getPriority());
-        }
-    };
+        = (Comparator<ObserverMethod<? super Object>>) (o1, o2) -> Integer.compare(o1.getPriority(), o2.getPriority());
 
     // idea is to be able to skip O(n) events in favor of an algorithm closer to O(1) impl
     // statistically, it is not rare to not use all these events so we enable to skip most of them
@@ -211,10 +204,7 @@ public class NotificationManager
         List<ObserverMethod<?>> observerMethods = new ArrayList<>();
         for (Set<ObserverMethod<?>> methods: observers.values())
         {
-            for (ObserverMethod<?> method: methods)
-            {
-                observerMethods.add(method);
-            }
+            observerMethods.addAll(methods);
         }
         return observerMethods;
     }
diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/event/ObserverMethodImpl.java b/webbeans-impl/src/main/java/org/apache/webbeans/event/ObserverMethodImpl.java
index a7f985307..bb938f5dd 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/event/ObserverMethodImpl.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/event/ObserverMethodImpl.java
@@ -486,7 +486,6 @@ public class ObserverMethodImpl<T> implements OwbObserverMethod<T>
      * @return the bean
      */
     @Override
-    @SuppressWarnings("unchecked")
     public Class<?> getBeanClass()
     {
         return ownerBean.getBeanClass();
diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/inject/InjectableConstructor.java b/webbeans-impl/src/main/java/org/apache/webbeans/inject/InjectableConstructor.java
index e8c9766db..f7fe3759b 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/inject/InjectableConstructor.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/inject/InjectableConstructor.java
@@ -111,7 +111,7 @@ public class InjectableConstructor<T> extends AbstractInjectable<T>
                 }
             }
         }
-        params = list.toArray(new Object[list.size()]);
+        params = list.toArray(new Object[0]);
         return params;
     }
 }
diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/inject/InjectableMethod.java b/webbeans-impl/src/main/java/org/apache/webbeans/inject/InjectableMethod.java
index 26cc224ed..5356505ce 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/inject/InjectableMethod.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/inject/InjectableMethod.java
@@ -152,7 +152,7 @@ public class InjectableMethod<T> extends AbstractInjectable<T>
                 getWebBeansContext().getSecurityService().doPrivilegedSetAccessible(method, true);
             }
 
-            return (T) method.invoke(owner, list.toArray(new Object[list.size()]));
+            return (T) method.invoke(owner, list.toArray(new Object[0]));
 
         }
         catch (Exception e)
diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/inject/impl/InjectionPointFactory.java b/webbeans-impl/src/main/java/org/apache/webbeans/inject/impl/InjectionPointFactory.java
index a3a735ca3..baef94335 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/inject/impl/InjectionPointFactory.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/inject/impl/InjectionPointFactory.java
@@ -176,7 +176,7 @@ public class InjectionPointFactory
     {
         Asserts.assertNotNull(parameter, "annotatedParameter");
         Set<Annotation> anns = parameter.getAnnotations();
-        Annotation[] qualifierAnnots = webBeansContext.getAnnotationManager().getQualifierAnnotations(anns.toArray(new Annotation[anns.size()]));
+        Annotation[] qualifierAnnots = webBeansContext.getAnnotationManager().getQualifierAnnotations(anns.toArray(new Annotation[0]));
         InjectionPointImpl injectionPoint = new InjectionPointImpl(owner, Arrays.asList(qualifierAnnots), parameter);
         if (fireEvent)
         {
diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/inject/impl/InjectionPointImpl.java b/webbeans-impl/src/main/java/org/apache/webbeans/inject/impl/InjectionPointImpl.java
index 5279233d2..da9cf6a16 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/inject/impl/InjectionPointImpl.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/inject/impl/InjectionPointImpl.java
@@ -252,7 +252,7 @@ public class InjectionPointImpl implements InjectionPoint, Serializable
         //process annotations
         BeanManagerImpl beanManager = webBeansContext.getBeanManagerImpl();
         Set<Bean<?>> beans = beanManager.getBeans(ownerBeanClass,
-                                                  ownerQualifiers.toArray(new Annotation[ownerQualifiers.size()]));
+                                                  ownerQualifiers.toArray(new Annotation[0]));
         ownerBean = beanManager.resolve(beans);
 
         // determine type of injection point member (0=field, 1=method, 2=constructor) and read...
diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/inject/instance/InstanceImpl.java b/webbeans-impl/src/main/java/org/apache/webbeans/inject/instance/InstanceImpl.java
index 513f3214b..1f171b893 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/inject/instance/InstanceImpl.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/inject/instance/InstanceImpl.java
@@ -108,10 +108,7 @@ public class InstanceImpl<T> implements Instance<T>, Serializable
             webBeansContext.getAnnotationManager().checkQualifierConditions(qualifiers);
         }
 
-        for (Annotation ann : qualifiers)
-        {
-            qualifierAnnotations.add(ann);
-        }
+        qualifierAnnotations.addAll(Arrays.asList(qualifiers));
     }
 
     @Override
diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorResolutionService.java b/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorResolutionService.java
index 02465445c..50a6152f7 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorResolutionService.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorResolutionService.java
@@ -142,8 +142,8 @@ public class InterceptorResolutionService
                 ? Collections.emptySet()
                 : Collections.unmodifiableSet(new LinkedHashSet<>(classInterceptorBindings));
 
-        LinkedHashSet<Interceptor<?>> allUsedEjbInterceptors = new LinkedHashSet<>(); // we need to preserve the order!
-        allUsedEjbInterceptors.addAll(classLevelEjbInterceptors);
+        // we need to preserve the order!
+        LinkedHashSet<Interceptor<?>> allUsedEjbInterceptors = new LinkedHashSet<>(classLevelEjbInterceptors);
 
         Map<Method, BusinessMethodInterceptorInfo> businessMethodInterceptorInfos = new HashMap<>();
         Map<Constructor<?>, BusinessMethodInterceptorInfo> constructorInterceptorInfos = new HashMap<>();
@@ -1121,7 +1121,7 @@ public class InterceptorResolutionService
             }
             else
             {
-                this.cdiInterceptors = cdiInterceptors.toArray(new Interceptor[cdiInterceptors.size()]);
+                this.cdiInterceptors = cdiInterceptors.toArray(new Interceptor[0]);
             }
         }
 
@@ -1145,7 +1145,7 @@ public class InterceptorResolutionService
             }
             else
             {
-                this.ejbInterceptors = ejbInterceptors.toArray(new Interceptor[ejbInterceptors.size()]);
+                this.ejbInterceptors = ejbInterceptors.toArray(new Interceptor[0]);
             }
 
         }
diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/jms/JMSModel.java b/webbeans-impl/src/main/java/org/apache/webbeans/jms/JMSModel.java
index 4a7a2f74b..91423b1fb 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/jms/JMSModel.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/jms/JMSModel.java
@@ -57,7 +57,7 @@ public class JMSModel
     
     public Annotation[] getBindings()
     {
-        return bindings.toArray(new Annotation[bindings.size()]);
+        return bindings.toArray(new Annotation[0]);
     }
 
     /**
diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/portable/AbstractAnnotated.java b/webbeans-impl/src/main/java/org/apache/webbeans/portable/AbstractAnnotated.java
index d0a8b4aa7..9cdf2db3b 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/portable/AbstractAnnotated.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/portable/AbstractAnnotated.java
@@ -23,6 +23,7 @@ import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.lang.reflect.Type;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
@@ -111,10 +112,7 @@ public abstract class AbstractAnnotated implements Annotated
                     }
                     Annotation[] repeatableAnns =
                         (Annotation[]) repeatableMethod.orElseThrow(IllegalStateException::new).invoke(annotation);
-                    for (Annotation repeatableAnn : repeatableAnns)
-                    {
-                        repeatables.add(repeatableAnn);
-                    }
+                    repeatables.addAll(Arrays.asList(repeatableAnns));
                 }
                 catch (IllegalAccessException | InvocationTargetException e)
                 {
diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/portable/AnnotatedConstructorImpl.java b/webbeans-impl/src/main/java/org/apache/webbeans/portable/AnnotatedConstructorImpl.java
index d0254f691..a20e15201 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/portable/AnnotatedConstructorImpl.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/portable/AnnotatedConstructorImpl.java
@@ -100,7 +100,7 @@ public class AnnotatedConstructorImpl<X> extends AbstractAnnotatedCallable<X> im
                 }
                 current = current.getSuperclass();
             }
-            return annotations.values().toArray(new Annotation[annotations.size()]);
+            return annotations.values().toArray(new Annotation[0]);
         }
 
         return javaMember.getDeclaredAnnotations();
diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/portable/AnnotatedTypeImpl.java b/webbeans-impl/src/main/java/org/apache/webbeans/portable/AnnotatedTypeImpl.java
index aab575921..b0c393dd7 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/portable/AnnotatedTypeImpl.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/portable/AnnotatedTypeImpl.java
@@ -101,7 +101,7 @@ public class AnnotatedTypeImpl<X>
                     annotationTypes.add(annotationType);
                 }
             }
-            setAnnotations(annotations.toArray(new Annotation[annotations.size()]));
+            setAnnotations(annotations.toArray(new Annotation[0]));
         }
     }
 
diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/portable/InstanceProducer.java b/webbeans-impl/src/main/java/org/apache/webbeans/portable/InstanceProducer.java
index 99e430ebf..56b78d44c 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/portable/InstanceProducer.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/portable/InstanceProducer.java
@@ -77,7 +77,7 @@ public class InstanceProducer<T> extends AbstractProducer<Instance<T>>
                 type = Object.class;
             }
 
-            return new InstanceImpl<>(type, injectionPoint, webBeansContext, qualifiers.toArray(new Annotation[qualifiers.size()]));
+            return new InstanceImpl<>(type, injectionPoint, webBeansContext, qualifiers.toArray(new Annotation[0]));
         }
         finally
         {
diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/portable/LazyInterceptorDefinedInjectionTarget.java b/webbeans-impl/src/main/java/org/apache/webbeans/portable/LazyInterceptorDefinedInjectionTarget.java
index 01adea918..61a04ae87 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/portable/LazyInterceptorDefinedInjectionTarget.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/portable/LazyInterceptorDefinedInjectionTarget.java
@@ -69,7 +69,7 @@ public class LazyInterceptorDefinedInjectionTarget<T> extends InjectionTargetImp
                         }
                         try
                         {
-                            Set<Bean<?>> beans = bm.getBeans(annotatedType.getJavaClass(), annotations.toArray(new Annotation[annotations.size()]));
+                            Set<Bean<?>> beans = bm.getBeans(annotatedType.getJavaClass(), annotations.toArray(new Annotation[0]));
                             bean = (Bean<T>) bm.resolve(beans);
                         }
                         catch (Exception e)
diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessSyntheticBean.java b/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessSyntheticBean.java
index 5a38ac599..a604632de 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessSyntheticBean.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessSyntheticBean.java
@@ -24,7 +24,6 @@ import jakarta.enterprise.inject.spi.Extension;
 import jakarta.enterprise.inject.spi.ProcessSyntheticBean;
 
 
-@SuppressWarnings("unchecked")
 public class GProcessSyntheticBean extends GProcessBean implements ProcessSyntheticBean
 {
     private final Extension source;
diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessSyntheticObserverMethod.java b/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessSyntheticObserverMethod.java
index 5a61fdcc4..7a2a9bddb 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessSyntheticObserverMethod.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessSyntheticObserverMethod.java
@@ -26,7 +26,6 @@ import jakarta.enterprise.inject.spi.ProcessSyntheticObserverMethod;
 import org.apache.webbeans.config.WebBeansContext;
 
 
-@SuppressWarnings("unchecked")
 public class GProcessSyntheticObserverMethod extends GProcessObserverMethod implements ProcessSyntheticObserverMethod
 {
     private final Extension source;
diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/proxy/AbstractProxyFactory.java b/webbeans-impl/src/main/java/org/apache/webbeans/proxy/AbstractProxyFactory.java
index c5f52cdc6..26488642f 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/proxy/AbstractProxyFactory.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/proxy/AbstractProxyFactory.java
@@ -413,7 +413,7 @@ public abstract class AbstractProxyFactory
 
         ArrayList<Method> outsorted = new ArrayList<>(Arrays.asList(methods));
         outsorted.removeAll(duplicates);
-        return outsorted.toArray(new Method[outsorted.size()]);
+        return outsorted.toArray(new Method[0]);
     }
      
     private boolean hasSameSignature(Method a, Method b)
diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/proxy/InterceptorDecoratorProxyFactory.java b/webbeans-impl/src/main/java/org/apache/webbeans/proxy/InterceptorDecoratorProxyFactory.java
index 2fa944d48..48b097aea 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/proxy/InterceptorDecoratorProxyFactory.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/proxy/InterceptorDecoratorProxyFactory.java
@@ -189,7 +189,7 @@ public class InterceptorDecoratorProxyFactory extends AbstractProxyFactory
 
         Class<T> proxyClass = createProxyClass(
                 classLoader, at.getJavaClass(),
-                intercepted.toArray(new Method[intercepted.size()]), others.toArray(new Method[others.size()]));
+                intercepted.toArray(new Method[0]), others.toArray(new Method[0]));
         return proxyClass;
     }
 
diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/proxy/NormalScopeProxyFactory.java b/webbeans-impl/src/main/java/org/apache/webbeans/proxy/NormalScopeProxyFactory.java
index f31ddc319..f6a3bd4c8 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/proxy/NormalScopeProxyFactory.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/proxy/NormalScopeProxyFactory.java
@@ -252,8 +252,8 @@ public class NormalScopeProxyFactory extends AbstractProxyFactory
                 }
             }
 
-            nonInterceptedMethods = methods.toArray(new Method[methods.size()]);
-            interceptedMethods = protectedMethods.toArray(new Method[protectedMethods.size()]);
+            nonInterceptedMethods = methods.toArray(new Method[0]);
+            interceptedMethods = protectedMethods.toArray(new Method[0]);
         }
 
         String proxyClassName = getUnusedProxyClassName(
diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/proxy/SubclassProxyFactory.java b/webbeans-impl/src/main/java/org/apache/webbeans/proxy/SubclassProxyFactory.java
index 605a31034..30f76cc8c 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/proxy/SubclassProxyFactory.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/proxy/SubclassProxyFactory.java
@@ -120,7 +120,7 @@ public class SubclassProxyFactory extends AbstractProxyFactory
         String proxyClassName = getSubClassName(classToProxy);
 
         List<Method> methods = ClassUtil.getNonPrivateMethods(classToProxy, true);
-        Method[] businessMethods = methods.toArray(new Method[methods.size()]);
+        Method[] businessMethods = methods.toArray(new Method[0]);
 
         AnnotatedConstructor<T> aCons = webBeansContext.getWebBeansUtil().getInjectedConstructor(annotatedType);
         Constructor<T> cons = aCons != null ? aCons.getJavaMember() : null;
diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java b/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java
index 8db9d2e0e..f38639607 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java
@@ -657,7 +657,7 @@ public final class ClassUtil
     {
         Asserts.nullCheckForClass(clazz);
 
-        Integer modifier = clazz.getModifiers();
+        int modifier = clazz.getModifiers();
 
         return !Modifier.isAbstract(modifier) && !Modifier.isInterface(modifier);
     }
diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/util/GenericsUtil.java b/webbeans-impl/src/main/java/org/apache/webbeans/util/GenericsUtil.java
index 59c162204..1348c23e1 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/util/GenericsUtil.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/util/GenericsUtil.java
@@ -549,7 +549,7 @@ public final class GenericsUtil
     
     public static boolean containTypeVariable(Collection<? extends Type> types)
     {
-        return containTypeVariable(types.toArray(new Type[types.size()]));
+        return containTypeVariable(types.toArray(new Type[0]));
     }
     
     public static boolean containTypeVariable(Type[] types)
@@ -922,7 +922,7 @@ public final class GenericsUtil
                 classTypes.add(rawType);
             }
         }
-        return classTypes.toArray(new Class[classTypes.size()]);
+        return classTypes.toArray(new Class[0]);
     }
 
     private static Type resolveTypeVariable(TypeVariable<?> variable, Type actualType, Collection<TypeVariable<?>> seen)
diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/util/InjectionExceptionUtil.java b/webbeans-impl/src/main/java/org/apache/webbeans/util/InjectionExceptionUtil.java
index e9624624f..90276b3ec 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/util/InjectionExceptionUtil.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/util/InjectionExceptionUtil.java
@@ -128,7 +128,7 @@ public class InjectionExceptionUtil
         {
             if (injectionPoint != null)
             {
-                qualifiers = injectionPoint.getQualifiers().toArray(new Annotation[injectionPoint.getQualifiers().size()]);
+                qualifiers = injectionPoint.getQualifiers().toArray(new Annotation[0]);
             }
             else
             {