예제 #1
0
  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();
      }
    }
  }
예제 #2
0
  /** 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);
  }