Java/XML/XML Registry

Материал из Java эксперт
Версия от 18:01, 31 мая 2010; (обсуждение)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Create a concept and publishes it to a registry

 
/*
 * Copyright 2007 Sun Microsystems, Inc.
 * All rights reserved.  You may not modify, use,
 * reproduce, or distribute this software except in
 * compliance with  the terms of the License at:
 * http://developer.sun.ru/berkeley_license.html
 */
/*
Copyright 1994-2006 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:
 
* Redistribution 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 MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY 
DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING 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. 
*/

import javax.xml.registry.Connection;
import javax.xml.registry.ConnectionFactory;
import javax.xml.registry.RegistryService;
import javax.xml.registry.BusinessLifeCycleManager;
import javax.xml.registry.LifeCycleManager;
import javax.xml.registry.BusinessQueryManager;
import javax.xml.registry.BulkResponse;
import javax.xml.registry.JAXRException;
import javax.xml.registry.infomodel.InternationalString;
import javax.xml.registry.infomodel.Concept;
import javax.xml.registry.infomodel.ClassificationScheme;
import javax.xml.registry.infomodel.Classification;
import javax.xml.registry.infomodel.ExternalLink;
import javax.xml.registry.infomodel.Key;
import java.net.PasswordAuthentication;
import java.util.ResourceBundle;
import java.util.Properties;
import java.util.HashSet;
import java.util.Collection;
import java.util.ArrayList;

/**
 * The JAXRPublishConcept class consists of a main method, a
 * makeConnection method, and an executePublish method.
 * It creates a concept and publishes it to a registry.
 */
