Modified: websites/production/commons/content/proper/commons-beanutils/jacoco/org.apache.commons.beanutils2/BeanUtilsBean.java.html ============================================================================== --- websites/production/commons/content/proper/commons-beanutils/jacoco/org.apache.commons.beanutils2/BeanUtilsBean.java.html (original) +++ websites/production/commons/content/proper/commons-beanutils/jacoco/org.apache.commons.beanutils2/BeanUtilsBean.java.html Tue Jan 7 19:57:26 2025 @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>BeanUtilsBean.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">Apache Commons BeanUtils</a> > <a href="index.source.html" class="el_package">org.apache.commons.beanutils2</a> > <span class="el_sou rce">BeanUtilsBean.java</span></div><h1>BeanUtilsBean.java</h1><pre class="source lang-java linenums"><span class="nc" id="L1">/*</span> +<?xml version="1.0" encoding="utf-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>BeanUtilsBean.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">Apache Commons BeanUtils</a> > <a href="index.source.html" class="el_package">org.apache.commons.beanutils2</a> > <span class="el_sou rce">BeanUtilsBean.java</span></div><h1>BeanUtilsBean.java</h1><pre class="source lang-java linenums">/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. @@ -80,18 +80,18 @@ public class BeanUtilsBean { /** * Contains {@code BeanUtilsBean} instances indexed by context classloader. */ -<span class="nc" id="L83"> private static final ContextClassLoaderLocal<BeanUtilsBean> BEANS_BY_CLASSLOADER = new ContextClassLoaderLocal<BeanUtilsBean>() {</span> +<span class="fc" id="L83"> private static final ContextClassLoaderLocal<BeanUtilsBean> BEANS_BY_CLASSLOADER = new ContextClassLoaderLocal<BeanUtilsBean>() {</span> // Creates the default instance used when the context classloader is unavailable @Override protected BeanUtilsBean initialValue() { -<span class="nc" id="L87"> return new BeanUtilsBean();</span> +<span class="fc" id="L87"> return new BeanUtilsBean();</span> } }; /** * Logging for this instance */ -<span class="nc" id="L94"> private static final Log LOG = LogFactory.getLog(BeanUtilsBean.class);</span> +<span class="fc" id="L94"> private static final Log LOG = LogFactory.getLog(BeanUtilsBean.class);</span> /** * Determines the type of a {@code DynaProperty}. Here a special treatment is needed for mapped properties. @@ -101,10 +101,10 @@ public class BeanUtilsBean { * @return the type of this property */ private static Class<?> dynaPropertyType(final DynaProperty dynaProperty, final Object value) { -<span class="nc bnc" id="L104" title="All 2 branches missed."> if (!dynaProperty.isMapped()) {</span> -<span class="nc" id="L105"> return dynaProperty.getType();</span> +<span class="fc bfc" id="L104" title="All 2 branches covered."> if (!dynaProperty.isMapped()) {</span> +<span class="fc" id="L105"> return dynaProperty.getType();</span> } -<span class="nc bnc" id="L107" title="All 2 branches missed."> return value == null ? String.class : value.getClass();</span> +<span class="fc bfc" id="L107" title="All 2 branches covered."> return value == null ? String.class : value.getClass();</span> } /** @@ -114,7 +114,7 @@ public class BeanUtilsBean { * @return The (pseudo-singleton) BeanUtils bean instance */ public static BeanUtilsBean getInstance() { -<span class="nc" id="L117"> return BEANS_BY_CLASSLOADER.get();</span> +<span class="fc" id="L117"> return BEANS_BY_CLASSLOADER.get();</span> } /** @@ -124,8 +124,8 @@ public class BeanUtilsBean { * @param newInstance The (pseudo-singleton) BeanUtils bean instance */ public static void setInstance(final BeanUtilsBean newInstance) { -<span class="nc" id="L127"> BEANS_BY_CLASSLOADER.set(newInstance);</span> -<span class="nc" id="L128"> }</span> +<span class="fc" id="L127"> BEANS_BY_CLASSLOADER.set(newInstance);</span> +<span class="fc" id="L128"> }</span> /** Used to perform conversions between object types when setting properties */ private final ConvertUtilsBean convertUtilsBean; @@ -139,8 +139,8 @@ public class BeanUtilsBean { * </p> */ public BeanUtilsBean() { -<span class="nc" id="L142"> this(new ConvertUtilsBean(), new PropertyUtilsBean());</span> -<span class="nc" id="L143"> }</span> +<span class="fc" id="L142"> this(new ConvertUtilsBean(), new PropertyUtilsBean());</span> +<span class="fc" id="L143"> }</span> /** * <p> @@ -162,10 +162,10 @@ public class BeanUtilsBean { * @param convertUtilsBean use this {@code ConvertUtilsBean} to perform conversions from one object to another * @param propertyUtilsBean use this {@code PropertyUtilsBean} to access properties */ -<span class="nc" id="L165"> public BeanUtilsBean(final ConvertUtilsBean convertUtilsBean, final PropertyUtilsBean propertyUtilsBean) {</span> -<span class="nc" id="L166"> this.convertUtilsBean = convertUtilsBean;</span> -<span class="nc" id="L167"> this.propertyUtilsBean = propertyUtilsBean;</span> -<span class="nc" id="L168"> }</span> +<span class="fc" id="L165"> public BeanUtilsBean(final ConvertUtilsBean convertUtilsBean, final PropertyUtilsBean propertyUtilsBean) {</span> +<span class="fc" id="L166"> this.convertUtilsBean = convertUtilsBean;</span> +<span class="fc" id="L167"> this.propertyUtilsBean = propertyUtilsBean;</span> +<span class="fc" id="L168"> }</span> /** * <p> @@ -185,17 +185,17 @@ public class BeanUtilsBean { * @throws NoSuchMethodException if an accessor method for this property cannot be found */ public Object cloneBean(final Object bean) throws IllegalAccessException, InstantiationException, InvocationTargetException, NoSuchMethodException { -<span class="nc bnc" id="L188" title="All 2 branches missed."> if (LOG.isDebugEnabled()) {</span> +<span class="pc bpc" id="L188" title="1 of 2 branches missed."> if (LOG.isDebugEnabled()) {</span> <span class="nc" id="L189"> LOG.debug("Cloning bean: " + bean.getClass().getName());</span> } -<span class="nc" id="L191"> Object newBean = null;</span> -<span class="nc bnc" id="L192" title="All 2 branches missed."> if (bean instanceof DynaBean) {</span> -<span class="nc" id="L193"> newBean = ((DynaBean) bean).getDynaClass().newInstance();</span> -<span class="nc" id="L194"> } else {</span> +<span class="fc" id="L191"> Object newBean = null;</span> +<span class="pc bpc" id="L192" title="1 of 2 branches missed."> if (bean instanceof DynaBean) {</span> +<span class="fc" id="L193"> newBean = ((DynaBean) bean).getDynaClass().newInstance();</span> + } else { <span class="nc" id="L195"> newBean = bean.getClass().newInstance();</span> } -<span class="nc" id="L197"> getPropertyUtils().copyProperties(newBean, bean);</span> -<span class="nc" id="L198"> return newBean;</span> +<span class="fc" id="L197"> getPropertyUtils().copyProperties(newBean, bean);</span> +<span class="fc" id="L198"> return newBean;</span> } /** @@ -209,7 +209,7 @@ public class BeanUtilsBean { * @return The converted value */ protected <R> Object convert(final Object value, final Class<R> type) { -<span class="nc" id="L212"> return getConvertUtils().convert(value, type);</span> +<span class="fc" id="L212"> return getConvertUtils().convert(value, type);</span> } /** @@ -221,7 +221,7 @@ public class BeanUtilsBean { * @return the converted value */ private Object convertForCopy(final Object value, final Class<?> type) { -<span class="nc bnc" id="L224" title="All 2 branches missed."> return value != null ? convert(value, type) : value;</span> +<span class="fc bfc" id="L224" title="All 2 branches covered."> return value != null ? convert(value, type) : value;</span> } /** @@ -261,52 +261,52 @@ public class BeanUtilsBean { */ public void copyProperties(final Object dest, final Object orig) throws IllegalAccessException, InvocationTargetException { // Validate existence of the specified beans -<span class="nc" id="L264"> Objects.requireNonNull(dest, "dest");</span> -<span class="nc" id="L265"> Objects.requireNonNull(orig, "orig");</span> -<span class="nc bnc" id="L266" title="All 2 branches missed."> if (LOG.isDebugEnabled()) {</span> +<span class="fc" id="L264"> Objects.requireNonNull(dest, "dest");</span> +<span class="fc" id="L265"> Objects.requireNonNull(orig, "orig");</span> +<span class="pc bpc" id="L266" title="1 of 2 branches missed."> if (LOG.isDebugEnabled()) {</span> <span class="nc" id="L267"> LOG.debug("BeanUtils.copyProperties(" + dest + ", " + orig + ")");</span> } // Copy the properties, converting as necessary -<span class="nc bnc" id="L270" title="All 2 branches missed."> if (orig instanceof DynaBean) {</span> -<span class="nc" id="L271"> final DynaProperty[] origDescriptors = ((DynaBean) orig).getDynaClass().getDynaProperties();</span> -<span class="nc bnc" id="L272" title="All 2 branches missed."> for (final DynaProperty origDescriptor : origDescriptors) {</span> -<span class="nc" id="L273"> final String name = origDescriptor.getName();</span> +<span class="fc bfc" id="L270" title="All 2 branches covered."> if (orig instanceof DynaBean) {</span> +<span class="fc" id="L271"> final DynaProperty[] origDescriptors = ((DynaBean) orig).getDynaClass().getDynaProperties();</span> +<span class="fc bfc" id="L272" title="All 2 branches covered."> for (final DynaProperty origDescriptor : origDescriptors) {</span> +<span class="fc" id="L273"> final String name = origDescriptor.getName();</span> // Need to check isReadable() for WrapDynaBean // (see Jira issue# BEANUTILS-61) -<span class="nc bnc" id="L276" title="All 4 branches missed."> if (getPropertyUtils().isReadable(orig, name) && getPropertyUtils().isWriteable(dest, name)) {</span> -<span class="nc" id="L277"> final Object value = ((DynaBean) orig).get(name);</span> -<span class="nc" id="L278"> copyProperty(dest, name, value);</span> +<span class="fc bfc" id="L276" title="All 4 branches covered."> if (getPropertyUtils().isReadable(orig, name) && getPropertyUtils().isWriteable(dest, name)) {</span> +<span class="fc" id="L277"> final Object value = ((DynaBean) orig).get(name);</span> +<span class="fc" id="L278"> copyProperty(dest, name, value);</span> } } -<span class="nc bnc" id="L281" title="All 2 branches missed."> } else if (orig instanceof Map) {</span> +<span class="fc bfc" id="L281" title="All 2 branches covered."> } else if (orig instanceof Map) {</span> @SuppressWarnings("unchecked") final // Map properties are always of type <String, Object> -<span class="nc" id="L285"> Map<String, Object> propMap = (Map<String, Object>) orig;</span> -<span class="nc bnc" id="L286" title="All 2 branches missed."> for (final Map.Entry<String, Object> entry : propMap.entrySet()) {</span> -<span class="nc" id="L287"> final String k = entry.getKey();</span> -<span class="nc bnc" id="L288" title="All 2 branches missed."> if (getPropertyUtils().isWriteable(dest, k)) {</span> -<span class="nc" id="L289"> copyProperty(dest, k, entry.getValue());</span> - } - } -<span class="nc" id="L292"> } else /* if (orig is a standard JavaBean) */ {</span> -<span class="nc" id="L293"> final PropertyDescriptor[] origDescriptors = getPropertyUtils().getPropertyDescriptors(orig);</span> -<span class="nc bnc" id="L294" title="All 2 branches missed."> for (final PropertyDescriptor origDescriptor : origDescriptors) {</span> -<span class="nc" id="L295"> final String name = origDescriptor.getName();</span> -<span class="nc bnc" id="L296" title="All 2 branches missed."> if ("class".equals(name)) {</span> +<span class="fc" id="L285"> Map<String, Object> propMap = (Map<String, Object>) orig;</span> +<span class="fc bfc" id="L286" title="All 2 branches covered."> for (final Map.Entry<String, Object> entry : propMap.entrySet()) {</span> +<span class="fc" id="L287"> final String k = entry.getKey();</span> +<span class="fc bfc" id="L288" title="All 2 branches covered."> if (getPropertyUtils().isWriteable(dest, k)) {</span> +<span class="fc" id="L289"> copyProperty(dest, k, entry.getValue());</span> + } +<span class="fc" id="L291"> }</span> +<span class="fc" id="L292"> } else /* if (orig is a standard JavaBean) */ {</span> +<span class="fc" id="L293"> final PropertyDescriptor[] origDescriptors = getPropertyUtils().getPropertyDescriptors(orig);</span> +<span class="fc bfc" id="L294" title="All 2 branches covered."> for (final PropertyDescriptor origDescriptor : origDescriptors) {</span> +<span class="fc" id="L295"> final String name = origDescriptor.getName();</span> +<span class="pc bpc" id="L296" title="1 of 2 branches missed."> if ("class".equals(name)) {</span> <span class="nc" id="L297"> continue; // No point in trying to set an object's class</span> } -<span class="nc bnc" id="L299" title="All 4 branches missed."> if (getPropertyUtils().isReadable(orig, name) && getPropertyUtils().isWriteable(dest, name)) {</span> +<span class="fc bfc" id="L299" title="All 4 branches covered."> if (getPropertyUtils().isReadable(orig, name) && getPropertyUtils().isWriteable(dest, name)) {</span> try { -<span class="nc" id="L301"> final Object value = getPropertyUtils().getSimpleProperty(orig, name);</span> -<span class="nc" id="L302"> copyProperty(dest, name, value);</span> -<span class="nc" id="L303"> } catch (final NoSuchMethodException e) {</span> +<span class="fc" id="L301"> final Object value = getPropertyUtils().getSimpleProperty(orig, name);</span> +<span class="fc" id="L302"> copyProperty(dest, name, value);</span> +<span class="fc" id="L303"> } catch (final NoSuchMethodException e) {</span> // Should not happen - } +<span class="fc" id="L305"> }</span> } } } -<span class="nc" id="L309"> }</span> +<span class="fc" id="L309"> }</span> /** * <p> @@ -332,7 +332,7 @@ public class BeanUtilsBean { */ public void copyProperty(final Object bean, String name, Object value) throws IllegalAccessException, InvocationTargetException { // Trace logging (if enabled) -<span class="nc bnc" id="L335" title="All 2 branches missed."> if (LOG.isTraceEnabled()) {</span> +<span class="pc bpc" id="L335" title="1 of 2 branches missed."> if (LOG.isTraceEnabled()) {</span> <span class="nc" id="L336"> final StringBuilder sb = new StringBuilder(" copyProperty(");</span> <span class="nc" id="L337"> sb.append(bean);</span> <span class="nc" id="L338"> sb.append(", ");</span> @@ -360,84 +360,84 @@ public class BeanUtilsBean { } // Resolve any nested expression to get the actual target bean -<span class="nc" id="L363"> Object target = bean;</span> -<span class="nc" id="L364"> final Resolver resolver = getPropertyUtils().getResolver();</span> -<span class="nc bnc" id="L365" title="All 2 branches missed."> while (resolver.hasNested(name)) {</span> +<span class="fc" id="L363"> Object target = bean;</span> +<span class="fc" id="L364"> final Resolver resolver = getPropertyUtils().getResolver();</span> +<span class="fc bfc" id="L365" title="All 2 branches covered."> while (resolver.hasNested(name)) {</span> try { -<span class="nc" id="L367"> target = getPropertyUtils().getProperty(target, resolver.next(name));</span> -<span class="nc" id="L368"> name = resolver.remove(name);</span> +<span class="fc" id="L367"> target = getPropertyUtils().getProperty(target, resolver.next(name));</span> +<span class="fc" id="L368"> name = resolver.remove(name);</span> <span class="nc" id="L369"> } catch (final NoSuchMethodException e) {</span> <span class="nc" id="L370"> return; // Skip this property setter</span> - } +<span class="fc" id="L371"> }</span> } -<span class="nc bnc" id="L373" title="All 2 branches missed."> if (LOG.isTraceEnabled()) {</span> +<span class="pc bpc" id="L373" title="1 of 2 branches missed."> if (LOG.isTraceEnabled()) {</span> <span class="nc" id="L374"> LOG.trace(" Target bean = " + target);</span> <span class="nc" id="L375"> LOG.trace(" Target name = " + name);</span> } // Declare local variables we will require -<span class="nc" id="L379"> final String propName = resolver.getProperty(name); // Simple name of target property</span> -<span class="nc" id="L380"> Class<?> type = null; // Java type of target property</span> -<span class="nc" id="L381"> final int index = resolver.getIndex(name); // Indexed subscript value (if any)</span> -<span class="nc" id="L382"> final String key = resolver.getKey(name); // Mapped key value (if any)</span> +<span class="fc" id="L379"> final String propName = resolver.getProperty(name); // Simple name of target property</span> +<span class="fc" id="L380"> Class<?> type = null; // Java type of target property</span> +<span class="fc" id="L381"> final int index = resolver.getIndex(name); // Indexed subscript value (if any)</span> +<span class="fc" id="L382"> final String key = resolver.getKey(name); // Mapped key value (if any)</span> // Calculate the target property type -<span class="nc bnc" id="L385" title="All 2 branches missed."> if (target instanceof DynaBean) {</span> -<span class="nc" id="L386"> final DynaClass dynaClass = ((DynaBean) target).getDynaClass();</span> -<span class="nc" id="L387"> final DynaProperty dynaProperty = dynaClass.getDynaProperty(propName);</span> -<span class="nc bnc" id="L388" title="All 2 branches missed."> if (dynaProperty == null) {</span> +<span class="fc bfc" id="L385" title="All 2 branches covered."> if (target instanceof DynaBean) {</span> +<span class="fc" id="L386"> final DynaClass dynaClass = ((DynaBean) target).getDynaClass();</span> +<span class="fc" id="L387"> final DynaProperty dynaProperty = dynaClass.getDynaProperty(propName);</span> +<span class="pc bpc" id="L388" title="1 of 2 branches missed."> if (dynaProperty == null) {</span> <span class="nc" id="L389"> return; // Skip this property setter</span> } -<span class="nc" id="L391"> type = dynaPropertyType(dynaProperty, value);</span> -<span class="nc" id="L392"> } else {</span> -<span class="nc" id="L393"> PropertyDescriptor descriptor = null;</span> +<span class="fc" id="L391"> type = dynaPropertyType(dynaProperty, value);</span> +<span class="fc" id="L392"> } else {</span> +<span class="fc" id="L393"> PropertyDescriptor descriptor = null;</span> try { -<span class="nc" id="L395"> descriptor = getPropertyUtils().getPropertyDescriptor(target, name);</span> -<span class="nc bnc" id="L396" title="All 2 branches missed."> if (descriptor == null) {</span> +<span class="fc" id="L395"> descriptor = getPropertyUtils().getPropertyDescriptor(target, name);</span> +<span class="pc bpc" id="L396" title="1 of 2 branches missed."> if (descriptor == null) {</span> <span class="nc" id="L397"> return; // Skip this property setter</span> } <span class="nc" id="L399"> } catch (final NoSuchMethodException e) {</span> <span class="nc" id="L400"> return; // Skip this property setter</span> - } -<span class="nc" id="L402"> type = descriptor.getPropertyType();</span> -<span class="nc bnc" id="L403" title="All 2 branches missed."> if (type == null) {</span> +<span class="fc" id="L401"> }</span> +<span class="fc" id="L402"> type = descriptor.getPropertyType();</span> +<span class="fc bfc" id="L403" title="All 2 branches covered."> if (type == null) {</span> // Most likely an indexed setter on a POJB only -<span class="nc bnc" id="L405" title="All 2 branches missed."> if (LOG.isTraceEnabled()) {</span> +<span class="pc bpc" id="L405" title="1 of 2 branches missed."> if (LOG.isTraceEnabled()) {</span> <span class="nc" id="L406"> LOG.trace(" target type for property '" + propName + "' is null, so skipping the setter");</span> } -<span class="nc" id="L408"> return;</span> +<span class="fc" id="L408"> return;</span> } } -<span class="nc bnc" id="L411" title="All 2 branches missed."> if (LOG.isTraceEnabled()) {</span> +<span class="pc bpc" id="L411" title="1 of 2 branches missed."> if (LOG.isTraceEnabled()) {</span> <span class="nc" id="L412"> LOG.trace(" target propName=" + propName + ", type=" + type + ", index=" + index + ", key=" + key);</span> } // Convert the specified value to the required type and store it -<span class="nc bnc" id="L416" title="All 2 branches missed."> if (index >= 0) { // Destination must be indexed</span> -<span class="nc" id="L417"> value = convertForCopy(value, type.getComponentType());</span> +<span class="fc bfc" id="L416" title="All 2 branches covered."> if (index >= 0) { // Destination must be indexed</span> +<span class="fc" id="L417"> value = convertForCopy(value, type.getComponentType());</span> try { -<span class="nc" id="L419"> getPropertyUtils().setIndexedProperty(target, propName, index, value);</span> +<span class="fc" id="L419"> getPropertyUtils().setIndexedProperty(target, propName, index, value);</span> <span class="nc" id="L420"> } catch (final NoSuchMethodException e) {</span> <span class="nc" id="L421"> throw new InvocationTargetException(e, "Cannot set " + propName);</span> - } -<span class="nc bnc" id="L423" title="All 2 branches missed."> } else if (key != null) { // Destination must be mapped</span> +<span class="fc" id="L422"> }</span> +<span class="fc bfc" id="L423" title="All 2 branches covered."> } else if (key != null) { // Destination must be mapped</span> // Maps do not know what the preferred data type is, // so perform no conversions at all // FIXME - should we create or support a TypedMap? try { -<span class="nc" id="L428"> getPropertyUtils().setMappedProperty(target, propName, key, value);</span> +<span class="fc" id="L428"> getPropertyUtils().setMappedProperty(target, propName, key, value);</span> <span class="nc" id="L429"> } catch (final NoSuchMethodException e) {</span> <span class="nc" id="L430"> throw new InvocationTargetException(e, "Cannot set " + propName);</span> - } +<span class="fc" id="L431"> }</span> } else { // Destination must be simple -<span class="nc" id="L433"> value = convertForCopy(value, type);</span> +<span class="fc" id="L433"> value = convertForCopy(value, type);</span> try { -<span class="nc" id="L435"> getPropertyUtils().setSimpleProperty(target, propName, value);</span> +<span class="fc" id="L435"> getPropertyUtils().setSimpleProperty(target, propName, value);</span> <span class="nc" id="L436"> } catch (final NoSuchMethodException e) {</span> <span class="nc" id="L437"> throw new InvocationTargetException(e, "Cannot set " + propName);</span> - } +<span class="fc" id="L438"> }</span> } -<span class="nc" id="L440"> }</span> +<span class="fc" id="L440"> }</span> /** * <p> @@ -478,33 +478,33 @@ public class BeanUtilsBean { * @throws NoSuchMethodException if an accessor method for this property cannot be found */ public Map<String, String> describe(final Object bean) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { -<span class="nc bnc" id="L481" title="All 2 branches missed."> if (bean == null) {</span> +<span class="fc bfc" id="L481" title="All 2 branches covered."> if (bean == null) {</span> // return (Collections.EMPTY_MAP); -<span class="nc" id="L483"> return new java.util.HashMap<>();</span> +<span class="fc" id="L483"> return new java.util.HashMap<>();</span> } -<span class="nc bnc" id="L486" title="All 2 branches missed."> if (LOG.isDebugEnabled()) {</span> +<span class="pc bpc" id="L486" title="1 of 2 branches missed."> if (LOG.isDebugEnabled()) {</span> <span class="nc" id="L487"> LOG.debug("Describing bean: " + bean.getClass().getName());</span> } -<span class="nc" id="L490"> final Map<String, String> description = new HashMap<>();</span> -<span class="nc bnc" id="L491" title="All 2 branches missed."> if (bean instanceof DynaBean) {</span> +<span class="fc" id="L490"> final Map<String, String> description = new HashMap<>();</span> +<span class="pc bpc" id="L491" title="1 of 2 branches missed."> if (bean instanceof DynaBean) {</span> <span class="nc" id="L492"> final DynaProperty[] descriptors = ((DynaBean) bean).getDynaClass().getDynaProperties();</span> <span class="nc bnc" id="L493" title="All 2 branches missed."> for (final DynaProperty descriptor : descriptors) {</span> <span class="nc" id="L494"> final String name = descriptor.getName();</span> <span class="nc" id="L495"> description.put(name, getProperty(bean, name));</span> } <span class="nc" id="L497"> } else {</span> -<span class="nc" id="L498"> final PropertyDescriptor[] descriptors = getPropertyUtils().getPropertyDescriptors(bean);</span> -<span class="nc" id="L499"> final Class<?> clazz = bean.getClass();</span> -<span class="nc bnc" id="L500" title="All 2 branches missed."> for (final PropertyDescriptor descriptor : descriptors) {</span> -<span class="nc" id="L501"> final String name = descriptor.getName();</span> -<span class="nc bnc" id="L502" title="All 2 branches missed."> if (getPropertyUtils().getReadMethod(clazz, descriptor) != null) {</span> -<span class="nc" id="L503"> description.put(name, getProperty(bean, name));</span> +<span class="fc" id="L498"> final PropertyDescriptor[] descriptors = getPropertyUtils().getPropertyDescriptors(bean);</span> +<span class="fc" id="L499"> final Class<?> clazz = bean.getClass();</span> +<span class="fc bfc" id="L500" title="All 2 branches covered."> for (final PropertyDescriptor descriptor : descriptors) {</span> +<span class="fc" id="L501"> final String name = descriptor.getName();</span> +<span class="fc bfc" id="L502" title="All 2 branches covered."> if (getPropertyUtils().getReadMethod(clazz, descriptor) != null) {</span> +<span class="fc" id="L503"> description.put(name, getProperty(bean, name));</span> } } } -<span class="nc" id="L507"> return description;</span> +<span class="fc" id="L507"> return description;</span> } /** @@ -518,30 +518,30 @@ public class BeanUtilsBean { * @throws NoSuchMethodException if an accessor method for this property cannot be found */ public String[] getArrayProperty(final Object bean, final String name) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { -<span class="nc" id="L521"> final Object value = getPropertyUtils().getProperty(bean, name);</span> -<span class="nc bnc" id="L522" title="All 2 branches missed."> if (value == null) {</span> +<span class="fc" id="L521"> final Object value = getPropertyUtils().getProperty(bean, name);</span> +<span class="pc bpc" id="L522" title="1 of 2 branches missed."> if (value == null) {</span> <span class="nc" id="L523"> return null;</span> } -<span class="nc bnc" id="L525" title="All 2 branches missed."> if (value instanceof Collection) {</span> +<span class="pc bpc" id="L525" title="1 of 2 branches missed."> if (value instanceof Collection) {</span> <span class="nc bnc" id="L526" title="All 2 branches missed."> return ((Collection<?>) value).stream().map(item -> item != null ? getConvertUtils().convert(item) : null).toArray(String[]::new);</span> } -<span class="nc bnc" id="L528" title="All 2 branches missed."> if (!value.getClass().isArray()) {</span> -<span class="nc" id="L529"> final String[] results = new String[1];</span> -<span class="nc" id="L530"> results[0] = getConvertUtils().convert(value);</span> -<span class="nc" id="L531"> return results;</span> - } -<span class="nc" id="L533"> final int n = Array.getLength(value);</span> -<span class="nc" id="L534"> final String[] results = new String[n];</span> -<span class="nc bnc" id="L535" title="All 2 branches missed."> for (int i = 0; i < n; i++) {</span> -<span class="nc" id="L536"> final Object item = Array.get(value, i);</span> -<span class="nc bnc" id="L537" title="All 2 branches missed."> if (item == null) {</span> +<span class="fc bfc" id="L528" title="All 2 branches covered."> if (!value.getClass().isArray()) {</span> +<span class="fc" id="L529"> final String[] results = new String[1];</span> +<span class="fc" id="L530"> results[0] = getConvertUtils().convert(value);</span> +<span class="fc" id="L531"> return results;</span> + } +<span class="fc" id="L533"> final int n = Array.getLength(value);</span> +<span class="fc" id="L534"> final String[] results = new String[n];</span> +<span class="fc bfc" id="L535" title="All 2 branches covered."> for (int i = 0; i < n; i++) {</span> +<span class="fc" id="L536"> final Object item = Array.get(value, i);</span> +<span class="pc bpc" id="L537" title="1 of 2 branches missed."> if (item == null) {</span> <span class="nc" id="L538"> results[i] = null;</span> -<span class="nc" id="L539"> } else {</span> + } else { // convert to string using convert utils -<span class="nc" id="L541"> results[i] = getConvertUtils().convert(item);</span> +<span class="fc" id="L541"> results[i] = getConvertUtils().convert(item);</span> } } -<span class="nc" id="L544"> return results;</span> +<span class="fc" id="L544"> return results;</span> } /** @@ -550,7 +550,7 @@ public class BeanUtilsBean { * @return The ConvertUtils bean instance */ public ConvertUtilsBean getConvertUtils() { -<span class="nc" id="L553"> return convertUtilsBean;</span> +<span class="fc" id="L553"> return convertUtilsBean;</span> } /** @@ -565,8 +565,8 @@ public class BeanUtilsBean { * @throws NoSuchMethodException if an accessor method for this property cannot be found */ public String getIndexedProperty(final Object bean, final String name) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { -<span class="nc" id="L568"> final Object value = getPropertyUtils().getIndexedProperty(bean, name);</span> -<span class="nc" id="L569"> return getConvertUtils().convert(value);</span> +<span class="fc" id="L568"> final Object value = getPropertyUtils().getIndexedProperty(bean, name);</span> +<span class="fc" id="L569"> return getConvertUtils().convert(value);</span> } /** @@ -583,8 +583,8 @@ public class BeanUtilsBean { */ public String getIndexedProperty(final Object bean, final String name, final int index) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { -<span class="nc" id="L586"> final Object value = getPropertyUtils().getIndexedProperty(bean, name, index);</span> -<span class="nc" id="L587"> return getConvertUtils().convert(value);</span> +<span class="fc" id="L586"> final Object value = getPropertyUtils().getIndexedProperty(bean, name, index);</span> +<span class="fc" id="L587"> return getConvertUtils().convert(value);</span> } /** @@ -633,8 +633,8 @@ public class BeanUtilsBean { * @throws NoSuchMethodException if an accessor method for this property cannot be found */ public String getNestedProperty(final Object bean, final String name) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { -<span class="nc" id="L636"> final Object value = getPropertyUtils().getNestedProperty(bean, name);</span> -<span class="nc" id="L637"> return getConvertUtils().convert(value);</span> +<span class="fc" id="L636"> final Object value = getPropertyUtils().getNestedProperty(bean, name);</span> +<span class="fc" id="L637"> return getConvertUtils().convert(value);</span> } /** @@ -648,7 +648,7 @@ public class BeanUtilsBean { * @throws NoSuchMethodException if an accessor method for this property cannot be found */ public String getProperty(final Object bean, final String name) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { -<span class="nc" id="L651"> return getNestedProperty(bean, name);</span> +<span class="fc" id="L651"> return getNestedProperty(bean, name);</span> } /** @@ -657,7 +657,7 @@ public class BeanUtilsBean { * @return The ConvertUtils bean instance */ public PropertyUtilsBean getPropertyUtils() { -<span class="nc" id="L660"> return propertyUtilsBean;</span> +<span class="fc" id="L660"> return propertyUtilsBean;</span> } /** @@ -671,8 +671,8 @@ public class BeanUtilsBean { * @throws NoSuchMethodException if an accessor method for this property cannot be found */ public String getSimpleProperty(final Object bean, final String name) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { -<span class="nc" id="L674"> final Object value = getPropertyUtils().getSimpleProperty(bean, name);</span> -<span class="nc" id="L675"> return getConvertUtils().convert(value);</span> +<span class="fc" id="L674"> final Object value = getPropertyUtils().getSimpleProperty(bean, name);</span> +<span class="fc" id="L675"> return getConvertUtils().convert(value);</span> } /** @@ -705,25 +705,25 @@ public class BeanUtilsBean { */ public void populate(final Object bean, final Map<String, ? extends Object> properties) throws IllegalAccessException, InvocationTargetException { // Do nothing unless both arguments have been specified -<span class="nc bnc" id="L708" title="All 4 branches missed."> if (bean == null || properties == null) {</span> -<span class="nc" id="L709"> return;</span> +<span class="fc bfc" id="L708" title="All 4 branches covered."> if (bean == null || properties == null) {</span> +<span class="fc" id="L709"> return;</span> } -<span class="nc bnc" id="L711" title="All 2 branches missed."> if (LOG.isDebugEnabled()) {</span> +<span class="pc bpc" id="L711" title="1 of 2 branches missed."> if (LOG.isDebugEnabled()) {</span> <span class="nc" id="L712"> LOG.debug("BeanUtils.populate(" + bean + ", " + properties + ")");</span> } // Loop through the property name/value pairs to be set -<span class="nc bnc" id="L716" title="All 2 branches missed."> for (final Map.Entry<String, ? extends Object> entry : properties.entrySet()) {</span> +<span class="fc bfc" id="L716" title="All 2 branches covered."> for (final Map.Entry<String, ? extends Object> entry : properties.entrySet()) {</span> // Identify the property name and value(s) to be assigned -<span class="nc" id="L718"> final String name = entry.getKey();</span> -<span class="nc bnc" id="L719" title="All 2 branches missed."> if (name == null) {</span> +<span class="fc" id="L718"> final String name = entry.getKey();</span> +<span class="pc bpc" id="L719" title="1 of 2 branches missed."> if (name == null) {</span> <span class="nc" id="L720"> continue;</span> } // Perform the assignment for this property -<span class="nc" id="L724"> setProperty(bean, name, entry.getValue());</span> - } -<span class="nc" id="L726"> }</span> +<span class="fc" id="L724"> setProperty(bean, name, entry.getValue());</span> +<span class="fc" id="L725"> }</span> +<span class="fc" id="L726"> }</span> /** * <p> @@ -756,7 +756,7 @@ public class BeanUtilsBean { */ public void setProperty(final Object bean, String name, final Object value) throws IllegalAccessException, InvocationTargetException { // Trace logging (if enabled) -<span class="nc bnc" id="L759" title="All 2 branches missed."> if (LOG.isTraceEnabled()) {</span> +<span class="pc bpc" id="L759" title="1 of 2 branches missed."> if (LOG.isTraceEnabled()) {</span> <span class="nc" id="L760"> final StringBuilder sb = new StringBuilder(" setProperty(");</span> <span class="nc" id="L761"> sb.append(bean);</span> <span class="nc" id="L762"> sb.append(", ");</span> @@ -784,128 +784,128 @@ public class BeanUtilsBean { } // Resolve any nested expression to get the actual target bean -<span class="nc" id="L787"> Object target = bean;</span> -<span class="nc" id="L788"> final Resolver resolver = getPropertyUtils().getResolver();</span> -<span class="nc bnc" id="L789" title="All 2 branches missed."> while (resolver.hasNested(name)) {</span> +<span class="fc" id="L787"> Object target = bean;</span> +<span class="fc" id="L788"> final Resolver resolver = getPropertyUtils().getResolver();</span> +<span class="fc bfc" id="L789" title="All 2 branches covered."> while (resolver.hasNested(name)) {</span> try { -<span class="nc" id="L791"> target = getPropertyUtils().getProperty(target, resolver.next(name));</span> -<span class="nc bnc" id="L792" title="All 2 branches missed."> if (target == null) { // the value of a nested property is null</span> -<span class="nc" id="L793"> return;</span> +<span class="fc" id="L791"> target = getPropertyUtils().getProperty(target, resolver.next(name));</span> +<span class="fc bfc" id="L792" title="All 2 branches covered."> if (target == null) { // the value of a nested property is null</span> +<span class="fc" id="L793"> return;</span> } -<span class="nc" id="L795"> name = resolver.remove(name);</span> +<span class="fc" id="L795"> name = resolver.remove(name);</span> <span class="nc" id="L796"> } catch (final NoSuchMethodException e) {</span> <span class="nc" id="L797"> return; // Skip this property setter</span> - } +<span class="fc" id="L798"> }</span> } -<span class="nc bnc" id="L800" title="All 2 branches missed."> if (LOG.isTraceEnabled()) {</span> +<span class="pc bpc" id="L800" title="1 of 2 branches missed."> if (LOG.isTraceEnabled()) {</span> <span class="nc" id="L801"> LOG.trace(" Target bean = " + target);</span> <span class="nc" id="L802"> LOG.trace(" Target name = " + name);</span> } // Declare local variables we will require -<span class="nc" id="L806"> final String propName = resolver.getProperty(name); // Simple name of target property</span> -<span class="nc" id="L807"> Class<?> type = null; // Java type of target property</span> -<span class="nc" id="L808"> final int index = resolver.getIndex(name); // Indexed subscript value (if any)</span> -<span class="nc" id="L809"> final String key = resolver.getKey(name); // Mapped key value (if any)</span> +<span class="fc" id="L806"> final String propName = resolver.getProperty(name); // Simple name of target property</span> +<span class="fc" id="L807"> Class<?> type = null; // Java type of target property</span> +<span class="fc" id="L808"> final int index = resolver.getIndex(name); // Indexed subscript value (if any)</span> +<span class="fc" id="L809"> final String key = resolver.getKey(name); // Mapped key value (if any)</span> // Calculate the property type -<span class="nc bnc" id="L812" title="All 2 branches missed."> if (target instanceof DynaBean) {</span> -<span class="nc" id="L813"> final DynaClass dynaClass = ((DynaBean) target).getDynaClass();</span> -<span class="nc" id="L814"> final DynaProperty dynaProperty = dynaClass.getDynaProperty(propName);</span> -<span class="nc bnc" id="L815" title="All 2 branches missed."> if (dynaProperty == null) {</span> +<span class="fc bfc" id="L812" title="All 2 branches covered."> if (target instanceof DynaBean) {</span> +<span class="fc" id="L813"> final DynaClass dynaClass = ((DynaBean) target).getDynaClass();</span> +<span class="fc" id="L814"> final DynaProperty dynaProperty = dynaClass.getDynaProperty(propName);</span> +<span class="pc bpc" id="L815" title="1 of 2 branches missed."> if (dynaProperty == null) {</span> <span class="nc" id="L816"> return; // Skip this property setter</span> } -<span class="nc" id="L818"> type = dynaPropertyType(dynaProperty, value);</span> -<span class="nc bnc" id="L819" title="All 4 branches missed."> if (index >= 0 && List.class.isAssignableFrom(type)) {</span> -<span class="nc" id="L820"> type = Object.class;</span> - } -<span class="nc bnc" id="L822" title="All 2 branches missed."> } else if (target instanceof Map) {</span> -<span class="nc" id="L823"> type = Object.class;</span> -<span class="nc bnc" id="L824" title="All 6 branches missed."> } else if (target != null && target.getClass().isArray() && index >= 0) {</span> -<span class="nc" id="L825"> type = Array.get(target, index).getClass();</span> -<span class="nc" id="L826"> } else {</span> -<span class="nc" id="L827"> PropertyDescriptor descriptor = null;</span> +<span class="fc" id="L818"> type = dynaPropertyType(dynaProperty, value);</span> +<span class="fc bfc" id="L819" title="All 4 branches covered."> if (index >= 0 && List.class.isAssignableFrom(type)) {</span> +<span class="fc" id="L820"> type = Object.class;</span> + } +<span class="fc bfc" id="L822" title="All 2 branches covered."> } else if (target instanceof Map) {</span> +<span class="fc" id="L823"> type = Object.class;</span> +<span class="pc bpc" id="L824" title="1 of 6 branches missed."> } else if (target != null && target.getClass().isArray() && index >= 0) {</span> +<span class="fc" id="L825"> type = Array.get(target, index).getClass();</span> + } else { +<span class="fc" id="L827"> PropertyDescriptor descriptor = null;</span> try { -<span class="nc" id="L829"> descriptor = getPropertyUtils().getPropertyDescriptor(target, name);</span> -<span class="nc bnc" id="L830" title="All 2 branches missed."> if (descriptor == null) {</span> +<span class="fc" id="L829"> descriptor = getPropertyUtils().getPropertyDescriptor(target, name);</span> +<span class="pc bpc" id="L830" title="1 of 2 branches missed."> if (descriptor == null) {</span> <span class="nc" id="L831"> return; // Skip this property setter</span> } <span class="nc" id="L833"> } catch (final NoSuchMethodException e) {</span> <span class="nc" id="L834"> return; // Skip this property setter</span> - } -<span class="nc bnc" id="L836" title="All 2 branches missed."> if (descriptor instanceof MappedPropertyDescriptor) {</span> -<span class="nc bnc" id="L837" title="All 2 branches missed."> if (((MappedPropertyDescriptor) descriptor).getMappedWriteMethod() == null) {</span> +<span class="fc" id="L835"> }</span> +<span class="fc bfc" id="L836" title="All 2 branches covered."> if (descriptor instanceof MappedPropertyDescriptor) {</span> +<span class="pc bpc" id="L837" title="1 of 2 branches missed."> if (((MappedPropertyDescriptor) descriptor).getMappedWriteMethod() == null) {</span> <span class="nc bnc" id="L838" title="All 2 branches missed."> if (LOG.isDebugEnabled()) {</span> <span class="nc" id="L839"> LOG.debug("Skipping read-only property");</span> } <span class="nc" id="L841"> return; // Read-only, skip this property setter</span> } -<span class="nc" id="L843"> type = ((MappedPropertyDescriptor) descriptor).getMappedPropertyType();</span> -<span class="nc bnc" id="L844" title="All 4 branches missed."> } else if (index >= 0 && descriptor instanceof IndexedPropertyDescriptor) {</span> -<span class="nc bnc" id="L845" title="All 2 branches missed."> if (((IndexedPropertyDescriptor) descriptor).getIndexedWriteMethod() == null) {</span> +<span class="fc" id="L843"> type = ((MappedPropertyDescriptor) descriptor).getMappedPropertyType();</span> +<span class="fc bfc" id="L844" title="All 4 branches covered."> } else if (index >= 0 && descriptor instanceof IndexedPropertyDescriptor) {</span> +<span class="pc bpc" id="L845" title="1 of 2 branches missed."> if (((IndexedPropertyDescriptor) descriptor).getIndexedWriteMethod() == null) {</span> <span class="nc bnc" id="L846" title="All 2 branches missed."> if (LOG.isDebugEnabled()) {</span> <span class="nc" id="L847"> LOG.debug("Skipping read-only property");</span> } <span class="nc" id="L849"> return; // Read-only, skip this property setter</span> } -<span class="nc" id="L851"> type = ((IndexedPropertyDescriptor) descriptor).getIndexedPropertyType();</span> -<span class="nc bnc" id="L852" title="All 4 branches missed."> } else if (index >= 0 && List.class.isAssignableFrom(descriptor.getPropertyType())) {</span> -<span class="nc" id="L853"> type = Object.class;</span> -<span class="nc bnc" id="L854" title="All 2 branches missed."> } else if (key != null) {</span> -<span class="nc bnc" id="L855" title="All 2 branches missed."> if (descriptor.getReadMethod() == null) {</span> +<span class="fc" id="L851"> type = ((IndexedPropertyDescriptor) descriptor).getIndexedPropertyType();</span> +<span class="fc bfc" id="L852" title="All 4 branches covered."> } else if (index >= 0 && List.class.isAssignableFrom(descriptor.getPropertyType())) {</span> +<span class="fc" id="L853"> type = Object.class;</span> +<span class="fc bfc" id="L854" title="All 2 branches covered."> } else if (key != null) {</span> +<span class="pc bpc" id="L855" title="1 of 2 branches missed."> if (descriptor.getReadMethod() == null) {</span> <span class="nc bnc" id="L856" title="All 2 branches missed."> if (LOG.isDebugEnabled()) {</span> <span class="nc" id="L857"> LOG.debug("Skipping read-only property");</span> } <span class="nc" id="L859"> return; // Read-only, skip this property setter</span> } -<span class="nc bnc" id="L861" title="All 2 branches missed."> type = value == null ? Object.class : value.getClass();</span> -<span class="nc" id="L862"> } else {</span> -<span class="nc bnc" id="L863" title="All 2 branches missed."> if (descriptor.getWriteMethod() == null) {</span> -<span class="nc bnc" id="L864" title="All 2 branches missed."> if (LOG.isDebugEnabled()) {</span> +<span class="pc bpc" id="L861" title="1 of 2 branches missed."> type = value == null ? Object.class : value.getClass();</span> + } else { +<span class="fc bfc" id="L863" title="All 2 branches covered."> if (descriptor.getWriteMethod() == null) {</span> +<span class="pc bpc" id="L864" title="1 of 2 branches missed."> if (LOG.isDebugEnabled()) {</span> <span class="nc" id="L865"> LOG.debug("Skipping read-only property");</span> } -<span class="nc" id="L867"> return; // Read-only, skip this property setter</span> +<span class="fc" id="L867"> return; // Read-only, skip this property setter</span> } -<span class="nc" id="L869"> type = descriptor.getPropertyType();</span> +<span class="fc" id="L869"> type = descriptor.getPropertyType();</span> } } // Convert the specified value to the required type -<span class="nc" id="L874"> Object newValue = null;</span> -<span class="nc bnc" id="L875" title="All 4 branches missed."> if (type.isArray() && index < 0) { // Scalar value into array</span> -<span class="nc bnc" id="L876" title="All 2 branches missed."> if (value == null) {</span> -<span class="nc" id="L877"> final String[] values = new String[1];</span> -<span class="nc" id="L878"> values[0] = null;</span> -<span class="nc" id="L879"> newValue = getConvertUtils().convert(values, type);</span> -<span class="nc bnc" id="L880" title="All 2 branches missed."> } else if (value instanceof String) {</span> -<span class="nc" id="L881"> newValue = getConvertUtils().convert(value, type);</span> -<span class="nc bnc" id="L882" title="All 2 branches missed."> } else if (value instanceof String[]) {</span> -<span class="nc" id="L883"> newValue = getConvertUtils().convert((String[]) value, type);</span> -<span class="nc" id="L884"> } else {</span> -<span class="nc" id="L885"> newValue = convert(value, type);</span> - } -<span class="nc bnc" id="L887" title="All 2 branches missed."> } else if (type.isArray()) { // Indexed value into array</span> -<span class="nc bnc" id="L888" title="All 4 branches missed."> if (value instanceof String || value == null) {</span> -<span class="nc" id="L889"> newValue = getConvertUtils().convert((String) value, type.getComponentType());</span> -<span class="nc bnc" id="L890" title="All 2 branches missed."> } else if (value instanceof String[]) {</span> +<span class="fc" id="L874"> Object newValue = null;</span> +<span class="fc bfc" id="L875" title="All 4 branches covered."> if (type.isArray() && index < 0) { // Scalar value into array</span> +<span class="fc bfc" id="L876" title="All 2 branches covered."> if (value == null) {</span> +<span class="fc" id="L877"> final String[] values = new String[1];</span> +<span class="fc" id="L878"> values[0] = null;</span> +<span class="fc" id="L879"> newValue = getConvertUtils().convert(values, type);</span> +<span class="fc bfc" id="L880" title="All 2 branches covered."> } else if (value instanceof String) {</span> +<span class="fc" id="L881"> newValue = getConvertUtils().convert(value, type);</span> +<span class="fc bfc" id="L882" title="All 2 branches covered."> } else if (value instanceof String[]) {</span> +<span class="fc" id="L883"> newValue = getConvertUtils().convert((String[]) value, type);</span> + } else { +<span class="fc" id="L885"> newValue = convert(value, type);</span> + } +<span class="fc bfc" id="L887" title="All 2 branches covered."> } else if (type.isArray()) { // Indexed value into array</span> +<span class="fc bfc" id="L888" title="All 4 branches covered."> if (value instanceof String || value == null) {</span> +<span class="fc" id="L889"> newValue = getConvertUtils().convert((String) value, type.getComponentType());</span> +<span class="pc bpc" id="L890" title="1 of 2 branches missed."> } else if (value instanceof String[]) {</span> <span class="nc" id="L891"> newValue = getConvertUtils().convert(((String[]) value)[0], type.getComponentType());</span> -<span class="nc" id="L892"> } else {</span> -<span class="nc" id="L893"> newValue = convert(value, type.getComponentType());</span> + } else { +<span class="fc" id="L893"> newValue = convert(value, type.getComponentType());</span> } -<span class="nc bnc" id="L895" title="All 2 branches missed."> } else if (value instanceof String) {</span> -<span class="nc" id="L896"> newValue = getConvertUtils().convert((String) value, type);</span> -<span class="nc bnc" id="L897" title="All 2 branches missed."> } else if (value instanceof String[]) {</span> +<span class="fc bfc" id="L895" title="All 2 branches covered."> } else if (value instanceof String) {</span> +<span class="fc" id="L896"> newValue = getConvertUtils().convert((String) value, type);</span> +<span class="pc bpc" id="L897" title="1 of 2 branches missed."> } else if (value instanceof String[]) {</span> <span class="nc" id="L898"> newValue = getConvertUtils().convert(((String[]) value)[0], type);</span> -<span class="nc" id="L899"> } else {</span> -<span class="nc" id="L900"> newValue = convert(value, type);</span> + } else { +<span class="fc" id="L900"> newValue = convert(value, type);</span> } // Invoke the setter method try { -<span class="nc" id="L905"> getPropertyUtils().setProperty(target, name, newValue);</span> +<span class="fc" id="L905"> getPropertyUtils().setProperty(target, name, newValue);</span> <span class="nc" id="L906"> } catch (final NoSuchMethodException e) {</span> <span class="nc" id="L907"> throw new InvocationTargetException(e, "Cannot set " + propName);</span> - } -<span class="nc" id="L909"> }</span> +<span class="fc" id="L908"> }</span> +<span class="fc" id="L909"> }</span> } </pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.12.202403310830</span></div></body></html> \ No newline at end of file
Modified: websites/production/commons/content/proper/commons-beanutils/jacoco/org.apache.commons.beanutils2/ConstructorUtils.html ============================================================================== --- websites/production/commons/content/proper/commons-beanutils/jacoco/org.apache.commons.beanutils2/ConstructorUtils.html (original) +++ websites/production/commons/content/proper/commons-beanutils/jacoco/org.apache.commons.beanutils2/ConstructorUtils.html Tue Jan 7 19:57:26 2025 @@ -1 +1 @@ -<?xml version="1.0" encoding="utf-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>ConstructorUtils</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">Apache Commons BeanUtils</a> > <a href="index.html" class="el_package">org.apache.commons.beanutils2</a> > <span class="el_class">ConstructorUtils</span></div><h1>ConstructorUtils</h1><p>A different version of class was executed a t runtime.</p><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">272 of 272</td><td class="ctr2">0%</td><td class="bar">40 of 40 </td><td class="ctr2">0%</td><td class="ctr1">33</td><td class="ctr2">33</td><td class="ctr1">76</td><td class="ctr2">76</td><td class="ctr1">13</td><td class="ctr2">13</td></tr></tfoot><tbody><tr><td id="a4"><a href="ConstructorUtils.java.html#L130" class="el_method">getMatchingAccessibleConstructor(Class, Class[])</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="79" alt="79"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="12" alt="12"/></td><td class="ctr2" id="e0">0%</td><td class="ctr1" id="f0">7</td><td class="ctr2" id="g0">7</td><td class="ctr1" id="h0">23</td><td class="ctr2" id="i0">23</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a7"><a href="ConstructorUtils.java.html#L279" class="el_method">invokeConstructor(Class, Object[], Class[])</a></td><td class="bar" id="b1"><img src="../jacoco-resources/ redbar.gif" width="45" height="10" title="30" alt="30"/></td><td class="ctr2" id="c1">0%</td><td class="bar" id="d1"><img src="../jacoco-resources/redbar.gif" width="60" height="10" title="6" alt="6"/></td><td class="ctr2" id="e1">0%</td><td class="ctr1" id="f1">4</td><td class="ctr2" id="g1">4</td><td class="ctr1" id="h1">8</td><td class="ctr2" id="i1">8</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a10"><a href="ConstructorUtils.java.html#L377" class="el_method">invokeExactConstructor(Class, Object[], Class[])</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="45" height="10" title="30" alt="30"/></td><td class="ctr2" id="c2">0%</td><td class="bar" id="d2"><img src="../jacoco-resources/redbar.gif" width="60" height="10" title="6" alt="6"/></td><td class="ctr2" id="e2">0%</td><td class="ctr1" id="f2">4</td><td class="ctr2" id="g2">4</td><td class="ctr1" id="h2">8</td><td class="ctr2" id="i2">8</td><td class="ctr1" i d="j2">1</td><td class="ctr2" id="k2">1</td></tr><tr><td id="a6"><a href="ConstructorUtils.java.html#L245" class="el_method">invokeConstructor(Class, Object[])</a></td><td class="bar" id="b3"><img src="../jacoco-resources/redbar.gif" width="44" height="10" title="29" alt="29"/></td><td class="ctr2" id="c3">0%</td><td class="bar" id="d4"><img src="../jacoco-resources/redbar.gif" width="40" height="10" title="4" alt="4"/></td><td class="ctr2" id="e3">0%</td><td class="ctr1" id="f4">3</td><td class="ctr2" id="g4">3</td><td class="ctr1" id="h4">7</td><td class="ctr2" id="i4">7</td><td class="ctr1" id="j3">1</td><td class="ctr2" id="k3">1</td></tr><tr><td id="a9"><a href="ConstructorUtils.java.html#L343" class="el_method">invokeExactConstructor(Class, Object[])</a></td><td class="bar" id="b4"><img src="../jacoco-resources/redbar.gif" width="44" height="10" title="29" alt="29"/></td><td class="ctr2" id="c4">0%</td><td class="bar" id="d5"><img src="../jacoco-resources/redbar.gif" width="40 " height="10" title="4" alt="4"/></td><td class="ctr2" id="e4">0%</td><td class="ctr1" id="f5">3</td><td class="ctr2" id="g5">3</td><td class="ctr1" id="h5">7</td><td class="ctr2" id="i5">7</td><td class="ctr1" id="j4">1</td><td class="ctr2" id="k4">1</td></tr><tr><td id="a3"><a href="ConstructorUtils.java.html#L91" class="el_method">getAccessibleConstructor(Constructor)</a></td><td class="bar" id="b5"><img src="../jacoco-resources/redbar.gif" width="31" height="10" title="21" alt="21"/></td><td class="ctr2" id="c5">0%</td><td class="bar" id="d3"><img src="../jacoco-resources/redbar.gif" width="60" height="10" title="6" alt="6"/></td><td class="ctr2" id="e5">0%</td><td class="ctr1" id="f3">4</td><td class="ctr2" id="g3">4</td><td class="ctr1" id="h3">8</td><td class="ctr2" id="i3">8</td><td class="ctr1" id="j5">1</td><td class="ctr2" id="k5">1</td></tr><tr><td id="a12"><a href="ConstructorUtils.java.html#L406" class="el_method">toArray(Object)</a></td><td class="bar" id="b6"><img sr c="../jacoco-resources/redbar.gif" width="19" height="10" title="13" alt="13"/></td><td class="ctr2" id="c6">0%</td><td class="bar" id="d6"><img src="../jacoco-resources/redbar.gif" width="20" height="10" title="2" alt="2"/></td><td class="ctr2" id="e6">0%</td><td class="ctr1" id="f6">2</td><td class="ctr2" id="g6">2</td><td class="ctr1" id="h6">4</td><td class="ctr2" id="i6">4</td><td class="ctr1" id="j6">1</td><td class="ctr2" id="k6">1</td></tr><tr><td id="a1"><a href="ConstructorUtils.java.html#L57" class="el_method">getAccessibleConstructor(Class, Class)</a></td><td class="bar" id="b7"><img src="../jacoco-resources/redbar.gif" width="16" height="10" title="11" alt="11"/></td><td class="ctr2" id="c7">0%</td><td class="bar" id="d7"/><td class="ctr2" id="e7">n/a</td><td class="ctr1" id="f7">1</td><td class="ctr2" id="g7">1</td><td class="ctr1" id="h8">2</td><td class="ctr2" id="i8">2</td><td class="ctr1" id="j7">1</td><td class="ctr2" id="k7">1</td></tr><tr><td id="a2"><a href="Co nstructorUtils.java.html#L74" class="el_method">getAccessibleConstructor(Class, Class[])</a></td><td class="bar" id="b8"><img src="../jacoco-resources/redbar.gif" width="12" height="10" title="8" alt="8"/></td><td class="ctr2" id="c8">0%</td><td class="bar" id="d8"/><td class="ctr2" id="e8">n/a</td><td class="ctr1" id="f8">1</td><td class="ctr2" id="g8">1</td><td class="ctr1" id="h7">3</td><td class="ctr2" id="i7">3</td><td class="ctr1" id="j8">1</td><td class="ctr2" id="k8">1</td></tr><tr><td id="a5"><a href="ConstructorUtils.java.html#L218" class="el_method">invokeConstructor(Class, Object)</a></td><td class="bar" id="b9"><img src="../jacoco-resources/redbar.gif" width="10" height="10" title="7" alt="7"/></td><td class="ctr2" id="c9">0%</td><td class="bar" id="d9"/><td class="ctr2" id="e9">n/a</td><td class="ctr1" id="f9">1</td><td class="ctr2" id="g9">1</td><td class="ctr1" id="h9">2</td><td class="ctr2" id="i9">2</td><td class="ctr1" id="j9">1</td><td class="ctr2" id="k9">1</td> </tr><tr><td id="a8"><a href="ConstructorUtils.java.html#L316" class="el_method">invokeExactConstructor(Class, Object)</a></td><td class="bar" id="b10"><img src="../jacoco-resources/redbar.gif" width="10" height="10" title="7" alt="7"/></td><td class="ctr2" id="c10">0%</td><td class="bar" id="d10"/><td class="ctr2" id="e10">n/a</td><td class="ctr1" id="f10">1</td><td class="ctr2" id="g10">1</td><td class="ctr1" id="h10">2</td><td class="ctr2" id="i10">2</td><td class="ctr1" id="j10">1</td><td class="ctr2" id="k10">1</td></tr><tr><td id="a11"><a href="ConstructorUtils.java.html#L402" class="el_method">newArray(Class, int)</a></td><td class="bar" id="b11"><img src="../jacoco-resources/redbar.gif" width="7" height="10" title="5" alt="5"/></td><td class="ctr2" id="c11">0%</td><td class="bar" id="d11"/><td class="ctr2" id="e11">n/a</td><td class="ctr1" id="f11">1</td><td class="ctr2" id="g11">1</td><td class="ctr1" id="h11">1</td><td class="ctr2" id="i11">1</td><td class="ctr1" id="j11"> 1</td><td class="ctr2" id="k11">1</td></tr><tr><td id="a0"><a href="ConstructorUtils.java.html#L43" class="el_method">ConstructorUtils()</a></td><td class="bar" id="b12"><img src="../jacoco-resources/redbar.gif" width="4" height="10" title="3" alt="3"/></td><td class="ctr2" id="c12">0%</td><td class="bar" id="d12"/><td class="ctr2" id="e12">n/a</td><td class="ctr1" id="f12">1</td><td class="ctr2" id="g12">1</td><td class="ctr1" id="h12">1</td><td class="ctr2" id="i12">1</td><td class="ctr1" id="j12">1</td><td class="ctr2" id="k12">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.12.202403310830</span></div></body></html> \ No newline at end of file +<?xml version="1.0" encoding="utf-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>ConstructorUtils</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">Apache Commons BeanUtils</a> > <a href="index.html" class="el_package">org.apache.commons.beanutils2</a> > <span class="el_class">ConstructorUtils</span></div><h1>ConstructorUtils</h1><table class="coverage" cellspacing="0" id="co veragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">37 of 278</td><td class="ctr2">86%</td><td class="bar">9 of 40</td><td class="ctr2">77%</td><td class="ctr1">11</td><td cla ss="ctr2">33</td><td class="ctr1">12</td><td class="ctr2">78</td><td class="ctr1">2</td><td class="ctr2">13</td></tr></tfoot><tbody><tr><td id="a7"><a href="ConstructorUtils.java.html#L279" class="el_method">invokeConstructor(Class, Object[], Class[])</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="25" height="10" title="17" alt="17"/><img src="../jacoco-resources/greenbar.gif" width="22" height="10" title="15" alt="15"/></td><td class="ctr2" id="c10">46%</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="30" height="10" title="3" alt="3"/><img src="../jacoco-resources/greenbar.gif" width="30" height="10" title="3" alt="3"/></td><td class="ctr2" id="e6">50%</td><td class="ctr1" id="f0">3</td><td class="ctr2" id="g1">4</td><td class="ctr1" id="h0">3</td><td class="ctr2" id="i1">8</td><td class="ctr1" id="j2">0</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a11"><a href="ConstructorUtils.java.html#L402" class="el_method"> newArray(Class, int)</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="7" height="10" title="5" alt="5"/></td><td class="ctr2" id="c11">0%</td><td class="bar" id="d7"/><td class="ctr2" id="e7">n/a</td><td class="ctr1" id="f4">1</td><td class="ctr2" id="g7">1</td><td class="ctr1" id="h4">1</td><td class="ctr2" id="i11">1</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a4"><a href="ConstructorUtils.java.html#L130" class="el_method">getMatchingAccessibleConstructor(Class, Class[])</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="6" height="10" title="4" alt="4"/><img src="../jacoco-resources/greenbar.gif" width="113" height="10" title="75" alt="75"/></td><td class="ctr2" id="c7">94%</td><td class="bar" id="d1"><img src="../jacoco-resources/redbar.gif" width="20" height="10" title="2" alt="2"/><img src="../jacoco-resources/greenbar.gif" width="100" height="10" title="10" alt="10"/></td><td class="ctr2" id="e3">83%</td><td class="ctr1" id="f1">2</td><td class="ctr2" id="g0">7</td><td class="ctr1" id="h1">3</td><td class="ctr2" id="i0">25</td><td class="ctr1" id="j3">0</td><td class="ctr2" id="k2">1</td></tr><tr><td id="a10"><a href="ConstructorUtils.java.html#L377" class="el_method">invokeExactConstructor(Class, Object[], Class[])</a></td><td class="bar" id="b3"><img src="../jacoco-resources/redbar.gif" width="6" height="10" title="4" alt="4"/><img src="../jacoco-resources/greenbar.gif" width="42" height="10" title="28" alt="28"/></td><td class="ctr2" id="c8">87%</td><td class="bar" id="d2"><img src="../jacoco-resources/redbar.gif" width="20" height="10" title="2" alt="2"/><img src="../jacoco-resources/greenbar.gif" width="40" height="10" title="4" alt="4"/></td><td class="ctr2" id="e4">66%</td><td class="ctr1" id="f2">2</td><td class="ctr2" id="g2">4</td><td class="ctr1" id="h2">2</td><td class="ctr2" id="i2">8</td><td class="ctr1" id="j4">0</td><td class="ctr2" id="k 3">1</td></tr><tr><td id="a3"><a href="ConstructorUtils.java.html#L91" class="el_method">getAccessibleConstructor(Constructor)</a></td><td class="bar" id="b4"><img src="../jacoco-resources/redbar.gif" width="6" height="10" title="4" alt="4"/><img src="../jacoco-resources/greenbar.gif" width="25" height="10" title="17" alt="17"/></td><td class="ctr2" id="c9">80%</td><td class="bar" id="d3"><img src="../jacoco-resources/redbar.gif" width="20" height="10" title="2" alt="2"/><img src="../jacoco-resources/greenbar.gif" width="40" height="10" title="4" alt="4"/></td><td class="ctr2" id="e5">66%</td><td class="ctr1" id="f3">2</td><td class="ctr2" id="g3">4</td><td class="ctr1" id="h3">2</td><td class="ctr2" id="i3">8</td><td class="ctr1" id="j5">0</td><td class="ctr2" id="k4">1</td></tr><tr><td id="a0"><a href="ConstructorUtils.java.html#L43" class="el_method">ConstructorUtils()</a></td><td class="bar" id="b5"><img src="../jacoco-resources/redbar.gif" width="4" height="10" title="3" alt="3 "/></td><td class="ctr2" id="c12">0%</td><td class="bar" id="d8"/><td class="ctr2" id="e8">n/a</td><td class="ctr1" id="f5">1</td><td class="ctr2" id="g8">1</td><td class="ctr1" id="h5">1</td><td class="ctr2" id="i12">1</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k5">1</td></tr><tr><td id="a6"><a href="ConstructorUtils.java.html#L245" class="el_method">invokeConstructor(Class, Object[])</a></td><td class="bar" id="b6"><img src="../jacoco-resources/greenbar.gif" width="45" height="10" title="30" alt="30"/></td><td class="ctr2" id="c0">100%</td><td class="bar" id="d4"><img src="../jacoco-resources/greenbar.gif" width="40" height="10" title="4" alt="4"/></td><td class="ctr2" id="e0">100%</td><td class="ctr1" id="f6">0</td><td class="ctr2" id="g4">3</td><td class="ctr1" id="h6">0</td><td class="ctr2" id="i4">7</td><td class="ctr1" id="j6">0</td><td class="ctr2" id="k6">1</td></tr><tr><td id="a9"><a href="ConstructorUtils.java.html#L343" class="el_method">invokeExactConstruct or(Class, Object[])</a></td><td class="bar" id="b7"><img src="../jacoco-resources/greenbar.gif" width="45" height="10" title="30" alt="30"/></td><td class="ctr2" id="c1">100%</td><td class="bar" id="d5"><img src="../jacoco-resources/greenbar.gif" width="40" height="10" title="4" alt="4"/></td><td class="ctr2" id="e1">100%</td><td class="ctr1" id="f7">0</td><td class="ctr2" id="g5">3</td><td class="ctr1" id="h7">0</td><td class="ctr2" id="i5">7</td><td class="ctr1" id="j7">0</td><td class="ctr2" id="k7">1</td></tr><tr><td id="a12"><a href="ConstructorUtils.java.html#L406" class="el_method">toArray(Object)</a></td><td class="bar" id="b8"><img src="../jacoco-resources/greenbar.gif" width="19" height="10" title="13" alt="13"/></td><td class="ctr2" id="c2">100%</td><td class="bar" id="d6"><img src="../jacoco-resources/greenbar.gif" width="20" height="10" title="2" alt="2"/></td><td class="ctr2" id="e2">100%</td><td class="ctr1" id="f8">0</td><td class="ctr2" id="g6">2</td><td class="ctr1 " id="h8">0</td><td class="ctr2" id="i6">4</td><td class="ctr1" id="j8">0</td><td class="ctr2" id="k8">1</td></tr><tr><td id="a1"><a href="ConstructorUtils.java.html#L57" class="el_method">getAccessibleConstructor(Class, Class)</a></td><td class="bar" id="b9"><img src="../jacoco-resources/greenbar.gif" width="16" height="10" title="11" alt="11"/></td><td class="ctr2" id="c3">100%</td><td class="bar" id="d9"/><td class="ctr2" id="e9">n/a</td><td class="ctr1" id="f9">0</td><td class="ctr2" id="g9">1</td><td class="ctr1" id="h9">0</td><td class="ctr2" id="i8">2</td><td class="ctr1" id="j9">0</td><td class="ctr2" id="k9">1</td></tr><tr><td id="a2"><a href="ConstructorUtils.java.html#L74" class="el_method">getAccessibleConstructor(Class, Class[])</a></td><td class="bar" id="b10"><img src="../jacoco-resources/greenbar.gif" width="12" height="10" title="8" alt="8"/></td><td class="ctr2" id="c4">100%</td><td class="bar" id="d10"/><td class="ctr2" id="e10">n/a</td><td class="ctr1" id="f10">0 </td><td class="ctr2" id="g10">1</td><td class="ctr1" id="h10">0</td><td class="ctr2" id="i7">3</td><td class="ctr1" id="j10">0</td><td class="ctr2" id="k10">1</td></tr><tr><td id="a5"><a href="ConstructorUtils.java.html#L218" class="el_method">invokeConstructor(Class, Object)</a></td><td class="bar" id="b11"><img src="../jacoco-resources/greenbar.gif" width="10" height="10" title="7" alt="7"/></td><td class="ctr2" id="c5">100%</td><td class="bar" id="d11"/><td class="ctr2" id="e11">n/a</td><td class="ctr1" id="f11">0</td><td class="ctr2" id="g11">1</td><td class="ctr1" id="h11">0</td><td class="ctr2" id="i9">2</td><td class="ctr1" id="j11">0</td><td class="ctr2" id="k11">1</td></tr><tr><td id="a8"><a href="ConstructorUtils.java.html#L316" class="el_method">invokeExactConstructor(Class, Object)</a></td><td class="bar" id="b12"><img src="../jacoco-resources/greenbar.gif" width="10" height="10" title="7" alt="7"/></td><td class="ctr2" id="c6">100%</td><td class="bar" id="d12"/><td cla ss="ctr2" id="e12">n/a</td><td class="ctr1" id="f12">0</td><td class="ctr2" id="g12">1</td><td class="ctr1" id="h12">0</td><td class="ctr2" id="i10">2</td><td class="ctr1" id="j12">0</td><td class="ctr2" id="k12">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.12.202403310830</span></div></body></html> \ No newline at end of file
