%global do_not_test 1
Name:                dnsjava
Version:             3.5.3
Release:             3
Summary:             Java DNS implementation
License:             BSD and MIT
URL:                 http://www.dnsjava.org/
Source0:             https://github.com/dnsjava/dnsjava/archive/v%{version}/%{name}-%{version}.tar.gz
Patch0:              0001-Remove-mix-of-how-SetResponse-is-constructed.patch
Patch1:              0001-CVE-2024-25638-Message-normalization.patch
BuildRequires:       aqute-bnd javapackages-local
BuildRequires:       maven-local
BuildRequires:       mvn(org.apache.felix:maven-bundle-plugin)
BuildRequires:       mvn(org.eclipse.aether:aether-connector-basic)
BuildRequires:       mvn(org.eclipse.aether:aether-transport-wagon)
BuildRequires:       mvn(org.apache.maven.wagon:wagon-http)
BuildRequires:       mvn(org.apache.maven.wagon:wagon-provider-api)

BuildArch:           noarch
%description
dnsjava is an implementation of DNS in Java. It supports all of the common
record types and the DNSSEC types. It can be used for queries, zone transfers,
and dynamic updates. It includes a cache which can be used by clients, and a
minimal implementation of a server. It supports TSIG authenticated messages,
partial DNSSEC verification, and EDNS0.
dnsjava provides functionality above and beyond that of the InetAddress class.
Since it is written in pure Java, dnsjava is fully threadable, and in many
cases is faster than using InetAddress.
dnsjava provides both high and low level access to DNS. The high level
functions perform queries for records of a given name, type, and class, and
return an array of records. There is also a clone of InetAddress, which is
even simpler. A cache is used to reduce the number of DNS queries sent. The
low level functions allow direct manipulation of dns messages and records, as
well as allowing additional resolver properties to be set.
A 'dig' clone and a dynamic update program are included, as well as a
primary-only server.

%package javadoc
Summary:             Javadoc for %{name}
%description javadoc
Javadoc for %{name}.

%prep
%setup -q
rm -rf doc/
find -name "*.class" -print -delete
find -name "*.jar" -print -delete
%patch0 -p1
%patch1 -p1
iconv -f iso8859-1 -t utf8 Changelog > Changelog.tmp
touch -r Changelog Changelog.tmp
mv -f Changelog.tmp Changelog
%mvn_file %{name}:%{name} %{name}
%pom_remove_plugin org.sonatype.plugins:nexus-staging-maven-plugin
%pom_remove_plugin org.codehaus.mojo:animal-sniffer-maven-plugin
%pom_remove_plugin :japicmp-maven-plugin
%pom_remove_plugin :maven-gpg-plugin
%pom_remove_plugin :jacoco-maven-plugin

%build
export CLASSPATH=%(build-classpath jce aqute-bnd)
%mvn_build -b -f --xmvn-javadoc

%install
install -d -m 0755 %{buildroot}%{_javadocdir}/%{name}
%mvn_install -J doc
export CLASSPATH='%(build-classpath junit):%{name}-%{version}.jar'
cp -rf target/xmvn-apidocs/* %{buildroot}%{_javadocdir}/%{name}

%files -f .mfiles
%license LICENSE
%doc Changelog README.adoc USAGE.md EXAMPLES.md

%files javadoc
%{_javadocdir}/%{name}/*
%license LICENSE

%changelog
* Wed Jul 24 2024 zhangxianting <zhangxianting@uniontech.com> - 3.5.3-3
- Backport to fix CVE-2024-25638, remove invalid patch

* Tue Jul 23 2024 zhangxianting <zhangxianting@uniontech.com> - 3.5.3-2
- Fix CVE-2024-25638

* Tue Feb 20 2024 Ge Wang <wang__ge@126.com> - 3.5.3-1
- Update to 3.5.3

* Fri Aug 11 2023 Ge Wang <wang__ge@126.com> - 3.5.2-1
- Update to 3.5.2

* Wed Jun 01 2022 yaoxin <yaoxin30@h-partners.com> - 2.1.9-1
- Update to 2.1.9

* Sat Aug 15 2020 yanan li <liyanan032@huawei.com> - 2.1.3-1
- Package init
