Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Missing imports in generated classes #195

Closed
shanemikel opened this issue Dec 7, 2022 · 3 comments
Closed

Missing imports in generated classes #195

shanemikel opened this issue Dec 7, 2022 · 3 comments

Comments

@shanemikel
Copy link

I'm trying to generate bindings for Systemd (systemd 251 on Ubuntu 22.10).
Running codegen from the introspected interface, following these instructions.

The bus name is "org.freedesktop.systemd1" and the object path is "/org/freedesktop/systemd1".
The primary interface is "/org/freedesktop/systemd1/Manager," though trying that as object path I get UnknownObject error.
It seems to be happy with the parent node.

I get a bunch of classes, at first glance looks good, more-or-less complete.
Here is the introspected XML for reference:

<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
<node>
 <interface name="org.freedesktop.DBus.Peer">
  <method name="Ping"/>
  <method name="GetMachineId">
   <arg type="s" name="machine_uuid" direction="out"/>
  </method>
 </interface>
 <interface name="org.freedesktop.DBus.Introspectable">
  <method name="Introspect">
   <arg name="xml_data" type="s" direction="out"/>
  </method>
 </interface>
 <interface name="org.freedesktop.DBus.Properties">
  <method name="Get">
   <arg name="interface_name" direction="in" type="s"/>
   <arg name="property_name" direction="in" type="s"/>
   <arg name="value" direction="out" type="v"/>
  </method>
  <method name="GetAll">
   <arg name="interface_name" direction="in" type="s"/>
   <arg name="props" direction="out" type="a{sv}"/>
  </method>
  <method name="Set">
   <arg name="interface_name" direction="in" type="s"/>
   <arg name="property_name" direction="in" type="s"/>
   <arg name="value" direction="in" type="v"/>
  </method>
  <signal name="PropertiesChanged">
   <arg type="s" name="interface_name"/>
   <arg type="a{sv}" name="changed_properties"/>
   <arg type="as" name="invalidated_properties"/>
  </signal>
 </interface>
 <interface name="org.freedesktop.systemd1.Manager">
  <property name="Version" type="s" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="Features" type="s" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="Virtualization" type="s" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="Architecture" type="s" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="Tainted" type="s" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="FirmwareTimestamp" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="FirmwareTimestampMonotonic" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="LoaderTimestamp" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="LoaderTimestampMonotonic" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="KernelTimestamp" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="KernelTimestampMonotonic" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="InitRDTimestamp" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="InitRDTimestampMonotonic" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="UserspaceTimestamp" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="UserspaceTimestampMonotonic" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="FinishTimestamp" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="FinishTimestampMonotonic" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="SecurityStartTimestamp" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="SecurityStartTimestampMonotonic" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="SecurityFinishTimestamp" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="SecurityFinishTimestampMonotonic" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="GeneratorsStartTimestamp" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="GeneratorsStartTimestampMonotonic" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="GeneratorsFinishTimestamp" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="GeneratorsFinishTimestampMonotonic" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="UnitsLoadStartTimestamp" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="UnitsLoadStartTimestampMonotonic" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="UnitsLoadFinishTimestamp" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="UnitsLoadFinishTimestampMonotonic" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="UnitsLoadTimestamp" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="UnitsLoadTimestampMonotonic" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="InitRDSecurityStartTimestamp" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="InitRDSecurityStartTimestampMonotonic" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="InitRDSecurityFinishTimestamp" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="InitRDSecurityFinishTimestampMonotonic" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="InitRDGeneratorsStartTimestamp" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="InitRDGeneratorsStartTimestampMonotonic" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="InitRDGeneratorsFinishTimestamp" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="InitRDGeneratorsFinishTimestampMonotonic" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="InitRDUnitsLoadStartTimestamp" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="InitRDUnitsLoadStartTimestampMonotonic" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="InitRDUnitsLoadFinishTimestamp" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="InitRDUnitsLoadFinishTimestampMonotonic" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="LogLevel" type="s" access="readwrite">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="false"/>
   <annotation name="org.freedesktop.systemd1.Privileged" value="true"/>
  </property>
  <property name="LogTarget" type="s" access="readwrite">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="false"/>
   <annotation name="org.freedesktop.systemd1.Privileged" value="true"/>
  </property>
  <property name="NNames" type="u" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="false"/>
  </property>
  <property name="NFailedUnits" type="u" access="read">
  </property>
  <property name="NJobs" type="u" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="false"/>
  </property>
  <property name="NInstalledJobs" type="u" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="false"/>
  </property>
  <property name="NFailedJobs" type="u" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="false"/>
  </property>
  <property name="Progress" type="d" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="false"/>
  </property>
  <property name="Environment" type="as" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="false"/>
  </property>
  <property name="ConfirmSpawn" type="b" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="ShowStatus" type="b" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="false"/>
  </property>
  <property name="UnitPath" type="as" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultStandardOutput" type="s" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultStandardError" type="s" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="RuntimeWatchdogUSec" type="t" access="readwrite">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="false"/>
   <annotation name="org.freedesktop.systemd1.Privileged" value="true"/>
  </property>
  <property name="RuntimeWatchdogPreUSec" type="t" access="readwrite">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="false"/>
   <annotation name="org.freedesktop.systemd1.Privileged" value="true"/>
  </property>
  <property name="RuntimeWatchdogPreGovernor" type="s" access="readwrite">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="false"/>
   <annotation name="org.freedesktop.systemd1.Privileged" value="true"/>
  </property>
  <property name="RebootWatchdogUSec" type="t" access="readwrite">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="false"/>
   <annotation name="org.freedesktop.systemd1.Privileged" value="true"/>
  </property>
  <property name="KExecWatchdogUSec" type="t" access="readwrite">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="false"/>
   <annotation name="org.freedesktop.systemd1.Privileged" value="true"/>
  </property>
  <property name="ServiceWatchdogs" type="b" access="readwrite">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="false"/>
   <annotation name="org.freedesktop.systemd1.Privileged" value="true"/>
  </property>
  <property name="ControlGroup" type="s" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="false"/>
  </property>
  <property name="SystemState" type="s" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="false"/>
  </property>
  <property name="ExitCode" type="y" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="false"/>
  </property>
  <property name="DefaultTimerAccuracyUSec" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultTimeoutStartUSec" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultTimeoutStopUSec" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultTimeoutAbortUSec" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="false"/>
  </property>
  <property name="DefaultRestartUSec" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultStartLimitIntervalUSec" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultStartLimitBurst" type="u" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultCPUAccounting" type="b" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultBlockIOAccounting" type="b" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultMemoryAccounting" type="b" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultTasksAccounting" type="b" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultLimitCPU" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultLimitCPUSoft" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultLimitFSIZE" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultLimitFSIZESoft" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultLimitDATA" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultLimitDATASoft" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultLimitSTACK" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultLimitSTACKSoft" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultLimitCORE" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultLimitCORESoft" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultLimitRSS" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultLimitRSSSoft" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultLimitNOFILE" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultLimitNOFILESoft" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultLimitAS" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultLimitASSoft" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultLimitNPROC" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultLimitNPROCSoft" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultLimitMEMLOCK" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultLimitMEMLOCKSoft" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultLimitLOCKS" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultLimitLOCKSSoft" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultLimitSIGPENDING" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultLimitSIGPENDINGSoft" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultLimitMSGQUEUE" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultLimitMSGQUEUESoft" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultLimitNICE" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultLimitNICESoft" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultLimitRTPRIO" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultLimitRTPRIOSoft" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultLimitRTTIME" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultLimitRTTIMESoft" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultTasksMax" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="false"/>
  </property>
  <property name="TimerSlackNSec" type="t" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultOOMPolicy" type="s" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="DefaultOOMScoreAdjust" type="i" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <property name="CtrlAltDelBurstAction" type="s" access="read">
   <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/>
  </property>
  <method name="GetUnit">
   <arg type="s" name="name" direction="in"/>
   <arg type="o" name="unit" direction="out"/>
  </method>
  <method name="GetUnitByPID">
   <arg type="u" name="pid" direction="in"/>
   <arg type="o" name="unit" direction="out"/>
  </method>
  <method name="GetUnitByInvocationID">
   <arg type="ay" name="invocation_id" direction="in"/>
   <arg type="o" name="unit" direction="out"/>
  </method>
  <method name="GetUnitByControlGroup">
   <arg type="s" name="cgroup" direction="in"/>
   <arg type="o" name="unit" direction="out"/>
  </method>
  <method name="LoadUnit">
   <arg type="s" name="name" direction="in"/>
   <arg type="o" name="unit" direction="out"/>
  </method>
  <method name="StartUnit">
   <arg type="s" name="name" direction="in"/>
   <arg type="s" name="mode" direction="in"/>
   <arg type="o" name="job" direction="out"/>
  </method>
  <method name="StartUnitWithFlags">
   <arg type="s" name="name" direction="in"/>
   <arg type="s" name="mode" direction="in"/>
   <arg type="t" name="flags" direction="in"/>
   <arg type="o" name="job" direction="out"/>
  </method>
  <method name="StartUnitReplace">
   <arg type="s" name="old_unit" direction="in"/>
   <arg type="s" name="new_unit" direction="in"/>
   <arg type="s" name="mode" direction="in"/>
   <arg type="o" name="job" direction="out"/>
  </method>
  <method name="StopUnit">
   <arg type="s" name="name" direction="in"/>
   <arg type="s" name="mode" direction="in"/>
   <arg type="o" name="job" direction="out"/>
  </method>
  <method name="ReloadUnit">
   <arg type="s" name="name" direction="in"/>
   <arg type="s" name="mode" direction="in"/>
   <arg type="o" name="job" direction="out"/>
  </method>
  <method name="RestartUnit">
   <arg type="s" name="name" direction="in"/>
   <arg type="s" name="mode" direction="in"/>
   <arg type="o" name="job" direction="out"/>
  </method>
  <method name="TryRestartUnit">
   <arg type="s" name="name" direction="in"/>
   <arg type="s" name="mode" direction="in"/>
   <arg type="o" name="job" direction="out"/>
  </method>
  <method name="ReloadOrRestartUnit">
   <arg type="s" name="name" direction="in"/>
   <arg type="s" name="mode" direction="in"/>
   <arg type="o" name="job" direction="out"/>
  </method>
  <method name="ReloadOrTryRestartUnit">
   <arg type="s" name="name" direction="in"/>
   <arg type="s" name="mode" direction="in"/>
   <arg type="o" name="job" direction="out"/>
  </method>
  <method name="EnqueueUnitJob">
   <arg type="s" name="name" direction="in"/>
   <arg type="s" name="job_type" direction="in"/>
   <arg type="s" name="job_mode" direction="in"/>
   <arg type="u" name="job_id" direction="out"/>
   <arg type="o" name="job_path" direction="out"/>
   <arg type="s" name="unit_id" direction="out"/>
   <arg type="o" name="unit_path" direction="out"/>
   <arg type="s" name="job_type" direction="out"/>
   <arg type="a(uosos)" name="affected_jobs" direction="out"/>
  </method>
  <method name="KillUnit">
   <arg type="s" name="name" direction="in"/>
   <arg type="s" name="whom" direction="in"/>
   <arg type="i" name="signal" direction="in"/>
  </method>
  <method name="CleanUnit">
   <arg type="s" name="name" direction="in"/>
   <arg type="as" name="mask" direction="in"/>
  </method>
  <method name="FreezeUnit">
   <arg type="s" name="name" direction="in"/>
  </method>
  <method name="ThawUnit">
   <arg type="s" name="name" direction="in"/>
  </method>
  <method name="ResetFailedUnit">
   <arg type="s" name="name" direction="in"/>
  </method>
  <method name="SetUnitProperties">
   <arg type="s" name="name" direction="in"/>
   <arg type="b" name="runtime" direction="in"/>
   <arg type="a(sv)" name="properties" direction="in"/>
  </method>
  <method name="BindMountUnit">
   <arg type="s" name="name" direction="in"/>
   <arg type="s" name="source" direction="in"/>
   <arg type="s" name="destination" direction="in"/>
   <arg type="b" name="read_only" direction="in"/>
   <arg type="b" name="mkdir" direction="in"/>
  </method>
  <method name="MountImageUnit">
   <arg type="s" name="name" direction="in"/>
   <arg type="s" name="source" direction="in"/>
   <arg type="s" name="destination" direction="in"/>
   <arg type="b" name="read_only" direction="in"/>
   <arg type="b" name="mkdir" direction="in"/>
   <arg type="a(ss)" name="options" direction="in"/>
  </method>
  <method name="RefUnit">
   <arg type="s" name="name" direction="in"/>
  </method>
  <method name="UnrefUnit">
   <arg type="s" name="name" direction="in"/>
  </method>
  <method name="StartTransientUnit">
   <arg type="s" name="name" direction="in"/>
   <arg type="s" name="mode" direction="in"/>
   <arg type="a(sv)" name="properties" direction="in"/>
   <arg type="a(sa(sv))" name="aux" direction="in"/>
   <arg type="o" name="job" direction="out"/>
  </method>
  <method name="GetUnitProcesses">
   <arg type="s" name="name" direction="in"/>
   <arg type="a(sus)" name="processes" direction="out"/>
  </method>
  <method name="AttachProcessesToUnit">
   <arg type="s" name="unit_name" direction="in"/>
   <arg type="s" name="subcgroup" direction="in"/>
   <arg type="au" name="pids" direction="in"/>
  </method>
  <method name="AbandonScope">
   <arg type="s" name="name" direction="in"/>
  </method>
  <method name="GetJob">
   <arg type="u" name="id" direction="in"/>
   <arg type="o" name="job" direction="out"/>
  </method>
  <method name="GetJobAfter">
   <arg type="u" name="id" direction="in"/>
   <arg type="a(usssoo)" name="jobs" direction="out"/>
  </method>
  <method name="GetJobBefore">
   <arg type="u" name="id" direction="in"/>
   <arg type="a(usssoo)" name="jobs" direction="out"/>
  </method>
  <method name="CancelJob">
   <arg type="u" name="id" direction="in"/>
  </method>
  <method name="ClearJobs">
  </method>
  <method name="ResetFailed">
  </method>
  <method name="SetShowStatus">
   <arg type="s" name="mode" direction="in"/>
  </method>
  <method name="ListUnits">
   <arg type="a(ssssssouso)" name="units" direction="out"/>
  </method>
  <method name="ListUnitsFiltered">
   <arg type="as" name="states" direction="in"/>
   <arg type="a(ssssssouso)" name="units" direction="out"/>
  </method>
  <method name="ListUnitsByPatterns">
   <arg type="as" name="states" direction="in"/>
   <arg type="as" name="patterns" direction="in"/>
   <arg type="a(ssssssouso)" name="units" direction="out"/>
  </method>
  <method name="ListUnitsByNames">
   <arg type="as" name="names" direction="in"/>
   <arg type="a(ssssssouso)" name="units" direction="out"/>
  </method>
  <method name="ListJobs">
   <arg type="a(usssoo)" name="jobs" direction="out"/>
  </method>
  <method name="Subscribe">
  </method>
  <method name="Unsubscribe">
  </method>
  <method name="Dump">
   <arg type="s" name="output" direction="out"/>
  </method>
  <method name="DumpByFileDescriptor">
   <arg type="h" name="fd" direction="out"/>
  </method>
  <method name="Reload">
  </method>
  <method name="Reexecute">
   <annotation name="org.freedesktop.DBus.Method.NoReply" value="true"/>
  </method>
  <method name="Exit">
   <annotation name="org.freedesktop.systemd1.Privileged" value="true"/>
  </method>
  <method name="Reboot">
   <annotation name="org.freedesktop.systemd1.Privileged" value="true"/>
  </method>
  <method name="PowerOff">
   <annotation name="org.freedesktop.systemd1.Privileged" value="true"/>
  </method>
  <method name="Halt">
   <annotation name="org.freedesktop.systemd1.Privileged" value="true"/>
  </method>
  <method name="KExec">
   <annotation name="org.freedesktop.systemd1.Privileged" value="true"/>
  </method>
  <method name="SwitchRoot">
   <arg type="s" name="new_root" direction="in"/>
   <arg type="s" name="init" direction="in"/>
   <annotation name="org.freedesktop.systemd1.Privileged" value="true"/>
  </method>
  <method name="SetEnvironment">
   <arg type="as" name="assignments" direction="in"/>
  </method>
  <method name="UnsetEnvironment">
   <arg type="as" name="names" direction="in"/>
  </method>
  <method name="UnsetAndSetEnvironment">
   <arg type="as" name="names" direction="in"/>
   <arg type="as" name="assignments" direction="in"/>
  </method>
  <method name="EnqueueMarkedJobs">
   <arg type="ao" name="jobs" direction="out"/>
  </method>
  <method name="ListUnitFiles">
   <arg type="a(ss)" name="unit_files" direction="out"/>
  </method>
  <method name="ListUnitFilesByPatterns">
   <arg type="as" name="states" direction="in"/>
   <arg type="as" name="patterns" direction="in"/>
   <arg type="a(ss)" name="unit_files" direction="out"/>
  </method>
  <method name="GetUnitFileState">
   <arg type="s" name="file" direction="in"/>
   <arg type="s" name="state" direction="out"/>
  </method>
  <method name="EnableUnitFiles">
   <arg type="as" name="files" direction="in"/>
   <arg type="b" name="runtime" direction="in"/>
   <arg type="b" name="force" direction="in"/>
   <arg type="b" name="carries_install_info" direction="out"/>
   <arg type="a(sss)" name="changes" direction="out"/>
  </method>
  <method name="DisableUnitFiles">
   <arg type="as" name="files" direction="in"/>
   <arg type="b" name="runtime" direction="in"/>
   <arg type="a(sss)" name="changes" direction="out"/>
  </method>
  <method name="EnableUnitFilesWithFlags">
   <arg type="as" name="files" direction="in"/>
   <arg type="t" name="flags" direction="in"/>
   <arg type="b" name="carries_install_info" direction="out"/>
   <arg type="a(sss)" name="changes" direction="out"/>
  </method>
  <method name="DisableUnitFilesWithFlags">
   <arg type="as" name="files" direction="in"/>
   <arg type="t" name="flags" direction="in"/>
   <arg type="a(sss)" name="changes" direction="out"/>
  </method>
  <method name="ReenableUnitFiles">
   <arg type="as" name="files" direction="in"/>
   <arg type="b" name="runtime" direction="in"/>
   <arg type="b" name="force" direction="in"/>
   <arg type="b" name="carries_install_info" direction="out"/>
   <arg type="a(sss)" name="changes" direction="out"/>
  </method>
  <method name="LinkUnitFiles">
   <arg type="as" name="files" direction="in"/>
   <arg type="b" name="runtime" direction="in"/>
   <arg type="b" name="force" direction="in"/>
   <arg type="a(sss)" name="changes" direction="out"/>
  </method>
  <method name="PresetUnitFiles">
   <arg type="as" name="files" direction="in"/>
   <arg type="b" name="runtime" direction="in"/>
   <arg type="b" name="force" direction="in"/>
   <arg type="b" name="carries_install_info" direction="out"/>
   <arg type="a(sss)" name="changes" direction="out"/>
  </method>
  <method name="PresetUnitFilesWithMode">
   <arg type="as" name="files" direction="in"/>
   <arg type="s" name="mode" direction="in"/>
   <arg type="b" name="runtime" direction="in"/>
   <arg type="b" name="force" direction="in"/>
   <arg type="b" name="carries_install_info" direction="out"/>
   <arg type="a(sss)" name="changes" direction="out"/>
  </method>
  <method name="MaskUnitFiles">
   <arg type="as" name="files" direction="in"/>
   <arg type="b" name="runtime" direction="in"/>
   <arg type="b" name="force" direction="in"/>
   <arg type="a(sss)" name="changes" direction="out"/>
  </method>
  <method name="UnmaskUnitFiles">
   <arg type="as" name="files" direction="in"/>
   <arg type="b" name="runtime" direction="in"/>
   <arg type="a(sss)" name="changes" direction="out"/>
  </method>
  <method name="RevertUnitFiles">
   <arg type="as" name="files" direction="in"/>
   <arg type="a(sss)" name="changes" direction="out"/>
  </method>
  <method name="SetDefaultTarget">
   <arg type="s" name="name" direction="in"/>
   <arg type="b" name="force" direction="in"/>
   <arg type="a(sss)" name="changes" direction="out"/>
  </method>
  <method name="GetDefaultTarget">
   <arg type="s" name="name" direction="out"/>
  </method>
  <method name="PresetAllUnitFiles">
   <arg type="s" name="mode" direction="in"/>
   <arg type="b" name="runtime" direction="in"/>
   <arg type="b" name="force" direction="in"/>
   <arg type="a(sss)" name="changes" direction="out"/>
  </method>
  <method name="AddDependencyUnitFiles">
   <arg type="as" name="files" direction="in"/>
   <arg type="s" name="target" direction="in"/>
   <arg type="s" name="type" direction="in"/>
   <arg type="b" name="runtime" direction="in"/>
   <arg type="b" name="force" direction="in"/>
   <arg type="a(sss)" name="changes" direction="out"/>
  </method>
  <method name="GetUnitFileLinks">
   <arg type="s" name="name" direction="in"/>
   <arg type="b" name="runtime" direction="in"/>
   <arg type="as" name="links" direction="out"/>
  </method>
  <method name="SetExitCode">
   <arg type="y" name="number" direction="in"/>
  </method>
  <method name="LookupDynamicUserByName">
   <arg type="s" name="name" direction="in"/>
   <arg type="u" name="uid" direction="out"/>
  </method>
  <method name="LookupDynamicUserByUID">
   <arg type="u" name="uid" direction="in"/>
   <arg type="s" name="name" direction="out"/>
  </method>
  <method name="GetDynamicUsers">
   <arg type="a(us)" name="users" direction="out"/>
  </method>
  <signal name="UnitNew">
   <arg type="s" name="id"/>
   <arg type="o" name="unit"/>
  </signal>
  <signal name="UnitRemoved">
   <arg type="s" name="id"/>
   <arg type="o" name="unit"/>
  </signal>
  <signal name="JobNew">
   <arg type="u" name="id"/>
   <arg type="o" name="job"/>
   <arg type="s" name="unit"/>
  </signal>
  <signal name="JobRemoved">
   <arg type="u" name="id"/>
   <arg type="o" name="job"/>
   <arg type="s" name="unit"/>
   <arg type="s" name="result"/>
  </signal>
  <signal name="StartupFinished">
   <arg type="t" name="firmware"/>
   <arg type="t" name="loader"/>
   <arg type="t" name="kernel"/>
   <arg type="t" name="initrd"/>
   <arg type="t" name="userspace"/>
   <arg type="t" name="total"/>
  </signal>
  <signal name="UnitFilesChanged">
  </signal>
  <signal name="Reloading">
   <arg type="b" name="active"/>
  </signal>
 </interface>
 <node name="unit"/>
 <node name="job"/>