public class JAXRPublishConcept {
    Connection connection = null;
    public JAXRPublishConcept() {
    }
    public static void main(String[] args) {
        ResourceBundle bundle = ResourceBundle.getBundle("JAXRExamples");
        String queryURL = bundle.getString("query.url");
        String publishURL = bundle.getString("publish.url");
        String username = bundle.getString("registry.username");
        String password = bundle.getString("registry.password");
        JAXRPublishConcept jpc = new JAXRPublishConcept();
        jpc.makeConnection(queryURL, publishURL);
        jpc.executePublish(username, password);
    }
    /**
     * Establishes a connection to a registry.
     *
     * @param queryUrl        the URL of the query registry
     * @param publishUrl        the URL of the publish registry
     */
    public void makeConnection(
        String queryUrl,
        String publishUrl) {
        /*
         * Specify proxy information in case you
         *  are going beyond your firewall.
         */
        ResourceBundle bundle = ResourceBundle.getBundle("JAXRExamples");
        String httpProxyHost = bundle.getString("http.proxyHost");
        String httpProxyPort = bundle.getString("http.proxyPort");
        String httpsProxyHost = bundle.getString("https.proxyHost");
        String httpsProxyPort = bundle.getString("https.proxyPort");
        /*
         * Define connection configuration properties.
         * To publish, you need both the query URL and the
         * publish URL.
         */
        Properties props = new Properties();
        props.setProperty("javax.xml.registry.queryManagerURL", queryUrl);
        props.setProperty("javax.xml.registry.lifeCycleManagerURL", publishUrl);
        props.setProperty("com.sun.xml.registry.http.proxyHost", httpProxyHost);
        props.setProperty("com.sun.xml.registry.http.proxyPort", httpProxyPort);
        props.setProperty(
                "com.sun.xml.registry.https.proxyHost",
                httpsProxyHost);
        props.setProperty(
                "com.sun.xml.registry.https.proxyPort",
                httpsProxyPort);
        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) {
                }
            }
        }
    }
    /**
     * Creates a concept and saves it to the registry.
     *
     * @param username  the username for the registry
     * @param password  the password for the registry
     */
    public void executePublish(
        String username,
        String password) {
        RegistryService rs = null;
        BusinessLifeCycleManager blcm = null;
        BusinessQueryManager bqm = null;
        ResourceBundle bundle = ResourceBundle.getBundle("JAXRExamples");
        try {
            rs = connection.getRegistryService();
            blcm = rs.getBusinessLifeCycleManager();
            bqm = rs.getBusinessQueryManager();
            System.out.println(
                    "Got registry service, query "
                    + "manager, and life cycle manager");
            // Get authorization from the registry
            PasswordAuthentication passwdAuth = new PasswordAuthentication(
                        username,
                        password.toCharArray());
            HashSet<PasswordAuthentication> creds = new HashSet<PasswordAuthentication>();
            creds.add(passwdAuth);
            connection.setCredentials(creds);
            System.out.println("Established security credentials");
            InternationalString s = blcm.createInternationalString(
                        bundle.getString("concept.name"));
            Concept specConcept = blcm.createConcept(null, s, "");
            s = blcm.createInternationalString(
                        bundle.getString("concept.description"));
            specConcept.setDescription(s);
            s = blcm.createInternationalString(
                        bundle.getString("link.description"));
            ExternalLink wsdlLink = blcm.createExternalLink(
                        bundle.getString("link.uri"),
                        s);
            specConcept.addExternalLink(wsdlLink);
            /*
             * Find the uddi-org:types classification scheme defined
             * by the UDDI specification, using well-known key id.
             */
            String uuid_types = "uuid:C1ACF26D-9672-4404-9D70-39B756E62AB4";
            ClassificationScheme uddiOrgTypes = (ClassificationScheme) bqm
                .getRegistryObject(
                        uuid_types,
                        LifeCycleManager.CLASSIFICATION_SCHEME);
            /*
             * Create a classification, specifying the scheme
             *  and the taxonomy name and value defined for WSDL
             *  documents by the UDDI specification. Add to
             *  concept.
             */
            Classification wsdlSpecClassification = blcm.createClassification(
                        uddiOrgTypes,
                        blcm.createInternationalString("wsdlSpec"),
                        "wsdlSpec");
            specConcept.addClassification(wsdlSpecClassification);
            // Save the concept and retrieve the key.
            Collection<Concept> concepts = new ArrayList<Concept>();
            concepts.add(specConcept);
            BulkResponse response = blcm.saveConcepts(concepts);
            Collection exceptions = response.getExceptions();
            if (exceptions == null) {
                System.out.println("WSDL Specification Concept saved");
                Collection keys = response.getCollection();
                for (Object k : keys) {
                    Key concKey = (Key) k;
                    String id = concKey.getId();
                    System.out.println("Concept key is " + id);
                    System.out.println(
                            "Use this key as the argument "
                            + "to JAXRPublishHelloOrg");
                }
            } else {
                for (Object e : exceptions) {
                    Exception exception = (Exception) e;
                    System.err.println(
                            "Exception on save: " + exception.toString());
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // At end, close connection to registry
            if (connection != null) {
                try {
                    connection.close();
                } catch (JAXRException je) {
                }
            }
        }
    }
}

//////////////////////////////
//
//    File: JAXRExamples.properties
//
//////////////////////////////
## Registry Server:
query.url=http://localhost:8080/RegistryServer/
publish.url=http://localhost:8080/RegistryServer/
registry.username=testuser
registry.password=testuser
## HTTP and HTTPS proxy host and port
http.proxyHost=
http.proxyPort=8080
https.proxyHost=
https.proxyPort=8080
## Values used by publish examples
org.name=The Coffee Break
org.description=Purveyor of the finest coffees. Established 1950
person.name=Jane Doe
phone.number=(800) 555-1212
email.address=jane.doe@TheCoffeeBreak.ru
classification.scheme=ntis-gov:naics:1997
classification.name=All Other Specialty Food Stores
classification.value=445299
service.name=My Service Name
service.description=My Service Description
svcbinding.description=My Service Binding Description
svcbinding.accessURI=http://TheCoffeeBreak.ru:8080/sb/
## Values used by postal address examples
postal.taxonomy.filenames=postalconcepts.xml
postal.scheme.name=MyPostalAddressScheme
postal.scheme.description=A ClassificationScheme for My PostalAddressMappings
postal.classification.name=postalAddress
postal.classification.value=postalAddress
postal.scheme.link=http://unrealcompany.ru/PostalScheme.html
postal.scheme.linkdesc=My PostalAddress Scheme
postal.org.name=The Postal Coffee Break
postal.person.name=Jane Postal
postal.email.address=jane.postal@ThePostalCoffeeBreak.ru
postal.streetNumber=99
postal.street=Imaginary Ave. Suite 33
postal.city=Imaginary City
postal.state=NY
postal.country=USA
postal.postalCode=00000
postal.type=
# Values used by JAXRPublishConcept example
concept.name=HelloConcept
concept.description=Concept for Hello Service
link.uri=http://localhost:8080/hello-jaxws/hello?WSDL
link.description=Hello WSDL document
# Values used by JAXRPublishHelloOrg example
wsdlorg.name=Hello Organization
wsdlorg.description=Organization with a Hello Service
wsdlorg.person.name=Duke
wsdlorg.person.description=Owner of Hello Service
wsdlorg.phone=111-222-3333
wsdlorg.email.address=duke@hello.ru
wsdlorg.svc.name=JAX-RPC Hello Service
wsdlorg.svc.description=Says Hello
wsdlorg.svcbnd.description=Service binding for Hello Service
wsdlorg.svcbnd.uri=http://localhost:8080/hello-jaxws/hello





Create an organization and publishes it to a registry

 
/*
 * Copyright 2007 Sun Microsystems, Inc.
 * All rights reserved.  You may not modify, use,
 * reproduce, or distribute this software except in
 * compliance with  the terms of the License at:
 * http://developer.sun.ru/berkeley_license.html
 */
/*
Copyright 1994-2006 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:
 
* Redistribution 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 MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY 
DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING 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. 
*/

import javax.xml.registry.Connection;
import javax.xml.registry.ConnectionFactory;
import javax.xml.registry.RegistryService;
import javax.xml.registry.BusinessLifeCycleManager;
import javax.xml.registry.LifeCycleManager;
import javax.xml.registry.BusinessQueryManager;
import javax.xml.registry.BulkResponse;
import javax.xml.registry.JAXRException;
import javax.xml.registry.infomodel.Organization;
import javax.xml.registry.infomodel.InternationalString;
import javax.xml.registry.infomodel.PostalAddress;
import javax.xml.registry.infomodel.TelephoneNumber;
import javax.xml.registry.infomodel.User;
import javax.xml.registry.infomodel.PersonName;
import javax.xml.registry.infomodel.EmailAddress;
import javax.xml.registry.infomodel.ClassificationScheme;
import javax.xml.registry.infomodel.Classification;
import javax.xml.registry.infomodel.Service;
import javax.xml.registry.infomodel.ServiceBinding;
import javax.xml.registry.infomodel.Key;
import java.net.URL;
import java.net.PasswordAuthentication;
import java.util.ResourceBundle;
import java.util.Properties;
import java.util.HashSet;
import java.util.Collection;
import java.util.ArrayList;

/**
 * The JAXRPublish class consists of a main method, a
 * makeConnection method, and an executePublish method.
 * It creates an organization and publishes it to a registry.
 */
public class JAXRPublish {
    Connection connection = null;
    public JAXRPublish() {
    }
    public static void main(String[] args) {
        ResourceBundle bundle = ResourceBundle.getBundle("JAXRExamples");
        String queryURL = bundle.getString("query.url");
        String publishURL = bundle.getString("publish.url");
        String username = bundle.getString("registry.username");
        String password = bundle.getString("registry.password");
        JAXRPublish jp = new JAXRPublish();
        jp.makeConnection(queryURL, publishURL);
        jp.executePublish(username, password);
    }
    /**
     * Establishes a connection to a registry.
     *
     * @param queryUrl        the URL of the query registry
     * @param publishUrl        the URL of the publish registry
     */
    public void makeConnection(
        String queryUrl,
        String publishUrl) {
        /*
         * Specify proxy information in case you
         *  are going beyond your firewall.
         */
        ResourceBundle bundle = ResourceBundle.getBundle("JAXRExamples");
        String httpProxyHost = bundle.getString("http.proxyHost");
        String httpProxyPort = bundle.getString("http.proxyPort");
        String httpsProxyHost = bundle.getString("https.proxyHost");
        String httpsProxyPort = bundle.getString("https.proxyPort");
        /*
         * Define connection configuration properties.
         * To publish, you need both the query URL and the
         * publish URL.
         */
        Properties props = new Properties();
        props.setProperty("javax.xml.registry.queryManagerURL", queryUrl);
        props.setProperty("javax.xml.registry.lifeCycleManagerURL", publishUrl);
        props.setProperty("com.sun.xml.registry.http.proxyHost", httpProxyHost);
        props.setProperty("com.sun.xml.registry.http.proxyPort", httpProxyPort);
        props.setProperty(
                "com.sun.xml.registry.https.proxyHost",
                httpsProxyHost);
        props.setProperty(
                "com.sun.xml.registry.https.proxyPort",
                httpsProxyPort);
        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) {
                }
            }
        }
    }
    /**
     * Creates an organization, its classification, and its
     * services, and saves it to the registry.
     *
     * @param username  the username for the registry
     * @param password  the password for the registry
     */
    public void executePublish(
        String username,
        String password) {
        RegistryService rs = null;
        BusinessLifeCycleManager blcm = null;
        BusinessQueryManager bqm = null;
        try {
            rs = connection.getRegistryService();
            blcm = rs.getBusinessLifeCycleManager();
            bqm = rs.getBusinessQueryManager();
            System.out.println(
                    "Got registry service, query "
                    + "manager, and life cycle manager");
            // Get authorization from the registry
            PasswordAuthentication passwdAuth = new PasswordAuthentication(
                        username,
                        password.toCharArray());
            HashSet<PasswordAuthentication> creds = new HashSet<PasswordAuthentication>();
            creds.add(passwdAuth);
            connection.setCredentials(creds);
            System.out.println("Established security credentials");
            ResourceBundle bundle = ResourceBundle.getBundle("JAXRExamples");
            // Create organization name and description
            InternationalString s = blcm.createInternationalString(
                        bundle.getString("org.name"));
            Organization org = blcm.createOrganization(s);
            s = blcm.createInternationalString(
                        bundle.getString("org.description"));
            org.setDescription(s);
            // Create primary contact, set name
            User primaryContact = blcm.createUser();
            PersonName pName = blcm.createPersonName(
                        bundle.getString("person.name"));
            primaryContact.setPersonName(pName);
            // Set primary contact phone number
            TelephoneNumber tNum = blcm.createTelephoneNumber();
            tNum.setNumber(bundle.getString("phone.number"));
            Collection<TelephoneNumber> phoneNums = new ArrayList<TelephoneNumber>();
            phoneNums.add(tNum);
            primaryContact.setTelephoneNumbers(phoneNums);
            // Set primary contact email address
            EmailAddress emailAddress = blcm.createEmailAddress(
                        bundle.getString("email.address"));
            Collection<EmailAddress> emailAddresses = new ArrayList<EmailAddress>();
            emailAddresses.add(emailAddress);
            primaryContact.setEmailAddresses(emailAddresses);
            // Set primary contact for organization
            org.setPrimaryContact(primaryContact);
            // Set classification scheme to NAICS, using
            // well-known UUID of ntis-gov:naics:1997
            String uuid_naics = "uuid:C0B9FE13-179F-413D-8A5B-5004DB8E5BB2";
            ClassificationScheme cScheme = (ClassificationScheme) bqm
                .getRegistryObject(
                        uuid_naics,
                        LifeCycleManager.CLASSIFICATION_SCHEME);
            if (cScheme != null) {
                // Create and add classification
                InternationalString sn = blcm.createInternationalString(
                            bundle.getString("classification.name"));
                Classification classification = blcm.createClassification(
                            cScheme,
                            sn,
                            bundle.getString("classification.value"));
                Collection<Classification> classifications = new ArrayList<Classification>();
                classifications.add(classification);
                org.addClassifications(classifications);
            } else {
                System.out.println(
                        "Classification scheme not found, "
                        + "not classifying organization");
            }
            // Create services and service
            Collection<Service> services = new ArrayList<Service>();
            s = blcm.createInternationalString(
                        bundle.getString("service.name"));
            Service service = blcm.createService(s);
            s = blcm.createInternationalString(
                        bundle.getString("service.description"));
            service.setDescription(s);
            // Create service bindings
            Collection<ServiceBinding> serviceBindings = new ArrayList<ServiceBinding>();
            ServiceBinding binding = blcm.createServiceBinding();
            s = blcm.createInternationalString(
                        bundle.getString("svcbinding.description"));
            binding.setDescription(s);
            // Allow us to publish a fictitious URI without an error
            binding.setValidateURI(false);
            binding.setAccessURI(bundle.getString("svcbinding.accessURI"));
            serviceBindings.add(binding);
            // Add service bindings to service
            service.addServiceBindings(serviceBindings);
            // Add service to services, then add services to organization
            services.add(service);
            org.addServices(services);
            // Add organization and submit to registry
            // Retrieve key if successful
            Collection<Organization> orgs = new ArrayList<Organization>();
            orgs.add(org);
            BulkResponse response = blcm.saveOrganizations(orgs);
            Collection exceptions = response.getExceptions();
            if (exceptions == null) {
                System.out.println("Organization saved");
                Collection keys = response.getCollection();
                for (Object k : keys) {
                    Key orgKey = (Key) k;
                    String id = orgKey.getId();
                    System.out.println("Organization key is " + id);
                }
            } else {
                for (Object e : exceptions) {
                    Exception exception = (Exception) e;
                    System.err.println(
                            "Exception on save: " + exception.toString());
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // At end, close connection to registry
            if (connection != null) {
                try {
                    connection.close();
                } catch (JAXRException je) {
                }
            }
        }
    }
}

//////////////////////////////
//
//    File: JAXRExamples.properties
//
//////////////////////////////
## Registry Server:
query.url=http://localhost:8080/RegistryServer/
publish.url=http://localhost:8080/RegistryServer/
registry.username=testuser
registry.password=testuser
## HTTP and HTTPS proxy host and port
http.proxyHost=
http.proxyPort=8080
https.proxyHost=
https.proxyPort=8080
## Values used by publish examples
org.name=The Coffee Break
org.description=Purveyor of the finest coffees. Established 1950
person.name=Jane Doe
phone.number=(800) 555-1212
email.address=jane.doe@TheCoffeeBreak.ru
classification.scheme=ntis-gov:naics:1997
classification.name=All Other Specialty Food Stores
classification.value=445299
service.name=My Service Name
service.description=My Service Description
svcbinding.description=My Service Binding Description
svcbinding.accessURI=http://TheCoffeeBreak.ru:8080/sb/
## Values used by postal address examples
postal.taxonomy.filenames=postalconcepts.xml
postal.scheme.name=MyPostalAddressScheme
postal.scheme.description=A ClassificationScheme for My PostalAddressMappings
postal.classification.name=postalAddress
postal.classification.value=postalAddress
postal.scheme.link=http://unrealcompany.ru/PostalScheme.html
postal.scheme.linkdesc=My PostalAddress Scheme
postal.org.name=The Postal Coffee Break
postal.person.name=Jane Postal
postal.email.address=jane.postal@ThePostalCoffeeBreak.ru
postal.streetNumber=99
postal.street=Imaginary Ave. Suite 33
postal.city=Imaginary City
postal.state=NY
postal.country=USA
postal.postalCode=00000
postal.type=
# Values used by JAXRPublishConcept example
concept.name=HelloConcept
concept.description=Concept for Hello Service
link.uri=http://localhost:8080/hello-jaxws/hello?WSDL
link.description=Hello WSDL document
# Values used by JAXRPublishHelloOrg example
wsdlorg.name=Hello Organization
wsdlorg.description=Organization with a Hello Service
wsdlorg.person.name=Duke
wsdlorg.person.description=Owner of Hello Service
wsdlorg.phone=111-222-3333
wsdlorg.email.address=duke@hello.ru
wsdlorg.svc.name=JAX-RPC Hello Service
wsdlorg.svc.description=Says Hello
wsdlorg.svcbnd.description=Service binding for Hello Service
wsdlorg.svcbnd.uri=http://localhost:8080/hello-jaxws/hello





Create an organization and publishes it to a registry.( The organization has a service binding that includes a WSDL file.)

 
 
/*
 * Copyright 2007 Sun Microsystems, Inc.
 * All rights reserved.  You may not modify, use,
 * reproduce, or distribute this software except in
 * compliance with  the terms of the License at:
 * http://developer.sun.ru/berkeley_license.html
 */
/*
Copyright 1994-2006 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:
 
* Redistribution 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 MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY 
DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING 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. 
*/

import javax.xml.registry.Connection;
import javax.xml.registry.ConnectionFactory;
import javax.xml.registry.RegistryService;
import javax.xml.registry.BusinessLifeCycleManager;
import javax.xml.registry.LifeCycleManager;
import javax.xml.registry.BusinessQueryManager;
import javax.xml.registry.BulkResponse;
import javax.xml.registry.JAXRException;
import javax.xml.registry.infomodel.RegistryObject;
import javax.xml.registry.infomodel.Organization;
import javax.xml.registry.infomodel.InternationalString;
import javax.xml.registry.infomodel.TelephoneNumber;
import javax.xml.registry.infomodel.User;
import javax.xml.registry.infomodel.PersonName;
import javax.xml.registry.infomodel.EmailAddress;
import javax.xml.registry.infomodel.ClassificationScheme;
import javax.xml.registry.infomodel.Classification;
import javax.xml.registry.infomodel.Concept;
import javax.xml.registry.infomodel.Service;
import javax.xml.registry.infomodel.ServiceBinding;
import javax.xml.registry.infomodel.ExternalLink;
import javax.xml.registry.infomodel.SpecificationLink;
import javax.xml.registry.infomodel.Key;
import java.net.PasswordAuthentication;
import java.util.ResourceBundle;
import java.util.Properties;
import java.util.HashSet;
import java.util.Collection;
import java.util.ArrayList;

/**
 * The JAXRPublishHelloOrg class consists of a main method, a
 * makeConnection method, and an executePublish method.
 * It creates an organization and publishes it to a registry.
 * The organization has a service binding that includes a WSDL file.
 */
public class JAXRPublishHelloOrg {
    Connection connection = null;
    public JAXRPublishHelloOrg() {
    }
    public static void main(String[] args) {
        ResourceBundle bundle = ResourceBundle.getBundle("JAXRExamples");
        String queryURL = bundle.getString("query.url");
        String publishURL = bundle.getString("publish.url");
        String username = bundle.getString("registry.username");
        String password = bundle.getString("registry.password");
        if (args.length < 1) {
            System.out.println("Argument required: " + "-Duuid-string=<value>");
            System.exit(1);
        }
        String uuidString = args[0];
        System.out.println("UUID string is " + uuidString);
        JAXRPublishHelloOrg jpws = new JAXRPublishHelloOrg();
        jpws.makeConnection(queryURL, publishURL);
        jpws.executePublish(uuidString, username, password);
    }
    /**
     * Establishes a connection to a registry.
     *
     * @param queryUrl        the URL of the query registry
     * @param publishUrl        the URL of the publish registry
     */
    public void makeConnection(
        String queryUrl,
        String publishUrl) {
        /*
         * Specify proxy information in case you
         *  are going beyond your firewall.
         */
        ResourceBundle bundle = ResourceBundle.getBundle("JAXRExamples");
        String httpProxyHost = bundle.getString("http.proxyHost");
        String httpProxyPort = bundle.getString("http.proxyPort");
        String httpsProxyHost = bundle.getString("https.proxyHost");
        String httpsProxyPort = bundle.getString("https.proxyPort");
        /*
         * Define connection configuration properties.
         * To publish, you need both the query URL and the
         * publish URL.
         */
        Properties props = new Properties();
        props.setProperty("javax.xml.registry.queryManagerURL", queryUrl);
        props.setProperty("javax.xml.registry.lifeCycleManagerURL", publishUrl);
        props.setProperty("com.sun.xml.registry.http.proxyHost", httpProxyHost);
        props.setProperty("com.sun.xml.registry.http.proxyPort", httpProxyPort);
        props.setProperty(
                "com.sun.xml.registry.https.proxyHost",
                httpsProxyHost);
        props.setProperty(
                "com.sun.xml.registry.https.proxyPort",
                httpsProxyPort);
        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) {
                }
            }
        }
    }
    /**
     * Creates an organization, its classification, and its
     * services, and saves it to the registry.
     *
     * @param username  the username for the registry
     * @param password  the password for the registry
     */
    public void executePublish(
        String uuidString,
        String username,
        String password) {
        RegistryService rs = null;
        BusinessLifeCycleManager blcm = null;
        BusinessQueryManager bqm = null;
        try {
            // Get registry service and managers
            rs = connection.getRegistryService();
            bqm = rs.getBusinessQueryManager();
            blcm = rs.getBusinessLifeCycleManager();
            System.out.println(
                    "Got registry service, query "
                    + "manager, and life cycle manager");
            // Get authorization from the registry
            PasswordAuthentication passwdAuth = new PasswordAuthentication(
                        username,
                        password.toCharArray());
            HashSet<PasswordAuthentication> creds = new HashSet<PasswordAuthentication>();
            creds.add(passwdAuth);
            connection.setCredentials(creds);
            System.out.println("Established security credentials");
            ResourceBundle bundle = ResourceBundle.getBundle("JAXRExamples");
            // Create organization name and description
            InternationalString s = blcm.createInternationalString(
                        bundle.getString("wsdlorg.name"));
            Organization org = blcm.createOrganization(s);
            s = blcm.createInternationalString(
                        bundle.getString("wsdlorg.description"));
            org.setDescription(s);
            // Create primary contact, set name
            User primaryContact = blcm.createUser();
            PersonName pName = blcm.createPersonName(
                        bundle.getString("wsdlorg.person.name"));
            primaryContact.setPersonName(pName);
            s = blcm.createInternationalString(
                        bundle.getString("wsdlorg.person.description"));
            primaryContact.setDescription(s);
            // Set primary contact phone number
            TelephoneNumber tNum = blcm.createTelephoneNumber();
            tNum.setNumber(bundle.getString("wsdlorg.phone"));
            Collection<TelephoneNumber> phoneNums = new ArrayList<TelephoneNumber>();
            phoneNums.add(tNum);
            primaryContact.setTelephoneNumbers(phoneNums);
            // Set primary contact email address
            EmailAddress emailAddress = blcm.createEmailAddress(
                        bundle.getString("wsdlorg.email.address"));
            Collection<EmailAddress> emailAddresses = new ArrayList<EmailAddress>();
            emailAddresses.add(emailAddress);
            primaryContact.setEmailAddresses(emailAddresses);
            // Set primary contact for organization
            org.setPrimaryContact(primaryContact);
            // Create services and service
            Collection<Service> services = new ArrayList<Service>();
            s = blcm.createInternationalString(
                        bundle.getString("wsdlorg.svc.name"));
            Service service = blcm.createService(s);
            s = blcm.createInternationalString(
                        bundle.getString("wsdlorg.svc.description"));
            service.setDescription(s);
            // Create service bindings
            Collection<ServiceBinding> serviceBindings = new ArrayList<ServiceBinding>();
            ServiceBinding binding = blcm.createServiceBinding();
            s = blcm.createInternationalString(
                        bundle.getString("wsdlorg.svcbnd.description"));
            binding.setDescription(s);
            binding.setAccessURI(bundle.getString("wsdlorg.svcbnd.uri"));
            /*
             * Find the uddi-org:types classification scheme defined
             * by the UDDI specification, using well-known key id.
             */
            String uuid_types = "uuid:C1ACF26D-9672-4404-9D70-39B756E62AB4";
            ClassificationScheme uddiOrgTypes = (ClassificationScheme) bqm
                .getRegistryObject(
                        uuid_types,
                        LifeCycleManager.CLASSIFICATION_SCHEME);
            /*
             * Create a classification, specifying the scheme
             *  and the taxonomy name and value defined for WSDL
             *  documents by the UDDI specification.
             */
            Classification wsdlSpecClassification = blcm.createClassification(
                        uddiOrgTypes,
                        blcm.createInternationalString("wsdlSpec"),
                        "wsdlSpec");
            // Define classifications
            Collection<Classification> classifications = new ArrayList<Classification>();
            classifications.add(wsdlSpecClassification);
            // Find the concept by its UUID
            Concept specConcept = (Concept) bqm.getRegistryObject(
                        uuidString,
                        LifeCycleManager.CONCEPT);
            // If we found the concept, we can save the organization
            if (specConcept != null) {
                String name = getName(specConcept);
                Collection links = specConcept.getExternalLinks();
                System.out.println(
                        "\nSpecification Concept:\n\tName: " + name
                        + "\n\tKey: " + getKey(specConcept));
                if (links.size() > 0) {
                    ExternalLink link = (ExternalLink) links.iterator()
                                                            .next();
                    System.out.println(
                            "\tURL of WSDL document: "" + link.getExternalURI()
                            + """);
                }
                // Now set the specification link for the service binding
                SpecificationLink specLink = blcm.createSpecificationLink();
                specLink.setSpecificationObject(specConcept);
                binding.addSpecificationLink(specLink);
                serviceBindings.add(binding);
                // Add service bindings to service
                service.addServiceBindings(serviceBindings);
                // Add service to services, then add services to organization
                services.add(service);
                org.addServices(services);
                // Add organization and submit to registry
                // Retrieve key if successful
                Collection<Organization> orgs = new ArrayList<Organization>();
                orgs.add(org);
                BulkResponse response = blcm.saveOrganizations(orgs);
                Collection exceptions = response.getExceptions();
                if (exceptions == null) {
                    System.out.println("Organization saved");
                    Collection keys = response.getCollection();
                    for (Object k : keys) {
                        Key orgKey = (Key) k;
                        String id = orgKey.getId();
                        System.out.println("Organization key is " + id);
                    }
                } else {
                    for (Object e : exceptions) {
                        Exception exception = (Exception) e;
                        System.err.println(
                                "Exception on save: " + exception.toString());
                    }
                }
            } else {
                System.out.println(
                        "Specified concept not found, "
                        + "organization not saved");
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // At end, close connection to registry
            if (connection != null) {
                try {
                    connection.close();
                } catch (JAXRException je) {
                }
            }
        }
    }
    /**
     * Returns the name value for a registry object.
     *
     * @param ro        a RegistryObject
     * @return                the String value
     */
    private 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
     */
    private 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
     */
    private String getKey(RegistryObject ro) throws JAXRException {
        try {
            return ro.getKey()
                     .getId();
        } catch (NullPointerException npe) {
            return "No Key";
        }
    }
}

//////////////////////////////
//
//    File: JAXRExamples.properties
//
//////////////////////////////
## Registry Server:
query.url=http://localhost:8080/RegistryServer/
publish.url=http://localhost:8080/RegistryServer/
registry.username=testuser
registry.password=testuser
## HTTP and HTTPS proxy host and port
http.proxyHost=
http.proxyPort=8080
https.proxyHost=
https.proxyPort=8080
## Values used by publish examples
org.name=The Coffee Break
org.description=Purveyor of the finest coffees. Established 1950
person.name=Jane Doe
phone.number=(800) 555-1212
email.address=jane.doe@TheCoffeeBreak.ru
classification.scheme=ntis-gov:naics:1997
classification.name=All Other Specialty Food Stores
classification.value=445299
service.name=My Service Name
service.description=My Service Description
svcbinding.description=My Service Binding Description
svcbinding.accessURI=http://TheCoffeeBreak.ru:8080/sb/
## Values used by postal address examples
postal.taxonomy.filenames=postalconcepts.xml
postal.scheme.name=MyPostalAddressScheme
postal.scheme.description=A ClassificationScheme for My PostalAddressMappings
postal.classification.name=postalAddress
postal.classification.value=postalAddress
postal.scheme.link=http://unrealcompany.ru/PostalScheme.html
postal.scheme.linkdesc=My PostalAddress Scheme
postal.org.name=The Postal Coffee Break
postal.person.name=Jane Postal
postal.email.address=jane.postal@ThePostalCoffeeBreak.ru
postal.streetNumber=99
postal.street=Imaginary Ave. Suite 33
postal.city=Imaginary City
postal.state=NY
postal.country=USA
postal.postalCode=00000
postal.type=
# Values used by JAXRPublishConcept example
concept.name=HelloConcept
concept.description=Concept for Hello Service
link.uri=http://localhost:8080/hello-jaxws/hello?WSDL
link.description=Hello WSDL document
# Values used by JAXRPublishHelloOrg example
wsdlorg.name=Hello Organization
wsdlorg.description=Organization with a Hello Service
wsdlorg.person.name=Duke
wsdlorg.person.description=Owner of Hello Service
wsdlorg.phone=111-222-3333
wsdlorg.email.address=duke@hello.ru
wsdlorg.svc.name=JAX-RPC Hello Service
wsdlorg.svc.description=Says Hello
wsdlorg.svcbnd.description=Service binding for Hello Service
wsdlorg.svcbnd.uri=http://localhost:8080/hello-jaxws/hello





Creates a classification scheme and publishes it to a registry

 
/*
 * Copyright 2007 Sun Microsystems, Inc.
 * All rights reserved.  You may not modify, use,
 * reproduce, or distribute this software except in
 * compliance with  the terms of the License at:
 * http://developer.sun.ru/berkeley_license.html
 */
/*
Copyright 1994-2006 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:
 
* Redistribution 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 MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY 
DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING 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. 
*/

import javax.xml.registry.Connection;
import javax.xml.registry.ConnectionFactory;
import javax.xml.registry.RegistryService;
import javax.xml.registry.BusinessQueryManager;
import javax.xml.registry.BusinessLifeCycleManager;
import javax.xml.registry.LifeCycleManager;
import javax.xml.registry.JAXRException;
import javax.xml.registry.BulkResponse;
import javax.xml.registry.JAXRResponse;
import javax.xml.registry.infomodel.InternationalString;
import javax.xml.registry.infomodel.Concept;
import javax.xml.registry.infomodel.ClassificationScheme;
import javax.xml.registry.infomodel.Classification;
import javax.xml.registry.infomodel.ExternalLink;
import javax.xml.registry.infomodel.Key;
import java.net.PasswordAuthentication;
import java.util.ResourceBundle;
import java.util.Properties;
import java.util.Collection;
import java.util.ArrayList;
import java.util.HashSet;

/**
 * The JAXRSaveClassificationScheme class consists of a main method, a
 * makeConnection method, and an executePublish method.
 * It creates a classification scheme and publishes it to a registry.
 */
public class JAXRSaveClassificationScheme {
    Connection connection = null;
    public JAXRSaveClassificationScheme() {
    }
    public static void main(String[] args) {
        ResourceBundle bundle = ResourceBundle.getBundle("JAXRExamples");
        String queryURL = bundle.getString("query.url");
        String publishURL = bundle.getString("publish.url");
        // Edit to provide your own username and password
        // Defaults for Registry Server are testuser/testuser
        String username = bundle.getString("registry.username");
        String password = bundle.getString("registry.password");
        JAXRSaveClassificationScheme jscs = new JAXRSaveClassificationScheme();
        jscs.makeConnection(queryURL, publishURL);
        jscs.executePublish(username, password);
    }
    /**
     * Establishes a connection to a registry.
     *
     * @param queryUrl        the URL of the query registry
     * @param publishUrl        the URL of the publish registry
     */
    public void makeConnection(
        String queryUrl,
        String publishUrl) {
        /*
         * Specify proxy information in case you
         *  are going beyond your firewall.
         */
        ResourceBundle bundle = ResourceBundle.getBundle("JAXRExamples");
        String httpProxyHost = bundle.getString("http.proxyHost");
        String httpProxyPort = bundle.getString("http.proxyPort");
        String httpsProxyHost = bundle.getString("https.proxyHost");
        String httpsProxyPort = bundle.getString("https.proxyPort");
        /*
         * Define connection configuration properties.
         * To delete, you need both the query URL and the
         * publish URL.
         */
        Properties props = new Properties();
        props.setProperty("javax.xml.registry.queryManagerURL", queryUrl);
        props.setProperty("javax.xml.registry.lifeCycleManagerURL", publishUrl);
        props.setProperty("com.sun.xml.registry.http.proxyHost", httpProxyHost);
        props.setProperty("com.sun.xml.registry.http.proxyPort", httpProxyPort);
        props.setProperty(
                "com.sun.xml.registry.https.proxyHost",
                httpsProxyHost);
        props.setProperty(
                "com.sun.xml.registry.https.proxyPort",
                httpsProxyPort);
        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) {
                }
            }
        }
    }
    /**
     * Creates a classification scheme and saves it to the
     * registry.
     *
     * @param username  the username for the registry
     * @param password  the password for the registry
     */
    public void executePublish(
        String username,
        String password) {
        RegistryService rs = null;
        BusinessLifeCycleManager blcm = null;
        BusinessQueryManager bqm = null;
        try {
            rs = connection.getRegistryService();
            blcm = rs.getBusinessLifeCycleManager();
            bqm = rs.getBusinessQueryManager();
            System.out.println(
                    "Got registry service, query "
                    + "manager, and life cycle manager");
            // Get authorization from the registry
            PasswordAuthentication passwdAuth = new PasswordAuthentication(
                        username,
                        password.toCharArray());
            HashSet<PasswordAuthentication> creds = new HashSet<PasswordAuthentication>();
            creds.add(passwdAuth);
            connection.setCredentials(creds);
            System.out.println("Established security credentials");
            ResourceBundle bundle = ResourceBundle.getBundle("JAXRExamples");
            // Create classification scheme
            InternationalString sn = blcm.createInternationalString(
                        bundle.getString("postal.scheme.name"));
            InternationalString sd = blcm.createInternationalString(
                        bundle.getString("postal.scheme.description"));
            ClassificationScheme postalScheme = blcm.createClassificationScheme(
                        sn,
                        sd);
            /*
             * Find the uddi-org:types classification scheme defined
             * by the UDDI specification, using well-known key id.
             */
            String uuid_types = "uuid:C1ACF26D-9672-4404-9D70-39B756E62AB4";
            ClassificationScheme uddiOrgTypes = (ClassificationScheme) bqm
                .getRegistryObject(
                        uuid_types,
                        LifeCycleManager.CLASSIFICATION_SCHEME);
            if (uddiOrgTypes != null) {
                InternationalString cn = blcm.createInternationalString(
                            bundle.getString("postal.classification.name"));
                Classification classification = blcm.createClassification(
                            uddiOrgTypes,
                            cn,
                            bundle.getString("postal.classification.value"));
                postalScheme.addClassification(classification);
                /*
                 * Set link to location of postal scheme (fictitious)
                 * so others can look it up. If the URI were valid, we
                 * could use the createExternalLink method.
                 */
                ExternalLink externalLink = (ExternalLink) blcm.createObject(
                            LifeCycleManager.EXTERNAL_LINK);
                externalLink.setValidateURI(false);
                externalLink.setExternalURI(
                        bundle.getString("postal.scheme.link"));
                InternationalString is = blcm.createInternationalString(
                            bundle.getString("postal.scheme.linkdesc"));
                externalLink.setDescription(is);
                postalScheme.addExternalLink(externalLink);
                // Add scheme and save it to registry
                // Retrieve key if successful
                Collection<ClassificationScheme> schemes = new ArrayList<ClassificationScheme>();
                schemes.add(postalScheme);
                BulkResponse br = blcm.saveClassificationSchemes(schemes);
                if (br.getStatus() == JAXRResponse.STATUS_SUCCESS) {
                    System.out.println(
                            "Saved PostalAddress " + "ClassificationScheme");
                    Collection schemeKeys = br.getCollection();
                    for (Object k : schemeKeys) {
                        Key key = (Key) k;
                        System.out.println(
                                "The postalScheme key is " + key.getId());
                        System.out.println(
                                "Use this key as the scheme uuid "
                                + "in the postalconcepts.xml file\n  and as the "
                                + "argument to JAXRPublishPostal and "
                                + "JAXRQueryPostal");
                    }
                } else {
                    Collection exceptions = br.getExceptions();
                    for (Object e : exceptions) {
                        Exception exception = (Exception) e;
                        System.err.println(
                                "Exception on save: " + exception.toString());
                    }
                }
            } else {
                System.out.println(
                        "uddi-org:types not found. Unable to "
                        + "save PostalAddress scheme.");
            }
        } catch (JAXRException jaxe) {
            jaxe.printStackTrace();
        } finally {
            // At end, close connection to registry
            if (connection != null) {
                try {
                    connection.close();
                } catch (JAXRException je) {
                }
            }
        }
    }
}

//////////////////////////////
//
//    File: JAXRExamples.properties
//
//////////////////////////////
## Registry Server:
query.url=http://localhost:8080/RegistryServer/
publish.url=http://localhost:8080/RegistryServer/
registry.username=testuser
registry.password=testuser
## HTTP and HTTPS proxy host and port
http.proxyHost=
http.proxyPort=8080
https.proxyHost=
https.proxyPort=8080
## Values used by publish examples
org.name=The Coffee Break
org.description=Purveyor of the finest coffees. Established 1950
person.name=Jane Doe
phone.number=(800) 555-1212
email.address=jane.doe@TheCoffeeBreak.ru
classification.scheme=ntis-gov:naics:1997
classification.name=All Other Specialty Food Stores
classification.value=445299
service.name=My Service Name
service.description=My Service Description
svcbinding.description=My Service Binding Description
svcbinding.accessURI=http://TheCoffeeBreak.ru:8080/sb/
## Values used by postal address examples
postal.taxonomy.filenames=postalconcepts.xml
postal.scheme.name=MyPostalAddressScheme
postal.scheme.description=A ClassificationScheme for My PostalAddressMappings
postal.classification.name=postalAddress
postal.classification.value=postalAddress
postal.scheme.link=http://unrealcompany.ru/PostalScheme.html
postal.scheme.linkdesc=My PostalAddress Scheme
postal.org.name=The Postal Coffee Break
postal.person.name=Jane Postal
postal.email.address=jane.postal@ThePostalCoffeeBreak.ru
postal.streetNumber=99
postal.street=Imaginary Ave. Suite 33
postal.city=Imaginary City
postal.state=NY
postal.country=USA
postal.postalCode=00000
postal.type=
# Values used by JAXRPublishConcept example
concept.name=HelloConcept
concept.description=Concept for Hello Service
link.uri=http://localhost:8080/hello-jaxws/hello?WSDL
link.description=Hello WSDL document
# Values used by JAXRPublishHelloOrg example
wsdlorg.name=Hello Organization
wsdlorg.description=Organization with a Hello Service
wsdlorg.person.name=Duke
wsdlorg.person.description=Owner of Hello Service
wsdlorg.phone=111-222-3333
wsdlorg.email.address=duke@hello.ru
wsdlorg.svc.name=JAX-RPC Hello Service
wsdlorg.svc.description=Says Hello
wsdlorg.svcbnd.description=Service binding for Hello Service
wsdlorg.svcbnd.uri=http://localhost:8080/hello-jaxws/hello





Display the postal addresses for the contacts of the organizations using the user-supplied postal address classification scheme UUID

 
/*
 * Copyright 2007 Sun Microsystems, Inc.
 * All rights reserved.  You may not modify, use,
 * reproduce, or distribute this software except in
 * compliance with  the terms of the License at:
 * http://developer.sun.ru/berkeley_license.html
 */
/*
Copyright 1994-2006 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:
 
* Redistribution 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 MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY 
DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING 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. 
*/

import javax.xml.registry.Connection;
import javax.xml.registry.ConnectionFactory;
import javax.xml.registry.BusinessQueryManager;
import javax.xml.registry.FindQualifier;
import javax.xml.registry.BulkResponse;
import javax.xml.registry.JAXRException;
import javax.xml.registry.RegistryService;
import static javax.xml.registry.FindQualifier.SORT_BY_NAME_DESC;
import javax.xml.registry.infomodel.RegistryObject;
import javax.xml.registry.infomodel.Organization;
import javax.xml.registry.infomodel.TelephoneNumber;
import javax.xml.registry.infomodel.PostalAddress;
import javax.xml.registry.infomodel.User;
import javax.xml.registry.infomodel.PersonName;
import javax.xml.registry.infomodel.EmailAddress;
import javax.xml.registry.infomodel.Service;
import javax.xml.registry.infomodel.ServiceBinding;
import javax.xml.registry.infomodel.Slot;
import java.util.ResourceBundle;
import java.util.Properties;
import java.util.Collection;
import java.util.ArrayList;

/**
 * The JAXRQueryPostal class consists of a main method, a
 * makeConnection method, an executeQuery method, and some
 * private helper methods. It searches a registry for
 * information about organizations whose names contain a
 * user-supplied string.  It displays the postal addresses for
 * the contacts of the organizations using the user-supplied
 * postal address classification scheme UUID.
 */
public class JAXRQueryPostal {
    Connection connection = null;
    public JAXRQueryPostal() {
    }
    public static void main(String[] args) {
        ResourceBundle bundle = ResourceBundle.getBundle("JAXRExamples");
        String queryURL = bundle.getString("query.url");
        String publishURL = bundle.getString("publish.url");
        if (args.length < 2) {
            System.out.println(
                    "Arguments required: "
                    + "-Dquery-string=<value> -Duuid-string=<value>");
            System.exit(1);
        }
        String queryString = args[0];
        System.out.println("Query string is " + queryString);
        String uuidString = args[1];
        System.out.println("UUID string is " + uuidString);
        JAXRQueryPostal jq = new JAXRQueryPostal();
        jq.makeConnection(queryURL, publishURL, uuidString);
        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
     * @param uuidString        the UUID string of the postal address scheme
     */
    public void makeConnection(
        String queryUrl,
        String publishUrl,
        String uuidString) {
        /*
         * Specify proxy information in case you
         *  are going beyond your firewall.
         */
        ResourceBundle bundle = ResourceBundle.getBundle("JAXRExamples");
        String httpProxyHost = bundle.getString("http.proxyHost");
        String httpProxyPort = bundle.getString("http.proxyPort");
        String userTaxonomyFilenames = bundle.getString(
                    "postal.taxonomy.filenames");
        /*
         * Define connection configuration properties.
         * For simple queries, you need the query URL.
         */
        Properties props = new Properties();
        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);
        // Define the taxonomy XML file (postalconcepts.xml)
        props.setProperty(
                "com.sun.xml.registry.userTaxonomyFilenames",
                userTaxonomyFilenames);
        // Set properties for postal address mapping: postal address
        //  classification scheme and mapping to JAXR scheme
        props.setProperty("javax.xml.registry.postalAddressScheme", uuidString);
        props.setProperty(
                "javax.xml.registry.semanticEquivalences",
                "urn:uuid:PostalAddressAttributes/StreetNumber," + "urn:"
                + uuidString + "/MyStreetNumber|"
                + "urn:uuid:PostalAddressAttributes/Street," + "urn:"
                + uuidString + "/MyStreet|"
                + "urn:uuid:PostalAddressAttributes/City," + "urn:"
                + uuidString + "/MyCity|"
                + "urn:uuid:PostalAddressAttributes/State," + "urn:"
                + uuidString + "/MyState|"
                + "urn:uuid:PostalAddressAttributes/PostalCode," + "urn:"
                + uuidString + "/MyPostalCode|"
                + "urn:uuid:PostalAddressAttributes/Country," + "urn:"
                + uuidString + "/MyCountry");
        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) {
                }
            }
        }
    }
    /**
     * Searches for organizations containing a string and
     * displays data about them, including the postal address in
     * either the JAXR PostalAddress format or the Slot format.
     *
     * @param qString        the string argument
     */
    public void executeQuery(String qString) {
        RegistryService rs = null;
        BusinessQueryManager bqm = 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<String> findQualifiers = new ArrayList<String>();
            findQualifiers.add(SORT_BY_NAME_DESC);
            Collection<String> namePatterns = new ArrayList<String>();
            namePatterns.add("%" + qString + "%");
            // Find using the name
            BulkResponse response = bqm.findOrganizations(
                        findQualifiers,
                        namePatterns,
                        null,
                        null,
                        null,
                        null);
            Collection orgs = response.getCollection();
            // Display information about the organizations found
            for (Object o : orgs) {
                Organization org = (Organization) o;
                System.out.println("Org name: " + getName(org));
                System.out.println("Org description: " + getDescription(org));
                System.out.println("Org key id: " + getKey(org));
                // Display primary contact information
                User pc = org.getPrimaryContact();
                if (pc != null) {
                    PersonName pcName = pc.getPersonName();
                    System.out.println(
                            " Contact name: " + pcName.getFullName());
                    Collection phNums = pc.getTelephoneNumbers(null);
                    for (Object n : phNums) {
                        TelephoneNumber num = (TelephoneNumber) n;
                        System.out.println(
                                "  Phone number: " + num.getNumber());
                    }
                    Collection eAddrs = pc.getEmailAddresses();
                    for (Object a : eAddrs) {
                        EmailAddress eAd = (EmailAddress) a;
                        System.out.println(
                                "  Email Address: " + eAd.getAddress());
                    }
                    // Display postal addresses 
                    //   using PostalAddress methods
                    Collection pAddrs = pc.getPostalAddresses();
                    for (Object pa : pAddrs) {
                        PostalAddress pAd = (PostalAddress) pa;
                        System.out.println(
                                "  Postal Address (PostalAddress methods):\n    "
                                + pAd.getStreetNumber() + " " + pAd.getStreet()
                                + "\n    " + pAd.getCity() + ", "
                                + pAd.getStateOrProvince() + " "
                                + pAd.getPostalCode() + "\n    "
                                + pAd.getCountry());
                    }
                    // Display postal addresses 
                    //   using Slot methods
                    Collection pAddrs2 = pc.getPostalAddresses();
                    for (Object pa2 : pAddrs2) {
                        PostalAddress pAd = (PostalAddress) pa2;
                        Collection slots = pAd.getSlots();
                        System.out.println("  Postal Address (Slot methods):");
                        for (Object s : slots) {
                            Slot slot = (Slot) s;
                            Collection values = slot.getValues();
                            for (Object v : values) {
                                String line = (String) v;
                                System.out.println("    Line: " + line);
                            }
                        }
                    }
                }
                // Display service and binding information
                Collection services = org.getServices();
                for (Object s : services) {
                    Service svc = (Service) s;
                    System.out.println(" Service name: " + getName(svc));
                    System.out.println(
                            " Service description: " + getDescription(svc));
                    Collection serviceBindings = svc.getServiceBindings();
                    for (Object b : serviceBindings) {
                        ServiceBinding sb = (ServiceBinding) b;
                        System.out.println(
                                "  Binding " + "Description: "
                                + getDescription(sb));
                        System.out.println(
                                "  Access URI: " + sb.getAccessURI());
                    }
                }
                // Print spacer between organizations
                System.out.println(" --- ");
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // At end, close connection to registry
            if (connection != null) {
                try {
                    connection.close();
                } catch (JAXRException je) {
                }
            }
        }
    }
    /**
     * Returns the name value for a registry object.
     *
     * @param ro        a RegistryObject
     * @return                the String value
     */
    private 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
     */
    private 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
     */
    private String getKey(RegistryObject ro) throws JAXRException {
        try {
            return ro.getKey()
                     .getId();
        } catch (NullPointerException npe) {
            return "No Key";
        }
    }
}

//////////////////////////////
//
//    File: JAXRExamples.properties
//
//////////////////////////////
## Registry Server:
query.url=http://localhost:8080/RegistryServer/
publish.url=http://localhost:8080/RegistryServer/
registry.username=testuser
registry.password=testuser
## HTTP and HTTPS proxy host and port
http.proxyHost=
http.proxyPort=8080
https.proxyHost=
https.proxyPort=8080
## Values used by publish examples
org.name=The Coffee Break
org.description=Purveyor of the finest coffees. Established 1950
person.name=Jane Doe
phone.number=(800) 555-1212
email.address=jane.doe@TheCoffeeBreak.ru
classification.scheme=ntis-gov:naics:1997
classification.name=All Other Specialty Food Stores
classification.value=445299
service.name=My Service Name
service.description=My Service Description
svcbinding.description=My Service Binding Description
svcbinding.accessURI=http://TheCoffeeBreak.ru:8080/sb/
## Values used by postal address examples
postal.taxonomy.filenames=postalconcepts.xml
postal.scheme.name=MyPostalAddressScheme
postal.scheme.description=A ClassificationScheme for My PostalAddressMappings
postal.classification.name=postalAddress
postal.classification.value=postalAddress
postal.scheme.link=http://unrealcompany.ru/PostalScheme.html
postal.scheme.linkdesc=My PostalAddress Scheme
postal.org.name=The Postal Coffee Break
postal.person.name=Jane Postal
postal.email.address=jane.postal@ThePostalCoffeeBreak.ru
postal.streetNumber=99
postal.street=Imaginary Ave. Suite 33
postal.city=Imaginary City
postal.state=NY
postal.country=USA
postal.postalCode=00000
postal.type=
# Values used by JAXRPublishConcept example
concept.name=HelloConcept
concept.description=Concept for Hello Service
link.uri=http://localhost:8080/hello-jaxws/hello?WSDL
link.description=Hello WSDL document
# Values used by JAXRPublishHelloOrg example
wsdlorg.name=Hello Organization
wsdlorg.description=Organization with a Hello Service
wsdlorg.person.name=Duke
wsdlorg.person.description=Owner of Hello Service
wsdlorg.phone=111-222-3333
wsdlorg.email.address=duke@hello.ru
wsdlorg.svc.name=JAX-RPC Hello Service
wsdlorg.svc.description=Says Hello
wsdlorg.svcbnd.description=Service binding for Hello Service
wsdlorg.svcbnd.uri=http://localhost:8080/hello-jaxws/hello





Find and deletes the classification scheme that the JAXRSaveClassificationScheme program created

 
 
/*
 * Copyright 2007 Sun Microsystems, Inc.
 * All rights reserved.  You may not modify, use,
 * reproduce, or distribute this software except in
 * compliance with  the terms of the License at:
 * http://developer.sun.ru/berkeley_license.html
 */
/*
Copyright 1994-2006 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:
 
* Redistribution 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 MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY 
DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING 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. 
*/

import javax.xml.registry.Connection;
import javax.xml.registry.ConnectionFactory;
import javax.xml.registry.RegistryService;
import javax.xml.registry.BusinessQueryManager;
import javax.xml.registry.BusinessLifeCycleManager;
import javax.xml.registry.JAXRException;
import javax.xml.registry.BulkResponse;
import javax.xml.registry.infomodel.RegistryObject;
import javax.xml.registry.infomodel.Concept;
import javax.xml.registry.infomodel.ClassificationScheme;
import javax.xml.registry.infomodel.Key;
import java.net.PasswordAuthentication;
import java.util.ResourceBundle;
import java.util.Properties;
import java.util.Collection;
import java.util.ArrayList;
import java.util.HashSet;

/**
 * The JAXRDeleteScheme class consists of a main method, a
 * makeConnection method, a createSchemeKey method, and an executeRemove
 * method. It finds and deletes the classification scheme that the
 * JAXRSaveClassificationScheme program created.  Specify the string UUID
 * value returned by the JAXRSaveClassificationScheme program.
 */
public class JAXRDeleteScheme {
    Connection connection = null;
    RegistryService rs = null;
    public JAXRDeleteScheme() {
    }
    public static void main(String[] args) {
        ResourceBundle bundle = ResourceBundle.getBundle("JAXRExamples");
        Key key = null;
        String queryURL = bundle.getString("query.url");
        String publishURL = bundle.getString("publish.url");
        String username = bundle.getString("registry.username");
        String password = bundle.getString("registry.password");
        if (args.length < 1) {
            System.out.println("Argument required: " + "-Duuid-string=<value>");
            System.exit(1);
        }
        String keyString = args[0];
        System.out.println("UUID string is " + keyString);
        JAXRDeleteScheme jd = new JAXRDeleteScheme();
        jd.makeConnection(queryURL, publishURL);
        key = jd.createSchemeKey(keyString);
        if (key != null) {
            jd.executeRemove(key, username, password);
        } else {
            System.out.println("Key not found, nothing to remove");
        }
    }
    /**
     * Establishes a connection to a registry.
     *
     * @param queryUrl        the URL of the query registry
     * @param publishUrl        the URL of the publish registry
     */
    public void makeConnection(
        String queryUrl,
        String publishUrl) {
        /*
         * Specify proxy information in case you
         *  are going beyond your firewall.
         */
        ResourceBundle bundle = ResourceBundle.getBundle("JAXRExamples");
        String httpProxyHost = bundle.getString("http.proxyHost");
        String httpProxyPort = bundle.getString("http.proxyPort");
        String httpsProxyHost = bundle.getString("https.proxyHost");
        String httpsProxyPort = bundle.getString("https.proxyPort");
        /*
         * Define connection configuration properties.
         * To delete, you need both the query URL and the
         * publish URL.
         */
        Properties props = new Properties();
        props.setProperty("javax.xml.registry.queryManagerURL", queryUrl);
        props.setProperty("javax.xml.registry.lifeCycleManagerURL", publishUrl);
        props.setProperty("com.sun.xml.registry.http.proxyHost", httpProxyHost);
        props.setProperty("com.sun.xml.registry.http.proxyPort", httpProxyPort);
        props.setProperty(
                "com.sun.xml.registry.https.proxyHost",
                httpsProxyHost);
        props.setProperty(
                "com.sun.xml.registry.https.proxyPort",
                httpsProxyPort);
        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) {
                }
            }
        }
    }
    /**
     * Creates a Key object from the user-supplied string.
     *
     * @param keyStr        the key of the published organization
     *
     * @return        the key of the organization found
     */
    public Key createSchemeKey(String keyStr) {
        BusinessLifeCycleManager blcm = null;
        Key schemeKey = null;
        try {
            rs = connection.getRegistryService();
            blcm = rs.getBusinessLifeCycleManager();
            System.out.println(
                    "Got registry service and " + "life cycle manager");
            schemeKey = blcm.createKey(keyStr);
        } catch (Exception e) {
            e.printStackTrace();
            if (connection != null) {
                try {
                    connection.close();
                } catch (JAXRException je) {
                    System.err.println("Connection close failed");
                }
            }
        }
        return schemeKey;
    }
    /**
     * Removes the classification scheme with the specified key value.
     *
     * @param key        the Key of the organization
     * @param username  the username for the registry
     * @param password  the password for the registry
     */
    public void executeRemove(
        Key key,
        String username,
        String password) {
        BusinessLifeCycleManager blcm = null;
        try {
            blcm = rs.getBusinessLifeCycleManager();
            // Get authorization from the registry
            PasswordAuthentication passwdAuth = new PasswordAuthentication(
                        username,
                        password.toCharArray());
            HashSet<PasswordAuthentication> creds = new HashSet<PasswordAuthentication>();
            creds.add(passwdAuth);
            connection.setCredentials(creds);
            System.out.println("Established security credentials");
            String id = key.getId();
            System.out.println("Deleting classification scheme with id " + id);
            Collection<Key> keys = new ArrayList<Key>();
            keys.add(key);
            BulkResponse response = blcm.deleteClassificationSchemes(keys);
            Collection exceptions = response.getExceptions();
            if (exceptions == null) {
                System.out.println("Classification scheme deleted");
                Collection retKeys = response.getCollection();
                for (Object k : retKeys) {
                    Key schemeKey = (Key) k;
                    id = schemeKey.getId();
                    System.out.println("Classification scheme key was " + id);
                }
            } else {
                for (Object e : exceptions) {
                    Exception exception = (Exception) e;
                    System.err.println(
                            "Exception on delete: " + exception.toString());
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // At end, close connection to registry
            if (connection != null) {
                try {
                    connection.close();
                } catch (JAXRException je) {
                }
            }
        }
    }
}


//////////////////////////////
//
//    File: JAXRExamples.properties
//
//////////////////////////////
## Registry Server:
query.url=http://localhost:8080/RegistryServer/
publish.url=http://localhost:8080/RegistryServer/
registry.username=testuser
registry.password=testuser
## HTTP and HTTPS proxy host and port
http.proxyHost=
http.proxyPort=8080
https.proxyHost=
https.proxyPort=8080
## Values used by publish examples
org.name=The Coffee Break
org.description=Purveyor of the finest coffees. Established 1950
person.name=Jane Doe
phone.number=(800) 555-1212
email.address=jane.doe@TheCoffeeBreak.ru
classification.scheme=ntis-gov:naics:1997
classification.name=All Other Specialty Food Stores
classification.value=445299
service.name=My Service Name
service.description=My Service Description
svcbinding.description=My Service Binding Description
svcbinding.accessURI=http://TheCoffeeBreak.ru:8080/sb/
## Values used by postal address examples
postal.taxonomy.filenames=postalconcepts.xml
postal.scheme.name=MyPostalAddressScheme
postal.scheme.description=A ClassificationScheme for My PostalAddressMappings
postal.classification.name=postalAddress
postal.classification.value=postalAddress
postal.scheme.link=http://unrealcompany.ru/PostalScheme.html
postal.scheme.linkdesc=My PostalAddress Scheme
postal.org.name=The Postal Coffee Break
postal.person.name=Jane Postal
postal.email.address=jane.postal@ThePostalCoffeeBreak.ru
postal.streetNumber=99
postal.street=Imaginary Ave. Suite 33
postal.city=Imaginary City
postal.state=NY
postal.country=USA
postal.postalCode=00000
postal.type=
# Values used by JAXRPublishConcept example
concept.name=HelloConcept
concept.description=Concept for Hello Service
link.uri=http://localhost:8080/hello-jaxws/hello?WSDL
link.description=Hello WSDL document
# Values used by JAXRPublishHelloOrg example
wsdlorg.name=Hello Organization
wsdlorg.description=Organization with a Hello Service
wsdlorg.person.name=Duke
wsdlorg.person.description=Owner of Hello Service
wsdlorg.phone=111-222-3333
wsdlorg.email.address=duke@hello.ru
wsdlorg.svc.name=JAX-RPC Hello Service
wsdlorg.svc.description=Says Hello
wsdlorg.svcbnd.description=Service binding for Hello Service
wsdlorg.svcbnd.uri=http://localhost:8080/hello-jaxws/hello





Finds and deletes the organization that the JAXRPublish program created

 
/*
 * Copyright 2007 Sun Microsystems, Inc.
 * All rights reserved.  You may not modify, use,
 * reproduce, or distribute this software except in
 * compliance with  the terms of the License at:
 * http://developer.sun.ru/berkeley_license.html
 */
/*
Copyright 1994-2006 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:
 
* Redistribution 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 MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY 
DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING 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. 
*/

import javax.xml.registry.Connection;
import javax.xml.registry.ConnectionFactory;
import javax.xml.registry.RegistryService;
import javax.xml.registry.BusinessLifeCycleManager;
import javax.xml.registry.BulkResponse;
import javax.xml.registry.JAXRException;
import javax.xml.registry.infomodel.RegistryObject;
import javax.xml.registry.infomodel.Key;
import java.net.PasswordAuthentication;
import java.util.ResourceBundle;
import java.util.Properties;
import java.util.HashSet;
import java.util.Collection;
import java.util.ArrayList;

/**
 * The JAXRDelete class consists of a main method, a makeConnection
 * method, a createOrgKey method, and an executeRemove method. It
 * finds and deletes the organization that the JAXRPublish program
 * created.  Specify the string key ID value returned by the
 * JAXRPublish program.
 */
public class JAXRDelete {
    Connection connection = null;
    RegistryService rs = null;
    public JAXRDelete() {
    }
    public static void main(String[] args) {
        ResourceBundle bundle = ResourceBundle.getBundle("JAXRExamples");
        Key key = null;
        String queryURL = bundle.getString("query.url");
        String publishURL = bundle.getString("publish.url");
        String username = bundle.getString("registry.username");
        String password = bundle.getString("registry.password");
        if (args.length < 1) {
            System.out.println("Argument required: " + "-Dkey-string=<value>");
            System.exit(1);
        }
        String keyString = args[0];
        System.out.println("Key string is " + keyString);
        JAXRDelete jd = new JAXRDelete();
        jd.makeConnection(queryURL, publishURL);
        key = jd.createOrgKey(keyString);
        if (key != null) {
            jd.executeRemove(key, username, password);
        } else {
            System.out.println("Key not found, nothing to remove");
        }
    }
    /**
     * Establishes a connection to a registry.
     *
     * @param queryUrl        the URL of the query registry
     * @param publishUrl        the URL of the publish registry
     */
    public void makeConnection(
        String queryUrl,
        String publishUrl) {
        /*
         * Specify proxy information in case you
         *  are going beyond your firewall.
         */
        ResourceBundle bundle = ResourceBundle.getBundle("JAXRExamples");
        String httpProxyHost = bundle.getString("http.proxyHost");
        String httpProxyPort = bundle.getString("http.proxyPort");
        String httpsProxyHost = bundle.getString("https.proxyHost");
        String httpsProxyPort = bundle.getString("https.proxyPort");
        /*
         * Define connection configuration properties.
         * To delete, you need both the query URL and the
         * publish URL.
         */
        Properties props = new Properties();
        props.setProperty("javax.xml.registry.queryManagerURL", queryUrl);
        props.setProperty("javax.xml.registry.lifeCycleManagerURL", publishUrl);
        props.setProperty("com.sun.xml.registry.http.proxyHost", httpProxyHost);
        props.setProperty("com.sun.xml.registry.http.proxyPort", httpProxyPort);
        props.setProperty(
                "com.sun.xml.registry.https.proxyHost",
                httpsProxyHost);
        props.setProperty(
                "com.sun.xml.registry.https.proxyPort",
                httpsProxyPort);
        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) {
                }
            }
        }
    }
    /**
     * Creates a Key object from the user-supplied string.
     *
     * @param keyStr        the key of the published organization
     *
     * @return        the key of the organization found
     */
    public Key createOrgKey(String keyStr) {
        BusinessLifeCycleManager blcm = null;
        Key orgKey = null;
        try {
            rs = connection.getRegistryService();
            blcm = rs.getBusinessLifeCycleManager();
            System.out.println(
                    "Got registry service and " + "life cycle manager");
            orgKey = blcm.createKey(keyStr);
        } catch (Exception e) {
            e.printStackTrace();
            if (connection != null) {
                try {
                    connection.close();
                } catch (JAXRException je) {
                    System.err.println("Connection close failed");
                }
            }
        }
        return orgKey;
    }
    /**
     * Removes the organization with the specified key value.
     *
     * @param key        the Key of the organization
     * @param username  the username for the registry
     * @param password  the password for the registry
     */
    public void executeRemove(
        Key key,
        String username,
        String password) {
        BusinessLifeCycleManager blcm = null;
        try {
            blcm = rs.getBusinessLifeCycleManager();
            // Get authorization from the registry
            PasswordAuthentication passwdAuth = new PasswordAuthentication(
                        username,
                        password.toCharArray());
            HashSet<PasswordAuthentication> creds = new HashSet<PasswordAuthentication>();
            creds.add(passwdAuth);
            connection.setCredentials(creds);
            System.out.println("Established security credentials");
            String id = key.getId();
            System.out.println("Deleting organization with id " + id);
            Collection<Key> keys = new ArrayList<Key>();
            keys.add(key);
            BulkResponse response = blcm.deleteOrganizations(keys);
            Collection exceptions = response.getExceptions();
            if (exceptions == null) {
                System.out.println("Organization deleted");
                Collection retKeys = response.getCollection();
                for (Object k : retKeys) {
                    Key orgKey = (Key) k;
                    id = orgKey.getId();
                    System.out.println("Organization key was " + id);
                }
            } else {
                for (Object e : exceptions) {
                    Exception exception = (Exception) e;
                    System.err.println(
                            "Exception on delete: " + exception.toString());
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // At end, close connection to registry
            if (connection != null) {
                try {
                    connection.close();
                } catch (JAXRException je) {
                }
            }
        }
    }
}
//////////////////////////////
//
//    File: JAXRExamples.properties
//
//////////////////////////////
## Registry Server:
query.url=http://localhost:8080/RegistryServer/
publish.url=http://localhost:8080/RegistryServer/
registry.username=testuser
registry.password=testuser
## HTTP and HTTPS proxy host and port
http.proxyHost=
http.proxyPort=8080
https.proxyHost=
https.proxyPort=8080
## Values used by publish examples
org.name=The Coffee Break
org.description=Purveyor of the finest coffees. Established 1950
person.name=Jane Doe
phone.number=(800) 555-1212
email.address=jane.doe@TheCoffeeBreak.ru
classification.scheme=ntis-gov:naics:1997
classification.name=All Other Specialty Food Stores
classification.value=445299
service.name=My Service Name
service.description=My Service Description
svcbinding.description=My Service Binding Description
svcbinding.accessURI=http://TheCoffeeBreak.ru:8080/sb/
## Values used by postal address examples
postal.taxonomy.filenames=postalconcepts.xml
postal.scheme.name=MyPostalAddressScheme
postal.scheme.description=A ClassificationScheme for My PostalAddressMappings
postal.classification.name=postalAddress
postal.classification.value=postalAddress
postal.scheme.link=http://unrealcompany.ru/PostalScheme.html
postal.scheme.linkdesc=My PostalAddress Scheme
postal.org.name=The Postal Coffee Break
postal.person.name=Jane Postal
postal.email.address=jane.postal@ThePostalCoffeeBreak.ru
postal.streetNumber=99
postal.street=Imaginary Ave. Suite 33
postal.city=Imaginary City
postal.state=NY
postal.country=USA
postal.postalCode=00000
postal.type=
# Values used by JAXRPublishConcept example
concept.name=HelloConcept
concept.description=Concept for Hello Service
link.uri=http://localhost:8080/hello-jaxws/hello?WSDL
link.description=Hello WSDL document
# Values used by JAXRPublishHelloOrg example
wsdlorg.name=Hello Organization
wsdlorg.description=Organization with a Hello Service
wsdlorg.person.name=Duke
wsdlorg.person.description=Owner of Hello Service
wsdlorg.phone=111-222-3333
wsdlorg.email.address=duke@hello.ru
wsdlorg.svc.name=JAX-RPC Hello Service
wsdlorg.svc.description=Says Hello
wsdlorg.svcbnd.description=Service binding for Hello Service
wsdlorg.svcbnd.uri=http://localhost:8080/hello-jaxws/hello





It searches a registry for information about organizations using an NAICS classification

 
 
/*
 * Copyright 2007 Sun Microsystems, Inc.
 * All rights reserved.  You may not modify, use,
 * reproduce, or distribute this software except in
 * compliance with  the terms of the License at:
 * http://developer.sun.ru/berkeley_license.html
 */
/*
Copyright 1994-2006 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:
 
* Redistribution 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 MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY 
DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING 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. 
*/

import javax.xml.registry.Connection;
import javax.xml.registry.ConnectionFactory;
import javax.xml.registry.RegistryService;
import javax.xml.registry.BusinessLifeCycleManager;
import javax.xml.registry.LifeCycleManager;
import javax.xml.registry.BusinessQueryManager;
import javax.xml.registry.BulkResponse;
import javax.xml.registry.JAXRException;
import static javax.xml.registry.FindQualifier.SORT_BY_NAME_DESC;
import javax.xml.registry.infomodel.RegistryObject;
import javax.xml.registry.infomodel.InternationalString;
import javax.xml.registry.infomodel.Organization;
import javax.xml.registry.infomodel.User;
import javax.xml.registry.infomodel.PersonName;
import javax.xml.registry.infomodel.TelephoneNumber;
import javax.xml.registry.infomodel.EmailAddress;
import javax.xml.registry.infomodel.ClassificationScheme;
import javax.xml.registry.infomodel.Classification;
import javax.xml.registry.infomodel.Service;
import javax.xml.registry.infomodel.ServiceBinding;
import java.util.ResourceBundle;
import java.util.Properties;
import java.util.Collection;
import java.util.ArrayList;

/**
 * The JAXRQueryByNAICSClassification class consists of a main
 * method, a makeConnection method, an executeQuery method, and
 * some private helper methods. It searches a registry for
 * information about organizations using an NAICS classification.
 */
public class JAXRQueryByNAICSClassification {
    Connection connection = null;
    public JAXRQueryByNAICSClassification() {
    }
    public static void main(String[] args) {
        ResourceBundle bundle = ResourceBundle.getBundle("JAXRExamples");
        String queryURL = bundle.getString("query.url");
        String publishURL = bundle.getString("publish.url");
        JAXRQueryByNAICSClassification jq = new JAXRQueryByNAICSClassification();
        jq.makeConnection(queryURL, publishURL);
        jq.executeQuery();
    }
    /**
     * Establishes a connection to a registry.
     *
     * @param queryUrl        the URL of the query registry
     * @param publishUrl        the URL of the publish registry
     */
    public void makeConnection(
        String queryUrl,
        String publishUrl) {
        /*
         * Specify proxy information in case you
         *  are going beyond your firewall.
         */
        ResourceBundle bundle = ResourceBundle.getBundle("JAXRExamples");
        String httpProxyHost = bundle.getString("http.proxyHost");
        String httpProxyPort = bundle.getString("http.proxyPort");
        String httpsProxyHost = bundle.getString("https.proxyHost");
        String httpsProxyPort = bundle.getString("https.proxyPort");
        /*
         * Define connection configuration properties.
         * For simple queries, you need the query URL.
         * To use a life cycle manager, you need the publish URL.
         */
        Properties props = new Properties();
        props.setProperty("javax.xml.registry.queryManagerURL", queryUrl);
        props.setProperty("javax.xml.registry.lifeCycleManagerURL", publishUrl);
        props.setProperty("com.sun.xml.registry.http.proxyHost", httpProxyHost);
        props.setProperty("com.sun.xml.registry.http.proxyPort", httpProxyPort);
        props.setProperty(
                "com.sun.xml.registry.https.proxyHost",
                httpsProxyHost);
        props.setProperty(
                "com.sun.xml.registry.https.proxyPort",
                httpsProxyPort);
        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) {
                }
            }
        }
    }
    /**
     * Searches for organizations corresponding to an NAICS
     * classification and displays data about them.
     */
    public void executeQuery() {
        RegistryService rs = null;
        BusinessQueryManager bqm = null;
        BusinessLifeCycleManager blcm = null;
        try {
            // Get registry service and managers
            rs = connection.getRegistryService();
            bqm = rs.getBusinessQueryManager();
            blcm = rs.getBusinessLifeCycleManager();
            System.out.println(
                    "Got registry service, query "
                    + "manager, and lifecycle manager");
            ResourceBundle bundle = ResourceBundle.getBundle("JAXRExamples");
            // Find using an NAICS classification
            // Set classification scheme to NAICS, using
            // well-known UUID of ntis-gov:naics:1997
            String uuid_naics = "uuid:C0B9FE13-179F-413D-8A5B-5004DB8E5BB2";
            ClassificationScheme cScheme = (ClassificationScheme) bqm
                .getRegistryObject(
                        uuid_naics,
                        LifeCycleManager.CLASSIFICATION_SCHEME);
            Collection<Classification> classifications = new ArrayList<Classification>();
            if (cScheme != null) {
                // Create and add classification
                InternationalString sn = blcm.createInternationalString(
                            bundle.getString("classification.name"));
                Classification classification = blcm.createClassification(
                            cScheme,
                            sn,
                            bundle.getString("classification.value"));
                classifications.add(classification);
            } else {
                System.out.println("Classification scheme not found");
            }
            BulkResponse response = bqm.findOrganizations(
                        null,
                        null,
                        classifications,
                        null,
                        null,
                        null);
            Collection orgs = response.getCollection();
            // Display information about the organizations found
            int numOrgs = 0;
            if (orgs.isEmpty()) {
                System.out.println("No organizations found");
            } else {
                for (Object o : orgs) {
                    numOrgs++;
                    Organization org = (Organization) o;
                    System.out.println("Org name: " + getName(org));
                    System.out.println(
                            "Org description: " + getDescription(org));
                    System.out.println("Org key id: " + getKey(org));
                    // Display primary contact information
                    User pc = org.getPrimaryContact();
                    if (pc != null) {
                        PersonName pcName = pc.getPersonName();
                        System.out.println(
                                " Contact name: " + pcName.getFullName());
                        Collection phNums = pc.getTelephoneNumbers(null);
                        for (Object n : phNums) {
                            TelephoneNumber num = (TelephoneNumber) n;
                            System.out.println(
                                    "  Phone number: " + num.getNumber());
                        }
                        Collection eAddrs = pc.getEmailAddresses();
                        for (Object a : eAddrs) {
                            EmailAddress eAd = (EmailAddress) a;
                            System.out.println(
                                    "  Email Address: " + eAd.getAddress());
                        }
                    }
                    // Display classifications
                    Collection classList = org.getClassifications();
                    for (Object cl : classList) {
                        Classification c = (Classification) cl;
                        System.out.println(
                                " Classification name: " + getName(c));
                        System.out.println(
                                " Classification value: " + c.getValue());
                        ClassificationScheme sch = c.getClassificationScheme();
                        System.out.println(
                                " Classification scheme key: " + getKey(sch));
                    }
                    // Print spacer between organizations
                    System.out.println(" --- ");
                }
            }
            System.out.println("Found " + numOrgs + " organization(s)");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // At end, close connection to registry
            if (connection != null) {
                try {
                    connection.close();
                } catch (JAXRException je) {
                }
            }
        }
    }
    /**
     * Returns the name value for a registry object.
     *
     * @param ro        a RegistryObject
     * @return                the String value
     */
    private 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
     */
    private 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
     */
    private String getKey(RegistryObject ro) throws JAXRException {
        try {
            return ro.getKey()
                     .getId();
        } catch (NullPointerException npe) {
            return "No Key";
        }
    }
}

//////////////////////////////
//
//    File: JAXRExamples.properties
//
//////////////////////////////
## Registry Server:
query.url=http://localhost:8080/RegistryServer/
publish.url=http://localhost:8080/RegistryServer/
registry.username=testuser
registry.password=testuser
## HTTP and HTTPS proxy host and port
http.proxyHost=
http.proxyPort=8080
https.proxyHost=
https.proxyPort=8080
## Values used by publish examples
org.name=The Coffee Break
org.description=Purveyor of the finest coffees. Established 1950
person.name=Jane Doe
phone.number=(800) 555-1212
email.address=jane.doe@TheCoffeeBreak.ru
classification.scheme=ntis-gov:naics:1997
classification.name=All Other Specialty Food Stores
classification.value=445299
service.name=My Service Name
service.description=My Service Description
svcbinding.description=My Service Binding Description
svcbinding.accessURI=http://TheCoffeeBreak.ru:8080/sb/
## Values used by postal address examples
postal.taxonomy.filenames=postalconcepts.xml
postal.scheme.name=MyPostalAddressScheme
postal.scheme.description=A ClassificationScheme for My PostalAddressMappings
postal.classification.name=postalAddress
postal.classification.value=postalAddress
postal.scheme.link=http://unrealcompany.ru/PostalScheme.html
postal.scheme.linkdesc=My PostalAddress Scheme
postal.org.name=The Postal Coffee Break
postal.person.name=Jane Postal
postal.email.address=jane.postal@ThePostalCoffeeBreak.ru
postal.streetNumber=99
postal.street=Imaginary Ave. Suite 33
postal.city=Imaginary City
postal.state=NY
postal.country=USA
postal.postalCode=00000
postal.type=
# Values used by JAXRPublishConcept example
concept.name=HelloConcept
concept.description=Concept for Hello Service
link.uri=http://localhost:8080/hello-jaxws/hello?WSDL
link.description=Hello WSDL document
# Values used by JAXRPublishHelloOrg example
wsdlorg.name=Hello Organization
wsdlorg.description=Organization with a Hello Service
wsdlorg.person.name=Duke
wsdlorg.person.description=Owner of Hello Service
wsdlorg.phone=111-222-3333
wsdlorg.email.address=duke@hello.ru
wsdlorg.svc.name=JAX-RPC Hello Service
wsdlorg.svc.description=Says Hello
wsdlorg.svcbnd.description=Service binding for Hello Service
wsdlorg.svcbnd.uri=http://localhost:8080/hello-jaxws/hello





JAXR Delete Concept

 
/*
 * Copyright 2007 Sun Microsystems, Inc.
 * All rights reserved.  You may not modify, use,
 * reproduce, or distribute this software except in
 * compliance with  the terms of the License at:
 * http://developer.sun.ru/berkeley_license.html
 */
/*
Copyright 1994-2006 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:
 
* Redistribution 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 MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY 
DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING 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. 
*/

import javax.xml.registry.Connection;
import javax.xml.registry.ConnectionFactory;
import javax.xml.registry.RegistryService;
import javax.xml.registry.BusinessLifeCycleManager;
import javax.xml.registry.BulkResponse;
import javax.xml.registry.JAXRException;
import javax.xml.registry.infomodel.RegistryObject;
import javax.xml.registry.infomodel.Concept;
import javax.xml.registry.infomodel.Key;
import java.net.PasswordAuthentication;
import java.util.ResourceBundle;
import java.util.Properties;
import java.util.HashSet;
import java.util.Collection;
import java.util.ArrayList;

/**
 * The JAXRDeleteConcept class consists of a main method, a makeConnection
 * method, a createKey method, and an executeRemove method. It
 * finds and deletes the concept that the JAXRPublishConcept program
 * created.  Specify the string key ID value returned by the
 * JAXRPublishConcept program.
 */
public class JAXRDeleteConcept {
    Connection connection = null;
    RegistryService rs = null;
    public JAXRDeleteConcept() {
    }
    public static void main(String[] args) {
        ResourceBundle bundle = ResourceBundle.getBundle("JAXRExamples");
        Key key = null;
        String queryURL = bundle.getString("query.url");
        String publishURL = bundle.getString("publish.url");
        String username = bundle.getString("registry.username");
        String password = bundle.getString("registry.password");
        if (args.length < 1) {
            System.out.println("Argument required: -Duuid-string=<value>");
            System.exit(1);
        }
        String uuidString = args[0];
        System.out.println("UUID string is " + uuidString);
        JAXRDeleteConcept jdc = new JAXRDeleteConcept();
        jdc.makeConnection(queryURL, publishURL);
        key = jdc.createKey(uuidString);
        if (key != null) {
            jdc.executeRemove(key, username, password);
        } else {
            System.out.println("Key not found, nothing to remove");
        }
    }
    /**
     * Establishes a connection to a registry.
     *
     * @param queryUrl        the URL of the query registry
     * @param publishUrl        the URL of the publish registry
     */
    public void makeConnection(
        String queryUrl,
        String publishUrl) {
        /*
         * Specify proxy information in case you
         *  are going beyond your firewall.
         */
        ResourceBundle bundle = ResourceBundle.getBundle("JAXRExamples");
        String httpProxyHost = bundle.getString("http.proxyHost");
        String httpProxyPort = bundle.getString("http.proxyPort");
        String httpsProxyHost = bundle.getString("https.proxyHost");
        String httpsProxyPort = bundle.getString("https.proxyPort");
        /*
         * Define connection configuration properties.
         * To delete, you need both the query URL and the
         * publish URL.
         */
        Properties props = new Properties();
        props.setProperty("javax.xml.registry.queryManagerURL", queryUrl);
        props.setProperty("javax.xml.registry.lifeCycleManagerURL", publishUrl);
        props.setProperty("com.sun.xml.registry.http.proxyHost", httpProxyHost);
        props.setProperty("com.sun.xml.registry.http.proxyPort", httpProxyPort);
        props.setProperty(
                "com.sun.xml.registry.https.proxyHost",
                httpsProxyHost);
        props.setProperty(
                "com.sun.xml.registry.https.proxyPort",
                httpsProxyPort);
        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) {
                }
            }
        }
    }
    /**
     * Creates a Key object from the user-supplied string.
     *
     * @param keyStr        the key of the published concept
     *
     * @return        the key of the concept found
     */
    public Key createKey(String keyStr) {
        BusinessLifeCycleManager blcm = null;
        Key key = null;
        try {
            rs = connection.getRegistryService();
            blcm = rs.getBusinessLifeCycleManager();
            System.out.println("Got registry service and life cycle manager");
            key = blcm.createKey(keyStr);
        } catch (Exception e) {
            e.printStackTrace();
            if (connection != null) {
                try {
                    connection.close();
                } catch (JAXRException je) {
                    System.err.println("Connection close failed");
                }
            }
        }
        return key;
    }
    /**
     * Removes the organization with the specified key value.
     *
     * @param key        the Key of the organization
     * @param username  the username for the registry
     * @param password  the password for the registry
     */
    public void executeRemove(
        Key key,
        String username,
        String password) {
        BusinessLifeCycleManager blcm = null;
        try {
            blcm = rs.getBusinessLifeCycleManager();
            // Get authorization from the registry
            PasswordAuthentication passwdAuth = new PasswordAuthentication(
                        username,
                        password.toCharArray());
            HashSet<PasswordAuthentication> creds = new HashSet<PasswordAuthentication>();
            creds.add(passwdAuth);
            connection.setCredentials(creds);
            System.out.println("Established security credentials");
            String id = key.getId();
            System.out.println("Deleting concept with id " + id);
            Collection<Key> keys = new ArrayList<Key>();
            keys.add(key);
            BulkResponse response = blcm.deleteConcepts(keys);
            Collection exceptions = response.getExceptions();
            if (exceptions == null) {
                System.out.println("Concept deleted");
                Collection retKeys = response.getCollection();
                for (Object k : retKeys) {
                    Key concKey = (Key) k;
                    id = concKey.getId();
                    System.out.println("Concept key was " + id);
                }
            } else {
                for (Object e : exceptions) {
                    Exception exception = (Exception) e;
                    System.err.println(
                            "Exception on delete: " + exception.toString());
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // At end, close connection to registry
            if (connection != null) {
                try {
                    connection.close();
                } catch (JAXRException je) {
                }
            }
        }
    }
}

//////////////////////////////
//
//    File: JAXRExamples.properties
//
//////////////////////////////
## Registry Server:
query.url=http://localhost:8080/RegistryServer/
publish.url=http://localhost:8080/RegistryServer/
registry.username=testuser
registry.password=testuser
## HTTP and HTTPS proxy host and port
http.proxyHost=
http.proxyPort=8080
https.proxyHost=
https.proxyPort=8080
## Values used by publish examples
org.name=The Coffee Break
org.description=Purveyor of the finest coffees. Established 1950
person.name=Jane Doe
phone.number=(800) 555-1212
email.address=jane.doe@TheCoffeeBreak.ru
classification.scheme=ntis-gov:naics:1997
classification.name=All Other Specialty Food Stores
classification.value=445299
service.name=My Service Name
service.description=My Service Description
svcbinding.description=My Service Binding Description
svcbinding.accessURI=http://TheCoffeeBreak.ru:8080/sb/
## Values used by postal address examples
postal.taxonomy.filenames=postalconcepts.xml
postal.scheme.name=MyPostalAddressScheme
postal.scheme.description=A ClassificationScheme for My PostalAddressMappings
postal.classification.name=postalAddress
postal.classification.value=postalAddress
postal.scheme.link=http://unrealcompany.ru/PostalScheme.html
postal.scheme.linkdesc=My PostalAddress Scheme
postal.org.name=The Postal Coffee Break
postal.person.name=Jane Postal
postal.email.address=jane.postal@ThePostalCoffeeBreak.ru
postal.streetNumber=99
postal.street=Imaginary Ave. Suite 33
postal.city=Imaginary City
postal.state=NY
postal.country=USA
postal.postalCode=00000
postal.type=
# Values used by JAXRPublishConcept example
concept.name=HelloConcept
concept.description=Concept for Hello Service
link.uri=http://localhost:8080/hello-jaxws/hello?WSDL
link.description=Hello WSDL document
# Values used by JAXRPublishHelloOrg example
wsdlorg.name=Hello Organization
wsdlorg.description=Organization with a Hello Service
wsdlorg.person.name=Duke
wsdlorg.person.description=Owner of Hello Service
wsdlorg.phone=111-222-3333
wsdlorg.email.address=duke@hello.ru
wsdlorg.svc.name=JAX-RPC Hello Service
wsdlorg.svc.description=Says Hello
wsdlorg.svcbnd.description=Service binding for Hello Service
wsdlorg.svcbnd.uri=http://localhost:8080/hello-jaxws/hello





JAXR Publish Postal

 
/*
 * Copyright 2007 Sun Microsystems, Inc.
 * All rights reserved.  You may not modify, use,
 * reproduce, or distribute this software except in
 * compliance with  the terms of the License at:
 * http://developer.sun.ru/berkeley_license.html
 */
/*
Copyright 1994-2006 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:
 
* Redistribution 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 MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY 
DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING 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. 
*/

import javax.xml.registry.Connection;
import javax.xml.registry.ConnectionFactory;
import javax.xml.registry.RegistryService;
import javax.xml.registry.BusinessLifeCycleManager;
import javax.xml.registry.LifeCycleManager;
import javax.xml.registry.BusinessQueryManager;
import javax.xml.registry.BulkResponse;
import javax.xml.registry.JAXRException;
import javax.xml.registry.infomodel.Organization;
import javax.xml.registry.infomodel.InternationalString;
import javax.xml.registry.infomodel.TelephoneNumber;
import javax.xml.registry.infomodel.PostalAddress;
import javax.xml.registry.infomodel.User;
import javax.xml.registry.infomodel.PersonName;
import javax.xml.registry.infomodel.EmailAddress;
import javax.xml.registry.infomodel.ClassificationScheme;
import javax.xml.registry.infomodel.Classification;
import javax.xml.registry.infomodel.Service;
import javax.xml.registry.infomodel.ServiceBinding;
import javax.xml.registry.infomodel.Key;
import java.net.PasswordAuthentication;
import java.util.ResourceBundle;
import java.util.Properties;
import java.util.HashSet;
import java.util.Collection;
import java.util.ArrayList;

/**
 * The JAXRPublishPostal class consists of a main method, a
 * makeConnection method, and an executePublish method.
 * It creates an organization and publishes it to a registry.
 * The organization"s primary contact has a postal address.
 *
 * Edit the file postalconcepts.xml before you run this
 * program.
 */
public class JAXRPublishPostal {
    Connection connection = null;
    public JAXRPublishPostal() {
    }
    public static void main(String[] args) {
        ResourceBundle bundle = ResourceBundle.getBundle("JAXRExamples");
        String queryURL = bundle.getString("query.url");
        String publishURL = bundle.getString("publish.url");
        String username = bundle.getString("registry.username");
        String password = bundle.getString("registry.password");
        if (args.length < 1) {
            System.out.println("Argument required: " + "-Duuid-string=<value>");
            System.exit(1);
        }
        String uuidString = args[0];
        System.out.println("UUID string is " + uuidString);
        JAXRPublishPostal jp = new JAXRPublishPostal();
        jp.makeConnection(queryURL, publishURL, uuidString);
        jp.executePublish(username, password);
    }
    /**
     * Establishes a connection to a registry.
     *
     * @param queryUrl        the URL of the query registry
     * @param publishUrl        the URL of the publish registry
     */
    public void makeConnection(
        String queryUrl,
        String publishUrl,
        String uuidString) {
        /*
         * Specify proxy information in case you
         *  are going beyond your firewall.
         */
        ResourceBundle bundle = ResourceBundle.getBundle("JAXRExamples");
        String httpProxyHost = bundle.getString("http.proxyHost");
        String httpProxyPort = bundle.getString("http.proxyPort");
        String httpsProxyHost = bundle.getString("https.proxyHost");
        String httpsProxyPort = bundle.getString("https.proxyPort");
        String userTaxonomyFilenames = bundle.getString(
                    "postal.taxonomy.filenames");
        /*
         * Define connection configuration properties.
         * To publish, you need both the query URL and the
         * publish URL.
         */
        Properties props = new Properties();
        props.setProperty("javax.xml.registry.queryManagerURL", queryUrl);
        props.setProperty("javax.xml.registry.lifeCycleManagerURL", publishUrl);
        props.setProperty("com.sun.xml.registry.http.proxyHost", httpProxyHost);
        props.setProperty("com.sun.xml.registry.http.proxyPort", httpProxyPort);
        props.setProperty(
                "com.sun.xml.registry.https.proxyHost",
                httpsProxyHost);
        props.setProperty(
                "com.sun.xml.registry.https.proxyPort",
                httpsProxyPort);
        // Define the taxonomy XML file (postalconcepts.xml)
        props.setProperty(
                "com.sun.xml.registry.userTaxonomyFilenames",
                userTaxonomyFilenames);
        // Set properties for postal address mapping using my scheme
        props.setProperty("javax.xml.registry.postalAddressScheme", uuidString);
        props.setProperty(
                "javax.xml.registry.semanticEquivalences",
                "urn:uuid:PostalAddressAttributes/StreetNumber," + "urn:"
                + uuidString + "/MyStreetNumber|"
                + "urn:uuid:PostalAddressAttributes/Street," + "urn:"
                + uuidString + "/MyStreet|"
                + "urn:uuid:PostalAddressAttributes/City," + "urn:"
                + uuidString + "/MyCity|"
                + "urn:uuid:PostalAddressAttributes/State," + "urn:"
                + uuidString + "/MyState|"
                + "urn:uuid:PostalAddressAttributes/PostalCode," + "urn:"
                + uuidString + "/MyPostalCode|"
                + "urn:uuid:PostalAddressAttributes/Country," + "urn:"
                + uuidString + "/MyCountry");
        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) {
                }
            }
        }
    }
    /**
     * Creates an organization, its classification, and its
     * services, and saves it to the registry.  The primary
     * contact has a postal address.
     *
     * @param username  the username for the registry
     * @param password  the password for the registry
     */
    public void executePublish(
        String username,
        String password) {
        RegistryService rs = null;
        BusinessLifeCycleManager blcm = null;
        BusinessQueryManager bqm = null;
        try {
            rs = connection.getRegistryService();
            blcm = rs.getBusinessLifeCycleManager();
            bqm = rs.getBusinessQueryManager();
            System.out.println(
                    "Got registry service, query "
                    + "manager, and life cycle manager");
            // Get authorization from the registry
            PasswordAuthentication passwdAuth = new PasswordAuthentication(
                        username,
                        password.toCharArray());
            HashSet<PasswordAuthentication> creds = new HashSet<PasswordAuthentication>();
            creds.add(passwdAuth);
            connection.setCredentials(creds);
            System.out.println("Established security credentials");
            ResourceBundle bundle = ResourceBundle.getBundle("JAXRExamples");
            // Create organization name and description
            InternationalString s = blcm.createInternationalString(
                        bundle.getString("postal.org.name"));
            Organization org = blcm.createOrganization(s);
            s = blcm.createInternationalString(
                        bundle.getString("org.description"));
            org.setDescription(s);
            // Create primary contact, set name
            User primaryContact = blcm.createUser();
            PersonName pName = blcm.createPersonName(
                        bundle.getString("postal.person.name"));
            primaryContact.setPersonName(pName);
            // Set primary contact phone number
            TelephoneNumber tNum = blcm.createTelephoneNumber();
            tNum.setNumber(bundle.getString("phone.number"));
            Collection<TelephoneNumber> phoneNums = new ArrayList<TelephoneNumber>();
            phoneNums.add(tNum);
            primaryContact.setTelephoneNumbers(phoneNums);
            // Set primary contact email address
            EmailAddress emailAddress = blcm.createEmailAddress(
                        bundle.getString("postal.email.address"));
            Collection<EmailAddress> emailAddresses = new ArrayList<EmailAddress>();
            emailAddresses.add(emailAddress);
            primaryContact.setEmailAddresses(emailAddresses);
            // create postal address for primary contact
            String streetNumber = bundle.getString("postal.streetNumber");
            String street = bundle.getString("postal.street");
            String city = bundle.getString("postal.city");
            String state = bundle.getString("postal.state");
            String country = bundle.getString("postal.country");
            String postalCode = bundle.getString("postal.postalCode");
            String type = bundle.getString("postal.type");
            PostalAddress postAddr = blcm.createPostalAddress(
                        streetNumber,
                        street,
                        city,
                        state,
                        country,
                        postalCode,
                        type);
            Collection<PostalAddress> postalAddresses = new ArrayList<PostalAddress>();
            postalAddresses.add(postAddr);
            primaryContact.setPostalAddresses(postalAddresses);
            // Set primary contact for organization
            org.setPrimaryContact(primaryContact);
            // Set classification scheme to NAICS, using
            // well-known UUID of ntis-gov:naics:1997
            String uuid_naics = "uuid:C0B9FE13-179F-413D-8A5B-5004DB8E5BB2";
            ClassificationScheme cScheme = (ClassificationScheme) bqm
                .getRegistryObject(
                        uuid_naics,
                        LifeCycleManager.CLASSIFICATION_SCHEME);
            // Create and add classification
            if (cScheme != null) {
                InternationalString sn = blcm.createInternationalString(
                            bundle.getString("classification.name"));
                Classification classification = blcm.createClassification(
                            cScheme,
                            sn,
                            bundle.getString("classification.value"));
                Collection<Classification> classifications = new ArrayList<Classification>();
                classifications.add(classification);
                org.addClassifications(classifications);
            } else {
                System.out.println(
                        "Classification scheme not found, "
                        + "not classifying organization");
            }
            // Create services and service
            Collection<Service> services = new ArrayList<Service>();
            s = blcm.createInternationalString(
                        bundle.getString("service.name"));
            Service service = blcm.createService(s);
            s = blcm.createInternationalString(
                        bundle.getString("service.description"));
            service.setDescription(s);
            // Create service bindings; don"t validate this fake URL
            Collection<ServiceBinding> serviceBindings = new ArrayList<ServiceBinding>();
            ServiceBinding binding = blcm.createServiceBinding();
            s = blcm.createInternationalString(
                        bundle.getString("svcbinding.description"));
            binding.setDescription(s);
            // Allow us to publish a fictitious URI without an error
            binding.setValidateURI(false);
            binding.setAccessURI(bundle.getString("svcbinding.accessURI"));
            serviceBindings.add(binding);
            // Add service bindings to service
            service.addServiceBindings(serviceBindings);
            // Add service to services, then add services to organization
            services.add(service);
            org.addServices(services);
            // Add organization and submit to registry
            // Retrieve key if successful
            Collection<Organization> orgs = new ArrayList<Organization>();
            orgs.add(org);
            BulkResponse response = blcm.saveOrganizations(orgs);
            Collection exceptions = response.getExceptions();
            if (exceptions == null) {
                System.out.println("Organization saved");
                Collection keys = response.getCollection();
                for (Object k : keys) {
                    Key orgKey = (Key) k;
                    String id = orgKey.getId();
                    System.out.println("Organization key is " + id);
                }
            } else {
                for (Object e : exceptions) {
                    Exception exception = (Exception) e;
                    System.err.println(
                            "Exception on save: " + exception.toString());
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // At end, close connection to registry
            if (connection != null) {
                try {
                    connection.close();
                } catch (JAXRException je) {
                }
            }
        }
    }
}

//////////////////////////////
//
//    File: JAXRExamples.properties
//
//////////////////////////////
## Registry Server:
query.url=http://localhost:8080/RegistryServer/
publish.url=http://localhost:8080/RegistryServer/
registry.username=testuser
registry.password=testuser
## HTTP and HTTPS proxy host and port
http.proxyHost=
http.proxyPort=8080
https.proxyHost=
https.proxyPort=8080
## Values used by publish examples
org.name=The Coffee Break
org.description=Purveyor of the finest coffees. Established 1950
person.name=Jane Doe
phone.number=(800) 555-1212
email.address=jane.doe@TheCoffeeBreak.ru
classification.scheme=ntis-gov:naics:1997
classification.name=All Other Specialty Food Stores
classification.value=445299
service.name=My Service Name
service.description=My Service Description
svcbinding.description=My Service Binding Description
svcbinding.accessURI=http://TheCoffeeBreak.ru:8080/sb/
## Values used by postal address examples
postal.taxonomy.filenames=postalconcepts.xml
postal.scheme.name=MyPostalAddressScheme
postal.scheme.description=A ClassificationScheme for My PostalAddressMappings
postal.classification.name=postalAddress
postal.classification.value=postalAddress
postal.scheme.link=http://unrealcompany.ru/PostalScheme.html
postal.scheme.linkdesc=My PostalAddress Scheme
postal.org.name=The Postal Coffee Break
postal.person.name=Jane Postal
postal.email.address=jane.postal@ThePostalCoffeeBreak.ru
postal.streetNumber=99
postal.street=Imaginary Ave. Suite 33
postal.city=Imaginary City
postal.state=NY
postal.country=USA
postal.postalCode=00000
postal.type=
# Values used by JAXRPublishConcept example
concept.name=HelloConcept
concept.description=Concept for Hello Service
link.uri=http://localhost:8080/hello-jaxws/hello?WSDL
link.description=Hello WSDL document
# Values used by JAXRPublishHelloOrg example
wsdlorg.name=Hello Organization
wsdlorg.description=Organization with a Hello Service
wsdlorg.person.name=Duke
wsdlorg.person.description=Owner of Hello Service
wsdlorg.phone=111-222-3333
wsdlorg.email.address=duke@hello.ru
wsdlorg.svc.name=JAX-RPC Hello Service
wsdlorg.svc.description=Says Hello
wsdlorg.svcbnd.description=Service binding for Hello Service
wsdlorg.svcbnd.uri=http://localhost:8080/hello-jaxws/hello





Obtain all the registry objects owned by the user and displays their keys, names, and descriptions

 
 
/*
 * Copyright 2007 Sun Microsystems, Inc.
 * All rights reserved.  You may not modify, use,
 * reproduce, or distribute this software except in
 * compliance with  the terms of the License at:
 * http://developer.sun.ru/berkeley_license.html
 */
/*
Copyright 1994-2006 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:
 
* Redistribution 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 MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY 
DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING 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. 
*/

import javax.xml.registry.Connection;
import javax.xml.registry.ConnectionFactory;
import javax.xml.registry.RegistryService;
import javax.xml.registry.BusinessQueryManager;
import javax.xml.registry.BulkResponse;
import javax.xml.registry.JAXRException;
import javax.xml.registry.infomodel.RegistryObject;
import java.net.PasswordAuthentication;
import java.util.ResourceBundle;
import java.util.Properties;
import java.util.HashSet;
import java.util.Collection;

/**
 * The JAXRGetMyObjects class consists of a main method, a
 * makeConnection method, an executeQuery method, and some
 * private helper methods. It obtains all the registry
 * objects owned by the user and displays their keys, names,
 * and descriptions.
 */
public class JAXRGetMyObjects {
    Connection connection = null;
    public JAXRGetMyObjects() {
    }
    public static void main(String[] args) {
        ResourceBundle bundle = ResourceBundle.getBundle("JAXRExamples");
        String queryURL = bundle.getString("query.url");
        String publishURL = bundle.getString("publish.url");
        String username = bundle.getString("registry.username");
        String password = bundle.getString("registry.password");
        JAXRGetMyObjects jq = new JAXRGetMyObjects();
        jq.makeConnection(queryURL, publishURL);
        jq.executeQuery(username, password);
    }
    /**
     * Establishes a connection to a registry.
     *
     * @param queryUrl        the URL of the query registry
     * @param publishUrl        the URL of the publish registry
     */
    public void makeConnection(
        String queryUrl,
        String publishUrl) {
        /*
         * Specify proxy information in case you
         *  are going beyond your firewall.
         */
        ResourceBundle bundle = ResourceBundle.getBundle("JAXRExamples");
        String httpProxyHost = bundle.getString("http.proxyHost");
        String httpProxyPort = bundle.getString("http.proxyPort");
        String httpsProxyHost = bundle.getString("https.proxyHost");
        String httpsProxyPort = bundle.getString("https.proxyPort");
        /*
         * Define connection configuration properties.
         * For simple queries, you need the query URL.
         */
        Properties props = new Properties();
        props.setProperty("javax.xml.registry.queryManagerURL", queryUrl);
        props.setProperty("javax.xml.registry.lifeCycleManagerURL", publishUrl);
        props.setProperty("com.sun.xml.registry.http.proxyHost", httpProxyHost);
        props.setProperty("com.sun.xml.registry.http.proxyPort", httpProxyPort);
        props.setProperty(
                "com.sun.xml.registry.https.proxyHost",
                httpsProxyHost);
        props.setProperty(
                "com.sun.xml.registry.https.proxyPort",
                httpsProxyPort);
        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) {
                }
            }
        }
    }
    /**
     * Searches for objects owned by the user and
     * displays data about them.
     *
     * @param username  the username for the registry
     * @param password  the password for the registry
     */
    public void executeQuery(
        String username,
        String password) {
        RegistryService rs = null;
        BusinessQueryManager bqm = null;
        try {
            // Get registry service and query manager
            rs = connection.getRegistryService();
            bqm = rs.getBusinessQueryManager();
            System.out.println("Got registry service and " + "query manager");
            // Get authorization from the registry
            PasswordAuthentication passwdAuth = new PasswordAuthentication(
                        username,
                        password.toCharArray());
            HashSet<PasswordAuthentication> creds = new HashSet<PasswordAuthentication>();
            creds.add(passwdAuth);
            connection.setCredentials(creds);
            System.out.println("Established security credentials");
            // Get all objects owned by me
            BulkResponse response = bqm.getRegistryObjects();
            Collection objects = response.getCollection();
            // Display information on the objects found
            if (objects.isEmpty()) {
                System.out.println("No objects found");
            } else {
                for (Object o : objects) {
                    RegistryObject obj = (RegistryObject) o;
                    System.out.println("Object key id: " + getKey(obj));
                    System.out.println("Object name is: " + getName(obj));
                    System.out.println(
                            "Object description is: " + getDescription(obj));
                    // Print spacer between objects
                    System.out.println(" --- ");
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // At end, close connection to registry
            if (connection != null) {
                try {
                    connection.close();
                } catch (JAXRException je) {
                }
            }
        }
    }
    /**
     * Returns the name value for a registry object.
     *
     * @param ro        a RegistryObject
     * @return                the String value
     */
    private 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
     */
    private 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
     */
    private String getKey(RegistryObject ro) throws JAXRException {
        try {
            return ro.getKey()
                     .getId();
        } catch (NullPointerException npe) {
            return "No Key";
        }
    }
}

//////////////////////////////
//
//    File: JAXRExamples.properties
//
//////////////////////////////
## Registry Server:
query.url=http://localhost:8080/RegistryServer/
publish.url=http://localhost:8080/RegistryServer/
registry.username=testuser
registry.password=testuser
## HTTP and HTTPS proxy host and port
http.proxyHost=
http.proxyPort=8080
https.proxyHost=
https.proxyPort=8080
## Values used by publish examples
org.name=The Coffee Break
org.description=Purveyor of the finest coffees. Established 1950
person.name=Jane Doe
phone.number=(800) 555-1212
email.address=jane.doe@TheCoffeeBreak.ru
classification.scheme=ntis-gov:naics:1997
classification.name=All Other Specialty Food Stores
classification.value=445299
service.name=My Service Name
service.description=My Service Description
svcbinding.description=My Service Binding Description
svcbinding.accessURI=http://TheCoffeeBreak.ru:8080/sb/
## Values used by postal address examples
postal.taxonomy.filenames=postalconcepts.xml
postal.scheme.name=MyPostalAddressScheme
postal.scheme.description=A ClassificationScheme for My PostalAddressMappings
postal.classification.name=postalAddress
postal.classification.value=postalAddress
postal.scheme.link=http://unrealcompany.ru/PostalScheme.html
postal.scheme.linkdesc=My PostalAddress Scheme
postal.org.name=The Postal Coffee Break
postal.person.name=Jane Postal
postal.email.address=jane.postal@ThePostalCoffeeBreak.ru
postal.streetNumber=99
postal.street=Imaginary Ave. Suite 33
postal.city=Imaginary City
postal.state=NY
postal.country=USA
postal.postalCode=00000
postal.type=
# Values used by JAXRPublishConcept example
concept.name=HelloConcept
concept.description=Concept for Hello Service
link.uri=http://localhost:8080/hello-jaxws/hello?WSDL
link.description=Hello WSDL document
# Values used by JAXRPublishHelloOrg example
wsdlorg.name=Hello Organization
wsdlorg.description=Organization with a Hello Service
wsdlorg.person.name=Duke
wsdlorg.person.description=Owner of Hello Service
wsdlorg.phone=111-222-3333
wsdlorg.email.address=duke@hello.ru
wsdlorg.svc.name=JAX-RPC Hello Service
wsdlorg.svc.description=Says Hello
wsdlorg.svcbnd.description=Service binding for Hello Service
wsdlorg.svcbnd.uri=http://localhost:8080/hello-jaxws/hello





Search a registry for organizations that offer services based on technical specifications that take the form of WSDL documents

 
 
/*
 * Copyright 2007 Sun Microsystems, Inc.
 * All rights reserved.  You may not modify, use,
 * reproduce, or distribute this software except in
 * compliance with  the terms of the License at:
 * http://developer.sun.ru/berkeley_license.html
 */
/*
Copyright 1994-2006 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:
 
* Redistribution 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 MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY 
DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING 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. 
*/

import javax.xml.registry.Connection;
import javax.xml.registry.ConnectionFactory;
import javax.xml.registry.RegistryService;
import javax.xml.registry.BusinessLifeCycleManager;
import javax.xml.registry.LifeCycleManager;
import javax.xml.registry.BusinessQueryManager;
import javax.xml.registry.BulkResponse;
import javax.xml.registry.JAXRException;
import javax.xml.registry.infomodel.RegistryObject;
import javax.xml.registry.infomodel.Organization;
import javax.xml.registry.infomodel.ClassificationScheme;
import javax.xml.registry.infomodel.Classification;
import javax.xml.registry.infomodel.Concept;
import javax.xml.registry.infomodel.ExternalLink;
import java.util.ResourceBundle;
import java.util.Properties;
import java.util.Collection;
import java.util.ArrayList;

/**
 * The JAXRQueryByWSDLClassification class consists of a main
 * method, a makeConnection method, an executeQuery method, and
 * some private helper methods. It searches a registry for
 * information about organizations that offer services based
 * on technical specifications that take the form of WSDL
 * documents. Use the query-string argument to limit the search
 * to certain specification concept names.
 */
public class JAXRQueryByWSDLClassification {
    Connection connection = null;
    public JAXRQueryByWSDLClassification() {
    }
    public static void main(String[] args) {
        ResourceBundle bundle = ResourceBundle.getBundle("JAXRExamples");
        String queryURL = bundle.getString("query.url");
        String publishURL = bundle.getString("publish.url");
        if (args.length < 1) {
            System.out.println(
                    "Argument required: " + "-Dquery-string=<value>");
            System.exit(1);
        }
        String queryString = args[0];
        System.out.println("Query string is " + queryString);
        JAXRQueryByWSDLClassification jq = new JAXRQueryByWSDLClassification();
        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
     */
    public void makeConnection(
        String queryUrl,
        String publishUrl) {
        /*
         * Specify proxy information in case you
         *  are going beyond your firewall.
         */
        ResourceBundle bundle = ResourceBundle.getBundle("JAXRExamples");
        String httpProxyHost = bundle.getString("http.proxyHost");
        String httpProxyPort = bundle.getString("http.proxyPort");
        String httpsProxyHost = bundle.getString("https.proxyHost");
        String httpsProxyPort = bundle.getString("https.proxyPort");
        /*
         * Define connection configuration properties.
         * For simple queries, you need the query URL.
         * To use a life cycle manager, you need the publish URL.
         */
        Properties props = new Properties();
        props.setProperty("javax.xml.registry.queryManagerURL", queryUrl);
        props.setProperty("javax.xml.registry.lifeCycleManagerURL", publishUrl);
        props.setProperty("com.sun.xml.registry.http.proxyHost", httpProxyHost);
        props.setProperty("com.sun.xml.registry.http.proxyPort", httpProxyPort);
        props.setProperty(
                "com.sun.xml.registry.https.proxyHost",
                httpsProxyHost);
        props.setProperty(
                "com.sun.xml.registry.https.proxyPort",
                httpsProxyPort);
        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) {
                }
            }
        }
    }
    /**
     * Searches for organizations using a WSDL
     * classification and displays data about them.
     *
     * @param qString        the string argument
     */
    public void executeQuery(String qString) {
        RegistryService rs = null;
        BusinessQueryManager bqm = null;
        BusinessLifeCycleManager blcm = null;
        try {
            // Get registry service and managers
            rs = connection.getRegistryService();
            bqm = rs.getBusinessQueryManager();
            blcm = rs.getBusinessLifeCycleManager();
            System.out.println(
                    "Got registry service, query "
                    + "manager, and lifecycle manager");
            ResourceBundle bundle = ResourceBundle.getBundle("JAXRExamples");
            /*
             * Find the uddi-org:types classification scheme defined
             * by the UDDI specification, using well-known key id.
             */
            String uuid_types = "uuid:C1ACF26D-9672-4404-9D70-39B756E62AB4";
            ClassificationScheme uddiOrgTypes = (ClassificationScheme) bqm
                .getRegistryObject(
                        uuid_types,
                        LifeCycleManager.CLASSIFICATION_SCHEME);
            // Define name pattern
            Collection<String> namePatterns = new ArrayList<String>();
            namePatterns.add("%" + qString + "%");
            /*
             * Create a classification, specifying the scheme
             *  and the taxonomy name and value defined for WSDL
             *  documents by the UDDI specification.
             */
            Classification wsdlSpecClassification = blcm.createClassification(
                        uddiOrgTypes,
                        blcm.createInternationalString("wsdlSpec"),
                        "wsdlSpec");
            Collection<Classification> classifications = new ArrayList<Classification>();
            classifications.add(wsdlSpecClassification);
            // Find concepts
            BulkResponse br = bqm.findConcepts(
                        null,
                        namePatterns,
                        classifications,
                        null,
                        null);
            Collection specConcepts = br.getCollection();
            // Display information about the concepts found
            int numConcepts = 0;
            if (specConcepts.isEmpty()) {
                System.out.println("No WSDL specification concepts found");
            } else {
                for (Object sc : specConcepts) {
                    numConcepts++;
                    Concept concept = (Concept) sc;
                    String name = getName(concept);
                    Collection links = concept.getExternalLinks();
                    System.out.println(
                            "\nSpecification Concept:\n\tName: " + name
                            + "\n\tKey: " + getKey(concept)
                            + "\n\tDescription: " + getDescription(concept));
                    if (links.size() > 0) {
                        ExternalLink link = (ExternalLink) links.iterator()
                                                                .next();
                        System.out.println(
                                "\tURL of WSDL document: ""
                                + link.getExternalURI() + """);
                    }
                    // Find organizations that use this concept
                    Collection<Concept> specConcepts1 = new ArrayList<Concept>();
                    specConcepts1.add(concept);
                    br = bqm.findOrganizations(
                                null,
                                null,
                                null,
                                specConcepts1,
                                null,
                                null);
                    Collection orgs = br.getCollection();
                    // Display information about organizations
                    if (!(orgs.isEmpty())) {
                        System.out.println(
                                "Organizations using the "" + name
                                + "" WSDL Specification:");
                    } else {
                        System.out.println(
                                "No Organizations using the "" + name
                                + "" WSDL Specification");
                    }
                    for (Object o : orgs) {
                        Organization org = (Organization) o;
                        System.out.println(
                                "\tName: " + getName(org) + "\n\tKey: "
                                + getKey(org) + "\n\tDescription: "
                                + getDescription(org));
                    }
                }
            }
            System.out.println("Found " + numConcepts + " concepts");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // At end, close connection to registry
            if (connection != null) {
                try {
                    connection.close();
                } catch (JAXRException je) {
                }
            }
        }
    }
    /**
     * Returns the name value for a registry object.
     *
     * @param ro        a RegistryObject
     * @return                the String value
     */
    private 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
     */
    private 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
     */
    private String getKey(RegistryObject ro) throws JAXRException {
        try {
            return ro.getKey()
                     .getId();
        } catch (NullPointerException npe) {
            return "No Key";
        }
    }
}

//////////////////////////////
//
//    File: JAXRExamples.properties
//
//////////////////////////////
## Registry Server:
query.url=http://localhost:8080/RegistryServer/
publish.url=http://localhost:8080/RegistryServer/
registry.username=testuser
registry.password=testuser
## HTTP and HTTPS proxy host and port
http.proxyHost=
http.proxyPort=8080
https.proxyHost=
https.proxyPort=8080
## Values used by publish examples
org.name=The Coffee Break
org.description=Purveyor of the finest coffees. Established 1950
person.name=Jane Doe
phone.number=(800) 555-1212
email.address=jane.doe@TheCoffeeBreak.ru
classification.scheme=ntis-gov:naics:1997
classification.name=All Other Specialty Food Stores
classification.value=445299
service.name=My Service Name
service.description=My Service Description
svcbinding.description=My Service Binding Description
svcbinding.accessURI=http://TheCoffeeBreak.ru:8080/sb/
## Values used by postal address examples
postal.taxonomy.filenames=postalconcepts.xml
postal.scheme.name=MyPostalAddressScheme
postal.scheme.description=A ClassificationScheme for My PostalAddressMappings
postal.classification.name=postalAddress
postal.classification.value=postalAddress
postal.scheme.link=http://unrealcompany.ru/PostalScheme.html
postal.scheme.linkdesc=My PostalAddress Scheme
postal.org.name=The Postal Coffee Break
postal.person.name=Jane Postal
postal.email.address=jane.postal@ThePostalCoffeeBreak.ru
postal.streetNumber=99
postal.street=Imaginary Ave. Suite 33
postal.city=Imaginary City
postal.state=NY
postal.country=USA
postal.postalCode=00000
postal.type=
# Values used by JAXRPublishConcept example
concept.name=HelloConcept
concept.description=Concept for Hello Service
link.uri=http://localhost:8080/hello-jaxws/hello?WSDL
link.description=Hello WSDL document
# Values used by JAXRPublishHelloOrg example
wsdlorg.name=Hello Organization
wsdlorg.description=Organization with a Hello Service
wsdlorg.person.name=Duke
wsdlorg.person.description=Owner of Hello Service
wsdlorg.phone=111-222-3333
wsdlorg.email.address=duke@hello.ru
wsdlorg.svc.name=JAX-RPC Hello Service
wsdlorg.svc.description=Says Hello
wsdlorg.svcbnd.description=Service binding for Hello Service
wsdlorg.svcbnd.uri=http://localhost:8080/hello-jaxws/hello





Searches a registry for information about organizations whose names contain a user-supplied string

 
/*
 * Copyright 2007 Sun Microsystems, Inc.
 * All rights reserved.  You may not modify, use,
 * reproduce, or distribute this software except in
 * compliance with  the terms of the License at:
 * http://developer.sun.ru/berkeley_license.html
 */
/*
Copyright 1994-2006 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:
 
* Redistribution 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 MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY 
DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING 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. 
*/

import javax.xml.registry.Connection;
import javax.xml.registry.ConnectionFactory;
import javax.xml.registry.RegistryService;
import javax.xml.registry.BusinessQueryManager;
import javax.xml.registry.BulkResponse;
import javax.xml.registry.JAXRException;
import static javax.xml.registry.FindQualifier.SORT_BY_NAME_DESC;
import javax.xml.registry.infomodel.RegistryObject;
import javax.xml.registry.infomodel.Organization;
import javax.xml.registry.infomodel.User;
import javax.xml.registry.infomodel.PersonName;
import javax.xml.registry.infomodel.TelephoneNumber;
import javax.xml.registry.infomodel.EmailAddress;
import javax.xml.registry.infomodel.Service;
import javax.xml.registry.infomodel.ServiceBinding;
import javax.xml.registry.infomodel.ClassificationScheme;
import javax.xml.registry.infomodel.Classification;
import java.util.ResourceBundle;
import java.util.Properties;
import java.util.Collection;
import java.util.ArrayList;

