Package org.apache.ws.scout.registry.qa

Source Code of org.apache.ws.scout.registry.qa.JAXR030AssociationsTest

/**
*
* Copyright 2004 The Apache Software Foundation
*
*  Licensed under the Apache License, Version 2.0 (the "License");
*  you may not use this file except in compliance with the License.
*  You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
*  Unless required by applicable law or agreed to in writing, software
*  distributed under the License is distributed on an "AS IS" BASIS,
*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*  See the License for the specific language governing permissions and
*  limitations under the License.
*/
package org.apache.ws.scout.registry.qa;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

import javax.xml.registry.BulkResponse;
import javax.xml.registry.BusinessQueryManager;
import javax.xml.registry.FindQualifier;
import javax.xml.registry.JAXRException;
import javax.xml.registry.JAXRResponse;
import javax.xml.registry.RegistryService;
import javax.xml.registry.infomodel.Association;
import javax.xml.registry.infomodel.Concept;
import javax.xml.registry.infomodel.Key;
import javax.xml.registry.infomodel.Organization;
import javax.xml.registry.infomodel.RegistryObject;

import junit.framework.JUnit4TestAdapter;

import org.apache.ws.scout.BaseTestCase;
import org.apache.ws.scout.Creator;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;


/**
* Tests Publish, Delete (and indirectly, find) for associations.
*
* You can comment out the deletion portion and use Open source UDDI Browser
* <http://www.uddibrowser.org> to check your intermediate results.
*
* Based on query/publish tests written by <a href="mailto:anil@apache.org">Anil
* Saldhana</a>.
*
* @author <a href="mailto:dbhole@redhat.com">Deepak Bhole</a>
* @author <a href="mailto:anil@apache.org">Anil Saldhana</a>
*
* @since Sep 27, 2005
*/
public class JAXR030AssociationsTest extends BaseTestCase {

  private BusinessQueryManager bqm = null;

  String associationType = "AssociationType/RelatedTo";
  private static String tempSrcOrgName = "Apache Source Org -- APACHE SCOUT TEST";
  private static String tempTgtOrgName = "Apache Target Org -- APACHE SCOUT TEST";

  private Organization sOrg=null;
  private Organization tOrg=null;

    @Before
  public void setUp() {
    super.setUp();
  }

    @After
  public void tearDown() {
    super.tearDown();
  }

  /**
   * Tests publishing and deleting of associations.
   *
   * Do not break this into testPublish(), testDelete(), etc. Order is
   * important, and not all jvms can guarantee order since the JUnit framework
   * uses getMethods() to gather test methods, and getMethods() does not
   * guarantee order.
   */
    @Test
  public void testPublishFindAndDeleteAssociation() {
    login();
   
    try {
     
      RegistryService rs = connection.getRegistryService();
      bqm = rs.getBusinessQueryManager();
      blm = rs.getBusinessLifeCycleManager();
     
      //deleting any pre-exisiting organizations
      ArrayList<Organization> orgs = findTempOrgs();
      for (Organization organization : orgs) {
        Collection<Key> keys = new ArrayList<Key>();
        keys.add(organization.getKey());
        blm.deleteOrganizations(keys);
      }
     
            Creator creator = new Creator(blm);

      System.out.println("\nCreating temporary organizations...\n");
            Organization org1 = creator.createOrganization(tempSrcOrgName);
            Organization org2 = creator.createOrganization(tempTgtOrgName);
            Collection<Organization> organizations = new ArrayList<Organization>();
            organizations.add(org1);
            organizations.add(org2);
            blm.saveOrganizations(organizations);
          
      System.out.println("\nSearching for newly created organizations...\n");
      ArrayList<Organization> newOrgs = findTempOrgs();
      sOrg = newOrgs.get(0);
      tOrg = newOrgs.get(1);

      System.out.println("\nCreating association...\n");
      createAssociation(sOrg, tOrg);

      // All created ... now try to delete.
      String associationID = findAndDeleteAssociation();
     
      //Let us look for associations now
      BulkResponse associationResp =
        bqm.findCallerAssociations(null, Boolean.TRUE, Boolean.TRUE, null);
     
      if(associationResp.getExceptions() != null)
      {
        System.out.println(associationResp.getExceptions());
        fail("Association lookup failed");
      }
      else
      {
        Collection retAssocs = associationResp.getCollection();
                if (retAssocs.size() == 0)
                {
                    //Pass
                } else
                {
                   Iterator iterAss = retAssocs.iterator();
                   while(iterAss.hasNext())
                   {
                      Association assc = (Association) iterAss.next();
                      if(assc.getKey().getId().equals(associationID)) {
                        System.out.println("found: " + associationID);
                          fail("Deleted Association found");
                      }
                   }
                }
      }
      
    } catch (Exception e) {
      e.printStackTrace();
      fail(e.getMessage());
    }
  }
   
