Ticket #284 (new defect)

Opened 6 months ago

Last modified 3 days ago

UnknownClassAlias: Unknown alias DSK/DSC/DSA

Reported by: thijs Owned by: nick
Priority: major Milestone: Flex Messaging
Component: Remoting Version:
Keywords: Cc:

Description (last modified by thijs) (diff)

See attached swf that tries to send a AcknowledgeMessageExt through RemoteObject:

import mx.messaging.messages.AcknowledgeMessageExt;

public function useRemoteObject():void {
        employeeRO = new RemoteObject();
        employeeRO.destination = "GenericDestination";
        employeeRO.setData.addEventListener("result", getListResultHandler);
        employeeRO.addEventListener("fault", faultHandler);
                
        var test:AcknowledgeMessageExt = new AcknowledgeMessageExt();
        test.clientId = "123213213";
                
        employeeRO.setData(test);
}

Returns this error with r1377:

    self.alias = pyamf.get_class_alias(alias)
  File "/Users/thijstriemstra/Sites/pyamf/pyamf/trunk/pyamf/__init__.py", line 807, in get_class_alias
    return load_class(klass)
  File "/Users/thijstriemstra/Sites/pyamf/pyamf/trunk/pyamf/__init__.py", line 778, in load_class
    raise UnknownClassAlias, "Unknown alias %s" % alias
UnknownClassAlias: Unknown alias DSK

My test server:

class GenericDestination:
    def setData(self, a, b=None):
        return a

services = {
    'GenericDestination': GenericDestination()
}

if __name__ == '__main__':
    from pyamf.remoting.gateway.wsgi import WSGIGateway
    from wsgiref import simple_server

    gw = WSGIGateway(services)

    httpd = simple_server.WSGIServer(
        ('localhost', 8000),
        simple_server.WSGIRequestHandler,
    )

    httpd.set_app(gw)

    print "Running AMF gateway on http://localhost:8000"

    try:
        httpd.serve_forever()
    except KeyboardInterrupt:
        pass

Attachments

charles-284.chls (5.8 KB) - added by thijs 6 months ago.
charles session showing error with patched r1377
Login.swf (226.0 KB) - added by thijs 6 months ago.
test swf sending a AcknowledgeMessageExt

Change History

comment:1 Changed 6 months ago by nick

Patch for the DSK alias mapping

class AcknowledgeMessageExt(AcknowledgeMessage):
    def __init__(self, message=None):
        self._message = message

    def __readamf__(self, input):
        self._message = input.readObject()

    def __writeamf__(self, output):
        output.writeObject(self._message)

pyamf.register_class(AcknowledgeMessageExt, "DSK", metadata=['external'])

Changed 6 months ago by thijs

charles session showing error with patched r1377

Changed 6 months ago by thijs

test swf sending a AcknowledgeMessageExt

comment:2 Changed 6 months ago by thijs

  • description modified (diff)

comment:3 Changed 6 months ago by thijs

While testing the following:

public function useRemoteObject():void {
     employeeRO = new RemoteObject();
     employeeRO.destination = "GenericDestination";
     employeeRO.setData.addEventListener("result", getListResultHandler);
     employeeRO.addEventListener("fault", faultHandler);
                
     var test:CommandMessageExt = new CommandMessageExt();
             
    employeeRO.setData(test);
}

I received this error:

  File "/Users/thijstriemstra/Sites/pyamf/pyamf/trunk/pyamf/amf3.py", line 548, in __init__
    self.alias = pyamf.get_class_alias(alias)
  File "/Users/thijstriemstra/Sites/pyamf/pyamf/trunk/pyamf/__init__.py", line 807, in get_class_alias
    return load_class(klass)
  File "/Users/thijstriemstra/Sites/pyamf/pyamf/trunk/pyamf/__init__.py", line 778, in load_class
    raise UnknownClassAlias, "Unknown alias %s" % alias
UnknownClassAlias: Unknown alias DSC

The following patch for p.f.messaging solved the error:

class CommandMessageExt(CommandMessage):
    def __init__(self, message=None):
        self._message = message

    def __readamf__(self, input):
        self._message = input.readObject()

    def __writeamf__(self, output):
        output.writeObject(self._message)

pyamf.register_class(CommandMessageExt, "DSC", metadata=['external'])

comment:4 Changed 6 months ago by thijs

  • summary changed from UnknownClassAlias: Unknown alias DSK to UnknownClassAlias: Unknown alias DSK/DSC

comment:5 Changed 6 months ago by thijs

  • summary changed from UnknownClassAlias: Unknown alias DSK/DSC to UnknownClassAlias: Unknown alias DSK/DSC/DSA

Another one is AsyncMessageExt:

import mx.messaging.messages. AsyncMessageExt;

public function useRemoteObject():void {
        employeeRO = new RemoteObject();
        employeeRO.destination = "GenericDestination";
        employeeRO.setData.addEventListener("result", getListResultHandler);
        employeeRO.addEventListener("fault", faultHandler);
                
        var test:AsyncMessageExt = new AsyncMessageExt();
                
        employeeRO.setData(test);
}

Returns this error with r1377:

  File "/Users/thijstriemstra/Sites/pyamf/pyamf/trunk/pyamf/amf3.py", line 1067, in _getClassDefinition
    class_def = ClassDefinition(self.readString(), encoding=ref & 0x03)
  File "/Users/thijstriemstra/Sites/pyamf/pyamf/trunk/pyamf/amf3.py", line 548, in __init__
    self.alias = pyamf.get_class_alias(alias)
  File "/Users/thijstriemstra/Sites/pyamf/pyamf/trunk/pyamf/__init__.py", line 807, in get_class_alias
    return load_class(klass)
  File "/Users/thijstriemstra/Sites/pyamf/pyamf/trunk/pyamf/__init__.py", line 778, in load_class
    raise UnknownClassAlias, "Unknown alias %s" % alias
UnknownClassAlias: Unknown alias DSA

which can be 'solved' with:

class AsyncMessageExt(AsyncMessage):
    def __init__(self, message=None):
        self._message = message

    def __readamf__(self, input):
        self._message = input.readObject()

    def __writeamf__(self, output):
        output.writeObject(self._message)

pyamf.register_class(AsyncMessageExt, "DSA", metadata=['external'])

comment:6 Changed 6 months ago by nick

  • version 0.3.1 deleted
  • milestone 0.3.2 deleted

comment:7 Changed 3 days ago by thijs

  • milestone set to Flex Messaging
Note: See TracTickets for help on using tickets.