/**
 * The JAXRQuery class consists of a main method, a
 * makeConnection method, an executeQuery method, and some
 * private helper methods. It searches a registry for
 * information about organizations whose names contain a
 * user-supplied string.
 */
public class JAXRQuery {
    Connection connection = null;
    public JAXRQuery() {
    }
    public static void main(String[] args) {
        ResourceBundle registryBundle = ResourceBundle.getBundle(
                    "JAXRExamples");
        String queryURL = registryBundle.getString("query.url");
        String publishURL = registryBundle.getString("publish.url");
        if (args.length < 1) {
            System.out.println(
                    "Argument required: " + "-Dquery-string=<value>");
            System.exit(1);
        }
        String queryString = args[0];
        System.out.println("Query string is " + queryString);
        JAXRQuery jq = new JAXRQuery();
        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
     */
    public void makeConnection(
        String queryUrl,
        String publishUrl) {
        /*
         * Specify proxy information in case you
         *  are going beyond your firewall.
         */
        ResourceBundle registryBundle = ResourceBundle.getBundle(
                    "JAXRExamples");
        String httpProxyHost = registryBundle.getString("http.proxyHost");
        String httpProxyPort = registryBundle.getString("http.proxyPort");
        /*
         * Define connection configuration properties.
         * For simple queries, you need the query URL.
         */
        Properties props = new Properties();
        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) {
                }
            }
        }
    }
    /**
     * Searches for organizations containing a string and
     * displays data about them.
     *
     * @param qString        the string argument
     */
    public void executeQuery(String qString) {
        RegistryService rs = null;
        BusinessQueryManager bqm = 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<String> findQualifiers = new ArrayList<String>();
            findQualifiers.add(SORT_BY_NAME_DESC);
            Collection<String> namePatterns = new ArrayList<String>();
            namePatterns.add("%" + qString + "%");
            // Find orgs with names that contain qString
            BulkResponse response = bqm.findOrganizations(
                        findQualifiers,
                        namePatterns,
                        null,
                        null,
                        null,
                        null);
            Collection orgs = response.getCollection();
            // Display information about the organizations found
            int numOrgs = 0;
            if (orgs.isEmpty()) {
                System.out.println("No organizations found");
            } else {
                for (Object o : orgs) {
                    numOrgs++;
                    Organization org = (Organization) o;
                    System.out.println("Org name: " + getName(org));
                    System.out.println(
                            "Org description: " + getDescription(org));
                    System.out.println("Org key id: " + getKey(org));
                    // Display primary contact information
                    User pc = org.getPrimaryContact();
                    if (pc != null) {
                        PersonName pcName = pc.getPersonName();
                        System.out.println(
                                " Contact name: " + pcName.getFullName());
                        Collection phNums = pc.getTelephoneNumbers(null);
                        for (Object n : phNums) {
                            TelephoneNumber num = (TelephoneNumber) n;
                            System.out.println(
                                    "  Phone number: " + num.getNumber());
                        }
                        Collection eAddrs = pc.getEmailAddresses();
                        for (Object a : eAddrs) {
                            EmailAddress eAd = (EmailAddress) a;
                            System.out.println(
                                    "  Email address: " + eAd.getAddress());
                        }
                    }
                    // Display service and binding information
                    Collection services = org.getServices();
                    for (Object s : services) {
                        Service svc = (Service) s;
                        System.out.println(" Service name: " + getName(svc));
                        System.out.println(
                                " Service description: " + getDescription(svc));
                        Collection serviceBindings = svc.getServiceBindings();
                        for (Object b : serviceBindings) {
                            ServiceBinding sb = (ServiceBinding) b;
                            System.out.println(
                                    "  Binding description: "
                                    + getDescription(sb));
                            System.out.println(
                                    "  Access URI: " + sb.getAccessURI());
                        }
                    }
                    // Print spacer between organizations
                    System.out.println(" --- ");
                }
            }
            System.out.println("Found " + numOrgs + " organization(s)");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // At end, close connection to registry
            if (connection != null) {
                try {
                    connection.close();
                } catch (JAXRException je) {
                }
            }
        }
    }
    /**
     * Returns the name value for a registry object.
     *
     * @param ro        a RegistryObject
     * @return                the String value
     */
    private 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
     */
    private 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
     */
    private String getKey(RegistryObject ro) throws JAXRException {
        try {
            return ro.getKey()
                     .getId();
        } catch (NullPointerException npe) {
            return "No Key";
        }
    }
}

