blob: 9aa2642241a58d43c84bc39656b49bb075ddcf6e [file] [log] [blame]
/*
* Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
package com.sun.tools.internal.ws.processor.model;
import com.sun.codemodel.internal.JClass;
import com.sun.codemodel.internal.JCodeModel;
import com.sun.tools.internal.ws.processor.model.java.JavaSimpleType;
import com.sun.tools.internal.ws.processor.model.java.JavaType;
import com.sun.tools.internal.ws.processor.model.jaxb.JAXBTypeAndAnnotation;
import com.sun.tools.internal.ws.wsdl.framework.Entity;
import javax.xml.namespace.QName;
/**
* @author Vivek Pandey
*
*
*/
public class AsyncOperation extends Operation {
/**
*
*/
public AsyncOperation(Entity entity) {
super(entity);
// TODO Auto-generated constructor stub
}
/**
* @param operation
*/
public AsyncOperation(Operation operation, Entity entity) {
super(operation, entity);
this.operation = operation;
}
/**
* @param name
*/
public AsyncOperation(QName name, Entity entity) {
super(name, entity);
// TODO Auto-generated constructor stub
}
/**
* @return Returns the async.
*/
public boolean isAsync() {
return _async;
}
public void setAsyncType(AsyncOperationType type) {
this._asyncOpType = type;
_async = true;
}
public AsyncOperationType getAsyncType(){
return _asyncOpType;
}
public void setResponseBean(AbstractType type){
_responseBean = type;
}
public AbstractType getResponseBeanType(){
return _responseBean;
}
public JavaType getResponseBeanJavaType(){
JCodeModel cm = _responseBean.getJavaType().getType().getType().owner();
if(_asyncOpType.equals(AsyncOperationType.CALLBACK)){
JClass future = cm.ref(java.util.concurrent.Future.class).narrow(cm.ref(Object.class).wildcard());
return new JavaSimpleType(new JAXBTypeAndAnnotation(future));
}else if(_asyncOpType.equals(AsyncOperationType.POLLING)){
JClass polling = cm.ref(javax.xml.ws.Response.class).narrow(_responseBean.getJavaType().getType().getType().boxify());
return new JavaSimpleType(new JAXBTypeAndAnnotation(polling));
}
return null;
}
public JavaType getCallBackType(){
if(_asyncOpType.equals(AsyncOperationType.CALLBACK)){
JCodeModel cm = _responseBean.getJavaType().getType().getType().owner();
JClass cb = cm.ref(javax.xml.ws.AsyncHandler.class).narrow(_responseBean.getJavaType().getType().getType().boxify());
return new JavaSimpleType(new JAXBTypeAndAnnotation(cb));
}
return null;
}
public Operation getNormalOperation(){
return operation;
}
public void setNormalOperation(Operation operation){
this.operation = operation;
}
@Override public String getJavaMethodName() {
return super.getJavaMethodName() + "Async";
}
//Normal operation
private Operation operation;
private boolean _async;
private AsyncOperationType _asyncOpType;
private AbstractType _responseBean;
}