private void assertQueryDefinition(final QueryServicesClient client, final String name) { QueryDefinition qd = client.getQuery(name); assertNotNull(qd); }
@Test public void testDataSetMetaData() throws Exception { Map<String, String> columns = new HashMap<>(); columns.put("test", "NUMBER"); QueryDefinition definition = QueryDefinition.builder() .name("q1") .columns(columns) .build(); when(dataSetDef.getColumns()).thenReturn(null, new ArrayList<>()); when(dataSetDef.getServerTemplateId()).thenReturn("servereTemplateId"); when(queryServicesClient.getQuery(anyString())).thenReturn(definition); kieServerDataSetProvider.getDataSetMetadata(dataSetDef); verify(dataSetDef, times(1)).addColumn(eq("test"), eq(ColumnType.NUMBER)); verify(queryServicesClient).getQuery(anyString()); }
@Test public void testDataSetMetaData() throws Exception { Map<String, String> columns = new HashMap<>(); columns.put("test", "NUMBER"); QueryDefinition definition = QueryDefinition.builder() .name("q1") .columns(columns) .build(); when(dataSetDef.getColumns()).thenReturn(null, new ArrayList<>()); when(dataSetDef.getServerTemplateId()).thenReturn("servereTemplateId"); when(queryServicesClient.getQuery(anyString())).thenReturn(definition); kieServerDataSetProvider.getDataSetMetadata(dataSetDef); verify(dataSetDef, times(1)).addColumn(eq("test"), eq(ColumnType.NUMBER)); verify(queryServicesClient).getQuery(anyString()); }
@Override public DataSetMetadata getDataSetMetadata(DataSetDef def) throws Exception { List<String> columnNames = new ArrayList<>(); List<ColumnType> columnTypes = new ArrayList<>(); if (def.getColumns() == null && def instanceof RemoteDataSetDef) { final QueryServicesClient queryClient = getClient(((RemoteDataSetDef) def).getServerTemplateId(), QueryServicesClient.class); QueryDefinition definition = queryClient.getQuery(def.getUUID()); if (definition.getColumns() != null) { for (Entry<String, String> entry : definition.getColumns().entrySet()) { if (def.getColumnById(entry.getKey()) == null) { def.addColumn(entry.getKey(), ColumnType.valueOf(entry.getValue())); } } } } List<DataColumnDef> columns = def.getColumns(); for (DataColumnDef column : columns) { columnNames.add(column.getId()); columnTypes.add(column.getColumnType()); } return new DataSetMetadataImpl(def, def.getUUID(), -1, def.getColumns().size(), columnNames, columnTypes, -1); }
@Test public void testQueryDefinitionsFromKjar() throws Exception { String expectedResolvedDS = System.getProperty("org.kie.server.persistence.ds", "jdbc/jbpm-ds"); QueryDefinition registeredQuery = queryClient.getQuery("first-query"); assertNotNull(registeredQuery); assertEquals("first-query", registeredQuery.getName()); assertEquals(expectedResolvedDS, registeredQuery.getSource()); assertEquals("select * from ProcessInstanceLog", registeredQuery.getExpression()); assertEquals("PROCESS", registeredQuery.getTarget()); registeredQuery = queryClient.getQuery("second-query"); assertNotNull(registeredQuery); assertEquals("second-query", registeredQuery.getName()); assertEquals(expectedResolvedDS, registeredQuery.getSource()); assertEquals("select * from NodeInstanceLog", registeredQuery.getExpression()); assertEquals("CUSTOM", registeredQuery.getTarget()); }
@Test public void testInvalidQuery() { QueryDefinition query = new QueryDefinition(); query.setName("invalidQuery"); query.setSource(System.getProperty("org.kie.server.persistence.ds", "jdbc/jbpm-ds")); query.setExpression("this is an invalid query"); query.setTarget("CUSTOM"); try { assertClientException( () -> queryClient.registerQuery(query), 500, "Can't get metadata on specified data set: invalidQuery"); assertClientException( () -> queryClient.getQuery(query.getName()), 404, "Could not find query definition with name \"" + query.getName() + "\"", "Query invalidQuery not found"); } catch (Throwable e) { try { queryClient.unregisterQuery(query.getName()); } catch (KieServicesException ex) { // expected in case the query wasn't registered } throw e; } }
assertEquals(query.getTarget(), registeredQuery.getTarget()); registeredQuery = queryClient.getQuery(query.getName());
assertEquals(query.getTarget(), registeredQuery.getTarget()); registeredQuery = queryClient.getQuery(query.getName());