About use rest API error

the error info:
javax.ws.rs.ProcessingException: Could not write JSON: write javaBean error, fastjson version 1.2.47, class com.dremio.service.namespace.source.proto.SourceConfig, -1
at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:261)
at org.glassfish.jersey.client.JerseyInvocation$1.call(JerseyInvocation.java:684)
at org.glassfish.jersey.client.JerseyInvocation$1.call(JerseyInvocation.java:681)
at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
at org.glassfish.jersey.internal.Errors.process(Errors.java:228)
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:444)
at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:681)
at com.lanysec.service.sql.utils.BaseClientUtils.expect(BaseClientUtils.java:68)
at com.lanysec.service.sql.utils.BaseClientUtils.expectSuccess(BaseClientUtils.java:41)
at com.lanysec.service.sql.dremio.DremioSQLEngineService.TestMysqlSourceAdd(DremioSQLEngineService.java:456)
at com.lanysec.service.sql.dremio.DremioSQLEngineService.main(DremioSQLEngineService.java:607)
Caused by: javax.ws.rs.WebApplicationException: Could not write JSON: write javaBean error, fastjson version 1.2.47, class com.dremio.service.namespace.source.proto.SourceConfig, -1
at com.alibaba.fastjson.support.jaxrs.FastJsonProvider.writeTo(FastJsonProvider.java:327)
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.invokeWriteTo(WriterInterceptorExecutor.java:265)
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.aroundWriteTo(WriterInterceptorExecutor.java:250)
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162)
at org.glassfish.jersey.message.internal.MessageBodyFactory.writeTo(MessageBodyFactory.java:1130)
at org.glassfish.jersey.client.ClientRequest.doWriteEntity(ClientRequest.java:517)
at org.glassfish.jersey.client.ClientRequest.writeEntity(ClientRequest.java:499)
at org.glassfish.jersey.client.internal.HttpUrlConnector._apply(HttpUrlConnector.java:393)
at org.glassfish.jersey.client.internal.HttpUrlConnector.apply(HttpUrlConnector.java:285)
at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:252)
… 11 more
Caused by: com.alibaba.fastjson.JSONException: write javaBean error, fastjson version 1.2.47, class com.dremio.service.namespace.source.proto.SourceConfig, -1
at com.alibaba.fastjson.serializer.JavaBeanSerializer.write(JavaBeanSerializer.java:465)
at com.alibaba.fastjson.serializer.JavaBeanSerializer.write(JavaBeanSerializer.java:120)
at com.alibaba.fastjson.serializer.JSONSerializer.write(JSONSerializer.java:281)
at com.alibaba.fastjson.JSON.writeJSONString(JSON.java:845)
at com.alibaba.fastjson.support.jaxrs.FastJsonProvider.writeTo(FastJsonProvider.java:309)
… 20 more
Caused by: java.lang.ArrayIndexOutOfBoundsException: -1
at com.google.common.collect.RegularImmutableList.get(RegularImmutableList.java:58)
at com.dremio.service.namespace.NamespaceKey.getLeaf(NamespaceKey.java:66)
at com.alibaba.fastjson.serializer.ASMSerializer_3_NamespaceKey.write(Unknown Source)
at com.alibaba.fastjson.serializer.ASMSerializer_3_NamespaceKey.write(Unknown Source)
at com.alibaba.fastjson.serializer.FieldSerializer.writeValue(FieldSerializer.java:298)
at com.alibaba.fastjson.serializer.JavaBeanSerializer.write(JavaBeanSerializer.java:411)
… 24 more

the core code for:
SourceConfig mysqlConfig = new SourceConfig();
mysqlConfig.setDescription(“lanysec mysql database 111”);
mysqlConfig.setType(“MYSQL”);
mysqlConfig.setName(“mysql111”);
MetadataPolicy metadataPolicy = new MetadataPolicy();
metadataPolicy.setAuthTtlMs(8640L);
metadataPolicy.setNamesRefreshMs(3600L);
metadataPolicy.setDatasetDefinitionRefreshAfterMs(3600L);
metadataPolicy.setDatasetDefinitionExpireAfterMs(10800L);
metadataPolicy.setDatasetUpdateMode(UpdateMode.PREFETCH_QUERIED);
mysqlConfig.setMetadataPolicy(metadataPolicy);
MySQLConf mysqlConf = new MySQLConf();
mysqlConf.hostname =“192.168.9.163”;
mysqlConf.port = “3306”;//+ConfigUtil.getInt(CSP_DBCONFIG_PORT, 3306);
mysqlConf.username = “root”;
mysqlConf.password = “Admin@123”;
mysqlConf.authenticationType = AuthenticationType.MASTER;
mysqlConf.fetchSize = 0;
mysqlConfig.setConfig(mysqlConf.toBytesString());
final String sourceName = “mysql_test”;
final long refreshPeriod = TimeUnit.HOURS.toMillis(4);
final long gracePeriod = TimeUnit.HOURS.toMillis(12);
mysqlConfig.setAccelerationGracePeriod(gracePeriod);
mysqlConfig.setAccelerationRefreshPeriod(refreshPeriod);
expectSuccess(
getBuilder(“192.168.9.163:9047/api/v2/source”)
.buildPut(Entity.entity(mysqlConfig, JSON)));

@bjbhjsj what version of the API are you writing against? Looks like this is on v2, which is for internal use only.

Hi,can
thanks for your reply. I want to know how to see the dremio2.0‘s rest Api Endpoints
for example:
192.168.9.163:9047/api/v2/source
192.168.9.163:9047/api/v3/source
thanks!
I use the endpoint: 192.168.9.163:9047/api/source
it also response the same error information.

I think the Catalog API is a good start. Take a look here:
http://docs.dremio.com/rest-api/catalog/