COSMOS provides a remote client proxy for invoking the CMDBf query service. Since this example implements the query service, we can use the query service client to invoke the query operation.
Here is a code snippet for invoking the query service using the query service client. This example loads a query from a file, invokes the GraphQuery operation of the Example MDR query service, and prints out the query response in the console.
// EPR of the query service String queryServieEpr = "http://localhost:8080/axis2/services/ExampleMdrQueryService"; What should this change to? // instantiate the query service client QueryServiceClient client = new QueryServiceClient(queryServieEpr); // path to a file that contains a CMDBf query String filepath = "c:\cosmos-demo\cosmos-client\cmdbfQuery\ExampleMDR"; try { // loads the query into a DOM tree Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new File(queryFile)); Element elem = doc.getDocumentElement(); // invokes the query Element response = client.graphQuery(elem); // Writes the response using a StringWriter TransformerFactory tf = TransformerFactory.newInstance(); Transformer trans = tf.newTransformer(); StringWriter sw = new StringWriter(); trans.transform(new DOMSource(response), new StreamResult(sw)); // prints out the response System.out.println("Query response:"); System.out.println(sw.toString()); } catch (CMDBfException cmdbfex) { // In case the query operation returns a SOAP fault, // here is how you can catch the fault and inspect the fault message if (cmdbfex.getCause() instanceof AxisFault) { AxisFault axisfault = (AxisFault) cmdbfex.getCause(); System.out.println("Fault code: " + axisfault.getFaultCode()); System.out.println("Fault subcode: " + axisfault.getFaultSubCodes()); System.out.println("Fault message: " + axisfault.getMessage()); System.out.println("Fault details: " + axisfault.getDetail()); } }