Skip to content

Commit 753e337

Browse files
committed
$ref で JSON の定義を参照できていなかった不具合を修正。
1 parent 8cedcce commit 753e337

1 file changed

Lines changed: 65 additions & 34 deletions

File tree

modules/deviceconnect-codegen/src/main/java/org/deviceconnect/codegen/plugin/AndroidPluginCodegenConfig.java

Lines changed: 65 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,14 @@ public enum ConnectionType {
4242
private final String modelDocPath = "docs/";
4343

4444
{
45-
addOption("targetSdkVersion", "", "28");
46-
addOption("minSdkVersion", "", "19");
47-
addOption("compileSdkVersion", "", "28");
48-
addOption("deviceConnectPluginSdkVersion", "", "2.7.2");
49-
addOption("deviceConnectSdkForAndroidVersion", "", "2.3.1");
45+
putOption("targetSdkVersion", "", "28");
46+
putOption("minSdkVersion", "", "19");
47+
putOption("compileSdkVersion", "", "28");
48+
putOption("deviceConnectPluginSdkVersion", "", "2.7.2");
49+
putOption("deviceConnectSdkForAndroidVersion", "", "2.3.1");
5050
}
5151

52-
private void addOption(final String name, final String description, final String defaultValue) {
52+
private void putOption(final String name, final String description, final String defaultValue) {
5353
CliOption option = CliOption.newString(name, description);
5454
option.setDefault(defaultValue);
5555
this.cliOptions.add(option);
@@ -595,7 +595,7 @@ protected List<String> getResponseCreation(final Swagger swagger, final Response
595595

596596
Map<String, Property> props = root.getProperties();
597597
if (props != null && props.size() > 0) {
598-
writeExampleResponse(root, "root", lines);
598+
writeExampleResponse(swagger, root, "root", lines);
599599
}
600600
return lines;
601601
}
@@ -636,30 +636,42 @@ protected List<String> getEventCreation(final Swagger swagger, final Response ev
636636

637637
Map<String, Property> props = root.getProperties();
638638
if (props != null && props.size() > 0) {
639-
writeExampleEvent(root, "root", lines);
639+
writeExampleEvent(swagger, root, "root", lines);
640640
}
641641
return lines;
642642
}
643643

644-
private void writeExampleResponse(final ObjectProperty root, final String rootName,
644+
private void writeExampleResponse(final Swagger swagger,
645+
final ObjectProperty root,
646+
final String rootName,
645647
final List<String> lines) {
646648
lines.add("Bundle " + rootName + " = response.getExtras();");
647-
writeExampleMessage(root, rootName, "", lines);
649+
writeExampleMessage(swagger, root, rootName, "", lines);
648650
lines.add("response.putExtras(" + rootName + ");");
649651
}
650652

651-
private void writeExampleEvent(final ObjectProperty root, final String rootName,
653+
private void writeExampleEvent(final Swagger swagger,
654+
final ObjectProperty root,
655+
final String rootName,
652656
final List<String> lines) {
653657
lines.add("Bundle " + rootName + " = message.getExtras();");
654-
writeExampleMessage(root, rootName, "", lines);
658+
writeExampleMessage(swagger, root, rootName, "", lines);
655659
lines.add("message.putExtras(" + rootName + ");");
656660
}
657661

658-
private void writeExampleMessage(final ObjectProperty root,
662+
private void writeExampleMessage(final Swagger swagger,
663+
final ObjectProperty root,
664+
final String rootName,
665+
final String objectNamePrefix,
666+
final List<String> lines) {
667+
writeExampleMessage(swagger, root.getProperties(), rootName, objectNamePrefix, lines);
668+
}
669+
670+
private void writeExampleMessage(final Swagger swagger,
671+
final Map<String, Property> props,
659672
final String rootName,
660673
final String objectNamePrefix,
661674
final List<String> lines) {
662-
Map<String, Property> props = root.getProperties();
663675
if (props == null) {
664676
return;
665677
}
@@ -670,31 +682,36 @@ private void writeExampleMessage(final ObjectProperty root,
670682
String type = prop.getType();
671683
String format = prop.getFormat();
672684
if ("array".equals(type)) {
673-
ArrayProperty arrayProp;
674-
if (!(prop instanceof ArrayProperty)) {
685+
System.out.println("writeExampleMessage: array: " + prop.getClass());
686+
if (!(prop instanceof ArrayProperty)) {
675687
continue;
676688
}
677-
arrayProp = (ArrayProperty) prop;
689+
ArrayProperty arrayProp = (ArrayProperty) prop;
678690
Property itemsProp = arrayProp.getItems();
679-
String arrayClassName = getArrayClassName(itemsProp);
680-
if (arrayClassName == null) {
681-
continue;
682-
}
683-
lines.add(arrayClassName + "[] " + propName + " = new " + arrayClassName + "[1];");
684-
if ("object".equals(itemsProp.getType())) {
685-
String index = "0";
686-
String objectPropName = getObjectName(objectNamePrefix, propName);
687-
String arrayPropName = objectPropName + "[" + index + "]";
688-
lines.add(arrayPropName + " = new Bundle();");
689-
writeExampleMessage((ObjectProperty) itemsProp, arrayPropName, objectPropName, lines);
690-
lines.add(rootName + ".putParcelableArray(\"" + propName + "\", " + objectPropName + ");");
691+
System.out.println("writeExampleMessage: itemsProp: " + itemsProp.getClass());
692+
if (itemsProp instanceof RefProperty) {
693+
RefProperty refItemsProp = (RefProperty) itemsProp;
694+
System.out.println("writeExampleMessage: refItemsProp: SimpleRef = " + refItemsProp.getSimpleRef()
695+
+ ", $ref = " + refItemsProp.get$ref()
696+
+ ", RefFormat = " + refItemsProp.getRefFormat());
697+
Model itemModel = findDefinition(swagger, refItemsProp.getSimpleRef());
698+
writeArrayExample(swagger, rootName, propName, itemModel.getProperties(), objectNamePrefix, lines);
691699
} else {
692-
lines.add(propName + "[0] = " + getExampleValue(itemsProp) + ";");
693-
String setterName = getSetterName(itemsProp.getType(), itemsProp.getFormat());
694-
if (setterName == null) {
700+
String arrayClassName = getArrayClassName(itemsProp);
701+
if (arrayClassName == null) {
695702
continue;
696703
}
697-
lines.add(rootName + "." + setterName + "Array(\"" + propName + "\", " + propName + ");");
704+
lines.add(arrayClassName + "[] " + propName + " = new " + arrayClassName + "[1];");
705+
if ("object".equals(itemsProp.getType())) {
706+
writeArrayExample(swagger, rootName, propName, ((ObjectProperty) itemsProp).getProperties(), objectNamePrefix, lines);
707+
} else {
708+
lines.add(propName + "[0] = " + getExampleValue(itemsProp) + ";");
709+
String setterName = getSetterName(itemsProp.getType(), itemsProp.getFormat());
710+
if (setterName == null) {
711+
continue;
712+
}
713+
lines.add(rootName + "." + setterName + "Array(\"" + propName + "\", " + propName + ");");
714+
}
698715
}
699716
} else if ("object".equals(type)) {
700717
ObjectProperty objectProp;
@@ -704,7 +721,7 @@ private void writeExampleMessage(final ObjectProperty root,
704721
objectProp = (ObjectProperty) prop;
705722
String objectPropName = getObjectName(objectNamePrefix, propName);
706723
lines.add("Bundle " + objectPropName + " = new Bundle();");
707-
writeExampleMessage(objectProp, objectPropName, objectPropName, lines);
724+
writeExampleMessage(swagger, objectProp, objectPropName, objectPropName, lines);
708725
lines.add(rootName + ".putBundle(\"" + propName + "\", " + objectPropName + ");");
709726
} else {
710727
String setterName = getSetterName(type, format);
@@ -716,6 +733,20 @@ private void writeExampleMessage(final ObjectProperty root,
716733
}
717734
}
718735

736+
private void writeArrayExample(final Swagger swagger,
737+
final String rootName,
738+
final String propName,
739+
final Map<String, Property> props,
740+
final String objectNamePrefix,
741+
final List<String> lines) {
742+
String index = "0";
743+
String objectPropName = getObjectName(objectNamePrefix, propName);
744+
String arrayPropName = objectPropName + "[" + index + "]";
745+
lines.add(arrayPropName + " = new Bundle();");
746+
writeExampleMessage(swagger, props, arrayPropName, objectPropName, lines);
747+
lines.add(rootName + ".putParcelableArray(\"" + propName + "\", " + objectPropName + ");");
748+
}
749+
719750
private String getObjectName(final String rootName, final String name) {
720751
return concatAsCamelCase(rootName, name);
721752
}

0 commit comments

Comments
 (0)