diff --git a/build.xml b/build.xml
deleted file mode 100644
index 5361c8f..0000000
--- a/build.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/maven-build.properties b/maven-build.properties
deleted file mode 100644
index 78b3322..0000000
--- a/maven-build.properties
+++ /dev/null
@@ -1,22 +0,0 @@
-#Generated by Maven Ant Plugin - DO NOT EDIT THIS FILE!
-#Mon Feb 11 23:31:38 CET 2013
-bouncycastle.version=1.46
-maven.settings.offline=true
-maven.build.finalName=voms-api-java-2.0.10
-maven.build.resourceDir.0=src/main/resources
-maven.build.testOutputDir=${maven.build.dir}/test-classes
-maven.build.testResourceDir.0=src/test/resources
-maven.reporting.outputDirectory=${maven.build.dir}/site
-project.build.sourceEncoding=UTF-8
-maven.build.srcDir.0=src/main/java
-project.build.directory=${maven.build.dir}
-maven.test.reports=${maven.build.dir}/test-reports
-maven.build.dir=target
-project.build.outputDirectory=${maven.build.outputDir}
-assembly.javadoc.dir=/usr/share/javadoc/voms-api-java
-assembly.doc.dir=/usr/share/doc/voms-api-java-2.0.10
-project.reporting.outputEncoding=UTF-8
-maven.build.testDir.0=src/test/java
-maven.settings.interactiveMode=true
-assembly.java.dir=/usr/share/java
-maven.build.outputDir=${maven.build.dir}/classes
diff --git a/maven-build.xml b/maven-build.xml
deleted file mode 100644
index 65d2fd9..0000000
--- a/maven-build.xml
+++ /dev/null
@@ -1,285 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- =================================== WARNING ===================================
- JUnit is not present in your $ANT_HOME/lib directory. Tests not executed.
- ===============================================================================
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/sources b/sources
index cfa6114..1b36def 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-c2b017434cfba3e31b88b28920695cd4 2_0_10.tar.gz
+0d9479338b699ee3779ac811bd30e20f 3_0_2.tar.gz
diff --git a/voms-api-java-bc147.patch b/voms-api-java-bc147.patch
new file mode 100644
index 0000000..242c207
--- /dev/null
+++ b/voms-api-java-bc147.patch
@@ -0,0 +1,337 @@
+diff -ur voms-api-java-3_0_2.orig/pom.xml voms-api-java-3_0_2/pom.xml
+--- voms-api-java-3_0_2.orig/pom.xml 2013-10-17 16:29:07.000000000 +0200
++++ voms-api-java-3_0_2/pom.xml 2014-03-08 09:57:54.689276148 +0100
+@@ -37,7 +37,7 @@
+ /usr/share/javadoc/${project.name}
+ 4.10
+ 1.3.0
+- 1.46
++ 1.47
+ 1.9.0
+ 2.2.2
+ 2.5.2
+@@ -189,7 +189,7 @@
+
+
+ org.bouncycastle
+- bcmail-jdk16
++ bcpkix-jdk15on
+ ${bcVersion}
+
+
+diff -ur voms-api-java-3_0_2.orig/src/main/java/org/italiangrid/voms/ac/impl/DefaultVOMSValidationStrategy.java voms-api-java-3_0_2/src/main/java/org/italiangrid/voms/ac/impl/DefaultVOMSValidationStrategy.java
+--- voms-api-java-3_0_2.orig/src/main/java/org/italiangrid/voms/ac/impl/DefaultVOMSValidationStrategy.java 2013-10-17 16:29:07.000000000 +0200
++++ voms-api-java-3_0_2/src/main/java/org/italiangrid/voms/ac/impl/DefaultVOMSValidationStrategy.java 2014-03-08 09:57:16.678003546 +0100
+@@ -39,7 +39,7 @@
+ import javax.security.auth.x500.X500Principal;
+
+ import org.bouncycastle.asn1.ASN1ObjectIdentifier;
+-import org.bouncycastle.asn1.x509.X509Extension;
++import org.bouncycastle.asn1.x509.Extension;
+ import org.bouncycastle.cert.X509CertificateHolder;
+ import org.bouncycastle.cert.jcajce.JcaX509CertificateHolder;
+ import org.bouncycastle.operator.ContentVerifierProvider;
+@@ -215,7 +215,7 @@
+
+ private boolean checkNoRevAvailExtension(VOMSAttribute attributes, List validationErrors){
+
+- X509Extension noRevAvail = attributes.getVOMSAC().getExtension(X509Extension.noRevAvail);
++ Extension noRevAvail = attributes.getVOMSAC().getExtension(Extension.noRevAvail);
+ if (noRevAvail != null && noRevAvail.isCritical()){
+ validationErrors.add(newErrorMessage(other, "NoRevAvail AC extension cannot be critical!"));
+ return false;
+@@ -225,7 +225,7 @@
+
+ private boolean checkAuthorityKeyIdentifierExtension(VOMSAttribute attributes, List validationErrors){
+
+- X509Extension authKeyId = attributes.getVOMSAC().getExtension(X509Extension.authorityKeyIdentifier);
++ Extension authKeyId = attributes.getVOMSAC().getExtension(Extension.authorityKeyIdentifier);
+ if (authKeyId != null && authKeyId.isCritical()){
+ validationErrors.add(newErrorMessage(other, "AuthorityKeyIdentifier AC extension cannot be critical!"));
+ return false;
+diff -ur voms-api-java-3_0_2.orig/src/main/java/org/italiangrid/voms/asn1/VOMSACGenerator.java voms-api-java-3_0_2/src/main/java/org/italiangrid/voms/asn1/VOMSACGenerator.java
+--- voms-api-java-3_0_2.orig/src/main/java/org/italiangrid/voms/asn1/VOMSACGenerator.java 2013-10-17 16:29:07.000000000 +0200
++++ voms-api-java-3_0_2/src/main/java/org/italiangrid/voms/asn1/VOMSACGenerator.java 2014-03-08 09:57:16.678003546 +0100
+@@ -30,20 +30,21 @@
+ import org.bouncycastle.asn1.ASN1Encodable;
+ import org.bouncycastle.asn1.ASN1EncodableVector;
+ import org.bouncycastle.asn1.ASN1InputStream;
++import org.bouncycastle.asn1.ASN1Object;
+ import org.bouncycastle.asn1.ASN1ObjectIdentifier;
+-import org.bouncycastle.asn1.DEREncodable;
++import org.bouncycastle.asn1.ASN1Primitive;
+ import org.bouncycastle.asn1.DERNull;
+-import org.bouncycastle.asn1.DERObject;
+ import org.bouncycastle.asn1.DEROctetString;
+ import org.bouncycastle.asn1.DERSequence;
+ import org.bouncycastle.asn1.DERTaggedObject;
+ import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
+ import org.bouncycastle.asn1.x509.AuthorityKeyIdentifier;
++import org.bouncycastle.asn1.x509.Extension;
+ import org.bouncycastle.asn1.x509.GeneralName;
+ import org.bouncycastle.asn1.x509.GeneralNames;
+-import org.bouncycastle.asn1.x509.X509Extension;
+ import org.bouncycastle.cert.AttributeCertificateHolder;
+ import org.bouncycastle.cert.AttributeCertificateIssuer;
++import org.bouncycastle.cert.CertIOException;
+ import org.bouncycastle.cert.X509AttributeCertificateHolder;
+ import org.bouncycastle.cert.X509v2AttributeCertificateBuilder;
+ import org.bouncycastle.cert.jcajce.JcaX509CertificateHolder;
+@@ -160,7 +161,7 @@
+ return String.format("%s://%s:%d", voName, host, port);
+ }
+
+- private ASN1Encodable buildACCertsExtensionContent(
++ private ASN1Object buildACCertsExtensionContent(
+ EnumSet properties) {
+
+ ASN1EncodableVector issuerCertsContainer = new ASN1EncodableVector();
+@@ -169,7 +170,7 @@
+ issuerCertsContainer.add(new DERSequence());
+ else
+ issuerCertsContainer.add(new DERSequence(
+- getCertAsDEREncodable(aaCredential.getCertificate())));
++ getCertAsASN1Encodable(aaCredential.getCertificate())));
+
+ return new DERSequence(issuerCertsContainer);
+ }
+@@ -177,7 +178,7 @@
+ private AuthorityKeyIdentifier buildAuthorityKeyIdentifier() {
+
+ byte[] authKeyId = aaCredential.getCertificate().getExtensionValue(
+- X509Extension.authorityKeyIdentifier.toString());
++ Extension.authorityKeyIdentifier.toString());
+
+ if (authKeyId != null) {
+ return new AuthorityKeyIdentifier(authKeyId);
+@@ -186,7 +187,7 @@
+ return null;
+ }
+
+- private ASN1Encodable buildFQANsAttributeContent(List fqans,
++ private ASN1Object buildFQANsAttributeContent(List fqans,
+ GeneralName policyAuthorityInfo) {
+
+ ASN1EncodableVector container = new ASN1EncodableVector();
+@@ -204,7 +205,7 @@
+ return new DERSequence(container);
+ }
+
+- private ASN1Encodable buildGAExtensionContent(
++ private ASN1Object buildGAExtensionContent(
+ EnumSet properties, List gas,
+ GeneralName policyAuthorityInfo) {
+
+@@ -265,7 +266,7 @@
+
+ }
+
+- private ASN1Encodable buildTargetsExtensionContent(
++ private ASN1Object buildTargetsExtensionContent(
+ EnumSet properties, List targets) {
+
+ ASN1EncodableVector targetSeq = new ASN1EncodableVector();
+@@ -329,6 +330,8 @@
+ GeneralName policyAuthorityInfo = buildPolicyAuthorityInfo(voName, host,
+ port);
+
++ try {
++
+ builder.addAttribute(VOMS_FQANS_OID,
+ buildFQANsAttributeContent(fqans, policyAuthorityInfo));
+
+@@ -341,7 +344,7 @@
+ policyAuthorityInfo));
+
+ if (targets != null && !targets.isEmpty())
+- builder.addExtension(X509Extension.targetInformation, true,
++ builder.addExtension(Extension.targetInformation, true,
+ buildTargetsExtensionContent(generationProperties, targets));
+
+ if (!generationProperties
+@@ -365,16 +368,20 @@
+ .contains(ACGenerationProperties.INCLUDE_CRITICAL_AKID_EXTENSION))
+ akidIsCritical = true;
+
+- builder.addExtension(X509Extension.noRevAvail,
++ builder.addExtension(Extension.noRevAvail,
+ noRevAvailIsCritical,
+ new DERNull());
+
+ AuthorityKeyIdentifier akid = buildAuthorityKeyIdentifier();
+
+- builder.addExtension(X509Extension.authorityKeyIdentifier,
++ builder.addExtension(Extension.authorityKeyIdentifier,
+ akidIsCritical,
+ akid != null ? akid : new DERNull());
+
++ } catch (CertIOException e) {
++ throw new VOMSError(e.getMessage(), e);
++ }
++
+ return builder.build(getSigner(generationProperties));
+
+ }
+@@ -395,14 +402,14 @@
+ return ext;
+ }
+
+- private DEREncodable getCertAsDEREncodable(X509Certificate cert) {
++ private ASN1Encodable getCertAsASN1Encodable(X509Certificate cert) {
+
+ try {
+ byte[] certBytes = cert.getEncoded();
+
+ ByteArrayInputStream bais = new ByteArrayInputStream(certBytes);
+ ASN1InputStream is = new ASN1InputStream(bais);
+- DERObject derCert = is.readObject();
++ ASN1Primitive derCert = is.readObject();
+ is.close();
+ return derCert;
+
+diff -ur voms-api-java-3_0_2.orig/src/main/java/org/italiangrid/voms/asn1/VOMSACUtils.java voms-api-java-3_0_2/src/main/java/org/italiangrid/voms/asn1/VOMSACUtils.java
+--- voms-api-java-3_0_2.orig/src/main/java/org/italiangrid/voms/asn1/VOMSACUtils.java 2013-10-17 16:29:07.000000000 +0200
++++ voms-api-java-3_0_2/src/main/java/org/italiangrid/voms/asn1/VOMSACUtils.java 2014-03-08 11:07:33.203630648 +0100
+@@ -31,21 +31,21 @@
+
+ import org.bouncycastle.asn1.ASN1InputStream;
+ import org.bouncycastle.asn1.ASN1OctetString;
++import org.bouncycastle.asn1.ASN1Primitive;
+ import org.bouncycastle.asn1.ASN1Sequence;
+ import org.bouncycastle.asn1.ASN1TaggedObject;
+ import org.bouncycastle.asn1.DERIA5String;
+-import org.bouncycastle.asn1.DERObject;
+ import org.bouncycastle.asn1.DEROctetString;
+-import org.bouncycastle.asn1.DERSequence;
++import org.bouncycastle.asn1.DLSequence;
+ import org.bouncycastle.asn1.x509.Attribute;
+ import org.bouncycastle.asn1.x509.AttributeCertificate;
++import org.bouncycastle.asn1.x509.Certificate;
++import org.bouncycastle.asn1.x509.Extension;
+ import org.bouncycastle.asn1.x509.GeneralName;
+ import org.bouncycastle.asn1.x509.IetfAttrSyntax;
+ import org.bouncycastle.asn1.x509.Target;
+ import org.bouncycastle.asn1.x509.TargetInformation;
+ import org.bouncycastle.asn1.x509.Targets;
+-import org.bouncycastle.asn1.x509.X509CertificateStructure;
+-import org.bouncycastle.asn1.x509.X509Extension;
+ import org.bouncycastle.cert.X509AttributeCertificateHolder;
+ import org.bouncycastle.jce.provider.BouncyCastleProvider;
+ import org.bouncycastle.jce.provider.X509CertificateObject;
+@@ -159,7 +159,7 @@
+ private static List deserializeACTargets(X509AttributeCertificateHolder ac){
+ List targets = new ArrayList();
+
+- X509Extension targetExtension = ac.getExtension(X509Extension.targetInformation);
++ Extension targetExtension = ac.getExtension(Extension.targetInformation);
+
+ if (targetExtension == null)
+ return targets;
+@@ -171,7 +171,7 @@
+
+ // The deserialization has to be done by hand since it seems VOMS
+ // does not correctly encode the ACTargets extension...
+- ASN1Sequence targetSequence = (ASN1Sequence) asn1TargetContainer.getDERObject();
++ ASN1Sequence targetSequence = (ASN1Sequence) asn1TargetContainer.toASN1Primitive();
+ Target[] asn1Targets = new Target[targetSequence.size()];
+
+ int count = 0;
+@@ -256,8 +256,8 @@
+ Attribute[] asn1Attrs = acHolder.getAttributes(VOMS_FQANS_OID);
+
+ for (Attribute a: asn1Attrs){
+- DERObject theVOMSDerObject = a.getAttributeValues()[0].getDERObject();
+- IetfAttrSyntax attrSyntax = new IetfAttrSyntax(ASN1Sequence.getInstance(theVOMSDerObject));
++ ASN1Primitive theVOMSDerObject = a.getAttributeValues()[0].toASN1Primitive();
++ IetfAttrSyntax attrSyntax = IetfAttrSyntax.getInstance(ASN1Sequence.getInstance(theVOMSDerObject));
+
+
+ String policyAuthority = policyAuthoritySanityChecks(attrSyntax);
+@@ -306,7 +306,7 @@
+
+ List gas = new ArrayList();
+
+- X509Extension gasExtension = ac.getExtension(VOMS_GENERIC_ATTRS_OID);
++ Extension gasExtension = ac.getExtension(VOMS_GENERIC_ATTRS_OID);
+
+ if (gasExtension == null)
+ return gas;
+@@ -364,7 +364,7 @@
+ private static X509Certificate[] deserializeACCerts(X509AttributeCertificateHolder ac){
+ List certs = new ArrayList();
+
+- X509Extension e = ac.getExtension(VOMS_CERTS_OID);
++ Extension e = ac.getExtension(VOMS_CERTS_OID);
+
+ if (e == null)
+ return null;
+@@ -377,7 +377,7 @@
+ certSeq = (ASN1Sequence)certSeq.getObjectAt(0);
+
+ @SuppressWarnings("unchecked")
+- Enumeration encodedCerts = certSeq.getObjects();
++ Enumeration encodedCerts = certSeq.getObjects();
+
+ CertificateFactory cf = null;
+
+@@ -389,14 +389,14 @@
+
+ while (encodedCerts.hasMoreElements()){
+
+- DERSequence s = encodedCerts.nextElement();
++ DLSequence s = encodedCerts.nextElement();
+ X509CertificateObject certObj = null;
+ byte[] certData = null;
+ X509Certificate theCert = null;
+
+ try {
+
+- certObj = new X509CertificateObject(X509CertificateStructure.getInstance(ASN1Sequence.getInstance(s)));
++ certObj = new X509CertificateObject(Certificate.getInstance(ASN1Sequence.getInstance(s)));
+ certData = certObj.getEncoded();
+ theCert = (X509Certificate)cf.generateCertificate(new ByteArrayInputStream(certData));
+
+diff -ur voms-api-java-3_0_2.orig/src/main/java/org/italiangrid/voms/asn1/VOMSConstants.java voms-api-java-3_0_2/src/main/java/org/italiangrid/voms/asn1/VOMSConstants.java
+--- voms-api-java-3_0_2.orig/src/main/java/org/italiangrid/voms/asn1/VOMSConstants.java 2013-10-17 16:29:07.000000000 +0200
++++ voms-api-java-3_0_2/src/main/java/org/italiangrid/voms/asn1/VOMSConstants.java 2014-03-08 09:57:16.678003546 +0100
+@@ -20,7 +20,7 @@
+ import java.util.Set;
+
+ import org.bouncycastle.asn1.ASN1ObjectIdentifier;
+-import org.bouncycastle.asn1.x509.X509Extension;
++import org.bouncycastle.asn1.x509.Extension;
+
+ /**
+ * A set of useful constants for ASN.1 parsing of VOMS attributes.
+@@ -54,8 +54,8 @@
+ VOMS_FQANS_OID,
+ VOMS_CERTS_OID,
+ VOMS_GENERIC_ATTRS_OID,
+- X509Extension.targetInformation,
+- X509Extension.noRevAvail,
+- X509Extension.authorityKeyIdentifier));
++ Extension.targetInformation,
++ Extension.noRevAvail,
++ Extension.authorityKeyIdentifier));
+
+ }
+diff -ur voms-api-java-3_0_2.orig/src/test/java/org/italiangrid/voms/test/ac/TestNoExtensionValidation.java voms-api-java-3_0_2/src/test/java/org/italiangrid/voms/test/ac/TestNoExtensionValidation.java
+--- voms-api-java-3_0_2.orig/src/test/java/org/italiangrid/voms/test/ac/TestNoExtensionValidation.java 2013-10-17 16:29:07.000000000 +0200
++++ voms-api-java-3_0_2/src/test/java/org/italiangrid/voms/test/ac/TestNoExtensionValidation.java 2014-03-08 09:57:16.679003553 +0100
+@@ -15,6 +15,7 @@
+ */
+ package org.italiangrid.voms.test.ac;
+
++import java.io.IOException;
+ import java.security.InvalidKeyException;
+ import java.security.NoSuchAlgorithmException;
+ import java.security.SignatureException;
+@@ -52,7 +53,7 @@
+ }
+
+ @Test
+- public void testNoExtensionValidation() throws InvalidKeyException, CertificateParsingException, SignatureException, NoSuchAlgorithmException {
++ public void testNoExtensionValidation() throws InvalidKeyException, CertificateParsingException, SignatureException, NoSuchAlgorithmException, IOException {
+ ProxyCertificateOptions options = new ProxyCertificateOptions(cred.getCertificateChain());
+ options.setType(ProxyType.LEGACY);
+
diff --git a/voms-api-java-test.patch b/voms-api-java-test.patch
deleted file mode 100644
index b1d942d..0000000
--- a/voms-api-java-test.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -ur voms-api-java-2_0_10.orig/pom.xml voms-api-java-2_0_10/pom.xml
---- voms-api-java-2_0_10.orig/pom.xml 2013-01-11 16:15:57.000000000 +0100
-+++ voms-api-java-2_0_10/pom.xml 2013-02-11 23:26:58.928257785 +0100
-@@ -17,7 +17,7 @@
- /usr/share/doc/${project.name}-${project.version}
- /usr/share/javadoc/${project.name}
- 1.45
-- **/LoadTest.java
-+ **/LoadTest.java,**/TestCerts.java,**/TestCRL.java
-
-
-
diff --git a/voms-api-java.spec b/voms-api-java.spec
index 2e6b906..dff1f44 100644
--- a/voms-api-java.spec
+++ b/voms-api-java.spec
@@ -1,83 +1,37 @@
-# Use maven if it is available - otherwise fall back to ant
-%if %{?fedora}%{!?fedora:0} >= 15 || %{?rhel}%{!?rhel:0} >= 7
-%global maven 1
-%else
-%global maven 0
-%endif
-
Name: voms-api-java
-Version: 2.0.10
+Version: 3.0.2
%global tagver %(tr . _ <<< %{version})
-Release: 4%{?dist}
+Release: 1%{?dist}
Summary: Virtual Organization Membership Service Java API
Group: Development/Libraries
License: ASL 2.0
URL: https://wiki.italiangrid.it/VOMS
Source0: https://github.com/italiangrid/%{name}/archive/%{tagver}.tar.gz
-# These are build instructions for ant generated from the maven
-# build instrutions using the maven ant plugin.
-# These are used for building on EPEL since there is no maven
-# available there.
-Source1: build.xml
-Source2: maven-build.xml
-Source3: maven-build.properties
-Patch0: %{name}-test.patch
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+Patch0: %{name}-bc147.patch
BuildArch: noarch
-# There is no bouncycastle in EPEL 5 ppc and EPEL 6 ppc64
-%if %{?rhel}%{!?rhel:0} == 5
-ExcludeArch: ppc
-%endif
-%if %{?rhel}%{!?rhel:0} == 6
-ExcludeArch: ppc64
-%endif
-
-Requires: java
-Requires: jpackage-utils
-Requires: bouncycastle >= 1.39
-%if %{?fedora}%{!?fedora:0} >= 15 || %{?rhel}%{!?rhel:0} >= 7
-Requires: apache-commons-cli
-Requires: apache-commons-lang
-%else
-Requires: jakarta-commons-cli
-Requires: jakarta-commons-lang
-%endif
-Requires: log4j
-
-Provides: vomsjapi = %{version}-%{release}
-Obsoletes: vomsjapi < 2.0.7
-
-BuildRequires: java-devel >= 1:1.6.0
-BuildRequires: jpackage-utils
-
-%if %maven
BuildRequires: maven-local
-BuildRequires: maven-compiler-plugin
-BuildRequires: maven-install-plugin
-BuildRequires: maven-jar-plugin
-BuildRequires: maven-javadoc-plugin
-BuildRequires: maven-release-plugin
-BuildRequires: maven-resources-plugin
-BuildRequires: maven-surefire-plugin
-BuildRequires: maven-surefire-provider-junit
+BuildRequires: mvn(org.apache.maven.plugins:maven-assembly-plugin)
+BuildRequires: mvn(org.apache.maven.plugins:maven-compiler-plugin)
+BuildRequires: mvn(org.apache.maven.plugins:maven-javadoc-plugin)
+BuildRequires: mvn(org.apache.maven.plugins:maven-release-plugin)
+
+BuildRequires: mvn(eu.eu-emi.security:canl)
+%if %{?fedora}%{!?fedora:0} >= 21 || %{?rhel}%{!?rhel:0} >= 7
+BuildRequires: mvn(org.bouncycastle:bcpkix-jdk15on)
%else
-BuildRequires: ant
-BuildRequires: ant-junit
+BuildRequires: mvn(org.bouncycastle:bcmail-jdk16)
%endif
-BuildRequires: bouncycastle >= 1.39
-%if %{?fedora}%{!?fedora:0} >= 15 || %{?rhel}%{!?rhel:0} >= 7
-BuildRequires: apache-commons-cli
-BuildRequires: apache-commons-io
-BuildRequires: apache-commons-lang
-%else
-BuildRequires: jakarta-commons-cli
-BuildRequires: jakarta-commons-io
-BuildRequires: jakarta-commons-lang
+BuildRequires: mvn(junit:junit)
+%if %{?fedora}%{!?fedora:0}
+# Missing stuff in EPEL (mostly test frameworks)
+BuildRequires: mvn(com.mycila.maven-license-plugin:maven-license-plugin)
+BuildRequires: mvn(org.codehaus.mojo:cobertura-maven-plugin)
+BuildRequires: mvn(org.mockito:mockito-core)
+BuildRequires: mvn(net.jcip:jcip-annotations)
%endif
-BuildRequires: log4j
%description
The Virtual Organization Membership Service (VOMS) is an attribute authority
@@ -92,8 +46,6 @@ This package provides a java client API for VOMS.
%package javadoc
Summary: Virtual Organization Membership Service Java API Documentation
Group: Documentation
-Requires: jpackage-utils
-Requires: %{name} = %{version}-%{release}
Provides: vomsjapi-javadoc = %{version}-%{release}
Obsoletes: vomsjapi-javadoc < 2.0.7
@@ -102,58 +54,45 @@ Virtual Organization Membership Service (VOMS) Java API Documentation.
%prep
%setup -q -n %{name}-%{tagver}
-%patch0 -p1
-install -m 644 %SOURCE1 .
-install -m 644 %SOURCE2 .
-install -m 644 %SOURCE3 .
-sed -e s/bcprov-ext-jdk16/bcprov-jdk16/ -i pom.xml
+%if %{?fedora}%{!?fedora:0} >= 21 || %{?rhel}%{!?rhel:0} >= 7
+%patch0 -p1
+%endif
+
+%if %{?fedora}%{!?fedora:0}
+%pom_xpath_inject "pom:project/pom:build/pom:plugins/pom:plugin[pom:groupId='com.mycila.maven-license-plugin']/pom:configuration/pom:excludes" ".xmvn/**"
+%else
+# Missing stuff in EPEL (mostly test frameworks)
+%pom_remove_plugin com.mycila.maven-license-plugin:maven-license-plugin
+%pom_remove_plugin org.codehaus.mojo:cobertura-maven-plugin
+%pom_remove_dep net.jcip:jcip-annotations
+%pom_remove_dep org.mockito:mockito-core
+%endif
%build
-%if %{maven}
-mvn-rpmbuild -Dbouncycastle.version=1.46 install javadoc:aggregate
+%if %{?fedora}%{!?fedora:0}
+%mvn_build
%else
-export CLASSPATH=$(build-classpath bcprov log4j commons-cli commons-io commons-lang)
-ant -Dbuild.sysclasspath=last package javadoc
+# Can not run tests in EPEL due to missing test frameworks
+%mvn_build -f
%endif
%install
-mkdir -p %{buildroot}%{_javadir}
-install -m 644 target/%{name}-%{version}.jar \
- %{buildroot}%{_javadir}/%{name}.jar
-ln -s %{name}.jar %{buildroot}%{_javadir}/vomsjapi.jar
+%mvn_install -J target/site/javadoc/apidocs
-mkdir -p %{buildroot}%{_javadocdir}/%{name}
-%if %{maven}
-cp -pr target/site/javadoc/apidocs %{buildroot}%{_javadocdir}/%{name}
-%else
-cp -pr target/site/apidocs %{buildroot}%{_javadocdir}/%{name}
-%endif
-
-%if %{maven}
-mkdir -p %{buildroot}%{_mavenpomdir}
-install -m 644 pom.xml %{buildroot}%{_mavenpomdir}/JPP-%{name}.pom
-%add_maven_depmap JPP-%{name}.pom %{name}.jar -a org.glite:vomsjapi
-%endif
-
-%clean
-rm -rf %{buildroot}
-
-%files
-%defattr(-,root,root,-)
-%{_javadir}/%{name}.jar
-%{_javadir}/vomsjapi.jar
-%if %{maven}
-%{_mavenpomdir}/JPP-%{name}.pom
-%{_mavendepmapfragdir}/%{name}
-%endif
+%files -f .mfiles
+%dir %{_javadir}/%{name}
%doc AUTHORS LICENSE README.md
-%files javadoc
-%defattr(-,root,root,-)
-%doc %{_javadocdir}/%{name}
+%files javadoc -f .mfiles-javadoc
+%doc LICENSE
%changelog
+* Sun Mar 09 2014 Mattias Ellert - 3.0.2-1
+- Update to version 3
+- Apply patch for bouncycastle 1.47+ on Fedora 21+ and EPEL 7+
+- Convert to using xmvn
+
* Mon Oct 14 2013 Mattias Ellert - 2.0.10-4
- Disable CRL tests (the CRL in the sources has expired)