</node>

One curiosity to note:
I get a few extra classes running InterfaceCodeGenerator from the introspected XML that aren't produced running it with bus name + object path.
Additional classes:

  • job.Job
  • unit.Unit
  • 3 classes under org.freedesktop.dbus

The errors so far consist only of missing imports. List I imagine is the standard java.util class, DBusPath must be provided by dbus-java (likewise UInt32, etc.):

[INFO] --- maven-compiler-plugin:3.10.1:compile (default-compile) @ dbus-codegen ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 42 source files to /home/shanemikel/Work/dbus-codegen/target/classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] /home/shanemikel/Work/dbus-codegen/target/generated-sources/java/org/freedesktop/systemd1/PresetUnitFilesTuple.java:[13,13] cannot find symbol
  symbol:   class List
  location: class org.freedesktop.systemd1.PresetUnitFilesTuple
[ERROR] /home/shanemikel/Work/dbus-codegen/target/generated-sources/java/org/freedesktop/systemd1/PresetUnitFilesTuple.java:[15,61] cannot find symbol
  symbol:   class List
  location: class org.freedesktop.systemd1.PresetUnitFilesTuple
[ERROR] /home/shanemikel/Work/dbus-codegen/target/generated-sources/java/org/freedesktop/systemd1/PresetUnitFilesTuple.java:[27,28] cannot find symbol
  symbol:   class List
  location: class org.freedesktop.systemd1.PresetUnitFilesTuple
