/* * Copyright 2012 JBoss Inc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.artificer.demos.simpleclient; import org.artificer.client.ArtificerAtomApiClient; import org.artificer.common.query.ArtifactSummary; import org.artificer.client.query.QueryResultSet; import org.artificer.common.ArtifactType; import org.artificer.common.ArtificerModelUtils; import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.BaseArtifactType; import java.io.InputStream; /** * A simple S-RAMP client demo. This class strives to demonstrate how to use the S-RAMP client. * * @author eric.wittmann@redhat.com */ public class SimpleClientDemo { private static final String DEFAULT_ENDPOINT = "http://localhost:8080/artificer-server"; private static final String DEFAULT_USER = "admin"; private static final String DEFAULT_PASSWORD = "artificer1!"; private static final String[] FILES = { "ws-humantask.xsd", "ws-humantask-context.xsd", "ws-humantask-policy.xsd", "ws-humantask-types.xsd", "ws-humantask-leantask-api.wsdl", "ws-humantask-protocol.wsdl" }; /** * Main. * * @param args */ public static void main(String[] args) throws Exception { System.out.println("\n*** Running Artificer Simple Client Demo ***\n"); String endpoint = System.getProperty("artificer.endpoint"); String username = System.getProperty("artificer.auth.username"); String password = System.getProperty("artificer.auth.password"); if (endpoint == null || endpoint.trim().length() == 0) { endpoint = DEFAULT_ENDPOINT; } if (username == null || username.trim().length() == 0) { username = DEFAULT_USER; } if (password == null || password.trim().length() == 0) { password = DEFAULT_PASSWORD; } System.out.println("Artificer Endpoint: " + endpoint); System.out.println("Artificer User: " + username); ArtificerAtomApiClient client = new ArtificerAtomApiClient(endpoint, username, password, true); // Have we already run this demo? QueryResultSet rs = client.buildQuery("/s-ramp[@from-demo = ?]") .parameter(SimpleClientDemo.class.getSimpleName()).count(1).query(); if (rs.size() > 0) { System.out.println("It looks like you already ran this demo!"); System.out.println("I'm going to quit, because I don't want to clutter up"); System.out.println("your repository with duplicate stuff."); System.exit(1); } // Upload some artifacts to the Artificer repository System.out.println("Uploading some XML schemas..."); for (String file : FILES) { // Get an InputStream over the file content InputStream is = SimpleClientDemo.class.getResourceAsStream(file); try { // We need to know the artifact type ArtifactType type = ArtifactType.XsdDocument(); if (file.endsWith(".wsdl")) { type = ArtifactType.WsdlDocument(); } // Upload that content to Artificer System.out.print("\tUploading artifact " + file + "..."); BaseArtifactType artifact = client.uploadArtifact(type, is, file); System.out.println("done."); // Update the artifact meta-data (set the version and add a custom property) artifact.setVersion("1.1"); ArtificerModelUtils.setCustomProperty(artifact, "from-demo", SimpleClientDemo.class.getSimpleName()); // Tell the server about the updated meta-data System.out.print("\tUpdating meta-data for artifact " + file + "..."); client.updateArtifactMetaData(artifact); System.out.println("done."); } finally { is.close(); } } // Now query the Artificer repository (for the Schemas only) System.out.print("Querying the Artificer repository for Schemas..."); QueryResultSet rset = client.query("/s-ramp/xsd/XsdDocument"); System.out.println("success: " + rset.size() + " Schemas found:"); for (ArtifactSummary entry : rset) { System.out.println("\t * " + entry.getName() + " (" + entry.getUuid() + ")"); } System.out.println("\n*** Demo Completed Successfully ***\n\n"); Thread.sleep(3000); } }