Не удалось получить доступ к полезной нагрузке Jira в JAVA (java.утиль.Массивы$ArrayList С)

вот моя информация потока. Попытка получить одну проблему от JIRA и хотите настроить этот issueID в другой проект. Здесь я хочу использовать пользовательский трансформатор и настроить все объекты с помощью JAVA-кодирования.

<jira:config name="Jira" connectionUser="XXXXXXX" connectionPassword="XXXXX" connectionAddress="http://XXXXXXX/rpc/soap/jirasoapservice-v2" doc:name="Jira">
        <jira:connection-pooling-profile initialisationPolicy="INITIALISE_ONE" exhaustedAction="WHEN_EXHAUSTED_GROW"/>
        <reconnect count="3"/>
    </jira:config>

    <http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8081" doc:name="HTTP Listener Configuration"/>


  <flow name="jira-pocFlow">
        <http:listener config-ref="HTTP_Listener_Configuration" path="/input" doc:name="HTTP"/>
        <jira:get-issues-from-jql-search config-ref="Jira" jqlSearch="id=MRT-75" maxNumResults="100" doc:name="Jira"/>
        <set-variable variableName="payload" value="#[payload[0]]" doc:name="Variable"/>
        <component class="JIRATransformer" doc:name="Java"/>
        <jira:create-issue-using-object config-ref="Jira"    doc:name="Jira"   >
            <jira:issue ref="#[message.payload]"/>
        </jira:create-issue-using-object>
        <logger level="INFO" doc:name="Logger"/>
    </flow>

Я пытаюсь получить доступ к объекту полезной нагрузки JIRA, но он выдает мне ошибку как исключение типа Cast.

@Override
public Object transformMessage(MuleMessage message, String outputEncoding) 
        throws org.mule.api.transformer.TransformerException { 

      ArrayList<com.atlassian.jira.rpc.soap.beans.RemoteIssue> list = new ArrayList(Arrays.asList(message.getPayload()));

    for(RemoteIssue q : (List<RemoteIssue>) list){
        System.out.println("Print AssigneeInfo:->"+q.getAssignee());
    }


 }

enter image description here

Я получаю следующие ошибки.

ERROR 2015-04-15 19:58:59,526 [[jira-poc].HTTP_Listener_Configuration.worker.01] org.mule.exception.DefaultMessagingExceptionStrategy: 
********************************************************************************
Message               : Component that caused exception is: DefaultJavaComponent{jira-pocFlow.component.887693985}. Message payload is of type: Arrays$ArrayList
Code                  : MULE_ERROR--2
--------------------------------------------------------------------------------
Exception stack is:
1. java.util.Arrays$ArrayList cannot be cast to com.atlassian.jira.rpc.soap.beans.RemoteIssue (java.lang.ClassCastException)
  JIRATransformer:29 (null)
2. Component that caused exception is: DefaultJavaComponent{jira-pocFlow.component.887693985}. Message payload is of type: Arrays$ArrayList (org.mule.component.ComponentException)
  org.mule.component.DefaultComponentLifecycleAdapter:348 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/component/ComponentException.html)
--------------------------------------------------------------------------------
Root Exception stack trace:
java.lang.ClassCastException: java.util.Arrays$ArrayList cannot be cast to com.atlassian.jira.rpc.soap.beans.RemoteIssue
    at JIRATransformer.transformMessage(JIRATransformer.java:29)
    at org.mule.transformer.AbstractMessageTransformer.transform(AbstractMessageTransformer.java:141)
    at org.mule.transformer.AbstractMessageTransformer.transform(AbstractMessageTransformer.java:69)
    + 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)
********************************************************************************

Я попытался следовать этому URL-адресу документации, но не смог чтобы выяснить это. http://mulesoft.github.io/jira-connector/java/com/atlassian/jira/rpc/soap/beans/RemoteIssue.html

Я хочу получить доступ к этой полезной нагрузке и хочу обновить некоторые детали из объекта полезной нагрузки здесь. Я могу получить доступ к полезной нагрузке с помощью выражения mel #[полезная нагрузка[0]], и он автоматически закрывает его для com.компании Atlassian.Джира.протокол RPC.мыло.зернышки.RemoteIssue, но используя Java-код, я не могу ввести его.

не могли бы вы помочь мне правильно бросить этот объект так я могу получить доступ к полезной нагрузке здесь ?

спасибо.

1 ответов


в вашем component.

этой Arrays.asList(message.getPayload()) переносит полезную нагрузку сообщения в список. Но полезная нагрузка сообщения уже List<RemoteIssues> таким образом, эта упаковка не нужна.

если вы посмотрите на исходный код разъема JIRA, вы увидите, что MuleSoft предпочитает поздний кастинг RemoteIssue. Я предлагаю вам сделать то же самое:

for (Object o : ((List) message.getPayload())) {
  RemoteIssue ri = (RemoteIssue) o;
  ...
}