下面列出了怎么用javax.jws.WebParam.Mode的API类实例代码及写法,或者点击链接到github查看源代码。
private static void populateParam(CompilationController controller, VariableElement paramEl, ParamModel paramModel) {
paramModel.setParamType(paramEl.asType().toString());
TypeElement paramAnotationEl = controller.getElements().getTypeElement("javax.jws.WebParam"); //NOI18N
List<? extends AnnotationMirror> paramAnnotations = paramEl.getAnnotationMirrors();
for (AnnotationMirror anMirror : paramAnnotations) {
if (controller.getTypes().isSameType(paramAnotationEl.asType(), anMirror.getAnnotationType())) {
Map<? extends ExecutableElement, ? extends AnnotationValue> expressions = anMirror.getElementValues();
for(Entry<? extends ExecutableElement, ? extends AnnotationValue> entry:
expressions.entrySet())
{
ExecutableElement ex = entry.getKey();
AnnotationValue value = entry.getValue();
if (ex.getSimpleName().contentEquals("name")) { //NOI18N
paramModel.name = (String)value.getValue();
} else if (ex.getSimpleName().contentEquals("partName")) { //NOI18N
paramModel.setPartName((String)value.getValue());
} else if (ex.getSimpleName().contentEquals("targetNamespace")) { //NOI18N
paramModel.setTargetNamespace((String)value.getValue());
} else if (ex.getSimpleName().contentEquals("mode")) { //NOI18N
paramModel.setMode(Mode.valueOf(value.getValue().toString()));
}
}
}
}
}
private ParameterBinding getBinding(String operation, String part, boolean isHeader, Mode mode){
if(binding == null){
if(isHeader)
return ParameterBinding.HEADER;
else
return ParameterBinding.BODY;
}
QName opName = new QName(binding.getBinding().getPortType().getName().getNamespaceURI(), operation);
return binding.getBinding().getBinding(opName, part, mode);
}
private ParameterBinding getBinding(String operation, String part, boolean isHeader, Mode mode){
if(binding == null){
if(isHeader)
return ParameterBinding.HEADER;
else
return ParameterBinding.BODY;
}
QName opName = new QName(binding.getBinding().getPortType().getName().getNamespaceURI(), operation);
return binding.getBinding().getBinding(opName, part, mode);
}
private ParameterBinding getBinding(String operation, String part, boolean isHeader, Mode mode){
if(binding == null){
if(isHeader)
return ParameterBinding.HEADER;
else
return ParameterBinding.BODY;
}
QName opName = new QName(binding.getBinding().getPortType().getName().getNamespaceURI(), operation);
return binding.getBinding().getBinding(opName, part, mode);
}
public Set<QName> getKnownHeaders() {
Set<QName> headers = new HashSet<QName>();
for (JavaMethodImpl method : getJavaMethods()) {
// fill in request headers
Iterator<ParameterImpl> params = method.getRequestParameters().iterator();
fillHeaders(params, headers, Mode.IN);
// fill in response headers
params = method.getResponseParameters().iterator();
fillHeaders(params, headers, Mode.OUT);
}
return headers;
}
@Override
public EditableWSDLPart getPart(String partName, Mode mode) {
if(mode==Mode.IN){
return inParts.get(partName);
}else if(mode==Mode.OUT){
return outParts.get(partName);
}
return null;
}
@Override
public EditableWSDLPart getPart(String partName, Mode mode) {
if(mode==Mode.IN){
return inParts.get(partName);
}else if(mode==Mode.OUT){
return outParts.get(partName);
}
return null;
}
public ParameterImpl(JavaMethodImpl parent, TypeInfo type, Mode mode, int index) {
assert type != null;
this.typeInfo = type;
this.name = type.tagName;
this.mode = mode;
this.index = index;
this.parent = parent;
}
private ParameterBinding getBinding(String operation, String part, boolean isHeader, Mode mode){
if(binding == null){
if(isHeader)
return ParameterBinding.HEADER;
else
return ParameterBinding.BODY;
}
QName opName = new QName(binding.getBinding().getPortType().getName().getNamespaceURI(), operation);
return binding.getBinding().getBinding(opName, part, mode);
}
@Override
public EditableWSDLPart getPart(String partName, Mode mode) {
if(mode==Mode.IN){
return inParts.get(partName);
}else if(mode==Mode.OUT){
return outParts.get(partName);
}
return null;
}
@Test
public void testPrimitive() {
JAnnotation annotation = new JAnnotation(WebParam.class);
annotation.addElement(new JAnnotationElement("header", true, true));
annotation.addElement(new JAnnotationElement("mode", Mode.INOUT));
assertEquals("@WebParam(header = true, mode = WebParam.Mode.INOUT)", annotation.toString());
}
public ParameterImpl(JavaMethodImpl parent, TypeInfo type, Mode mode, int index) {
assert type != null;
this.typeInfo = type;
this.name = type.tagName;
this.mode = mode;
this.index = index;
this.parent = parent;
}
/**
* @param params
* @param headers
*/
private void fillHeaders(Iterator<ParameterImpl> params, Set<QName> headers, Mode mode) {
while (params.hasNext()) {
ParameterImpl param = params.next();
ParameterBinding binding = (mode == Mode.IN)?param.getInBinding():param.getOutBinding();
QName name = param.getName();
if (binding.isHeader() && !headers.contains(name)) {
headers.add(name);
}
}
}
public Set<QName> getKnownHeaders() {
Set<QName> headers = new HashSet<QName>();
for (JavaMethodImpl method : getJavaMethods()) {
// fill in request headers
Iterator<ParameterImpl> params = method.getRequestParameters().iterator();
fillHeaders(params, headers, Mode.IN);
// fill in response headers
params = method.getResponseParameters().iterator();
fillHeaders(params, headers, Mode.OUT);
}
return headers;
}
private ParameterBinding getBinding(String operation, String part, boolean isHeader, Mode mode){
if(binding == null){
if(isHeader)
return ParameterBinding.HEADER;
else
return ParameterBinding.BODY;
}
QName opName = new QName(binding.getBinding().getPortType().getName().getNamespaceURI(), operation);
return binding.getBinding().getBinding(opName, part, mode);
}
private WSDLPart getPart(QName opName, String partName, Mode mode){
if(binding != null){
WSDLBoundOperation bo = binding.getBinding().get(opName);
if(bo != null)
return bo.getPart(partName, mode);
}
return null;
}
public Set<QName> getKnownHeaders() {
Set<QName> headers = new HashSet<QName>();
for (JavaMethodImpl method : getJavaMethods()) {
// fill in request headers
Iterator<ParameterImpl> params = method.getRequestParameters().iterator();
fillHeaders(params, headers, Mode.IN);
// fill in response headers
params = method.getResponseParameters().iterator();
fillHeaders(params, headers, Mode.OUT);
}
return headers;
}
/**
* @param params
* @param headers
*/
private void fillHeaders(Iterator<ParameterImpl> params, Set<QName> headers, Mode mode) {
while (params.hasNext()) {
ParameterImpl param = params.next();
ParameterBinding binding = (mode == Mode.IN)?param.getInBinding():param.getOutBinding();
QName name = param.getName();
if (binding.isHeader() && !headers.contains(name)) {
headers.add(name);
}
}
}
public ParameterImpl(JavaMethodImpl parent, TypeInfo type, Mode mode, int index) {
assert type != null;
this.typeInfo = type;
this.name = type.tagName;
this.mode = mode;
this.index = index;
this.parent = parent;
}
/**
* Gets the {@link ParameterBinding} for a given operation, part name and the direction - IN/OUT
*
* @param operation wsdl:[email protected] value. Must be non-null.
* @param part wsdl:[email protected] such as value of soap:[email protected] Must be non-null.
* @param mode {@link Mode#IN} or {@link Mode#OUT}. Must be non-null.
* @return null if the binding could not be resolved for the part.
*/
public ParameterBinding getBinding(QName operation, String part, Mode mode) {
EditableWSDLBoundOperation op = get(operation);
if (op == null) {
//TODO throw exception
return null;
}
if ((Mode.IN == mode) || (Mode.INOUT == mode))
return op.getInputBinding(part);
else
return op.getOutputBinding(part);
}
/**
* Gets the {@link ParameterBinding} for a given operation, part name and the direction - IN/OUT
*
* @param operation wsdl:[email protected] value. Must be non-null.
* @param part wsdl:[email protected] such as value of soap:[email protected] Must be non-null.
* @param mode {@link Mode#IN} or {@link Mode#OUT}. Must be non-null.
* @return null if the binding could not be resolved for the part.
*/
public ParameterBinding getBinding(QName operation, String part, Mode mode) {
EditableWSDLBoundOperation op = get(operation);
if (op == null) {
//TODO throw exception
return null;
}
if ((Mode.IN == mode) || (Mode.INOUT == mode))
return op.getInputBinding(part);
else
return op.getOutputBinding(part);
}
private ParameterBinding getBinding(String operation, String part, boolean isHeader, Mode mode){
if(binding == null){
if(isHeader)
return ParameterBinding.HEADER;
else
return ParameterBinding.BODY;
}
QName opName = new QName(binding.getBinding().getPortType().getName().getNamespaceURI(), operation);
return binding.getBinding().getBinding(opName, part, mode);
}
private WSDLPart getPart(QName opName, String partName, Mode mode){
if(binding != null){
WSDLBoundOperation bo = binding.getBinding().get(opName);
if(bo != null)
return bo.getPart(partName, mode);
}
return null;
}
protected ErrorDescription[] apply(VariableElement subject, ProblemContext ctx) {
AnnotationMirror paramAnn = Utilities.findAnnotation(subject, ANNOTATION_WEBPARAM);
if(paramAnn!=null) {
AnnotationValue val = Utilities.getAnnotationAttrValue(paramAnn, ANNOTATION_ATTRIBUTE_MODE);
Mode value = null;
if(val!=null) {
try {
value = Mode.valueOf(val.getValue().toString());
} catch (Exception e) {
// we dont need to worry as hints for invalid enum value kicks in.
}
}
if((Mode.INOUT == value || Mode.OUT == value) &&
!"javax.xml.ws.Holder".equals(getVariableType(subject))) {
String label = NbBundle.getMessage(WebParamHolder.class, "MSG_WebParam_HolderRequired");
Fix fix = new RemoveAnnotationArgument(ctx.getFileObject(),
subject, paramAnn, ANNOTATION_ATTRIBUTE_MODE);
AnnotationTree annotationTree = (AnnotationTree) ctx.getCompilationInfo().
getTrees().getTree(subject, paramAnn);
Tree problemTree = Utilities.getAnnotationArgumentTree(annotationTree, ANNOTATION_ATTRIBUTE_MODE);
ctx.setElementToAnnotate(problemTree);
ErrorDescription problem = createProblem(subject, ctx, label, fix);
ctx.setElementToAnnotate(null);
return new ErrorDescription[]{problem};
}
}
return null;
}
private WSDLPart getPart(QName opName, String partName, Mode mode){
if(binding != null){
WSDLBoundOperation bo = binding.getBinding().get(opName);
if(bo != null)
return bo.getPart(partName, mode);
}
return null;
}
/**
* Gets the {@link ParameterBinding} for a given operation, part name and the direction - IN/OUT
*
* @param operation wsdl:[email protected] value. Must be non-null.
* @param part wsdl:[email protected] such as value of soap:[email protected] Must be non-null.
* @param mode {@link Mode#IN} or {@link Mode#OUT}. Must be non-null.
* @return null if the binding could not be resolved for the part.
*/
public ParameterBinding getBinding(QName operation, String part, Mode mode) {
EditableWSDLBoundOperation op = get(operation);
if (op == null) {
//TODO throw exception
return null;
}
if ((Mode.IN == mode) || (Mode.INOUT == mode))
return op.getInputBinding(part);
else
return op.getOutputBinding(part);
}
@Override
@Nullable EditableWSDLPart getPart(@NotNull String partName, @NotNull Mode mode);
public Mode getMode(){
return mode;
}
public boolean isIN(){
if(mode!=null)
return (mode == Mode.IN);
return false;
}
public DocLit(WrapperParameter wp, Mode skipMode) {
wrapperName = wp.getName();
wrapper = wp.getXMLBridge();
Class wrapperType = (Class) wrapper.getTypeInfo().type;
dynamicWrapper = WrapperComposite.class.equals(wrapperType);
List<PartBuilder> parts = new ArrayList<PartBuilder>();
List<ParameterImpl> children = wp.getWrapperChildren();
for (ParameterImpl p : children) {
if (p.getMode() == skipMode) {
continue;
}
/*
if(p.isIN())
continue;
*/
QName name = p.getName();
try {
if (dynamicWrapper) {
if (wrappedParts == null) wrappedParts = new HashMap<QName,WrappedPartBuilder>();
XMLBridge xmlBridge = p.getInlinedRepeatedElementBridge();
if (xmlBridge == null) xmlBridge = p.getXMLBridge();
wrappedParts.put( p.getName(), new WrappedPartBuilder(xmlBridge, EndpointValueSetter.get(p)));
} else {
parts.add( new PartBuilder(
wp.getOwner().getBindingContext().getElementPropertyAccessor(
wrapperType,
name.getNamespaceURI(),
p.getName().getLocalPart()),
EndpointValueSetter.get(p)
) );
// wrapper parameter itself always bind to body, and
// so do all its children
assert p.getBinding()== ParameterBinding.BODY;
}
} catch (JAXBException e) {
throw new WebServiceException( // TODO: i18n
wrapperType+" do not have a property of the name "+name,e);
}
}
this.parts = parts.toArray(new PartBuilder[parts.size()]);
}