[stapler/f19] Initial import

Michal Srb msrb at fedoraproject.org
Wed May 29 13:04:13 UTC 2013


commit 5e411d501f9c3f595d4d6ef6de08fd8db57ee139
Author: Michal Srb <msrb at redhat.com>
Date:   Wed May 29 15:00:59 2013 +0200

    Initial import

 .gitignore                                         |    2 +
 0001-Fix-asm-namespace.patch                       |   33 ++
 0001-Remove-jellydoc-annotations.patch             |  428 ++++++++++++++++++++
 0001-Use-XmlChars-class-from-external-jar.patch    |   45 ++
 ...riginal-dom4j-library-not-patched-version.patch |  215 ++++++++++
 0001-Use-unbundled-class-from-glassfish-jaxb.patch |   46 +++
 create-tarball.sh                                  |   29 ++
 sources                                            |    2 +
 stapler.spec                                       |  196 +++++++++
 9 files changed, 996 insertions(+), 0 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index e69de29..58179c4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1,2 @@
+/stapler-1.209-clean.tar.gz
+/LICENSE-2.0.txt
diff --git a/0001-Fix-asm-namespace.patch b/0001-Fix-asm-namespace.patch
new file mode 100644
index 0000000..c687154
--- /dev/null
+++ b/0001-Fix-asm-namespace.patch
@@ -0,0 +1,33 @@
+From 4a1eee6be529ef73155fa3da62fb427c2c21b58a Mon Sep 17 00:00:00 2001
+From: Michal Srb <msrb at redhat.com>
+Date: Mon, 6 May 2013 16:12:02 +0200
+Subject: [PATCH] Fix asm namespace
+
+---
+ core/src/main/java/org/kohsuke/stapler/ClassDescriptor.java | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/core/src/main/java/org/kohsuke/stapler/ClassDescriptor.java b/core/src/main/java/org/kohsuke/stapler/ClassDescriptor.java
+index 3c14446..967fd86 100644
+--- a/core/src/main/java/org/kohsuke/stapler/ClassDescriptor.java
++++ b/core/src/main/java/org/kohsuke/stapler/ClassDescriptor.java
+@@ -24,11 +24,11 @@
+ package org.kohsuke.stapler;
+ 
+ import org.apache.commons.io.IOUtils;
+-import org.kohsuke.asm3.ClassReader;
+-import org.kohsuke.asm3.Label;
+-import org.kohsuke.asm3.MethodVisitor;
+-import org.kohsuke.asm3.Type;
+-import org.kohsuke.asm3.commons.EmptyVisitor;
++import org.objectweb.asm.ClassReader;
++import org.objectweb.asm.Label;
++import org.objectweb.asm.MethodVisitor;
++import org.objectweb.asm.Type;
++import org.objectweb.asm.commons.EmptyVisitor;
+ 
+ import java.io.IOException;
+ import java.io.InputStream;
+-- 
+1.8.1.4
+
diff --git a/0001-Remove-jellydoc-annotations.patch b/0001-Remove-jellydoc-annotations.patch
new file mode 100644
index 0000000..88b6b61
--- /dev/null
+++ b/0001-Remove-jellydoc-annotations.patch
@@ -0,0 +1,428 @@
+From 12702f84a63a4102cb532daa60949190b481458b Mon Sep 17 00:00:00 2001
+From: Michal Srb <msrb at redhat.com>
+Date: Mon, 6 May 2013 16:31:31 +0200
+Subject: [PATCH] Remove jellydoc annotations
+
+We don't need to generate any reports with maven-jellydoc-plugin.
+---
+ jelly/src/main/java/org/kohsuke/stapler/jelly/AdjunctTag.java        | 3 ---
+ .../main/java/org/kohsuke/stapler/jelly/AttributeConstraintsTag.java | 2 --
+ jelly/src/main/java/org/kohsuke/stapler/jelly/AttributeTag.java      | 2 --
+ jelly/src/main/java/org/kohsuke/stapler/jelly/BindTag.java           | 4 ----
+ jelly/src/main/java/org/kohsuke/stapler/jelly/ContentTypeTag.java    | 4 ----
+ jelly/src/main/java/org/kohsuke/stapler/jelly/CopyStreamTag.java     | 2 --
+ jelly/src/main/java/org/kohsuke/stapler/jelly/DoctypeTag.java        | 5 -----
+ jelly/src/main/java/org/kohsuke/stapler/jelly/FindAncestorTag.java   | 2 --
+ jelly/src/main/java/org/kohsuke/stapler/jelly/HeaderTag.java         | 5 -----
+ jelly/src/main/java/org/kohsuke/stapler/jelly/IncludeTag.java        | 2 --
+ jelly/src/main/java/org/kohsuke/stapler/jelly/IsUserInRoleTag.java   | 2 --
+ jelly/src/main/java/org/kohsuke/stapler/jelly/NbspTag.java           | 2 --
+ jelly/src/main/java/org/kohsuke/stapler/jelly/OutTag.java            | 4 ----
+ jelly/src/main/java/org/kohsuke/stapler/jelly/RedirectTag.java       | 4 ----
+ jelly/src/main/java/org/kohsuke/stapler/jelly/StatusCodeTag.java     | 4 ----
+ .../java/org/kohsuke/stapler/jelly/StructuredMessageFormatTag.java   | 2 --
+ jelly/src/main/java/org/kohsuke/stapler/jelly/package-info.java      | 2 --
+ 17 files changed, 51 deletions(-)
+
+diff --git a/jelly/src/main/java/org/kohsuke/stapler/jelly/AdjunctTag.java b/jelly/src/main/java/org/kohsuke/stapler/jelly/AdjunctTag.java
+index a36201f..da8d3da 100644
+--- a/jelly/src/main/java/org/kohsuke/stapler/jelly/AdjunctTag.java
++++ b/jelly/src/main/java/org/kohsuke/stapler/jelly/AdjunctTag.java
+@@ -28,8 +28,6 @@ import org.apache.commons.jelly.XMLOutput;
+ import org.kohsuke.stapler.framework.adjunct.AdjunctManager;
+ import org.kohsuke.stapler.framework.adjunct.AdjunctsInPage;
+ import org.xml.sax.SAXException;
+-import org.jvnet.maven.jellydoc.annotation.NoContent;
+-import org.jvnet.maven.jellydoc.annotation.Required;
+ 
+ import java.io.IOException;
+ import java.util.List;
+@@ -41,7 +39,6 @@ import java.util.logging.Logger;
+  * 
+  * @author Kohsuke Kawaguchi
+  */
+- at NoContent
+ public class AdjunctTag extends AbstractStaplerTag {
+     private String[] includes;
+     private String[] assumes;
+diff --git a/jelly/src/main/java/org/kohsuke/stapler/jelly/AttributeConstraintsTag.java b/jelly/src/main/java/org/kohsuke/stapler/jelly/AttributeConstraintsTag.java
+index 893e67e..b0ec8d2 100644
+--- a/jelly/src/main/java/org/kohsuke/stapler/jelly/AttributeConstraintsTag.java
++++ b/jelly/src/main/java/org/kohsuke/stapler/jelly/AttributeConstraintsTag.java
+@@ -25,7 +25,6 @@ package org.kohsuke.stapler.jelly;
+ 
+ import org.apache.commons.jelly.TagSupport;
+ import org.apache.commons.jelly.XMLOutput;
+-import org.jvnet.maven.jellydoc.annotation.Required;
+ 
+ /**
+  * DTD-like expression that specifies the consraints on attribute appearances.
+@@ -44,7 +43,6 @@ public class AttributeConstraintsTag extends TagSupport {
+     /**
+      * Constraint expression.
+      */
+-    @Required
+     public void setExpr(String v) {}
+ }
+ 
+diff --git a/jelly/src/main/java/org/kohsuke/stapler/jelly/AttributeTag.java b/jelly/src/main/java/org/kohsuke/stapler/jelly/AttributeTag.java
+index bbd54c6..532b19b 100644
+--- a/jelly/src/main/java/org/kohsuke/stapler/jelly/AttributeTag.java
++++ b/jelly/src/main/java/org/kohsuke/stapler/jelly/AttributeTag.java
+@@ -25,7 +25,6 @@ package org.kohsuke.stapler.jelly;
+ 
+ import org.apache.commons.jelly.TagSupport;
+ import org.apache.commons.jelly.XMLOutput;
+-import org.jvnet.maven.jellydoc.annotation.Required;
+ 
+ /**
+  * Documentation for an attribute of a Jelly tag file.
+@@ -47,7 +46,6 @@ public class AttributeTag extends TagSupport {
+     /**
+      * Name of the attribute.
+      */
+-    @Required
+     public void setName(String v) {}
+ 
+     /**
+diff --git a/jelly/src/main/java/org/kohsuke/stapler/jelly/BindTag.java b/jelly/src/main/java/org/kohsuke/stapler/jelly/BindTag.java
+index 1528ced..50b404a 100644
+--- a/jelly/src/main/java/org/kohsuke/stapler/jelly/BindTag.java
++++ b/jelly/src/main/java/org/kohsuke/stapler/jelly/BindTag.java
+@@ -25,8 +25,6 @@ package org.kohsuke.stapler.jelly;
+ 
+ import org.apache.commons.jelly.JellyTagException;
+ import org.apache.commons.jelly.XMLOutput;
+-import org.jvnet.maven.jellydoc.annotation.NoContent;
+-import org.jvnet.maven.jellydoc.annotation.Required;
+ import org.kohsuke.stapler.WebApp;
+ import org.kohsuke.stapler.bind.Bound;
+ import org.kohsuke.stapler.framework.adjunct.AdjunctsInPage;
+@@ -38,7 +36,6 @@ import org.xml.sax.SAXException;
+  * 
+  * @author Kohsuke Kawaguchi
+  */
+- at NoContent
+ public class BindTag extends AbstractStaplerTag {
+     private String varName;
+     private Object javaObject;
+@@ -55,7 +52,6 @@ public class BindTag extends AbstractStaplerTag {
+         this.varName = varName;
+     }
+ 
+-    @Required
+     public void setValue(Object o) {
+         this.javaObject = o;
+     }
+diff --git a/jelly/src/main/java/org/kohsuke/stapler/jelly/ContentTypeTag.java b/jelly/src/main/java/org/kohsuke/stapler/jelly/ContentTypeTag.java
+index 223f5fb..784242b 100644
+--- a/jelly/src/main/java/org/kohsuke/stapler/jelly/ContentTypeTag.java
++++ b/jelly/src/main/java/org/kohsuke/stapler/jelly/ContentTypeTag.java
+@@ -26,8 +26,6 @@ package org.kohsuke.stapler.jelly;
+ import org.apache.commons.jelly.JellyTagException;
+ import org.apache.commons.jelly.MissingAttributeException;
+ import org.apache.commons.jelly.XMLOutput;
+-import org.jvnet.maven.jellydoc.annotation.Required;
+-import org.jvnet.maven.jellydoc.annotation.NoContent;
+ 
+ import javax.servlet.http.HttpServletResponse;
+ 
+@@ -36,14 +34,12 @@ import javax.servlet.http.HttpServletResponse;
+  *
+  * @author Kohsuke Kawaguchi
+  */
+- at NoContent
+ public class ContentTypeTag extends AbstractStaplerTag {
+     private String contentType;
+ 
+     /**
+      * The content-type value, such as "text/html".
+      */
+-    @Required
+     public void setValue(String contentType) {
+         this.contentType = contentType;
+     }
+diff --git a/jelly/src/main/java/org/kohsuke/stapler/jelly/CopyStreamTag.java b/jelly/src/main/java/org/kohsuke/stapler/jelly/CopyStreamTag.java
+index a299a8a..0a764c1 100644
+--- a/jelly/src/main/java/org/kohsuke/stapler/jelly/CopyStreamTag.java
++++ b/jelly/src/main/java/org/kohsuke/stapler/jelly/CopyStreamTag.java
+@@ -26,7 +26,6 @@ package org.kohsuke.stapler.jelly;
+ import org.apache.commons.jelly.JellyTagException;
+ import org.apache.commons.jelly.XMLOutput;
+ import org.xml.sax.SAXException;
+-import org.jvnet.maven.jellydoc.annotation.NoContent;
+ 
+ import java.io.File;
+ import java.io.FileNotFoundException;
+@@ -41,7 +40,6 @@ import java.net.URL;
+  * Copies a stream as text.
+  * @author Kohsuke Kawaguchi
+  */
+- at NoContent
+ public class CopyStreamTag extends AbstractStaplerTag {
+     private Reader in;
+ 
+diff --git a/jelly/src/main/java/org/kohsuke/stapler/jelly/DoctypeTag.java b/jelly/src/main/java/org/kohsuke/stapler/jelly/DoctypeTag.java
+index 34afea0..b1ab5cc 100644
+--- a/jelly/src/main/java/org/kohsuke/stapler/jelly/DoctypeTag.java
++++ b/jelly/src/main/java/org/kohsuke/stapler/jelly/DoctypeTag.java
+@@ -25,8 +25,6 @@ package org.kohsuke.stapler.jelly;
+ 
+ import org.apache.commons.jelly.XMLOutput;
+ import org.apache.commons.jelly.JellyTagException;
+-import org.jvnet.maven.jellydoc.annotation.NoContent;
+-import org.jvnet.maven.jellydoc.annotation.Required;
+ 
+ import java.io.IOException;
+ 
+@@ -35,17 +33,14 @@ import java.io.IOException;
+  * 
+  * @author Kohsuke Kawaguchi
+  */
+- at NoContent
+ public class DoctypeTag extends AbstractStaplerTag {
+     private String publicId;
+     private String systemId;
+ 
+-    @Required
+     public void setPublicId(String publicId) {
+         this.publicId = publicId;
+     }
+ 
+-    @Required
+     public void setSystemId(String systemId) {
+         this.systemId = systemId;
+     }
+diff --git a/jelly/src/main/java/org/kohsuke/stapler/jelly/FindAncestorTag.java b/jelly/src/main/java/org/kohsuke/stapler/jelly/FindAncestorTag.java
+index 34318c3..bc6a455 100644
+--- a/jelly/src/main/java/org/kohsuke/stapler/jelly/FindAncestorTag.java
++++ b/jelly/src/main/java/org/kohsuke/stapler/jelly/FindAncestorTag.java
+@@ -27,7 +27,6 @@ import org.apache.commons.jelly.JellyTagException;
+ import org.apache.commons.jelly.NamespaceAwareTag;
+ import org.apache.commons.jelly.Tag;
+ import org.apache.commons.jelly.XMLOutput;
+-import org.jvnet.maven.jellydoc.annotation.NoContent;
+ 
+ import java.util.Map;
+ 
+@@ -37,7 +36,6 @@ import java.util.Map;
+  *
+  * @author Kohsuke Kawaguchi
+  */
+- at NoContent
+ public class FindAncestorTag extends AbstractStaplerTag implements NamespaceAwareTag {
+     private String tag;
+ 
+diff --git a/jelly/src/main/java/org/kohsuke/stapler/jelly/HeaderTag.java b/jelly/src/main/java/org/kohsuke/stapler/jelly/HeaderTag.java
+index 259c134..8771b0a 100644
+--- a/jelly/src/main/java/org/kohsuke/stapler/jelly/HeaderTag.java
++++ b/jelly/src/main/java/org/kohsuke/stapler/jelly/HeaderTag.java
+@@ -26,15 +26,12 @@ package org.kohsuke.stapler.jelly;
+ import org.apache.commons.jelly.JellyTagException;
+ import org.apache.commons.jelly.MissingAttributeException;
+ import org.apache.commons.jelly.XMLOutput;
+-import org.jvnet.maven.jellydoc.annotation.NoContent;
+-import org.jvnet.maven.jellydoc.annotation.Required;
+ 
+ /**
+  * Adds an HTTP header to the response.
+  *
+  * @author Kohsuke Kawaguchi
+  */
+- at NoContent
+ public class HeaderTag extends AbstractStaplerTag {
+     private String name;
+     private String value;
+@@ -42,7 +39,6 @@ public class HeaderTag extends AbstractStaplerTag {
+     /**
+      * Header name.
+      */
+-    @Required
+     public void setName(String name) {
+         this.name = name;
+     }
+@@ -50,7 +46,6 @@ public class HeaderTag extends AbstractStaplerTag {
+     /**
+      * Header value.
+      */
+-    @Required
+     public void setValue(String value) {
+         this.value = value;
+     }
+diff --git a/jelly/src/main/java/org/kohsuke/stapler/jelly/IncludeTag.java b/jelly/src/main/java/org/kohsuke/stapler/jelly/IncludeTag.java
+index 5dc4d1f..9357552 100644
+--- a/jelly/src/main/java/org/kohsuke/stapler/jelly/IncludeTag.java
++++ b/jelly/src/main/java/org/kohsuke/stapler/jelly/IncludeTag.java
+@@ -32,7 +32,6 @@ import org.apache.commons.jelly.impl.TagScript;
+ import org.kohsuke.stapler.MetaClass;
+ import org.kohsuke.stapler.WebApp;
+ import org.xml.sax.SAXException;
+-import org.jvnet.maven.jellydoc.annotation.Required;
+ 
+ /**
+  * Tag that includes views of the object.
+@@ -53,7 +52,6 @@ public class IncludeTag extends TagSupport {
+     /**
+      * Specifies the name of the JSP to be included.
+      */
+-    @Required
+     public void setPage(String page) {
+         this.page = page;
+     }
+diff --git a/jelly/src/main/java/org/kohsuke/stapler/jelly/IsUserInRoleTag.java b/jelly/src/main/java/org/kohsuke/stapler/jelly/IsUserInRoleTag.java
+index 762e7ff..c0dcdf2 100644
+--- a/jelly/src/main/java/org/kohsuke/stapler/jelly/IsUserInRoleTag.java
++++ b/jelly/src/main/java/org/kohsuke/stapler/jelly/IsUserInRoleTag.java
+@@ -26,7 +26,6 @@ package org.kohsuke.stapler.jelly;
+ import org.apache.commons.jelly.JellyTagException;
+ import org.apache.commons.jelly.MissingAttributeException;
+ import org.apache.commons.jelly.XMLOutput;
+-import org.jvnet.maven.jellydoc.annotation.Required;
+ 
+ import javax.servlet.http.HttpServletRequest;
+ 
+@@ -39,7 +38,6 @@ public class IsUserInRoleTag extends AbstractStaplerTag {
+     /**
+      * The name of the role against which the user is checked.
+      */
+-    @Required
+     public void setRole(String role) {
+         this.role = role;
+     }
+diff --git a/jelly/src/main/java/org/kohsuke/stapler/jelly/NbspTag.java b/jelly/src/main/java/org/kohsuke/stapler/jelly/NbspTag.java
+index 27fc7f3..42ffc8c 100644
+--- a/jelly/src/main/java/org/kohsuke/stapler/jelly/NbspTag.java
++++ b/jelly/src/main/java/org/kohsuke/stapler/jelly/NbspTag.java
+@@ -28,14 +28,12 @@ import org.apache.commons.jelly.MissingAttributeException;
+ import org.apache.commons.jelly.TagSupport;
+ import org.apache.commons.jelly.XMLOutput;
+ import org.xml.sax.SAXException;
+-import org.jvnet.maven.jellydoc.annotation.NoContent;
+ 
+ /**
+  * Writes out '&amp;nbsp;'.
+  *
+  * @author Kohsuke Kawaguchi
+  */
+- at NoContent
+ public class NbspTag extends TagSupport {
+     public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
+         try {
+diff --git a/jelly/src/main/java/org/kohsuke/stapler/jelly/OutTag.java b/jelly/src/main/java/org/kohsuke/stapler/jelly/OutTag.java
+index 8ed70d4..0c770db 100644
+--- a/jelly/src/main/java/org/kohsuke/stapler/jelly/OutTag.java
++++ b/jelly/src/main/java/org/kohsuke/stapler/jelly/OutTag.java
+@@ -29,8 +29,6 @@ import org.apache.commons.jelly.TagSupport;
+ import org.apache.commons.jelly.XMLOutput;
+ import org.apache.commons.jelly.expression.Expression;
+ import org.xml.sax.SAXException;
+-import org.jvnet.maven.jellydoc.annotation.NoContent;
+-import org.jvnet.maven.jellydoc.annotation.Required;
+ 
+ /**
+  * Tag that outputs the specified value but with escaping,
+@@ -39,11 +37,9 @@ import org.jvnet.maven.jellydoc.annotation.Required;
+  *
+  * @author Kohsuke Kawaguchi
+  */
+- at NoContent
+ public class OutTag extends TagSupport {
+     private Expression value;
+ 
+-    @Required
+     public void setValue(Expression value) {
+         this.value = value;
+     }
+diff --git a/jelly/src/main/java/org/kohsuke/stapler/jelly/RedirectTag.java b/jelly/src/main/java/org/kohsuke/stapler/jelly/RedirectTag.java
+index 4479a1e..7595131 100644
+--- a/jelly/src/main/java/org/kohsuke/stapler/jelly/RedirectTag.java
++++ b/jelly/src/main/java/org/kohsuke/stapler/jelly/RedirectTag.java
+@@ -28,8 +28,6 @@ import org.apache.commons.jelly.TagSupport;
+ import org.apache.commons.jelly.XMLOutput;
+ import org.kohsuke.stapler.Stapler;
+ import org.kohsuke.stapler.StaplerResponse;
+-import org.jvnet.maven.jellydoc.annotation.NoContent;
+-import org.jvnet.maven.jellydoc.annotation.Required;
+ 
+ import java.io.IOException;
+ 
+@@ -38,7 +36,6 @@ import java.io.IOException;
+  * 
+  * @author Kohsuke Kawaguchi
+  */
+- at NoContent
+ public class RedirectTag extends TagSupport {
+     private String url;
+ 
+@@ -46,7 +43,6 @@ public class RedirectTag extends TagSupport {
+      * Sets the target URL to redirect to. This just gets passed
+      * to {@link StaplerResponse#sendRedirect2(String)}.
+      */
+-    @Required
+     public void setUrl(String url) {
+         this.url = url;
+     }
+diff --git a/jelly/src/main/java/org/kohsuke/stapler/jelly/StatusCodeTag.java b/jelly/src/main/java/org/kohsuke/stapler/jelly/StatusCodeTag.java
+index 9c1db8e..848d6a5 100644
+--- a/jelly/src/main/java/org/kohsuke/stapler/jelly/StatusCodeTag.java
++++ b/jelly/src/main/java/org/kohsuke/stapler/jelly/StatusCodeTag.java
+@@ -25,8 +25,6 @@ package org.kohsuke.stapler.jelly;
+ 
+ import org.apache.commons.jelly.XMLOutput;
+ import org.apache.commons.jelly.JellyTagException;
+-import org.jvnet.maven.jellydoc.annotation.NoContent;
+-import org.jvnet.maven.jellydoc.annotation.Required;
+ 
+ /**
+  * Sets HTTP status code.
+@@ -36,14 +34,12 @@ import org.jvnet.maven.jellydoc.annotation.Required;
+  *
+  * @author Kohsuke Kawaguchi
+  */
+- at NoContent
+ public class StatusCodeTag extends AbstractStaplerTag {
+     private int code;
+ 
+     /**
+      * HTTP status code to send back.
+      */
+-    @Required
+     public void setValue(int code) {
+         this.code = code;
+     }
+diff --git a/jelly/src/main/java/org/kohsuke/stapler/jelly/StructuredMessageFormatTag.java b/jelly/src/main/java/org/kohsuke/stapler/jelly/StructuredMessageFormatTag.java
+index 5e018b4..78afe1c 100644
+--- a/jelly/src/main/java/org/kohsuke/stapler/jelly/StructuredMessageFormatTag.java
++++ b/jelly/src/main/java/org/kohsuke/stapler/jelly/StructuredMessageFormatTag.java
+@@ -27,7 +27,6 @@ import org.apache.commons.jelly.JellyTagException;
+ import org.apache.commons.jelly.XMLOutput;
+ import org.apache.commons.jelly.LocationAware;
+ import org.jvnet.localizer.LocaleProvider;
+-import org.jvnet.maven.jellydoc.annotation.Required;
+ import org.xml.sax.SAXException;
+ 
+ import java.util.ArrayList;
+@@ -44,7 +43,6 @@ public class StructuredMessageFormatTag extends AbstractStaplerTag implements Lo
+     private String key;
+     private ResourceBundle rb;
+ 
+-    @Required
+     public void setKey(String resourceKey) {
+         this.key = resourceKey;
+     }
+diff --git a/jelly/src/main/java/org/kohsuke/stapler/jelly/package-info.java b/jelly/src/main/java/org/kohsuke/stapler/jelly/package-info.java
+index bf5fdf0..294a0b6 100644
+--- a/jelly/src/main/java/org/kohsuke/stapler/jelly/package-info.java
++++ b/jelly/src/main/java/org/kohsuke/stapler/jelly/package-info.java
+@@ -24,7 +24,5 @@
+ /**
+  * Optional Jelly support, to write views in Jelly.
+  */
+- at TagLibUri("jelly:stapler")
+ package org.kohsuke.stapler.jelly;
+ 
+-import org.jvnet.maven.jellydoc.annotation.TagLibUri;
+\ No newline at end of file
+-- 
+1.8.1.4
+
diff --git a/0001-Use-XmlChars-class-from-external-jar.patch b/0001-Use-XmlChars-class-from-external-jar.patch
new file mode 100644
index 0000000..8e77f2e
--- /dev/null
+++ b/0001-Use-XmlChars-class-from-external-jar.patch
@@ -0,0 +1,45 @@
+From cdd88b497dc2c1ed90ca366ad13189b8e1334484 Mon Sep 17 00:00:00 2001
+From: Michal Srb <msrb at redhat.com>
+Date: Tue, 21 May 2013 14:30:16 +0200
+Subject: [PATCH] Use XmlChars class from external jar
+
+This class was previously bundled inside stapler
+---
+ core/src/main/java/org/kohsuke/stapler/export/XMLDataWriter.java | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/core/src/main/java/org/kohsuke/stapler/export/XMLDataWriter.java b/core/src/main/java/org/kohsuke/stapler/export/XMLDataWriter.java
+index 168a9d0..72f4b6e 100644
+--- a/core/src/main/java/org/kohsuke/stapler/export/XMLDataWriter.java
++++ b/core/src/main/java/org/kohsuke/stapler/export/XMLDataWriter.java
+@@ -25,6 +25,7 @@ package org.kohsuke.stapler.export;
+ 
+ import org.kohsuke.stapler.Stapler;
+ import org.kohsuke.stapler.StaplerResponse;
++import org.apache.xerces.util.XMLChar;
+ 
+ import java.util.Stack;
+ import java.io.Writer;
+@@ -115,8 +116,8 @@ final class XMLDataWriter implements DataWriter {
+     /*package*/ static String makeXmlName(String name) {
+         if (name.length()==0)   name="_";
+ 
+-        if (!XmlChars.isNameStart(name.charAt(0))) {
+-            if (name.length()>1 && XmlChars.isNameStart(name.charAt(1)))
++        if (!XMLChar.isNameStart(name.charAt(0))) {
++            if (name.length()>1 && XMLChar.isNameStart(name.charAt(1)))
+                 name = name.substring(1);
+             else
+                 name = '_'+name;
+@@ -124,7 +125,7 @@ final class XMLDataWriter implements DataWriter {
+ 
+         int i=1;
+         while (i<name.length()) {
+-            if (XmlChars.isNameChar(name.charAt(i)))
++            if (XMLChar.isName(name.charAt(i)))
+                 i++;
+             else
+                 name = name.substring(0,i)+name.substring(i+1);
+-- 
+1.8.1.4
+
diff --git a/0001-Use-original-dom4j-library-not-patched-version.patch b/0001-Use-original-dom4j-library-not-patched-version.patch
new file mode 100644
index 0000000..84a038e
--- /dev/null
+++ b/0001-Use-original-dom4j-library-not-patched-version.patch
@@ -0,0 +1,215 @@
+From dc82ff730db5b72adc6ca812649d77a2d141eb20 Mon Sep 17 00:00:00 2001
+From: Michal Srb <msrb at redhat.com>
+Date: Fri, 17 May 2013 12:29:37 +0200
+Subject: [PATCH] Use original dom4j library, not patched version
+
+Stapler uses slightly modified version of dom4j. This is a dirty hack
+which allows us to compile and use stapler with our unmodified dom4j
+library. Jenkins developers tried to push thier dom4j patches to upstream,
+but upstream didn't respond [1].
+
+Instead of modifying existing class HTMLWriter from dom4j, we create
+a new class which extends HTMLWriter. This new class should provide
+similar functionality as modified class used by Jenkins project.
+
+[1]: http://sourceforge.net/p/dom4j/patches/30/
+---
+ .../main/java/org/dom4j/io/JenkinsHTMLWriter.java  | 142 +++++++++++++++++++++
+ .../kohsuke/stapler/jelly/HTMLWriterOutput.java    |  10 +-
+ 2 files changed, 147 insertions(+), 5 deletions(-)
+ create mode 100644 jelly/src/main/java/org/dom4j/io/JenkinsHTMLWriter.java
+
+diff --git a/jelly/src/main/java/org/dom4j/io/JenkinsHTMLWriter.java b/jelly/src/main/java/org/dom4j/io/JenkinsHTMLWriter.java
+new file mode 100644
+index 0000000..d23de8f
+--- /dev/null
++++ b/jelly/src/main/java/org/dom4j/io/JenkinsHTMLWriter.java
+@@ -0,0 +1,142 @@
++package org.dom4j.io;
++
++import java.io.IOException;
++import java.io.OutputStream;
++import java.io.UnsupportedEncodingException;
++import java.io.Writer;
++import java.lang.reflect.Method;
++
++import org.dom4j.Entity;
++import org.dom4j.Node;
++import org.xml.sax.SAXException;
++
++public class JenkinsHTMLWriter extends org.dom4j.io.HTMLWriter {
++
++    private boolean disabled = false;
++
++    public JenkinsHTMLWriter(Writer writer) {
++        super(writer, DEFAULT_HTML_FORMAT);
++    }
++
++    public JenkinsHTMLWriter(Writer writer, OutputFormat format) {
++        super(writer, format);
++    }
++
++    public JenkinsHTMLWriter() throws UnsupportedEncodingException {
++        super(DEFAULT_HTML_FORMAT);
++    }
++
++    public JenkinsHTMLWriter(OutputFormat format)
++            throws UnsupportedEncodingException {
++        super(format);
++    }
++
++    public JenkinsHTMLWriter(OutputStream out)
++            throws UnsupportedEncodingException {
++        super(out, DEFAULT_HTML_FORMAT);
++    }
++
++    public JenkinsHTMLWriter(OutputStream out, OutputFormat format)
++            throws UnsupportedEncodingException {
++        super(out, format);
++    }
++
++    public boolean isEnabled() {
++        return !disabled;
++    }
++
++    public void setEnabled(boolean enabled) {
++        disabled = !enabled;
++    }
++
++    public void startCDATA() throws SAXException {
++        if (disabled) {
++            // invoke "super.super.startCDATA()"
++            invokeSSMethod(getSSMethod("startCDATA"));
++        }
++    }
++
++    public void endCDATA() throws SAXException {
++        if (disabled) {
++            // invoke "super.super.endCDATA()"
++            invokeSSMethod(getSSMethod("endCDATA"));
++        }
++    }
++
++    protected void writeCDATA(String text) throws IOException {
++
++        if (disabled || getOutputFormat().isXHTML()) {
++            // invoke "super.super.writeCDATA()"
++            invokeSSMethod(getSSMethod("writeCDATA", String.class), text);
++        } else {
++            writer.write(text);
++        }
++
++        lastOutputNodeType = Node.CDATA_SECTION_NODE;
++    }
++
++    protected void writeEntity(Entity entity) throws IOException {
++        if (disabled) {
++            // invoke "super.super.writeEntity()"
++            invokeSSMethod(getSSMethod("writeEntity", Entity.class), entity);
++        } else {
++            super.writeEntity(entity);
++        }
++    }
++
++    protected void writeString(String text) throws IOException {
++        if (disabled) {
++            // invoke "super.super.writeString()"
++            invokeSSMethod(getSSMethod("writeString", String.class), text);
++        } else {
++            super.writeString(text);
++        }
++    }
++
++    protected void writeClose(String qualifiedName) throws IOException {
++        if (disabled || !omitElementClose(qualifiedName)) {
++            // invoke "super.super.writeClose()"
++            invokeSSMethod(getSSMethod("writeClose", String.class),
++                    qualifiedName);
++        }
++    }
++
++    protected void writeEmptyElementClose(String qualifiedName)
++            throws IOException {
++        if (disabled || !omitElementClose(qualifiedName)) {
++            // invoke "super.super.writeEmptyElementClose()"
++            invokeSSMethod(getSSMethod("writeEmptyElementClose", String.class),
++                    qualifiedName);
++        } else {
++            if (getOutputFormat().isXHTML()) {
++                writer.write(" />");
++            } else {
++                writer.write(">");
++            }
++        }
++    }
++
++    // get Method object from parent's parent
++    private Method getSSMethod(String methodName, Class<?>... args) {
++
++        try {
++            return Class.forName("org.dom4j.io.XMLWriter").getMethod(
++                    methodName, args);
++        } catch (Exception e) {
++            e.printStackTrace();
++            throw new RuntimeException(
++                    "Failed to get method of parent's parent");
++        }
++    }
++
++    // invoke method from parent's parent
++    private Object invokeSSMethod(Method method, Object... args) {
++
++        try {
++            return method.invoke(this, args);
++        } catch (Exception e) {
++            e.printStackTrace();
++            throw new RuntimeException("Failed to invoke method from parent's parent");
++        }
++    }
++}
+diff --git a/jelly/src/main/java/org/kohsuke/stapler/jelly/HTMLWriterOutput.java b/jelly/src/main/java/org/kohsuke/stapler/jelly/HTMLWriterOutput.java
+index f6e6cc1..447b33f 100644
+--- a/jelly/src/main/java/org/kohsuke/stapler/jelly/HTMLWriterOutput.java
++++ b/jelly/src/main/java/org/kohsuke/stapler/jelly/HTMLWriterOutput.java
+@@ -24,7 +24,7 @@
+ package org.kohsuke.stapler.jelly;
+ 
+ import org.apache.commons.jelly.XMLOutput;
+-import org.dom4j.io.HTMLWriter;
++import org.dom4j.io.JenkinsHTMLWriter;
+ import org.dom4j.io.OutputFormat;
+ import java.io.IOException;
+ import java.io.OutputStream;
+@@ -38,17 +38,17 @@ import java.io.Writer;
+  * @author Alan.Harder at Sun.Com
+  */
+ public class HTMLWriterOutput extends XMLOutput {
+-    private HTMLWriter htmlWriter;
++    private JenkinsHTMLWriter htmlWriter;
+     private OutputFormat format;
+ 
+     public static HTMLWriterOutput create(OutputStream out) throws UnsupportedEncodingException {
+         OutputFormat format = createFormat();
+-        return new HTMLWriterOutput(new HTMLWriter(out, format), format, false);
++        return new HTMLWriterOutput(new JenkinsHTMLWriter(out, format), format, false);
+     }
+ 
+     public static HTMLWriterOutput create(Writer out, boolean escapeText) {
+         OutputFormat format = createFormat();
+-        return new HTMLWriterOutput(new HTMLWriter(out, format), format, escapeText);
++        return new HTMLWriterOutput(new JenkinsHTMLWriter(out, format), format, escapeText);
+     }
+ 
+     private static OutputFormat createFormat() {
+@@ -59,7 +59,7 @@ public class HTMLWriterOutput extends XMLOutput {
+         return format;
+     }
+ 
+-    private HTMLWriterOutput(HTMLWriter hw, OutputFormat fmt, boolean escapeText) {
++    private HTMLWriterOutput(JenkinsHTMLWriter hw, OutputFormat fmt, boolean escapeText) {
+         super(hw);
+         hw.setEscapeText(escapeText);
+         this.htmlWriter = hw;
+-- 
+1.8.1.4
+
diff --git a/0001-Use-unbundled-class-from-glassfish-jaxb.patch b/0001-Use-unbundled-class-from-glassfish-jaxb.patch
new file mode 100644
index 0000000..4a3a91c
--- /dev/null
+++ b/0001-Use-unbundled-class-from-glassfish-jaxb.patch
@@ -0,0 +1,46 @@
+From 009a2f6eb8982e294eca44a61add7892ff41a718 Mon Sep 17 00:00:00 2001
+From: Michal Srb <msrb at redhat.com>
+Date: Wed, 22 May 2013 14:52:58 +0200
+Subject: [PATCH] Use unbundled class from glassfish-jaxb
+
+---
+ .../main/java/org/kohsuke/stapler/export/SchemaGenerator.java    | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/core/src/main/java/org/kohsuke/stapler/export/SchemaGenerator.java b/core/src/main/java/org/kohsuke/stapler/export/SchemaGenerator.java
+index 6ca4d9b..75a228e 100644
+--- a/core/src/main/java/org/kohsuke/stapler/export/SchemaGenerator.java
++++ b/core/src/main/java/org/kohsuke/stapler/export/SchemaGenerator.java
+@@ -23,6 +23,8 @@
+ 
+ package org.kohsuke.stapler.export;
+ 
++import com.sun.xml.bind.v2.model.nav.ReflectionNavigator;
++
+ import com.sun.xml.txw2.TXW;
+ import com.sun.xml.txw2.output.ResultFactory;
+ import java.beans.Introspector;
+@@ -47,6 +49,9 @@ import java.util.Stack;
+  * @author Kohsuke Kawaguchi
+  */
+ public class SchemaGenerator {
++
++	private static final ReflectionNavigator reflectionNavigator = ReflectionNavigator.REFLECTION;
++
+     private final Stack<Model> queue = new Stack<Model>();
+     private final Set<Model> written = new HashSet<Model>();
+     /**
+@@ -114,8 +119,8 @@ public class SchemaGenerator {
+             } else
+             if(Collection.class.isAssignableFrom(t)) {
+                 isCollection = true;
+-                itemType = TypeUtil.erasure(
+-                    TypeUtil.getTypeArgument(TypeUtil.getBaseClass(p.getGenericType(),Collection.class),0));
++                itemType = reflectionNavigator.erasure(
++                    reflectionNavigator.getTypeArgument(reflectionNavigator.getBaseClass(p.getGenericType(),Collection.class),0));
+             } else {
+                 isCollection = false;
+                 itemType = t;
+-- 
+1.8.1.4
+
diff --git a/create-tarball.sh b/create-tarball.sh
new file mode 100755
index 0000000..c9d3471
--- /dev/null
+++ b/create-tarball.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+
+if [ $# -ne 1 ]; then
+    echo "Usage: ./create-sources VERSION"
+    exit 1
+fi
+
+VERSION=${1}
+NAME="stapler"
+
+wget https://github.com/${NAME}/${NAME}/archive/${NAME}-parent-${VERSION}.tar.gz
+tar xzvf ${NAME}-parent-${VERSION}.tar.gz
+rm ${NAME}-parent-${VERSION}.tar.gz
+find ./${NAME}-${NAME}-parent-${VERSION} -name "*.jar" -delete
+find ./${NAME}-${NAME}-parent-${VERSION} -name "*.zip" -delete
+# Remove jruby module from tarball, it contains bundled 3rd party project (haml)
+rm -Rf ./${NAME}-${NAME}-parent-${VERSION}/jruby
+# Bundled class from glassfish-jaxb
+rm -Rf ./${NAME}-${NAME}-parent-${VERSION}/core/src/main/java/org/kohsuke/stapler/export/TypeUtil.java
+# Budled class from bea-stax
+rm -Rf ./${NAME}-${NAME}-parent-${VERSION}/core/src/main/java/org/kohsuke/stapler/export/XmlChars.java
+# We don't need examples
+rm -Rf ./${NAME}-${NAME}-parent-${VERSION}/core/example
+rm -Rf ./${NAME}-${NAME}-parent-${VERSION}/core/ref
+rm -Rf ./${NAME}-${NAME}-parent-${VERSION}/core/maven-example
+# Generated site
+rm -Rf ./${NAME}-${NAME}-parent-${VERSION}/src/
+tar czvf ${NAME}-${VERSION}-clean.tar.gz ./${NAME}-${NAME}-parent-${VERSION}
+
diff --git a/sources b/sources
index e69de29..7077402 100644
--- a/sources
+++ b/sources
@@ -0,0 +1,2 @@
+f6d9859b23696183224daec41f5ef760  stapler-1.209-clean.tar.gz
+3b83ef96387f14655fc854ddc3c6bd57  LICENSE-2.0.txt
diff --git a/stapler.spec b/stapler.spec
new file mode 100644
index 0000000..a60958a
--- /dev/null
+++ b/stapler.spec
@@ -0,0 +1,196 @@
+Name:           stapler
+Version:        1.209
+Release:        2%{?dist}
+Summary:        Stapler Java web framework
+
+# Project is licensed mostly under 2-clause BSD license
+# It contains following ASL 2.0 licensed files:
+# groovy/src/main/java/org/kohsuke/stapler/jelly/groovy/SimpleTemplateParser.java
+# groovy/src/main/java/org/kohsuke/stapler/jelly/groovy/JellyBuilder.java (partly under ASL 2.0)
+License:        BSD and ASL 2.0
+URL:            http://stapler.kohsuke.org/
+# ./create-tarball.sh
+Source0:        stapler-%{version}-clean.tar.gz
+# Stapler/Jenkins guys don't want to add whole ASL 2.0 license
+# text to the repository. Their opinion is that having short ASL 2.0 notice
+# in affected files is enough
+Source1:        http://www.apache.org/licenses/LICENSE-2.0.txt
+
+# Upstream uses unmodified objectweb-asm3, but under different namespace
+Patch0:         0001-Fix-asm-namespace.patch
+# We don't have maven-jellydoc-plugin
+Patch1:         0001-Remove-jellydoc-annotations.patch
+# This is only temporary workaround
+# Build against our unmodified dom4j library, not against its forked version
+# Upstream uses org.jvnet.hudson.dom4j:dom4j
+# TODO: apply proper Jenkins patches on dom4j and remove this
+Patch2:         0001-Use-original-dom4j-library-not-patched-version.patch
+# We do not bundle classes from other project, fix that
+# (this need some testing)
+Patch3:         0001-Use-XmlChars-class-from-external-jar.patch
+Patch4:         0001-Use-unbundled-class-from-glassfish-jaxb.patch
+
+BuildArch:      noarch
+
+BuildRequires:  maven-local
+BuildRequires:  mvn(com.google.guava:guava)
+BuildRequires:  mvn(com.sun.xml.bind:jaxb-impl)
+BuildRequires:  mvn(com.sun.xml.txw2:txw2)
+BuildRequires:  mvn(commons-beanutils:commons-beanutils)
+BuildRequires:  mvn(commons-discovery:commons-discovery)
+BuildRequires:  mvn(commons-fileupload:commons-fileupload)
+BuildRequires:  mvn(commons-io:commons-io)
+BuildRequires:  mvn(dom4j:dom4j)
+BuildRequires:  mvn(javax.servlet:jsp-api)
+BuildRequires:  mvn(javax.servlet:servlet-api)
+BuildRequires:  mvn(net.sf.json-lib:json-lib)
+BuildRequires:  mvn(net.sf.ezmorph:ezmorph)
+BuildRequires:  mvn(net.sourceforge.findbugs:annotations)
+BuildRequires:  mvn(org.apache.maven.plugins:maven-compiler-plugin)
+BuildRequires:  mvn(org.apache.maven.plugins:maven-enforcer-plugin)
+BuildRequires:  mvn(org.apache.maven.plugins:maven-release-plugin)
+BuildRequires:  mvn(org.apache.maven.plugins:maven-site-plugin)
+BuildRequires:  mvn(org.apache.tomcat:tomcat-el-api)
+BuildRequires:  mvn(org.codehaus.groovy:groovy)
+BuildRequires:  mvn(org.jenkins-ci:annotation-indexer)
+BuildRequires:  mvn(org.jenkins-ci:commons-jelly)
+BuildRequires:  mvn(org.jvnet.localizer:localizer)
+BuildRequires:  mvn(org.jvnet:tiger-types)
+BuildRequires:  mvn(org.kohsuke.metainf-services:metainf-services)
+BuildRequires:  mvn(org.kohsuke:pom)
+BuildRequires:  mvn(xerces:xercesImpl)
+BuildRequires:  mvn(asm:asm)
+
+
+%description
+Stapler is a library that "staples" your application objects to URLs,
+making it easier to write web applications. The core idea of Stapler
+is to automatically assign URLs for your objects, creating an intuitive
+URL hierarchy.
+
+%package        jsp
+Summary:        JSP module for %{name}
+
+%description    jsp
+This package contains %{summary}.
+
+%package        jelly
+Summary:        Jelly module for %{name}
+
+%description    jelly
+This package contains %{summary}.
+
+%package        groovy
+Summary:        Groovy module for %{name}
+
+%description    groovy
+This package contains %{summary}.
+
+%package        parent
+Summary:        Parent POM file for %{name}
+
+%description    parent
+This package contains parent POM file for %{name}.
+
+%package        javadoc
+Summary:        Javadoc for %{name}
+
+%description    javadoc
+This package contains the API documentation for %{name}.
+
+
+%prep
+%setup -q -n %{name}-%{name}-parent-%{version}
+
+cp %{SOURCE1} LICENSE
+
+%patch0 -p1
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p1
+
+# Missing org.jruby-rack:jruby-rack
+%pom_disable_module jruby
+
+# Missing org.zeroturnaround:jr-sdk
+%pom_disable_module jrebel
+
+# Fix json-lib groupId
+%pom_xpath_replace "pom:dependency[pom:groupId[text()='org.kohsuke.stapler']]/pom:groupId" \
+  "<groupId>net.sf.json-lib</groupId>" core
+
+# Fix groovy artifactId
+%pom_xpath_replace "pom:dependency[pom:artifactId[text()='groovy-all']]/pom:artifactId" \
+  "<artifactId>groovy</artifactId>" core
+%pom_xpath_replace "pom:dependency[pom:artifactId[text()='groovy-all']]/pom:artifactId" \
+  "<artifactId>groovy</artifactId>" groovy
+
+# Fix asm groupId:artifactId
+%pom_xpath_replace "pom:dependency[pom:artifactId[text()='asm3']]" \
+"<dependency>
+   <groupId>asm</groupId>
+   <artifactId>asm</artifactId>
+   <scope>compile</scope>
+ </dependency>" core
+
+# Fix findbugs groupId:artifactId
+%pom_xpath_replace "pom:dependency[pom:artifactId[text()='findbugs-annotations']]" \
+"<dependency>
+   <groupId>net.sourceforge.findbugs</groupId>
+   <artifactId>annotations</artifactId>
+   <scope>compile</scope>
+ </dependency>" core
+
+
+# Annotations removed by patch1, we don't need this anymore
+%pom_remove_dep ":jellydoc-annotations" jelly
+
+# Use original dom4j, not forked version
+%pom_xpath_replace "pom:dependency[pom:artifactId[text()='dom4j']]/pom:groupId" \
+  "<groupId>dom4j</groupId>" jelly
+
+# We don't have these extensions
+%pom_xpath_remove "pom:extension[pom:artifactId[text()='wagon-webdav']]"
+%pom_xpath_remove "pom:extension[pom:artifactId[text()='wagon-gitsite']]"
+
+# We don't have these plugins
+%pom_remove_plugin :fix1600
+%pom_remove_plugin :maven-jellydoc-plugin
+
+# Replacement for unbundled classes
+%pom_add_dep xerces:xercesImpl core
+%pom_add_dep com.sun.xml.bind:jaxb-impl core
+
+%build
+# Tests require jetty 6
+%mvn_build -s -f
+
+%install
+%mvn_install
+
+
+%files -f .mfiles-stapler
+%doc LICENSE
+%files jsp -f .mfiles-stapler-jsp
+%files jelly -f .mfiles-stapler-jelly
+%files groovy -f .mfiles-stapler-groovy
+%files parent -f .mfiles-stapler-parent
+%doc LICENSE
+%files javadoc -f .mfiles-javadoc
+# rpmlint complains about this file. It's automatically generated,
+# but without proper shebang
+%exclude %{_javadocdir}/%{name}/javadoc.sh
+%doc LICENSE
+
+
+%changelog
+* Wed May 29 2013 Michal Srb <msrb at redhat.com> - 1.209-2
+- Exclude javadoc.sh file from javadoc
+
+* Mon May 06 2013 Michal Srb <msrb at redhat.com> - 1.209-1
+- Update to upstream version 1.209
+
+* Mon May 06 2013 Michal Srb <msrb at redhat.com> - 1.207-1
+- Initial package
+


More information about the scm-commits mailing list