Hi,

It was found that a JSON of following format is not possible to be
converted to respective Avro schema and an exception [1] is thrown.

{
   "avatarUrls":{
      "16x16":"
https://jirastg.wso2.org/jira/secure/projectavatar?size=xsmall&pid=10030&avatarId=10011
",
      "24x24":"
https://jirastg.wso2.org/jira/secure/projectavatar?size=small&pid=10030&avatarId=10011
",
      "32x32":"
https://jirastg.wso2.org/jira/secure/projectavatar?size=medium&pid=10030&avatarId=10011
",
      "48x48":"
https://jirastg.wso2.org/jira/secure/projectavatar?pid=10030&avatarId=10011";
   }
}

This is due to key values in JSON that start with numbers. In JSON, this is
possible but it is not possible on java based Avro. How can we overcome
this in DataMapper context?

[1]
org.apache.avro.SchemaParseException: Illegal initial character: 16x16
at org.apache.avro.Schema.validateName(Schema.java:1061)
at org.apache.avro.Schema.access$200(Schema.java:79)
at org.apache.avro.Schema$Field.<init>(Schema.java:372)
at org.apache.avro.Schema$Field.<init>(Schema.java:367)
at
org.wso2.developerstudio.datamapper.diagram.custom.persistence.JsonToAvroSchemaTransformer.createField(JsonToAvroSchemaTransformer.java:239)
at
org.wso2.developerstudio.datamapper.diagram.custom.persistence.JsonToAvroSchemaTransformer.createRecord(JsonToAvroSchemaTransformer.java:146)
at
org.wso2.developerstudio.datamapper.diagram.custom.persistence.JsonToAvroSchemaTransformer.createRecord(JsonToAvroSchemaTransformer.java:140)
at
org.wso2.developerstudio.datamapper.diagram.custom.persistence.JsonToAvroSchemaTransformer.createRecord(JsonToAvroSchemaTransformer.java:140)
at
org.wso2.developerstudio.datamapper.diagram.custom.persistence.JsonToAvroSchemaTransformer.createArray(JsonToAvroSchemaTransformer.java:186)
at
org.wso2.developerstudio.datamapper.diagram.custom.persistence.JsonToAvroSchemaTransformer.transform(JsonToAvroSchemaTransformer.java:104)
at
org.wso2.developerstudio.datamapper.diagram.custom.action.SchemaFromJsonAction.doRun(SchemaFromJsonAction.java:82)
at
org.eclipse.gmf.runtime.common.ui.action.AbstractActionHandler.run(AbstractActionHandler.java:359)
at
org.eclipse.gmf.runtime.common.ui.action.ActionManager$1.run(ActionManager.java:225)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
at
org.eclipse.gmf.runtime.common.ui.action.ActionManager.run(ActionManager.java:223)
at
org.eclipse.gmf.runtime.common.ui.action.AbstractActionHandler.runWithEvent(AbstractActionHandler.java:377)
at
org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)
at
org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501)
at
org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1392)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3742)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3363)
at
org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1113)
at
org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at
org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:997)
at
org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:140)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:611)
at
org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at
org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:567)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
at
org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
at
org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:354)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:181)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:636)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:591)
at org.eclipse.equinox.launcher.Main.run(Main.java:1450)
at org.eclipse.equinox.launcher.Main.main(Main.java:1426)

Thanks,

-- 
*Gayan Kaushalya Yalpathwala*
 Software Engineer
WSO2 Inc.; http://wso2.com
lean.enterprise.middleware

mobile: +94 71 8682704 <http://asia14.wso2con.com/>

<http://asia14.wso2con.com/>H
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to