public void testSimplePackageBuildNoErrors() throws Exception { RulesRepository repo = getRepo(); PackageItem pkg = repo.createPackage("testSimplePackageBuildNoErrors", ""); AssetItem model = pkg.addAsset("model", "qed"); model.updateFormat(AssetFormats.MODEL); model.updateBinaryContentAttachment(this.getClass().getResourceAsStream("/billasurf.jar")); model.checkin(""); ServiceImplementation.updateDroolsHeader( "import com.billasurf.Board\n global com.billasurf.Person customer", pkg); AssetItem rule1 = pkg.addAsset("rule_1", ""); rule1.updateFormat(AssetFormats.DRL); rule1.updateContent("rule 'rule1' \n when Board() \n then customer.setAge(42); \n end"); rule1.checkin(""); AssetItem rule2 = pkg.addAsset("rule2", ""); rule2.updateFormat(AssetFormats.DRL); rule2.updateContent("agenda-group 'q' \n when \n Board() \n then \n System.err.println(42);"); rule2.checkin(""); AssetItem rule3 = pkg.addAsset("A file", ""); rule3.updateFormat(AssetFormats.DRL); rule3.updateContent( "package testSimplePackageBuildNoErrors\n rule 'rule3' \n when \n then \n customer.setAge(43); \n end \n" + "rule 'rule4' \n when \n then \n System.err.println(44); \n end"); rule3.checkin(""); repo.save(); ContentPackageAssembler asm = new ContentPackageAssembler(pkg); assertFalse(asm.hasErrors()); assertNotNull(asm.getBinaryPackage()); Package bin = asm.getBinaryPackage(); assertEquals(pkg.getName(), bin.getName()); assertTrue(bin.isValid()); assertEquals(4, bin.getRules().length); // now create a snapshot repo.createPackageSnapshot(pkg.getName(), "SNAP_1"); // and screw up the the non snapshot one ServiceImplementation.updateDroolsHeader("koo koo ca choo", pkg); asm = new ContentPackageAssembler(pkg); assertTrue(asm.hasErrors()); // check the snapshot is kosher pkg = repo.loadPackageSnapshot(pkg.getName(), "SNAP_1"); asm = new ContentPackageAssembler(pkg); assertFalse(asm.hasErrors()); }
protected void createPackageSnapshot( String packageName, String snapshotName, boolean replaceExisting, String comment) { log.info( "USER:"******" CREATING PACKAGE SNAPSHOT for package: [" + packageName + "] snapshot name: [" + snapshotName); if (replaceExisting) { rulesRepository.removePackageSnapshot(packageName, snapshotName); } rulesRepository.createPackageSnapshot(packageName, snapshotName); PackageItem item = rulesRepository.loadPackageSnapshot(packageName, snapshotName); item.updateCheckinComment(comment); rulesRepository.save(); }
/** @deprecated in favour of {@link compareSnapshots(SnapshotComparisonPageRequest)} */ protected SnapshotDiffs compareSnapshots( String packageName, String firstSnapshotName, String secondSnapshotName) { SnapshotDiffs diffs = new SnapshotDiffs(); List<SnapshotDiff> list = new ArrayList<SnapshotDiff>(); PackageItem leftPackage = rulesRepository.loadPackageSnapshot(packageName, firstSnapshotName); PackageItem rightPackage = rulesRepository.loadPackageSnapshot(packageName, secondSnapshotName); // Older one has to be on the left. if (isRightOlderThanLeft(leftPackage, rightPackage)) { PackageItem temp = leftPackage; leftPackage = rightPackage; rightPackage = temp; diffs.leftName = secondSnapshotName; diffs.rightName = firstSnapshotName; } else { diffs.leftName = firstSnapshotName; diffs.rightName = secondSnapshotName; } Iterator<AssetItem> leftExistingIter = leftPackage.getAssets(); while (leftExistingIter.hasNext()) { AssetItem left = leftExistingIter.next(); if (isPackageItemDeleted(rightPackage, left)) { SnapshotDiff diff = new SnapshotDiff(); diff.name = left.getName(); diff.diffType = SnapshotDiff.TYPE_DELETED; diff.leftUuid = left.getUUID(); list.add(diff); } } Iterator<AssetItem> rightExistingIter = rightPackage.getAssets(); while (rightExistingIter.hasNext()) { AssetItem right = rightExistingIter.next(); AssetItem left = null; if (right != null && leftPackage.containsAsset(right.getName())) { left = leftPackage.loadAsset(right.getName()); } // Asset is deleted or added if (right == null || left == null) { SnapshotDiff diff = new SnapshotDiff(); if (left == null) { diff.name = right.getName(); diff.diffType = SnapshotDiff.TYPE_ADDED; diff.rightUuid = right.getUUID(); } list.add(diff); } else if (isAssetArchivedOrRestored(right, left)) { // Has the asset // been archived // or restored SnapshotDiff diff = new SnapshotDiff(); diff.name = right.getName(); diff.leftUuid = left.getUUID(); diff.rightUuid = right.getUUID(); if (left.isArchived()) { diff.diffType = SnapshotDiff.TYPE_RESTORED; } else { diff.diffType = SnapshotDiff.TYPE_ARCHIVED; } list.add(diff); } else if (isAssetItemUpdated(right, left)) { // Has the asset been // updated SnapshotDiff diff = new SnapshotDiff(); diff.name = right.getName(); diff.leftUuid = left.getUUID(); diff.rightUuid = right.getUUID(); diff.diffType = SnapshotDiff.TYPE_UPDATED; list.add(diff); } } diffs.diffs = list.toArray(new SnapshotDiff[list.size()]); return diffs; }