[jboss-svn-commits] JBL Code SVN: r30097 - in labs/jbossrules/trunk: drools-guvnor/src/main/java/org/drools/guvnor/client/explorer and 7 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Nov 11 02:14:46 EST 2009
Author: jervisliu
Date: 2009-11-11 02:14:46 -0500 (Wed, 11 Nov 2009)
New Revision: 30097
Added:
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/common/GlobalAreaAssetSelector.java
labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/ShareableAssetItemTest.java
Removed:
labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/LinkedAssetItem.java
labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/LinkedAssetItemTest.java
Modified:
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/PackagesPanel.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/messages/Constants.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/messages/Constants.properties
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryService.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryServiceAsync.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/NewAssetWizard.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/RepositoryServiceServlet.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java
labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/ServiceImplementationTest.java
labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/AssetItemIterator.java
labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/PackageItem.java
labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/PackageIterator.java
labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RepositorySessionUtil.java
labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RulesRepository.java
labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/PackageItemTest.java
labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RulesRepositoryTest.java
Log:
GUVNOR-91: Create a global area that can be referred to from all packages
Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/common/GlobalAreaAssetSelector.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/common/GlobalAreaAssetSelector.java (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/common/GlobalAreaAssetSelector.java 2009-11-11 07:14:46 UTC (rev 30097)
@@ -0,0 +1,84 @@
+package org.drools.guvnor.client.common;
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+
+import org.drools.guvnor.client.rpc.RepositoryServiceFactory;
+
+import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.DeferredCommand;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.ListBox;
+import com.google.gwt.user.client.ui.ChangeListener;
+import com.google.gwt.user.client.ui.Widget;
+
+/**
+ * A rule package selector widget.
+ */
+public class GlobalAreaAssetSelector extends Composite {
+
+ /** Used to remember what the "current asset" we are working in is...
+ * Should be the one the user has most recently dealt with... */
+ public static String currentlySelectedAsset;
+
+ private ListBox assetList;
+
+
+ public GlobalAreaAssetSelector() {
+ assetList = new ListBox();
+
+ DeferredCommand.addCommand(new Command() {
+ public void execute() {
+ loadAssetList();
+ }
+ });
+
+
+ initWidget( assetList );
+ }
+
+ private void loadAssetList() {
+ RepositoryServiceFactory.getService().listRulesInPackage("globalArea", new GenericCallback<String[]>() {
+
+ public void onSuccess(String[] list) {
+ for ( int i = 0; i < list.length; i++ ) {
+ assetList.addItem( list[i] );
+ if (currentlySelectedAsset != null &&
+ list[i].equals( currentlySelectedAsset )) {
+ assetList.setSelectedIndex( i );
+ }
+ }
+ assetList.addChangeListener(new ChangeListener() {
+ public void onChange(Widget sender) {
+ currentlySelectedAsset = getSelectedAsset();
+ }
+ });
+
+ }
+
+ });
+ }
+
+ /**
+ * Returns the selected package.
+ */
+ public String getSelectedAsset() {
+ return assetList.getItemText( assetList.getSelectedIndex() );
+ }
+
+
+}
\ No newline at end of file
Property changes on: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/common/GlobalAreaAssetSelector.java
___________________________________________________________________
Name: svn:keywords
+ Rev Date
Name: svn:eol-style
+ native
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/PackagesPanel.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/PackagesPanel.java 2009-11-11 06:29:14 UTC (rev 30096)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/explorer/PackagesPanel.java 2009-11-11 07:14:46 UTC (rev 30097)
@@ -190,17 +190,28 @@
}
private Widget packageExplorer(final ExplorerViewCenterPanel tabPanel) {
- TreeNode root = new TreeNode(constants.Packages());
- root.setAttribute("icon", "images/silk/chart_organisation.gif"); //NON-NLS
+ TreeNode rootNode = new TreeNode(constants.Admin());
- final TreePanel panel = genericExplorerWidget(root);
+
+ TreeNode packageRootNode = new TreeNode(constants.Packages());
+ packageRootNode.setAttribute("icon", "images/silk/chart_organisation.gif"); //NON-NLS
+ loadPackages(packageRootNode);
+
+/* TreeNode globalRootNode = new TreeNode("Global area");
+ globalRootNode.setAttribute("icon", "images/silk/chart_organisation.gif"); //NON-NLS
+ globalRootNode.setAttribute("id", "globalarea");*/
+ loadGlobal(rootNode);
+
+ rootNode.appendChild(packageRootNode);
+ //rootNode.appendChild(globalRootNode);
+
+ final TreePanel panel = genericExplorerWidget(rootNode);
+ panel.setRootVisible(false);
-
- loadPackages(root);
-
+
TreePanelListener treePanelListener = new TreePanelListenerAdapter() {
public void onClick(TreeNode node, EventObject e) {
- if (node.getUserObject() instanceof PackageConfigData) {
+ if (node.getUserObject() instanceof PackageConfigData && !"global".equals(((PackageConfigData)node.getUserObject()).name)) {
PackageConfigData pc = (PackageConfigData) node.getUserObject();
RulePackageSelector.currentlySelectedPackage = pc.name;
@@ -300,11 +311,28 @@
buildPkgTree(root, hf);
}
- root.expand();
+ //root.expand();
}
});
}
+ private void loadGlobal(final TreeNode root) {
+ RepositoryServiceFactory.getService().loadGlobalPackage(
+ new GenericCallback<PackageConfigData>() {
+ public void onSuccess(PackageConfigData value) {
+
+ TreeNode globalRootNode = ExplorerNodeConfig.getPackageItemStructure("Global Area", value.uuid);
+ globalRootNode.setUserObject(value);
+
+ globalRootNode.setAttribute("icon", "images/silk/chart_organisation.gif"); //NON-NLS
+ globalRootNode.setAttribute("id", "globalarea");
+
+ root.appendChild(globalRootNode);
+
+ }
+ });
+ }
+
private void buildPkgTree(TreeNode root, PackageHierarchy.Folder fldr) {
if (fldr.conf != null) {
root.appendChild(loadPackage(fldr.name, fldr.conf));
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/messages/Constants.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/messages/Constants.java 2009-11-11 06:29:14 UTC (rev 30096)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/messages/Constants.java 2009-11-11 07:14:46 UTC (rev 30097)
@@ -1976,4 +1976,11 @@
String BuiltInSelector();
String BuildPackageUsingCustomSelectorSelector();
+
+ String CreateInPackage();
+
+ String CreateInGlobalArea();
+
+ String AssetToImport();
+
}
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/messages/Constants.properties
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/messages/Constants.properties 2009-11-11 06:29:14 UTC (rev 30096)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/messages/Constants.properties 2009-11-11 07:14:46 UTC (rev 30097)
@@ -925,10 +925,10 @@
PleaseSelectARow=Please select a row
AddRowBeforeSelectedRow=Add row before selected row...
CreateNewAsset=Create new:
-CreateLinkedAsset=Create linked asset:
+CreateLinkedAsset=Import asset from global area:
CreateLinkedAssetFromUUID=UUID of the existing asset:
NoteNewLinkedAsset=NOTE:
-NewLinkedAssetDesc1=This will create a new asset that links to an existing one. To create a linked asset,
+NewLinkedAssetDesc1=This will import a shared asset from global area.
NewLinkedAssetDesc2=you need to open the existing asset that you want to link to, copy and paste its
NewLinkedAssetDesc3=UUID to the text box above.
BuildWholePackageTip=This will build the whole package.
@@ -940,4 +940,7 @@
BuildPackageUsingBuiltInSelectorStatus=When status :
BuildPackageUsingBuiltInSelectorCat=When category :
BuiltInSelector=Built-in selector
-BuildPackageUsingCustomSelectorSelector=Custom Selector :
\ No newline at end of file
+BuildPackageUsingCustomSelectorSelector=Custom Selector :
+CreateInPackage=Create in Package:
+CreateInGlobalArea=Create in Global area
+AssetToImport=Asset to import:
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryService.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryService.java 2009-11-11 06:29:14 UTC (rev 30096)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryService.java 2009-11-11 07:14:46 UTC (rev 30097)
@@ -24,6 +24,7 @@
import org.drools.guvnor.client.modeldriven.SuggestionCompletionEngine;
import org.drools.guvnor.client.modeldriven.testing.Scenario;
+import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.SerializableException;
import com.google.gwt.user.client.rpc.IsSerializable;
@@ -72,11 +73,11 @@
public String createNewRule(String ruleName, String description, String initialCategory, String initialPackage, String format) throws SerializableException;
/**
- * Creates a new rule which refers to an existing rule.
+ * Creates a new rule which is imported from global area.
* Return the UUID of the item created.
* This will not check in the rule, but just leave it as saved in the repo.
*/
- public String createNewLinkedRule(String ruleName, String linkedRuleUUID, String initialCategory, String initialPackage) throws SerializableException;
+ public String createNewImportedRule(String sharedAssetName, String initialPackage) throws SerializableException;
/**
* Delete un checked in Asset
@@ -96,6 +97,12 @@
public PackageConfigData[] listPackages();
/**
+ * This returns the global packages.
+ */
+ public PackageConfigData loadGlobalPackage();
+
+
+ /**
* This returns a list of archived packages.
*/
public PackageConfigData[] listArchivedPackages();
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryServiceAsync.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryServiceAsync.java 2009-11-11 06:29:14 UTC (rev 30096)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryServiceAsync.java 2009-11-11 07:14:46 UTC (rev 30097)
@@ -43,10 +43,11 @@
public void loadTableConfig(java.lang.String p0, AsyncCallback<org.drools.guvnor.client.rpc.TableConfig> cb);
public void createCategory(java.lang.String p0, java.lang.String p1, java.lang.String p2, AsyncCallback<java.lang.Boolean> cb);
public void createNewRule(java.lang.String p0, java.lang.String p1, java.lang.String p2, java.lang.String p3, java.lang.String p4, AsyncCallback<java.lang.String> cb);
- public void createNewLinkedRule(java.lang.String p0, java.lang.String p1, java.lang.String p2, java.lang.String p3, AsyncCallback<java.lang.String> cb);
+ public void createNewImportedRule(java.lang.String p0, java.lang.String p1, AsyncCallback<java.lang.String> cb);
public void deleteUncheckedRule(java.lang.String p0, java.lang.String p1, AsyncCallback cb);
public void clearRulesRepository(AsyncCallback cb);
public void listPackages(AsyncCallback<org.drools.guvnor.client.rpc.PackageConfigData[]> cb);
+ public void loadGlobalPackage(AsyncCallback<org.drools.guvnor.client.rpc.PackageConfigData> cb);
public void listArchivedPackages(AsyncCallback<org.drools.guvnor.client.rpc.PackageConfigData[]> cb);
public void loadRuleAsset(java.lang.String p0, AsyncCallback<org.drools.guvnor.client.rpc.RuleAsset> cb);
public void loadAssetHistory(java.lang.String p0, AsyncCallback<org.drools.guvnor.client.rpc.TableDataResult> cb);
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/NewAssetWizard.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/NewAssetWizard.java 2009-11-11 06:29:14 UTC (rev 30096)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/NewAssetWizard.java 2009-11-11 07:14:46 UTC (rev 30097)
@@ -23,6 +23,7 @@
import org.drools.guvnor.client.common.FormStyleLayout;
import org.drools.guvnor.client.common.FormStylePopup;
import org.drools.guvnor.client.common.GenericCallback;
+import org.drools.guvnor.client.common.GlobalAreaAssetSelector;
import org.drools.guvnor.client.common.LoadingPopup;
import org.drools.guvnor.client.common.RulePackageSelector;
import org.drools.guvnor.client.rpc.RepositoryServiceFactory;
@@ -56,21 +57,23 @@
private Constants constants = GWT.create(Constants.class);
private TextBox name = new TextBox();
- private TextBox linkedName = new TextBox();
- private TextBox linkedFromUUID = new TextBox();
+ private TextBox importedAssetName = new TextBox();
private TextArea description = new TextArea();
private String initialCategory;
private ListBox formatChooser = getFormatChooser();
+ RadioButton createInPackageButton = new RadioButton("creatinpackagegroup", constants.CreateInPackage());
+ RadioButton createInGlobalButton = new RadioButton("creatinpackagegroup", constants.CreateInGlobalArea());
private RulePackageSelector packageSelector = new RulePackageSelector();
- private RulePackageSelector linkedPackageSelector = new RulePackageSelector();
+ private RulePackageSelector importedPackageSelector = new RulePackageSelector();
+ private GlobalAreaAssetSelector globalAreaAssetSelector = new GlobalAreaAssetSelector();
private EditItemEvent afterCreate;
private boolean showCats;
private String format;
private final FormStyleLayout newAssetLayout = new FormStyleLayout();
- private final FormStyleLayout linkedAssetLayout = new FormStyleLayout();
+ private final FormStyleLayout importAssetLayout = new FormStyleLayout();
/** This is used when creating a new rule. */
@@ -81,22 +84,22 @@
this.afterCreate = afterCreate;
- RadioButton newPackage = new RadioButton("action", constants.CreateNewAsset()); // NON-NLS
- RadioButton importPackage = new RadioButton("action", constants.CreateLinkedAsset()); // NON-NLS
+ RadioButton newPackage = new RadioButton("layoutgroup", constants.CreateNewAsset()); // NON-NLS
+ RadioButton importPackage = new RadioButton("layoutgroup", constants.CreateLinkedAsset()); // NON-NLS
newPackage.setChecked(true);
newAssetLayout.setVisible(true);
newPackage.addClickListener(new ClickListener() {
public void onClick(Widget w) {
newAssetLayout.setVisible(true);
- linkedAssetLayout.setVisible(false);
+ importAssetLayout.setVisible(false);
}
});
- linkedAssetLayout.setVisible(false);
+ importAssetLayout.setVisible(false);
importPackage.addClickListener(new ClickListener() {
public void onClick(Widget arg0) {
newAssetLayout.setVisible(false);
- linkedAssetLayout.setVisible(true);
+ importAssetLayout.setVisible(true);
}
});
VerticalPanel ab = new VerticalPanel();
@@ -105,7 +108,7 @@
addAttribute("", ab);
addRow(newAssetLayout);
- addRow(linkedAssetLayout);
+ addRow(importAssetLayout);
//layout for new asset.
@@ -116,9 +119,7 @@
name.setFocus(true); }
});
-
if (showCats) {
-
newAssetLayout.addAttribute(constants.InitialCategory(), getCatChooser());
}
@@ -133,8 +134,16 @@
}
});
}
+
+ createInPackageButton.setChecked(true);
+ HorizontalPanel hp = new HorizontalPanel();
+ hp.add(createInPackageButton);
+ hp.add(packageSelector);
+ newAssetLayout.addAttribute("", hp);
+ newAssetLayout.addAttribute("", createInGlobalButton);
- newAssetLayout.addAttribute(constants.Package() + ":", packageSelector);
+
+ //newAssetLayout.addAttribute(constants.Package() + ":", packageSelector);
description.setVisibleLines( 4 );
description.setWidth( "100%" );
@@ -152,24 +161,14 @@
public void onClick(Widget arg0) {
ok();
}
-
} );
newAssetLayout.addAttribute( "", ok );
- //layout for create linked asset.
- linkedAssetLayout.addAttribute( constants.NameColon(), linkedName );
+ //layout for importing share asset from global area.
+ importAssetLayout.addAttribute(constants.AssetToImport(), globalAreaAssetSelector);
+ importAssetLayout.addAttribute(constants.Package() + ":", importedPackageSelector);
- this.setAfterShow(new Command() {
- public void execute() {
- name.setFocus(true); }
- });
- if (showCats) {
- linkedAssetLayout.addAttribute(constants.InitialCategory(), getCatChooser());
- }
- linkedAssetLayout.addAttribute(constants.Package() + ":", linkedPackageSelector);
-
- linkedAssetLayout.addAttribute(constants.CreateLinkedAssetFromUUID(), linkedFromUUID );
Button linkedAssetOKButton = new Button( constants.OK() );
linkedAssetOKButton.addClickListener( new ClickListener() {
public void onClick(Widget arg0) {
@@ -177,18 +176,11 @@
}
} );
- linkedAssetLayout.addAttribute( "", linkedAssetOKButton );
- linkedAssetLayout.addRow( new HTML( "<br/><b>" + constants.NoteNewLinkedAsset() + "</b>" ) );
- linkedAssetLayout.addRow( new HTML( constants.NewLinkedAssetDesc1() ) );
- linkedAssetLayout.addRow( new HTML( constants.NewLinkedAssetDesc2() ) );
- linkedAssetLayout.addRow( new HTML( constants.NewLinkedAssetDesc3() ) );
- }
+ importAssetLayout.addAttribute( "", linkedAssetOKButton );
+ importAssetLayout.addRow( new HTML( "<br/><b>" + constants.NoteNewLinkedAsset() + "</b>" ) );
+ importAssetLayout.addRow( new HTML( constants.NewLinkedAssetDesc1() ) );
+ }
- public static Widget newImportWidget(final Command afterCreatedEvent,
- final FormStylePopup parent) {
- return null;
- }
-
private Widget getCatChooser() {
Widget w = new CategoryExplorerWidget( new CategorySelectHandler() {
@@ -236,6 +228,7 @@
return;
}
+
GenericCallback cb = new GenericCallback() {
public void onSuccess(Object result) {
String uuid = (String) result;
@@ -248,30 +241,28 @@
}
}
};
+
+ String selectedPackage;
+ if (createInGlobalButton.isChecked()) {
+ selectedPackage = "globalArea";
+ } else {
+ selectedPackage = packageSelector.getSelectedPackage();
+ }
LoadingPopup.showMessage( constants.PleaseWaitDotDotDot() );
RepositoryServiceFactory.getService().createNewRule( name.getText(),
description.getText(),
initialCategory,
- packageSelector.getSelectedPackage(),
+ selectedPackage,
getFormat(),
cb );
-
}
/**
- * When Import OK is pressed, it will update the repository with the imported rule.
+ * When Import OK is pressed, it will update the repository with the imported asset.
*/
void importOK() {
-
- if (this.showCats && this.initialCategory == null) {
- Window.alert(constants.YouHaveToPickAnInitialCategory());
- return;
- } else {
- if (!validatePathPerJSR170(this.name.getText())) return;
- }
-
GenericCallback cb = new GenericCallback() {
public void onSuccess(Object result) {
String uuid = (String) result;
@@ -285,14 +276,10 @@
}
};
-
LoadingPopup.showMessage( constants.PleaseWaitDotDotDot() );
- RepositoryServiceFactory.getService().createNewLinkedRule( linkedName.getText(),
- linkedFromUUID.getText(),
- initialCategory,
- linkedPackageSelector.getSelectedPackage(),
+ RepositoryServiceFactory.getService().createNewImportedRule(globalAreaAssetSelector.getSelectedAsset(),
+ importedPackageSelector.getSelectedPackage(),
cb );
-
}
private String getFormat() {
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/RepositoryServiceServlet.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/RepositoryServiceServlet.java 2009-11-11 06:29:14 UTC (rev 30096)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/RepositoryServiceServlet.java 2009-11-11 07:14:46 UTC (rev 30097)
@@ -121,8 +121,8 @@
public java.lang.String createNewRule(java.lang.String p0, java.lang.String p1, java.lang.String p2, java.lang.String p3, java.lang.String p4) throws com.google.gwt.user.client.rpc.SerializableException {
return getService().createNewRule( p0, p1, p2, p3, p4);
}
- public java.lang.String createNewLinkedRule(java.lang.String p0, java.lang.String p1, java.lang.String p2, java.lang.String p3) throws com.google.gwt.user.client.rpc.SerializableException {
- return getService().createNewLinkedRule( p0, p1, p2, p3);
+ public java.lang.String createNewImportedRule(java.lang.String p0, java.lang.String p1) throws com.google.gwt.user.client.rpc.SerializableException {
+ return getService().createNewImportedRule( p0, p1);
}
public void deleteUncheckedRule(java.lang.String p0, java.lang.String p1) {
getService().deleteUncheckedRule( p0, p1);
@@ -133,6 +133,9 @@
public org.drools.guvnor.client.rpc.PackageConfigData[] listPackages() {
return getService().listPackages();
}
+ public org.drools.guvnor.client.rpc.PackageConfigData loadGlobalPackage() {
+ return getService().loadGlobalPackage();
+ }
public org.drools.guvnor.client.rpc.PackageConfigData[] listArchivedPackages() {
return getService().listArchivedPackages();
}
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java 2009-11-11 06:29:14 UTC (rev 30096)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java 2009-11-11 07:14:46 UTC (rev 30097)
@@ -259,21 +259,18 @@
*/
@WebRemote
@Restrict("#{identity.loggedIn}")
- public String createNewLinkedRule(String name,
- String linkedRuleUUID,
- String initialCategory,
- String initialPackage) throws SerializableException {
+ public String createNewImportedRule(String sharedAssetName,
+ String initialPackage) throws SerializableException {
if ( Contexts.isSessionContextActive() ) {
Identity.instance().checkPermission( new PackageNameType( initialPackage ),
RoleTypes.PACKAGE_DEVELOPER );
}
- log.info( "USER:" + repository.getSession().getUserID() + " REFER to an existing asset name [" + linkedRuleUUID + "] in package [" + initialPackage + "]" );
+ log.info( "USER:" + repository.getSession().getUserID() + " Create a shared asset imported from global area named [" + sharedAssetName + "] in package [" + initialPackage + "]" );
try {
-
- PackageItem pkg = repository.loadPackage( initialPackage );
- AssetItem asset = pkg.addLinkedAsset( name, linkedRuleUUID, initialCategory);
+ PackageItem pkg = repository.loadPackage(initialPackage);
+ AssetItem asset = pkg.addAssetImportedFromGlobalArea(sharedAssetName);
repository.save();
return asset.getUUID();
@@ -345,7 +342,31 @@
return listPackages( true,
pf );
}
+
+ public PackageConfigData loadGlobalPackage() {
+ PackageConfigData data = new PackageConfigData();
+ PackageItem item = repository.loadPackage(RulesRepository.RULE_GLOBAL_AREA);
+
+ data.uuid = item.getUUID();
+ data.header = getDroolsHeader( item );
+ data.externalURI = item.getExternalURI();
+ data.catRules = item.getCategoryRules();
+ data.description = item.getDescription();
+ data.archived = item.isArchived();
+ data.name = item.getName();
+ data.lastModified = item.getLastModified().getTime();
+ data.dateCreated = item.getCreatedDate().getTime();
+ data.checkinComment = item.getCheckinComment();
+ data.lasContributor = item.getLastContributor();
+ data.state = item.getStateDescription();
+ data.isSnapshot = item.isSnapshot();
+ if ( data.isSnapshot ) {
+ data.snapshotName = item.getSnapshotName();
+ }
+ return data;
+ }
+
private PackageConfigData[] listPackages(boolean archive,
RepositoryFilter filter) {
List<PackageConfigData> result = new ArrayList<PackageConfigData>();
@@ -1846,6 +1867,13 @@
@WebRemote
@Restrict("#{identity.loggedIn}")
+ public String[] listRulesInGlobalArea() throws SerializableException {
+ return listRulesInPackage(RulesRepository.RULE_GLOBAL_AREA);
+ }
+
+
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
public SingleScenarioResult runScenario(String packageName,
Scenario scenario) throws SerializableException {
if ( Contexts.isSessionContextActive() ) {
Modified: labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/ServiceImplementationTest.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/ServiceImplementationTest.java 2009-11-11 06:29:14 UTC (rev 30096)
+++ labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/ServiceImplementationTest.java 2009-11-11 07:14:46 UTC (rev 30097)
@@ -337,12 +337,11 @@
ServiceImplementation impl = getService();
PackageItem testCreateNewRuleAsLinkPackage1 = impl.repository.createPackage("testCreateNewRuleAsLinkPackage1", "desc");
impl.createCategory("", "testCreateNewRuleAsLinkCat1", "this is a cat");
- impl.repository.createPackage("testCreateNewRuleAsLinkPackage2", "desc");
impl.createCategory("", "testCreateNewRuleAsLinkCat2", "this is a cat");
- //Create the original asset.
+ //Create the shared asset.
String uuid = impl.createNewRule("testCreateLinkedAssetItemRule",
- "an initial desc", "testCreateNewRuleAsLinkCat1", "testCreateNewRuleAsLinkPackage1",
+ "an initial desc", "testCreateNewRuleAsLinkCat1", "globalArea",
AssetFormats.DSL_TEMPLATE_RULE);
assertNotNull(uuid);
assertFalse("".equals(uuid));
@@ -350,21 +349,20 @@
AssetItem dtItem = impl.repository.loadAssetByUUID(uuid);
assertEquals(dtItem.getDescription(), "an initial desc");
- //create an asset which is linked to an existing asset. Different package, same category.
- String uuidLink = impl.createNewLinkedRule("testCreateLinkedAssetItemRuleLinked",
- uuid, "testCreateNewRuleAsLinkCat1", "testCreateNewRuleAsLinkPackage2");
+ //create an asset which is imported from global area.
+ String uuidLink = impl.createNewImportedRule("testCreateLinkedAssetItemRule", "testCreateNewRuleAsLinkPackage1");
assertNotNull(uuidLink);
assertFalse("".equals(uuidLink));
- assertFalse(uuidLink.equals(uuid));
+ assertTrue(uuidLink.equals(uuid));
//now verify the linked asset.
AssetItem itemLink = impl.repository.loadAssetByUUID(uuidLink);
- assertEquals(itemLink.getName(), "testCreateLinkedAssetItemRuleLinked");
+ assertEquals(itemLink.getName(), "testCreateLinkedAssetItemRule");
assertEquals(itemLink.getDescription(), "an initial desc");
assertEquals(itemLink.getFormat(), AssetFormats.DSL_TEMPLATE_RULE);
- assertEquals(itemLink.getPackage().getName(), "testCreateNewRuleAsLinkPackage2");
+ assertEquals(itemLink.getPackage().getName(), "globalArea");
- assertEquals(itemLink.getPackageName(), "testCreateNewRuleAsLinkPackage2");
+ assertEquals(itemLink.getPackageName(), "globalArea");
assertTrue(itemLink.getCategories().size() == 1);
assertTrue(itemLink.getCategorySummary().contains("testCreateNewRuleAsLinkCat1"));
@@ -374,67 +372,20 @@
assertEquals(referredItem.getName(), "testCreateLinkedAssetItemRule");
assertEquals(referredItem.getDescription(), "an initial desc");
assertEquals(referredItem.getFormat(), AssetFormats.DSL_TEMPLATE_RULE);
- assertEquals(referredItem.getPackage().getName(), "testCreateNewRuleAsLinkPackage1");
+ assertEquals(referredItem.getPackage().getName(), "globalArea");
assertTrue(referredItem.getCategories().size() == 1);
assertTrue(referredItem.getCategorySummary().contains("testCreateNewRuleAsLinkCat1"));
-
- //create an asset which refers to an existing asset. same package, different category.
- String uuidLink1 = impl.createNewLinkedRule("testCreateLinkedAssetItemRuleLinked1",
- uuid, "testCreateNewRuleAsLinkCat2", "testCreateNewRuleAsLinkPackage1");
- assertNotNull(uuidLink1);
- assertFalse("".equals(uuidLink1));
- assertFalse(uuidLink1.equals(uuid));
-
-
- //now verify the linked asset.
- AssetItem itemLink1 = impl.repository.loadAssetByUUID(uuidLink1);
- assertEquals(itemLink1.getDescription(), "an initial desc");
- assertEquals(itemLink1.getFormat(), AssetFormats.DSL_TEMPLATE_RULE);
- assertEquals(itemLink1.getPackage().getName(), "testCreateNewRuleAsLinkPackage1");
- assertEquals(itemLink1.getPackageName(), "testCreateNewRuleAsLinkPackage1");
-
- assertTrue(itemLink1.getCategories().size() == 2);
- assertTrue(itemLink1.getCategorySummary().contains("testCreateNewRuleAsLinkCat1"));
- assertTrue(itemLink1.getCategorySummary().contains("testCreateNewRuleAsLinkCat2"));
-
- //now verify the linked asset by calling PackageItem.loadAsset()
- AssetItem itemLinkFromPackage1 = testCreateNewRuleAsLinkPackage1.loadAsset("testCreateLinkedAssetItemRuleLinked1");
- assertEquals(itemLinkFromPackage1.getDescription(), "an initial desc");
- assertEquals(itemLinkFromPackage1.getFormat(), AssetFormats.DSL_TEMPLATE_RULE);
- assertEquals(itemLinkFromPackage1.getPackage().getName(), "testCreateNewRuleAsLinkPackage1");
- assertEquals(itemLinkFromPackage1.getPackageName(), "testCreateNewRuleAsLinkPackage1");
-
- assertTrue(itemLinkFromPackage1.getCategories().size() == 2);
- assertTrue(itemLinkFromPackage1.getCategorySummary().contains("testCreateNewRuleAsLinkCat1"));
- assertTrue(itemLinkFromPackage1.getCategorySummary().contains("testCreateNewRuleAsLinkCat2"));
-
- //now verify the original asset.
- AssetItem referredItem1 = impl.repository.loadAssetByUUID(uuid);
- assertEquals(referredItem1.getDescription(), "an initial desc");
- assertEquals(referredItem1.getFormat(), AssetFormats.DSL_TEMPLATE_RULE);
- assertEquals(referredItem1.getPackage().getName(), "testCreateNewRuleAsLinkPackage1");
-
- assertTrue(referredItem1.getCategories().size() == 2);
- assertTrue(referredItem1.getCategorySummary().contains("testCreateNewRuleAsLinkCat1"));
- assertTrue(referredItem1.getCategorySummary().contains("testCreateNewRuleAsLinkCat2"));
-
//now verify AssetItemIterator works by calling search
AssetItemIterator it = impl.repository.findAssetsByName("testCreateLinkedAssetItemRule%",
true);
- assertEquals(3, it.getSize());
+ assertEquals(1, it.getSize());
while(it.hasNext()) {
AssetItem ai = it.next();
if(ai.getUUID().equals(uuid)) {
- assertEquals(ai.getPackage().getName(), "testCreateNewRuleAsLinkPackage1");
+ assertEquals(ai.getPackage().getName(), "globalArea");
assertEquals(ai.getDescription(), "an initial desc");
- } else if (ai.getUUID().equals(uuidLink)) {
- assertEquals(ai.getPackage().getName(), "testCreateNewRuleAsLinkPackage2");
- assertEquals(ai.getDescription(), "an initial desc");
- } else if (ai.getUUID().equals(uuidLink1)) {
- assertEquals(ai.getPackage().getName(), "testCreateNewRuleAsLinkPackage1");
- assertEquals(ai.getDescription(), "an initial desc");
} else {
fail("unexptected asset found: " + ai.getPackage().getName());
}
@@ -446,15 +397,14 @@
PackageItem testCreateNewRuleAsLinkPackage1 = impl.repository.createPackage("testLinkedAssetItemHistoryRelatedPack", "desc");
impl.createCategory("", "testLinkedAssetItemHistoryRelatedCat", "this is a cat");
- //Create the original asset.
+ //Create the shared asset in global area.
String uuid = impl.createNewRule("testLinkedAssetItemHistoryRelatedRule",
- "an initial desc", "testLinkedAssetItemHistoryRelatedCat", "testLinkedAssetItemHistoryRelatedPack",
+ "an initial desc", "testLinkedAssetItemHistoryRelatedCat", "globalArea",
AssetFormats.DSL_TEMPLATE_RULE);
- //create an asset which refers to an existing asset.
- String uuidLink = impl.createNewLinkedRule("testLinkedAssetItemHistoryRelatedRuleLinked",
- uuid, "testLinkedAssetItemHistoryRelatedCat", "testLinkedAssetItemHistoryRelatedPack");
- assertFalse(uuidLink.equals(uuid));
+ //create an asset which refers to the shared assets.
+ String uuidLink = impl.createNewImportedRule("testLinkedAssetItemHistoryRelatedRule", "testLinkedAssetItemHistoryRelatedPack");
+ assertTrue(uuidLink.equals(uuid));
//create version 1.
RuleAsset assetWrapper = impl.loadRuleAsset(uuidLink);
@@ -479,24 +429,27 @@
TableDataResult result = impl.loadAssetHistory(uuidLink);
assertNotNull(result);
TableDataRow[] rows = result.data;
- assertEquals(2, rows.length);
+ assertEquals(3, rows.length);
assertFalse(rows[0].id.equals(uuidLink));
assertFalse(rows[1].id.equals(uuidLink));
+ assertFalse(rows[2].id.equals(uuidLink));
RuleAsset version1 = impl.loadRuleAsset(rows[0].id);
RuleAsset version2 = impl.loadRuleAsset(rows[1].id);
+ RuleAsset version3 = impl.loadRuleAsset(rows[2].id);
RuleAsset versionHead = impl.loadRuleAsset(uuidLink);
assertFalse(version1.metaData.versionNumber == version2.metaData.versionNumber);
assertFalse(version1.metaData.versionNumber == versionHead.metaData.versionNumber);
- assertTrue(version1.metaData.description.equals("version 1"));
- assertTrue(version2.metaData.description.equals("version 2"));
- assertTrue(versionHead.metaData.description.equals("version head"));
+ assertEquals(version1.metaData.description, "an initial desc");
+ assertEquals(version2.metaData.description, "version 1");
+ assertEquals(version3.metaData.description, "version 2");
+ assertEquals(versionHead.metaData.description, "version head");
//verify the history info of the original AssetItem
result = impl.loadAssetHistory(uuid);
assertNotNull(result);
rows = result.data;
- assertEquals(2, rows.length);
+ assertEquals(3, rows.length);
assertFalse(rows[0].id.equals(uuid));
assertFalse(rows[1].id.equals(uuid));
@@ -505,8 +458,8 @@
versionHead = impl.loadRuleAsset(uuid);
assertFalse(version1.metaData.versionNumber == version2.metaData.versionNumber);
assertFalse(version1.metaData.versionNumber == versionHead.metaData.versionNumber);
- assertTrue(version1.metaData.description.equals("version 1"));
- assertTrue(version2.metaData.description.equals("version 2"));
+ assertTrue(version1.metaData.description.equals("an initial desc"));
+ assertTrue(version2.metaData.description.equals("version 1"));
assertTrue(versionHead.metaData.description.equals("version head"));
//test restore
Modified: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/AssetItemIterator.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/AssetItemIterator.java 2009-11-11 06:29:14 UTC (rev 30096)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/AssetItemIterator.java 2009-11-11 07:14:46 UTC (rev 30097)
@@ -33,7 +33,7 @@
}
public AssetItem next() {
- return new LinkedAssetItem( rulesRepository,
+ return new AssetItem( rulesRepository,
(Node) it.next() );
}
Deleted: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/LinkedAssetItem.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/LinkedAssetItem.java 2009-11-11 06:29:14 UTC (rev 30096)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/LinkedAssetItem.java 2009-11-11 07:14:46 UTC (rev 30097)
@@ -1,209 +0,0 @@
-package org.drools.repository;
-
-import java.io.*;
-import java.util.Calendar;
-import java.util.Iterator;
-
-import javax.jcr.InvalidItemStateException;
-import javax.jcr.Node;
-import javax.jcr.PathNotFoundException;
-import javax.jcr.Property;
-import javax.jcr.RepositoryException;
-import javax.jcr.Session;
-import javax.jcr.UnsupportedRepositoryOperationException;
-
-import org.apache.log4j.Logger;
-import org.drools.repository.events.StorageEventManager;
-import org.drools.repository.utils.IOUtils;
-
-/**
- * LinkedAssetItem does not represent a real Asset, instead it is a wrapper node that
- * wraps over an existing asset. LinkedAssetItem only has three properties that belongs to itself:
- * NAME: LinkedAssetItem has its own name which is the node name
- * LINKED_NODE_UUID: the node UUID that LinkedAssetItem links to.
- * PACKAGE_NAME_PROPERTY: our current design only allows one AssetItem belongs to one package.
- * LinkedAssetItem and the linked(wrapped) asset have to have their own package name respectively.
- * NOTE: those three properties are read only. Thus there is no need for LinkedAssetItem to have its own
- * check in/out method once it is created and saved.
- * Requests to all other properties are delegated to the linked(wrapped) asset.
- */
-public class LinkedAssetItem extends AssetItem {
- private Logger log = Logger.getLogger( LinkedAssetItem.class );
-
- protected Node wrapperNode;
- public static final String LINKED_NODE_UUID = "drools:linkedNodeUUID";
-
- /**
- * Constructs a LinkedAssetItem object, setting its node attribute to the specified node.
- *
- * @param rulesRepository the rulesRepository that instantiated this object
- * @param node the node in the repository that this RuleItem corresponds to
- * @throws RulesRepositoryException
- */
- public LinkedAssetItem(RulesRepository rulesRepository,
- Node wrapperNode) throws RulesRepositoryException {
- super( rulesRepository, wrapperNode );
-
- try {
- // If this node is a node that is linked to another node.
- if (wrapperNode.hasProperty(LINKED_NODE_UUID)) {
- Property linkedNodeUUIDProperty = wrapperNode
- .getProperty(LINKED_NODE_UUID);
- String linkedNodeUUID = linkedNodeUUIDProperty.getValue()
- .getString();
-
- Node linkedNode = rulesRepository.getSession().getNodeByUUID(
- linkedNodeUUID);
-
- this.wrapperNode = wrapperNode;
- this.node = linkedNode;
-
- //When a node is created, it is in checked out status. So we do similar to the linked node.
- if(!this.node.isCheckedOut()) {
- this.node.checkout();
- }
- } else {
- this.wrapperNode = null;
- }
- } catch (RepositoryException e) {
- this.wrapperNode = null;
- }
- }
-
- public LinkedAssetItem() {
- super( null,
- null );
- }
-
- public boolean isLinkedAssetItem() {
- if (wrapperNode == null) {
- return false;
- }
- return true;
- }
-
- /**
- * @return A unique identifier for this items content node.
- * return the UUID of the wrapper node.
- */
- public String getUUID() {
- if (wrapperNode == null) {
- return super.getUUID();
- } else {
- try {
- return this.getVersionContentNode1().getUUID();
- } catch ( RepositoryException e ) {
- throw new RulesRepositoryException(e);
- }
- }
- }
-
- /**
- * Need to get the name from the content node, not the version node
- * if it is in fact a version !
- */
- public String getName() {
- if (wrapperNode == null) {
- return super.getName();
- } else {
- try {
- return this.getVersionContentNode1().getName();
- } catch ( RepositoryException e ) {
- throw new RulesRepositoryException(e);
- }
- }
- }
-
- /**
- * This will get the package that the wrapper asset belongs to.
- */
- public PackageItem getPackage() {
- if (wrapperNode == null) {
- return super.getPackage();
- } else {
- try {
- if ( this.isHistoricalVersion() ) {
- return this.rulesRepository.loadPackage(this.getPackageName());
- }
- return new PackageItem( this.rulesRepository,
- this.wrapperNode.getParent().getParent() );
- } catch ( RepositoryException e ) {
- throw new RulesRepositoryException( e );
- }
- }
-
- }
-
- /**
- * Get the wrapper asset's package name.
- */
- public String getPackageName() {
- if (wrapperNode == null) {
- return super.getPackageName();
- } else {
- return getStringProperty1(PACKAGE_NAME_PROPERTY);
- }
- }
-
- /**
- * This will save the content (if it hasn't been already) and
- * then check it in to create a new version.
- * It will also set the last modified property.
- */
- public void checkin(String comment) {
- super.checkin(comment);
-
- //LinkedAssetItem only has read-only properties. So actually save and checkin is only needed once
- //when LinkedAssetItem is created.
- if (wrapperNode != null) {
- checkIsUpdateable1();
- try {
- this.wrapperNode.getSession().save();
- this.wrapperNode.checkin();
-
- if (StorageEventManager.hasSaveEvent()) {
- if (this instanceof AssetItem) {
- StorageEventManager.getSaveEvent().onAssetCheckin(
- (AssetItem) this);
- }
- }
- StorageEventManager.doCheckinEvents(this);
-
- } catch (RepositoryException e) {
- throw new RulesRepositoryException("Unable to checkin.", e);
- }
- }
- }
-
- public String getStringProperty1(String property) {
- try {
- Node theNode = getVersionContentNode1();
- if ( theNode.hasProperty( property ) ) {
- Property data = theNode.getProperty( property );
- return data.getValue().getString();
- } else {
- return "";
- }
- } catch ( RepositoryException e ) {
- throw new RulesRepositoryException( e );
- }
- }
-
- public Node getVersionContentNode1() throws RepositoryException,
- PathNotFoundException {
- return getRealContentFromVersion(this.wrapperNode);
- }
-
- protected void checkIsUpdateable1() {
- try {
- if ( this.wrapperNode.getPrimaryNodeType().getName().equals( "nt:version" ) ) {
- String message = "Error. Tags can only be added to the head version of a rule node";
- log.error( message );
- throw new RulesRepositoryException( message );
- }
- } catch ( RepositoryException e ) {
- throw new RulesRepositoryException( e );
- }
- }
-
- }
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/PackageItem.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/PackageItem.java 2009-11-11 06:29:14 UTC (rev 30096)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/PackageItem.java 2009-11-11 07:14:46 UTC (rev 30097)
@@ -11,6 +11,7 @@
import java.util.StringTokenizer;
import javax.jcr.*;
+import javax.jcr.nodetype.NodeType;
import javax.jcr.query.Query;
import javax.jcr.query.QueryResult;
import javax.jcr.query.RowIterator;
@@ -224,72 +225,37 @@
}
}
-
+
/**
- * This adds a rule which is linked to an existing rule.
+ * This adds a rule which is imported from global area.
*
* This will NOT check the asset in, just create the basic record.
- * @param assetName The name of the asset (the file name minus the extension)
- * @param linkedAssetUUID the UUID of the existing rule that this asset is linked to.
+ * @param sharedAssetName The name of the imported asset
*/
- public AssetItem addLinkedAsset(String assetName, String linkedAssetUUID) {
- return addLinkedAsset(assetName, linkedAssetUUID, null);
- }
- /**
- * This adds a rule which is linked to an existing rule.
- *
- * This will NOT check the asset in, just create the basic record.
- * @param assetName The name of the asset (the file name minus the extension)
- * @param linkedAssetUUID the UUID of the existing rule that this asset is linked to.
- * @param initialCategory The initial category the asset is placed in (can belong to multiple ones later).
- */
- public AssetItem addLinkedAsset(String assetName, String linkedAssetUUID,
- String initialCategory) {
- Node wrapperNode;
+ public AssetItem addAssetImportedFromGlobalArea(String sharedAssetName) {
try {
- assetName = assetName.trim();
+ //assetName = assetName.trim();
Node rulesFolder = this.node.getNode( ASSET_FOLDER_NAME );
- wrapperNode = rulesFolder.addNode( assetName,
- AssetItem.RULE_NODE_TYPE_NAME );
- wrapperNode.setProperty( AssetItem.TITLE_PROPERTY_NAME,
- assetName );
+
+ Session session = rulesRepository.getSession();
+ Workspace workspace = session.getWorkspace();
+ PackageItem globalArea = rulesRepository.loadPackage( RulesRepository.RULE_GLOBAL_AREA );
+ AssetItem globalAssetItem = globalArea.loadAsset(sharedAssetName);
+ if (!hasMixin(globalAssetItem.getNode())) {
+ globalAssetItem.checkout();
+ globalAssetItem.getNode().addMixin("mix:shareable");
+ globalAssetItem.checkin("add mix:shareable");
+ }
+
+ String path = rulesFolder.getPath() + "/" + globalAssetItem.getName();
+ //System.out.println("---" + path);
+ workspace.clone(workspace.getName(), globalAssetItem.getNode().getPath(), path, false);
+
+ Node ruleNode = rulesFolder.getNode(globalAssetItem.getName());
+ AssetItem rule = new AssetItem( this.rulesRepository, ruleNode );
- wrapperNode.setProperty( AssetItem.DESCRIPTION_PROPERTY_NAME,
- "description_IGNORED" );
- /*
- if (format != null) {
- ruleNode.setProperty( AssetItem.FORMAT_PROPERTY_NAME,
- format );
- } else {
- ruleNode.setProperty( AssetItem.FORMAT_PROPERTY_NAME,
- AssetItem.DEFAULT_CONTENT_FORMAT );
- }
-
-
- ruleNode.setProperty( VersionableItem.CHECKIN_COMMENT,
- "Initial" );
-*/
- Calendar lastModified = Calendar.getInstance();
- wrapperNode.setProperty( AssetItem.LAST_MODIFIED_PROPERTY_NAME, lastModified );
- wrapperNode.setProperty( AssetItem.PACKAGE_NAME_PROPERTY, this.getName() );
- wrapperNode.setProperty( AssetItem.FORMAT_PROPERTY_NAME,
- AssetItem.DEFAULT_CONTENT_FORMAT );
-
- //ruleNode.setProperty( CREATOR_PROPERTY_NAME, this.node.getSession().getUserID() );
-
- wrapperNode.setProperty( LinkedAssetItem.LINKED_NODE_UUID, linkedAssetUUID );
-
- AssetItem rule = new LinkedAssetItem( this.rulesRepository, wrapperNode );
-
- //rule.updateState( StateItem.DRAFT_STATE_NAME );
-
- if (initialCategory != null) {
- rule.addCategory( initialCategory );
- }
-
return rule;
-
- } catch ( RepositoryException e ) {
+ } catch ( RepositoryException e ) {
if ( e instanceof ItemExistsException ) {
throw new RulesRepositoryException( "A rule of that name already exists in that package.",
e );
@@ -299,7 +265,22 @@
}
}
+
+ private boolean hasMixin(Node node) {
+ try {
+ NodeType[] nodeTypes = node.getMixinNodeTypes();
+ for (NodeType nodeType : nodeTypes) {
+ if (nodeType.isNodeType("mix:shareable")) {
+ return true;
+ }
+ }
+ } catch (RepositoryException e) {
+ }
+
+ return false;
+ }
+
/**
* This will permanently delete this package.
*/
@@ -572,7 +553,7 @@
try {
Node content = getVersionContentNode();
- return new LinkedAssetItem(
+ return new AssetItem(
this.rulesRepository,
content.getNode( ASSET_FOLDER_NAME ).getNode( name ));
} catch ( RepositoryException e ) {
Modified: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/PackageIterator.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/PackageIterator.java 2009-11-11 06:29:14 UTC (rev 30096)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/PackageIterator.java 2009-11-11 07:14:46 UTC (rev 30097)
@@ -32,7 +32,8 @@
while (this.packageNodeIterator.hasNext()) {
Node element = (Node) this.packageNodeIterator.next();
try {
- if (searchArchived || !element.getProperty("drools:archive").getBoolean()) {
+ //Do not return Global Area
+ if ((searchArchived || !element.getProperty("drools:archive").getBoolean()) && !RulesRepository.RULE_GLOBAL_AREA.equals(element.getName())) {
hasnext = true;
this.next = element;
break;
Modified: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RepositorySessionUtil.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RepositorySessionUtil.java 2009-11-11 06:29:14 UTC (rev 30096)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RepositorySessionUtil.java 2009-11-11 07:14:46 UTC (rev 30097)
@@ -41,7 +41,10 @@
public static RulesRepository getRepository() throws RulesRepositoryException {
Object repoInstance = repo.get();
+ System.out.println("----------getRepository");
if ( repoInstance == null ) {
+
+ System.out.println("----------repoInstance == null");
File dir = new File( "repository" );
System.out.println( "DELETING test repo: " + dir.getAbsolutePath() );
Modified: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RulesRepository.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RulesRepository.java 2009-11-11 06:29:14 UTC (rev 30096)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RulesRepository.java 2009-11-11 07:14:46 UTC (rev 30097)
@@ -62,6 +62,7 @@
* The name of the rulepackage area of the repository
*/
public final static String RULE_PACKAGE_AREA = "drools:package_area";
+ public final static String RULE_GLOBAL_AREA = "globalArea";
/**
* The name of the rulepackage area of the repository
@@ -93,6 +94,9 @@
public RulesRepository(Session session) {
this.session = session;
checkForDataMigration( this );
+ if(!containsPackage(RULE_GLOBAL_AREA)) {
+ createPackage(RULE_GLOBAL_AREA, "the global area that holds sharable assets");
+ }
}
private synchronized static void checkForDataMigration(RulesRepository self) {
@@ -565,6 +569,13 @@
}
}
+
+ /**
+ * This will return the global area for rules that can be shared.
+ */
+ public PackageItem loadGlobalArea() throws RulesRepositoryException {
+ return loadPackage( RULE_GLOBAL_AREA );
+ }
/**
* Similar to above. Loads a RulePackage for the specified uuid.
@@ -619,7 +630,7 @@
public AssetItem loadAssetByUUID(String uuid) {
try {
Node rulePackageNode = this.session.getNodeByUUID( uuid );
- return new LinkedAssetItem( this,
+ return new AssetItem( this,
rulePackageNode );
} catch (ItemNotFoundException e) {
log.warn(e);
Deleted: labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/LinkedAssetItemTest.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/LinkedAssetItemTest.java 2009-11-11 06:29:14 UTC (rev 30096)
+++ labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/LinkedAssetItemTest.java 2009-11-11 07:14:46 UTC (rev 30097)
@@ -1,985 +0,0 @@
-package org.drools.repository;
-
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Iterator;
-import java.util.List;
-
-import javax.jcr.version.Version;
-import javax.jcr.version.VersionIterator;
-
-import junit.framework.TestCase;
-import org.drools.repository.events.StorageEventManager;
-
-public class LinkedAssetItemTest extends TestCase {
-
- private RulesRepository getRepo() {
- return RepositorySessionUtil.getRepository();
- }
-
- private PackageItem getDefaultPackage() {
- return getRepo().loadDefaultPackage();
- }
-
- public void testAssetItemCreation() throws Exception {
-
- Calendar now = Calendar.getInstance();
-
- Thread.sleep(500); // MN: need this sleep to get the correct date
-
- AssetItem ruleItem1 = getDefaultPackage().addAsset("LinkedAssetItemtestRuleItem",
- "test content");
- AssetItem linkedRuleItem1 = getDefaultPackage().addLinkedAsset(
- "LinkedAssetItemlinkedTestRuleItem", ruleItem1.getUUID(), null);
-
- assertNotNull(linkedRuleItem1);
- assertNotNull(linkedRuleItem1.getNode());
- assertEquals("LinkedAssetItemlinkedTestRuleItem", linkedRuleItem1.getName());
- assertEquals("LinkedAssetItemtestRuleItem", ruleItem1.getName());
-
- assertNotNull(ruleItem1.getCreatedDate());
- assertNotNull(linkedRuleItem1.getCreatedDate());
-
- assertTrue(now.before(ruleItem1.getCreatedDate()));
- assertTrue(now.before(linkedRuleItem1.getCreatedDate()));
-
- String packName = getDefaultPackage().getName();
-
- assertEquals(packName, ruleItem1.getPackageName());
- assertEquals(packName, linkedRuleItem1.getPackageName());
-
- assertNotNull(ruleItem1.getUUID());
- assertNotNull(linkedRuleItem1.getUUID());
- assertTrue(linkedRuleItem1.getUUID() != linkedRuleItem1.getUUID());
-
- // try constructing with node of wrong type
- try {
-
- PackageItem pitem = getRepo().loadDefaultPackage();
- new AssetItem(getRepo(), pitem.getNode());
- fail("Exception not thrown for node of wrong type");
- } catch (RulesRepositoryException e) {
- assertNotNull(e.getMessage());
- } catch (Exception e) {
- fail("Caught unexpected exception: " + e);
- }
-
- // try constructing with node of wrong type
- try {
-
- PackageItem pitem = getRepo().loadDefaultPackage();
- new LinkedAssetItem(getRepo(), pitem.getNode());
- fail("Exception not thrown for node of wrong type");
- } catch (RulesRepositoryException e) {
- assertNotNull(e.getMessage());
- } catch (Exception e) {
- fail("Caught unexpected exception: " + e);
- }
- }
-
- public void testGetContentLength() throws Exception {
- RulesRepository repo = getRepo();
- PackageItem pkg = repo.loadDefaultPackage();
- AssetItem asset = pkg.addAsset("LinkedAssetItemtestGetContentLength", "");
- AssetItem linkedAsset = pkg.addLinkedAsset("LinkedAssetItemlinkedTestGetContentLength", asset.getUUID(), null);
-
- assertEquals(0, asset.getContentLength());
- assertEquals(0, linkedAsset.getContentLength());
- asset.updateContent("boo");
- asset.checkin("");
- assertEquals("boo".getBytes().length, asset.getContentLength());
- assertEquals("boo".getBytes().length, linkedAsset.getContentLength());
-
- asset = pkg.addAsset("LinkedAssetItemtestGetContentLength2", "");
- linkedAsset = pkg.addLinkedAsset("LinkedAssetItemlinkedTestGetContentLength2", asset.getUUID(), null);
-
- assertEquals(0, asset.getContentLength());
- linkedAsset.updateBinaryContentAttachment(new ByteArrayInputStream("foobar"
- .getBytes()));
- linkedAsset.checkin("");
- assertEquals("foobar".getBytes().length, asset.getContentLength());
- assertEquals("foobar".getBytes().length, linkedAsset.getContentLength());
- }
-
- public void testGetPackageItem() throws Exception {
- RulesRepository repo = getRepo();
- PackageItem def = repo.loadDefaultPackage();
- AssetItem asset = repo.loadDefaultPackage().addAsset("LinkedAssetItemtestPackageItem",
- "test content");
- AssetItem linkedAsset = repo.loadDefaultPackage().addLinkedAsset("LinkedAssetItemlinkedTestPackageItem",asset.getUUID(), null);
-
- PackageItem pkg = asset.getPackage();
- assertEquals(def.getName(), pkg.getName());
- assertEquals(def.getUUID(), pkg.getUUID());
-
- PackageItem linkedPkg = linkedAsset.getPackage();
- assertEquals(def.getName(), linkedPkg.getName());
- assertEquals(def.getUUID(), linkedPkg.getUUID());
- }
-
- public void testUpdateStringProperty() throws Exception {
- RulesRepository repo = getRepo();
- AssetItem asset = repo.loadDefaultPackage().addAsset(
- "LinkedAssetItemtestUpdateStringProperty", "test content");
- AssetItem linkedAsset = repo.loadDefaultPackage().addLinkedAsset("LinkedAssetItemlinkedTestUpdateStringProperty",asset.getUUID(), null);
- linkedAsset.updateContent("new content");
- linkedAsset.checkin("");
- Calendar lm = linkedAsset.getLastModified();
-
- Thread.sleep(100);
- linkedAsset.updateStringProperty("Anything", "AField");
-
- assertEquals("Anything", linkedAsset.getStringProperty("AField"));
- assertEquals("Anything", asset.getStringProperty("AField"));
-
- Calendar lm1 = asset.getLastModified();
- assertTrue(lm1.getTimeInMillis() > lm.getTimeInMillis());
- Calendar lm2 = asset.getLastModified();
- assertTrue(lm2.getTimeInMillis() > lm.getTimeInMillis());
-
- Thread.sleep(100);
-
- asset.updateStringProperty("More", "AField", false);
-
- assertEquals(lm1.getTimeInMillis(), asset.getLastModified()
- .getTimeInMillis());
- assertEquals(lm2.getTimeInMillis(), linkedAsset.getLastModified()
- .getTimeInMillis());
-
- asset.updateContent("more content");
- asset.checkin("");
-
- asset = repo.loadAssetByUUID(asset.getUUID());
- assertEquals("More", asset.getStringProperty("AField"));
- assertEquals("more content", asset.getContent());
- linkedAsset = repo.loadAssetByUUID(linkedAsset.getUUID());
- assertEquals("More", linkedAsset.getStringProperty("AField"));
- assertEquals("more content", asset.getContent());
- }
-
- public void testGetPackageItemHistorical() throws Exception {
- RulesRepository repo = getRepo();
- PackageItem pkg = repo
- .createPackage("LinkedAssetItemtestGetPackageItemHistorical", "");
- AssetItem asset = pkg.addAsset("LinkedAssetItemwhee", "");
-
- //Version 1, created by the original asset
- asset.checkin("");
- assertNotNull(asset.getPackage());
-
- AssetItem linkedAsset = pkg.addLinkedAsset("LinkedAssetItemlinkedWhee", asset.getUUID(), null);
-
- //Version 2, created by LinkedAssetItem
- linkedAsset.checkin("");
-
- repo.createPackageSnapshot(pkg.getName(), "SNAP");
-
- PackageItem pkg_ = repo.loadPackageSnapshot(pkg.getName(), "SNAP");
- AssetItem asset_ = pkg_.loadAsset("LinkedAssetItemwhee");
- PackageItem pkg__ = asset_.getPackage();
- assertTrue(pkg__.isSnapshot());
- assertTrue(pkg_.isSnapshot());
- assertFalse(pkg.isSnapshot());
- assertEquals(pkg.getName(), pkg__.getName());
-
- AssetItem linkedAsset_ = pkg_.loadAsset("LinkedAssetItemlinkedWhee");
- PackageItem linkedPkg__ = linkedAsset_.getPackage();
- assertTrue(linkedPkg__.isSnapshot());
- assertFalse(pkg.isSnapshot());
- assertEquals(pkg.getName(), linkedPkg__.getName());
-
- linkedAsset.updateDescription("yeah !");
-
- //Version 3, created by LinkedAssetItem
- linkedAsset.checkin("new");
-
- linkedAsset = pkg.loadAsset("LinkedAssetItemlinkedWhee");
- assertNotNull(linkedAsset.getPackage());
-
- AssetHistoryIterator linkedIt = linkedAsset.getHistory();
- assertEquals(4, iteratorToList(linkedIt).size());
-
- asset = pkg.loadAsset("LinkedAssetItemwhee");
- AssetHistoryIterator it = asset.getHistory();
- assertEquals(4, iteratorToList(it).size());
- }
-
- List iteratorToList(Iterator it) {
- List list = new ArrayList();
- while(it.hasNext()) {
- list.add( it.next() );
- }
- return list;
- }
-
- public void testGetContent() {
- AssetItem ruleItem1 = getRepo().loadDefaultPackage().addAsset(
- "LinkedAssetItemtestGetContent", "test content");
- AssetItem linkedRuleItem1 = getRepo().loadDefaultPackage().addLinkedAsset(
- "LinkedAssetItemlinkedTestGetContent", ruleItem1.getUUID(), null);
-
- linkedRuleItem1.updateContent("test content");
- linkedRuleItem1.updateFormat("drl");
-
- assertNotNull(linkedRuleItem1.getNode());
- assertEquals("test content", linkedRuleItem1.getContent());
- assertEquals("test content", ruleItem1.getContent());
-
- assertFalse(linkedRuleItem1.isBinary());
- assertFalse(ruleItem1.isBinary());
-
- assertNotNull(linkedRuleItem1.getBinaryContentAsBytes());
- assertNotNull(linkedRuleItem1.getBinaryContentAttachment());
- String content = new String(linkedRuleItem1.getBinaryContentAsBytes());
- assertNotNull(content);
- content = new String(ruleItem1.getBinaryContentAsBytes());
- assertNotNull(content);
- }
-
- public void testUpdateContent() throws Exception {
- AssetItem ruleItem1 = getDefaultPackage().addAsset("LinkedAssetItemtestUpdateContent",
- "test description");
- AssetItem linkedRuleItem1 = getDefaultPackage().addLinkedAsset("LinkedAssetItemlinkedTestUpdateContent",
- ruleItem1.getUUID(), null);
-
- assertFalse(ruleItem1.getCreator().equals(""));
- assertFalse(linkedRuleItem1.getCreator().equals(""));
- linkedRuleItem1.updateContent("test content");
- linkedRuleItem1.checkin("yeah");
-
- assertFalse(linkedRuleItem1.getLastContributor().equals(""));
- assertFalse(ruleItem1.getLastContributor().equals(""));
-
- linkedRuleItem1.updateContent("new rule content");
-
- assertEquals("new rule content", linkedRuleItem1.getContent());
-
- assertTrue(linkedRuleItem1.getNode().getSession().hasPendingChanges());
- assertTrue(ruleItem1.getNode().getSession().hasPendingChanges());
-
- ruleItem1.checkin("yeah !");
- assertFalse(ruleItem1.getNode().getSession().hasPendingChanges());
- assertEquals("yeah !", ruleItem1.getCheckinComment());
-
- try {
- linkedRuleItem1.checkin("yeah linked !");
- fail("Did not get expected exception: Unable to checkin");
- } catch (RulesRepositoryException e) {
-
- }
-
- AssetItem prev = (AssetItem) ruleItem1.getPrecedingVersion();
- assertEquals("test content", prev.getContent());
- assertFalse("yeah !".equals(prev.getCheckinComment()));
-
- ruleItem1 = getDefaultPackage().loadAsset("LinkedAssetItemtestUpdateContent");
- VersionIterator it = ruleItem1.getNode().getVersionHistory()
- .getAllVersions();
-
- // and this shows using a version iterator.
- // perhaps migrate to using this rather then next/prev methods.
- // this way, we can skip.
- assertTrue(it.hasNext());
- while (it.hasNext()) {
- Version n = it.nextVersion();
- AssetItem item = new AssetItem(ruleItem1.getRulesRepository(), n);
- assertNotNull(item);
- }
- }
-
- public void testCategoriesPagination() {
- PackageItem pkg = getRepo().createPackage("LinkedAssetItemtestPagination", "");
- getRepo().loadCategory("/").addCategory("LinkedAssetItemtestPagedTag", "description");
-
- AssetItem a = pkg.addAsset("LinkedAssetItemtestPage1", "test content");
- a.addCategory("LinkedAssetItemtestPagedTag");
- a.checkin("");
-
- a = pkg.addLinkedAsset("LinkedAssetItemlinkedTestPage1", a.getUUID(), null);
- a.addCategory("LinkedAssetItemtestPagedTag");
- a.checkin("");
-
- a = pkg.addAsset("LinkedAssetItemtestPage2", "test content");
- a.addCategory("LinkedAssetItemtestPagedTag");
- a.checkin("");
-
-
- a = pkg.addAsset("LinkedAssetItemtestPage3", "test content");
- a.addCategory("LinkedAssetItemtestPagedTag");
- a.checkin("");
-
- a = pkg.addAsset("LinkedAssetItemtestPage4", "test content");
- a.addCategory("LinkedAssetItemtestPagedTag");
- a.checkin("");
-
- a = pkg.addAsset("LinkedAssetItemtestPage5", "test content");
- a.addCategory("LinkedAssetItemtestPagedTag");
- a.checkin("");
-
- AssetPageList list = getRepo().findAssetsByCategory("LinkedAssetItemtestPagedTag", 0,
- -1);
- assertTrue(list.currentPosition > 0);
- assertEquals(5, list.assets.size());
- assertEquals(false, list.hasNext);
-
- list = getRepo().findAssetsByCategory("LinkedAssetItemtestPagedTag", 0, 2);
- assertTrue(list.currentPosition > 0);
- assertEquals(true, list.hasNext);
- assertEquals(2, list.assets.size());
-
- assertEquals("LinkedAssetItemtestPage1", ((AssetItem) list.assets.get(0)).getName());
- assertEquals("LinkedAssetItemtestPage2", ((AssetItem) list.assets.get(1)).getName());
-
- list = getRepo().findAssetsByCategory("LinkedAssetItemtestPagedTag", 2, 2);
- assertTrue(list.currentPosition > 0);
- assertEquals(true, list.hasNext);
- assertEquals(2, list.assets.size());
-
- assertEquals("LinkedAssetItemtestPage3", ((AssetItem) list.assets.get(0)).getName());
- assertEquals("LinkedAssetItemtestPage4", ((AssetItem) list.assets.get(1)).getName());
-
- list = getRepo().findAssetsByCategory("LinkedAssetItemtestPagedTag", 2, 3);
- assertTrue(list.currentPosition > 0);
- assertEquals(false, list.hasNext);
- assertEquals(3, list.assets.size());
-
- assertEquals("LinkedAssetItemtestPage3", ((AssetItem) list.assets.get(0)).getName());
- assertEquals("LinkedAssetItemtestPage4", ((AssetItem) list.assets.get(1)).getName());
- assertEquals("LinkedAssetItemtestPage5", ((AssetItem) list.assets.get(2)).getName());
- }
-
- public void testCategories() {
- getRepo().loadCategory("/").addCategory("LinkedAssetItemtestAddTagTestTag",
- "description");
- AssetItem ruleItem1 = getDefaultPackage().addAsset("LinkedAssetItemtestAddTag",
- "test content");
- AssetItem linkedRuleItem1 = getDefaultPackage().addLinkedAsset("LinkedAssetItemlinkedTestAddTag", ruleItem1.getUUID(), null);
-
- linkedRuleItem1.addCategory("LinkedAssetItemtestAddTagTestTag");
- List tags = linkedRuleItem1.getCategories();
- assertEquals(1, tags.size());
- assertEquals("LinkedAssetItemtestAddTagTestTag", ((CategoryItem) tags.get(0))
- .getName());
-
- getRepo().loadCategory("/").addCategory("LinkedAssetItemtestAddTagTestTag2",
- "description");
- linkedRuleItem1.addCategory("LinkedAssetItemtestAddTagTestTag2");
- tags = linkedRuleItem1.getCategories();
- assertEquals(2, tags.size());
-
- linkedRuleItem1.checkin("woot");
-
- // now test retrieve by tags
- List result = getRepo()
- .findAssetsByCategory("LinkedAssetItemtestAddTagTestTag", 0, -1).assets;
- assertEquals(1, result.size());
- AssetItem retItem = (AssetItem) result.get(0);
- assertEquals("LinkedAssetItemtestAddTag", retItem.getName());
-
- ruleItem1.updateContent("foo");
- ruleItem1.checkin("latest");
-
- assertTrue(ruleItem1.getCategories().size() > 0);
- assertNotNull(ruleItem1.getCategorySummary());
- assertEquals("LinkedAssetItemtestAddTagTestTag LinkedAssetItemtestAddTagTestTag2 ", ruleItem1
- .getCategorySummary());
-
- //REVISIT: findAssetsByCategory wont return a LinkedAssetItem
- result = getRepo().findAssetsByCategory("LinkedAssetItemtestAddTagTestTag", 0, -1).assets;
-
- assertEquals(1, result.size());
-
- ruleItem1 = (AssetItem) result.get(0);
- assertEquals(2, ruleItem1.getCategories().size());
-
- assertEquals("foo", ruleItem1.getContent());
- AssetItem prev = (AssetItem) ruleItem1.getPrecedingVersion();
- assertNotNull(prev);
- }
-
- public void testUpdateCategories() {
- getRepo().loadCategory("/").addCategory("LinkedAssetItemtestUpdateCategoriesOnAsset",
- "la");
- getRepo().loadCategory("/").addCategory("LinkedAssetItemtestUpdateCategoriesOnAsset2",
- "la");
-
- AssetItem item = getRepo().loadDefaultPackage().addAsset(
- "LinkedAssetItemtestUpdateCategoriesOnAsset", "huhuhu");
- AssetItem linkedItem = getRepo().loadDefaultPackage().addLinkedAsset("LinkedAssetItemlinkedTestUpdateCategoriesOnAsset",
- item.getUUID(), null);
-
- String[] cats = new String[] { "LinkedAssetItemtestUpdateCategoriesOnAsset",
- "LinkedAssetItemtestUpdateCategoriesOnAsset2" };
- linkedItem.updateCategoryList(cats);
-
- linkedItem.checkin("aaa");
-
- item = getRepo().loadDefaultPackage().loadAsset(
- "LinkedAssetItemlinkedTestUpdateCategoriesOnAsset");
- assertEquals(2, item.getCategories().size());
-
- for (Iterator iter = item.getCategories().iterator(); iter.hasNext();) {
- CategoryItem cat = (CategoryItem) iter.next();
- assertTrue(cat.getName().startsWith("LinkedAssetItemtestUpdateCategoriesOnAsset"));
- }
- }
-
- public void testFindRulesByCategory() throws Exception {
- getRepo().loadCategory("/").addCategory("LinkedAssetItemtestFindRulesByCat", "yeah");
- AssetItem as1 = getDefaultPackage().addAsset(
- "LinkedAssetItemtestFindRulesByCategory1", "ya", "LinkedAssetItemtestFindRulesByCat", "drl");
- getDefaultPackage().addAsset("LinkedAssetItemtestFindRulesByCategory2", "ya",
- "LinkedAssetItemtestFindRulesByCat", AssetItem.DEFAULT_CONTENT_FORMAT)
- .checkin("version0");
-
- as1.checkin("version0");
-
- AssetItem linkedItem = getRepo().loadDefaultPackage().addLinkedAsset("LinkedAssetItemlinkedTestFindRulesByCategory1",
- as1.getUUID(), "LinkedAssetItemtestFindRulesByCat");
-
- //REVISIT: findAssetsByCategory wont return a LinkedAssetItem
- List rules = getRepo()
- .findAssetsByCategory("LinkedAssetItemtestFindRulesByCat", 0, -1).assets;
- assertEquals(2, rules.size());
-
- for (Iterator iter = rules.iterator(); iter.hasNext();) {
- AssetItem element = (AssetItem) iter.next();
- assertTrue(element.getName().startsWith("LinkedAssetItemtestFindRulesByCategory"));
- }
-
- getRepo().loadCategory("/").addCategory("LinkedAssetItemtestFindRulesByCat1", "yeah");
- AssetItem linkedItem1 = getRepo().loadDefaultPackage().addLinkedAsset("LinkedAssetItemlinkedTestFindRulesByCategory2",
- as1.getUUID(), "LinkedAssetItemtestFindRulesByCat1");
- linkedItem1.checkin("version2");
- rules = getRepo().findAssetsByCategory("LinkedAssetItemtestFindRulesByCat1", 0, -1).assets;
- assertEquals(1, rules.size());
-
- try {
- getRepo().loadCategory("LinkedAssetItemtestFindRulesByCat").remove();
- fail("should not be able to remove");
- } catch (RulesRepositoryException e) {
- // assertTrue(e.getCause() instanceof
- // ReferentialIntegrityException);
- assertNotNull(e.getMessage());
- }
- }
-
- public void testRemoveTag() {
- AssetItem ruleItem1 = getDefaultPackage().addAsset("LinkedAssetItemtestRemoveTag",
- "test content");
- AssetItem linkedRuleItem1 = getDefaultPackage().addLinkedAsset("LinkedAssetItemlinkedTestRemoveTag",
- ruleItem1.getUUID(), null);
-
- getRepo().loadCategory("/").addCategory("LinkedAssetItemTestRemoveCategory",
- "description");
-
- linkedRuleItem1.addCategory("LinkedAssetItemTestRemoveCategory");
- List tags = linkedRuleItem1.getCategories();
- assertEquals(1, tags.size());
- linkedRuleItem1.removeCategory("LinkedAssetItemTestRemoveCategory");
- tags = linkedRuleItem1.getCategories();
- assertEquals(0, tags.size());
-
- getRepo().loadCategory("/").addCategory("LinkedAssetItemTestRemoveCategory2",
- "description");
- getRepo().loadCategory("/").addCategory("LinkedAssetItemTestRemoveCategory3",
- "description");
- linkedRuleItem1.addCategory("LinkedAssetItemTestRemoveCategory2");
- linkedRuleItem1.addCategory("LinkedAssetItemTestRemoveCategory3");
- linkedRuleItem1.removeCategory("LinkedAssetItemTestRemoveCategory2");
- tags = linkedRuleItem1.getCategories();
- assertEquals(1, tags.size());
- assertEquals("LinkedAssetItemTestRemoveCategory3", ((CategoryItem) tags.get(0))
- .getName());
- }
-
- public void testSetStateString() {
- AssetItem ruleItem1 = getDefaultPackage().addAsset(
- "LinkedAssetItemtestSetStateString", "test content");
- AssetItem linkedRuleItem1 = getDefaultPackage().addLinkedAsset(
- "LinkedAssetItemlinkedTestSetStateString", ruleItem1.getUUID());
-
- getRepo().createState("TestState1");
-
- linkedRuleItem1.updateState("TestState1");
- assertNotNull(linkedRuleItem1.getState());
- assertEquals("TestState1", linkedRuleItem1.getState().getName());
-
- getRepo().createState("TestState2");
- linkedRuleItem1.updateState("TestState2");
- assertNotNull(linkedRuleItem1.getState());
- assertEquals("TestState2", linkedRuleItem1.getState().getName());
- }
-
- public void testStatusStuff() {
- AssetItem ruleItem1 = getDefaultPackage().addAsset("LinkedAssetItemtestGetState",
- "test content");
- AssetItem linkedRuleItem1 = getDefaultPackage().addLinkedAsset(
- "LinkedAssetItemlinkedTestGetState", ruleItem1.getUUID());
-
- StateItem stateItem1 = linkedRuleItem1.getState();
- assertEquals(StateItem.DRAFT_STATE_NAME, stateItem1.getName());
-
- linkedRuleItem1.updateState("TestState1");
- assertNotNull(linkedRuleItem1.getState());
- assertEquals("TestState1", linkedRuleItem1.getState().getName());
-
- ruleItem1 = getDefaultPackage().addAsset("LinkedAssetItemtestGetState2", "wa");
- linkedRuleItem1 = getDefaultPackage().addLinkedAsset(
- "LinkedAssetItemlinkedTestGetState2", ruleItem1.getUUID());
- assertEquals(StateItem.DRAFT_STATE_NAME, linkedRuleItem1
- .getStateDescription());
- assertEquals(getRepo().getState(StateItem.DRAFT_STATE_NAME), linkedRuleItem1
- .getState());
- }
-
- public void testToString() {
- AssetItem ruleItem1 = getDefaultPackage().addAsset("LinkedAssetItemtestToString",
- "test content");
- AssetItem linkedRuleItem1 = getDefaultPackage().addLinkedAsset(
- "LinkedAssetItemlinkedTestToString", ruleItem1.getUUID());
- assertNotNull(linkedRuleItem1.toString());
- }
-
- public void testGetLastModifiedOnCheckin() throws Exception {
- AssetItem ruleItem1 = getDefaultPackage().addAsset(
- "LinkedAssetItemtestGetLastModified", "test content");
- AssetItem linkedRuleItem1 = getDefaultPackage().addLinkedAsset(
- "LinkedAssetItemlinkedTestGetLastModified", ruleItem1.getUUID());
-
- Calendar cal = Calendar.getInstance();
- long before = cal.getTimeInMillis();
-
- Thread.sleep(100);
- linkedRuleItem1.updateContent("new lhs");
- linkedRuleItem1.checkin("woot");
- Calendar cal2 = linkedRuleItem1.getLastModified();
- long lastMod = cal2.getTimeInMillis();
-
- cal = Calendar.getInstance();
- long after = cal.getTimeInMillis();
-
- assertTrue(before < lastMod);
- assertTrue(lastMod < after);
- }
-
- public void testGetDateEffective() {
- AssetItem ruleItem1 = getDefaultPackage().addAsset(
- "LinkedAssetItemtestGetDateEffective", "test content");
-
- // it should be initialized to null
- assertTrue(ruleItem1.getDateEffective() == null);
-
- // now try setting it, then retrieving it
- Calendar cal = Calendar.getInstance();
- ruleItem1.updateDateEffective(cal);
- Calendar cal2 = ruleItem1.getDateEffective();
-
- assertEquals(cal, cal2);
- }
-
- public void testGetDateExpired() {
- try {
- AssetItem ruleItem1 = getRepo().loadDefaultPackage().addAsset(
- "LinkedAssetItemtestGetDateExpired", "test content");
- AssetItem linkedRuleItem1 = getDefaultPackage().addLinkedAsset(
- "LinkedAssetItemlinkedtestGetDateExpired", ruleItem1.getUUID());
-
- // it should be initialized to null
- assertTrue(linkedRuleItem1.getDateExpired() == null);
-
- // now try setting it, then retrieving it
- Calendar cal = Calendar.getInstance();
- linkedRuleItem1.updateDateExpired(cal);
- Calendar cal2 = linkedRuleItem1.getDateExpired();
-
- assertEquals(cal, cal2);
- } catch (Exception e) {
- fail("Caught unexpected exception: " + e);
- }
- }
-
- public void testSaveAndCheckinDescriptionAndTitle() throws Exception {
- AssetItem ruleItem1 = getRepo().loadDefaultPackage().addAsset(
- "LinkedAssetItemtestGetDescription", "");
- ruleItem1.checkin("version0");
- AssetItem linkedRuleItem1 = getDefaultPackage().addLinkedAsset(
- "LinkedAssetItemlinkedtestGetDescription", ruleItem1.getUUID());
- //This check in has no effect on ruleItem1, as nothing related to ruleItem1 has been changed
- linkedRuleItem1.checkin("version1");
-
- // it should be "" to begin with
- assertEquals("", linkedRuleItem1.getDescription());
-
- linkedRuleItem1.updateDescription("test description");
- assertEquals("test description", linkedRuleItem1.getDescription());
-
- assertTrue(getRepo().getSession().hasPendingChanges());
-
- linkedRuleItem1.updateTitle("This is a title");
- assertTrue(getRepo().getSession().hasPendingChanges());
- linkedRuleItem1.checkin("ya");
-
- // we can save without a checkin
- getRepo().getSession().save();
-
- assertFalse(getRepo().getSession().hasPendingChanges());
-
- try {
- linkedRuleItem1.getPrecedingVersion().updateTitle("baaad");
- fail("should not be able to do this");
- } catch (RulesRepositoryException e) {
- assertNotNull(e.getMessage());
- }
- }
-
- public void testGetPrecedingVersionAndRestore() throws Exception {
- getRepo().loadCategory("/").addCategory("LinkedAssetItemfoo", "ka");
- AssetItem ruleItem1 = getRepo().loadDefaultPackage().addAsset(
- "LinkedAssetItemtestGetPrecedingVersion", "descr");
- ruleItem1.checkin("version0");
- assertTrue(ruleItem1.getPrecedingVersion() == null);
- AssetItem linkedRuleItem1 = getDefaultPackage().addLinkedAsset(
- "LinkedAssetItemlinkedtestGetPrecedingVersion", ruleItem1.getUUID());
- linkedRuleItem1.checkin("version0");
- assertNotNull(ruleItem1.getPrecedingVersion());
- assertNotNull(linkedRuleItem1.getPrecedingVersion());
-
- linkedRuleItem1.addCategory("LinkedAssetItemfoo");
- linkedRuleItem1.updateContent("test content");
- linkedRuleItem1.updateDescription("descr2");
- Thread.sleep(100);
- linkedRuleItem1.checkin("boo");
-
- AssetItem predecessorRuleItem = (AssetItem) linkedRuleItem1
- .getPrecedingVersion();
- assertNotNull(predecessorRuleItem);
-
- // check version handling
- assertNotNull(predecessorRuleItem.getVersionSnapshotUUID());
- assertFalse(predecessorRuleItem.getVersionSnapshotUUID().equals(
- ruleItem1.getUUID()));
-
- // assertEquals(predecessorRuleItem.getCreatedDate().getTimeInMillis(),
- // ruleItem1.getCreatedDate().getTimeInMillis());
-
- assertEquals(ruleItem1.getState().getName(), predecessorRuleItem
- .getState().getName());
- // assertEquals(ruleItem1.getName(), predecessorRuleItem.getName());
-
- AssetItem loadedHistorical = getRepo().loadAssetByUUID(
- predecessorRuleItem.getVersionSnapshotUUID());
- assertTrue(loadedHistorical.isHistoricalVersion());
- assertFalse(ruleItem1.getVersionNumber() == loadedHistorical
- .getVersionNumber());
-
- linkedRuleItem1.updateContent("new content");
- linkedRuleItem1.checkin("two changes");
-
- predecessorRuleItem = (AssetItem) linkedRuleItem1.getPrecedingVersion();
- assertNotNull(predecessorRuleItem);
- assertEquals(1, predecessorRuleItem.getCategories().size());
- CategoryItem cat = (CategoryItem) predecessorRuleItem.getCategories()
- .get(0);
- assertEquals("LinkedAssetItemfoo", cat.getName());
-
- assertEquals("test content", predecessorRuleItem.getContent());
-
- assertEquals(RulesRepository.DEFAULT_PACKAGE, predecessorRuleItem
- .getPackageName());
-
- linkedRuleItem1.updateContent("newer lhs");
- linkedRuleItem1.checkin("another");
-
- predecessorRuleItem = (AssetItem) linkedRuleItem1.getPrecedingVersion();
- assertNotNull(predecessorRuleItem);
- assertEquals("new content", predecessorRuleItem.getContent());
- predecessorRuleItem = (AssetItem) predecessorRuleItem
- .getPrecedingVersion();
- assertNotNull(predecessorRuleItem);
- assertEquals("test content", predecessorRuleItem.getContent());
-
- // now try restoring
- long oldVersionNumber = ruleItem1.getVersionNumber();
-
- AssetItem toRestore = getRepo().loadAssetByUUID(
- predecessorRuleItem.getVersionSnapshotUUID());
-
- getRepo().restoreHistoricalAsset(toRestore, linkedRuleItem1,
- "cause I want to");
-
- AssetItem restored = getRepo().loadDefaultPackage().loadAsset(
- "LinkedAssetItemtestGetPrecedingVersion");
-
- // assertEquals( predecessorRuleItem.getCheckinComment(),
- // restored.getCheckinComment());
- assertEquals(predecessorRuleItem.getDescription(), restored
- .getDescription());
- assertEquals("cause I want to", restored.getCheckinComment());
- assertEquals(6, restored.getVersionNumber());
- assertFalse(oldVersionNumber == restored.getVersionNumber());
- }
-
- public void testGetSucceedingVersion() {
- AssetItem ruleItem1 = getRepo().loadDefaultPackage().addAsset(
- "LinkedAssetItemtestGetSucceedingVersion", "test description");
- ruleItem1.checkin("version0");
- assertEquals(1, ruleItem1.getVersionNumber());
-
- AssetItem linkedRuleItem1 = getDefaultPackage().addLinkedAsset(
- "LinkedAssetItemlinkedtestGetSucceedingVersion", ruleItem1.getUUID());
- linkedRuleItem1.checkin("version1");
- assertEquals(2, linkedRuleItem1.getVersionNumber());
-
- AssetItem succeedingRuleItem = (AssetItem) linkedRuleItem1
- .getSucceedingVersion();
- assertTrue(succeedingRuleItem == null);
-
- linkedRuleItem1.updateContent("new content");
- linkedRuleItem1.checkin("la");
-
- assertEquals(3, linkedRuleItem1.getVersionNumber());
-
- AssetItem predecessorRuleItem = (AssetItem) linkedRuleItem1
- .getPrecedingVersion();
- assertEquals("", predecessorRuleItem.getContent());
- succeedingRuleItem = (AssetItem) predecessorRuleItem
- .getSucceedingVersion();
- assertNotNull(succeedingRuleItem);
- assertEquals(linkedRuleItem1.getContent(), succeedingRuleItem.getContent());
- }
-
- public void testGetSuccessorVersionsIterator() {
- try {
- AssetItem ruleItem1 = getRepo().loadDefaultPackage().addAsset(
- "LinkedAssetItemtestGetSuccessorVersionsIterator", "test content");
- ruleItem1.checkin("version0");
-
- AssetItem linkedRuleItem1 = getDefaultPackage().addLinkedAsset(
- "LinkedAssetItemlinkedtestGetSuccessorVersionsIterator", ruleItem1.getUUID());
- linkedRuleItem1.checkin("version1");
-
- Iterator iterator = linkedRuleItem1.getSuccessorVersionsIterator();
- assertNotNull(iterator);
- assertFalse(iterator.hasNext());
-
- linkedRuleItem1.updateContent("new content").checkin("ya");
-
- iterator = linkedRuleItem1.getSuccessorVersionsIterator();
- assertNotNull(iterator);
- assertFalse(iterator.hasNext());
-
- AssetItem predecessorRuleItem = (AssetItem) linkedRuleItem1
- .getPrecedingVersion();
- iterator = predecessorRuleItem.getSuccessorVersionsIterator();
- assertNotNull(iterator);
- assertTrue(iterator.hasNext());
- AssetItem nextRuleItem = (AssetItem) iterator.next();
- assertEquals("new content", nextRuleItem.getContent());
- assertFalse(iterator.hasNext());
-
- linkedRuleItem1.updateContent("newer content");
- linkedRuleItem1.checkin("boo");
-
- iterator = predecessorRuleItem.getSuccessorVersionsIterator();
- assertNotNull(iterator);
- assertTrue(iterator.hasNext());
- nextRuleItem = (AssetItem) iterator.next();
- assertEquals("new content", nextRuleItem.getContent());
- assertTrue(iterator.hasNext());
- nextRuleItem = (AssetItem) iterator.next();
- assertEquals("newer content", nextRuleItem.getContent());
- assertFalse(iterator.hasNext());
- } catch (Exception e) {
- fail("Caught unexpected exception: " + e);
- }
- }
-
- public void testGetPredecessorVersionsIterator() {
- AssetItem ruleItem1 = getRepo().loadDefaultPackage().addAsset(
- "LinkedAssetItemtestGetPredecessorVersionsIterator", "test description");
- ruleItem1.checkin("version0");
-
- Iterator iterator = ruleItem1.getPredecessorVersionsIterator();
- assertNotNull(iterator);
- assertFalse(iterator.hasNext());
-
- AssetItem linkedRuleItem1 = getDefaultPackage().addLinkedAsset(
- "LinkedAssetItemlinkedtestGetPredecessorVersionsIterator", ruleItem1.getUUID());
- linkedRuleItem1.checkin("version1");
-
- ruleItem1.updateContent("test content");
- ruleItem1.checkin("lalalalala");
-
- iterator = linkedRuleItem1.getPredecessorVersionsIterator();
- assertNotNull(iterator);
- assertTrue(iterator.hasNext());
-
- ruleItem1.updateContent("new content");
- ruleItem1.checkin("boo");
-
- iterator = linkedRuleItem1.getPredecessorVersionsIterator();
- assertNotNull(iterator);
- assertTrue(iterator.hasNext());
- AssetItem nextRuleItem = (AssetItem) iterator.next();
-
- assertEquals("test content", nextRuleItem.getContent());
-
- ruleItem1.updateContent("newer content");
- ruleItem1.checkin("wee");
-
- iterator = linkedRuleItem1.getPredecessorVersionsIterator();
- assertNotNull(iterator);
- assertTrue(iterator.hasNext());
- nextRuleItem = (AssetItem) iterator.next();
- assertTrue(iterator.hasNext());
- assertEquals("new content", nextRuleItem.getContent());
- nextRuleItem = (AssetItem) iterator.next();
-
- assertEquals("test content", nextRuleItem.getContent());
-
- assertEquals("", ((AssetItem) iterator.next()).getContent());
-
- }
-
- public void testHistoryIterator() throws Exception {
- AssetItem ruleItem1 = getRepo().loadDefaultPackage().addAsset(
- "LinkedAssetItemtestHistoryIterator", "test description");
- ruleItem1.checkin("version0");
-
- AssetItem linkedRuleItem1 = getDefaultPackage().addLinkedAsset(
- "LinkedAssetItemlinkedtestHistoryIterator", ruleItem1.getUUID());
- linkedRuleItem1.checkin("version1");
-
- ruleItem1 = getRepo().loadAssetByUUID(linkedRuleItem1.getUUID());
- ruleItem1.updateContent("wo");
- ruleItem1.checkin("version2");
-
- ruleItem1 = getRepo().loadAssetByUUID(ruleItem1.getUUID());
- ruleItem1.updateContent("ya");
- ruleItem1.checkin("version3");
-
- Iterator it = ruleItem1.getHistory();
- for (int i = 0; i < 3; i++) {
- assertTrue(it.hasNext());
- it.next();
- }
- }
-
- public void testGetTitle() {
- AssetItem ruleItem1 = getRepo().loadDefaultPackage().addAsset(
- "LinkedAssetItemtestGetTitle", "test content");
-
- AssetItem linkedRuleItem1 = getDefaultPackage().addLinkedAsset(
- "LinkedAssetItemlinkedtestGetTitle", ruleItem1.getUUID());
-
- assertEquals("LinkedAssetItemlinkedtestGetTitle", linkedRuleItem1.getName());
- assertEquals("LinkedAssetItemtestGetTitle", ruleItem1.getName());
- //NOTE: LinkedAssetItem does not have its own Title property.
- assertEquals("LinkedAssetItemtestGetTitle", linkedRuleItem1.getTitle());
- assertEquals("LinkedAssetItemtestGetTitle", ruleItem1.getTitle());
- }
-
- public void testDublinCoreProperties() {
- PackageItem pkg = getRepo().createPackage("LinkedAssetItemtestDublinCore", "wa");
-
- AssetItem ruleItem = pkg.addAsset("LinkedAssetItemtestDublinCoreProperties",
- "yeah yeah yeah");
- ruleItem.checkin("woo");
-
- AssetItem linkedRuleItem1 = pkg.addLinkedAsset(
- "LinkedAssetItemlinkedtestDublinCoreProperties", ruleItem.getUUID());
-
- linkedRuleItem1.updateCoverage("b");
- assertEquals("b", linkedRuleItem1.getCoverage());
- linkedRuleItem1.checkin("woo");
-
- ruleItem = getRepo().loadPackage("LinkedAssetItemtestDublinCore").loadAsset("LinkedAssetItemtestDublinCoreProperties");
- assertEquals("b", ruleItem.getCoverage());
- assertEquals("", ruleItem.getExternalRelation());
- assertEquals("", ruleItem.getExternalSource());
-
- ruleItem = getRepo().loadPackage("LinkedAssetItemtestDublinCore").loadAsset("LinkedAssetItemlinkedtestDublinCoreProperties");
- assertEquals("b", ruleItem.getCoverage());
- assertEquals("", ruleItem.getExternalRelation());
- assertEquals("", ruleItem.getExternalSource());
- }
-
- public void testGetFormat() throws Exception {
- AssetItem ruleItem1 = getRepo().loadDefaultPackage().addAsset(
- "LinkedAssetItemtestGetFormat", "test content");
-
- AssetItem linkedRuleItem1 = getRepo().loadDefaultPackage().addLinkedAsset(
- "LinkedAssetItemlinkedtestGetFormat", ruleItem1.getUUID());
-
- linkedRuleItem1.updateContent("la");
- assertEquals(AssetItem.DEFAULT_CONTENT_FORMAT, linkedRuleItem1.getFormat());
-
- assertTrue(linkedRuleItem1.getNode().hasProperty(
- AssetItem.CONTENT_PROPERTY_NAME));
- assertFalse(linkedRuleItem1.getNode().hasProperty(
- AssetItem.CONTENT_PROPERTY_BINARY_NAME));
-
- linkedRuleItem1.updateFormat("blah");
- assertEquals("blah", linkedRuleItem1.getFormat());
- }
-
- public void testAnonymousProperties() {
- AssetItem item = getRepo().loadDefaultPackage().addAsset(
- "LinkedAssetItemanonymousproperty", "lalalalala");
-
- AssetItem linkedRuleItem1 = getRepo().loadDefaultPackage().addLinkedAsset(
- "LinkedAssetItemlinkedanonymousproperty", item.getUUID());
-
- linkedRuleItem1.updateUserProperty("fooBar", "value");
- assertEquals("value", linkedRuleItem1.getUserProperty("fooBar"));
-
- linkedRuleItem1.checkin("lalalala");
- try {
- linkedRuleItem1.updateUserProperty("drools:content", "whee");
- fail("should not be able to set built in properties this way.");
- } catch (IllegalArgumentException e) {
- assertNotNull(e.getMessage());
- }
- }
-
- public void testBinaryAsset() throws Exception {
- AssetItem item = getRepo().loadDefaultPackage().addAsset(
- "LinkedAssetItemtestBinaryAsset", "yeah");
-
- AssetItem linkedRuleItem1 = getRepo().loadDefaultPackage().addLinkedAsset(
- "LinkedAssetItemlinkedtestBinaryAsset", item.getUUID());
-
- String data = "abc 123";
- ByteArrayInputStream in = new ByteArrayInputStream(data.getBytes());
- linkedRuleItem1.updateBinaryContentAttachment(in);
- linkedRuleItem1.updateBinaryContentAttachmentFileName("x.x");
- in.close();
-
- assertEquals(data, linkedRuleItem1.getContent());
-
- assertFalse(linkedRuleItem1.getNode().hasProperty(AssetItem.CONTENT_PROPERTY_NAME));
- assertTrue(linkedRuleItem1.getNode().hasProperty(
- AssetItem.CONTENT_PROPERTY_BINARY_NAME));
- linkedRuleItem1.checkin("lalalala");
-
- assertTrue(linkedRuleItem1.isBinary());
-
- item = getRepo().loadDefaultPackage().loadAsset("LinkedAssetItemtestBinaryAsset");
- InputStream in2 = item.getBinaryContentAttachment();
- assertNotNull(in2);
-
- byte[] data2 = item.getBinaryContentAsBytes();
- assertEquals(data, new String(data2));
- assertEquals("x.x", item.getBinaryContentAttachmentFileName());
- assertTrue(item.isBinary());
-
- linkedRuleItem1.updateContent("qed");
- linkedRuleItem1.checkin("");
- item = getRepo().loadAssetByUUID(item.getUUID());
- assertEquals("qed", item.getContent());
- }
-
-}
Modified: labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/PackageItemTest.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/PackageItemTest.java 2009-11-11 06:29:14 UTC (rev 30096)
+++ labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/PackageItemTest.java 2009-11-11 07:14:46 UTC (rev 30097)
@@ -1,6 +1,7 @@
package org.drools.repository;
import java.util.ArrayList;
+import java.util.Calendar;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -9,6 +10,10 @@
public class PackageItemTest extends TestCase {
+ private PackageItem loadGlobalArea() {
+ return getRepo().loadGlobalArea();
+ }
+
public void testListPackages() throws Exception {
RulesRepository repo = getRepo();
PackageItem item = repo.createPackage( "testListPackages1", "lalalala" );
@@ -448,36 +453,29 @@
assertEquals(2, rules.size());
}
- public void testAddLinkedRuleRuleItem() {
- PackageItem rulePackageItem1 = getRepo().createPackage("testAddLinkedRuleRuleItem","desc");
-
- AssetItem ruleItem1 = rulePackageItem1.addAsset("testAddLinkedRuleRuleItem", "test description");
+ public void testAddRuleItemFromGlobalArea() {
+ AssetItem ruleItem1 = loadGlobalArea().addAsset("testAddRuleItemFromGlobalAreaRuleItem", "test description");
ruleItem1.updateContent( "test content" );
ruleItem1.checkin( "updated the rule content" );
- AssetItem linkedRuleItem1 = rulePackageItem1.addLinkedAsset("linkedTestAddLinkedRuleRuleItem", ruleItem1.getUUID(), null);
+ PackageItem rulePackageItem2 = getRepo().createPackage("testAddRuleItemFromGlobalArea1","desc");
+ AssetItem linkedRuleItem1 = rulePackageItem2.addAssetImportedFromGlobalArea(ruleItem1.getName());
linkedRuleItem1.updateContent( "test content for linked" );
linkedRuleItem1.checkin( "updated the rule content for linked" );
-
- Iterator rulesIt1 = rulePackageItem1.getAssets();
- List rules1 = iteratorToList( rulesIt1 );
- assertEquals(2, rules1.size());
//test that it is following the head revision
ruleItem1.updateContent("new lhs");
ruleItem1.checkin( "updated again" );
- Iterator rulesIt2 = rulePackageItem1.getAssets();
- List rules2 = iteratorToList( rulesIt2 );
- assertEquals(2, rules2.size());
-
- while(rulesIt2.hasNext()) {
- AssetItem ai = (AssetItem)rulesIt2.next();
- assertTrue(ai.getName().equals("testAddLinkedRuleRuleItem") || ai.getName().equals("linkedTestAddLinkedRuleRuleItem"));
- assertEquals("new lhs", ai.getContent());
- assertEquals("test description", ai.getDescription());
- assertEquals("updated again", ai.getCheckinComment());
- }
+ Iterator rulesIt2 = rulePackageItem2.getAssets();
+ List rules2 = iteratorToList(rulesIt2);
+ assertEquals(1, rules2.size());
+
+ AssetItem ai = (AssetItem) rules2.get(0);
+ assertTrue(ai.getName().equals("testAddRuleItemFromGlobalAreaRuleItem"));
+ assertEquals("new lhs", ai.getContent());
+ assertEquals("test description", ai.getDescription());
+ assertEquals("updated again", ai.getCheckinComment());
}
List iteratorToList(Iterator it) {
@@ -609,34 +607,36 @@
assertTrue(list2.get( 2 ) instanceof AssetItem);
}
- public void testSearchLinkedAssetByFormat() throws Exception {
- PackageItem pkg1 = getRepo().createPackage( "testSearchLinkedAssetByFormat1", "" );
- PackageItem pkg2 = getRepo().createPackage( "testSearchLinkedAssetByFormat2", "" );
- getRepo().save();
-
- AssetItem item = pkg1.addAsset( "testSearchLinkedAssetByFormatAsset1", "" );
- item.updateFormat( "xyz" );
+ public void testSearchSharedAssetByFormat() throws Exception {
+ AssetItem item = loadGlobalArea().addAsset( "testSearchSharedAssetByFormat", "" );
+ item.updateFormat( "testSearchSharedAssetByFormat" );
item.checkin( "la" );
- AssetItem linkedItem = pkg2.addLinkedAsset( "testSearchLinkedAssetByFormatAsset2", item.getUUID(), null);
- linkedItem.updateFormat( "xyz" );
- linkedItem.checkin( "la" );
+ AssetItemIterator it = loadGlobalArea().queryAssets( "drools:format='testSearchSharedAssetByFormat'" );
+ List list = iteratorToList( it );
+ assertEquals(1, list.size());
+ assertTrue(list.get( 0 ) instanceof AssetItem);
+
+ PackageItem pkg2 = getRepo().createPackage( "testSearchSharedAssetByFormat", "" );
+ getRepo().save();
+ AssetItem linkedItem = pkg2.addAssetImportedFromGlobalArea(item.getName());
Thread.sleep( 150 );
- AssetItemIterator it = pkg1.queryAssets( "drools:format='xyz'" );
- List list = iteratorToList( it );
+ item = loadGlobalArea().loadAsset("testSearchSharedAssetByFormat");
+ assertEquals("testSearchSharedAssetByFormat", item.getFormat());
+
+ it = loadGlobalArea().queryAssets( "drools:format='testSearchSharedAssetByFormat'" );
+ list = iteratorToList( it );
assertEquals(1, list.size());
assertTrue(list.get( 0 ) instanceof AssetItem);
- linkedItem = pkg2.loadAsset("testSearchLinkedAssetByFormatAsset2");
+/* linkedItem = pkg2.loadAsset("testSearchLinkedAssetByFormatAsset2");
assertNotNull(linkedItem);
- assertTrue(linkedItem instanceof LinkedAssetItem);
- assertTrue(((LinkedAssetItem)linkedItem).isLinkedAssetItem());
- assertEquals("testSearchLinkedAssetByFormat2", linkedItem.getPackageName());
+ assertEquals("global", linkedItem.getPackageName());
it = pkg2.queryAssets( "drools:format='xyz'" );
- list = iteratorToList( it );
+ list = iteratorToList( it );*/
//REVISIT: Not working yet.
//assertEquals(1, list.size());
@@ -804,7 +804,7 @@
assertEquals(v, item.getVersionNumber());
}
-
+
static class MockAssetItem extends AssetItem {
private long version;
Modified: labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RulesRepositoryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RulesRepositoryTest.java 2009-11-11 06:29:14 UTC (rev 30096)
+++ labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RulesRepositoryTest.java 2009-11-11 07:14:46 UTC (rev 30097)
@@ -565,16 +565,20 @@
assertTrue( it.hasNext() );
boolean found = false;
+ //listPackages() should not return the global area even though the global area is a package.
+ boolean foundGlobalArea = false;
while ( it.hasNext() ) {
PackageItem element = (PackageItem) it.next();
if ( element.getName().equals( "testListPackages" ) ) {
found = true;
- break;
}
- System.out.println( element.getName() );
- }
+
+ if ( element.getName().equals(RulesRepository.RULE_GLOBAL_AREA) ) {
+ foundGlobalArea = true;
+ }
+ }
assertTrue( found );
-
+ assertFalse( foundGlobalArea );
}
public void testFindAssetsByState() throws Exception {
@@ -1045,41 +1049,35 @@
}
- public void testImportExport() {
- RulesRepository repo = RepositorySessionUtil.getRepository();
- byte[] repository_unitest;
- byte[] repository_backup;
+ public void xtestImportExport() {
+ RulesRepository repo = RepositorySessionUtil.getRepository();
+ byte[] repository_unitest;
+ byte[] repository_backup;
- try {
+ ByteArrayOutputStream bout = new ByteArrayOutputStream();
+ repo.exportRulesRepositoryToStream(bout);
+ repository_backup = bout.toByteArray();
+ assertNotNull(repository_backup);
- ByteArrayOutputStream bout = new ByteArrayOutputStream();
- repo.exportRulesRepositoryToStream(bout);
- repository_backup = bout.toByteArray();
- assertNotNull( repository_backup );
+ repo.createPackage("testImportExport", "nodescription");
+ bout = new ByteArrayOutputStream();
+ repo.exportRulesRepositoryToStream(bout);
- repo.createPackage( "testImportExport",
- "nodescription" );
- bout = new ByteArrayOutputStream();
- repo.exportRulesRepositoryToStream(bout);
+ repository_unitest = bout.toByteArray();
- repository_unitest = bout.toByteArray();
+ repo.importRulesRepositoryFromStream(new ByteArrayInputStream(
+ repository_backup));
+ assertFalse(repo.containsPackage("testImportExport"));
- repo.importRulesRepositoryFromStream(new ByteArrayInputStream(repository_backup));
- assertFalse( repo.containsPackage( "testImportExport" ) );
+ repo.importRulesRepositoryFromStream(new ByteArrayInputStream(
+ repository_unitest));
- repo.importRulesRepositoryFromStream(new ByteArrayInputStream(repository_unitest));
+ assertTrue(repo.containsPackage("testImportExport"));
- assertTrue( repo.containsPackage( "testImportExport" ) );
+ repo.importRepository(new ByteArrayInputStream(repository_unitest));
+ assertTrue(repo.containsPackage("testImportExport"));
+ }
- repo.importRepository(new ByteArrayInputStream(repository_unitest));
- assertTrue( repo.containsPackage( "testImportExport" ) );
-
- } catch ( Exception e ) {
- fail( "Can't throw any exception." );
- e.printStackTrace();
- }
- }
-
public void testShareableNodes() throws Exception {
RulesRepository repo = RepositorySessionUtil.getRepository();
AssetItem item = repo.loadDefaultPackage().addAsset("testShareableNodeOriginal", "desc");
@@ -1101,8 +1099,73 @@
assertTrue( originalItem.getContent().equals("la"));
assertTrue( sharedItem.getContent().equals("la"));
+
+ originalItem.remove();
}
+ public void testShareableNodesWithQuery() throws Exception {
+ RulesRepository repo = RepositorySessionUtil.getRepository();
+ AssetItem item = repo.loadGlobalArea().addAsset("testShareableNodesWithQueryOriginal", "desc");
+ item.updateFormat("xyz");
+ item.getNode().addMixin("mix:shareable");
+ PackageItem source = repo.createPackage("testShareableNodesWithQueryPackage", "desc");
+ repo.save();
+
+
+ AssetItemIterator it = repo.loadGlobalArea().queryAssets( "drools:format='xyz'" );
+ List list = iteratorToList( it );
+ assertEquals(1, list.size());
+ assertTrue(list.get( 0 ) instanceof AssetItem);
+
+ source.checkout();
+
+ Session session = repo.getSession();
+ Workspace workspace = session.getWorkspace();
+ String path = "/drools:repository/drools:package_area/testShareableNodesWithQueryPackage/assets/testShareableNodesWithQueryShared";
+ workspace.clone(workspace.getName(), item.getNode().getPath(), path, false);
+ repo.save();
+
+ AssetItem originalItem = repo.loadGlobalArea().loadAsset("testShareableNodesWithQueryOriginal");
+ AssetItem sharedItem = repo.loadPackage("testShareableNodesWithQueryPackage").loadAsset("testShareableNodesWithQueryShared");
+
+ assertTrue( originalItem.getFormat().equals("xyz"));
+ assertTrue( sharedItem.getFormat().equals("xyz"));
+
+ it = repo.loadGlobalArea().queryAssets( "drools:format='xyz'" );
+ list = iteratorToList( it );
+ assertEquals(1, list.size());
+ assertTrue(list.get( 0 ) instanceof AssetItem);
+ }
+
+ public void xtestImportExportWithShareableNodes() throws Exception {
+ RulesRepository repo = RepositorySessionUtil.getRepository();
+ AssetItem item = repo.loadDefaultPackage().addAsset("testShareableNodeOriginal", "desc");
+ item.updateContent("la");
+ item.getNode().addMixin("mix:shareable");
+ PackageItem source = repo.createPackage("testShareableNodesPackage", "desc");
+ repo.save();
+
+ source.checkout();
+
+ Session session = repo.getSession();
+ Workspace workspace = session.getWorkspace();
+ String path = "/drools:repository/drools:package_area/testShareableNodesPackage/assets/testShareableNodeShared";
+ workspace.clone(workspace.getName(), item.getNode().getPath(), path, false);
+ repo.save();
+
+ byte[] repository_backup;
+
+ ByteArrayOutputStream bout = new ByteArrayOutputStream();
+ repo.exportRulesRepositoryToStream(bout);
+ repository_backup = bout.toByteArray();
+ assertNotNull(repository_backup);
+
+ repo.importRulesRepositoryFromStream(new ByteArrayInputStream(
+ repository_backup));
+ assertTrue(repo.containsPackage("testShareableNodesPackage"));
+ assertTrue(repo.loadPackage("testShareableNodesPackage").containsAsset("testShareableNodeOriginal"));
+ }
+
//In this test case we expect an ItemExistException from the second thread,
//other than ending up with two packages with same name.
public void xtestConcurrentCopyPackage() throws Exception {
Copied: labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/ShareableAssetItemTest.java (from rev 29780, labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/LinkedAssetItemTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/ShareableAssetItemTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/ShareableAssetItemTest.java 2009-11-11 07:14:46 UTC (rev 30097)
@@ -0,0 +1,774 @@
+package org.drools.repository;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.jcr.version.Version;
+import javax.jcr.version.VersionIterator;
+
+import junit.framework.TestCase;
+import org.drools.repository.events.StorageEventManager;
+
+public class ShareableAssetItemTest extends TestCase {
+
+ private RulesRepository getRepo() {
+ return RepositorySessionUtil.getRepository();
+ }
+
+ private PackageItem loadGlobalArea() {
+ return getRepo().loadGlobalArea();
+ }
+
+ private PackageItem getDefaultPackage() {
+ return getRepo().loadDefaultPackage();
+ }
+
+
+ public void testCreateShareableAsset() throws Exception {
+ Calendar now = Calendar.getInstance();
+ 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");
+
+ //Test name
+ assertEquals("testCreateShareableAssetAsset", linkedRuleItem.getName());
+ assertEquals("testCreateShareableAssetAsset", ruleItem.getName());
+
+ //Test Date
+ assertNotNull(ruleItem.getCreatedDate());
+ assertNotNull(linkedRuleItem.getCreatedDate());
+ assertTrue(now.before(ruleItem.getCreatedDate()));
+ assertTrue(now.before(linkedRuleItem.getCreatedDate()));
+
+ //Test package name
+ assertEquals("globalArea", ruleItem.getPackageName());
+ //NOTE: For the asset that links to the shared asset, its package name is always "globalArea".
+ assertEquals("globalArea", linkedRuleItem.getPackageName());
+ assertEquals(loadGlobalArea().getUUID(), ruleItem.getPackage().getUUID());
+
+ //REVISIT: getPackage mess.
+ //assertEquals(loadGlobalArea().getUUID(), linkedRuleItem.getPackage().getUUID());
+ assertEquals("laa", linkedRuleItem.getContent());
+ assertEquals("laa", ruleItem.getContent());
+
+ //Test UUID
+ assertNotNull(ruleItem.getUUID());
+ assertNotNull(linkedRuleItem.getUUID());
+ //NOTE: They are same nodes. So same UUID!
+ assertTrue(linkedRuleItem.getUUID().equals(linkedRuleItem.getUUID()));
+ }
+
+ 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()));
+ }
+
+ 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());
+ }
+
+ 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());
+ }
+
+ public void testGetPackageItemHistoricalForShareableAsset() throws Exception {
+ AssetItem asset = loadGlobalArea().addAsset("testGetPackageItemHistoricalForShareableAsset", "test content");
+ //Version 1, created by the original asset
+ asset.checkin("initial");
+ AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
+
+ //Test package snapshot
+ getRepo().createPackageSnapshot(getDefaultPackage().getName(), "SNAP");
+
+ PackageItem pkgSnap = getRepo().loadPackageSnapshot(getDefaultPackage().getName(), "SNAP");
+ AssetItem assetSnap = pkgSnap.loadAsset("testGetPackageItemHistoricalForShareableAsset");
+ PackageItem pkgSnap1 = assetSnap.getPackage();
+ assertTrue(pkgSnap1.isSnapshot());
+ assertTrue(pkgSnap.isSnapshot());
+ assertFalse(getDefaultPackage().isSnapshot());
+ assertEquals(getDefaultPackage().getName(), pkgSnap1.getName());
+
+ AssetItem linkedAsset1 = getDefaultPackage().loadAsset("testGetPackageItemHistoricalForShareableAsset");
+ PackageItem linkedPkg = linkedAsset1.getPackage();
+ assertFalse(linkedPkg.isSnapshot());
+ assertFalse(getDefaultPackage().isSnapshot());
+ assertEquals(getDefaultPackage().getName(), linkedPkg.getName());
+
+ linkedAsset.updateDescription("yeah !");
+
+ //Version 3, created by LinkedAssetItem
+ linkedAsset.checkin("new");
+
+ linkedAsset = getDefaultPackage().loadAsset("testGetPackageItemHistoricalForShareableAsset");
+ assertNotNull(linkedAsset.getPackage());
+
+ AssetHistoryIterator linkedIt = linkedAsset.getHistory();
+ assertEquals(4, iteratorToList(linkedIt).size());
+
+ asset = getDefaultPackage().loadAsset("testGetPackageItemHistoricalForShareableAsset");
+ AssetHistoryIterator it = asset.getHistory();
+ assertEquals(4, iteratorToList(it).size());
+ }
+
+ List iteratorToList(Iterator it) {
+ List list = new ArrayList();
+ while(it.hasNext()) {
+ list.add( it.next() );
+ }
+ return list;
+ }
+
+ public void testGetContentForShareableAsset() {
+ AssetItem asset = getRepo().loadGlobalArea().addAsset(
+ "testGetContentForShareableAsset", "test content");
+ AssetItem linkedAsset = getRepo().loadDefaultPackage().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);
+ }
+
+ public void testUpdateContentForShareableAsset() throws Exception {
+ AssetItem asset = getRepo().loadGlobalArea().addAsset(
+ "testUpdateContentForShareableAsset", "test content");
+ AssetItem linkedAsset = getRepo().loadDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
+
+ assertFalse(asset.getCreator().equals(""));
+ assertFalse(linkedAsset.getCreator().equals(""));
+ linkedAsset.updateContent("test content");
+ linkedAsset.checkin("yeah");
+
+ assertFalse(linkedAsset.getLastContributor().equals(""));
+ assertFalse(asset.getLastContributor().equals(""));
+
+ linkedAsset.updateContent("new rule content");
+
+ assertEquals("new rule content", linkedAsset.getContent());
+
+ assertTrue(linkedAsset.getNode().getSession().hasPendingChanges());
+ assertTrue(asset.getNode().getSession().hasPendingChanges());
+
+ asset.checkin("yeah !");
+ assertFalse(asset.getNode().getSession().hasPendingChanges());
+ assertEquals("yeah !", asset.getCheckinComment());
+
+ try {
+ linkedAsset.checkin("yeah linked !");
+ fail("Did not get expected exception: Unable to checkin");
+ } catch (RulesRepositoryException e) {
+
+ }
+
+ AssetItem prev = (AssetItem) asset.getPrecedingVersion();
+ assertEquals("test content", prev.getContent());
+ assertFalse("yeah !".equals(prev.getCheckinComment()));
+
+ asset = getDefaultPackage().loadAsset("testUpdateContentForShareableAsset");
+ VersionIterator it = asset.getNode().getVersionHistory()
+ .getAllVersions();
+
+ // and this shows using a version iterator.
+ // perhaps migrate to using this rather then next/prev methods.
+ // this way, we can skip.
+ assertTrue(it.hasNext());
+ while (it.hasNext()) {
+ Version n = it.nextVersion();
+ AssetItem item = new AssetItem(asset.getRulesRepository(), n);
+ assertNotNull(item);
+ }
+ }
+
+ 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());
+ }
+
+ 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"));
+ }
+ }
+
+ 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());
+
+ linkedAsset.addCategory("testRemoveTagForShareableAssetTag1");
+ List tags = linkedAsset.getCategories();
+ assertEquals(1, tags.size());
+ linkedAsset.removeCategory("testRemoveTagForShareableAssetTag1");
+ tags = linkedAsset.getCategories();
+ assertEquals(0, tags.size());
+
+ linkedAsset.addCategory("testRemoveTagForShareableAssetTag2");
+ linkedAsset.addCategory("testRemoveTagForShareableAssetTag3");
+ linkedAsset.checkin("aaa");
+
+ linkedAsset.removeCategory("testRemoveTagForShareableAssetTag3");
+ linkedAsset.checkin("aaa");
+ getRepo().save();
+
+ tags = linkedAsset.getCategories();
+ assertEquals(1, tags.size());
+ assertEquals("testRemoveTagForShareableAssetTag2", ((CategoryItem) tags.get(0))
+ .getName());
+
+ try {
+ getRepo().loadCategory("testRemoveTagForShareableAssetTag2").remove();
+ fail("should not be able to remove");
+ } catch (RulesRepositoryException e) {
+ assertNotNull(e.getMessage());
+ }
+
+ //REVISIT:
+/* try {
+ getRepo().loadCategory("testRemoveTagForShareableAssetTag3").remove();
+ fail("should not reach here. Should have been removed");
+ } catch (RulesRepositoryException e) {
+ assertNotNull(e.getMessage());
+ }*/
+ }
+
+ 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());
+ }
+
+ 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();
+
+ assertEquals(cal, cal2);
+ }
+
+ 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();
+
+ assertEquals(cal, cal2);
+ }
+
+ 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());
+ }
+ }
+
+ public void testGetPrecedingVersionAndRestoreForShareableAsset() throws Exception {
+ getRepo().loadCategory("/").addCategory("testGetPrecedingVersionAndRestoreCat", "ka");
+ AssetItem asset = getRepo().loadGlobalArea().addAsset("testGetPrecedingVersionAndRestoreForShareableAsset", "desc");
+ asset.checkin("version0");
+ AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
+
+ //assertTrue(asset.getPrecedingVersion() == null);
+ assertNotNull(asset.getPrecedingVersion());
+ assertNotNull(linkedAsset.getPrecedingVersion());
+
+ linkedAsset.addCategory("testGetPrecedingVersionAndRestoreCat");
+ linkedAsset.updateContent("test content");
+ linkedAsset.updateDescription("descr2");
+ Thread.sleep(100);
+ linkedAsset.checkin("boo");
+
+ AssetItem predecessorRuleItem = (AssetItem)linkedAsset.getPrecedingVersion();
+ assertNotNull(predecessorRuleItem);
+
+ // check version handling
+ assertNotNull(predecessorRuleItem.getVersionSnapshotUUID());
+ assertFalse(predecessorRuleItem.getVersionSnapshotUUID().equals(
+ asset.getUUID()));
+
+ // assertEquals(predecessorRuleItem.getCreatedDate().getTimeInMillis(),
+ // ruleItem1.getCreatedDate().getTimeInMillis());
+
+ assertEquals(asset.getState().getName(), predecessorRuleItem
+ .getState().getName());
+ // assertEquals(ruleItem1.getName(), predecessorRuleItem.getName());
+
+ AssetItem loadedHistorical = getRepo().loadAssetByUUID(
+ predecessorRuleItem.getVersionSnapshotUUID());
+ assertTrue(loadedHistorical.isHistoricalVersion());
+ assertFalse(asset.getVersionNumber() == loadedHistorical
+ .getVersionNumber());
+
+ linkedAsset.updateContent("new content");
+ linkedAsset.checkin("two changes");
+
+ predecessorRuleItem = (AssetItem) linkedAsset.getPrecedingVersion();
+ assertNotNull(predecessorRuleItem);
+ assertEquals(1, predecessorRuleItem.getCategories().size());
+ CategoryItem cat = (CategoryItem) predecessorRuleItem.getCategories()
+ .get(0);
+ assertEquals("testGetPrecedingVersionAndRestoreCat", cat.getName());
+
+ assertEquals("test content", predecessorRuleItem.getContent());
+
+ assertEquals(getRepo().loadGlobalArea().getName(), predecessorRuleItem
+ .getPackageName());
+
+ linkedAsset.updateContent("newer lhs");
+ linkedAsset.checkin("another");
+
+ predecessorRuleItem = (AssetItem) linkedAsset.getPrecedingVersion();
+ assertNotNull(predecessorRuleItem);
+ assertEquals("new content", predecessorRuleItem.getContent());
+ predecessorRuleItem = (AssetItem) predecessorRuleItem
+ .getPrecedingVersion();
+ assertNotNull(predecessorRuleItem);
+ assertEquals("test content", predecessorRuleItem.getContent());
+
+ // now try restoring
+ long oldVersionNumber = asset.getVersionNumber();
+
+ AssetItem toRestore = getRepo().loadAssetByUUID(
+ predecessorRuleItem.getVersionSnapshotUUID());
+
+ getRepo().restoreHistoricalAsset(toRestore, linkedAsset,
+ "cause I want to");
+
+ AssetItem restored = getRepo().loadDefaultPackage().loadAsset(
+ "testGetPrecedingVersionAndRestoreForShareableAsset");
+
+ // assertEquals( predecessorRuleItem.getCheckinComment(),
+ // restored.getCheckinComment());
+ assertEquals(predecessorRuleItem.getDescription(), restored
+ .getDescription());
+ assertEquals("cause I want to", restored.getCheckinComment());
+ assertEquals(6, restored.getVersionNumber());
+ assertFalse(oldVersionNumber == restored.getVersionNumber());
+ }
+
+ public void testGetSucceedingVersionForShareableAsset() {
+ AssetItem asset = getRepo().loadGlobalArea().addAsset("testGetSucceedingVersionForShareableAsset", "desc");
+ asset.checkin("version0");
+ AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
+
+ //Making the assset sharable creates the version 2.
+ assertEquals(2, asset.getVersionNumber());
+ linkedAsset.updateContent("new content1");
+ linkedAsset.checkin("la");
+
+ AssetItem succeedingRuleItem = (AssetItem) linkedAsset.getSucceedingVersion();
+ assertTrue(succeedingRuleItem == null);
+
+ linkedAsset.updateContent("new content2");
+ linkedAsset.checkin("la");
+
+ assertEquals(4, linkedAsset.getVersionNumber());
+
+ AssetItem predecessorRuleItem = (AssetItem) linkedAsset
+ .getPrecedingVersion();
+ assertEquals("new content1", predecessorRuleItem.getContent());
+ succeedingRuleItem = (AssetItem) predecessorRuleItem
+ .getSucceedingVersion();
+ assertNotNull(succeedingRuleItem);
+ assertEquals(linkedAsset.getContent(), succeedingRuleItem.getContent());
+ }
+
+ public void testGetSuccessorVersionsIteratorForShareableAsset() {
+ AssetItem asset = getRepo().loadGlobalArea().addAsset(
+ "testGetSuccessorVersionsIteratorForShareableAsset", "desc");
+ asset.checkin("version0");
+ AssetItem linkedAsset = getDefaultPackage()
+ .addAssetImportedFromGlobalArea(asset.getName());
+
+ Iterator iterator = linkedAsset.getSuccessorVersionsIterator();
+ assertNotNull(iterator);
+ assertFalse(iterator.hasNext());
+
+ linkedAsset.updateContent("new content").checkin("ya");
+
+ iterator = linkedAsset.getSuccessorVersionsIterator();
+ assertNotNull(iterator);
+ assertFalse(iterator.hasNext());
+
+ AssetItem predecessorRuleItem = (AssetItem) linkedAsset
+ .getPrecedingVersion();
+ iterator = predecessorRuleItem.getSuccessorVersionsIterator();
+ assertNotNull(iterator);
+ assertTrue(iterator.hasNext());
+ AssetItem nextRuleItem = (AssetItem) iterator.next();
+ assertEquals("new content", nextRuleItem.getContent());
+ assertFalse(iterator.hasNext());
+
+ linkedAsset.updateContent("newer content");
+ linkedAsset.checkin("boo");
+
+ iterator = predecessorRuleItem.getSuccessorVersionsIterator();
+ assertNotNull(iterator);
+ assertTrue(iterator.hasNext());
+ nextRuleItem = (AssetItem) iterator.next();
+ assertEquals("new content", nextRuleItem.getContent());
+ assertTrue(iterator.hasNext());
+ nextRuleItem = (AssetItem) iterator.next();
+ assertEquals("newer content", nextRuleItem.getContent());
+ assertFalse(iterator.hasNext());
+ }
+
+ public void testGetPredecessorVersionsIteratorForShareableAsset() {
+ AssetItem asset = getRepo().loadGlobalArea().addAsset(
+ "testGetPredecessorVersionsIteratorForShareableAsset", "desc");
+ asset.checkin("version0");
+ AssetItem linkedAsset = getDefaultPackage()
+ .addAssetImportedFromGlobalArea(asset.getName());
+
+ linkedAsset.updateContent("test content");
+ linkedAsset.checkin("lalalalala");
+
+ Iterator iterator = linkedAsset.getPredecessorVersionsIterator();
+ assertNotNull(iterator);
+ assertTrue(iterator.hasNext());
+
+ asset.updateContent("new content");
+ asset.checkin("boo");
+
+ iterator = linkedAsset.getPredecessorVersionsIterator();
+ assertNotNull(iterator);
+ assertTrue(iterator.hasNext());
+ AssetItem nextRuleItem = (AssetItem) iterator.next();
+
+ assertEquals("test content", nextRuleItem.getContent());
+
+ asset.updateContent("newer content");
+ asset.checkin("wee");
+
+ iterator = linkedAsset.getPredecessorVersionsIterator();
+ assertNotNull(iterator);
+ assertTrue(iterator.hasNext());
+ nextRuleItem = (AssetItem) iterator.next();
+ assertTrue(iterator.hasNext());
+ assertEquals("new content", nextRuleItem.getContent());
+ nextRuleItem = (AssetItem) iterator.next();
+
+ assertEquals("test content", nextRuleItem.getContent());
+
+ assertEquals("", ((AssetItem) iterator.next()).getContent());
+ }
+
+ 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();
+ }
+ }
+
+ 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());
+ }
+
+ public void testDublinCorePropertiesForShareableAsset() {
+ AssetItem asset = getRepo().loadGlobalArea().addAsset("testDublinCorePropertiesForShareableAsset", "desc");
+ asset.checkin("version0");
+ AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
+
+ linkedAsset.updateCoverage("b");
+ assertEquals("b", linkedAsset.getCoverage());
+ linkedAsset.checkin("woo");
+
+ linkedAsset = getDefaultPackage().loadAsset("testDublinCorePropertiesForShareableAsset");
+ assertEquals("b", linkedAsset.getCoverage());
+ assertEquals("", linkedAsset.getExternalRelation());
+ assertEquals("", linkedAsset.getExternalSource());
+
+ linkedAsset = getRepo().loadGlobalArea().loadAsset("testDublinCorePropertiesForShareableAsset");
+ assertEquals("b", linkedAsset.getCoverage());
+ assertEquals("", linkedAsset.getExternalRelation());
+ assertEquals("", linkedAsset.getExternalSource());
+ }
+
+ 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());
+ }
+
+ 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());
+ }
+ }
+
+ public void testBinaryAssetForShareableAsset() throws Exception {
+ AssetItem asset = getRepo().loadGlobalArea().addAsset("testBinaryAssetForShareableAsset", "desc");
+ asset.checkin("version0");
+ AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
+
+ String data = "abc 123";
+ ByteArrayInputStream in = new ByteArrayInputStream(data.getBytes());
+ linkedAsset.updateBinaryContentAttachment(in);
+ linkedAsset.updateBinaryContentAttachmentFileName("x.x");
+ in.close();
+
+ assertEquals(data, linkedAsset.getContent());
+
+ assertFalse(linkedAsset.getNode().hasProperty(AssetItem.CONTENT_PROPERTY_NAME));
+ assertTrue(linkedAsset.getNode().hasProperty(
+ AssetItem.CONTENT_PROPERTY_BINARY_NAME));
+ linkedAsset.checkin("lalalala");
+
+ assertTrue(linkedAsset.isBinary());
+
+ asset = getRepo().loadGlobalArea().loadAsset("testBinaryAssetForShareableAsset");
+ InputStream in2 = asset.getBinaryContentAttachment();
+ assertNotNull(in2);
+
+ byte[] data2 = asset.getBinaryContentAsBytes();
+ assertEquals(data, new String(data2));
+ assertEquals("x.x", asset.getBinaryContentAttachmentFileName());
+ assertTrue(asset.isBinary());
+
+ linkedAsset.updateContent("qed");
+ linkedAsset.checkin("");
+ linkedAsset = getRepo().loadAssetByUUID(linkedAsset.getUUID());
+ assertEquals("qed", linkedAsset.getContent());
+ }
+
+}
More information about the jboss-svn-commits
mailing list