[ 
https://issues.apache.org/jira/browse/AUTOTAG-22?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16155223#comment-16155223
 ] 

mck commented on AUTOTAG-22:
----------------------------

{quote}We do need to be careful to support multiple versions if need be, the 
idea of autotag is to provide support for technologies people use as they use 
it, not to enforce specific versions on to people.{quote}
Ignore that. QDox is only used internally by AutoTag. Once QDox reaches a 
formal 2.0 release I will further review and commit this patch. Thanks.

> Port to Qdox 2.x
> ----------------
>
>                 Key: AUTOTAG-22
>                 URL: https://issues.apache.org/jira/browse/AUTOTAG-22
>             Project: Tiles Autotag
>          Issue Type: Improvement
>            Reporter: gil cattaneo
>            Assignee: mck
>            Priority: Minor
>         Attachments: tiles-autotag-1.2-port-core-to-qdox2.0-M5.patch, 
> tiles-autotag-1.2-port-core-to-qdox2.patch
>
>
> Hi
> I wrote a small patch tile-autotag-core to use Qdox 2.x
> any suggestion is appreciated
> thanks in advance
> regards
> diff -Nru 
> tiles-autotag-1.2/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/QDoxTemplateSuiteFactory.java
>  
> tiles-autotag-1.2.qdox/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/QDoxTemplateSuiteFactory.java
> --- 
> tiles-autotag-1.2/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/QDoxTemplateSuiteFactory.java
>     2016-07-16 10:35:22.000000000 +0200
> +++ 
> tiles-autotag-1.2.qdox/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/QDoxTemplateSuiteFactory.java
>        2016-11-23 17:35:48.472871076 +0100
> @@ -23,6 +23,7 @@
>  import java.io.File;
>  import java.io.IOException;
>  import java.net.URL;
> +import java.nio.charset.Charset;
>  import java.util.ArrayList;
>  import java.util.List;
>  
> @@ -34,13 +35,12 @@
>  import org.apache.tiles.autotag.model.TemplateSuite;
>  import org.apache.tiles.autotag.model.TemplateSuiteFactory;
>  
> -import com.thoughtworks.qdox.JavaDocBuilder;
> -import com.thoughtworks.qdox.model.Annotation;
> +import com.thoughtworks.qdox.JavaProjectBuilder;
>  import com.thoughtworks.qdox.model.DocletTag;
> +import com.thoughtworks.qdox.model.JavaAnnotation;
>  import com.thoughtworks.qdox.model.JavaClass;
>  import com.thoughtworks.qdox.model.JavaMethod;
>  import com.thoughtworks.qdox.model.JavaParameter;
> -import com.thoughtworks.qdox.model.Type;
>  
>  /**
>   * Creates a template suite using QDox.
> @@ -57,7 +57,7 @@
>      /**
>       * The Javadoc builder.
>       */
> -    private JavaDocBuilder builder;
> +    private JavaProjectBuilder builder;
>  
>      /**
>       * The name of the suite.
> @@ -80,7 +80,9 @@
>       * @param sourceFiles All the source files to parse.
>       */
>      public QDoxTemplateSuiteFactory(File... sourceFiles) {
> -        builder = new JavaDocBuilder();
> +        builder = new JavaProjectBuilder();
> +        // Avoid NullPointerException: charsetName
> +        builder.setEncoding( Charset.defaultCharset().name() ); 
>          try {
>              for (File file : sourceFiles) {
>                  builder.addSource(file);
> @@ -97,7 +99,9 @@
>       * @param urls All the URLs of source files to parse.
>       */
>      public QDoxTemplateSuiteFactory(URL... urls) {
> -        builder = new JavaDocBuilder();
> +        builder = new JavaProjectBuilder();
> +        // Avoid NullPointerException: charsetName
> +        builder.setEncoding( Charset.defaultCharset().name() ); 
>          try {
>              for (URL url : urls) {
>                  builder.addSource(url);
> @@ -193,18 +197,18 @@
>              String exportedName = parameter.getName();
>              boolean required = false;
>              String defaultValue = null;
> -            Annotation[] annotations = parameter.getAnnotations();
> -            if (annotations != null && annotations.length > 0) {
> +            List<JavaAnnotation> annotations = parameter.getAnnotations();
> +            if (annotations != null) {
>                  boolean found = false;
> -                for (int i = 0; i < annotations.length && !found; i++) {
> -                    if 
> (Parameter.class.getName().equals(annotations[i].getType().getFullyQualifiedName()))
>  {
> +                for (JavaAnnotation annotation : annotations) {
> +                    if 
> (Parameter.class.getName().equals(annotation.getType().getFullyQualifiedName()))
>  {
>                          found = true;
> -                        String candidateName = (String) 
> annotations[i].getNamedParameter("name");
> +                        String candidateName = 
> annotation.getNamedParameter("name").toString();
>                          if (candidateName != null && candidateName.length() 
> > 2) {
>                              exportedName = candidateName.substring(1, 
> candidateName.length() - 1);
>                          }
> -                        required = 
> "true".equals(annotations[i].getNamedParameter("required"));
> -                        candidateName = (String) 
> annotations[i].getNamedParameter("defaultValue");
> +                        required = 
> "true".equals(annotation.getNamedParameter("required").toString());
> +                        candidateName = 
> annotation.getNamedParameter("defaultValue").toString();
>                          if (candidateName != null && candidateName.length() 
> > 2) {
>                              defaultValue = candidateName.substring(1, 
> candidateName.length() - 1);
>                          }
> @@ -221,12 +225,12 @@
>          TemplateMethod templateMethod = new TemplateMethod(method.getName(),
>                  params);
>          templateMethod.setDocumentation(method.getComment());
> -        DocletTag[] tags = method.getTagsByName("param");
> +        List<DocletTag> tags = method.getTagsByName("param");
>          for (DocletTag tag : tags) {
> -            String[] tagParams = tag.getParameters();
> -            if (tagParams.length > 0) {
> +            List<String> tagParams = tag.getParameters();
> +            if (tagParams.size() > 0) {
>                  TemplateParameter templateParameter = templateMethod
> -                        .getParameterByName(tagParams[0]);
> +                        .getParameterByName(tagParams.get(0));
>                  if (templateParameter != null) {
>                      String tagValue = tag.getValue();
>                      int pos = tagValue.indexOf(" ");
> @@ -245,22 +249,22 @@
>       * @return <code>true</code> if it is an execute method.
>       */
>      private boolean isFeasible(JavaMethod method) {
> -        Type returns = method.getReturns();
> +        JavaClass returns = method.getReturns();
>          if ("execute".equals(method.getName()) && returns != null
>                  && "void".equals(returns.getFullyQualifiedName())
>                  && method.isPublic() && !method.isStatic()
> -                && !method.isAbstract() && !method.isConstructor()) {
> -            JavaParameter[] params = method.getParameters();
> -            if (params.length > 0) {
> -                JavaParameter param = params[params.length - 1];
> +                && !method.isAbstract()) {
> +            List<JavaParameter> params = method.getParameters();
> +            if (params.size() > 0) {
> +                JavaParameter param = params.get(params.size() - 1);
>                  if (requestClass.equals(
>                          param.getType().getFullyQualifiedName())) {
>                      return true;
>                  }
>              }
> -            if (params.length >= 2) {
> -                JavaParameter param1 = params[params.length - 2];
> -                JavaParameter param2 = params[params.length - 1];
> +            if (params.size() >= 2) {
> +                JavaParameter param1 = params.get(params.size() - 2);
> +                JavaParameter param2 = params.get(params.size() - 1);
>                  if (requestClass.equals(
>                          param1.getType().getFullyQualifiedName())
>                          && ModelBody.class.getName().equals(
> @@ -272,3 +276,4 @@
>          return false;
>      }
>  }
> +



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to