Skip to content

A Tuple returned by an exported DBusInterface can't be cast to ParameterizedType #271

@bachrc

Description

@bachrc

Having a DBusInterface that contain multiple fields, generated automatically, like this :

import java.util.List;

import org.freedesktop.dbus.annotations.DBusBoundProperty;
import org.freedesktop.dbus.annotations.DBusInterfaceName;
import org.freedesktop.dbus.exceptions.DBusException;
import org.freedesktop.dbus.interfaces.DBusInterface;
import org.freedesktop.dbus.messages.DBusSignal;
import org.freedesktop.dbus.types.UInt16;
import org.freedesktop.dbus.types.UInt32;

/**
 * Auto-generated class.
 */
@DBusInterfaceName("com.interface.yes")
public interface ModemManager1 extends DBusInterface {

    public void ResetModem();

    GetDetailsTuple GetDetails();
...

And in the generated Tuple:

import org.freedesktop.dbus.Tuple;
import org.freedesktop.dbus.annotations.Position;
import org.freedesktop.dbus.types.UInt16;
import org.freedesktop.dbus.types.UInt64;

/**
 * Auto-generated class.
 */
public class GetDetailsTuple extends Tuple {
    @Position(0)
    private byte info;
    @Position(1)
    private UInt16 field;
...

When I try to export it:

ModemManager1 modemManager = new ModemManagerMock();
            connection.requestBusName("com.interface.yes");
            connection.exportObject(modemManager.getObjectPath(), modemManager);
...

I have the following error:

2024-10-29 17:30:26.342 [com.interface.yes.Main.main()] INFO  o.f.d.c.transports.TransportBuilder - Using transport dbus-java-transport-native-unixsocket for address unix:path=/var/run/dbus/system_bus_socket
java.lang.ClassCastException: class java.lang.Class cannot be cast to class java.lang.reflect.ParameterizedType (java.lang.Class and java.lang.reflect.ParameterizedType are in module java.base of loader 'bootstrap')
        at org.freedesktop.dbus.messages.ExportedObject.generateMethodsXml(ExportedObject.java:235)
        at org.freedesktop.dbus.messages.ExportedObject.generateIntrospectionXml(ExportedObject.java:368)
        at org.freedesktop.dbus.messages.ExportedObject.<init>(ExportedObject.java:43)
        at org.freedesktop.dbus.connections.AbstractConnection.lambda$exportObject$0(AbstractConnection.java:175)
        at org.freedesktop.dbus.connections.base.AbstractConnectionBase.doWithExportedObjects(AbstractConnectionBase.java:333)
        at org.freedesktop.dbus.connections.AbstractConnection.exportObject(AbstractConnection.java:171)
        at com.interface.yes.Main.main(Main.java:31)
        at org.codehaus.mojo.exec.ExecJavaMojo.doMain(ExecJavaMojo.java:385)
        at org.codehaus.mojo.exec.ExecJavaMojo.doExec(ExecJavaMojo.java:374)
        at org.codehaus.mojo.exec.ExecJavaMojo.lambda$execute$0(ExecJavaMojo.java:296)
        at java.base/java.lang.Thread.run(Thread.java:1575)

I do not have the problem when the GetDetailsTuple extends from a Struct.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions