@Override public DataProvider init(String topic, String sessionId, JsonElement jsonElement) throws DataProviderException { this.siddhiDataProviderConfig = new Gson().fromJson(jsonElement, SiddhiDataProviderConfig.class); siddhiDataProviderConfig.setQueryData(((JsonObject) jsonElement).get(STORE_QUERY)); siddhiDataProviderConfig.setSiddhiAppContext(((JsonObject) jsonElement).get(SIDDHI_APP).getAsString()); this.timeColumns = Arrays.asList(this.siddhiDataProviderConfig.getTimeColumns().toUpperCase(Locale.ENGLISH) .split(",")); super.init(topic, sessionId, siddhiDataProviderConfig); SiddhiAppRuntime siddhiAppRuntime = getSiddhiAppRuntime(); siddhiAppRuntime.setPurgingEnabled(false); siddhiAppRuntime.start(); StoreQuery storeQuery = SiddhiCompiler.parseStoreQuery(siddhiDataProviderConfig.getQueryData() .getAsJsonObject().get(QUERY).getAsString()); Attribute[] outputAttributeList = siddhiAppRuntime.getStoreQueryOutputAttributes(storeQuery); metadata = new DataSetMetadata(outputAttributeList.length); Attribute outputAttribute; for (int i = 0; i < outputAttributeList.length; i++) { outputAttribute = outputAttributeList[i]; metadata.put(i, outputAttribute.getName(), getMetadataTypes(outputAttribute.getName(), outputAttribute.getType().toString())); } return this; }