From 1ff4a50d8fbdcbdc224f9d664750b8aaf1fa5685 Mon Sep 17 00:00:00 2001 From: Mikolaj Izdebski Date: Wed, 4 Feb 2015 13:59:47 +0100 Subject: [PATCH] Port to QDox 2.0 - Resolves: rhbz#1166700 --- hamcrest-1.3-qdox-2.0.patch | 92 +++++++++++++++++++++++++++++++++++++ hamcrest.spec | 9 +++- 2 files changed, 100 insertions(+), 1 deletion(-) create mode 100644 hamcrest-1.3-qdox-2.0.patch diff --git a/hamcrest-1.3-qdox-2.0.patch b/hamcrest-1.3-qdox-2.0.patch new file mode 100644 index 0000000..d9eb779 --- /dev/null +++ b/hamcrest-1.3-qdox-2.0.patch @@ -0,0 +1,92 @@ +diff --git a/hamcrest-generator/src/main/java/org/hamcrest/generator/QDox.java b/hamcrest-generator/src/main/java/org/hamcrest/generator/QDox.java +index efaf615..338178d 100644 +--- a/hamcrest-generator/src/main/java/org/hamcrest/generator/QDox.java ++++ b/hamcrest-generator/src/main/java/org/hamcrest/generator/QDox.java +@@ -1,6 +1,6 @@ + package org.hamcrest.generator; + +-import com.thoughtworks.qdox.JavaDocBuilder; ++import com.thoughtworks.qdox.JavaProjectBuilder; + import com.thoughtworks.qdox.model.JavaClass; + + import java.io.File; +@@ -16,7 +16,7 @@ import java.io.Reader; + */ + public class QDox { + +- private final JavaDocBuilder javaDocBuilder = new JavaDocBuilder(); ++ private final JavaProjectBuilder javaDocBuilder = new JavaProjectBuilder(); + + public void addSourceTree(File sourceDir) { + javaDocBuilder.addSourceTree(sourceDir); +diff --git a/hamcrest-generator/src/main/java/org/hamcrest/generator/QDoxFactoryReader.java b/hamcrest-generator/src/main/java/org/hamcrest/generator/QDoxFactoryReader.java +index 5108140..ec02f54 100644 +--- a/hamcrest-generator/src/main/java/org/hamcrest/generator/QDoxFactoryReader.java ++++ b/hamcrest-generator/src/main/java/org/hamcrest/generator/QDoxFactoryReader.java +@@ -4,8 +4,10 @@ import com.thoughtworks.qdox.model.DocletTag; + import com.thoughtworks.qdox.model.JavaClass; + import com.thoughtworks.qdox.model.JavaMethod; + import com.thoughtworks.qdox.model.JavaParameter; +-import com.thoughtworks.qdox.model.Type; ++import com.thoughtworks.qdox.model.JavaType; ++import com.thoughtworks.qdox.model.impl.DefaultJavaType; + ++import java.util.ArrayList; + import java.util.Iterator; + import java.util.List; + import java.util.regex.Pattern; +@@ -56,15 +58,15 @@ public class QDoxFactoryReader implements Iterable { + JavaMethod methodSource = findMethodInSource(factoryMethod); + if (methodSource != null) { + factoryMethod.setJavaDoc(createJavaDocComment(methodSource)); +- JavaParameter[] parametersFromSource ++ List parametersFromSource + = methodSource.getParameters(); + List parametersFromReflection + = factoryMethod.getParameters(); + +- if (parametersFromReflection.size() == parametersFromSource.length) { +- for (int i = 0; i < parametersFromSource.length; i++) { ++ if (parametersFromReflection.size() == parametersFromSource.size()) { ++ for (int i = 0; i < parametersFromSource.size(); i++) { + parametersFromReflection.get(i).setName( +- parametersFromSource[i].getName()); ++ parametersFromSource.get(i).getName()); + } + } + } +@@ -79,18 +81,18 @@ public class QDoxFactoryReader implements Iterable { + // Note, this doesn't always work - it struggles with some kinds of generics. + // This seems to cover most cases though. + List params = factoryMethod.getParameters(); +- Type[] types = new Type[params.size()]; ++ List types = new ArrayList(params.size()); + boolean varArgs = false; +- for (int i = 0; i < types.length; i++) { ++ for (int i = 0; i < params.size(); i++) { + String type = params.get(i).getType(); + varArgs = VARARGS_REGEX.matcher(type).find(); + // QDox ignores varargs and generics, so we strip them out to help QDox. + type = GENERIC_REGEX.matcher(type).replaceAll(""); + type = VARARGS_REGEX.matcher(type).replaceAll(""); +- types[i] = new Type(type); ++ types.add(new DefaultJavaType(type)); + } +- JavaMethod[] methods = classSource.getMethodsBySignature(factoryMethod.getName(), types, false, varArgs); +- return methods.length == 1 ? methods[0] : null; ++ List methods = classSource.getMethodsBySignature(factoryMethod.getName(), types, false, varArgs); ++ return methods.size() == 1 ? methods.get(0) : null; + } + + /** +@@ -98,8 +100,8 @@ public class QDoxFactoryReader implements Iterable { + */ + private static String createJavaDocComment(JavaMethod methodSource) { + String comment = methodSource.getComment(); +- DocletTag[] tags = methodSource.getTags(); +- if ((comment == null || comment.trim().length() == 0) && tags.length == 0) { ++ List tags = methodSource.getTags(); ++ if ((comment == null || comment.trim().length() == 0) && tags.size() == 0) { + return null; + } + StringBuilder result = new StringBuilder(); diff --git a/hamcrest.spec b/hamcrest.spec index e2cd5b8..00038b5 100644 --- a/hamcrest.spec +++ b/hamcrest.spec @@ -42,7 +42,7 @@ Name: hamcrest Version: 1.3 -Release: 8%{?dist} +Release: 9%{?dist} Epoch: 0 Summary: Library of matchers for building test expressions License: BSD @@ -68,6 +68,7 @@ Source12: hamcrest-generator-MANIFEST.MF Patch0: %{name}-%{version}-build.patch Patch1: %{name}-%{version}-no-jarjar.patch Patch3: %{name}-%{version}-javadoc.patch +Patch4: %{name}-%{version}-qdox-2.0.patch Requires: java-headless >= 1:1.6.0 Requires: qdox @@ -79,6 +80,7 @@ BuildRequires: ant >= 0:1.6.5 BuildRequires: ant-junit BuildRequires: zip BuildRequires: easymock3 +BuildRequires: perl %if %with jarjar BuildRequires: jarjar %endif @@ -141,6 +143,7 @@ ln -sf $(build-classpath testng-jdk15) lib/integration/ %patch1 -p1 %endif %patch3 -p1 +%patch4 -p1 perl -pi -e 's/\r$//g' LICENSE.txt @@ -238,6 +241,10 @@ cp -pr %{name}-examples $RPM_BUILD_ROOT%{_datadir}/%{name}/ %{_datadir}/%{name} %changelog +* Wed Feb 4 2015 Mikolaj Izdebski - 0:1.3-9 +- Port to QDox 2.0 +- Resolves: rhbz#1166700 + * Wed Jul 30 2014 Mat Booth - 0:1.3-8 - Fix FTBFS - Always build integration jar (removes some complexity from the spec)