flex-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alexander Konovalov (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (FLEX-25959) "Variable @namespace is not defined" Exception when Using Service Classes Generated from WCF WSDL
Date Thu, 07 Apr 2016 17:29:25 GMT

    [ https://issues.apache.org/jira/browse/FLEX-25959?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15230629#comment-15230629

Alexander Konovalov commented on FLEX-25959:

The problem is that flex doesn't recognize @namespace variable at runtime. The problem can
be solved replacing @namespace with attribute("namespace").
For example:
OLD code: 
>    delete schemaXML[importQName].(@namespace == importURI)[0];
NEW code:
>    delete schemaXML[importQName].(attribute("namespace") == importURI)[0];

I've solved that by monkey-patching original mx.rpc.xml.SchemaLoader class. It has 2 places
in code to be replaced (lines 98 and 107 for Flex 4.6).

> "Variable @namespace is not defined" Exception when Using Service Classes Generated from
> -------------------------------------------------------------------------------------------------
>                 Key: FLEX-25959
>                 URL: https://issues.apache.org/jira/browse/FLEX-25959
>             Project: Apache Flex
>          Issue Type: Bug
>          Components: RPC: WebService
>    Affects Versions: Adobe Flex SDK 4.1 (Release)
>         Environment: Affected OS(s): All OS Platforms
> Affected OS(s): All OS Platforms
> Language Found: English
>            Reporter: Adobe JIRA
> Steps to reproduce:
> 1. Create a WCF service with an operation that returns a System.Data.DataSet object.
> 2. Using Flex Builder's "Connect to Web Service...", generate the client classes for
the service, pointing to the WSDL of the new service.
> 3. Create and run an application that instantiates the service class, and tries to invoke
service methods.
>  Actual Results:
> An exception is thrown when the service class is instantiated. This happens when the
internal web service code tries to load the WSDL, and fails (probably model_internal::loadWSDLIfNecessary()
). The SchemaLoader tries to access the namespace attribute of each <xsd:import> element,
without first checking whether the attribute exists.
> There is no way to catch this exception, because it happens in a callback that is not
exposed to customization.
> ReferenceError: Error #1065: Variable @namespace is not defined.
> 	at mx.rpc.xml::SchemaLoader/schemaImports()[E:\dev\4.x\frameworks\projects\rpc\src\mx\rpc\xml\SchemaLoader.as:107]
> 	at mx.rpc.wsdl::WSDLLoader/schemaImports()[E:\dev\4.x\frameworks\projects\rpc\src\mx\rpc\wsdl\WSDLLoader.as:273]
> 	at mx.rpc.wsdl::WSDLLoader/resultHandler()[E:\dev\4.x\frameworks\projects\rpc\src\mx\rpc\wsdl\WSDLLoader.as:167]
> 	at flash.events::EventDispatcher/dispatchEventFunction()
> 	at flash.events::EventDispatcher/dispatchEvent()
> 	at HTTPOperation/http://www.adobe.com/2006/flex/mx/internal::dispatchRpcEvent()[E:\dev\4.x\frameworks\projects\rpc\src\mx\rpc\http\HTTPService.as:989]
> 	at mx.rpc::AbstractInvoker/http://www.adobe.com/2006/flex/mx/internal::resultHandler()[E:\dev\4.x\frameworks\projects\rpc\src\mx\rpc\AbstractInvoker.as:318]
> 	at mx.rpc::Responder/result()[E:\dev\4.x\frameworks\projects\rpc\src\mx\rpc\Responder.as:56]
> 	at mx.rpc::AsyncRequest/acknowledge()[E:\dev\4.x\frameworks\projects\rpc\src\mx\rpc\AsyncRequest.as:84]
> 	at DirectHTTPMessageResponder/completeHandler()[E:\dev\4.x\frameworks\projects\rpc\src\mx\messaging\channels\DirectHTTPChannel.as:446]
> 	at flash.events::EventDispatcher/dispatchEventFunction()
> 	at flash.events::EventDispatcher/dispatchEvent()
> 	at flash.net::URLLoader/onComplete()
>  Expected Results:
> In any case, an exception should not be thrown where it is impossible for the client
to catch it. Ideally, we should be able to decide if and when the WSDL is requested - doing
it as part of the service class construction is surprising behavior, and seems like bad design.
> If the Flex Builder "Test Operation" window can test the service successfully, which
it can, then there should be a way to use that service successfully from code. Currently,
this is not the case.
>  Workaround (if any):
>  Notes:
> We know it is bad practice to use the .NET DataSet class to expose data through a web
service. But sometimes we have no choice in the matter as the service client.
>   * http://www.mail-archive.com/flexcoders@yahoogroups.com/msg91261.html
>   * http://stackoverflow.com/questions/1188201/web-service-wcf-service-is-it-ever-better-to-return-a-dataset
>   * http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,0a7cd196-c36b-4afa-ab02-5e4e6829c42d.aspx

This message was sent by Atlassian JIRA

View raw message