enonic / lib-guillotine

Apache License 2.0
3 stars 0 forks source link

Enonic XP allows for property names with '-' while these are not supported by GraphQL #72

Closed tomanders closed 3 years ago

tomanders commented 3 years ago

The problem arises when one try to access these data through lib-guillotine. The properties are not supported in GraphQL ( http://spec.graphql.org/July2015/#Name).

Caused by: graphql.AssertException: Name must be non-null, non-empty and match [_A-Za-z][_0-9A-Za-z]* - was 'related-information'
    at graphql.Assert.assertValidName(Assert.java:107)
    at graphql.schema.GraphQLEnumValueDefinition.<init>(GraphQLEnumValueDefinition.java:83)
    at graphql.schema.GraphQLEnumValueDefinition.<init>(GraphQLEnumValueDefinition.java:31)
    at graphql.schema.GraphQLEnumValueDefinition$Builder.build(GraphQLEnumValueDefinition.java:246)
    at graphql.schema.GraphQLEnumType$Builder.value(GraphQLEnumType.java:273)
    at com.enonic.lib.graphql.GraphQlBean.setValues(GraphQlBean.java:132)
    at com.enonic.lib.graphql.GraphQlBean.createEnumType(GraphQlBean.java:115)
    at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$Recompilation$1284$2530A$graphql.L:1#createEnumType(no.:/lib/graphql.js:68)
    at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$Recompilation$1337$5593AAA$form.L:1#generateOptionSetEnum(no.:/lib/guillotine/dynamic/form.js:160)
    at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$Recompilation$1336$4472AAA$form.L:1#generateOptionSetObjectType(no.:/lib/guillotine/dynamic/form.js:130)
    at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$Recompilation$1307$1007AAA$form.L:1#generateFormItemObjectType(no.:/lib/guillotine/dynamic/form.js:43)
    at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$Recompilation$1328$4784A$content_types.L:1#generateContentDataObjectType#L:124(no:/lib/guillotine/dynamic/content-types.js:128)
    at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:657)
    at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:513)
    at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:527)
    at jdk.scripting.nashorn/jdk.nashorn.internal.objects.NativeArray$9.forEach(NativeArray.java:1577)
    at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.arrays.IteratorAction.apply(IteratorAction.java:110)
    at jdk.scripting.nashorn/jdk.nashorn.internal.objects.NativeArray.forEach(NativeArray.java:1580)
sigdestad commented 3 years ago

Which version of Guillotine are you using? Also nice if you can share your schema with us.

tomanders commented 3 years ago

We're running latest version of guillotine, 4.2.2

Heres part of a config that fails.

    <mixin>
      <form>
        <option-set name="menuListItems">
          <label>Innhold i høyremenyen</label>
          <expanded>false</expanded>
          <occurrences minimum="0" maximum="1"/>
          <options minimum="0" maximum="10">
            <option name="related-information">
              <label>relatert informasjon</label>
              <items>
                <input name="link" type="contentselector">
                  <label>innhold</label>
                  <custom-text>contentdata/links</custom-text>
                  <occurrences maximum="0" minimum="0"/>
                </input>
              </items>
            </option>
          </options>
        </option-set>
      </form>
    </mixin>