/* * * Copyright 2002 Sun Microsystems, Inc. All Rights Reserved. * * Redistribution and use in source and binary forms, with or * without modification, are permitted provided that the following * conditions are met: * * - Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * - Redistribution in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials * provided with the distribution. * * Neither the name of Sun Microsystems, Inc. or the names of * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * This software is provided "AS IS," without a warranty of any * kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY * EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY * DAMAGES OR LIABILITIES SUFFERED BY LICENSEE AS A RESULT OF OR * RELATING TO USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE OR * ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE * FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, * SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF * THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF SUN HAS * BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. * * You acknowledge that this software is not designed, licensed or * intended for use in the design, construction, operation or * maintenance of any nuclear facility. * */ package com.sun.cb; import javax.xml.registry.*; import javax.xml.registry.infomodel.*; import java.net.*; import java.util.*; /** * The JAXRQueryByName class consists of a main method, a * makeConnection method, an executeQuery method, and some * helper methods. It searches a registry for * information about organizations whose names contain a * user-supplied string. * * To run this program, use the command * * ant -Dquery-string= run-query * * after starting Tomcat and Xindice. */ public class JAXRQueryByName { static Connection connection = null; public JAXRQueryByName() {} public static void main(String[] args) { String queryURL = "http://localhost:8080/registry-server/RegistryServerServlet"; String publishURL = "http://localhost:8080/registry-server/RegistryServerServlet"; if (args.length < 1) { System.out.println("Usage: ant " + "-Dquery-string= run-query"); System.exit(1); } String queryString = new String(args[0]); System.out.println("Query string is " + queryString); JAXRQueryByName jq = new JAXRQueryByName(); connection = jq.makeConnection(queryURL, publishURL); jq.executeQuery(queryString); } /** * Establishes a connection to a registry. * * @param queryUrl the URL of the query registry * @param publishUrl the URL of the publish registry * @return the connection */ public Connection makeConnection(String queryUrl, String publishUrl) { /* * Edit to provide your own proxy information * if you are going beyond your firewall. * Host format: "host.subdomain.domain.com". * Port is usually 8080. * Leave blank to use Registry Server. */ String httpProxyHost = ""; String httpProxyPort = ""; /* * Define connection configuration properties. * For simple queries, you need the query URL. * To obtain the connection factory class, set a System * property. */ System.setProperty("com.sun.xml.registry.ConnectionFactoryClass", "com.sun.xml.registry.uddi.ConnectionFactoryImpl"); Properties props = new Properties(); props.setProperty("javax.xml.registry.factoryClass", "com.sun.xml.registry.uddi.ConnectionFactoryImpl"); props.setProperty("javax.xml.registry.queryManagerURL", queryUrl); props.setProperty("com.sun.xml.registry.http.proxyHost", httpProxyHost); props.setProperty("com.sun.xml.registry.http.proxyPort", httpProxyPort); try { // Create the connection, passing it the // configuration properties ConnectionFactory factory = ConnectionFactory.newInstance(); factory.setProperties(props); connection = factory.createConnection(); System.out.println("Created connection to registry"); } catch (Exception e) { e.printStackTrace(); if (connection != null) { try { connection.close(); } catch (JAXRException je) {} } } return connection; } /** * Returns organizations containing a string. * * @param qString the string argument * @return a collection of organizations */ public Collection executeQuery(String qString) { RegistryService rs = null; BusinessQueryManager bqm = null; Collection orgs = null; try { // Get registry service and query manager rs = connection.getRegistryService(); bqm = rs.getBusinessQueryManager(); System.out.println("Got registry service and " + "query manager"); // Define find qualifiers and name patterns Collection findQualifiers = new ArrayList(); findQualifiers.add(FindQualifier.SORT_BY_NAME_DESC); Collection namePatterns = new ArrayList(); // % still doesn't work namePatterns.add(qString); //namePatterns.add("%" + qString + "%"); // Find using the name BulkResponse response = bqm.findOrganizations(findQualifiers, namePatterns, null, null, null, null); orgs = response.getCollection(); } catch (Exception e) { e.printStackTrace(); return null; } return orgs; } /** * Returns the name value for a registry object. * * @param ro a RegistryObject * @return the String value */ public String getName(RegistryObject ro) throws JAXRException { try { return ro.getName().getValue(); } catch (NullPointerException npe) { return "No Name"; } } /** * Returns the description value for a registry object. * * @param ro a RegistryObject * @return the String value */ public String getDescription(RegistryObject ro) throws JAXRException { try { return ro.getDescription().getValue(); } catch (NullPointerException npe) { return "No Description"; } } /** * Returns the key id value for a registry object. * * @param ro a RegistryObject * @return the String value */ public String getKey(RegistryObject ro) throws JAXRException { try { return ro.getKey().getId(); } catch (NullPointerException npe) { return "No Key"; } } }