[ERROR] /home/shanemikel/Work/dbus-codegen/target/generated-sources/java/org/freedesktop/systemd1/PresetUnitFilesTuple.java:[31,12] cannot find symbol
  symbol:   class List
  location: class org.freedesktop.systemd1.PresetUnitFilesTuple
[ERROR] /home/shanemikel/Work/dbus-codegen/target/generated-sources/java/org/freedesktop/systemd1/ReenableUnitFilesTuple.java:[13,13] cannot find symbol
  symbol:   class List
  location: class org.freedesktop.systemd1.ReenableUnitFilesTuple
[ERROR] /home/shanemikel/Work/dbus-codegen/target/generated-sources/java/org/freedesktop/systemd1/ReenableUnitFilesTuple.java:[15,63] cannot find symbol
  symbol:   class List
  location: class org.freedesktop.systemd1.ReenableUnitFilesTuple
[ERROR] /home/shanemikel/Work/dbus-codegen/target/generated-sources/java/org/freedesktop/systemd1/ReenableUnitFilesTuple.java:[27,28] cannot find symbol
  symbol:   class List
  location: class org.freedesktop.systemd1.ReenableUnitFilesTuple
[ERROR] /home/shanemikel/Work/dbus-codegen/target/generated-sources/java/org/freedesktop/systemd1/ReenableUnitFilesTuple.java:[31,12] cannot find symbol
  symbol:   class List
  location: class org.freedesktop.systemd1.ReenableUnitFilesTuple