  private void createAssociation(Organization sOrg, Organization tOrg)
      throws JAXRException {

    Concept type = bqm.findConceptByPath(associationType);
    Association association = blm.createAssociation(tOrg, type);
    sOrg.addAssociation(association);

    ArrayList<Association> associations = new ArrayList<Association>();
    associations.add(association);

    BulkResponse br = blm.saveAssociations(associations, true);
    if (br.getStatus() == JAXRResponse.STATUS_SUCCESS) {
      System.out.println("Association Saved");
      Collection coll = br.getCollection();
      Iterator iter = coll.iterator();
      while (iter.hasNext()) {
        System.out.println("Saved Key=" + iter.next());
      }// end while
    } else {
      System.err.println("JAXRExceptions " + "occurred during save:");
      Collection exceptions = br.getExceptions();
      Iterator iter = exceptions.iterator();
      while (iter.hasNext()) {
        Exception e = (Exception) iter.next();
        System.err.println(e.toString());
      }
            deleteTempOrgs();
    }
  }

  private String findAndDeleteAssociation() throws JAXRException {

    String id = null;
   
    String sOrgID = sOrg.getKey().getId();
    String tOrgID = tOrg.getKey().getId();

    Collection<String> findQualifiers = new ArrayList<String>();
    findQualifiers.add(FindQualifier.SORT_BY_NAME_ASC);

    Concept type = bqm.findConceptByPath(associationType);
    ArrayList<Concept> conceptTypes = new ArrayList<Concept>(1);
    conceptTypes.add(type);

    BulkResponse br = bqm.findAssociations(findQualifiers, sOrgID, tOrgID,
        conceptTypes);
    Collection associations = br.getCollection();

    if (associations == null) {
      System.out.println("\n-- Matched 0 orgs");
            fail("Expected 1 association");

    } else {
      System.out.println("\n-- Matched " + associations.size()
          + " associations --\n");
            assertEquals(1,associations.size());

      // then step through them
      for (Iterator conceptIter = associations.iterator(); conceptIter
          .hasNext();) {
        Association a = (Association) conceptIter.next();

        System.out.println("Id: " + a.getKey().getId());
        System.out.println("Name: " + a.getName().getValue());

        // Print spacer between messages
        System.out.println(" --- ");

        id = a.getKey().getId();
        deleteAssociation(a.getKey());

        System.out.println("\n ============================== \n");
      }
    }
    return id;
  }

  private void deleteAssociation(Key key) throws JAXRException {

    String id = key.getId();

    System.out.println("\nDeleting association with id " + id + "\n");

    Collection<Key> keys = new ArrayList<Key>();
    keys.add(key);
    BulkResponse response = blm.deleteAssociations(keys);

        assertEquals(BulkResponse.STATUS_SUCCESS, response.getStatus());
    Collection exceptions = response.getExceptions();
    if (exceptions == null) {
      Collection retKeys = response.getCollection();
      Iterator keyIter = retKeys.iterator();
      javax.xml.registry.infomodel.Key orgKey = null;
      if (keyIter.hasNext()) {
        orgKey = (javax.xml.registry.infomodel.Key) keyIter.next();
        id = orgKey.getId();
        System.out
            .println("Association with ID=" + id + " was deleted");
      }
    }
  }

