public void testSaveUnownedAssociations() throws Exception { String folderId = null; String farrukhExtrinsicObjectId = null; String farrukhAssociationId = null; String nikolaExtrinsicObjectId = null; String nikolaAssociationId = null; String keystorePath = RegistryProperties.getInstance().getProperty("omar.security.keystoreFile"); String storepass = RegistryProperties.getInstance().getProperty("omar.security.keystorePassword"); ConnectionFactory connFactory = JAXRUtility.getConnectionFactory(); Properties props = new Properties(); props.put("javax.xml.registry.queryManagerURL", regSoapUrl); connFactory.setProperties(props); try { // create connection for Farrukh Connection farrukhConnection = connFactory.createConnection(); String farrukhAlias = "urn:freebxml:registry:predefinedusers:registryoperator"; Set farrukhCredentials = getCredentialsFromKeystore(keystorePath, storepass, farrukhAlias, farrukhAlias); farrukhConnection.setCredentials(farrukhCredentials); BusinessQueryManagerImpl farrukhBQM = (BusinessQueryManagerImpl) farrukhConnection.getRegistryService().getBusinessQueryManager(); LifeCycleManager farrukhLCM = farrukhConnection.getRegistryService().getBusinessLifeCycleManager(); // Create the folder as Farrukh RegistryPackage folder = farrukhLCM.createRegistryPackage("Farrukh's Folder"); folderId = folder.getKey().getId(); System.out.println("Created folder with id '" + folderId + "'"); // using farrukh's connection, saveObjects() with extrinsic object and hasMember association File file = createTempFile(true); FileDataSource fds = new FileDataSource(file); DataHandler dataHandler = new DataHandler(fds); ExtrinsicObject farrukhExtrinsicObject = (ExtrinsicObject) farrukhLCM.createExtrinsicObject(dataHandler); String eoId = Utility.getInstance().createId(); farrukhExtrinsicObject.getKey().setId(eoId); farrukhExtrinsicObject.setName( farrukhLCM.createInternationalString("Farrukh's Extrinsic Object")); Concept associationConcept = farrukhBQM.findConceptByPath( "/" + BindingUtility.CANONICAL_CLASSIFICATION_SCHEME_LID_AssociationType + "/" + BindingUtility.CANONICAL_ASSOCIATION_TYPE_CODE_HasMember); Association farrukhAssociation = farrukhLCM.createAssociation(farrukhExtrinsicObject, associationConcept); farrukhAssociation.setSourceObject(folder); ArrayList objectsToSave = new ArrayList(); objectsToSave.add(folder); objectsToSave.add(farrukhAssociation); objectsToSave.add(farrukhExtrinsicObject); System.out.println( "Saving farrukh's extrinsic object '" + farrukhExtrinsicObject.getKey().getId() + "' under folder '" + folderId + "' with hasMember association '" + farrukhAssociation.getKey().getId() + "'"); BulkResponse br = farrukhLCM.saveObjects(objectsToSave); JAXRUtility.checkBulkResponse(br); farrukhExtrinsicObjectId = farrukhExtrinsicObject.getKey().getId(); farrukhAssociationId = farrukhAssociation.getKey().getId(); System.out.println( "Objects '" + farrukhExtrinsicObject.getKey().getId() + "' and '" + farrukhAssociation.getKey().getId() + "' saved successfully"); // create connection for Nikola Connection nikolaConnection = connFactory.createConnection(); String nikolaAlias = "urn:freebxml:registry:predefinedusers:nikola"; Set nikolaCredentials = getCredentialsFromKeystore(keystorePath, storepass, nikolaAlias, nikolaAlias); nikolaConnection.setCredentials(nikolaCredentials); BusinessQueryManagerImpl nikolaBQM = (BusinessQueryManagerImpl) nikolaConnection.getRegistryService().getBusinessQueryManager(); LifeCycleManager nikolaLCM = nikolaConnection.getRegistryService().getBusinessLifeCycleManager(); // Get the folder /*RegistryPackage*/ folder = (RegistryPackage) nikolaBQM.getRegistryObject(folderId); Assert.assertNotNull("Could not find root folder", folder); // using nikola's connection, saveObjects() with extrinsic object and hasMember association file = createTempFile(true); fds = new FileDataSource(file); dataHandler = new DataHandler(fds); ExtrinsicObject nikolaExtrinsicObject = (ExtrinsicObject) nikolaLCM.createExtrinsicObject(dataHandler); eoId = Utility.getInstance().createId(); nikolaExtrinsicObject.getKey().setId(eoId); nikolaExtrinsicObject.setName( nikolaLCM.createInternationalString("Nikola's Extrinsic Object")); associationConcept = nikolaBQM.findConceptByPath( "/" + BindingUtility.CANONICAL_CLASSIFICATION_SCHEME_LID_AssociationType + "/" + BindingUtility.CANONICAL_ASSOCIATION_TYPE_CODE_HasMember); Association nikolaAssociation = nikolaLCM.createAssociation(nikolaExtrinsicObject, associationConcept); nikolaAssociation.setSourceObject(folder); objectsToSave = new ArrayList(); objectsToSave.add(folder); objectsToSave.add(nikolaAssociation); System.out.println( "Saving nikola's extrinsic object '" + nikolaExtrinsicObject.getKey().getId() + "' under folder '" + folderId + "' with hasMember association '" + nikolaAssociation.getKey().getId() + "'"); objectsToSave.add(nikolaExtrinsicObject); br = nikolaLCM.saveObjects(objectsToSave); JAXRUtility.checkBulkResponse(br); nikolaExtrinsicObjectId = nikolaExtrinsicObject.getKey().getId(); nikolaAssociationId = nikolaAssociation.getKey().getId(); System.out.println( "Objects '" + nikolaExtrinsicObject.getKey().getId() + "' and '" + nikolaAssociation.getKey().getId() + "' saved successfully"); } finally { // remove extrinsic objects and associations as registry operator try { Connection roConnection = connFactory.createConnection(); String roAlias = "urn:freebxml:registry:predefinedusers:registryoperator"; Set roCredentials = getCredentialsFromKeystore(keystorePath, storepass, roAlias, roAlias); roConnection.setCredentials(roCredentials); LifeCycleManagerImpl roLCM = (LifeCycleManagerImpl) roConnection.getRegistryService().getBusinessLifeCycleManager(); if (folderId != null) { System.out.println("Deleting '" + folderId + "'"); HashSet keys = new HashSet(); keys.add(roLCM.createKey(folderId)); roLCM.deleteObjects(keys, null, forceRemoveRequestSlotsMap, null); System.out.println("Successfully deleted '" + folderId + "'"); } if (farrukhExtrinsicObjectId != null) { System.out.println("Deleting '" + farrukhExtrinsicObjectId + "'"); HashSet keys = new HashSet(); keys.add(roLCM.createKey(farrukhExtrinsicObjectId)); roLCM.deleteObjects(keys, null, forceRemoveRequestSlotsMap, null); System.out.println("Successfully deleted '" + farrukhExtrinsicObjectId + "'"); } if (farrukhAssociationId != null) { System.out.println("Deleting '" + farrukhAssociationId + "'"); HashSet keys = new HashSet(); keys.add(roLCM.createKey(farrukhAssociationId)); roLCM.deleteObjects(keys, null, forceRemoveRequestSlotsMap, null); System.out.println("Successfully deleted '" + farrukhAssociationId + "'"); } if (nikolaExtrinsicObjectId != null) { System.out.println("Deleting '" + nikolaExtrinsicObjectId + "'"); HashSet keys = new HashSet(); keys.add(roLCM.createKey(nikolaExtrinsicObjectId)); roLCM.deleteObjects(keys, null, forceRemoveRequestSlotsMap, null); System.out.println("Successfully deleted '" + nikolaExtrinsicObjectId + "'"); } if (nikolaAssociationId != null) { System.out.println("Deleting '" + nikolaAssociationId + "'"); HashSet keys = new HashSet(); keys.add(roLCM.createKey(nikolaAssociationId)); roLCM.deleteObjects(keys, null, forceRemoveRequestSlotsMap, null); System.out.println("Successfully deleted '" + nikolaAssociationId + "'"); } } catch (Throwable t) { System.err.println( "Failed to remove some or all of the test objects. Exception: " + t.getMessage()); t.printStackTrace(); } } }
/** Tests saving a externalLink directly and not through its clasified object. */ public void testExternalLinkOnly() throws Exception { String pkg1Id = "urn:freebxml:registry:test:ExternalLinkTest.testExternalLinkOnly:pkg1"; String exl1Id = "urn:freebxml:registry:test:ExternalLinkTest.testExternalLinkOnly:exl1"; // Delete in case object is around from past failed run ArrayList deleteObjects = new ArrayList(); deleteObjects.add(lcm.createKey(pkg1Id)); try { lcm.deleteObjects(deleteObjects, null, forceRemoveRequestSlotsMap, null); } catch (ObjectsNotFoundException e) { // ObjectsNotFoundException may be ok. } deleteObjects.clear(); deleteObjects.add(lcm.createKey(exl1Id)); try { lcm.deleteObjects(deleteObjects, null, forceRemoveRequestSlotsMap, null); } catch (ObjectsNotFoundException e) { // ObjectsNotFoundException may be ok. } // Create a package w/o externalLink RegistryPackage pkg1 = lcm.createRegistryPackage(pkg1Id + ":name"); pkg1.getKey().setId(pkg1Id); Collection saveObjects = new ArrayList(); saveObjects.add(pkg1); BulkResponse br = lcm.saveObjects(saveObjects, dontVersionSlotsMap); assertResponseSuccess("Saving pkg1 failed.", br); // Create a externalLink for that pkg ExternalLink exl1 = lcm.createExternalLink("http://www.yahoo.com", "External Link"); exl1.getKey().setId(exl1Id); pkg1.addExternalLink(exl1); // Save the pkg (and the externalLink) saveObjects.clear(); saveObjects.add(pkg1); br = lcm.saveObjects(saveObjects, dontVersionSlotsMap); assertResponseSuccess("Saving pck1 failed.", br); // Read the pkg back, check external link RegistryPackage pkg2 = (RegistryPackage) getDQM().getRegistryObject(pkg1Id, LifeCycleManager.REGISTRY_PACKAGE); assertNotNull("Unable to read back pkg2", pkg2); assertEquals( "pkg2 does not have correct number of ExternalLinks", 1, pkg2.getExternalLinks().size()); // Modify the externalLink only, save it separately exl1.setName(lcm.createInternationalString(exl1 + ":name")); saveObjects.clear(); saveObjects.add(exl1); br = lcm.saveObjects(saveObjects, dontVersionSlotsMap); assertResponseSuccess("Saving exl1 failed.", br); // Read the pkg back, check external link modified pkg2 = (RegistryPackage) getDQM().getRegistryObject(pkg1Id, LifeCycleManager.REGISTRY_PACKAGE); assertNotNull("Unable to read back pkg2", pkg2); assertEquals( "pkg2 does not have correct number of ExternalLinks", 1, pkg2.getExternalLinks().size()); assertEquals( "exl1 has not been saved", exl1 + ":name", ((ExternalLink) pkg1.getExternalLinks().toArray()[0]).getName().getValue()); // Now delete pkg1 and exl1 deleteObjects = new ArrayList(); deleteObjects.add(pkg1.getKey()); deleteObjects.add(exl1.getKey()); lcm.deleteObjects(deleteObjects, null, forceRemoveRequestSlotsMap, null); // Now read back bto verify that they were deleted pkg1 = (RegistryPackage) dqm.getRegistryObject(pkg1Id); assertNull("pkg1 was not deleted", pkg1); }