src/share/jaxws_classes/com/sun/xml/internal/ws/client/sei/StubAsyncHandler.java

Tue, 06 Mar 2012 16:09:35 -0800

author
ohair
date
Tue, 06 Mar 2012 16:09:35 -0800
changeset 286
f50545b5e2f1
child 368
0989ad8c0860
permissions
-rw-r--r--

7150322: Stop using drop source bundles in jaxws
Reviewed-by: darcy, ohrstrom

     1 /*
     2  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.  Oracle designates this
     8  * particular file as subject to the "Classpath" exception as provided
     9  * by Oracle in the LICENSE file that accompanied this code.
    10  *
    11  * This code is distributed in the hope that it will be useful, but WITHOUT
    12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    14  * version 2 for more details (a copy is included in the LICENSE file that
    15  * accompanied this code).
    16  *
    17  * You should have received a copy of the GNU General Public License version
    18  * 2 along with this work; if not, write to the Free Software Foundation,
    19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
    20  *
    21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
    22  * or visit www.oracle.com if you need additional information or have any
    23  * questions.
    24  */
    26 package com.sun.xml.internal.ws.client.sei;
    28 import java.util.List;
    30 import javax.jws.soap.SOAPBinding.Style;
    31 import com.sun.xml.internal.ws.model.JavaMethodImpl;
    32 import com.sun.xml.internal.ws.model.ParameterImpl;
    33 import com.sun.xml.internal.ws.model.WrapperParameter;
    35 public class StubAsyncHandler extends StubHandler {
    37     private final Class asyncBeanClass;
    39         public StubAsyncHandler(JavaMethodImpl jm, JavaMethodImpl sync) {
    40         super(sync);
    42         List<ParameterImpl> rp = sync.getResponseParameters();
    43         int size = 0;
    44         for( ParameterImpl param : rp ) {
    45             if (param.isWrapperStyle()) {
    46                 WrapperParameter wrapParam = (WrapperParameter)param;
    47                 size += wrapParam.getWrapperChildren().size();
    48                 if (sync.getBinding().getStyle() == Style.DOCUMENT) {
    49                     // doc/asyncBeanClass - asyncBeanClass bean is in async signature
    50                     // Add 2 or more so that it is considered as async bean case
    51                     size += 2;
    52                 }
    53             } else {
    54                 ++size;
    55             }
    56         }
    58         Class tempWrap = null;
    59         if (size > 1) {
    60             rp = jm.getResponseParameters();
    61             for(ParameterImpl param : rp) {
    62                 if (param.isWrapperStyle()) {
    63                     WrapperParameter wrapParam = (WrapperParameter)param;
    64                     if (sync.getBinding().getStyle() == Style.DOCUMENT) {
    65                         // doc/asyncBeanClass style
    66                         tempWrap = (Class)wrapParam.getTypeInfo().type;
    67                         break;
    68                     }
    69                     for(ParameterImpl p : wrapParam.getWrapperChildren()) {
    70                         if (p.getIndex() == -1) {
    71                             tempWrap = (Class)p.getTypeInfo().type;
    72                             break;
    73                         }
    74                     }
    75                     if (tempWrap != null) {
    76                         break;
    77                     }
    78                 } else {
    79                     if (param.getIndex() == -1) {
    80                         tempWrap = (Class)param.getTypeInfo().type;
    81                         break;
    82                     }
    83                 }
    84             }
    85         }
    86         asyncBeanClass = tempWrap;
    88         switch(size) {
    89             case 0 :
    90                 responseBuilder = buildResponseBuilder(sync, ValueSetterFactory.NONE);
    91                 break;
    92             case 1 :
    93                 responseBuilder = buildResponseBuilder(sync, ValueSetterFactory.SINGLE);
    94                 break;
    95             default :
    96                 responseBuilder = buildResponseBuilder(sync, new ValueSetterFactory.AsyncBeanValueSetterFactory(asyncBeanClass));
    97         }
    99     }
   101         protected void initArgs(Object[] args) throws Exception {
   102         if (asyncBeanClass != null) {
   103             args[0] = asyncBeanClass.newInstance();
   104         }
   105         }
   107     ValueGetterFactory getValueGetterFactory() {
   108         return ValueGetterFactory.ASYNC;
   109     }
   110 }

mercurial