/* * JBoss, Home of Professional Open Source. * Copyright 2008, Red Hat Middleware LLC, and individual contributors * as indicated by the @author tags. See the copyright.txt file in the * distribution for a full listing of individual contributors. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.jboss.test.jaxr.scout.query.infomodel; import org.jboss.test.jaxr.scout.JaxrBaseTestCase; import org.jboss.test.jaxr.scout.util.ScoutUtil; import javax.xml.registry.BulkResponse; import javax.xml.registry.BusinessLifeCycleManager; import javax.xml.registry.BusinessQueryManager; import javax.xml.registry.Connection; import javax.xml.registry.JAXRException; import javax.xml.registry.LifeCycleManager; 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 java.util.ArrayList; import java.util.Collection; import java.util.Iterator; /** * Tests FindAssociation using JAXR API * @author <mailto:Anil.Saldhana@jboss.org>Anil Saldhana * @since Mar 9, 2005 */ public class JaxrFindAssociationsTestCase extends JaxrBaseTestCase { public void testFindAssociations() throws JAXRException { String orgSource = "Source Organization"; String type = "Implements"; Key savekey = null; Key assockey = null; BusinessQueryManager bqm2 = null; BusinessLifeCycleManager blm2 = null; Collection associationKeys = null; Collection sourceKeys = null; Collection targetKeys = null; String targetId = null; String sourceId = null; String orgTarget = "Target Organization"; try { login(); getJAXREssentials(); // Authenticate second user Connection con2 = loginSecondUser(); RegistryService rs2 = con2.getRegistryService(); blm2 = rs2.getBusinessLifeCycleManager(); bqm2 = rs2.getBusinessQueryManager(); Organization source = blm.createOrganization(blm.createInternationalString(orgSource)); Organization target = blm2.createOrganization(blm.createInternationalString(orgTarget)); // publish the source organization Collection orgs = new ArrayList(); orgs.add(source); br = blm.saveOrganizations(orgs); if (br.getExceptions() != null) { fail(" Source:Save Orgs failed"); } sourceKeys = br.getCollection(); Iterator iter = sourceKeys.iterator(); while (iter.hasNext()) { savekey = (Key)iter.next(); } sourceId = savekey.getId(); String objectType = LifeCycleManager.ORGANIZATION; Organization pubSource = (Organization)bqm.getRegistryObject(sourceId, objectType); assertNotNull(pubSource.getName().getValue()); // publish the target orgs.clear(); orgs.add(target); br = blm2.saveOrganizations(orgs); if (br.getExceptions() != null) { fail(" Target:Save Orgs failed"); } targetKeys = br.getCollection(); iter = targetKeys.iterator(); while (iter.hasNext()) { savekey = (Key)iter.next(); } targetId = savekey.getId(); Organization pubTarget = (Organization)bqm2.getRegistryObject(targetId, objectType); Concept associationType = getAssociationConcept(type); if (associationType == null) fail(" getAssociationConcept returned null associationType"); Association a = blm.createAssociation(pubTarget, associationType); a.setSourceObject(pubSource); blm.confirmAssociation(a); //First user blm2.confirmAssociation(a); //Second user // publish Association Collection associations = new ArrayList(); associations.add(a); // Second user saves the association. br = blm2.saveAssociations(associations, false); if (br.getExceptions() != null) { fail("Error:Save Associations failed \n"); } BulkResponse targetAssoc = bqm.findCallerAssociations(null, new Boolean(true), new Boolean(true), null); if (targetAssoc.getExceptions() == null) { Collection targetCol = targetAssoc.getCollection(); if (targetCol.size() > 0) { iter = targetCol.iterator(); while (iter.hasNext()) { Association a1 = (Association)iter.next(); Organization o = (Organization)a1.getSourceObject(); o = (Organization)a1.getTargetObject(); Concept atype = a1.getAssociationType(); assertNotNull("Concept Type stored in Association", atype); } } } br = null; Collection associationTypes = new ArrayList(); associationTypes.add(type); br = bqm.findAssociations(null, sourceId, targetId, null); if (br.getExceptions() != null) { fail("Error: findAssociations failed "); } associations = null; associations = br.getCollection(); if (associations.size() > 0) { iter = associations.iterator(); while (iter.hasNext()) { Association a1 = (Association)iter.next(); assockey = a1.getKey(); ScoutUtil.validateAssociation(a1,orgSource); } } } catch (Exception e) { e.printStackTrace(); fail(" Test failed "); } finally { //Clean Up try { if (assockey != null) { associationKeys = new ArrayList(); associationKeys.add(assockey); blm.deleteAssociations(associationKeys); } blm2.deleteOrganizations(targetKeys); blm.deleteOrganizations(sourceKeys); } catch (JAXRException ex) { ex.printStackTrace(); fail("Error: Cleanup failed"); } } } // end of method }