  private ArrayList<Organization> findTempOrgs() throws JAXRException {

    ArrayList<Organization> toReturn = new ArrayList<Organization>();

    // Define find qualifiers and name patterns
    Collection<String> findQualifiers = new ArrayList<String>();
    findQualifiers.add(FindQualifier.SORT_BY_NAME_ASC);
    Collection<String> namePatterns = new ArrayList<String>();
    if ("3.0".equals(uddiversion)) {
      namePatterns.add(tempSrcOrgName);
      namePatterns.add(tempTgtOrgName);
    } else {
      namePatterns.add("%" + tempSrcOrgName + "%");
      namePatterns.add("%" + tempTgtOrgName + "%");
    }
    // Find based upon qualifier type and values
    System.out.println("\n-- searching the registry --\n");
    BulkResponse response = bqm.findOrganizations(findQualifiers,
        namePatterns, null, null, null, null);

    // check how many organisation we have matched
    Collection orgs = response.getCollection();
    if (orgs == null) {
      System.out.println("\n-- Matched 0 orgs");

    } else {
      System.out.println("\n-- Matched " + orgs.size()
          + " organisations --\n");

      // then step through them
      for (Iterator orgIter = orgs.iterator(); orgIter.hasNext();) {
        Organization org = (Organization) orgIter.next();

        System.out.println("Org name: " + getName(org));
        System.out.println("Org description: " + getDescription(org));
        System.out.println("Org key id: " + getKey(org));

        if (getName(org).indexOf(tempSrcOrgName) > -1) {
          toReturn.add(0, org);
        } else {
          toReturn.add(1, org);
        }

        // Print spacer between organizations
        System.out.println("\n ============================== \n");
      }
    }// end else

    return toReturn;
  }

  private void deleteTempOrgs() {

    try {

      Key sOrgKey = sOrg.getKey();
      Key tOrgKey = tOrg.getKey();

      System.out.println("\nDeleting temporary organizations with ids "
          + sOrgKey + " and " + tOrgKey + "\n");

      Collection<Key> keys = new ArrayList<Key>();
      keys.add(sOrgKey);
      keys.add(tOrgKey);
      BulkResponse response = blm.deleteOrganizations(keys);

      Collection exceptions = response.getExceptions();
      if (exceptions == null) {
        Collection retKeys = response.getCollection();
        Iterator keyIter = retKeys.iterator();
        Key orgKey = null;
        while (keyIter.hasNext()) {
          orgKey = (javax.xml.registry.infomodel.Key) keyIter.next();
          String id = orgKey.getId();
          System.out.println("Organization with ID=" + id
              + " was deleted");
        }
      }
    } catch (JAXRException jaxre) {
      jaxre.printStackTrace();
    }
  }

  private static String getName(RegistryObject ro) throws JAXRException {
    if (ro != null && ro.getName() != null) {
      return ro.getName().getValue();
    }
    return "";
  }

  private static String getDescription(RegistryObject ro)
      throws JAXRException {
    if (ro != null && ro.getDescription() != null) {
      return ro.getDescription().getValue();
    }
    return "";
  }

  private static String getKey(RegistryObject ro) throws JAXRException {
    if (ro != null && ro.getKey() != null) {
      return ro.getKey().getId();
    }
    return "";
  }
   
    public static junit.framework.Test suite() {
        return new JUnit4TestAdapter(JAXR030AssociationsTest.class);
    }
}
TOP

Related Classes of org.apache.ws.scout.registry.qa.JAXR030AssociationsTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.