[ERROR] /home/shanemikel/Work/dbus-codegen/target/generated-sources/java/org/freedesktop/systemd1/EnqueueUnitJobTuple.java:[11,13] cannot find symbol
  symbol:   class UInt32
  location: class org.freedesktop.systemd1.EnqueueUnitJobTuple
[ERROR] /home/shanemikel/Work/dbus-codegen/target/generated-sources/java/org/freedesktop/systemd1/EnqueueUnitJobTuple.java:[13,13] cannot find symbol
  symbol:   class DBusPath
  location: class org.freedesktop.systemd1.EnqueueUnitJobTuple
[ERROR] /home/shanemikel/Work/dbus-codegen/target/generated-sources/java/org/freedesktop/systemd1/EnqueueUnitJobTuple.java:[17,13] cannot find symbol
  symbol:   class DBusPath
  location: class org.freedesktop.systemd1.EnqueueUnitJobTuple
[ERROR] /home/shanemikel/Work/dbus-codegen/target/generated-sources/java/org/freedesktop/systemd1/EnqueueUnitJobTuple.java:[21,13] cannot find symbol
  symbol:   class List
  location: class org.freedesktop.systemd1.EnqueueUnitJobTuple
[ERROR] /home/shanemikel/Work/dbus-codegen/target/generated-sources/java/org/freedesktop/systemd1/EnqueueUnitJobTuple.java:[23,32] cannot find symbol
  symbol:   class UInt32
  location: class org.freedesktop.systemd1.EnqueueUnitJobTuple
[ERROR] /home/shanemikel/Work/dbus-codegen/target/generated-sources/java/org/freedesktop/systemd1/EnqueueUnitJobTuple.java:[23,46] cannot find symbol
  symbol:   class DBusPath
  location: class org.freedesktop.systemd1.EnqueueUnitJobTuple
[ERROR] /home/shanemikel/Work/dbus-codegen/target/generated-sources/java/org/freedesktop/systemd1/EnqueueUnitJobTuple.java:[23,79] cannot find symbol
  symbol:   class DBusPath
  location: class org.freedesktop.systemd1.EnqueueUnitJobTuple
[ERROR] /home/shanemikel/Work/dbus-codegen/target/generated-sources/java/org/freedesktop/systemd1/EnqueueUnitJobTuple.java:[23,114] cannot find symbol
  symbol:   class List
  location: class org.freedesktop.systemd1.EnqueueUnitJobTuple
[ERROR] /home/shanemikel/Work/dbus-codegen/target/generated-sources/java/org/freedesktop/systemd1/EnqueueUnitJobTuple.java:[32,26] cannot find symbol
  symbol:   class UInt32
  location: class org.freedesktop.systemd1.EnqueueUnitJobTuple
[ERROR] /home/shanemikel/Work/dbus-codegen/target/generated-sources/java/org/freedesktop/systemd1/EnqueueUnitJobTuple.java:[36,12] cannot find symbol
  symbol:   class UInt32
  location: class org.freedesktop.systemd1.EnqueueUnitJobTuple
[ERROR] /home/shanemikel/Work/dbus-codegen/target/generated-sources/java/org/freedesktop/systemd1/EnqueueUnitJobTuple.java:[39,28] cannot find symbol
  symbol:   class DBusPath
  location: class org.freedesktop.systemd1.EnqueueUnitJobTuple
[ERROR] /home/shanemikel/Work/dbus-codegen/target/generated-sources/java/org/freedesktop/systemd1/EnqueueUnitJobTuple.java:[43,12] cannot find symbol
  symbol:   class DBusPath
  location: class org.freedesktop.systemd1.EnqueueUnitJobTuple
[ERROR] /home/shanemikel/Work/dbus-codegen/target/generated-sources/java/org/freedesktop/systemd1/EnqueueUnitJobTuple.java:[53,29] cannot find symbol
  symbol:   class DBusPath
  location: class org.freedesktop.systemd1.EnqueueUnitJobTuple
[ERROR] /home/shanemikel/Work/dbus-codegen/target/generated-sources/java/org/freedesktop/systemd1/EnqueueUnitJobTuple.java:[57,12] cannot find symbol
  symbol:   class DBusPath
  location: class org.freedesktop.systemd1.EnqueueUnitJobTuple
[ERROR] /home/shanemikel/Work/dbus-codegen/target/generated-sources/java/org/freedesktop/systemd1/EnqueueUnitJobTuple.java:[67,33] cannot find symbol
  symbol:   class List
  location: class org.freedesktop.systemd1.EnqueueUnitJobTuple
