1616package org .raml .parser .visitor ;
1717
1818import static org .hamcrest .CoreMatchers .is ;
19+ import static org .hamcrest .CoreMatchers .notNullValue ;
1920import static org .junit .Assert .assertThat ;
2021
22+ import java .util .ArrayList ;
23+ import java .util .List ;
24+ import java .util .Map ;
25+
2126import org .junit .Test ;
2227import org .raml .model .Raml ;
28+ import org .raml .model .SecurityScheme ;
29+ import org .raml .parser .annotation .Mapping ;
2330import org .raml .parser .annotation .Scalar ;
31+ import org .raml .parser .annotation .Sequence ;
2432import org .raml .parser .builder .AbstractRamlTestCase ;
2533
2634public class RamlDocumentBuilderTestCase extends AbstractRamlTestCase
@@ -34,6 +42,15 @@ public void parseExtendedModel()
3442 assertThat (raml .getExtension (), is ("additional data" )); // non-standard property
3543 }
3644
45+ @ Test
46+ public void parseModelWithExtensionInExistingKey ()
47+ {
48+ RamlExt2 raml = (RamlExt2 ) new RamlDocumentBuilder (RamlExt2 .class ).build ("org/raml/parser/visitor/extended.yaml" );
49+ SecuritySchemeExt scheme = raml .getSecuritySchemesExt ().get (0 ).get ("extended" );
50+ assertThat (scheme .getDescription (), is (notNullValue ()));
51+ assertThat (scheme .getExtension ().get ("key1" ), is ("foo" ));
52+ }
53+
3754 public static class RamlExt extends Raml
3855 {
3956 private static final long serialVersionUID = 533345138584973337L ;
@@ -49,4 +66,36 @@ public void setExtension(String extension) {
4966 this .extension = extension ;
5067 }
5168 }
69+
70+ public static class RamlExt2 extends Raml
71+ {
72+ private static final long serialVersionUID = 1451208177799874616L ;
73+
74+ @ Sequence (alias = "securitySchemes" )
75+ private List <Map <String , SecuritySchemeExt >> securitySchemesExt = new ArrayList <Map <String , SecuritySchemeExt >>();
76+
77+ public List <Map <String , SecuritySchemeExt >> getSecuritySchemesExt () {
78+ return securitySchemesExt ;
79+ }
80+
81+ public void setSecuritySchemesExt (List <Map <String , SecuritySchemeExt >> securitySchemesExt ) {
82+ this .securitySchemesExt = securitySchemesExt ;
83+ }
84+ }
85+
86+ public static class SecuritySchemeExt extends SecurityScheme
87+ {
88+ private static final long serialVersionUID = -7059558387326732177L ;
89+
90+ @ Mapping
91+ private Map <String ,String > extension ;
92+
93+ public Map <String , String > getExtension () {
94+ return extension ;
95+ }
96+
97+ public void setExtension (Map <String , String > extension ) {
98+ this .extension = extension ;
99+ }
100+ }
52101}
0 commit comments