//////////////////////////////
//
//    File: JAXRExamples.properties
//
//////////////////////////////
## Registry Server:
query.url=http://localhost:8080/RegistryServer/
publish.url=http://localhost:8080/RegistryServer/
registry.username=testuser
registry.password=testuser
## HTTP and HTTPS proxy host and port
http.proxyHost=
http.proxyPort=8080
https.proxyHost=
https.proxyPort=8080
## Values used by publish examples
org.name=The Coffee Break
org.description=Purveyor of the finest coffees. Established 1950
person.name=Jane Doe
phone.number=(800) 555-1212
email.address=jane.doe@TheCoffeeBreak.ru
classification.scheme=ntis-gov:naics:1997
classification.name=All Other Specialty Food Stores
classification.value=445299
service.name=My Service Name
service.description=My Service Description
svcbinding.description=My Service Binding Description
svcbinding.accessURI=http://TheCoffeeBreak.ru:8080/sb/
## Values used by postal address examples
postal.taxonomy.filenames=postalconcepts.xml
postal.scheme.name=MyPostalAddressScheme
postal.scheme.description=A ClassificationScheme for My PostalAddressMappings
postal.classification.name=postalAddress
postal.classification.value=postalAddress
postal.scheme.link=http://unrealcompany.ru/PostalScheme.html
postal.scheme.linkdesc=My PostalAddress Scheme
postal.org.name=The Postal Coffee Break
postal.person.name=Jane Postal
postal.email.address=jane.postal@ThePostalCoffeeBreak.ru
postal.streetNumber=99
postal.street=Imaginary Ave. Suite 33
postal.city=Imaginary City
postal.state=NY
postal.country=USA
postal.postalCode=00000
postal.type=
# Values used by JAXRPublishConcept example
concept.name=HelloConcept
concept.description=Concept for Hello Service
link.uri=http://localhost:8080/hello-jaxws/hello?WSDL
link.description=Hello WSDL document
# Values used by JAXRPublishHelloOrg example
wsdlorg.name=Hello Organization
wsdlorg.description=Organization with a Hello Service
wsdlorg.person.name=Duke
wsdlorg.person.description=Owner of Hello Service
wsdlorg.phone=111-222-3333
wsdlorg.email.address=duke@hello.ru
wsdlorg.svc.name=JAX-RPC Hello Service
wsdlorg.svc.description=Says Hello
wsdlorg.svcbnd.description=Service binding for Hello Service
wsdlorg.svcbnd.uri=http://localhost:8080/hello-jaxws/hello





Using isEmpty from String class

 

public class StringDemo {
  public static void main(String[] args) {
    String myString = "";
    if (myString.isEmpty()) {
      System.out.println("Empty");
    } else {
      System.out.println("Not empty");
    }
  }
}
//Empty