[ERROR] /home/shanemikel/Work/dbus-codegen/target/generated-sources/java/org/freedesktop/systemd1/EnqueueUnitJobTuple.java:[71,12] cannot find symbol
  symbol:   class List
  location: class org.freedesktop.systemd1.EnqueueUnitJobTuple
[ERROR] /home/shanemikel/Work/dbus-codegen/target/generated-sources/java/org/freedesktop/systemd1/PresetUnitFilesWithModeTuple.java:[13,13] cannot find symbol
  symbol:   class List
  location: class org.freedesktop.systemd1.PresetUnitFilesWithModeTuple
[ERROR] /home/shanemikel/Work/dbus-codegen/target/generated-sources/java/org/freedesktop/systemd1/PresetUnitFilesWithModeTuple.java:[15,69] cannot find symbol
  symbol:   class List
  location: class org.freedesktop.systemd1.PresetUnitFilesWithModeTuple
[ERROR] /home/shanemikel/Work/dbus-codegen/target/generated-sources/java/org/freedesktop/systemd1/PresetUnitFilesWithModeTuple.java:[27,28] cannot find symbol
  symbol:   class List
  location: class org.freedesktop.systemd1.PresetUnitFilesWithModeTuple
[ERROR] /home/shanemikel/Work/dbus-codegen/target/generated-sources/java/org/freedesktop/systemd1/PresetUnitFilesWithModeTuple.java:[31,12] cannot find symbol
  symbol:   class List
  location: class org.freedesktop.systemd1.PresetUnitFilesWithModeTuple
