Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package reload4j for openSUSE:Factory 
checked in at 2022-04-13 21:04:15
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/reload4j (Old)
 and      /work/SRC/openSUSE:Factory/.reload4j.new.1900 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "reload4j"

Wed Apr 13 21:04:15 2022 rev:4 rq:969222 version:1.2.20

Changes:
--------
--- /work/SRC/openSUSE:Factory/reload4j/reload4j.changes        2022-03-28 
16:59:52.432913352 +0200
+++ /work/SRC/openSUSE:Factory/.reload4j.new.1900/reload4j.changes      
2022-04-13 21:04:38.768549897 +0200
@@ -1,0 +2,8 @@
+Mon Apr 11 13:51:49 UTC 2022 - Fridrich Strba <fst...@suse.com>
+
+- Update to upstream version 1.2.20
+  * For enabled logging statements, the performance of iterating
+    on appenders attached to a logger has been significantly
+    improved. 
+
+-------------------------------------------------------------------

Old:
----
  reload4j-1.2.19.tar.xz

New:
----
  reload4j-1.2.20.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ reload4j.spec ++++++
--- /var/tmp/diff_new_pack.1NrYwk/_old  2022-04-13 21:04:39.320550338 +0200
+++ /var/tmp/diff_new_pack.1NrYwk/_new  2022-04-13 21:04:39.324550341 +0200
@@ -18,7 +18,7 @@
 
 %bcond_with tests
 Name:           reload4j
-Version:        1.2.19
+Version:        1.2.20
 Release:        0
 Summary:        Revival of EOLed log4j 1.x
 License:        Apache-2.0

++++++ _service ++++++
--- /var/tmp/diff_new_pack.1NrYwk/_old  2022-04-13 21:04:39.356550367 +0200
+++ /var/tmp/diff_new_pack.1NrYwk/_new  2022-04-13 21:04:39.360550370 +0200
@@ -2,7 +2,7 @@
        <service name="tar_scm" mode="disabled">
                <param name="scm">git</param>
                <param name="url">https://github.com/qos-ch/reload4j.git</param>
-               <param name="revision">v_1.2.19</param>
+               <param name="revision">v_1.2.20</param>
                <param name="match-tag">v_*</param>
                <param name="versionformat">@PARENT_TAG@</param>
                <param name="versionrewrite-pattern">v_(.*)</param>

++++++ reload4j-1.2.19.tar.xz -> reload4j-1.2.20.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/reload4j-1.2.19/README.md 
new/reload4j-1.2.20/README.md
--- old/reload4j-1.2.19/README.md       2022-02-08 09:07:33.000000000 +0100
+++ new/reload4j-1.2.20/README.md       2022-04-05 22:14:47.000000000 +0200
@@ -1,6 +1,6 @@
 
 [![Maven 
Central](https://maven-badges.herokuapp.com/maven-central/ch.qos.reload4j/reload4j/badge.svg)](https://maven-badges.herokuapp.com/maven-central/ch.qos.reload4j/reload4j)
-[![CI 
Status](https://github.com/qos-ch/reload4j/workflows/CI/badge.svg?branch=branch_1.2.18)](https://github.com/qos-ch/reload4j/actions?query=branch%3Abranch_1.2.18)
+[![CI 
Status](https://github.com/qos-ch/reload4j/workflows/CI/badge.svg?branch=master)](https://github.com/qos-ch/reload4j/actions?query=branch%3Amaster)
 
 ## What is reload4j?
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/reload4j-1.2.19/pom.xml new/reload4j-1.2.20/pom.xml
--- old/reload4j-1.2.19/pom.xml 2022-02-08 09:07:33.000000000 +0100
+++ new/reload4j-1.2.20/pom.xml 2022-04-05 22:14:47.000000000 +0200
@@ -22,7 +22,7 @@
   <artifactId>reload4j</artifactId>
   <packaging>jar</packaging>
   <name>reload4j</name>
-  <version>1.2.19</version>
+  <version>1.2.20</version>
   <description>Reload4j revives EOLed log4j 1.x</description> 
 
   <url>https://reload4j.qos.ch</url>
@@ -48,7 +48,7 @@
   
   <properties>
     <!-- yyyy-MM-dd'T'HH:mm:ss'Z' -->
-    
<project.build.outputTimestamp>2022-02-08T08:07:00Z</project.build.outputTimestamp>
    
+    
<project.build.outputTimestamp>2022-04-05T21:13:00Z</project.build.outputTimestamp>
    
     <jdk.version>1.5</jdk.version>
     <maven.compiler.source>${jdk.version}</maven.compiler.source>
     <maven.compiler.target>${jdk.version}</maven.compiler.target>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/reload4j-1.2.19/src/main/java/org/apache/log4j/helpers/AppenderAttachableImpl.java
 
new/reload4j-1.2.20/src/main/java/org/apache/log4j/helpers/AppenderAttachableImpl.java
--- 
old/reload4j-1.2.19/src/main/java/org/apache/log4j/helpers/AppenderAttachableImpl.java
      2022-02-08 09:07:33.000000000 +0100
+++ 
new/reload4j-1.2.20/src/main/java/org/apache/log4j/helpers/AppenderAttachableImpl.java
      2022-04-05 22:14:47.000000000 +0200
@@ -17,12 +17,12 @@
 
 package org.apache.log4j.helpers;
 
-import org.apache.log4j.spi.AppenderAttachable;
-import org.apache.log4j.spi.LoggingEvent;
+import java.util.Collections;
+import java.util.Enumeration;
 
 import org.apache.log4j.Appender;
-import java.util.Vector;
-import java.util.Enumeration;
+import org.apache.log4j.spi.AppenderAttachable;
+import org.apache.log4j.spi.LoggingEvent;
 
 /**
  * A straightforward implementation of the {@link AppenderAttachable} 
interface.
@@ -32,8 +32,7 @@
  */
 public class AppenderAttachableImpl implements AppenderAttachable {
 
-    /** Array of appenders. */
-    protected Vector appenderList;
+    final private COWArrayList<Appender> appenderList = new 
COWArrayList<Appender>(new Appender[0]);
 
     /**
      * Attach an appender. If the appender is already in the list in won't be 
added
@@ -44,11 +43,7 @@
        if (newAppender == null)
            return;
 
-       if (appenderList == null) {
-           appenderList = new Vector(1);
-       }
-       if (!appenderList.contains(newAppender))
-           appenderList.addElement(newAppender);
+       appenderList.addIfAbsent(newAppender);
     }
 
     /**
@@ -56,14 +51,11 @@
      */
     public int appendLoopOnAppenders(LoggingEvent event) {
        int size = 0;
-       Appender appender;
-
-       if (appenderList != null) {
-           size = appenderList.size();
-           for (int i = 0; i < size; i++) {
-               appender = (Appender) appenderList.elementAt(i);
-               appender.doAppend(event);
-           }
+       final Appender[] appenderArray = appenderList.asTypedArray();
+       final int len = appenderArray.length;
+       for (int i = 0; i < len; i++) {
+           appenderArray[i].doAppend(event);
+           size++;
        }
        return size;
     }
@@ -78,7 +70,7 @@
        if (appenderList == null)
            return null;
        else
-           return appenderList.elements();
+           return Collections.enumeration(appenderList); 
     }
 
     /**
@@ -92,12 +84,10 @@
        if (appenderList == null || name == null)
            return null;
 
-       int size = appenderList.size();
-       Appender appender;
-       for (int i = 0; i < size; i++) {
-           appender = (Appender) appenderList.elementAt(i);
-           if (name.equals(appender.getName()))
+       for (Appender appender : appenderList) {
+           if (name.equals(appender.getName())) {
                return appender;
+           }
        }
        return null;
     }
@@ -112,10 +102,7 @@
        if (appenderList == null || appender == null)
            return false;
 
-       int size = appenderList.size();
-       Appender a;
-       for (int i = 0; i < size; i++) {
-           a = (Appender) appenderList.elementAt(i);
+       for (Appender a : appenderList) {
            if (a == appender)
                return true;
        }
@@ -126,15 +113,10 @@
      * Remove and close all previously attached appenders.
      */
     public void removeAllAppenders() {
-       if (appenderList != null) {
-           int len = appenderList.size();
-           for (int i = 0; i < len; i++) {
-               Appender a = (Appender) appenderList.elementAt(i);
-               a.close();
-           }
-           appenderList.removeAllElements();
-           appenderList = null;
+       for (Appender a : appenderList) {
+           a.close();
        }
+       appenderList.clear();
     }
 
     /**
@@ -143,7 +125,7 @@
     public void removeAppender(Appender appender) {
        if (appender == null || appenderList == null)
            return;
-       appenderList.removeElement(appender);
+       appenderList.remove(appender);
     }
 
     /**
@@ -153,10 +135,10 @@
     public void removeAppender(String name) {
        if (name == null || appenderList == null)
            return;
-       int size = appenderList.size();
-       for (int i = 0; i < size; i++) {
-           if (name.equals(((Appender) appenderList.elementAt(i)).getName())) {
-               appenderList.removeElementAt(i);
+
+       for (Appender a : appenderList.asTypedArray()) {
+           if (name.equals((a).getName())) {
+               appenderList.remove(a);
                break;
            }
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/reload4j-1.2.19/src/main/java/org/apache/log4j/helpers/COWArrayList.java 
new/reload4j-1.2.20/src/main/java/org/apache/log4j/helpers/COWArrayList.java
--- 
old/reload4j-1.2.19/src/main/java/org/apache/log4j/helpers/COWArrayList.java    
    1970-01-01 01:00:00.000000000 +0100
+++ 
new/reload4j-1.2.20/src/main/java/org/apache/log4j/helpers/COWArrayList.java    
    2022-04-05 22:14:47.000000000 +0200
@@ -0,0 +1,248 @@
+/*
+ * Copyright 2015-2022 QOS.CH Sarl (Switzerland)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.log4j.helpers;
+
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+/**
+ * A GC-free lock-free thread-safe implementation of the {@link List} interface
+ * for use cases where iterations over the list vastly out-number modifications
+ * on the list.
+ * 
+ * <p>
+ * Underneath, it wraps an instance of {@link CopyOnWriteArrayList} and exposes
+ * a copy of the array used by that instance.
+ * 
+ * <p>
+ * Typical use:
+ * </p>
+ * 
+ * <pre>
+ *   COWArrayList&lt;Integer&gt; list = new COWArrayList(new Integer[0]);
+ *   
+ *   // modify the list
+ *   list.add(1);
+ *   list.add(2);
+ *   
+ *   Integer[] intArray = list.asTypedArray();
+ *   int sum = 0;
+ *   // iteration over the array is thread-safe
+ *   for(int i = 0; i &lt; intArray.length; i++) {
+ *     sum != intArray[i];
+ *   }
+ * </pre>
+ * 
+ * <p>
+ * If the list is not modified, then repetitive calls to
+ * {@link #asTypedArray()}, {@link #toArray()} and {@link #toArray(Object[])}
+ * are guaranteed to be GC-free. Note that iterating over the list using
+ * {@link COWArrayList#iterator()} and {@link COWArrayList#listIterator()} are
+ * <b>not</b> GC-free.
+ * </p>
+ * 
+ * @author Ceki Gulcu
+ * @since 1.2.20
+ */
+public class COWArrayList<E> implements List<E> {
+    
+    AtomicBoolean fresh = new AtomicBoolean(false);
+    CopyOnWriteArrayList<E> underlyingList = new CopyOnWriteArrayList<E>();
+    E[] ourCopy;
+    final E[] modelArray;
+
+    public COWArrayList(E[] modelArray) {
+       this.modelArray = modelArray;
+    }
+  
+    @Override
+    public int size() {
+       return underlyingList.size();
+    }
+
+    @Override
+    public boolean isEmpty() {
+       return underlyingList.isEmpty();
+    }
+
+    @Override
+    public boolean contains(Object o) {
+       return underlyingList.contains(o);
+    }
+
+    @Override
+    public Iterator<E> iterator() {
+       return underlyingList.iterator();
+    }
+
+    private void refreshCopyIfNecessary() {
+       if (!isFresh()) {
+           refreshCopy();
+       }
+    }
+
+    private boolean isFresh() {
+       return fresh.get();
+    }
+
+    private void refreshCopy() {
+       ourCopy = underlyingList.toArray(modelArray);
+       fresh.set(true);
+    }
+
+    @Override
+    public Object[] toArray() {
+       refreshCopyIfNecessary();
+       return ourCopy;
+    } 
+
+    @SuppressWarnings("unchecked")
+    @Override
+    public <T> T[] toArray(T[] a) {
+       refreshCopyIfNecessary();
+       return (T[]) ourCopy;
+    }
+
+    /**
+     * Return an array of type E[]. The returned array is intended to be 
iterated
+     * over. If the list is modified, subsequent calls to this method will 
return
+     * different/modified array instances.
+     * 
+     * @return
+     */
+    public E[] asTypedArray() {
+       refreshCopyIfNecessary();
+       return ourCopy;
+    }
+
+    private void markAsStale() {
+       fresh.set(false);
+    }
+
+    public void addIfAbsent(E e) {
+       underlyingList.addIfAbsent(e);
+       markAsStale();
+    }
+
+    @Override
+    public boolean add(E e) {
+       boolean result = underlyingList.add(e);
+       markAsStale();
+       return result;
+    }
+
+    @Override
+    public boolean remove(Object o) {
+       boolean result = underlyingList.remove(o);
+       markAsStale();
+       return result;
+    }
+
+    @Override
+    public boolean containsAll(Collection<?> c) {
+       return underlyingList.containsAll(c);
+    }
+
+    @Override
+    public boolean addAll(Collection<? extends E> c) {
+       markAsStale();
+       boolean result = underlyingList.addAll(c);
+       return result;
+    }
+
+    @Override
+    public boolean addAll(int index, Collection<? extends E> col) {
+       markAsStale();
+       boolean result = underlyingList.addAll(index, col);
+       return result;
+    }
+
+    @Override
+    public boolean removeAll(Collection<?> col) {
+       markAsStale();
+       boolean result = underlyingList.removeAll(col);
+       return result;
+    }
+
+    @Override
+    public boolean retainAll(Collection<?> col) {
+       markAsStale();
+       boolean result = underlyingList.retainAll(col);
+       return result;
+    }
+
+    @Override
+    public void clear() {
+       markAsStale();
+       underlyingList.clear();
+    }
+
+    @Override
+    public E get(int index) {
+       refreshCopyIfNecessary();
+       return (E) ourCopy[index];
+    }
+
+    @Override
+    public E set(int index, E element) {
+       markAsStale();
+       E e = underlyingList.set(index, element);
+       return e;
+    }
+
+    @Override
+    public void add(int index, E element) {
+       markAsStale();
+       underlyingList.add(index, element);
+    }
+
+    @Override
+    public E remove(int index) {
+       markAsStale();
+       E e = (E) underlyingList.remove(index);
+       return e;
+    }
+
+    @Override
+    public int indexOf(Object o) {
+       return underlyingList.indexOf(o);
+    }
+
+    @Override
+    public int lastIndexOf(Object o) {
+       return underlyingList.lastIndexOf(o);
+    }
+
+    @Override
+    public ListIterator<E> listIterator() {
+       return underlyingList.listIterator();
+    }
+
+    @Override
+    public ListIterator<E> listIterator(int index) {
+       return underlyingList.listIterator(index);
+    }
+
+    @Override
+    public List<E> subList(int fromIndex, int toIndex) {
+       return underlyingList.subList(fromIndex, toIndex);
+    }
+
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/reload4j-1.2.19/src/main/resources/org/apache/log4j/lf5/config/defaultconfig.properties
 
new/reload4j-1.2.20/src/main/resources/org/apache/log4j/lf5/config/defaultconfig.properties
--- 
old/reload4j-1.2.19/src/main/resources/org/apache/log4j/lf5/config/defaultconfig.properties
 2022-02-08 09:07:33.000000000 +0100
+++ 
new/reload4j-1.2.20/src/main/resources/org/apache/log4j/lf5/config/defaultconfig.properties
 1970-01-01 01:00:00.000000000 +0100
@@ -1,31 +0,0 @@
-# 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.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# For the general syntax of property based configuration files see the
-# documenation of org.apache.log4j.PropertyConfigurator.
-
-# The root category uses the appender called A1. Since no priority is
-# specified, the root category assumes the default priority for root
-# which is DEBUG in log4j. The root category is the only category that
-# has a default priority. All other categories need not be assigned a
-# priority in which case they inherit their priority from the
-# hierarchy.
-
-log4j.rootCategory=, A1
-
-# A1 is set to be a LogMonitorAppender which outputs to a swing
-# logging console. 
-  
-log4j.appender.A1=org.apache.log4j.lf5.LF5Appender
Binary files 
old/reload4j-1.2.19/src/main/resources/org/apache/log4j/lf5/viewer/images/channelexplorer_new.gif
 and 
new/reload4j-1.2.20/src/main/resources/org/apache/log4j/lf5/viewer/images/channelexplorer_new.gif
 differ
Binary files 
old/reload4j-1.2.19/src/main/resources/org/apache/log4j/lf5/viewer/images/channelexplorer_satellite.gif
 and 
new/reload4j-1.2.20/src/main/resources/org/apache/log4j/lf5/viewer/images/channelexplorer_satellite.gif
 differ
Binary files 
old/reload4j-1.2.19/src/main/resources/org/apache/log4j/lf5/viewer/images/lf5_small_icon.gif
 and 
new/reload4j-1.2.20/src/main/resources/org/apache/log4j/lf5/viewer/images/lf5_small_icon.gif
 differ

++++++ reload4j-build.xml ++++++
--- /var/tmp/diff_new_pack.1NrYwk/_old  2022-04-13 21:04:39.588550552 +0200
+++ /var/tmp/diff_new_pack.1NrYwk/_new  2022-04-13 21:04:39.588550552 +0200
@@ -10,7 +10,7 @@
 
   <property name="project.groupId" value="ch.qos.reload4j"/>
   <property name="project.artifactId" value="reload4j"/>
-  <property name="project.version" value="1.2.19"/>
+  <property name="project.version" value="1.2.20"/>
 
   <property name="compiler.source" value="1.8"/>
   <property name="compiler.target" value="${compiler.source}"/>

Reply via email to