JAXRDeleteScheme.java Source code

Java tutorial

Introduction

Here is the source code for JAXRDeleteScheme.java

Source

    /*
     * 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.com/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.com
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.com: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.com/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.com
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.com
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