[ERROR] /home/shanemikel/Work/dbus-codegen/target/generated-sources/java/org/freedesktop/systemd1/EnableUnitFilesWithFlagsTuple.java:[13,13] cannot find symbol
  symbol:   class List
  location: class org.freedesktop.systemd1.EnableUnitFilesWithFlagsTuple
[ERROR] /home/shanemikel/Work/dbus-codegen/target/generated-sources/java/org/freedesktop/systemd1/EnableUnitFilesWithFlagsTuple.java:[15,70] cannot find symbol
  symbol:   class List
  location: class org.freedesktop.systemd1.EnableUnitFilesWithFlagsTuple
[ERROR] /home/shanemikel/Work/dbus-codegen/target/generated-sources/java/org/freedesktop/systemd1/EnableUnitFilesWithFlagsTuple.java:[27,28] cannot find symbol
  symbol:   class List
  location: class org.freedesktop.systemd1.EnableUnitFilesWithFlagsTuple
[ERROR] /home/shanemikel/Work/dbus-codegen/target/generated-sources/java/org/freedesktop/systemd1/EnableUnitFilesWithFlagsTuple.java:[31,12] cannot find symbol
  symbol:   class List
  location: class org.freedesktop.systemd1.EnableUnitFilesWithFlagsTuple
[ERROR] /home/shanemikel/Work/dbus-codegen/target/generated-sources/java/org/freedesktop/systemd1/EnableUnitFilesTuple.java:[13,13] cannot find symbol
  symbol:   class List
  location: class org.freedesktop.systemd1.EnableUnitFilesTuple
[ERROR] /home/shanemikel/Work/dbus-codegen/target/generated-sources/java/org/freedesktop/systemd1/EnableUnitFilesTuple.java:[15,61] cannot find symbol
  symbol:   class List
  location: class org.freedesktop.systemd1.EnableUnitFilesTuple
[ERROR] /home/shanemikel/Work/dbus-codegen/target/generated-sources/java/org/freedesktop/systemd1/EnableUnitFilesTuple.java:[27,28] cannot find symbol
  symbol:   class List
  location: class org.freedesktop.systemd1.EnableUnitFilesTuple
[ERROR] /home/shanemikel/Work/dbus-codegen/target/generated-sources/java/org/freedesktop/systemd1/EnableUnitFilesTuple.java:[31,12] cannot find symbol
  symbol:   class List
  location: class org.freedesktop.systemd1.EnableUnitFilesTuple
[INFO] 36 errors 

Apologies for the long code.

@shanemikel
Copy link
Author

thjomnx/java-systemd
is using ‘dbus-java’ to interact with the Systemd api.
I wonder if they encountered similar errors and how they managed to generate the bindings.

@shanemikel
Copy link
Author

I am experimenting with a DBus code generator for C#: tmds/Tmds.DBus.
This one produces code which compiles, and I have been successful making some simple org.freedesktop.systemd1.Manager method calls.

hypfvieh added a commit that referenced this issue Dec 8, 2022
@hypfvieh
Copy link
Owner

hypfvieh commented Dec 8, 2022

The correct path is "org.freedesktop.systemd1" and "/org/freedesktop/systemd1".
You can always check that using d-feet or similar tools.

I fixed the issues in code generator you found. Actually there were two bugs.
First: all generated tuple classes did not include the required imports.
Second: Nested Structs were not properly created or resolved.

Anyways, this is just a code generator, trying to parse the introspection xml and trys to generate java code as good as possible.
It is and never was intended to be a generate-nice-and-understandable-code-I-can-use-without-reading tool.

Generated code will always be ugly, bad named or badly formatted at some point.
The main purpose of the tool is to give you a starting point.
You are can always change, format, rename code as long as the interface classes stay compatible with the DBusInterface (if you rename the interface, you may have to use proper annotation to tell dbus-java that the name should be different from interface name).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants