1 package org.andromda.cartridges.webservice.metafacades;
2
3 import org.andromda.metafacades.uml.ClassifierFacade;
4
5 /***
6 * MetafacadeLogic implementation for org.andromda.cartridges.webservice.metafacades.WebServiceParameter.
7 *
8 * @see org.andromda.cartridges.webservice.metafacades.WebServiceParameter
9 */
10 public class WebServiceParameterLogicImpl
11 extends WebServiceParameterLogic
12 {
13
14
15 public WebServiceParameterLogicImpl(Object metaObject, String context)
16 {
17 super(metaObject, context);
18 }
19
20 /***
21 * @see org.andromda.cartridges.webservice.metafacades.WebServiceParameter#isNillable()
22 */
23 protected boolean handleIsNillable()
24 {
25 return !this.isRequired();
26 }
27
28 /***
29 * @see org.andromda.cartridges.webservice.metafacades.WebServiceParameter#getTestTypeName()
30 */
31 protected String handleGetTestTypeName()
32 {
33 String testTypeName = null;
34 final ClassifierFacade type = this.getType();
35 if (type instanceof WSDLType || type instanceof WSDLEnumerationType)
36 {
37 ClassifierFacade service = this.getOperation().getOwner();
38 if (service instanceof WebService)
39 {
40 WebService webService = (WebService)service;
41 final String testPackageName = webService.getTestPackageName();
42 if (type instanceof WSDLType)
43 {
44 final WSDLType wsdlType = (WSDLType)type;
45 if (!webService.isRpcStyle() && wsdlType.isArrayType())
46 {
47 testTypeName = testPackageName + '.' + wsdlType.getWsdlArrayName();
48 }
49 else if (!type.isDataType())
50 {
51 testTypeName = testPackageName + '.' + wsdlType.getName();
52 }
53 }
54 else
55 {
56 final WSDLEnumerationType wsdlType = (WSDLEnumerationType)type;
57 if (!webService.isRpcStyle() && wsdlType.isArrayType())
58 {
59 testTypeName = testPackageName + '.' + wsdlType.getWsdlArrayName();
60 }
61 else if (!type.isDataType())
62 {
63 testTypeName = testPackageName + '.' + wsdlType.getName();
64 }
65 }
66 }
67 if (testTypeName == null)
68 {
69 testTypeName = this.getType().getFullyQualifiedName();
70 }
71 }
72 return testTypeName;
73 }
74 }