Skip to content

Commit d63b128

Browse files
committed
Issue hypfvieh#121: Added missing constructor
1 parent 0f6899e commit d63b128

File tree

1 file changed

+21
-13
lines changed

1 file changed

+21
-13
lines changed

dbus-java-utils/src/main/java/org/freedesktop/dbus/utils/generator/StructTreeBuilder.java

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,16 @@
1111
import org.freedesktop.dbus.Struct;
1212
import org.freedesktop.dbus.annotations.Position;
1313
import org.freedesktop.dbus.exceptions.DBusException;
14+
import org.freedesktop.dbus.utils.generator.ClassBuilderInfo.ClassConstructor;
1415
import org.freedesktop.dbus.utils.generator.ClassBuilderInfo.ClassType;
1516

1617
import com.github.hypfvieh.util.StringUtil;
1718

1819
/**
1920
* Helper to create a DBus struct class.
20-
* As Structs are regular classes (POJOs) in Java,
21+
* As Structs are regular classes (POJOs) in Java,
2122
* this helper also takes care about recursion (Struct in Struct/Map/List).
22-
*
23+
*
2324
* @author hypfvieh
2425
* @since v3.0.1 - 2018-12-21
2526
*/
@@ -34,13 +35,13 @@ public class StructTreeBuilder {
3435
* <br><br>
3536
* Structs which are inside of another struct will get the appendix 'Struct' for each iteration.
3637
* This may lead to classes with names like FooStructStructStruct (FooStruct-&gt;(InnerStruct-&gt;InnerInnerStruct)).
37-
*
38+
*
3839
* @param _dbusSig dbus Type string
3940
* @param _structName name the struct should have
4041
* @param _clzBldr class builder with the class where the struct was first seen
4142
* @param _generatedClasses a list, this will contain additional struct classes created, if any. Should never be null!
42-
*
43-
* @return Struct class name or Collection type name
43+
*
44+
* @return Struct class name or Collection type name
4445
* @throws DBusException on DBus Error
4546
*/
4647
public String buildStructClasses(String _dbusSig, String _structName, ClassBuilderInfo _clzBldr, List<ClassBuilderInfo> _generatedClasses) throws DBusException {
@@ -86,7 +87,7 @@ public String buildStructClasses(String _dbusSig, String _structName, ClassBuild
8687

8788
/**
8889
* Create nested Struct class.
89-
*
90+
*
9091
* @param _list List of struct tree elements
9192
* @param _info root class of this struct (maybe other struct)
9293
* @param _classes a list, this will contain additional struct classes created, if any. Should never be null!
@@ -96,9 +97,14 @@ private void createNested(List<StructTree> _list, ClassBuilderInfo _info, List<C
9697

9798
ClassBuilderInfo info = _info;
9899

100+
ClassConstructor classConstructor = new ClassConstructor();
101+
99102
for (StructTree inTree : _list) {
100103
ClassBuilderInfo.ClassMember member = new ClassBuilderInfo.ClassMember("member" + position, inTree.getDataType().getName(), true);
101104
member.getAnnotations().add("@Position(" + position + ")");
105+
106+
classConstructor.getArguments().put("member" + position, inTree.getDataType().getName());
107+
102108
position++;
103109

104110
if (Struct.class.isAssignableFrom(inTree.getDataType())) {
@@ -120,14 +126,16 @@ private void createNested(List<StructTree> _list, ClassBuilderInfo _info, List<C
120126
info.getImports().add(Position.class.getName()); // add position annotation as include
121127
info.getImports().add(inTree.getDataType().getName());
122128
info.getMembers().add(member);
123-
124129
}
130+
131+
info.getConstructors().add(classConstructor);
132+
125133
}
126134

127135

128136
/**
129137
* Helper to print a StructTree to STDOUT (for debugging purposes).
130-
*
138+
*
131139
* @param _buildTree tree to print
132140
* @param _indent indention level (usually 0)
133141
*/
@@ -151,7 +159,7 @@ static void printTree(List<StructTree> _buildTree, int _indent) {
151159

152160
/**
153161
* Builds a tree of types based on the given DBus type definition string.
154-
*
162+
*
155163
* @param _dbusTypeStr DBus type string
156164
* @return List with tree structure, maybe empty - never null
157165
* @throws DBusException on Error
@@ -162,7 +170,7 @@ private List<StructTree> buildTree(String _dbusTypeStr) throws DBusException {
162170
if (StringUtil.isBlank(_dbusTypeStr)) {
163171
return root;
164172
}
165-
173+
166174
List<Type> dataType = new ArrayList<>();
167175
Marshalling.getJavaType(_dbusTypeStr, dataType, 1);
168176

@@ -182,7 +190,7 @@ private List<StructTree> buildTree(String _dbusTypeStr) throws DBusException {
182190

183191
/**
184192
* Create tree from {@link ParameterizedType}.
185-
*
193+
*
186194
* @param _pType {@link ParameterizedType} object
187195
* @return List of tree elements, maybe empty, never null
188196
* @throws DBusException on error
@@ -192,7 +200,7 @@ private List<StructTree> buildTree(ParameterizedType _pType) throws DBusExceptio
192200
if (_pType == null) {
193201
return trees;
194202
}
195-
203+
196204
for (Type type : _pType.getActualTypeArguments()) {
197205
if (type instanceof ParameterizedType) {
198206
StructTree tree = new StructTree(((ParameterizedType) type).getRawType().getTypeName());
@@ -208,7 +216,7 @@ private List<StructTree> buildTree(ParameterizedType _pType) throws DBusExceptio
208216

209217
/**
210218
* Class to represent a tree structure.
211-
*
219+
*
212220
* @author hypfvieh
213221
* @since v3.0.1 - 2018-12-22
214222
*/

0 commit comments

Comments
 (0)