commit 2a5c45f106ca2e26dcc42e72fbf506d3ea86af070046e645684a12348fc29501 Author: Adrian Schröter Date: Fri May 3 11:01:44 2024 +0200 Sync from SUSE:SLFO:Main apache-commons-lang3 revision dc36d7fda2f2abc69150cf5444ceb16d diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/apache-commons-lang3.changes b/apache-commons-lang3.changes new file mode 100644 index 0000000..41cf2da --- /dev/null +++ b/apache-commons-lang3.changes @@ -0,0 +1,304 @@ +------------------------------------------------------------------- +Wed Aug 30 20:57:36 UTC 2023 - Fridrich Strba + +- Break cycle with the new bcel +- Removed patch: + * apache-commons-lang3-junit-bom.patch + + not needed since we install the pom file using the new + %%mvn_install_pom macro which sanitizes the pom file to the + bare runtime dependencies. + +------------------------------------------------------------------- +Wed Dec 29 15:18:48 UTC 2021 - Pedro Monreal + +- Remove the junit bom dependency for now as it breaks the build of + other packages like log4j. + * Add apache-commons-lang3-junit-bom.patch + +------------------------------------------------------------------- +Wed Dec 29 12:49:05 UTC 2021 - David Anes + +- Fix component version in default.properties to 3.12 + +------------------------------------------------------------------- +Fri Dec 24 14:28:12 UTC 2021 - David Anes + +- Updated download URL. +- Update to 3.12.0: + - New features: + * Add BooleanUtils.booleanValues(). + * Add BooleanUtils.primitiveValues(). + * Add StringUtils.containsAnyIgnoreCase(CharSequence, CharSequence...). + * Add StopWatch.getStopTime(). + * More test coverage for CharSequenceUtils. + * Add fluent-style ArraySorter. + * Add and use LocaleUtils.toLocale(Locale) to avoid NPEs. + * Add FailableShortSupplier, handy for JDBC APIs. + * Add JavaVersion.JAVA_17. + * Add missing boolean[] join method. + * Add StringUtils.substringBefore(String, int). + * Add Range.INTEGER. + * Add DurationUtils. + * Introduce the use of @Nonnull, and @Nullable, and the Objects class as a helper tool. + * Add and use true and false String constants. + * Add and use ObjectUtils.requireNonEmpty(). + + - Fixed Bugs: + * Correct implementation of RandomUtils.nextLong(long, long). + * Restore handling of collections for non-JSON ToStringStyle. + * ContextedException Javadoc add missing semicolon. + * Resolve JUnit pioneer transitive dependencies using JUnit BOM. + * NumberUtilsTest - incorrect types in min/max tests. + * Improve StringUtils.stripAccents conversion of remaining accents. + * StringUtils.countMatches - clarify Javadoc. + * Remove redundant argument from substring call. + * BigDecimal is created when you pass it the min and max values. + * ArrayUtils.contains() and indexOf() fail to handle Double.NaN. + * ArrayUtils contains() and indexOf() fail to handle Float.NaN. + * Fix potential NPE in TypeUtils.isAssignable(Type, ParameterizedType, Map, Type>). + * TypeUtils.isAssignable returns wrong result for GenericArrayType and ParameterizedType. + * testGetAllFields and testGetFieldsWithAnnotation sometimes fail. + * Fix Javadoc for SystemUtils.isJavaVersionAtMost(). + * Fix StringUtils.unwrap throws StringIndexOutOfBoundsException. + * Fix formatting of isAnyBlank() and isAnyEmpty(). + * TypeUtils. containsTypeVariables does not support GenericArrayType. + * Javadoc of some methods incorrectly refers to another method. + * Refine StringUtils.lastIndexOfIgnoreCase. + * Refine StringUtils.abbreviate. + * Refine StringUtils.isNumericSpace. + * Refine StringUtils.deleteWhitespace. + * Correction in Javadoc of some methods. + * Javadoc for RandomStringUtils.random() letters, numbers parameters is wrong. + * Correct markup in Javadoc for unbalanced braces. + * MethodUtils.invokeMethod NullPointerException in case of null in args list. + * Fix 2 digit week year formatting. + * Fix broken Javadoc links to commons-text. + * Add and use ThreadUtils.sleep(Duration). + * Add and use ThreadUtils.join(Thread, Duration). + * Add ObjectUtils.wait(Duration). + + - Changes: + * ArrayUtils.toPrimitive(Object) does not support boolean and other types. + * Enable Dependabot. + * Bump junit-jupiter from 5.6.2 to 5.7.0. + * Bump spotbugs from 4.1.2 to 4.2.1. + * Bump spotbugs-maven-plugin from 4.0.0 to 4.2.0. + * Bump biz.aQute.bndlib from 5.1.1 to 5.3.0. + * Bump junit-pioneer from 0.6.0 to 1.1.0. + * Bump checkstyle from 8.34 to 8.40. + * Bump actions/checkout from v2.3.1 to v2.3.4. + * Bump actions/setup-java from v1.4.0 to v1.4.2. + * Update commons.jacoco.version 0.8.5 to 0.8.6 (Fixes Java 15 builds). + * Update maven-surefire-plugin 2.22.2 -> 3.0.0-M5. + * Bump maven-pmd-plugin from 3.13.0 to 3.14.0. + * Bump jmh.version from 1.21 to 1.27. + * Update commons.japicmp.version 0.14.3 -> 0.15.2. + * Processor.java: check enum equality with == instead of .equals() method. + * Bump junit-pioneer from 1.1.0 to 1.3.0. + * Bump maven-checkstyle-plugin from 3.1.1 to 3.1.2. + * Bump actions/cache from v2 to v2.1.4. + * Bump junit-bom from 5.7.0 to 5.7.1. + * Minor Improvements. + * Minor Improvement: Add final variable.try to make the code read-only. + * Minor Improvement: Remove redundant initializer. + * Use own validator ObjectUtils.anyNull to check null String input. + +- From 3.11 Update: + - New features: + * Add ArrayUtils.isSameLength() to compare more array types. + * Added the Locks class as a convenient possibility to deal with locked objects. + * Add to Functions: FailableBooleanSupplier, FailableIntSupplier, FailableLongSupplier, FailableDoubleSupplier, and so on. + * Add ArrayUtils.get(T[], index, T) to provide an out-of-bounds default value. + * Add JavaVersion enum constants for Java 14 and 15. + * Add JavaVersion enum constants for Java 16. + * Use Java 8 lambdas and Map operations. + * Change removeLastFieldSeparator to use endsWith. + * Change a Pattern to a static final field, for not letting it compile each time the function invoked. + * Add ImmutablePair factory methods left() and right(). + * Add ObjectUtils.toString(Object, Supplier). + * Add org.apache.commons.lang3.StringUtils.substringAfter(String, int). + * Add org.apache.commons.lang3.StringUtils.substringAfterLast(String, int). + + - Fixed Bugs: + * Fix Javadoc for StringUtils.appendIfMissingIgnoreCase(). + * Refine Javadoc. + * Fix typos + * Ignored exception `ignored`, should not be called so. + * StringUtils.replaceEachRepeatedly gives IllegalStateException. + * [JSON string for maps] ToStringBuilder.reflectionToString doesnt render nested maps correctly. + * Correct Javadocs of methods that use Validate.notNull() and replace some uses of Validate.isTrue() with Validate.notNull(). + * Add allNull() and anyNull() methods to ObjectUtils. + + - Changes: + * Refine test output for FastDateParserTest + * CharSequenceUtils.lastIndexOf : remake it + * remove encoding and docEncoding and use inherited values from commons-parent + * Simplify null checks in Pair.hashCode() using Objects.hashCode(). + * Simplify null checks in Triple.hashCode() using Objects.hashCode(). + * Simplify some if statements in StringUtils. + * Simplify a null check in the private replaceEach() method of StringUtils. + * Replace some usages of the ternary operator with calls to Math.max() and Math.min(). + * (Javadoc) Fix return tag for throwableOf*() methods. + * CharSequenceUtils.regionMatches is wrong dealing with Georgian. + * Optimize ArrayUtils::isArrayIndexValid method. + * Use List.sort instead of Collection.sort. + * Use StandardCharsets.UTF_8. + * Use Collections.singletonList insteadof Arrays.asList when there be only one element. + * Change array style from `int a[]` to `int[] a`. + * Change from addAll to constructors for some List. + * Simplify if as some conditions are covered by others. + * Fixed Javadocs for setTestRecursive(). + * ToStringBuilder.reflectionToString - Wrong JSON format when object has a List of Enum. + * Make org.apache.commons.lang3.CharSequenceUtils.toCharArray(CharSequence) public. + * org.apache.commons:commons-parent 50 -> 51. + * org.junit-pioneer:junit-pioneer 0.5.4 -> 0.6.0. + * org.junit.jupiter:junit-jupiter 5.6.0 -> 5.6.2. + * com.github.spotbugs:spotbugs 4.0.0 -> 4.0.6. + * com.puppycrawl.tools:checkstyle 8.29 -> 8.34. + * commons.surefire.version 3.0.0-M4 -> 3.0.0-M5.. + +- From 3.10 Update: + - New features: + * Add ExceptionUtils.throwableOfType(Throwable, Class) and friends. + * Add EMPTY_ARRAY constants to classes in org.apache.commons.lang3.tuple. + * Add null-safe StringUtils APIs to wrap String#getBytes([Charset|String]). + * Add zero arg constructor for org.apache.commons.lang3.NotImplementedException. + * Add ArrayUtils.addFirst() methods. + * Add Range.fit(T) to fit a value into a range. + * Added Functions.as*, and tests thereof, as suggested by Peter Verhas + * Add getters for lhs and rhs objects in DiffResult. + * Generify builder classes Diffable, DiffBuilder, and DiffResult. + * Add ClassLoaderUtils with toString() implementations. + * Add null-safe APIs as StringUtils.toRootLowerCase(String) and StringUtils.toRootUpperCase(String). + * Add org.apache.commons.lang3.time.Calendars. + * Add EnumUtils getEnum() methods with default values. + * Added indexesOf methods and simplified removeAllOccurences. + * Add support of lambda value evaluation for defaulting methods. + * Add factory methods to Pair classes with Map.Entry input. + * Add StopWatch convenience APIs to format times and create a simple instance. + * Allow a StopWatch to carry an optional message. + * Add ComparableUtils. + * Add org.apache.commons.lang3.SystemUtils.getUserName(). + * Add ObjectToStringComparator. + * Add org.apache.commons.lang3.arch.Processor.Arch.getLabel(). + * Add IS_JAVA_14 and IS_JAVA_15 to org.apache.commons.lang3.SystemUtils. + * ObjectUtils: Get first non-null supplier value. + * Added the Streams class, and Functions.stream() as an accessor thereof. + + - Fixed Bugs: + * Make test more stable by wrapping assertions in hashset. + * Generate Javadoc jar on build. + * Trivial: year of release for 3.9 says 2018, should be 2019. + * Use synchronize on a set created with Collections.synchronizedSet before iterating. + * StringUtils.unwrap incorrect throw StringIndexOutOfBoundsException. + * StringIndexOutOfBoundsException in StringUtils.replaceIgnoreCase. + * StringUtils.removeIgnoreCase("?a", "a") throws IndexOutOfBoundsException. + * Corrected usage examples in Javadocs. + * StringUtils abbreviate returns String of length greater than maxWidth. + * Test may fail due to a different order of fields returned by reflection api. + * Sort fields in ReflectionToStringBuilder for deterministic order. + * MethodUtils will throw a NPE if invokeMethod() is called for a var-args method. + * MethodUtils.getAnnotation() with searchSupers = true does not work if super is generic. + + - Changes: + * Remove redundant if statements in join methods. + * commons.japicmp.version 0.13.1 -> 0.14.1. + * junit-jupiter 5.5.0 -> 5.5.1. + * junit-jupiter 5.5.1 -> 5.5.2. + * Improve Javadoc based on the discussion of the GitHub PR. + * maven-checkstyle-plugin 3.0.0 -> 3.1.0. + * Update documentation related to the issue LANG-696. + * AnnotationUtils little cleanup. + * Update test dependency: org.easymock:easymock 4.0.2 -> 4.1. + * Update test dependency: org.hamcrest:hamcrest 2.1 -> 2.2. + * Update test dependency: org.junit-pioneer:junit-pioneer 0.3.0 -> 0.4.2. + * Update build dependency: com.puppycrawl.tools:checkstyle 8.18 -> 8.27. + * Update POM parent: org.apache.commons:commons-parent 48 -> 50. + * BooleanUtils Javadoc. + * Functions Javadoc. + * org.easymock:easymock 4.1 -> 4.2. + * org.junit-pioneer:junit-pioneer 0.4.2 -> 0.5.4. + * org.junit.jupiter:junit-jupiter 5.5.2 -> 5.6.0. + * Use Javadoc {@code} instead of pre tags. + * ExceptionUtilsTest to 100%. + * Reuse own code in Functions.java. + * Avoid unnecessary allocation in StringUtils.wrapIfMissing. + * Internally use Validate.notNull(foo, ...) instead of Validate.isTrue(foo != null, ...). + * Add 1 and 0 in toBooleanObject(final String str). + * Remove an redundant argument check in NumberUtils. + * Deprecate org.apache.commons.lang3.ArrayUtils.removeAllOccurences(*) for org.apache.commons.lang3.ArrayUtils.removeAllOccurrences(*). + +------------------------------------------------------------------- +Fri Apr 23 20:23:47 UTC 2021 - Ferdinand Thiessen + +- Fixed SPEC file: Replaced broken URL +- Update to 3.9 + * Requires jdk >= 1.8 + * Fixed issues with java 12 + * Add more SystemUtils.IS_JAVA_XX variants + * Adding the Functions class + * Add @FunctionalInterface to ThreadPredicate and ThreadGroupPredicate + * Add isEmpty method to ObjectUtils + * null-safe StringUtils.valueOf(char[]) to delegate to + String.valueOf(char[]). + * Add API org.apache.commons.lang3.SystemUtils.isJavaVersionAtMost(JavaVersion) + * Consolidate the StringUtils equals and equalsIgnoreCase + +------------------------------------------------------------------- +Tue Feb 16 19:47:33 UTC 2021 - Fridrich Strba + +- Add OSGi manifest + +------------------------------------------------------------------- +Mon Mar 25 17:41:59 UTC 2019 - Fridrich Strba + +- Remove pom parent, since we don't use it when not building with + maven + +------------------------------------------------------------------- +Mon Feb 4 06:21:14 UTC 2019 - Fridrich Strba + +- Clean-up the spec file and install less jar symlinks + +------------------------------------------------------------------- +Mon Oct 22 10:24:43 UTC 2018 - Fridrich Strba + +- Build commons-lang3-3.8.1 using modified build.xml and + default.properties from 3.4. +- Removed patch: + * commons-lang3-3.4-javadoc.patch + - integrated in the build.xml +- Use source and target version 1.7, since the code contains + diamond operator. + +------------------------------------------------------------------- +Wed May 2 12:22:44 UTC 2018 - tchvatal@suse.com + +- Format with spec-cleaner + +------------------------------------------------------------------- +Mon Oct 9 06:45:42 UTC 2017 - fstrba@suse.com + +- Modified patch: + * commons-lang3-3.4-javadoc.patch + + Fix build with jdk9 +- Allow building with jdk9 too +- Run fdupes on javadoc + +------------------------------------------------------------------- +Thu Sep 14 12:45:49 UTC 2017 - fstrba@suse.com + +- Specify java target and source level 1.6 +- Force building with jdk < 1.9, since jdk9's javadoc chocks on one + class file (internal error) + +------------------------------------------------------------------- +Fri May 19 09:59:33 UTC 2017 - pcervinka@suse.com + +- New build dependency: javapackages-local + +------------------------------------------------------------------- +Sun Jan 24 12:45:36 UTC 2016 - p.drouand@gmail.com + +- Initial release (version 3.4) + diff --git a/apache-commons-lang3.spec b/apache-commons-lang3.spec new file mode 100644 index 0000000..5d4a212 --- /dev/null +++ b/apache-commons-lang3.spec @@ -0,0 +1,101 @@ +# +# spec file +# +# Copyright (c) 2023 SUSE LLC +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +%define base_name lang3 +%define short_name commons-%{base_name} +Name: apache-%{short_name} +Version: 3.12.0 +Release: 0 +Summary: Apache Commons Lang Package +License: Apache-2.0 +Group: Development/Libraries/Java +URL: https://commons.apache.org/proper/commons-lang/ +Source0: https://dlcdn.apache.org/commons/lang/source/%{short_name}-%{version}-src.tar.gz +Source1: build.xml +Source2: default.properties +BuildRequires: ant +BuildRequires: fdupes +BuildRequires: java-devel >= 1.8 +BuildRequires: javapackages-local >= 6 +#!BuildIgnore: bcel +#!BuildIgnore: xalan-j2 +#!BuildIgnore: xerces-j2 +Provides: %{short_name} = %{version}-%{release} +BuildArch: noarch + +%description +The standard Java libraries fail to provide enough methods for +manipulation of its core classes. The Commons Lang Component provides +these extra methods. + +The Commons Lang Component provides a host of helper utilities for the +java.lang API, notably String manipulation methods, basic numerical +methods, object reflection, creation and serialization, and System +properties. Additionally it contains an inheritable enum type, an +exception structure that supports multiple types of nested-Exceptions +and a series of utilities dedicated to help with building methods, such +as hashCode, toString and equals. + +%package javadoc +Summary: Javadoc for %{name} +Group: Documentation/HTML + +%description javadoc +Javadoc for %{name}. + +%prep +%setup -q -n %{short_name}-%{version}-src + +cp %{SOURCE1} . +cp %{SOURCE2} . +sed -i 's/\r//' *.txt + +%build +export OPT_JAR_LIST=`cat %{_sysconfdir}/ant.d/junit` +export CLASSPATH= +ant \ + -Dcompile.source=1.8 -Dcompile.target=1.8 \ + -Dfinal.name=%{short_name} \ + jar javadoc + +%install + +# jars +install -dm 755 %{buildroot}%{_javadir} +install -m 0644 target/%{short_name}.jar %{buildroot}%{_javadir}/%{name}.jar +ln -sf %{name}.jar %{buildroot}%{_javadir}/%{short_name}.jar + +# pom +install -dm 755 %{buildroot}%{_mavenpomdir} +%{mvn_install_pom} pom.xml %{buildroot}%{_mavenpomdir}/%{name}.pom +%add_maven_depmap %{name}.pom %{name}.jar + +# javadoc +install -dm 755 %{buildroot}%{_javadocdir}/%{name} +cp -pr target/apidocs/* %{buildroot}%{_javadocdir}/%{name}/ +%fdupes -s %{buildroot}%{_javadocdir}/%{name}/ + +%files -f .mfiles +%license LICENSE.txt NOTICE.txt +%doc RELEASE-NOTES.txt +%{_javadir}/%{short_name}.jar + +%files javadoc +%{_javadocdir}/%{name} + +%changelog diff --git a/build.xml b/build.xml new file mode 100644 index 0000000..8254c0e --- /dev/null +++ b/build.xml @@ -0,0 +1,242 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/commons-lang3-3.12.0-src.tar.gz b/commons-lang3-3.12.0-src.tar.gz new file mode 100644 index 0000000..36f19bb --- /dev/null +++ b/commons-lang3-3.12.0-src.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb73e7475cb76fc400a58da92b8d8d930717424917f96b80bb70f4366fd8ac25 +size 1072858 diff --git a/default.properties b/default.properties new file mode 100644 index 0000000..8512e6c --- /dev/null +++ b/default.properties @@ -0,0 +1,90 @@ +# +# 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. +# + +# $Id: default.properties 1671054 2015-04-03 12:28:16Z britter $ + +# The location of the "junit.jar" JAR file +junit.jar = ${junit.home}/junit-5.5.2.jar + +# The location of the Easymock jar +easymock.jar = ${easymock.home}/easymock-3.3.1.jar + +# The location of the Commons-IO jar +commons-io.jar = ${commons-io.home}/commons-io-2.4.jar + +# The location of Hamcrest jar +hamcrest.jar = ${hamcrest.home}/hamcrest-all-1.3.jar + +# Whether or not to fork tests +junit.fork = true + +# The name of this component +component.name = commons-lang3 + +# The primary package name of this component +component.package = org.apache.commons.lang3 + +# The title of this component +component.title = Core Language Utilities + +# The current version number of this component +component.version = 3.12 + +# The name that is used to create the jar file +final.name = ${component.name}-${component.version} + +# The base directory for compilation targets +build.home = target + +# The base directory for component configuration files +conf.home = src/conf + +# The base directory for component sources +source.home = src/main/java + +# The base directory for unit test sources +test.home = src/test/java + +# Should Java compilations set the 'debug' compiler option? +compile.debug = true + +# Should Java compilations set the 'deprecation' compiler option? +compile.deprecation = true + +# Should Java compilations set the 'optimize' compiler option? +compile.optimize = true + +# Generate class files for specific VM version (e.g., 1.1 or 1.2). +# Note that the default value depends on the JVM that is running Ant. +# In particular, if you use JDK 1.4+ the generated classes will not be usable +# for a 1.1 Java VM unless you explicitly set this attribute to the value 1.1 +# (which is the default value for JDK 1.1 to 1.3). +compile.target = 1.8 + +# Specifies the source version for the Java compiler. +# Corresponds to the source attribute for the ant javac task. +# Valid values are 1.3, 1.4, 1.5. +compile.source = 1.8 + +# Specifies the source encoding. +compile.encoding = ISO-8859-1 + +# Should all tests fail if one does? +test.failonerror = true + +# The test runner to execute +test.runner = junit.textui.TestRunner