[jboss-jira] [JBoss JIRA] (LOGTOOL-78) Wrong exception constructor is matched

Darran Lofthouse (JIRA) jira-events at lists.jboss.org
Thu Nov 21 12:51:06 EST 2013


    [ https://issues.jboss.org/browse/LOGTOOL-78?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12925860#comment-12925860 ] 

Darran Lofthouse commented on LOGTOOL-78:
-----------------------------------------

The following pull request contains a commit that should be reverted once proper exception initialisation is possible: -
  https://github.com/xnio/xnio/pull/37
                
> Wrong exception constructor is matched
> --------------------------------------
>
>                 Key: LOGTOOL-78
>                 URL: https://issues.jboss.org/browse/LOGTOOL-78
>             Project: Log Tool
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>    Affects Versions: 1.2.0.Beta1
>            Reporter: David Lloyd
>            Assignee: James Perkins
>
> The following exception class:
> {code}
> /*
>  * JBoss, Home of Professional Open Source
>  *
>  * Copyright 2013 Red Hat, Inc. and/or its affiliates.
>  *
>  * Licensed under the Apache License, Version 2.0 (the "License");
>  * you may not use this file except in compliance with the License.
>  * You may obtain a copy of the License at
>  *
>  *     http://www.apache.org/licenses/LICENSE-2.0
>  *
>  * Unless required by applicable law or agreed to in writing, software
>  * distributed under the License is distributed on an "AS IS" BASIS,
>  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
>  * See the License for the specific language governing permissions and
>  * limitations under the License.
>  */
> package org.xnio.http;
> import java.io.IOException;
> /**
>  * An extension of {@link IOException} used to convey that a connection has failed as a redirect has been encountered.
>  *
>  * @author <a href="mailto:darran.lofthouse at jboss.com">Darran Lofthouse</a>
>  */
> public class RedirectException extends IOException {
>     private final int statusCode;
>     private final String location;
>     /**
>      * Constructs a new {@code RedirectException} instance.  The message is left blank ({@code null}), and no cause is
>      * specified.
>      *
>      * @param statusCode the status code
>      * @param location the redirection location, if any
>      */
>     public RedirectException(final int statusCode, final String location) {
>         this.statusCode = statusCode;
>         this.location = location;
>     }
>     /**
>      * Constructs a new {@code RedirectException} instance with an initial message.  No cause is specified.
>      *
>      * @param msg the message
>      * @param statusCode the status code
>      * @param location the redirection location, if any
>      */
>     public RedirectException(final String msg, final int statusCode, final String location) {
>         super(msg);
>         this.statusCode = statusCode;
>         this.location = location;
>     }
>     /**
>      * Constructs a new {@code RedirectException} instance with an initial cause.  If a non-{@code null} cause is
>      * specified, its message is used to initialize the message of this {@code RedirectException}; otherwise the message
>      * is left blank ({@code null}).
>      *
>      * @param cause the cause
>      * @param statusCode the status code
>      * @param location the redirection location, if any
>      */
>     public RedirectException(final Throwable cause, final int statusCode, final String location) {
>         super(cause);
>         this.statusCode = statusCode;
>         this.location = location;
>     }
>     /**
>      * Constructs a new {@code RedirectException} instance with an initial message and cause.
>      *
>      * @param msg the message
>      * @param cause the cause
>      * @param statusCode the status code
>      * @param location the redirection location, if any
>      */
>     public RedirectException(final String msg, final Throwable cause, final int statusCode, final String location) {
>         super(msg, cause);
>         this.statusCode = statusCode;
>         this.location = location;
>     }
>     /**
>      * Get the HTTP status code.  This is the reason for the redirect.
>      *
>      * @return the status code
>      */
>     public int getStatusCode() {
>         return statusCode;
>     }
>     /**
>      * Get the redirection target location.
>      *
>      * @return the redirection target location
>      */
>     public String getLocation() {
>         return location;
>     }
> }
> {code}
> with this declaration:
> {code}
>     @Message(id = 816, value = "Redirect encountered establishing connection")
>     RedirectException redirect(@Param int responseCode, @Param String location);
> {code}
> results in this generated code:
> {code}
>     public final org.xnio.http.RedirectException redirect(final int responseCode, final java.lang.String location) {
>         org.xnio.http.RedirectException result = new org.xnio.http.RedirectException(responseCode, java.lang.String.format(redirect$str()));
>         java.lang.StackTraceElement[] st = result.getStackTrace();
>         result.setStackTrace(java.util.Arrays.copyOfRange(st, 1, st.length));
>         return result;
>     }
> {code}
> Which doesn't make any sense.  There is clearly a message so the rule should be to match an exception with a message parameter followed by {{@Param}} annotations.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the jboss-jira mailing list