Node node = getRepo().getSession().getNode("/drools:repository/drools:package_area/globalArea/"); Node assetNode = node.getNode("assets").addNode("testKurt","drools:assetNodeType"); Calendar lastModified = Calendar.getInstance(); assetNode.setProperty("drools:lastModified", lastModified); getRepo().getSession().save(); assetNode.checkin(); findAndPrintNodeName(assetNode); getRepo().getSession().save(); assetNode.checkin(); Workspace workspace = getRepo().getSession().getWorkspace(); String srcPath = "/drools:repository/drools:package_area/globalArea/assets/testKurt"; String path = "/drools:repository/drools:package_area/defaultPackage/assets/testKurt"; workspace.clone(workspace.getName(), srcPath, path, false); findAndPrintNodeName(assetNode); String packageName = getDefaultPackage().getName(); try { Node snaps = getRepo().getAreaNode( "drools:packagesnapshot_area" ); if ( !snaps.hasNode( packageName ) ) { snaps.addNode( packageName, "nt:folder" ); getRepo().save(); getRepo().getSession().getWorkspace().copy( source, newName ); } catch ( Exception e ) { fail();
@Test public void testGetPackageItemHistoricalForShareableAsset() throws Exception { AssetItem asset = loadGlobalArea().addAsset("testGetPackageItemHistoricalForShareableAsset", "test content"); AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName()); String name = getDefaultPackage().getName(); getRepo().createModuleSnapshot(getDefaultPackage().getName(), "SNAP"); ModuleItem pkgSnap = getRepo().loadModuleSnapshot(getDefaultPackage().getName(), "SNAP"); AssetItem assetSnap = pkgSnap.loadAsset("testGetPackageItemHistoricalForShareableAsset"); ModuleItem pkgSnap1 = assetSnap.getModule(); assertTrue(pkgSnap1.isSnapshot()); assertTrue(pkgSnap.isSnapshot()); assertFalse(getDefaultPackage().isSnapshot()); assertEquals(getDefaultPackage().getName(), pkgSnap1.getName()); AssetItem linkedAsset1 = getDefaultPackage().loadAsset("testGetPackageItemHistoricalForShareableAsset"); ModuleItem linkedPkg = linkedAsset1.getModule(); assertFalse(linkedPkg.isSnapshot()); assertFalse(getDefaultPackage().isSnapshot()); assertEquals(getDefaultPackage().getName(), linkedPkg.getName()); linkedAsset = getDefaultPackage().loadAsset("testGetPackageItemHistoricalForShareableAsset"); assertNotNull(linkedAsset.getModule()); assertEquals(4, iteratorToList(linkedIt).size()); asset = getDefaultPackage().loadAsset("testGetPackageItemHistoricalForShareableAsset"); AssetHistoryIterator it = asset.getHistory();
@Test public void testUpdateCategoriesForShareableAsset() { getRepo().loadCategory("/").addCategory("testUpdateCategoriesForShareableAssetTag1", "la"); getRepo().loadCategory("/").addCategory("testUpdateCategoriesForShareableAssetTag2", "la"); AssetItem asset = getRepo().loadGlobalArea().addAsset("testUpdateCategoriesForShareableAsset", "desc"); AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName()); String[] cats = new String[] {"testUpdateCategoriesForShareableAssetTag1", "testUpdateCategoriesForShareableAssetTag2"}; linkedAsset.updateCategoryList(cats); linkedAsset.checkin("aaa"); asset = getRepo().loadGlobalArea().loadAsset("testUpdateCategoriesForShareableAsset"); assertEquals(2, asset.getCategories().size()); for (Iterator iter = asset.getCategories().iterator(); iter.hasNext();) { CategoryItem cat = (CategoryItem)iter.next(); assertTrue(cat.getName().startsWith("testUpdateCategoriesForShareableAssetTag")); } }
@Test public void testRemoveShareableAsset() throws Exception { AssetItem asset = loadGlobalArea().addAsset("testRemoveShareableAssetAsset", "desc"); asset.updateContent("la"); asset.checkin("initial"); AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName()); linkedAsset.updateContent("laa"); linkedAsset.checkin("second"); // REVISIT: the shared asset can not be removed unless no asset refers to it. // asset.remove(); linkedAsset.remove(); try { AssetItem linkedAsset1 = getDefaultPackage().loadAsset("testRemoveShareableAssetAsset"); fail("Did not get expected exception"); } catch (RulesRepositoryException e) { } AssetItem asset1 = loadGlobalArea().loadAsset("testRemoveShareableAssetAsset"); assertTrue(asset.getUUID().equals(asset1.getUUID())); }
@Test public void testUpdateStringPropertyForShareableAsset() throws Exception { AssetItem asset = loadGlobalArea().addAsset("testUpdateStringPropertyForShareableAsset", "desc"); asset.checkin("initial"); AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName()); linkedAsset.updateContent("new content"); linkedAsset.checkin(""); linkedAsset.updateStringProperty("Anything", "AField"); assertEquals("Anything", linkedAsset.getStringProperty("AField")); assertEquals("Anything", asset.getStringProperty("AField")); asset.updateStringProperty("More", "AField", false); asset.updateContent("more content"); asset.checkin(""); asset = getRepo().loadAssetByUUID(asset.getUUID()); assertEquals("More", asset.getStringProperty("AField")); assertEquals("more content", asset.getContent()); linkedAsset = getRepo().loadAssetByUUID(linkedAsset.getUUID()); assertEquals("More", linkedAsset.getStringProperty("AField")); assertEquals("more content", asset.getContent()); } /*
private ModuleItem loadGlobalArea() { return getRepo().loadGlobalArea(); }
@Test public void testHistoryIteratorForShareableAsset() throws Exception { AssetItem asset = getRepo().loadGlobalArea().addAsset("testHistoryIteratorForShareableAsset", "desc"); asset.checkin("version0"); AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName()); linkedAsset = getRepo().loadAssetByUUID(linkedAsset.getUUID()); linkedAsset.updateContent("wo"); linkedAsset.checkin("version2"); asset = getRepo().loadAssetByUUID(asset.getUUID()); asset.updateContent("ya"); asset.checkin("version3"); Iterator it = asset.getHistory(); for (int i = 0; i < 3; i++) { assertTrue(it.hasNext()); it.next(); } }
@Test public void testGetContentLengthForShareableAsset() throws Exception { AssetItem ruleItem = loadGlobalArea().addAsset("testGetContentLengthForShareableAsset", "desc"); ruleItem.checkin("initial"); AssetItem linkedRuleItem = getDefaultPackage().addAssetImportedFromGlobalArea(ruleItem.getName()); assertEquals(0, ruleItem.getContentLength()); assertEquals(0, linkedRuleItem.getContentLength()); ruleItem.updateContent("boo"); ruleItem.checkin(""); assertEquals("boo".getBytes().length, ruleItem.getContentLength()); assertEquals("boo".getBytes().length, linkedRuleItem.getContentLength()); linkedRuleItem.updateContent("booo"); linkedRuleItem.checkin(""); assertEquals("booo".getBytes().length, ruleItem.getContentLength()); assertEquals("booo".getBytes().length, linkedRuleItem.getContentLength()); ruleItem = loadGlobalArea().addAsset("testGetContentLengthForShareableAsset2", ""); ruleItem.checkin("initial"); linkedRuleItem = getDefaultPackage().addAssetImportedFromGlobalArea(ruleItem.getName()); assertEquals(0, ruleItem.getContentLength()); assertEquals(0, linkedRuleItem.getContentLength()); linkedRuleItem.updateBinaryContentAttachment(new ByteArrayInputStream("foobar".getBytes())); linkedRuleItem.checkin(""); assertEquals("foobar".getBytes().length, ruleItem.getContentLength()); assertEquals("foobar".getBytes().length, linkedRuleItem.getContentLength()); ruleItem.updateBinaryContentAttachment(new ByteArrayInputStream("foobarr".getBytes())); ruleItem.checkin(""); assertEquals("foobarr".getBytes().length, ruleItem.getContentLength()); assertEquals("foobarr".getBytes().length, linkedRuleItem.getContentLength()); }
private void findAndPrintNodeName(Node node) throws ValueFormatException, PathNotFoundException, RepositoryException { String UUID = node.getProperty("jcr:baseVersion").getString(); Node nodeFound = getRepo().getSession().getNodeByUUID(UUID); System.out.println("Node:" + nodeFound.getName()); }
@Test public void testGetDateEffectiveForShareableAsset() { AssetItem asset = getRepo().loadGlobalArea().addAsset("testGetDateEffectiveForShareableAsset", "desc"); AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName()); // it should be initialized to null assertTrue(linkedAsset.getDateEffective() == null); // now try setting it, then retrieving it Calendar cal = Calendar.getInstance(); linkedAsset.updateDateEffective(cal); Calendar cal2 = linkedAsset.getDateEffective(); //Comparing two Calendar instances entirely doesn't work as JackRabbit persists Calendar objects as Strings using //http://svn.apache.org/repos/asf/jackrabbit/trunk/jackrabbit-jcr-commons/src/main/java/org/apache/jackrabbit/util/ISO8601.java //Not all Calendar properties are taken into consideration so we only check the getTime() values. assertEquals( cal.getTimeInMillis(), cal2.getTimeInMillis() ); }
Thread.sleep(500); // MN: need this sleep to get the correct date AssetItem ruleItem = loadGlobalArea().addAsset("testCreateShareableAssetAsset", "desc"); ruleItem.updateContent("la"); ruleItem.checkin("initial"); AssetItem linkedRuleItem = getDefaultPackage().addAssetImportedFromGlobalArea(ruleItem.getName()); linkedRuleItem.updateContent("laa"); linkedRuleItem.checkin("second"); assertEquals(loadGlobalArea().getUUID(), ruleItem.getModule().getUUID());
@Test public void testGetContentForShareableAsset() { AssetItem asset = getRepo().loadGlobalArea().addAsset("testGetContentForShareableAsset", "test content"); AssetItem linkedAsset = getRepo().loadDefaultModule().addAssetImportedFromGlobalArea(asset.getName()); linkedAsset.updateContent("test content"); linkedAsset.updateFormat("drl"); assertNotNull(linkedAsset.getNode()); assertEquals("test content", linkedAsset.getContent()); assertEquals("test content", asset.getContent()); assertFalse(linkedAsset.isBinary()); assertFalse(asset.isBinary()); assertNotNull(linkedAsset.getBinaryContentAsBytes()); assertNotNull(linkedAsset.getBinaryContentAttachment()); String content = new String(linkedAsset.getBinaryContentAsBytes()); assertNotNull(content); content = new String(asset.getBinaryContentAsBytes()); assertNotNull(content); }
@Test public void testGetDateExpiredForShareableAsset() { AssetItem asset = getRepo().loadGlobalArea().addAsset("testGetDateExpiredForShareableAsset", "desc"); AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName()); // it should be initialized to null assertTrue(linkedAsset.getDateExpired() == null); // now try setting it, then retrieving it Calendar cal = Calendar.getInstance(); linkedAsset.updateDateExpired(cal); Calendar cal2 = linkedAsset.getDateExpired(); //Comparing two Calendar instances entirely doesn't work as JackRabbit persists Calendar objects as Strings using //http://svn.apache.org/repos/asf/jackrabbit/trunk/jackrabbit-jcr-commons/src/main/java/org/apache/jackrabbit/util/ISO8601.java //Not all Calendar properties are taken into consideration so we only check the getTime() values. assertEquals( cal.getTimeInMillis(), cal2.getTimeInMillis() ); }
@Test public void testStatusStufftestRemoveTagForShareableAsset() { getRepo().createState("testStatusStufftestRemoveTagForShareableAssetStatus"); AssetItem asset = getRepo().loadGlobalArea().addAsset("testStatusStufftestRemoveTagForShareableAsset", "desc"); AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName()); StateItem stateItem1 = linkedAsset.getState(); assertEquals(StateItem.DRAFT_STATE_NAME, stateItem1.getName()); assertEquals(getRepo().getState(StateItem.DRAFT_STATE_NAME), linkedAsset.getState()); assertEquals(StateItem.DRAFT_STATE_NAME, linkedAsset.getStateDescription()); linkedAsset.updateState("testStatusStufftestRemoveTagForShareableAssetStatus"); assertEquals("testStatusStufftestRemoveTagForShareableAssetStatus", linkedAsset.getState().getName()); }
@Test public void testGetFormatForShareableAsset() throws Exception { AssetItem asset = getRepo().loadGlobalArea().addAsset("testGetFormatForShareableAsset", "desc"); asset.checkin("version0"); AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName()); linkedAsset.updateContent("la"); assertEquals(AssetItem.DEFAULT_CONTENT_FORMAT, linkedAsset.getFormat()); assertTrue(linkedAsset.getNode().hasProperty(AssetItem.CONTENT_PROPERTY_NAME)); assertFalse(linkedAsset.getNode().hasProperty(AssetItem.CONTENT_PROPERTY_BINARY_NAME)); linkedAsset.updateFormat("blah"); assertEquals("blah", linkedAsset.getFormat()); }
@Test public void testCategoriesForShareableAsset() { getRepo().loadCategory("/").addCategory("testCategoriesTag", "description"); getRepo().loadCategory("/").addCategory("testCategoriesTag2", "description"); AssetItem asset = getRepo().loadGlobalArea().addAsset("testCategoriesForShareableAsset", "desc"); AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName()); linkedAsset.addCategory("testCategoriesTag"); List tags = linkedAsset.getCategories(); assertEquals(1, tags.size()); assertEquals("testCategoriesTag", ((CategoryItem)tags.get(0)).getName()); linkedAsset.addCategory("testCategoriesTag2"); tags = linkedAsset.getCategories(); assertEquals(2, tags.size()); linkedAsset.checkin("woot"); // now test retrieve by tags List result = getRepo().findAssetsByCategory("testCategoriesTag", 0, -1).assets; assertEquals(1, result.size()); AssetItem retItem = (AssetItem)result.get(0); assertEquals("testCategoriesForShareableAsset", retItem.getName()); asset.updateContent("foo"); asset.checkin("latest"); assertTrue(asset.getCategories().size() > 0); assertNotNull(asset.getCategorySummary()); assertEquals("testCategoriesTag testCategoriesTag2 ", asset.getCategorySummary()); result = getRepo().findAssetsByCategory("testCategoriesTag2", 0, -1).assets; assertEquals(1, result.size()); asset = (AssetItem)result.get(0); assertEquals(2, asset.getCategories().size()); }
@Test public void testRemoveTagForShareableAsset() { getRepo().loadCategory("/").addCategory("testRemoveTagForShareableAssetTag1", "la"); getRepo().loadCategory("/").addCategory("testRemoveTagForShareableAssetTag2", "description"); getRepo().loadCategory("/").addCategory("testRemoveTagForShareableAssetTag3", "description"); AssetItem asset = getRepo().loadGlobalArea().addAsset("testRemoveTagForShareableAsset", "desc"); AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName()); getRepo().save(); getRepo().loadCategory("testRemoveTagForShareableAssetTag2").remove(); fail("should not be able to remove"); } catch (RulesRepositoryException e) {
@Test public void testSaveAndCheckinDescriptionAndTitleForShareableAsset() throws Exception { AssetItem asset = getRepo().loadGlobalArea().addAsset("testSaveAndCheckinDescriptionAndTitleForShareableAsset", "desc"); asset.checkin("version0"); AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName()); // it should be "" to begin with assertEquals("desc", linkedAsset.getDescription()); linkedAsset.updateDescription("test description"); assertEquals("test description", linkedAsset.getDescription()); assertTrue(getRepo().getSession().hasPendingChanges()); linkedAsset.updateTitle("This is a title"); assertTrue(getRepo().getSession().hasPendingChanges()); linkedAsset.checkin("ya"); // we can save without a checkin getRepo().getSession().save(); assertFalse(getRepo().getSession().hasPendingChanges()); try { linkedAsset.getPrecedingVersion().updateTitle("baaad"); fail("should not be able to do this"); } catch (RulesRepositoryException e) { assertNotNull(e.getMessage()); } }
@Test public void testAnonymousPropertiesForShareableAsset() { AssetItem asset = getRepo().loadGlobalArea().addAsset("testAnonymousPropertiesForShareableAsset", "desc"); asset.checkin("version0"); AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName()); linkedAsset.updateUserProperty("fooBar", "value"); assertEquals("value", linkedAsset.getUserProperty("fooBar")); linkedAsset.checkin("lalalala"); try { linkedAsset.updateUserProperty("drools:content", "whee"); fail("should not be able to set built in properties this way."); } catch (IllegalArgumentException e) { assertNotNull(e.getMessage()); } }
@Test public void testGetTitleForShareableAsset() { AssetItem asset = getRepo().loadGlobalArea().addAsset("testGetTitleForShareableAsset", "desc"); asset.checkin("version0"); AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName()); assertEquals("testGetTitleForShareableAsset", linkedAsset.getName()); assertEquals("testGetTitleForShareableAsset", asset.getName()); // NOTE: Linked AssetItem does not have its own Title property. assertEquals("testGetTitleForShareableAsset", linkedAsset.getTitle()); assertEquals("testGetTitleForShareableAsset", asset.getTitle()); }