[jboss-svn-commits] JBL Code SVN: r23707 - in labs/jbossrules/trunk: drools-guvnor/src/main/java/org/drools/guvnor/client/rpc and 3 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Nov 5 03:26:50 EST 2008
Author: Rikkola
Date: 2008-11-05 03:26:50 -0500 (Wed, 05 Nov 2008)
New Revision: 23707
Added:
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/admin/StatusEditor.java
Modified:
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/admin/StateManager.java
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/server/RepositoryServiceServlet.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java
labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RulesRepository.java
labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/StateItem.java
labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RulesRepositoryTest.java
Log:
GUVNOR-51: Add rename/delete status
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/admin/StateManager.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/admin/StateManager.java 2008-11-05 03:30:46 UTC (rev 23706)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/admin/StateManager.java 2008-11-05 08:26:50 UTC (rev 23707)
@@ -1,4 +1,5 @@
package org.drools.guvnor.client.admin;
+
/*
* Copyright 2005 JBoss Inc
*
@@ -15,13 +16,13 @@
* limitations under the License.
*/
-
-
import org.drools.guvnor.client.common.GenericCallback;
import org.drools.guvnor.client.common.LoadingPopup;
import org.drools.guvnor.client.common.PrettyFormLayout;
import org.drools.guvnor.client.rpc.RepositoryServiceFactory;
+import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.Composite;
@@ -35,26 +36,105 @@
private ListBox currentStatuses;
-
public StateManager() {
PrettyFormLayout form = new PrettyFormLayout();
- form.addHeader("images/status_large.png", new HTML("<b>Manage statuses</b>"));
- form.startSection("Status tags are for the lifecycle of an asset.");
+ form.addHeader( "images/status_large.png",
+ new HTML( "<b>Manage statuses</b>" ) );
+ form.startSection( "Status tags are for the lifecycle of an asset." );
-
currentStatuses = new ListBox();
currentStatuses.setVisibleItemCount( 7 );
currentStatuses.setWidth( "50%" );
- refreshList( );
+ refreshList();
- form.addAttribute( "Current statuses:", currentStatuses );
+ form.addAttribute( "Current statuses:",
+ currentStatuses );
- form.addAttribute( "Add new status:", newStatusEditor() );
+ HorizontalPanel hPanel = new HorizontalPanel();
+ Button create = new Button( "New status" );
+ create.setTitle( "Create a new category" );
+ create.addClickListener( new ClickListener() {
+ public void onClick(Widget w) {
+ StatusEditor newCat = new StatusEditor( new Command() {
+ public void execute() {
+ refreshList();
+ }
+ } );
+
+ newCat.show();
+ }
+ } );
+
+ Button edit = new Button( "Rename selected" );
+ edit.addClickListener( new ClickListener() {
+ public void onClick(Widget w) {
+
+ if ( !currentStatuses.isItemSelected( currentStatuses.getSelectedIndex() ) ) {
+ Window.alert( "Please select a status to rename." );
+ return;
+ }
+ renameSelected();
+
+ }
+ } );
+
+ Button remove = new Button( "Delete selected" );
+ remove.addClickListener( new ClickListener() {
+ public void onClick(Widget w) {
+
+ if ( !currentStatuses.isItemSelected( currentStatuses.getSelectedIndex() ) ) {
+ Window.alert( "Please select a status to remove." );
+ return;
+ }
+
+ removeStatus();
+
+ }
+
+ } );
+ hPanel.add( create );
+ hPanel.add( edit );
+ hPanel.add( remove );
+
+ form.addAttribute( "Add new status:",
+ hPanel );
+
form.endSection();
initWidget( form );
}
+ private void removeStatus() {
+ String name = currentStatuses.getItemText( currentStatuses.getSelectedIndex() );
+
+ RepositoryServiceFactory.getService().removeState( name,
+ new GenericCallback() {
+ public void onSuccess(Object data) {
+ Window.alert( "Status removed." );
+ refreshList();
+ }
+ } );
+ }
+
+ private void renameSelected() {
+
+ String newName = Window.prompt( "Please enter the name you would like to change this status to",
+ "" );
+
+ String oldName = currentStatuses.getItemText( currentStatuses.getSelectedIndex() );
+
+ if ( newName != null ) {
+ RepositoryServiceFactory.getService().renameState( oldName,
+ newName,
+ new GenericCallback() {
+ public void onSuccess(Object data) {
+ Window.alert( "Status renamed." );
+ refreshList();
+ }
+ } );
+ }
+ }
+
private void refreshList() {
LoadingPopup.showMessage( "Loading statuses..." );
RepositoryServiceFactory.getService().listStates( new GenericCallback() {
@@ -66,37 +146,7 @@
}
LoadingPopup.close();
}
- });
+ } );
}
- private Widget newStatusEditor() {
- HorizontalPanel horiz = new HorizontalPanel();
- final TextBox box = new TextBox();
-
- Button create = new Button("Create");
- create.addClickListener( new ClickListener() {
- public void onClick(Widget w) {
- createStatus(box);
- }
- });
-
- horiz.add( box );
- horiz.add( create );
-
- return horiz;
- }
-
-
- private void createStatus(final TextBox box) {
- LoadingPopup.showMessage( "Creating status" );
- RepositoryServiceFactory.getService().createState( box.getText(), new GenericCallback() {
- public void onSuccess(Object data) {
- box.setText( "" );
- refreshList();
- LoadingPopup.close();
- }
- });
-
- }
-
}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/admin/StatusEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/admin/StatusEditor.java (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/admin/StatusEditor.java 2008-11-05 08:26:50 UTC (rev 23707)
@@ -0,0 +1,94 @@
+package org.drools.guvnor.client.admin;
+
+/*
+ * 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.common.ErrorPopup;
+import org.drools.guvnor.client.common.FormStylePopup;
+import org.drools.guvnor.client.common.GenericCallback;
+import org.drools.guvnor.client.common.LoadingPopup;
+import org.drools.guvnor.client.rpc.RepositoryServiceFactory;
+
+import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.ClickListener;
+import com.google.gwt.user.client.ui.TextBox;
+import com.google.gwt.user.client.ui.Widget;
+
+/**
+ * This provides a popup for editing a status (name etc).
+ * Mainly this is for creating a new status.
+ */
+public class StatusEditor extends FormStylePopup {
+
+ private TextBox name = new TextBox();
+ private Command refresh;
+
+ public StatusEditor(Command refresh) {
+ super( "images/edit_category.gif",
+ "Create new status" );
+ // TODO: Edit status image
+ this.refresh = refresh;
+
+ addAttribute( "Status name",
+ name );
+
+ Button ok = new Button( "OK" );
+ ok.addClickListener( new ClickListener() {
+ public void onClick(Widget arg0) {
+ ok();
+ }
+
+ } );
+ addAttribute( "",
+ ok );
+ }
+
+ void ok() {
+
+ if ( "".equals( this.name.getText() ) ) {
+ ErrorPopup.showMessage( "Can't have an empty status name." );
+ } else {
+ createStatus( name );
+ }
+ }
+
+ private void createStatus(final TextBox box) {
+ LoadingPopup.showMessage( "Creating status" );
+ RepositoryServiceFactory.getService().createState( box.getText(),
+ new GenericCallback() {
+ public void onSuccess(Object data) {
+ if ( data != null ) {
+ if ( refresh != null ) {
+ box.setText( "" );
+ LoadingPopup.close();
+ hide();
+ refresh.execute();
+ }
+ } else {
+
+ ErrorPopup.showMessage( "Status was not successfully created. " );
+
+ }
+ }
+ } );
+
+ }
+
+ void cancel() {
+ hide();
+ }
+}
\ No newline at end of file
Property changes on: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/admin/StatusEditor.java
___________________________________________________________________
Name: svn:mergeinfo
+
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 2008-11-05 03:30:46 UTC (rev 23706)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryService.java 2008-11-05 08:26:50 UTC (rev 23707)
@@ -172,6 +172,21 @@
* @return the UUID of the created StateItem.
*/
public String createState(String name) throws SerializableException;
+
+ /**
+ * Renames a state.
+ * @param oldName states old name.
+ * @param newName states new name.
+ * @throws SerializableException
+ */
+ public void renameState(String oldName, String newName) throws SerializableException;
+
+ /**
+ * Removes a state.
+ * @param name state name that will be removed.
+ * @throws SerializableException
+ */
+ public void removeState(String name) throws SerializableException;
/**
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 2008-11-05 03:30:46 UTC (rev 23706)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryServiceAsync.java 2008-11-05 08:26:50 UTC (rev 23707)
@@ -32,69 +32,69 @@
extends
RemoteService {
- /** PLACE THE FOLLOWING IN RepositoryServiceAsync.java **/
+ /** PLACE THE FOLLOWING IN RepositoryServiceAsync.java **/
- /** PLACE THE FOLLOWING IN RepositoryServiceAsync.java **/
-
- /** Generated by AsyncInterfaceGenerator hackery */
- public void loadChildCategories(java.lang.String p0, AsyncCallback cb);
- public void loadRuleListForCategories(java.lang.String p0, int p1, int p2, java.lang.String p3, AsyncCallback cb);
- public void loadRuleListForState(java.lang.String p0, int p1, int p2, java.lang.String p3, AsyncCallback cb);
- public void loadTableConfig(java.lang.String p0, AsyncCallback cb);
- public void createCategory(java.lang.String p0, java.lang.String p1, java.lang.String p2, AsyncCallback 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 cb);
- public void deleteUncheckedRule(java.lang.String p0, java.lang.String p1, AsyncCallback cb);
- public void clearRulesRepository(AsyncCallback cb);
- public void listPackages(AsyncCallback cb);
- public void listArchivedPackages(AsyncCallback cb);
- public void loadRuleAsset(java.lang.String p0, AsyncCallback cb);
- public void loadAssetHistory(java.lang.String p0, AsyncCallback cb);
- public void loadArchivedAssets(int p0, int p1, AsyncCallback cb);
- public void checkinVersion(org.drools.guvnor.client.rpc.RuleAsset p0, AsyncCallback cb);
- public void restoreVersion(java.lang.String p0, java.lang.String p1, java.lang.String p2, AsyncCallback cb);
- public void createPackage(java.lang.String p0, java.lang.String p1, AsyncCallback cb);
- public void loadPackageConfig(java.lang.String p0, AsyncCallback cb);
- public void savePackage(org.drools.guvnor.client.rpc.PackageConfigData p0, AsyncCallback cb);
- public void listAssets(java.lang.String p0, java.lang.String[] p1, int p2, int p3, java.lang.String p4, AsyncCallback cb);
- public void listStates(AsyncCallback cb);
- public void createState(java.lang.String p0, AsyncCallback cb);
- public void changeState(java.lang.String p0, java.lang.String p1, boolean p2, AsyncCallback cb);
- public void changeAssetPackage(java.lang.String p0, java.lang.String p1, java.lang.String p2, AsyncCallback cb);
- public void copyAsset(java.lang.String p0, java.lang.String p1, java.lang.String p2, AsyncCallback cb);
- public void copyPackage(java.lang.String p0, java.lang.String p1, AsyncCallback cb);
- public void listSnapshots(java.lang.String p0, AsyncCallback cb);
- public void createPackageSnapshot(java.lang.String p0, java.lang.String p1, boolean p2, java.lang.String p3, AsyncCallback cb);
- public void copyOrRemoveSnapshot(java.lang.String p0, java.lang.String p1, boolean p2, java.lang.String p3, AsyncCallback cb);
- public void quickFindAsset(java.lang.String p0, int p1, boolean p2, AsyncCallback cb);
- public void removeCategory(java.lang.String p0, AsyncCallback cb);
- public void loadSuggestionCompletionEngine(java.lang.String p0, AsyncCallback cb);
- public void buildPackage(java.lang.String p0, java.lang.String p1, boolean p2, AsyncCallback cb);
- public void buildPackageSource(java.lang.String p0, AsyncCallback cb);
- public void buildAssetSource(org.drools.guvnor.client.rpc.RuleAsset p0, AsyncCallback cb);
- public void buildAsset(org.drools.guvnor.client.rpc.RuleAsset p0, AsyncCallback cb);
- public void renameAsset(java.lang.String p0, java.lang.String p1, AsyncCallback cb);
- public void renameCategory(java.lang.String p0, java.lang.String p1, AsyncCallback cb);
- public void archiveAsset(java.lang.String p0, boolean p1, AsyncCallback cb);
- public void removeAsset(java.lang.String p0, AsyncCallback cb);
- public void removePackage(java.lang.String p0, AsyncCallback cb);
- public void renamePackage(java.lang.String p0, java.lang.String p1, AsyncCallback cb);
- public void rebuildSnapshots(AsyncCallback cb);
- public void rebuildPackages(AsyncCallback cb);
- public void listRulesInPackage(java.lang.String p0, AsyncCallback cb);
- public void runScenario(java.lang.String p0, org.drools.guvnor.client.modeldriven.testing.Scenario p1, AsyncCallback<SingleScenarioResult> cb);
- public void runScenariosInPackage(java.lang.String p0, AsyncCallback cb);
- public void analysePackage(java.lang.String p0, AsyncCallback cb);
- public void listTypesInPackage(java.lang.String p0, AsyncCallback cb);
- public void showLog(AsyncCallback cb);
- public void loadDropDownExpression(java.lang.String[] p0, java.lang.String p1, AsyncCallback cb);
- public void queryFullText(java.lang.String p0, boolean p1, int p2, int p3, AsyncCallback cb);
- public void queryMetaData(org.drools.guvnor.client.rpc.MetaDataQuery[] p0, java.util.Date p1, java.util.Date p2, java.util.Date p3, java.util.Date p4, boolean p5, int p6, int p7, AsyncCallback cb);
- public void listUserPermissions(AsyncCallback cb);
- public void retrieveUserPermissions(java.lang.String p0, AsyncCallback cb);
- public void updateUserPermissions(java.lang.String p0, java.util.Map p1, AsyncCallback cb);
- public void listAvailablePermissionTypes(AsyncCallback cb);
- public void deleteUser(java.lang.String p0, AsyncCallback cb);
- public void getAssetLockerUserName(java.lang.String p0, AsyncCallback cb);
+ /** Generated by AsyncInterfaceGenerator hackery */
+ public void loadChildCategories(java.lang.String p0, AsyncCallback cb);
+ public void loadRuleListForCategories(java.lang.String p0, int p1, int p2, java.lang.String p3, AsyncCallback cb);
+ public void loadRuleListForState(java.lang.String p0, int p1, int p2, java.lang.String p3, AsyncCallback cb);
+ public void loadTableConfig(java.lang.String p0, AsyncCallback cb);
+ public void createCategory(java.lang.String p0, java.lang.String p1, java.lang.String p2, AsyncCallback 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 cb);
+ public void deleteUncheckedRule(java.lang.String p0, java.lang.String p1, AsyncCallback cb);
+ public void clearRulesRepository(AsyncCallback cb);
+ public void listPackages(AsyncCallback cb);
+ public void listArchivedPackages(AsyncCallback cb);
+ public void loadRuleAsset(java.lang.String p0, AsyncCallback cb);
+ public void loadAssetHistory(java.lang.String p0, AsyncCallback cb);
+ public void loadArchivedAssets(int p0, int p1, AsyncCallback cb);
+ public void checkinVersion(org.drools.guvnor.client.rpc.RuleAsset p0, AsyncCallback cb);
+ public void restoreVersion(java.lang.String p0, java.lang.String p1, java.lang.String p2, AsyncCallback cb);
+ public void createPackage(java.lang.String p0, java.lang.String p1, AsyncCallback cb);
+ public void loadPackageConfig(java.lang.String p0, AsyncCallback cb);
+ public void savePackage(org.drools.guvnor.client.rpc.PackageConfigData p0, AsyncCallback cb);
+ public void listAssets(java.lang.String p0, java.lang.String[] p1, int p2, int p3, java.lang.String p4, AsyncCallback cb);
+ public void listStates(AsyncCallback cb);
+ public void createState(java.lang.String p0, AsyncCallback cb);
+ public void renameState(java.lang.String p0, java.lang.String p1, AsyncCallback cb);
+ public void removeState(java.lang.String p0, AsyncCallback cb);
+ public void changeState(java.lang.String p0, java.lang.String p1, boolean p2, AsyncCallback cb);
+ public void changeAssetPackage(java.lang.String p0, java.lang.String p1, java.lang.String p2, AsyncCallback cb);
+ public void copyAsset(java.lang.String p0, java.lang.String p1, java.lang.String p2, AsyncCallback cb);
+ public void copyPackage(java.lang.String p0, java.lang.String p1, AsyncCallback cb);
+ public void listSnapshots(java.lang.String p0, AsyncCallback cb);
+ public void createPackageSnapshot(java.lang.String p0, java.lang.String p1, boolean p2, java.lang.String p3, AsyncCallback cb);
+ public void copyOrRemoveSnapshot(java.lang.String p0, java.lang.String p1, boolean p2, java.lang.String p3, AsyncCallback cb);
+ public void quickFindAsset(java.lang.String p0, int p1, boolean p2, AsyncCallback cb);
+ public void removeCategory(java.lang.String p0, AsyncCallback cb);
+ public void loadSuggestionCompletionEngine(java.lang.String p0, AsyncCallback cb);
+ public void buildPackage(java.lang.String p0, java.lang.String p1, boolean p2, AsyncCallback cb);
+ public void buildPackageSource(java.lang.String p0, AsyncCallback cb);
+ public void buildAssetSource(org.drools.guvnor.client.rpc.RuleAsset p0, AsyncCallback cb);
+ public void buildAsset(org.drools.guvnor.client.rpc.RuleAsset p0, AsyncCallback cb);
+ public void renameAsset(java.lang.String p0, java.lang.String p1, AsyncCallback cb);
+ public void renameCategory(java.lang.String p0, java.lang.String p1, AsyncCallback cb);
+ public void archiveAsset(java.lang.String p0, boolean p1, AsyncCallback cb);
+ public void removeAsset(java.lang.String p0, AsyncCallback cb);
+ public void removePackage(java.lang.String p0, AsyncCallback cb);
+ public void renamePackage(java.lang.String p0, java.lang.String p1, AsyncCallback cb);
+ public void rebuildSnapshots(AsyncCallback cb);
+ public void rebuildPackages(AsyncCallback cb);
+ public void listRulesInPackage(java.lang.String p0, AsyncCallback cb);
+ public void runScenario(java.lang.String p0, org.drools.guvnor.client.modeldriven.testing.Scenario p1, AsyncCallback cb);
+ public void runScenariosInPackage(java.lang.String p0, AsyncCallback cb);
+ public void analysePackage(java.lang.String p0, AsyncCallback cb);
+ public void listTypesInPackage(java.lang.String p0, AsyncCallback cb);
+ public void showLog(AsyncCallback cb);
+ public void loadDropDownExpression(java.lang.String[] p0, java.lang.String p1, AsyncCallback cb);
+ public void queryFullText(java.lang.String p0, boolean p1, int p2, int p3, AsyncCallback cb);
+ public void queryMetaData(org.drools.guvnor.client.rpc.MetaDataQuery[] p0, java.util.Date p1, java.util.Date p2, java.util.Date p3, java.util.Date p4, boolean p5, int p6, int p7, AsyncCallback cb);
+ public void listUserPermissions(AsyncCallback cb);
+ public void retrieveUserPermissions(java.lang.String p0, AsyncCallback cb);
+ public void updateUserPermissions(java.lang.String p0, java.util.Map p1, AsyncCallback cb);
+ public void listAvailablePermissionTypes(AsyncCallback cb);
+ public void deleteUser(java.lang.String p0, AsyncCallback cb);
+ public void getAssetLockerUserName(java.lang.String p0, AsyncCallback cb);
public void lockAsset(java.lang.String p0, AsyncCallback cb);
public void unLockAsset(java.lang.String p0, AsyncCallback cb);
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 2008-11-05 03:30:46 UTC (rev 23706)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/RepositoryServiceServlet.java 2008-11-05 08:26:50 UTC (rev 23707)
@@ -14,6 +14,7 @@
import org.jboss.seam.contexts.Contexts;
import org.jboss.seam.security.AuthorizationException;
+import com.google.gwt.user.client.rpc.SerializableException;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
/**
@@ -128,6 +129,12 @@
public java.lang.String createState(java.lang.String p0) throws com.google.gwt.user.client.rpc.SerializableException {
return getService().createState( p0);
}
+ public void removeState(String name) throws SerializableException {
+ getService().removeState( name );
+ }
+ public void renameState(String oldName, String newName) throws SerializableException {
+ getService().renameState( oldName, newName );
+ }
public void changeState(java.lang.String p0, java.lang.String p1, boolean p2) {
getService().changeState( p0, p1, p2);
}
@@ -269,4 +276,5 @@
+
}
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 2008-11-05 03:30:46 UTC (rev 23706)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java 2008-11-05 08:26:50 UTC (rev 23707)
@@ -38,6 +38,7 @@
import java.util.regex.Pattern;
import javax.jcr.ItemExistsException;
+import javax.jcr.Node;
import javax.jcr.RepositoryException;
import org.apache.commons.io.IOUtils;
@@ -139,1955 +140,1999 @@
*/
@Name("org.drools.guvnor.client.rpc.RepositoryService")
@AutoCreate
-public class ServiceImplementation implements RepositoryService {
+public class ServiceImplementation
+ implements
+ RepositoryService {
- @In
- public RulesRepository repository;
+ @In
+ public RulesRepository repository;
- private static final long serialVersionUID = 400L;
+ private static final long serialVersionUID = 400L;
- private static final DateFormat dateFormatter = DateFormat.getInstance();
+ private static final DateFormat dateFormatter = DateFormat.getInstance();
- private static final Logger log = LoggingHelper.getLogger();
+ private static final Logger log = LoggingHelper.getLogger();
- private MetaDataMapper metaDataMapper = new MetaDataMapper();
+ private MetaDataMapper metaDataMapper = new MetaDataMapper();
- /**
- * Used for a simple cache of binary packages to avoid serialization from
- * the database - for test scenarios.
- */
- static Map<String, RuleBase> ruleBaseCache = Collections
- .synchronizedMap(new HashMap<String, RuleBase>());
+ /**
+ * Used for a simple cache of binary packages to avoid serialization from
+ * the database - for test scenarios.
+ */
+ static Map<String, RuleBase> ruleBaseCache = Collections.synchronizedMap( new HashMap<String, RuleBase>() );
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public String[] loadChildCategories(String categoryPath) {
- List<String> resultList = new ArrayList<String>();
- CategoryFilter filter = new CategoryFilter();
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public String[] loadChildCategories(String categoryPath) {
+ List<String> resultList = new ArrayList<String>();
+ CategoryFilter filter = new CategoryFilter();
- CategoryItem item = repository.loadCategory(categoryPath);
- List children = item.getChildTags();
- for (int i = 0; i < children.size(); i++) {
- String childCategoryName = ((CategoryItem) children.get(i)).getName();
- if (filter.acceptNavigate(categoryPath, childCategoryName)) {
- resultList.add(childCategoryName);
- }
- }
+ CategoryItem item = repository.loadCategory( categoryPath );
+ List children = item.getChildTags();
+ for ( int i = 0; i < children.size(); i++ ) {
+ String childCategoryName = ((CategoryItem) children.get( i )).getName();
+ if ( filter.acceptNavigate( categoryPath,
+ childCategoryName ) ) {
+ resultList.add( childCategoryName );
+ }
+ }
- String[] resultArr = resultList.toArray(new String[resultList.size()]);
- return resultArr;
- }
+ String[] resultArr = resultList.toArray( new String[resultList.size()] );
+ return resultArr;
+ }
- @WebRemote
- public Boolean createCategory(String path, String name, String description) {
- if (Contexts.isSessionContextActive()) {
- Identity.instance().checkPermission(
- new AdminType(),
- RoleTypes.ADMIN);
- }
+ @WebRemote
+ public Boolean createCategory(String path,
+ String name,
+ String description) {
+ if ( Contexts.isSessionContextActive() ) {
+ Identity.instance().checkPermission( new AdminType(),
+ RoleTypes.ADMIN );
+ }
- log.info("USER:" + repository.getSession().getUserID()
- + " CREATING cateogory: [" + name + "] in path [" + path + "]");
+ log.info( "USER:" + repository.getSession().getUserID() + " CREATING cateogory: [" + name + "] in path [" + path + "]" );
- if (path == null || "".equals(path)) {
- path = "/";
- }
+ if ( path == null || "".equals( path ) ) {
+ path = "/";
+ }
- CategoryItem item = repository.loadCategory(path);
- item.addCategory(name, description);
- repository.save();
- return Boolean.TRUE;
- }
+ CategoryItem item = repository.loadCategory( path );
+ item.addCategory( name,
+ description );
+ repository.save();
+ return Boolean.TRUE;
+ }
- /**
- * This will create a new asset. It will be saved, but not checked in. The
- * initial state will be the draft state.
- */
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public String createNewRule(String ruleName, String description,
- String initialCategory, String initialPackage, String format)
- throws SerializableException {
- if (Contexts.isSessionContextActive()) {
- Identity.instance().checkPermission(
- new PackageNameType(initialPackage),
- RoleTypes.PACKAGE_DEVELOPER);
- }
+ /**
+ * This will create a new asset. It will be saved, but not checked in. The
+ * initial state will be the draft state.
+ */
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public String createNewRule(String ruleName,
+ String description,
+ String initialCategory,
+ String initialPackage,
+ String format) throws SerializableException {
+ if ( Contexts.isSessionContextActive() ) {
+ Identity.instance().checkPermission( new PackageNameType( initialPackage ),
+ RoleTypes.PACKAGE_DEVELOPER );
+ }
- log.info("USER:" + repository.getSession().getUserID()
- + " CREATING new asset name [" + ruleName + "] in package ["
- + initialPackage + "]");
+ log.info( "USER:" + repository.getSession().getUserID() + " CREATING new asset name [" + ruleName + "] in package [" + initialPackage + "]" );
- try {
+ try {
- PackageItem pkg = repository.loadPackage(initialPackage);
- AssetItem asset = pkg.addAsset(ruleName, description,
- initialCategory, format);
+ PackageItem pkg = repository.loadPackage( initialPackage );
+ AssetItem asset = pkg.addAsset( ruleName,
+ description,
+ initialCategory,
+ format );
- applyPreBuiltTemplates(ruleName, format, asset);
- repository.save();
+ applyPreBuiltTemplates( ruleName,
+ format,
+ asset );
+ repository.save();
- return asset.getUUID();
- } catch (RulesRepositoryException e) {
- if (e.getCause() instanceof ItemExistsException) {
- return "DUPLICATE";
- } else {
- log.error(e);
- throw new SerializableException(e.getMessage());
- }
- }
+ return asset.getUUID();
+ } catch ( RulesRepositoryException e ) {
+ if ( e.getCause() instanceof ItemExistsException ) {
+ return "DUPLICATE";
+ } else {
+ log.error( e );
+ throw new SerializableException( e.getMessage() );
+ }
+ }
- }
+ }
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public void deleteUncheckedRule(String uuid, String initialPackage) {
- if (Contexts.isSessionContextActive()) {
- Identity.instance().checkPermission(
- new AdminType(),
- RoleTypes.PACKAGE_ADMIN);
- }
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public void deleteUncheckedRule(String uuid,
+ String initialPackage) {
+ if ( Contexts.isSessionContextActive() ) {
+ Identity.instance().checkPermission( new AdminType(),
+ RoleTypes.PACKAGE_ADMIN );
+ }
- AssetItem asset = repository.loadAssetByUUID(uuid);
- asset.remove();
- repository.save();
- }
+ AssetItem asset = repository.loadAssetByUUID( uuid );
+ asset.remove();
+ repository.save();
+ }
- /**
- * For some format types, we add some sugar by adding a new template.
- */
- private void applyPreBuiltTemplates(String ruleName, String format,
- AssetItem asset) {
- if (format.equals(AssetFormats.DSL_TEMPLATE_RULE)) {
- asset.updateContent("when\n\nthen\n");
- } else if (format.equals(AssetFormats.FUNCTION)) {
- asset.updateContent("function <returnType> " + ruleName
- + "(<args here>) {\n\n\n}");
- } else if (format.equals(AssetFormats.DSL)) {
- asset.updateContent("[when]Condition sentence template {var}="
- + "rule language mapping {var}\n"
- + "[then]Action sentence template=rule language mapping");
- } else if (format.equals(AssetFormats.DECISION_SPREADSHEET_XLS)) {
- asset.updateBinaryContentAttachment(this.getClass()
- .getResourceAsStream("/SampleDecisionTable.xls"));
- asset
- .updateBinaryContentAttachmentFileName("SampleDecisionTable.xls");
- } else if (format.equals(AssetFormats.DRL)) {
- asset.updateContent("when\n\t#conditions\nthen\n\t#actions");
- } else if (format.equals(AssetFormats.ENUMERATION)) {
+ /**
+ * For some format types, we add some sugar by adding a new template.
+ */
+ private void applyPreBuiltTemplates(String ruleName,
+ String format,
+ AssetItem asset) {
+ if ( format.equals( AssetFormats.DSL_TEMPLATE_RULE ) ) {
+ asset.updateContent( "when\n\nthen\n" );
+ } else if ( format.equals( AssetFormats.FUNCTION ) ) {
+ asset.updateContent( "function <returnType> " + ruleName + "(<args here>) {\n\n\n}" );
+ } else if ( format.equals( AssetFormats.DSL ) ) {
+ asset.updateContent( "[when]Condition sentence template {var}=" + "rule language mapping {var}\n" + "[then]Action sentence template=rule language mapping" );
+ } else if ( format.equals( AssetFormats.DECISION_SPREADSHEET_XLS ) ) {
+ asset.updateBinaryContentAttachment( this.getClass().getResourceAsStream( "/SampleDecisionTable.xls" ) );
+ asset.updateBinaryContentAttachmentFileName( "SampleDecisionTable.xls" );
+ } else if ( format.equals( AssetFormats.DRL ) ) {
+ asset.updateContent( "when\n\t#conditions\nthen\n\t#actions" );
+ } else if ( format.equals( AssetFormats.ENUMERATION ) ) {
- }
- }
+ }
+ }
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public PackageConfigData[] listPackages() {
- RepositoryFilter pf = new PackageFilter();
- return listPackages(false, pf);
- }
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public PackageConfigData[] listPackages() {
+ RepositoryFilter pf = new PackageFilter();
+ return listPackages( false,
+ pf );
+ }
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public PackageConfigData[] listArchivedPackages() {
- RepositoryFilter pf = new PackageFilter();
- return listPackages(true, pf);
- }
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public PackageConfigData[] listArchivedPackages() {
+ RepositoryFilter pf = new PackageFilter();
+ return listPackages( true,
+ pf );
+ }
- private PackageConfigData[] listPackages(boolean archive,
- RepositoryFilter filter) {
- List<PackageConfigData> result = new ArrayList<PackageConfigData>();
- PackageIterator pkgs = repository.listPackages();
- pkgs.setArchivedIterator(archive);
- while (pkgs.hasNext()) {
- PackageItem pkg = (PackageItem) pkgs.next();
+ private PackageConfigData[] listPackages(boolean archive,
+ RepositoryFilter filter) {
+ List<PackageConfigData> result = new ArrayList<PackageConfigData>();
+ PackageIterator pkgs = repository.listPackages();
+ pkgs.setArchivedIterator( archive );
+ while ( pkgs.hasNext() ) {
+ PackageItem pkg = (PackageItem) pkgs.next();
- PackageConfigData data = new PackageConfigData();
- data.uuid = pkg.getUUID();
- data.name = pkg.getName();
- data.archived = pkg.isArchived();
- if (!archive
- && (filter == null || filter.accept(data,
- RoleTypes.PACKAGE_READONLY))) {
- result.add(data);
- } else if (archive
- && data.archived
- && (filter == null || filter.accept(data,
- RoleTypes.PACKAGE_READONLY))) {
- result.add(data);
- }
- }
+ PackageConfigData data = new PackageConfigData();
+ data.uuid = pkg.getUUID();
+ data.name = pkg.getName();
+ data.archived = pkg.isArchived();
+ if ( !archive && (filter == null || filter.accept( data,
+ RoleTypes.PACKAGE_READONLY )) ) {
+ result.add( data );
+ } else if ( archive && data.archived && (filter == null || filter.accept( data,
+ RoleTypes.PACKAGE_READONLY )) ) {
+ result.add( data );
+ }
+ }
- sortPackages(result);
- PackageConfigData[] resultArr = result
- .toArray(new PackageConfigData[result.size()]);
- return resultArr;
- }
+ sortPackages( result );
+ PackageConfigData[] resultArr = result.toArray( new PackageConfigData[result.size()] );
+ return resultArr;
+ }
- void sortPackages(List<PackageConfigData> result) {
- Collections.sort(result, new Comparator<Object>() {
+ void sortPackages(List<PackageConfigData> result) {
+ Collections.sort( result,
+ new Comparator<Object>() {
- public int compare(final Object o1, final Object o2) {
- final PackageConfigData d1 = (PackageConfigData) o1;
- final PackageConfigData d2 = (PackageConfigData) o2;
- return d1.name.compareTo(d2.name);
- }
+ public int compare(final Object o1,
+ final Object o2) {
+ final PackageConfigData d1 = (PackageConfigData) o1;
+ final PackageConfigData d2 = (PackageConfigData) o2;
+ return d1.name.compareTo( d2.name );
+ }
- });
- }
+ } );
+ }
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- /**
- * loadRuleListForCategories
- *
- * Role-based Authorization check: This method can be accessed if user has
- * following permissions:
- * 1. The user has Analyst role and this role has permission to access the category
- * Or.
- * 2. The user has one of the following roles: package.readonly|package.admin|package.developer.
- * In this case, this method only returns assets that belong to packages the role has at least
- * package.readonly permission to access.
- */
- public TableDataResult loadRuleListForCategories(String categoryPath,
- int skip, int numRows, String tableConfig)
- throws SerializableException {
- // love you
- // long time = System.currentTimeMillis();
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ /**
+ * loadRuleListForCategories
+ *
+ * Role-based Authorization check: This method can be accessed if user has
+ * following permissions:
+ * 1. The user has Analyst role and this role has permission to access the category
+ * Or.
+ * 2. The user has one of the following roles: package.readonly|package.admin|package.developer.
+ * In this case, this method only returns assets that belong to packages the role has at least
+ * package.readonly permission to access.
+ */
+ public TableDataResult loadRuleListForCategories(String categoryPath,
+ int skip,
+ int numRows,
+ String tableConfig) throws SerializableException {
+ // love you
+ // long time = System.currentTimeMillis();
- // First check the user has permission to access this categoryPath.
- if (Contexts.isSessionContextActive()) {
- if (!Identity.instance().hasPermission(new CategoryPathType(categoryPath), RoleTypes.ANALYST_READ)) {
- TableDisplayHandler handler = new TableDisplayHandler(tableConfig);
- return handler.loadRuleListTable(new AssetPageList());
- }
- }
+ // First check the user has permission to access this categoryPath.
+ if ( Contexts.isSessionContextActive() ) {
+ if ( !Identity.instance().hasPermission( new CategoryPathType( categoryPath ),
+ RoleTypes.ANALYST_READ ) ) {
+ TableDisplayHandler handler = new TableDisplayHandler( tableConfig );
+ return handler.loadRuleListTable( new AssetPageList() );
+ }
+ }
- //use AssetItemFilter to enforce package-based permissions.
- RepositoryFilter filter = new AssetItemFilter();
- AssetPageList list = repository.findAssetsByCategory(categoryPath,
- false, skip, numRows, filter);
- TableDisplayHandler handler = new TableDisplayHandler(tableConfig);
- // log.debug("time for load: " + (System.currentTimeMillis() - time) );
- return handler.loadRuleListTable(list);
+ //use AssetItemFilter to enforce package-based permissions.
+ RepositoryFilter filter = new AssetItemFilter();
+ AssetPageList list = repository.findAssetsByCategory( categoryPath,
+ false,
+ skip,
+ numRows,
+ filter );
+ TableDisplayHandler handler = new TableDisplayHandler( tableConfig );
+ // log.debug("time for load: " + (System.currentTimeMillis() - time) );
+ return handler.loadRuleListTable( list );
- }
+ }
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public TableDataResult loadRuleListForState(String stateName, int skip,
- int numRows, String tableConfig) throws SerializableException {
- // love you
- // long time = System.currentTimeMillis();
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public TableDataResult loadRuleListForState(String stateName,
+ int skip,
+ int numRows,
+ String tableConfig) throws SerializableException {
+ // love you
+ // long time = System.currentTimeMillis();
- RepositoryFilter filter = new AssetItemFilter();
- AssetPageList list = repository.findAssetsByState(stateName, false,
- skip, numRows, filter);
- TableDisplayHandler handler = new TableDisplayHandler(tableConfig);
- // log.debug("time for load: " + (System.currentTimeMillis() - time) );
- return handler.loadRuleListTable(list);
+ RepositoryFilter filter = new AssetItemFilter();
+ AssetPageList list = repository.findAssetsByState( stateName,
+ false,
+ skip,
+ numRows,
+ filter );
+ TableDisplayHandler handler = new TableDisplayHandler( tableConfig );
+ // log.debug("time for load: " + (System.currentTimeMillis() - time) );
+ return handler.loadRuleListTable( list );
- }
+ }
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public TableConfig loadTableConfig(String listName) {
- TableDisplayHandler handler = new TableDisplayHandler(listName);
- return handler.loadTableConfig();
- }
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public TableConfig loadTableConfig(String listName) {
+ TableDisplayHandler handler = new TableDisplayHandler( listName );
+ return handler.loadTableConfig();
+ }
- /**
- * This actually does the hard work of loading up an asset based on its
- * format.
- *
- * Role-based Authorization check: This method can be accessed if user has
- * following permissions:
- * 1. The user has Analyst role and this role has permission to access the category
- * which the asset belongs to.
- * Or.
- * 2. The user has package.readonly role (or package.admin, package.developer)
- * and this role has permission to access the package which the asset belongs to.
- */
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public RuleAsset loadRuleAsset(String uuid) throws SerializableException {
- AssetItem item = repository.loadAssetByUUID(uuid);
- RuleAsset asset = new RuleAsset();
+ /**
+ * This actually does the hard work of loading up an asset based on its
+ * format.
+ *
+ * Role-based Authorization check: This method can be accessed if user has
+ * following permissions:
+ * 1. The user has Analyst role and this role has permission to access the category
+ * which the asset belongs to.
+ * Or.
+ * 2. The user has package.readonly role (or package.admin, package.developer)
+ * and this role has permission to access the package which the asset belongs to.
+ */
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public RuleAsset loadRuleAsset(String uuid) throws SerializableException {
+ AssetItem item = repository.loadAssetByUUID( uuid );
+ RuleAsset asset = new RuleAsset();
- asset.uuid = uuid;
+ asset.uuid = uuid;
- // load standard meta data
- asset.metaData = populateMetaData(item);
+ // load standard meta data
+ asset.metaData = populateMetaData( item );
- if (Contexts.isSessionContextActive()) {
- Identity.instance().checkPermission(
- new PackageNameType(asset.metaData.packageName),
- RoleTypes.PACKAGE_READONLY);
+ if ( Contexts.isSessionContextActive() ) {
+ Identity.instance().checkPermission( new PackageNameType( asset.metaData.packageName ),
+ RoleTypes.PACKAGE_READONLY );
- if(asset.metaData.categories.length == 0) {
- Identity.instance().checkPermission(
- new CategoryPathType(null),
- RoleTypes.ANALYST_READ);
- } else {
- boolean passed = false;
- RuntimeException exception = null;
+ if ( asset.metaData.categories.length == 0 ) {
+ Identity.instance().checkPermission( new CategoryPathType( null ),
+ RoleTypes.ANALYST_READ );
+ } else {
+ boolean passed = false;
+ RuntimeException exception = null;
- for (String cat : asset.metaData.categories) {
- try {
- Identity.instance().checkPermission(
- new CategoryPathType(cat), RoleTypes.ANALYST_READ);
- passed = true;
- } catch (RuntimeException e) {
- exception = e;
- }
- }
- if (!passed) {
- throw exception;
- }
- }
- }
+ for ( String cat : asset.metaData.categories ) {
+ try {
+ Identity.instance().checkPermission( new CategoryPathType( cat ),
+ RoleTypes.ANALYST_READ );
+ passed = true;
+ } catch ( RuntimeException e ) {
+ exception = e;
+ }
+ }
+ if ( !passed ) {
+ throw exception;
+ }
+ }
+ }
+ // get package header
- // get package header
+ // PackageItem pkgItem = repository
+ // .loadPackage(asset.metaData.packageName);
+ PackageItem pkgItem = item.getPackage();
+ // load the content
+ ContentHandler handler = ContentManager.getHandler( asset.metaData.format );
+ handler.retrieveAssetContent( asset,
+ pkgItem,
+ item );
+ if ( pkgItem.isSnapshot() ) {
+ asset.isreadonly = true;
+ }
+ return asset;
-// PackageItem pkgItem = repository
-// .loadPackage(asset.metaData.packageName);
- PackageItem pkgItem = item.getPackage();
+ }
+ private RuleAsset loadAsset(AssetItem item) throws SerializableException {
+ RuleAsset asset = new RuleAsset();
+ asset.uuid = item.getUUID();
+ // load standard meta data
+ asset.metaData = populateMetaData( item );
+ // get package header
+ PackageItem pkgItem = item.getPackage();
+ // load the content
+ ContentHandler handler = ContentManager.getHandler( asset.metaData.format );
+ handler.retrieveAssetContent( asset,
+ pkgItem,
+ item );
+ return asset;
+ }
- // load the content
- ContentHandler handler = ContentManager
- .getHandler(asset.metaData.format);
- handler.retrieveAssetContent(asset, pkgItem, item);
- if (pkgItem.isSnapshot()) {
- asset.isreadonly = true;
- }
- return asset;
+ /**
+ * read in the meta data, populating all dublin core and versioning stuff.
+ */
+ MetaData populateMetaData(VersionableItem item) {
+ MetaData meta = new MetaData();
- }
+ meta.status = (item.getState() != null) ? item.getState().getName() : "";
- private RuleAsset loadAsset(AssetItem item) throws SerializableException {
- RuleAsset asset = new RuleAsset();
- asset.uuid = item.getUUID();
- // load standard meta data
- asset.metaData = populateMetaData(item);
- // get package header
- PackageItem pkgItem = item.getPackage();
- // load the content
- ContentHandler handler = ContentManager
- .getHandler(asset.metaData.format);
- handler.retrieveAssetContent(asset, pkgItem, item);
- return asset;
- }
+ metaDataMapper.copyToMetaData( meta,
+ item );
- /**
- * read in the meta data, populating all dublin core and versioning stuff.
- */
- MetaData populateMetaData(VersionableItem item) {
- MetaData meta = new MetaData();
+ meta.createdDate = calendarToDate( item.getCreatedDate() );
+ meta.lastModifiedDate = calendarToDate( item.getLastModified() );
- meta.status = (item.getState() != null) ? item.getState().getName()
- : "";
+ return meta;
+ }
- metaDataMapper.copyToMetaData(meta, item);
+ /**
+ * Populate meta data with asset specific info.
+ */
+ MetaData populateMetaData(AssetItem item) {
+ MetaData meta = populateMetaData( (VersionableItem) item );
+ meta.packageName = item.getPackageName();
- meta.createdDate = calendarToDate(item.getCreatedDate());
- meta.lastModifiedDate = calendarToDate(item.getLastModified());
+ List cats = item.getCategories();
+ meta.categories = new String[cats.size()];
+ for ( int i = 0; i < meta.categories.length; i++ ) {
+ CategoryItem cat = (CategoryItem) cats.get( i );
+ meta.categories[i] = cat.getFullPath();
+ }
+ meta.dateEffective = calendarToDate( item.getDateEffective() );
+ meta.dateExpired = calendarToDate( item.getDateExpired() );
+ return meta;
- return meta;
- }
+ }
- /**
- * Populate meta data with asset specific info.
- */
- MetaData populateMetaData(AssetItem item) {
- MetaData meta = populateMetaData((VersionableItem) item);
- meta.packageName = item.getPackageName();
+ private Date calendarToDate(Calendar createdDate) {
+ if ( createdDate == null ) return null;
+ return createdDate.getTime();
+ }
- List cats = item.getCategories();
- meta.categories = new String[cats.size()];
- for (int i = 0; i < meta.categories.length; i++) {
- CategoryItem cat = (CategoryItem) cats.get(i);
- meta.categories[i] = cat.getFullPath();
- }
- meta.dateEffective = calendarToDate(item.getDateEffective());
- meta.dateExpired = calendarToDate(item.getDateExpired());
- return meta;
+ private Calendar dateToCalendar(Date date) {
+ if ( date == null ) return null;
+ Calendar cal = Calendar.getInstance();
+ cal.setTime( date );
+ return cal;
+ }
- }
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ /**
+ *
+ * Role-based Authorization check: This method can be accessed if user has
+ * following permissions:
+ * 1. The user has Analyst role and this role has permission to access the category
+ * which the asset belongs to.
+ * Or.
+ * 2. The user has package.readonly role (or package.admin, package.developer)
+ * and this role has permission to access the package which the asset belongs to.
+ */
+ public String checkinVersion(RuleAsset asset) throws SerializableException {
+ if ( Contexts.isSessionContextActive() ) {
+ Identity.instance().checkPermission( new PackageNameType( asset.metaData.packageName ),
+ RoleTypes.PACKAGE_DEVELOPER );
- private Date calendarToDate(Calendar createdDate) {
- if (createdDate == null)
- return null;
- return createdDate.getTime();
- }
+ if ( asset.metaData.categories.length == 0 ) {
+ Identity.instance().checkPermission( new CategoryPathType( null ),
+ RoleTypes.ANALYST );
+ } else {
+ boolean passed = false;
+ RuntimeException exception = null;
- private Calendar dateToCalendar(Date date) {
- if (date == null)
- return null;
- Calendar cal = Calendar.getInstance();
- cal.setTime(date);
- return cal;
- }
+ for ( String cat : asset.metaData.categories ) {
+ try {
+ Identity.instance().checkPermission( new CategoryPathType( cat ),
+ RoleTypes.ANALYST );
+ passed = true;
+ } catch ( RuntimeException e ) {
+ exception = e;
+ }
+ }
+ if ( !passed ) {
+ throw exception;
+ }
+ }
+ }
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- /**
- *
- * Role-based Authorization check: This method can be accessed if user has
- * following permissions:
- * 1. The user has Analyst role and this role has permission to access the category
- * which the asset belongs to.
- * Or.
- * 2. The user has package.readonly role (or package.admin, package.developer)
- * and this role has permission to access the package which the asset belongs to.
- */
- public String checkinVersion(RuleAsset asset) throws SerializableException {
- if (Contexts.isSessionContextActive()) {
- Identity.instance().checkPermission(
- new PackageNameType(asset.metaData.packageName),
- RoleTypes.PACKAGE_DEVELOPER);
+ log.info( "USER:" + repository.getSession().getUserID() + " CHECKING IN asset: [" + asset.metaData.name + "] UUID: [" + asset.uuid + "] ARCHIVED [" + asset.archived + "]" );
- if(asset.metaData.categories.length == 0) {
- Identity.instance().checkPermission(
- new CategoryPathType(null),
- RoleTypes.ANALYST);
- } else {
- boolean passed = false;
- RuntimeException exception = null;
+ AssetItem repoAsset = repository.loadAssetByUUID( asset.uuid );
+ if ( asset.metaData.lastModifiedDate.before( repoAsset.getLastModified().getTime() ) ) {
+ return "ERR: Unable to save this asset, as it has been recently updated by [" + repoAsset.getLastContributor() + "]";
+ }
- for (String cat : asset.metaData.categories) {
- try {
- Identity.instance().checkPermission(
- new CategoryPathType(cat), RoleTypes.ANALYST);
- passed = true;
- } catch (RuntimeException e) {
- exception = e;
- }
- }
- if (!passed) {
- throw exception;
- }
- }
- }
+ repoAsset.archiveItem( asset.archived );
+ MetaData meta = asset.metaData;
+ metaDataMapper.copyFromMetaData( meta,
+ repoAsset );
+ repoAsset.updateDateEffective( dateToCalendar( meta.dateEffective ) );
+ repoAsset.updateDateExpired( dateToCalendar( meta.dateExpired ) );
- log.info("USER:" + repository.getSession().getUserID()
- + " CHECKING IN asset: [" + asset.metaData.name + "] UUID: ["
- + asset.uuid + "] ARCHIVED [" + asset.archived + "]");
+ repoAsset.updateCategoryList( meta.categories );
+ ContentHandler handler = ContentManager.getHandler( repoAsset.getFormat() );// new AssetContentFormatHandler();
+ handler.storeAssetContent( asset,
+ repoAsset );
- AssetItem repoAsset = repository.loadAssetByUUID(asset.uuid);
- if (asset.metaData.lastModifiedDate.before(repoAsset.getLastModified()
- .getTime())) {
- return "ERR: Unable to save this asset, as it has been recently updated by ["
- + repoAsset.getLastContributor() + "]";
- }
+ if ( !(asset.metaData.format.equals( AssetFormats.TEST_SCENARIO )) || asset.metaData.format.equals( AssetFormats.ENUMERATION ) ) {
+ PackageItem pkg = repoAsset.getPackage();
+ pkg.updateBinaryUpToDate( false );
+ this.ruleBaseCache.remove( pkg.getUUID() );
- repoAsset.archiveItem(asset.archived);
- MetaData meta = asset.metaData;
+ }
- metaDataMapper.copyFromMetaData(meta, repoAsset);
+ repoAsset.checkin( meta.checkinComment );
- repoAsset.updateDateEffective(dateToCalendar(meta.dateEffective));
- repoAsset.updateDateExpired(dateToCalendar(meta.dateExpired));
+ return repoAsset.getUUID();
+ }
- repoAsset.updateCategoryList(meta.categories);
- ContentHandler handler = ContentManager.getHandler(repoAsset
- .getFormat());// new AssetContentFormatHandler();
- handler.storeAssetContent(asset, repoAsset);
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public TableDataResult loadAssetHistory(String uuid) throws SerializableException {
- if (!(asset.metaData.format.equals(AssetFormats.TEST_SCENARIO))
- || asset.metaData.format.equals(AssetFormats.ENUMERATION)) {
- PackageItem pkg = repoAsset.getPackage();
- pkg.updateBinaryUpToDate(false);
- this.ruleBaseCache.remove(pkg.getUUID());
+ List<TableDataRow> result = new ArrayList<TableDataRow>();
- }
+ AssetItem item = repository.loadAssetByUUID( uuid );
- repoAsset.checkin(meta.checkinComment);
+ if ( Contexts.isSessionContextActive() ) {
+ Identity.instance().checkPermission( new PackageUUIDType( item.getPackage().getUUID() ),
+ RoleTypes.PACKAGE_READONLY );
+ }
- return repoAsset.getUUID();
- }
+ AssetHistoryIterator it = item.getHistory();
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public TableDataResult loadAssetHistory(String uuid)
- throws SerializableException {
+ // MN Note: this uses the lazy iterator, but then loads the whole lot
+ // up, and returns it.
+ // The reason for this is that the GUI needs to show things in numeric
+ // order by the version number.
+ // When a version is restored, its previous version is NOT what you
+ // thought it was - due to how JCR works
+ // (its more like CVS then SVN). So to get a linear progression of
+ // versions, we use the incrementing version number,
+ // and load it all up and sort it. This is not ideal.
+ // In future, we may do a "restore" instead just by copying content into
+ // a new version, not restoring a node,
+ // in which case the iterator will be in order (or you can just walk all
+ // the way back).
+ // So if there are performance problems with looking at lots of
+ // historical versions, look at this nasty bit of code.
+ while ( it.hasNext() ) {
+ AssetItem historical = (AssetItem) it.next();// new
+ // AssetItem(repo,
+ // element);
+ long versionNumber = historical.getVersionNumber();
+ if ( !(versionNumber == 0) && !(versionNumber == item.getVersionNumber()) ) {
+ TableDataRow row = new TableDataRow();
+ row.id = historical.getVersionSnapshotUUID();
+ row.values = new String[4];
+ row.values[0] = Long.toString( historical.getVersionNumber() );
+ row.values[1] = historical.getCheckinComment();
+ row.values[2] = dateFormatter.format( historical.getLastModified().getTime() );
+ row.values[3] = historical.getStateDescription();
+ result.add( row );
+ }
+ }
- List<TableDataRow> result = new ArrayList<TableDataRow>();
+ if ( result.size() == 0 ) return null;
+ TableDataResult table = new TableDataResult();
+ table.data = result.toArray( new TableDataRow[result.size()] );
- AssetItem item = repository.loadAssetByUUID(uuid);
+ return table;
+ }
- if (Contexts.isSessionContextActive()) {
- Identity.instance().checkPermission(
- new PackageUUIDType(item.getPackage().getUUID()),
- RoleTypes.PACKAGE_READONLY);
- }
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public TableDataResult loadArchivedAssets(int skip,
+ int numRows) throws SerializableException {
+ List<TableDataRow> result = new ArrayList<TableDataRow>();
+ RepositoryFilter filter = new AssetItemFilter();
- AssetHistoryIterator it = item.getHistory();
+ AssetItemIterator it = repository.findArchivedAssets();
+ it.skip( skip );
+ int count = 0;
+ while ( it.hasNext() ) {
- // MN Note: this uses the lazy iterator, but then loads the whole lot
- // up, and returns it.
- // The reason for this is that the GUI needs to show things in numeric
- // order by the version number.
- // When a version is restored, its previous version is NOT what you
- // thought it was - due to how JCR works
- // (its more like CVS then SVN). So to get a linear progression of
- // versions, we use the incrementing version number,
- // and load it all up and sort it. This is not ideal.
- // In future, we may do a "restore" instead just by copying content into
- // a new version, not restoring a node,
- // in which case the iterator will be in order (or you can just walk all
- // the way back).
- // So if there are performance problems with looking at lots of
- // historical versions, look at this nasty bit of code.
- while (it.hasNext()) {
- AssetItem historical = (AssetItem) it.next();// new
- // AssetItem(repo,
- // element);
- long versionNumber = historical.getVersionNumber();
- if (!(versionNumber == 0)
- && !(versionNumber == item.getVersionNumber())) {
- TableDataRow row = new TableDataRow();
- row.id = historical.getVersionSnapshotUUID();
- row.values = new String[4];
- row.values[0] = Long.toString(historical.getVersionNumber());
- row.values[1] = historical.getCheckinComment();
- row.values[2] = dateFormatter.format(historical
- .getLastModified().getTime());
- row.values[3] = historical.getStateDescription();
- result.add(row);
- }
- }
+ AssetItem archived = (AssetItem) it.next();
- if (result.size() == 0)
- return null;
- TableDataResult table = new TableDataResult();
- table.data = result.toArray(new TableDataRow[result.size()]);
+ if ( filter.accept( archived,
+ "read" ) ) {
+ TableDataRow row = new TableDataRow();
+ row.id = archived.getUUID();
+ row.values = new String[5];
- return table;
- }
+ row.values[0] = archived.getFormat();
+ row.values[1] = archived.getPackageName();
+ row.values[2] = archived.getName();
+ row.values[3] = archived.getLastContributor();
+ row.values[4] = archived.getLastModified().getTime().toLocaleString();
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public TableDataResult loadArchivedAssets(int skip, int numRows)
- throws SerializableException {
- List<TableDataRow> result = new ArrayList<TableDataRow>();
- RepositoryFilter filter = new AssetItemFilter();
+ result.add( row );
+ count++;
+ }
+ if ( count == numRows ) {
+ break;
+ }
+ }
- AssetItemIterator it = repository.findArchivedAssets();
- it.skip(skip);
- int count = 0;
- while (it.hasNext()) {
+ TableDataResult table = new TableDataResult();
+ table.data = result.toArray( new TableDataRow[result.size()] );
+ table.currentPosition = it.getPosition();
+ return table;
+ }
- AssetItem archived = (AssetItem) it.next();
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public void restoreVersion(String versionUUID,
+ String assetUUID,
+ String comment) {
+ AssetItem old = repository.loadAssetByUUID( versionUUID );
+ AssetItem head = repository.loadAssetByUUID( assetUUID );
- if (filter.accept(archived, "read")) {
- TableDataRow row = new TableDataRow();
- row.id = archived.getUUID();
- row.values = new String[5];
+ log.info( "USER:" + repository.getSession().getUserID() + " RESTORE of asset: [" + head.getName() + "] UUID: [" + head.getUUID() + "] with historical version number: [" + old.getVersionNumber() );
- row.values[0] = archived.getFormat();
- row.values[1] = archived.getPackageName();
- row.values[2] = archived.getName();
- row.values[3] = archived.getLastContributor();
- row.values[4] = archived.getLastModified().getTime()
- .toLocaleString();
+ repository.restoreHistoricalAsset( old,
+ head,
+ comment );
- result.add(row);
- count++;
- }
- if (count == numRows) {
- break;
- }
- }
+ }
- TableDataResult table = new TableDataResult();
- table.data = result.toArray(new TableDataRow[result.size()]);
- table.currentPosition = it.getPosition();
- return table;
- }
+ @WebRemote
+ public String createPackage(String name,
+ String description) throws SerializableException {
+ if ( Contexts.isSessionContextActive() ) {
+ Identity.instance().checkPermission( new AdminType(),
+ RoleTypes.ADMIN );
+ }
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public void restoreVersion(String versionUUID, String assetUUID,
- String comment) {
- AssetItem old = repository.loadAssetByUUID(versionUUID);
- AssetItem head = repository.loadAssetByUUID(assetUUID);
+ log.info( "USER:" + repository.getSession().getUserID() + " CREATING package [" + name + "]" );
+ PackageItem item = repository.createPackage( name,
+ description );
- log.info("USER:" + repository.getSession().getUserID()
- + " RESTORE of asset: [" + head.getName() + "] UUID: ["
- + head.getUUID() + "] with historical version number: ["
- + old.getVersionNumber());
+ return item.getUUID();
+ }
- repository.restoreHistoricalAsset(old, head, comment);
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public PackageConfigData loadPackageConfig(String uuid) {
+ PackageItem item = repository.loadPackageByUUID( uuid );
+ // the uuid passed in is the uuid of that deployment bundle, not the
+ // package uudi.
+ // we have to figure out the package name.
+ if ( Contexts.isSessionContextActive() ) {
+ Identity.instance().checkPermission( new PackageNameType( item.getName() ),
+ RoleTypes.PACKAGE_READONLY );
+ }
- }
+ PackageConfigData data = new PackageConfigData();
+ data.uuid = item.getUUID();
+ data.header = getDroolsHeader( item );
+ data.externalURI = item.getExternalURI();
+ data.catRules = item.getCategoryRules();
+ //System.out.println("Cat Rules: " + data.catRules.toString());
+ data.description = item.getDescription();
+ 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;
+ }
+ //make sure this stays the same order
+ private static String[] convertToObjectGraph(final Map map,
+ boolean getKeys) {
+ List list = new ArrayList();
- @WebRemote
- public String createPackage(String name, String description)
- throws SerializableException {
- if (Contexts.isSessionContextActive()) {
- Identity.instance().checkPermission(
- new AdminType(),
- RoleTypes.ADMIN);
- }
+ for ( Iterator i = map.entrySet().iterator(); i.hasNext(); ) {
+ Map.Entry entry = (Map.Entry) i.next();
- log.info("USER:" + repository.getSession().getUserID()
- + " CREATING package [" + name + "]");
- PackageItem item = repository.createPackage(name, description);
+ if ( getKeys ) {
+ list.add( entry.getKey() );
+ } else {
+ list.add( entry.getValue() );
+ }
+ }
+ //System.out.println("(convertToObjectGraph)list: " + list.toString());
+ return (String[]) list.toArray( new String[0] );
+ }
- return item.getUUID();
- }
+ private static String convertMapToString(final Map map,
+ boolean getKeys) {
+ //System.out.println("(convertMapToString)map: " + map.toString());
+ String[] sArray = convertToObjectGraph( map,
+ getKeys );
+ String returnVal = new String();
+ for ( String string : sArray ) {
+ if ( returnVal.length() > 0 ) {
+ returnVal += ",";
+ }
+ returnVal += string;
+ }
+ //System.out.println("(convertMapToString)returnVal: " + returnVal);
+ return returnVal;
+ }
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public PackageConfigData loadPackageConfig(String uuid) {
- PackageItem item = repository.loadPackageByUUID(uuid);
- // the uuid passed in is the uuid of that deployment bundle, not the
- // package uudi.
- // we have to figure out the package name.
- if (Contexts.isSessionContextActive()) {
- Identity.instance().checkPermission(
- new PackageNameType(item.getName()),
- RoleTypes.PACKAGE_READONLY);
- }
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public ValidatedResponse savePackage(PackageConfigData data) throws SerializableException {
+ if ( Contexts.isSessionContextActive() ) {
+ Identity.instance().checkPermission( new PackageUUIDType( data.uuid ),
+ RoleTypes.PACKAGE_DEVELOPER );
+ }
- PackageConfigData data = new PackageConfigData();
- data.uuid = item.getUUID();
- data.header = getDroolsHeader(item);
- data.externalURI = item.getExternalURI();
- data.catRules = item.getCategoryRules();
- //System.out.println("Cat Rules: " + data.catRules.toString());
- data.description = item.getDescription();
- 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;
- }
-//make sure this stays the same order
- private static String[] convertToObjectGraph(final Map map, boolean getKeys) {
- List list = new ArrayList();
+ log.info( "USER:" + repository.getSession().getUserID() + " SAVING package [" + data.name + "]" );
- for (Iterator i = map.entrySet().iterator(); i.hasNext();) {
- Map.Entry entry = (Map.Entry) i.next();
+ PackageItem item = repository.loadPackage( data.name );
- if(getKeys){
- list.add(entry.getKey());
- }else{
- list.add(entry.getValue());
- }
- }
- //System.out.println("(convertToObjectGraph)list: " + list.toString());
- return (String[])list.toArray(new String[0]);
- }
- private static String convertMapToString(final Map map, boolean getKeys){
- //System.out.println("(convertMapToString)map: " + map.toString());
- String[] sArray = convertToObjectGraph(map,getKeys);
- String returnVal = new String();
- for (String string : sArray) {
- if(returnVal.length() > 0){
- returnVal += ",";
- }
- returnVal += string;
- }
- //System.out.println("(convertMapToString)returnVal: " + returnVal);
- return returnVal;
- }
+ updateDroolsHeader( data.header,
+ item );
+ item.updateCategoryRules( convertMapToString( data.catRules,
+ true ),
+ convertMapToString( data.catRules,
+ false ) );
+ item.updateExternalURI( data.externalURI );
+ item.updateDescription( data.description );
+ item.archiveItem( data.archived );
+ item.updateBinaryUpToDate( false );
+ this.ruleBaseCache.remove( data.uuid );
+ item.checkin( data.description );
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public ValidatedResponse savePackage(PackageConfigData data)
- throws SerializableException {
- if (Contexts.isSessionContextActive()) {
- Identity.instance().checkPermission(new PackageUUIDType(data.uuid),
- RoleTypes.PACKAGE_DEVELOPER);
- }
+ BRMSSuggestionCompletionLoader loader = new BRMSSuggestionCompletionLoader();
+ loader.getSuggestionEngine( item );
- log.info("USER:" + repository.getSession().getUserID()
- + " SAVING package [" + data.name + "]");
+ ValidatedResponse res = new ValidatedResponse();
+ if ( loader.hasErrors() ) {
+ res.hasErrors = true;
+ String err = "";
+ for ( Iterator iter = loader.getErrors().iterator(); iter.hasNext(); ) {
+ err += (String) iter.next();
+ if ( iter.hasNext() ) err += "\n";
+ }
+ res.errorHeader = "Package validation errors";
+ res.errorMessage = err;
+ }
- PackageItem item = repository.loadPackage(data.name);
+ return res;
+ }
- updateDroolsHeader(data.header, item);
- item.updateCategoryRules(convertMapToString(data.catRules, true), convertMapToString(data.catRules, false));
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public TableDataResult listAssets(String uuid,
+ String formats[],
+ int skip,
+ int numRows,
+ String tableConfig) throws SerializableException {
+ // TODO: This does not work for package snapshot. package snspshot's
+ // UUID is different
+ // from its corresponding package. However we seem to expect to get same
+ // assets using the
+ // package snapshot UUID here
+ // Identity.instance().checkPermission("ignoredanyway", "read", uuid);
- item.updateExternalURI(data.externalURI);
- item.updateDescription(data.description);
- item.archiveItem(data.archived);
- item.updateBinaryUpToDate(false);
- this.ruleBaseCache.remove(data.uuid);
- item.checkin(data.description);
+ if ( numRows == 0 ) {
+ throw new DetailedSerializableException( "Unable to return zero results (bug)",
+ "probably have the parameters around the wrong way, sigh..." );
+ }
+ long start = System.currentTimeMillis();
+ PackageItem pkg = repository.loadPackageByUUID( uuid );
+ AssetItemIterator it;
+ if ( formats.length > 0 ) {
+ it = pkg.listAssetsByFormat( formats );
+ } else {
+ it = pkg.listAssetsNotOfFormat( AssetFormatHelper.listRegisteredTypes() );
+ }
+ TableDisplayHandler handler = new TableDisplayHandler( tableConfig );
+ log.debug( "time for asset list load: " + (System.currentTimeMillis() - start) );
+ return handler.loadRuleListTable( it,
+ skip,
+ numRows );
+ }
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public TableDataResult queryFullText(String text,
+ boolean seekArchived,
+ int skip,
+ int numRows) throws SerializableException {
+ if ( numRows == 0 ) {
+ throw new DetailedSerializableException( "Unable to return zero results (bug)",
+ "probably have the parameters around the wrong way, sigh..." );
+ }
+ AssetItemIterator it = repository.queryFullText( text,
+ seekArchived );
- BRMSSuggestionCompletionLoader loader = new BRMSSuggestionCompletionLoader();
- loader.getSuggestionEngine(item);
+ // Add filter for READONLY permission
+ List<AssetItem> resultList = new ArrayList<AssetItem>();
+ RepositoryFilter filter = new PackageFilter();
- ValidatedResponse res = new ValidatedResponse();
- if (loader.hasErrors()) {
- res.hasErrors = true;
- String err = "";
- for (Iterator iter = loader.getErrors().iterator(); iter.hasNext();) {
- err += (String) iter.next();
- if (iter.hasNext())
- err += "\n";
- }
- res.errorHeader = "Package validation errors";
- res.errorMessage = err;
- }
+ while ( it.hasNext() ) {
+ AssetItem ai = it.next();
+ if ( checkPackagePermissionHelper( filter,
+ ai,
+ RoleTypes.PACKAGE_READONLY ) ) {
+ resultList.add( ai );
+ }
+ }
- return res;
- }
+ TableDisplayHandler handler = new TableDisplayHandler( "searchresults" );
+ return handler.loadRuleListTable( resultList,
+ skip,
+ numRows );
+ }
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public TableDataResult listAssets(String uuid, String formats[], int skip,
- int numRows, String tableConfig) throws SerializableException {
- // TODO: This does not work for package snapshot. package snspshot's
- // UUID is different
- // from its corresponding package. However we seem to expect to get same
- // assets using the
- // package snapshot UUID here
- // Identity.instance().checkPermission("ignoredanyway", "read", uuid);
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public TableDataResult queryMetaData(final MetaDataQuery[] qr,
+ Date createdAfter,
+ Date createdBefore,
+ Date modifiedAfter,
+ Date modifiedBefore,
+ boolean seekArchived,
+ int skip,
+ int numRows) throws SerializableException {
+ if ( numRows == 0 ) {
+ throw new DetailedSerializableException( "Unable to return zero results (bug)",
+ "probably have the parameters around the wrong way, sigh..." );
+ }
+ Map<String, String[]> q = new HashMap<String, String[]>() {
+ {
+ for ( int i = 0; i < qr.length; i++ ) {
+ String vals = (qr[i].valueList == null) ? "" : qr[i].valueList.trim();
+ if ( vals.length() > 0 ) {
+ put( qr[i].attribute,
+ vals.split( ",\\s?" ) );
+ }
+ }
+ }
+ };
- if (numRows == 0) {
- throw new DetailedSerializableException(
- "Unable to return zero results (bug)",
- "probably have the parameters around the wrong way, sigh...");
- }
- long start = System.currentTimeMillis();
- PackageItem pkg = repository.loadPackageByUUID(uuid);
- AssetItemIterator it;
- if (formats.length > 0) {
- it = pkg.listAssetsByFormat(formats);
- } else {
- it = pkg.listAssetsNotOfFormat(AssetFormatHelper.listRegisteredTypes());
- }
- TableDisplayHandler handler = new TableDisplayHandler(tableConfig);
- log.debug("time for asset list load: "
- + (System.currentTimeMillis() - start));
- return handler.loadRuleListTable(it, skip, numRows);
- }
+ DateQuery[] dates = new DateQuery[2];
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public TableDataResult queryFullText(String text, boolean seekArchived,
- int skip, int numRows) throws SerializableException {
- if (numRows == 0) {
- throw new DetailedSerializableException(
- "Unable to return zero results (bug)",
- "probably have the parameters around the wrong way, sigh...");
- }
- AssetItemIterator it = repository.queryFullText(text, seekArchived);
+ dates[0] = new DateQuery( "jcr:created",
+ isoDate( createdAfter ),
+ isoDate( createdBefore ) );
+ dates[1] = new DateQuery( AssetItem.LAST_MODIFIED_PROPERTY_NAME,
+ isoDate( modifiedAfter ),
+ isoDate( modifiedBefore ) );
+ AssetItemIterator it = repository.query( q,
+ seekArchived,
+ dates );
- // Add filter for READONLY permission
- List<AssetItem> resultList = new ArrayList<AssetItem>();
- RepositoryFilter filter = new PackageFilter();
+ // Add Filter to check Permission
+ List<AssetItem> resultList = new ArrayList<AssetItem>();
- while (it.hasNext()) {
- AssetItem ai = it.next();
- if (checkPackagePermissionHelper(filter, ai, RoleTypes.PACKAGE_READONLY)) {
- resultList.add(ai);
- }
- }
+ RepositoryFilter packageFilter = new PackageFilter();
+ RepositoryFilter categoryFilter = new CategoryFilter();
- TableDisplayHandler handler = new TableDisplayHandler("searchresults");
- return handler.loadRuleListTable(resultList, skip, numRows);
- }
+ while ( it.hasNext() ) {
+ AssetItem ai = it.next();
+ if ( checkPackagePermissionHelper( packageFilter,
+ ai,
+ RoleTypes.PACKAGE_READONLY ) || checkCategoryPermissionHelper( categoryFilter,
+ ai,
+ RoleTypes.ANALYST_READ ) ) {
+ resultList.add( ai );
+ }
+ }
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public TableDataResult queryMetaData(final MetaDataQuery[] qr,
- Date createdAfter, Date createdBefore, Date modifiedAfter,
- Date modifiedBefore, boolean seekArchived, int skip, int numRows)
- throws SerializableException {
- if (numRows == 0) {
- throw new DetailedSerializableException(
- "Unable to return zero results (bug)",
- "probably have the parameters around the wrong way, sigh...");
- }
- Map<String, String[]> q = new HashMap<String, String[]>() {
- {
- for (int i = 0; i < qr.length; i++) {
- String vals = (qr[i].valueList == null) ? ""
- : qr[i].valueList.trim();
- if (vals.length() > 0) {
- put(qr[i].attribute, vals.split(",\\s?"));
- }
- }
- }
- };
+ TableDisplayHandler handler = new TableDisplayHandler( "searchresults" );
+ return handler.loadRuleListTable( resultList,
+ skip,
+ numRows );
+ }
- DateQuery[] dates = new DateQuery[2];
+ private boolean checkPackagePermissionHelper(RepositoryFilter filter,
+ AssetItem item,
+ String roleType) {
+ return filter.accept( getConfigDataHelper( item.getPackage().getUUID() ),
+ roleType );
+ }
- dates[0] = new DateQuery("jcr:created", isoDate(createdAfter),
- isoDate(createdBefore));
- dates[1] = new DateQuery(AssetItem.LAST_MODIFIED_PROPERTY_NAME,
- isoDate(modifiedAfter), isoDate(modifiedBefore));
- AssetItemIterator it = repository.query(q, seekArchived, dates);
+ private boolean checkCategoryPermissionHelper(RepositoryFilter filter,
+ AssetItem item,
+ String roleType) {
+ List<CategoryItem> tempCateList = item.getCategories();
+ for ( Iterator<CategoryItem> i = tempCateList.iterator(); i.hasNext(); ) {
+ CategoryItem categoryItem = i.next();
- // Add Filter to check Permission
- List<AssetItem> resultList = new ArrayList<AssetItem>();
+ if ( filter.accept( categoryItem.getName(),
+ roleType ) ) {
+ return true;
+ }
+ }
- RepositoryFilter packageFilter = new PackageFilter();
- RepositoryFilter categoryFilter = new CategoryFilter();
+ return false;
+ }
- while (it.hasNext()) {
- AssetItem ai = it.next();
- if (checkPackagePermissionHelper(packageFilter, ai, RoleTypes.PACKAGE_READONLY) ||
- checkCategoryPermissionHelper(categoryFilter, ai, RoleTypes.ANALYST_READ)) {
- resultList.add(ai);
- }
- }
+ private PackageConfigData getConfigDataHelper(String uuidStr) {
+ PackageConfigData data = new PackageConfigData();
+ data.uuid = uuidStr;
+ return data;
+ }
- TableDisplayHandler handler = new TableDisplayHandler("searchresults");
- return handler.loadRuleListTable(resultList, skip, numRows);
- }
+ private String isoDate(Date d) {
+ if ( d != null ) {
+ Calendar cal = Calendar.getInstance();
+ cal.setTime( d );
+ return ISO8601.format( cal );
+ }
+ return null;
+ }
- private boolean checkPackagePermissionHelper(
- RepositoryFilter filter, AssetItem item, String roleType) {
- return filter.accept(getConfigDataHelper(item.getPackage().getUUID()), roleType);
- }
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public String createState(String name) throws SerializableException {
+ log.info( "USER:" + repository.getSession().getUserID() + " CREATING state: [" + name + "]" );
+ try {
+ String uuid = repository.createState( name ).getNode().getUUID();
+ repository.save();
+ return uuid;
+ } catch ( RepositoryException e ) {
+ throw new SerializableException( "Unable to create the status." );
+ }
+ }
- private boolean checkCategoryPermissionHelper(
- RepositoryFilter filter, AssetItem item, String roleType) {
- List<CategoryItem> tempCateList = item.getCategories();
- for (Iterator<CategoryItem> i = tempCateList.iterator(); i.hasNext();) {
- CategoryItem categoryItem = i.next();
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public void removeState(String name) throws SerializableException {
+ log.info( "USER:" + repository.getSession().getUserID() + " REMOVING state: [" + name + "]" );
- if (filter.accept(categoryItem.getName(), roleType)) {
- return true;
- }
- }
+ try {
+ repository.loadState( name ).remove();
+ repository.save();
- return false;
- }
+ } catch ( RulesRepositoryException e ) {
+ throw new DetailedSerializableException( "Unable to remove status. It is probably still used (even by archived items).",
+ e.getMessage() );
+ }
+ }
- private PackageConfigData getConfigDataHelper(String uuidStr) {
- PackageConfigData data = new PackageConfigData();
- data.uuid = uuidStr;
- return data;
- }
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public void renameState(String oldName,
+ String newName) throws SerializableException {
+ log.info( "USER:" + repository.getSession().getUserID() + " RENAMING state: [" + oldName + "] to [" + newName + "]" );
+ repository.renameState( oldName,
+ newName );
- private String isoDate(Date d) {
- if (d != null) {
- Calendar cal = Calendar.getInstance();
- cal.setTime(d);
- return ISO8601.format(cal);
- }
- return null;
- }
+ }
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public String createState(String name) throws SerializableException {
- log.info("USER:" + repository.getSession().getUserID()
- + " CREATING state: [" + name + "]");
- try {
- String uuid = repository.createState(name).getNode().getUUID();
- repository.save();
- return uuid;
- } catch (RepositoryException e) {
- throw new SerializableException("Unable to create the status.");
- }
- }
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public String[] listStates() throws SerializableException {
+ StateItem[] states = repository.listStates();
+ String[] result = new String[states.length];
+ for ( int i = 0; i < states.length; i++ ) {
+ result[i] = states[i].getName();
+ }
+ return result;
+ }
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public String[] listStates() throws SerializableException {
- StateItem[] states = repository.listStates();
- String[] result = new String[states.length];
- for (int i = 0; i < states.length; i++) {
- result[i] = states[i].getName();
- }
- return result;
- }
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public void changeState(String uuid,
+ String newState,
+ boolean wholePackage) {
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public void changeState(String uuid, String newState, boolean wholePackage) {
+ if ( !wholePackage ) {
- if (!wholePackage) {
+ AssetItem asset = repository.loadAssetByUUID( uuid );
+ log.info( "USER:" + repository.getSession().getUserID() + " CHANGING ASSET STATUS. Asset name, uuid: " + "[" + asset.getName() + ", " + asset.getUUID() + "]" + " to [" + newState + "]" );
- AssetItem asset = repository.loadAssetByUUID(uuid);
- log.info("USER:" + repository.getSession().getUserID()
- + " CHANGING ASSET STATUS. Asset name, uuid: " + "["
- + asset.getName() + ", " + asset.getUUID() + "]" + " to ["
- + newState + "]");
+ if ( Contexts.isSessionContextActive() ) {
+ Identity.instance().checkPermission( new PackageUUIDType( asset.getPackage().getUUID() ),
+ RoleTypes.PACKAGE_DEVELOPER );
+ }
- if (Contexts.isSessionContextActive()) {
- Identity.instance().checkPermission(
- new PackageUUIDType(asset.getPackage().getUUID()),
- RoleTypes.PACKAGE_DEVELOPER);
- }
+ asset.updateState( newState );
+ } else {
+ if ( Contexts.isSessionContextActive() ) {
+ Identity.instance().checkPermission( new PackageUUIDType( uuid ),
+ RoleTypes.PACKAGE_DEVELOPER );
+ }
- asset.updateState(newState);
- } else {
- if (Contexts.isSessionContextActive()) {
- Identity.instance().checkPermission(new PackageUUIDType(uuid),
- RoleTypes.PACKAGE_DEVELOPER);
- }
+ PackageItem pkg = repository.loadPackageByUUID( uuid );
+ log.info( "USER:" + repository.getSession().getUserID() + " CHANGING Package STATUS. Asset name, uuid: " + "[" + pkg.getName() + ", " + pkg.getUUID() + "]" + " to [" + newState + "]" );
+ pkg.changeStatus( newState );
+ }
+ repository.save();
+ }
- PackageItem pkg = repository.loadPackageByUUID(uuid);
- log.info("USER:" + repository.getSession().getUserID()
- + " CHANGING Package STATUS. Asset name, uuid: " + "["
- + pkg.getName() + ", " + pkg.getUUID() + "]" + " to ["
- + newState + "]");
- pkg.changeStatus(newState);
- }
- repository.save();
- }
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public void changeAssetPackage(String uuid,
+ String newPackage,
+ String comment) {
+ if ( Contexts.isSessionContextActive() ) {
+ Identity.instance().checkPermission( new PackageNameType( newPackage ),
+ RoleTypes.PACKAGE_DEVELOPER );
+ }
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public void changeAssetPackage(String uuid, String newPackage,
- String comment) {
- if (Contexts.isSessionContextActive()) {
- Identity.instance().checkPermission(
- new PackageNameType(newPackage),
- RoleTypes.PACKAGE_DEVELOPER);
- }
+ log.info( "USER:" + repository.getSession().getUserID() + " CHANGING PACKAGE OF asset: [" + uuid + "] to [" + newPackage + "]" );
+ repository.moveRuleItemPackage( newPackage,
+ uuid,
+ comment );
- log.info("USER:" + repository.getSession().getUserID()
- + " CHANGING PACKAGE OF asset: [" + uuid + "] to ["
- + newPackage + "]");
- repository.moveRuleItemPackage(newPackage, uuid, comment);
+ }
- }
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public String copyAsset(String assetUUID,
+ String newPackage,
+ String newName) {
+ if ( Contexts.isSessionContextActive() ) {
+ Identity.instance().checkPermission( new PackageNameType( newPackage ),
+ RoleTypes.PACKAGE_DEVELOPER );
+ }
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public String copyAsset(String assetUUID, String newPackage, String newName) {
- if (Contexts.isSessionContextActive()) {
- Identity.instance().checkPermission(
- new PackageNameType(newPackage),
- RoleTypes.PACKAGE_DEVELOPER);
- }
+ return repository.copyAsset( assetUUID,
+ newPackage,
+ newName );
+ }
- return repository.copyAsset(assetUUID, newPackage, newName);
- }
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public SnapshotInfo[] listSnapshots(String packageName) {
+ if ( Contexts.isSessionContextActive() ) {
+ Identity.instance().checkPermission( new PackageNameType( packageName ),
+ RoleTypes.PACKAGE_DEVELOPER );
+ }
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public SnapshotInfo[] listSnapshots(String packageName) {
- if (Contexts.isSessionContextActive()) {
- Identity.instance().checkPermission(
- new PackageNameType(packageName),
- RoleTypes.PACKAGE_DEVELOPER);
- }
+ String[] snaps = repository.listPackageSnapshots( packageName );
+ SnapshotInfo[] res = new SnapshotInfo[snaps.length];
+ for ( int i = 0; i < snaps.length; i++ ) {
+ PackageItem snap = repository.loadPackageSnapshot( packageName,
+ snaps[i] );
+ SnapshotInfo info = new SnapshotInfo();
+ res[i] = info;
+ info.comment = snap.getCheckinComment();
+ info.name = snaps[i];
+ info.uuid = snap.getUUID();
+ }
+ return res;
+ }
- String[] snaps = repository.listPackageSnapshots(packageName);
- SnapshotInfo[] res = new SnapshotInfo[snaps.length];
- for (int i = 0; i < snaps.length; i++) {
- PackageItem snap = repository.loadPackageSnapshot(packageName,
- snaps[i]);
- SnapshotInfo info = new SnapshotInfo();
- res[i] = info;
- info.comment = snap.getCheckinComment();
- info.name = snaps[i];
- info.uuid = snap.getUUID();
- }
- return res;
- }
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public void createPackageSnapshot(String packageName,
+ String snapshotName,
+ boolean replaceExisting,
+ String comment) {
+ if ( Contexts.isSessionContextActive() ) {
+ Identity.instance().checkPermission( new PackageNameType( packageName ),
+ RoleTypes.PACKAGE_ADMIN );
+ }
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public void createPackageSnapshot(String packageName, String snapshotName,
- boolean replaceExisting, String comment) {
- if (Contexts.isSessionContextActive()) {
- Identity.instance().checkPermission(
- new PackageNameType(packageName), RoleTypes.PACKAGE_ADMIN);
- }
+ log.info( "USER:" + repository.getSession().getUserID() + " CREATING PACKAGE SNAPSHOT for package: [" + packageName + "] snapshot name: [" + snapshotName );
- log.info("USER:" + repository.getSession().getUserID()
- + " CREATING PACKAGE SNAPSHOT for package: [" + packageName
- + "] snapshot name: [" + snapshotName);
+ if ( replaceExisting ) {
+ repository.removePackageSnapshot( packageName,
+ snapshotName );
+ }
- if (replaceExisting) {
- repository.removePackageSnapshot(packageName, snapshotName);
- }
+ repository.createPackageSnapshot( packageName,
+ snapshotName );
+ PackageItem item = repository.loadPackageSnapshot( packageName,
+ snapshotName );
+ item.updateCheckinComment( comment );
+ repository.save();
- repository.createPackageSnapshot(packageName, snapshotName);
- PackageItem item = repository.loadPackageSnapshot(packageName,
- snapshotName);
- item.updateCheckinComment(comment);
- repository.save();
+ }
- }
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public void copyOrRemoveSnapshot(String packageName,
+ String snapshotName,
+ boolean delete,
+ String newSnapshotName) throws SerializableException {
+ if ( Contexts.isSessionContextActive() ) {
+ Identity.instance().checkPermission( new PackageNameType( packageName ),
+ RoleTypes.PACKAGE_ADMIN );
+ }
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public void copyOrRemoveSnapshot(String packageName, String snapshotName,
- boolean delete, String newSnapshotName)
- throws SerializableException {
- if (Contexts.isSessionContextActive()) {
- Identity.instance().checkPermission(
- new PackageNameType(packageName), RoleTypes.PACKAGE_ADMIN);
- }
+ if ( delete ) {
+ log.info( "USER:" + repository.getSession().getUserID() + " REMOVING SNAPSHOT for package: [" + packageName + "] snapshot: [" + snapshotName + "]" );
+ repository.removePackageSnapshot( packageName,
+ snapshotName );
+ } else {
+ if ( newSnapshotName.equals( "" ) ) {
+ throw new SerializableException( "Need to have a new snapshot name." );
+ }
+ log.info( "USER:" + repository.getSession().getUserID() + " COPYING SNAPSHOT for package: [" + packageName + "] snapshot: [" + snapshotName + "] to [" + newSnapshotName + "]" );
- if (delete) {
- log.info("USER:" + repository.getSession().getUserID()
- + " REMOVING SNAPSHOT for package: [" + packageName
- + "] snapshot: [" + snapshotName + "]");
- repository.removePackageSnapshot(packageName, snapshotName);
- } else {
- if (newSnapshotName.equals("")) {
- throw new SerializableException(
- "Need to have a new snapshot name.");
- }
- log.info("USER:" + repository.getSession().getUserID()
- + " COPYING SNAPSHOT for package: [" + packageName
- + "] snapshot: [" + snapshotName + "] to ["
- + newSnapshotName + "]");
+ repository.copyPackageSnapshot( packageName,
+ snapshotName,
+ newSnapshotName );
+ }
- repository.copyPackageSnapshot(packageName, snapshotName,
- newSnapshotName);
- }
+ }
- }
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public TableDataResult quickFindAsset(String searchText,
+ int max,
+ boolean searchArchived) {
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public TableDataResult quickFindAsset(String searchText, int max,
- boolean searchArchived) {
+ String search = Pattern.compile( "*",
+ Pattern.LITERAL ).matcher( searchText ).replaceAll( Matcher.quoteReplacement( "%" ) );
- String search = Pattern.compile("*", Pattern.LITERAL).matcher(
- searchText).replaceAll(Matcher.quoteReplacement("%"));
+ if ( !search.endsWith( "%" ) ) {
+ search += "%";
+ }
- if (!search.endsWith("%")) {
- search += "%";
- }
+ TableDataResult result = new TableDataResult();
- TableDataResult result = new TableDataResult();
+ List<TableDataRow> resultList = new ArrayList<TableDataRow>();
- List<TableDataRow> resultList = new ArrayList<TableDataRow>();
+ long start = System.currentTimeMillis();
+ AssetItemIterator it = repository.findAssetsByName( search,
+ searchArchived ); // search for archived items
+ log.debug( "Search time: " + (System.currentTimeMillis() - start) );
- long start = System.currentTimeMillis();
- AssetItemIterator it = repository.findAssetsByName(search,
- searchArchived); // search for archived items
- log.debug("Search time: " + (System.currentTimeMillis() - start));
+ RepositoryFilter filter = new AssetItemFilter();
+ for ( int i = 0; i < max; i++ ) {
+ if ( !it.hasNext() ) {
+ break;
+ }
+ AssetItem item = (AssetItem) it.next();
+ try {
+ System.err.println( "jcr:path=" + item.getNode().getPath() );
+ } catch ( RepositoryException e ) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ if ( filter.accept( item,
+ RoleTypes.PACKAGE_READONLY ) ) {
+ TableDataRow row = new TableDataRow();
+ row.id = item.getUUID();
+ String desc = item.getDescription() + "";
+ row.values = new String[]{item.getName(), desc.substring( 0,
+ Math.min( 32,
+ desc.length() ) )};
- RepositoryFilter filter = new AssetItemFilter();
- for (int i = 0; i < max; i++) {
- if (!it.hasNext()) {
- break;
- }
- AssetItem item = (AssetItem) it.next();
- try {
- System.err.println("jcr:path=" + item.getNode().getPath());
- } catch (RepositoryException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- if (filter.accept(item, RoleTypes.PACKAGE_READONLY)) {
- TableDataRow row = new TableDataRow();
- row.id = item.getUUID();
- String desc = item.getDescription() + "";
- row.values = new String[] { item.getName(),
- desc.substring(0, Math.min(32, desc.length())) };
+ resultList.add( row );
+ }
+ }
- resultList.add(row);
- }
- }
+ while ( it.hasNext() ) {
+ if ( filter.accept( (AssetItem) it.next(),
+ RoleTypes.PACKAGE_READONLY ) ) {
+ TableDataRow empty = new TableDataRow();
+ empty.id = "MORE";
+ resultList.add( empty );
+ break;
+ }
+ }
- while (it.hasNext()) {
- if (filter
- .accept((AssetItem) it.next(), RoleTypes.PACKAGE_READONLY)) {
- TableDataRow empty = new TableDataRow();
- empty.id = "MORE";
- resultList.add(empty);
- break;
- }
- }
+ result.data = resultList.toArray( new TableDataRow[resultList.size()] );
+ return result;
- result.data = resultList.toArray(new TableDataRow[resultList.size()]);
- return result;
+ }
- }
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public void removeCategory(String categoryPath) throws SerializableException {
+ log.info( "USER:" + repository.getSession().getUserID() + " REMOVING CATEGORY path: [" + categoryPath + "]" );
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public void removeCategory(String categoryPath)
- throws SerializableException {
- log.info("USER:" + repository.getSession().getUserID()
- + " REMOVING CATEGORY path: [" + categoryPath + "]");
+ try {
+ repository.loadCategory( categoryPath ).remove();
+ repository.save();
+ } catch ( RulesRepositoryException e ) {
+ throw new DetailedSerializableException( "Unable to remove category. It is probably still used (even by archived items).",
+ e.getMessage() );
+ }
+ }
- try {
- repository.loadCategory(categoryPath).remove();
- repository.save();
- } catch (RulesRepositoryException e) {
- throw new DetailedSerializableException(
- "Unable to remove category. It is probably still used (even by archived items).",
- e.getMessage());
- }
- }
+ @WebRemote
+ public void clearRulesRepository() {
+ if ( Contexts.isSessionContextActive() ) {
+ Identity.instance().checkPermission( new AdminType(),
+ RoleTypes.ADMIN );
+ }
- @WebRemote
- public void clearRulesRepository() {
- if (Contexts.isSessionContextActive()) {
- Identity.instance().checkPermission(
- new AdminType(),
- RoleTypes.ADMIN);
- }
+ RulesRepositoryAdministrator admin = new RulesRepositoryAdministrator( repository.getSession() );
+ admin.clearRulesRepository();
+ }
- RulesRepositoryAdministrator admin = new RulesRepositoryAdministrator(
- repository.getSession());
- admin.clearRulesRepository();
- }
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public SuggestionCompletionEngine loadSuggestionCompletionEngine(String packageName) throws SerializableException {
+ if ( Contexts.isSessionContextActive() ) {
+ Identity.instance().checkPermission( new PackageNameType( packageName ),
+ RoleTypes.PACKAGE_READONLY );
+ }
+ try {
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public SuggestionCompletionEngine loadSuggestionCompletionEngine(
- String packageName) throws SerializableException {
- if (Contexts.isSessionContextActive()) {
- Identity.instance().checkPermission(
- new PackageNameType(packageName),
- RoleTypes.PACKAGE_READONLY);
- }
- try {
+ PackageItem pkg = repository.loadPackage( packageName );
+ BRMSSuggestionCompletionLoader loader = new BRMSSuggestionCompletionLoader();
+ return loader.getSuggestionEngine( pkg );
+ } catch ( RulesRepositoryException e ) {
+ log.error( e );
+ throw new SerializableException( e.getMessage() );
+ }
- PackageItem pkg = repository.loadPackage(packageName);
- BRMSSuggestionCompletionLoader loader = new BRMSSuggestionCompletionLoader();
- return loader.getSuggestionEngine(pkg);
- } catch (RulesRepositoryException e) {
- log.error(e);
- throw new SerializableException(e.getMessage());
- }
+ }
- }
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public BuilderResult[] buildPackage(String packageUUID,
+ String selectorConfigName,
+ boolean force) throws SerializableException {
+ if ( Contexts.isSessionContextActive() ) {
+ Identity.instance().checkPermission( new PackageUUIDType( packageUUID ),
+ RoleTypes.PACKAGE_DEVELOPER );
+ }
+ PackageItem item = repository.loadPackageByUUID( packageUUID );
+ try {
+ return buildPackage( selectorConfigName,
+ force,
+ item );
+ } catch ( NoClassDefFoundError e ) {
+ throw new DetailedSerializableException( "Unable to find a class that was needed when building the package [" + e.getMessage() + "]",
+ "Perhaps you are missing them from the model jars, or from the BRMS itself (lib directory)." );
+ }
+ }
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public BuilderResult[] buildPackage(String packageUUID,
- String selectorConfigName, boolean force)
- throws SerializableException {
- if (Contexts.isSessionContextActive()) {
- Identity.instance().checkPermission(
- new PackageUUIDType(packageUUID),
- RoleTypes.PACKAGE_DEVELOPER);
- }
- PackageItem item = repository.loadPackageByUUID(packageUUID);
- try {
- return buildPackage(selectorConfigName, force, item );
- } catch (NoClassDefFoundError e) {
- throw new DetailedSerializableException("Unable to find a class that was needed when building the package ["+ e.getMessage() +"]", "Perhaps you are missing them from the model jars, or from the BRMS itself (lib directory).");
- }
- }
+ private BuilderResult[] buildPackage(String selectorConfigName,
+ boolean force,
+ PackageItem item) throws DetailedSerializableException {
+ if ( !force && item.isBinaryUpToDate() ) {
+ // we can just return all OK if its up to date.
+ return null;
+ }
+ ContentPackageAssembler asm = new ContentPackageAssembler( item,
+ selectorConfigName );
+ if ( asm.hasErrors() ) {
+ BuilderResult[] result = generateBuilderResults( asm );
+ return result;
+ } else {
+ try {
+ ByteArrayOutputStream bout = new ByteArrayOutputStream();
+ ObjectOutput out = new DroolsObjectOutputStream( bout );
+ out.writeObject( asm.getBinaryPackage() );
- private BuilderResult[] buildPackage(String selectorConfigName,
- boolean force, PackageItem item)
- throws DetailedSerializableException {
- if (!force && item.isBinaryUpToDate()) {
- // we can just return all OK if its up to date.
- return null;
- }
- ContentPackageAssembler asm = new ContentPackageAssembler(item,
- selectorConfigName);
- if (asm.hasErrors()) {
- BuilderResult[] result = generateBuilderResults(asm);
- return result;
- } else {
- try {
- ByteArrayOutputStream bout = new ByteArrayOutputStream();
- ObjectOutput out = new DroolsObjectOutputStream(bout);
- out.writeObject(asm.getBinaryPackage());
+ item.updateCompiledPackage( new ByteArrayInputStream( bout.toByteArray() ) );
+ out.flush();
+ out.close();
- item.updateCompiledPackage(new ByteArrayInputStream(bout
- .toByteArray()));
- out.flush();
- out.close();
+ updateBinaryPackage( item,
+ asm );
+ repository.save();
+ } catch ( Exception e ) {
+ e.printStackTrace();
+ log.error( e );
+ throw new DetailedSerializableException( "An error occurred building the package.",
+ e.getMessage() );
+ }
- updateBinaryPackage(item, asm);
- repository.save();
- } catch (Exception e) {
- e.printStackTrace();
- log.error(e);
- throw new DetailedSerializableException(
- "An error occurred building the package.", e
- .getMessage());
- }
+ return null;
- return null;
+ }
+ }
- }
- }
+ private void updateBinaryPackage(PackageItem item,
+ ContentPackageAssembler asm) throws Exception {
+ item.updateBinaryUpToDate( true );
+ RuleBaseConfiguration conf = new RuleBaseConfiguration();
+ // setting the MapBackedClassloader that is the parent of the builder classloader as the parent
+ // of the rulebase classloader
+ conf.setClassLoader( asm.getBuilder().getRootClassLoader().getParent() );
+ RuleBase rb = RuleBaseFactory.newRuleBase( conf );
+ rb.addPackage( asm.getBinaryPackage() );
+ // this.ruleBaseCache.put(item.getUUID(), rb);
+ }
- private void updateBinaryPackage(PackageItem item,
- ContentPackageAssembler asm) throws Exception {
- item.updateBinaryUpToDate(true);
- RuleBaseConfiguration conf = new RuleBaseConfiguration();
- // setting the MapBackedClassloader that is the parent of the builder classloader as the parent
- // of the rulebase classloader
- conf.setClassLoader( asm.getBuilder().getRootClassLoader().getParent() );
- RuleBase rb = RuleBaseFactory.newRuleBase( conf );
- rb.addPackage(asm.getBinaryPackage());
- // this.ruleBaseCache.put(item.getUUID(), rb);
- }
+ private BuilderResult[] generateBuilderResults(ContentPackageAssembler asm) {
+ BuilderResult[] result = new BuilderResult[asm.getErrors().size()];
+ for ( int i = 0; i < result.length; i++ ) {
+ ContentAssemblyError err = asm.getErrors().get( i );
+ BuilderResult res = new BuilderResult();
+ res.assetName = err.itemInError.getName();
+ res.assetFormat = err.itemInError.getFormat();
+ res.message = err.errorReport;
+ res.uuid = err.itemInError.getUUID();
+ result[i] = res;
+ }
+ return result;
+ }
- private BuilderResult[] generateBuilderResults(ContentPackageAssembler asm) {
- BuilderResult[] result = new BuilderResult[asm.getErrors().size()];
- for (int i = 0; i < result.length; i++) {
- ContentAssemblyError err = asm.getErrors().get(i);
- BuilderResult res = new BuilderResult();
- res.assetName = err.itemInError.getName();
- res.assetFormat = err.itemInError.getFormat();
- res.message = err.errorReport;
- res.uuid = err.itemInError.getUUID();
- result[i] = res;
- }
- return result;
- }
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public String buildPackageSource(String packageUUID) throws SerializableException {
+ if ( Contexts.isSessionContextActive() ) {
+ Identity.instance().checkPermission( new PackageUUIDType( packageUUID ),
+ RoleTypes.PACKAGE_DEVELOPER );
+ }
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public String buildPackageSource(String packageUUID)
- throws SerializableException {
- if (Contexts.isSessionContextActive()) {
- Identity.instance().checkPermission(
- new PackageUUIDType(packageUUID),
- RoleTypes.PACKAGE_DEVELOPER);
- }
+ PackageItem item = repository.loadPackageByUUID( packageUUID );
+ ContentPackageAssembler asm = new ContentPackageAssembler( item,
+ false );
+ return asm.getDRL();
+ }
- PackageItem item = repository.loadPackageByUUID(packageUUID);
- ContentPackageAssembler asm = new ContentPackageAssembler(item, false);
- return asm.getDRL();
- }
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public String buildAssetSource(RuleAsset asset) throws SerializableException {
+ if ( Contexts.isSessionContextActive() ) {
+ Identity.instance().checkPermission( new PackageNameType( asset.metaData.packageName ),
+ RoleTypes.PACKAGE_DEVELOPER );
+ }
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public String buildAssetSource(RuleAsset asset)
- throws SerializableException {
- if (Contexts.isSessionContextActive()) {
- Identity.instance().checkPermission(
- new PackageNameType(asset.metaData.packageName),
- RoleTypes.PACKAGE_DEVELOPER);
- }
+ AssetItem item = repository.loadAssetByUUID( asset.uuid );
- AssetItem item = repository.loadAssetByUUID(asset.uuid);
+ ContentHandler handler = ContentManager.getHandler( item.getFormat() );// new
+ // AssetContentFormatHandler();
+ handler.storeAssetContent( asset,
+ item );
+ StringBuffer buf = new StringBuffer();
+ if ( handler.isRuleAsset() ) {
- ContentHandler handler = ContentManager.getHandler(item.getFormat());// new
- // AssetContentFormatHandler();
- handler.storeAssetContent(asset, item);
- StringBuffer buf = new StringBuffer();
- if (handler.isRuleAsset()) {
+ BRMSPackageBuilder builder = new BRMSPackageBuilder( new PackageBuilderConfiguration() );
+ // now we load up the DSL files
+ builder.setDSLFiles( BRMSPackageBuilder.getDSLMappingFiles( item.getPackage(),
+ new BRMSPackageBuilder.DSLErrorEvent() {
+ public void recordError(AssetItem asset,
+ String message) {
+ // ignore at this point...
+ }
+ } ) );
+ ((IRuleAsset) handler).assembleDRL( builder,
+ item,
+ buf );
+ } else {
+ return item.getContent();
+ }
- BRMSPackageBuilder builder = new BRMSPackageBuilder(
- new PackageBuilderConfiguration());
- // now we load up the DSL files
- builder.setDSLFiles(BRMSPackageBuilder.getDSLMappingFiles(item
- .getPackage(), new BRMSPackageBuilder.DSLErrorEvent() {
- public void recordError(AssetItem asset, String message) {
- // ignore at this point...
- }
- }));
- ((IRuleAsset) handler).assembleDRL(builder, item, buf);
- } else {
- return item.getContent();
- }
+ return buf.toString();
+ }
- return buf.toString();
- }
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public BuilderResult[] buildAsset(RuleAsset asset) throws SerializableException {
+ if ( Contexts.isSessionContextActive() ) {
+ Identity.instance().checkPermission( new PackageNameType( asset.metaData.packageName ),
+ RoleTypes.PACKAGE_DEVELOPER );
+ }
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public BuilderResult[] buildAsset(RuleAsset asset)
- throws SerializableException {
- if (Contexts.isSessionContextActive()) {
- Identity.instance().checkPermission(
- new PackageNameType(asset.metaData.packageName),
- RoleTypes.PACKAGE_DEVELOPER);
- }
+ try {
- try {
+ AssetItem item = repository.loadAssetByUUID( asset.uuid );
- AssetItem item = repository.loadAssetByUUID(asset.uuid);
+ ContentHandler handler = ContentManager.getHandler( item.getFormat() );// new
+ // AssetContentFormatHandler();
+ handler.storeAssetContent( asset,
+ item );
- ContentHandler handler = ContentManager
- .getHandler(item.getFormat());// new
- // AssetContentFormatHandler();
- handler.storeAssetContent(asset, item);
+ if ( handler instanceof IValidating ) {
+ return ((IValidating) handler).validateAsset( item );
+ } else {
- if (handler instanceof IValidating) {
- return ((IValidating) handler).validateAsset(item);
- } else {
+ ContentPackageAssembler asm = new ContentPackageAssembler( item );
+ if ( !asm.hasErrors() ) {
+ return null;
+ } else {
+ return generateBuilderResults( asm );
+ }
+ }
+ } catch ( Exception e ) {
+ log.error( e );
+ BuilderResult[] result = new BuilderResult[1];
- ContentPackageAssembler asm = new ContentPackageAssembler(item);
- if (!asm.hasErrors()) {
- return null;
- } else {
- return generateBuilderResults(asm);
- }
- }
- } catch (Exception e) {
- log.error(e);
- BuilderResult[] result = new BuilderResult[1];
+ BuilderResult res = new BuilderResult();
+ res.assetName = asset.metaData.name;
+ res.assetFormat = asset.metaData.format;
+ res.message = "Unable to validate this asset. (Check log for detailed messages).";
+ res.uuid = asset.uuid;
+ result[0] = res;
- BuilderResult res = new BuilderResult();
- res.assetName = asset.metaData.name;
- res.assetFormat = asset.metaData.format;
- res.message = "Unable to validate this asset. (Check log for detailed messages).";
- res.uuid = asset.uuid;
- result[0] = res;
+ return result;
+ }
- return result;
- }
+ }
- }
+ @WebRemote
+ public void copyPackage(String sourcePackageName,
+ String destPackageName) throws SerializableException {
+ if ( Contexts.isSessionContextActive() ) {
+ Identity.instance().checkPermission( new AdminType(),
+ RoleTypes.ADMIN );
+ }
- @WebRemote
- public void copyPackage(String sourcePackageName, String destPackageName)
- throws SerializableException {
- if (Contexts.isSessionContextActive()) {
- Identity.instance().checkPermission(
- new AdminType(),
- RoleTypes.ADMIN);
- }
+ try {
+ repository.copyPackage( sourcePackageName,
+ destPackageName );
+ } catch ( RulesRepositoryException e ) {
+ log.error( e );
+ throw e;
+ }
- try {
- repository.copyPackage(sourcePackageName, destPackageName);
- } catch (RulesRepositoryException e) {
- log.error(e);
- throw e;
- }
+ // If we allow package owner to copy package, we will have to update the
+ // permission store
+ // for the newly copied package.
+ // Update permission store
+ /*
+ * String copiedUuid = ""; try { PackageItem source =
+ * repository.loadPackage( destPackageName ); copiedUuid =
+ * source.getUUID(); } catch (RulesRepositoryException e) { log.error( e ); }
+ * PackageBasedPermissionStore pbps = new PackageBasedPermissionStore();
+ * pbps.addPackageBasedPermission(new PackageBasedPermission(copiedUuid,
+ * Identity.instance().getPrincipal().getName(),
+ * RoleTypes.PACKAGE_ADMIN));
+ */
+ }
- // If we allow package owner to copy package, we will have to update the
- // permission store
- // for the newly copied package.
- // Update permission store
- /*
- * String copiedUuid = ""; try { PackageItem source =
- * repository.loadPackage( destPackageName ); copiedUuid =
- * source.getUUID(); } catch (RulesRepositoryException e) { log.error( e ); }
- * PackageBasedPermissionStore pbps = new PackageBasedPermissionStore();
- * pbps.addPackageBasedPermission(new PackageBasedPermission(copiedUuid,
- * Identity.instance().getPrincipal().getName(),
- * RoleTypes.PACKAGE_ADMIN));
- */
- }
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public String renameAsset(String uuid,
+ String newName) {
+ AssetItem item = repository.loadAssetByUUID( uuid );
+ if ( Contexts.isSessionContextActive() ) {
+ Identity.instance().checkPermission( new PackageUUIDType( item.getPackage().getUUID() ),
+ RoleTypes.PACKAGE_DEVELOPER );
+ }
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public String renameAsset(String uuid, String newName) {
- AssetItem item = repository.loadAssetByUUID(uuid);
- if (Contexts.isSessionContextActive()) {
- Identity.instance().checkPermission(
- new PackageUUIDType(item.getPackage().getUUID()),
- RoleTypes.PACKAGE_DEVELOPER);
- }
+ return repository.renameAsset( uuid,
+ newName );
+ }
- return repository.renameAsset(uuid, newName);
- }
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public void archiveAsset(String uuid,
+ boolean value) {
+ try {
+ AssetItem item = repository.loadAssetByUUID( uuid );
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public void archiveAsset(String uuid, boolean value) {
- try {
- AssetItem item = repository.loadAssetByUUID(uuid);
+ if ( Contexts.isSessionContextActive() ) {
+ Identity.instance().checkPermission( new PackageUUIDType( item.getPackage().getUUID() ),
+ RoleTypes.PACKAGE_DEVELOPER );
+ }
- if (Contexts.isSessionContextActive()) {
- Identity.instance().checkPermission(
- new PackageUUIDType(item.getPackage().getUUID()),
- RoleTypes.PACKAGE_DEVELOPER);
- }
+ item.archiveItem( value );
+ PackageItem pkg = item.getPackage();
+ pkg.updateBinaryUpToDate( false );
+ this.ruleBaseCache.remove( pkg.getUUID() );
+ item.checkin( "unarchived" );
- item.archiveItem(value);
- PackageItem pkg = item.getPackage();
- pkg.updateBinaryUpToDate(false);
- this.ruleBaseCache.remove(pkg.getUUID());
- item.checkin("unarchived");
+ } catch ( RulesRepositoryException e ) {
+ log.error( e );
+ throw e;
+ }
+ }
- } catch (RulesRepositoryException e) {
- log.error(e);
- throw e;
- }
- }
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public void removeAsset(String uuid) {
+ try {
+ AssetItem item = repository.loadAssetByUUID( uuid );
+ if ( Contexts.isSessionContextActive() ) {
+ Identity.instance().checkPermission( new PackageUUIDType( item.getPackage().getUUID() ),
+ RoleTypes.PACKAGE_DEVELOPER );
+ }
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public void removeAsset(String uuid) {
- try {
- AssetItem item = repository.loadAssetByUUID(uuid);
- if (Contexts.isSessionContextActive()) {
- Identity.instance().checkPermission(
- new PackageUUIDType(item.getPackage().getUUID()),
- RoleTypes.PACKAGE_DEVELOPER);
- }
+ item.remove();
+ repository.save();
+ } catch ( RulesRepositoryException e ) {
+ log.error( e );
+ throw e;
+ }
+ }
- item.remove();
- repository.save();
- } catch (RulesRepositoryException e) {
- log.error(e);
- throw e;
- }
- }
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public void removePackage(String uuid) {
+ if ( Contexts.isSessionContextActive() ) {
+ Identity.instance().checkPermission( new PackageUUIDType( uuid ),
+ RoleTypes.PACKAGE_ADMIN );
+ }
+ try {
+ PackageItem item = repository.loadPackageByUUID( uuid );
+ item.remove();
+ repository.save();
+ } catch ( RulesRepositoryException e ) {
+ log.error( e );
+ throw e;
+ }
+ }
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public void removePackage(String uuid) {
- if (Contexts.isSessionContextActive()) {
- Identity.instance().checkPermission(new PackageUUIDType(uuid),
- RoleTypes.PACKAGE_ADMIN);
- }
- try {
- PackageItem item = repository.loadPackageByUUID(uuid);
- item.remove();
- repository.save();
- } catch (RulesRepositoryException e) {
- log.error(e);
- throw e;
- }
- }
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public String renamePackage(String uuid,
+ String newName) {
+ if ( Contexts.isSessionContextActive() ) {
+ Identity.instance().checkPermission( new PackageUUIDType( uuid ),
+ RoleTypes.PACKAGE_ADMIN );
+ }
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public String renamePackage(String uuid, String newName) {
- if (Contexts.isSessionContextActive()) {
- Identity.instance().checkPermission(new PackageUUIDType(uuid),
- RoleTypes.PACKAGE_ADMIN);
- }
+ return repository.renamePackage( uuid,
+ newName );
+ }
- return repository.renamePackage(uuid, newName);
- }
+ @WebRemote
+ public void rebuildSnapshots() throws SerializableException {
+ if ( Contexts.isSessionContextActive() ) {
+ Identity.instance().checkPermission( new AdminType(),
+ RoleTypes.ADMIN );
+ }
- @WebRemote
- public void rebuildSnapshots() throws SerializableException {
- if (Contexts.isSessionContextActive()) {
- Identity.instance().checkPermission(
- new AdminType(),
- RoleTypes.ADMIN);
- }
+ Iterator pkit = repository.listPackages();
+ while ( pkit.hasNext() ) {
+ PackageItem pkg = (PackageItem) pkit.next();
+ String[] snaps = repository.listPackageSnapshots( pkg.getName() );
+ for ( String snapName : snaps ) {
+ PackageItem snap = repository.loadPackageSnapshot( pkg.getName(),
+ snapName );
+ BuilderResult[] res = this.buildPackage( snap.getUUID(),
+ "",
+ true );
+ if ( res != null ) {
+ StringBuffer buf = new StringBuffer();
+ for ( int i = 0; i < res.length; i++ ) {
+ buf.append( res[i].toString() );
+ buf.append( '\n' );
+ }
+ throw new DetailedSerializableException( "Unable to rebuild snapshot [" + snapName,
+ buf.toString() + "]" );
+ }
+ }
+ }
+ }
- Iterator pkit = repository.listPackages();
- while (pkit.hasNext()) {
- PackageItem pkg = (PackageItem) pkit.next();
- String[] snaps = repository.listPackageSnapshots(pkg.getName());
- for (String snapName : snaps) {
- PackageItem snap = repository.loadPackageSnapshot(
- pkg.getName(), snapName);
- BuilderResult[] res = this.buildPackage(snap.getUUID(), "",
- true);
- if (res != null) {
- StringBuffer buf = new StringBuffer();
- for (int i = 0; i < res.length; i++) {
- buf.append(res[i].toString());
- buf.append('\n');
- }
- throw new DetailedSerializableException(
- "Unable to rebuild snapshot [" + snapName, buf
- .toString()
- + "]");
- }
- }
- }
- }
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public String[] listRulesInPackage(String packageName) throws SerializableException {
+ if ( Contexts.isSessionContextActive() ) {
+ Identity.instance().checkPermission( new PackageNameType( packageName ),
+ RoleTypes.PACKAGE_READONLY );
+ }
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public String[] listRulesInPackage(String packageName)
- throws SerializableException {
- if (Contexts.isSessionContextActive()) {
- Identity.instance().checkPermission(
- new PackageNameType(packageName),
- RoleTypes.PACKAGE_READONLY);
- }
+ PackageItem item = repository.loadPackage( packageName );
+ ContentPackageAssembler asm = new ContentPackageAssembler( item,
+ false );
+ List<String> result = new ArrayList<String>();
+ DrlParser p = new DrlParser();
+ try {
+ PackageDescr pkg = p.parse( asm.getDRL() );
+ int count = 0;
+ if ( pkg != null ) {
+ for ( Iterator iterator = pkg.getRules().iterator(); iterator.hasNext(); ) {
+ RuleDescr r = (RuleDescr) iterator.next();
+ result.add( r.getName() );
+ count++;
+ if ( count == 5000 ) {
+ result.add( "More then 5000 rules." );
+ break;
+ }
+ }
+ }
+ return result.toArray( new String[result.size()] );
+ } catch ( DroolsParserException e ) {
+ log.error( e );
+ return new String[0];
+ }
+ }
- PackageItem item = repository.loadPackage(packageName);
- ContentPackageAssembler asm = new ContentPackageAssembler(item, false);
- List<String> result = new ArrayList<String>();
- DrlParser p = new DrlParser();
- try {
- PackageDescr pkg = p.parse(asm.getDRL());
- int count = 0;
- if (pkg != null) {
- for (Iterator iterator = pkg.getRules().iterator(); iterator
- .hasNext();) {
- RuleDescr r = (RuleDescr) iterator.next();
- result.add(r.getName());
- count++;
- if (count == 5000) {
- result.add("More then 5000 rules.");
- break;
- }
- }
- }
- return result.toArray(new String[result.size()]);
- } catch (DroolsParserException e) {
- log.error(e);
- return new String[0];
- }
- }
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public SingleScenarioResult runScenario(String packageName,
+ Scenario scenario) throws SerializableException {
+ if ( Contexts.isSessionContextActive() ) {
+ Identity.instance().checkPermission( new PackageNameType( packageName ),
+ RoleTypes.PACKAGE_DEVELOPER );
+ }
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public SingleScenarioResult runScenario(String packageName, Scenario scenario)
- throws SerializableException {
- if (Contexts.isSessionContextActive()) {
- Identity.instance().checkPermission(
- new PackageNameType(packageName),
- RoleTypes.PACKAGE_DEVELOPER);
- }
+ return runScenario( packageName,
+ scenario,
+ null );
- return runScenario(packageName, scenario, null);
+ }
- }
+ private SingleScenarioResult runScenario(String packageName,
+ Scenario scenario,
+ RuleCoverageListener coverage) throws SerializableException {
+ PackageItem item = this.repository.loadPackage( packageName );
- private SingleScenarioResult runScenario(String packageName, Scenario scenario, RuleCoverageListener coverage) throws SerializableException {
- PackageItem item = this.repository.loadPackage(packageName);
+ // nasty classloader needed to make sure we use the same tree the whole
+ // time.
+ ClassLoader originalCL = Thread.currentThread().getContextClassLoader();
- // nasty classloader needed to make sure we use the same tree the whole
- // time.
- ClassLoader originalCL = Thread.currentThread().getContextClassLoader();
+ final RuleBase rb;
- final RuleBase rb;
+ try {
+ if ( item.isBinaryUpToDate() && this.ruleBaseCache.containsKey( item.getUUID() ) ) {
+ rb = this.ruleBaseCache.get( item.getUUID() );
+ } else {
+ // load up the classloader we are going to use
+ List<JarInputStream> jars = BRMSPackageBuilder.getJars( item );
+ ClassLoader buildCl = BRMSPackageBuilder.createClassLoader( jars );
- try {
- if (item.isBinaryUpToDate()
- && this.ruleBaseCache.containsKey(item.getUUID())) {
- rb = this.ruleBaseCache.get(item.getUUID());
- } else {
- // load up the classloader we are going to use
- List<JarInputStream> jars = BRMSPackageBuilder.getJars(item);
- ClassLoader buildCl = BRMSPackageBuilder
- .createClassLoader(jars);
+ // we have to build the package, and try again.
+ if ( item.isBinaryUpToDate() ) {
+ rb = loadRuleBase( item,
+ buildCl );
+ this.ruleBaseCache.put( item.getUUID(),
+ rb );
+ } else {
+ BuilderResult[] errs = this.buildPackage( null,
+ false,
+ item );
+ if ( errs == null || errs.length == 0 ) {
+ rb = loadRuleBase( item,
+ buildCl );
+ this.ruleBaseCache.put( item.getUUID(),
+ rb );
+ } else {
+ SingleScenarioResult r = new SingleScenarioResult();
+ r.result = new ScenarioRunResult( errs,
+ null );
+ return r;
+ }
+ }
+ }
- // we have to build the package, and try again.
- if (item.isBinaryUpToDate()) {
- rb = loadRuleBase(item, buildCl);
- this.ruleBaseCache.put(item.getUUID(), rb);
- } else {
- BuilderResult[] errs = this.buildPackage(null, false, item);
- if (errs == null || errs.length == 0) {
- rb = loadRuleBase(item, buildCl);
- this.ruleBaseCache.put(item.getUUID(), rb);
- } else {
- SingleScenarioResult r = new SingleScenarioResult();
- r.result = new ScenarioRunResult(errs, null);
- return r;
- }
- }
- }
+ ClassLoader cl = ((InternalRuleBase) this.ruleBaseCache.get( item.getUUID() )).getRootClassLoader();
+ Thread.currentThread().setContextClassLoader( cl );
+ return runScenario( scenario,
+ item,
+ cl,
+ rb,
+ coverage );
- ClassLoader cl = ((InternalRuleBase)this.ruleBaseCache.get(item.getUUID())).getRootClassLoader();
- Thread.currentThread().setContextClassLoader(cl);
- return runScenario(scenario, item, cl, rb, coverage);
+ } finally {
+ Thread.currentThread().setContextClassLoader( originalCL );
+ }
- } finally {
- Thread.currentThread().setContextClassLoader(originalCL);
- }
+ }
- }
+ private RuleBase loadRuleBase(PackageItem item,
+ ClassLoader cl) throws DetailedSerializableException {
+ try {
+ RuleBase rb = RuleBaseFactory.newRuleBase( new RuleBaseConfiguration( cl ) );
+ Package bin = (Package) DroolsStreamUtils.streamIn( item.getCompiledPackageBytes(),
+ cl );
+ rb.addPackage( bin );
+ return rb;
+ } catch ( ClassNotFoundException e ) {
+ log.error( e );
+ throw new DetailedSerializableException( "A required class was not found.",
+ e.getMessage() );
+ } catch ( Exception e ) {
+ log.error( e );
+ throw new DetailedSerializableException( "Unable to load a rulebase.",
+ e.getMessage() );
+ }
+ }
- private RuleBase loadRuleBase(PackageItem item, ClassLoader cl)
- throws DetailedSerializableException {
- try {
- RuleBase rb = RuleBaseFactory
- .newRuleBase(new RuleBaseConfiguration(cl));
- Package bin = (Package) DroolsStreamUtils.streamIn(item
- .getCompiledPackageBytes(), cl);
- rb.addPackage(bin);
- return rb;
- } catch (ClassNotFoundException e) {
- log.error(e);
- throw new DetailedSerializableException(
- "A required class was not found.", e.getMessage());
- } catch (Exception e) {
- log.error(e);
- throw new DetailedSerializableException(
- "Unable to load a rulebase.", e.getMessage());
- }
- }
+ private SingleScenarioResult runScenario(Scenario scenario,
+ PackageItem item,
+ ClassLoader cl,
+ RuleBase rb,
+ RuleCoverageListener coverage) throws DetailedSerializableException {
- private SingleScenarioResult runScenario(Scenario scenario, PackageItem item,
- ClassLoader cl, RuleBase rb, RuleCoverageListener coverage) throws DetailedSerializableException {
+ // RuleBase rb = ruleBaseCache.get(item.getUUID());
+ Package bin = rb.getPackages()[0];
- // RuleBase rb = ruleBaseCache.get(item.getUUID());
- Package bin = rb.getPackages()[0];
+ Set<String> imps = bin.getImports().keySet();
+ Set<String> allImps = new HashSet<String>( imps );
+ if ( bin.getGlobals() != null ) {
+ for ( Iterator iterator = bin.getGlobals().keySet().iterator(); iterator.hasNext(); ) {
+ allImps.add( bin.getGlobals().get( iterator.next() ) );
+ }
+ }
+ allImps.add( bin.getName() + ".*" ); // need this for Generated beans to
+ // work
- Set<String> imps = bin.getImports().keySet();
- Set<String> allImps = new HashSet<String>(imps);
- if (bin.getGlobals() != null) {
- for (Iterator iterator = bin.getGlobals().keySet().iterator(); iterator
- .hasNext();) {
- allImps.add( bin.getGlobals().get(iterator.next()));
- }
- }
- allImps.add(bin.getName() + ".*"); // need this for Generated beans to
- // work
+ ClassTypeResolver res = new ClassTypeResolver( allImps,
+ cl );
+ SessionConfiguration sessionConfiguration = new SessionConfiguration();
+ sessionConfiguration.setKeepReference( false );
+ InternalWorkingMemory workingMemory = (InternalWorkingMemory) rb.newStatefulSession( sessionConfiguration );
+ if ( coverage != null ) workingMemory.addEventListener( coverage );
+ try {
+ AuditLogReporter logger = new AuditLogReporter( workingMemory );
+ new ScenarioRunner( scenario,
+ res,
+ workingMemory );
+ SingleScenarioResult r = new SingleScenarioResult();
+ r.auditLog = logger.buildReport();
+ r.result = new ScenarioRunResult( null,
+ scenario );
+ return r;
+ } catch ( ClassNotFoundException e ) {
+ log.error( e );
+ throw new DetailedSerializableException( "Unable to load a required class.",
+ e.getMessage() );
+ } finally {
- ClassTypeResolver res = new ClassTypeResolver(allImps, cl);
- SessionConfiguration sessionConfiguration = new SessionConfiguration();
- sessionConfiguration.setKeepReference(false);
- InternalWorkingMemory workingMemory = (InternalWorkingMemory) rb
- .newStatefulSession(sessionConfiguration);
- if (coverage != null) workingMemory.addEventListener(coverage);
- try {
- AuditLogReporter logger = new AuditLogReporter(workingMemory);
- new ScenarioRunner(scenario, res, workingMemory);
- SingleScenarioResult r = new SingleScenarioResult();
- r.auditLog = logger.buildReport();
- r.result = new ScenarioRunResult(null, scenario);
- return r;
- } catch (ClassNotFoundException e) {
- log.error(e);
- throw new DetailedSerializableException(
- "Unable to load a required class.", e.getMessage());
- } finally {
+ }
+ }
- }
- }
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public BulkTestRunResult runScenariosInPackage(String packageUUID) throws SerializableException {
+ if ( Contexts.isSessionContextActive() ) {
+ Identity.instance().checkPermission( new PackageUUIDType( packageUUID ),
+ RoleTypes.PACKAGE_DEVELOPER );
+ }
+ PackageItem item = repository.loadPackageByUUID( packageUUID );
+ ClassLoader originalCL = Thread.currentThread().getContextClassLoader();
+ ClassLoader cl = null;
+ try {
+ if ( item.isBinaryUpToDate() && this.ruleBaseCache.containsKey( item.getUUID() ) ) {
+ RuleBase rb = this.ruleBaseCache.get( item.getUUID() );
+ AbstractRuleBase arb = (AbstractRuleBase) rb;
+ // load up the existing class loader from before
+ cl = arb.getConfiguration().getClassLoader();
+ Thread.currentThread().setContextClassLoader( cl );
+ } else {
+ // load up the classloader we are going to use
+ List<JarInputStream> jars = BRMSPackageBuilder.getJars( item );
+ cl = BRMSPackageBuilder.createClassLoader( jars );
+ Thread.currentThread().setContextClassLoader( cl );
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public BulkTestRunResult runScenariosInPackage(String packageUUID)
- throws SerializableException {
- if (Contexts.isSessionContextActive()) {
- Identity.instance().checkPermission(
- new PackageUUIDType(packageUUID),
- RoleTypes.PACKAGE_DEVELOPER);
- }
+ // we have to build the package, and try again.
+ if ( item.isBinaryUpToDate() ) {
+ this.ruleBaseCache.put( item.getUUID(),
+ loadRuleBase( item,
+ cl ) );
+ } else {
+ BuilderResult[] errs = this.buildPackage( null,
+ false,
+ item );
+ if ( errs == null || errs.length == 0 ) {
+ this.ruleBaseCache.put( item.getUUID(),
+ loadRuleBase( item,
+ cl ) );
+ } else {
+ return new BulkTestRunResult( errs,
+ null,
+ 0,
+ null );
+ }
+ }
+ }
- PackageItem item = repository.loadPackageByUUID(packageUUID);
+ AssetItemIterator it = item.listAssetsByFormat( new String[]{AssetFormats.TEST_SCENARIO} );
+ List<ScenarioResultSummary> resultSummaries = new ArrayList<ScenarioResultSummary>();
+ RuleBase rb = ruleBaseCache.get( item.getUUID() );
+ Package bin = rb.getPackages()[0];
- ClassLoader originalCL = Thread.currentThread().getContextClassLoader();
- ClassLoader cl = null;
+ RuleCoverageListener coverage = new RuleCoverageListener( expectedRules( bin ) );
- try {
- if (item.isBinaryUpToDate()
- && this.ruleBaseCache.containsKey(item.getUUID())) {
- RuleBase rb = this.ruleBaseCache.get(item.getUUID());
- AbstractRuleBase arb = (AbstractRuleBase) rb;
- // load up the existing class loader from before
- cl = arb.getConfiguration().getClassLoader();
- Thread.currentThread().setContextClassLoader(cl);
- } else {
- // load up the classloader we are going to use
- List<JarInputStream> jars = BRMSPackageBuilder.getJars(item);
- cl = BRMSPackageBuilder.createClassLoader(jars);
- Thread.currentThread().setContextClassLoader(cl);
+ while ( it.hasNext() ) {
+ RuleAsset asset = loadAsset( (AssetItem) it.next() );
+ Scenario sc = (Scenario) asset.content;
+ runScenario( item.getName(),
+ sc,
+ coverage );//runScenario(sc, res, workingMemory).scenario;
- // we have to build the package, and try again.
- if (item.isBinaryUpToDate()) {
- this.ruleBaseCache.put(item.getUUID(), loadRuleBase(item,
- cl));
- } else {
- BuilderResult[] errs = this.buildPackage(null, false, item);
- if (errs == null || errs.length == 0) {
- this.ruleBaseCache.put(item.getUUID(), loadRuleBase(
- item, cl));
- } else {
- return new BulkTestRunResult(errs, null, 0, null);
- }
- }
- }
+ int[] totals = sc.countFailuresTotal();
+ resultSummaries.add( new ScenarioResultSummary( totals[0],
+ totals[1],
+ asset.metaData.name,
+ asset.metaData.description,
+ asset.uuid ) );
+ }
- AssetItemIterator it = item.listAssetsByFormat(new String[] { AssetFormats.TEST_SCENARIO });
- List<ScenarioResultSummary> resultSummaries = new ArrayList<ScenarioResultSummary>();
- RuleBase rb = ruleBaseCache.get(item.getUUID());
- Package bin = rb.getPackages()[0];
+ ScenarioResultSummary[] summaries = resultSummaries.toArray( new ScenarioResultSummary[resultSummaries.size()] );
- RuleCoverageListener coverage = new RuleCoverageListener(
- expectedRules(bin));
+ BulkTestRunResult result = new BulkTestRunResult( null,
+ resultSummaries.toArray( summaries ),
+ coverage.getPercentCovered(),
+ coverage.getUnfiredRules() );
+ return result;
- while (it.hasNext()) {
- RuleAsset asset = loadAsset((AssetItem) it.next());
- Scenario sc = (Scenario) asset.content;
- runScenario(item.getName(), sc, coverage);//runScenario(sc, res, workingMemory).scenario;
+ } finally {
+ Thread.currentThread().setContextClassLoader( originalCL );
+ }
- int[] totals = sc.countFailuresTotal();
- resultSummaries.add(new ScenarioResultSummary(totals[0],
- totals[1], asset.metaData.name,
- asset.metaData.description, asset.uuid));
- }
+ }
- ScenarioResultSummary[] summaries = resultSummaries
- .toArray(new ScenarioResultSummary[resultSummaries.size()]);
+ private HashSet<String> expectedRules(Package bin) {
+ HashSet<String> h = new HashSet<String>();
+ for ( int i = 0; i < bin.getRules().length; i++ ) {
+ h.add( bin.getRules()[i].getName() );
+ }
+ return h;
+ }
- BulkTestRunResult result = new BulkTestRunResult(null,
- resultSummaries.toArray(summaries), coverage
- .getPercentCovered(), coverage.getUnfiredRules());
- return result;
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public AnalysisReport analysePackage(String packageUUID) throws SerializableException {
+ if ( Contexts.isSessionContextActive() ) {
+ Identity.instance().checkPermission( new PackageUUIDType( packageUUID ),
+ RoleTypes.PACKAGE_DEVELOPER );
+ }
- } finally {
- Thread.currentThread().setContextClassLoader(originalCL);
- }
+ String drl = this.buildPackageSource( packageUUID );
+ VerifierRunner runner = new VerifierRunner();
+ try {
+ return runner.analyse( drl );
+ } catch ( DroolsParserException e ) {
+ log.error( e );
+ throw new DetailedSerializableException( "Unable to parse the rules.",
+ e.getMessage() );
+ }
+ }
- }
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public String[] listTypesInPackage(String packageUUID) throws SerializableException {
+ if ( Contexts.isSessionContextActive() ) {
+ Identity.instance().checkPermission( new PackageUUIDType( packageUUID ),
+ "package.readoly" );
+ }
- private HashSet<String> expectedRules(Package bin) {
- HashSet<String> h = new HashSet<String>();
- for (int i = 0; i < bin.getRules().length; i++) {
- h.add(bin.getRules()[i].getName());
- }
- return h;
- }
+ PackageItem pkg = this.repository.loadPackageByUUID( packageUUID );
+ List<String> res = new ArrayList<String>();
+ AssetItemIterator it = pkg.listAssetsByFormat( new String[]{AssetFormats.MODEL, AssetFormats.DRL_MODEL} );
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public AnalysisReport analysePackage(String packageUUID)
- throws SerializableException {
- if (Contexts.isSessionContextActive()) {
- Identity.instance().checkPermission(
- new PackageUUIDType(packageUUID),
- RoleTypes.PACKAGE_DEVELOPER);
- }
+ JarInputStream jis = null;
- String drl = this.buildPackageSource(packageUUID);
- VerifierRunner runner = new VerifierRunner();
- try {
- return runner.analyse(drl);
- } catch (DroolsParserException e) {
- log.error(e);
- throw new DetailedSerializableException(
- "Unable to parse the rules.", e.getMessage());
- }
- }
+ try {
+ while ( it.hasNext() ) {
+ AssetItem asset = (AssetItem) it.next();
+ if ( !asset.isArchived() ) {
+ if ( asset.getFormat().equals( AssetFormats.MODEL ) ) {
+ jis = new JarInputStream( asset.getBinaryContentAttachment() );
+ JarEntry entry = null;
+ while ( (entry = jis.getNextJarEntry()) != null ) {
+ if ( !entry.isDirectory() ) {
+ if ( entry.getName().endsWith( ".class" ) ) {
+ res.add( ModelContentHandler.convertPathToName( entry.getName() ) );
+ }
+ }
+ }
+ } else {
+ // its delcared model
+ DrlParser parser = new DrlParser();
+ try {
+ PackageDescr desc = parser.parse( asset.getContent() );
+ List<TypeDeclarationDescr> types = desc.getTypeDeclarations();
+ for ( TypeDeclarationDescr typeDeclarationDescr : types ) {
+ res.add( typeDeclarationDescr.getTypeName() );
+ }
+ } catch ( DroolsParserException e ) {
+ log.error( e );
+ }
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public String[] listTypesInPackage(String packageUUID)
- throws SerializableException {
- if (Contexts.isSessionContextActive()) {
- Identity.instance().checkPermission(
- new PackageUUIDType(packageUUID), "package.readoly");
- }
+ }
- PackageItem pkg = this.repository.loadPackageByUUID(packageUUID);
- List<String> res = new ArrayList<String>();
- AssetItemIterator it = pkg.listAssetsByFormat(new String[] {
- AssetFormats.MODEL, AssetFormats.DRL_MODEL });
+ }
+ }
+ return res.toArray( new String[res.size()] );
+ } catch ( IOException e ) {
+ log.error( e );
+ throw new DetailedSerializableException( "Unable to read the jar files in the package.",
+ e.getMessage() );
+ } finally {
+ IOUtils.closeQuietly( jis );
+ }
- JarInputStream jis = null;
+ }
- try {
- while (it.hasNext()) {
- AssetItem asset = (AssetItem) it.next();
- if (!asset.isArchived()) {
- if (asset.getFormat().equals(AssetFormats.MODEL)) {
- jis = new JarInputStream(asset
- .getBinaryContentAttachment());
- JarEntry entry = null;
- while ((entry = jis.getNextJarEntry()) != null) {
- if (!entry.isDirectory()) {
- if (entry.getName().endsWith(".class")) {
- res
- .add(ModelContentHandler
- .convertPathToName(entry
- .getName()));
- }
- }
- }
- } else {
- // its delcared model
- DrlParser parser = new DrlParser();
- try {
- PackageDescr desc = parser
- .parse(asset.getContent());
- List<TypeDeclarationDescr> types = desc
- .getTypeDeclarations();
- for (TypeDeclarationDescr typeDeclarationDescr : types) {
- res.add(typeDeclarationDescr.getTypeName());
- }
- } catch (DroolsParserException e) {
- log.error(e);
- }
+ @WebRemote
+ public LogEntry[] showLog() {
+ if ( Contexts.isSessionContextActive() ) {
+ Identity.instance().checkPermission( new AdminType(),
+ RoleTypes.ADMIN );
+ }
- }
+ return LoggingHelper.getMessages();
- }
- }
- return res.toArray(new String[res.size()]);
- } catch (IOException e) {
- log.error(e);
- throw new DetailedSerializableException(
- "Unable to read the jar files in the package.", e
- .getMessage());
- } finally {
- IOUtils.closeQuietly(jis);
- }
+ }
- }
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public void renameCategory(String fullPathAndName,
+ String newName) {
+ repository.renameCategory( fullPathAndName,
+ newName );
+ }
- @WebRemote
- public LogEntry[] showLog() {
- if (Contexts.isSessionContextActive()) {
- Identity.instance().checkPermission(
- new AdminType(),
- RoleTypes.ADMIN);
- }
+ public static String getDroolsHeader(PackageItem pkg) {
+ if ( pkg.containsAsset( "drools" ) ) {
+ return pkg.loadAsset( "drools" ).getContent();
+ } else {
+ return "";
+ }
+ }
- return LoggingHelper.getMessages();
+ public static void updateDroolsHeader(String string,
+ PackageItem pkg) {
+ pkg.checkout();
+ AssetItem conf;
+ if ( pkg.containsAsset( "drools" ) ) {
+ conf = pkg.loadAsset( "drools" );
+ conf.updateContent( string );
+ conf.checkin( "" );
+ } else {
+ conf = pkg.addAsset( "drools",
+ "" );
+ conf.updateFormat( "package" );
+ conf.updateContent( string );
+ conf.checkin( "" );
+ }
- }
+ }
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public void renameCategory(String fullPathAndName, String newName) {
- repository.renameCategory(fullPathAndName, newName);
- }
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public String[] loadDropDownExpression(String[] valuePairs,
+ String expression) {
+ Map<String, String> context = new HashMap<String, String>();
+ for ( int i = 0; i < valuePairs.length; i++ ) {
+ String[] pair = valuePairs[i].split( "=" );
+ context.put( pair[0],
+ pair[1] );
+ }
+ // first interpolate the pairs
+ expression = (String) TemplateRuntime.eval( expression,
+ context );
- public static String getDroolsHeader(PackageItem pkg) {
- if (pkg.containsAsset("drools")) {
- return pkg.loadAsset("drools").getContent();
- } else {
- return "";
- }
- }
+ // now we can eval it for real...
+ Object result = MVEL.eval( expression );
+ if ( result instanceof String[] ) {
+ return (String[]) result;
+ } else if ( result instanceof List ) {
+ List l = (List) result;
+ String[] xs = new String[l.size()];
+ for ( int i = 0; i < xs.length; i++ ) {
+ Object el = l.get( i );
+ xs[i] = el.toString();
+ }
+ return xs;
+ } else {
+ return null;
+ }
+ }
- public static void updateDroolsHeader(String string, PackageItem pkg) {
- pkg.checkout();
- AssetItem conf;
- if (pkg.containsAsset("drools")) {
- conf = pkg.loadAsset("drools");
- conf.updateContent(string);
- conf.checkin("");
- } else {
- conf = pkg.addAsset("drools", "");
- conf.updateFormat("package");
- conf.updateContent(string);
- conf.checkin("");
- }
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public void rebuildPackages() throws SerializableException {
+ Iterator pkit = repository.listPackages();
+ StringBuffer errs = new StringBuffer();
+ while ( pkit.hasNext() ) {
+ PackageItem pkg = (PackageItem) pkit.next();
+ try {
+ BuilderResult[] res = this.buildPackage( pkg.getUUID(),
+ "",
+ true );
+ if ( res != null ) {
+ errs.append( "Unable to build package name [" + pkg.getName() + "]\n" );
+ StringBuffer buf = new StringBuffer();
+ for ( int i = 0; i < res.length; i++ ) {
+ buf.append( res[i].toString() );
+ buf.append( '\n' );
+ }
+ log.warn( buf.toString() );
- }
+ }
+ } catch ( Exception e ) {
+ log.error( e );
+ errs.append( "An error occurred building package [" + pkg.getName() + "]\n" );
+ }
+ }
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public String[] loadDropDownExpression(String[] valuePairs,
- String expression) {
- Map<String, String> context = new HashMap<String, String>();
- for (int i = 0; i < valuePairs.length; i++) {
- String[] pair = valuePairs[i].split("=");
- context.put(pair[0], pair[1]);
- }
- // first interpolate the pairs
- expression = (String) TemplateRuntime.eval(expression, context);
+ if ( errs.toString().length() > 0 ) {
+ throw new DetailedSerializableException( "Unable to rebuild all packages.",
+ errs.toString() );
+ }
+ }
- // now we can eval it for real...
- Object result = MVEL.eval(expression);
- if (result instanceof String[]) {
- return (String[]) result;
- } else if (result instanceof List) {
- List l = (List) result;
- String[] xs = new String[l.size()];
- for (int i = 0; i < xs.length; i++) {
- Object el = l.get(i);
- xs[i] = el.toString();
- }
- return xs;
- } else {
- return null;
- }
- }
+ public Map<String, List<String>> listUserPermissions() {
+ if ( Contexts.isSessionContextActive() ) {
+ Identity.instance().checkPermission( new AdminType(),
+ RoleTypes.ADMIN );
+ }
- @WebRemote
- @Restrict("#{identity.loggedIn}")
- public void rebuildPackages() throws SerializableException {
- Iterator pkit = repository.listPackages();
- StringBuffer errs = new StringBuffer();
- while (pkit.hasNext()) {
- PackageItem pkg = (PackageItem) pkit.next();
- try {
- BuilderResult[] res = this
- .buildPackage(pkg.getUUID(), "", true);
- if (res != null) {
- errs.append("Unable to build package name ["
- + pkg.getName() + "]\n");
- StringBuffer buf = new StringBuffer();
- for (int i = 0; i < res.length; i++) {
- buf.append(res[i].toString());
- buf.append('\n');
- }
- log.warn(buf.toString());
+ PermissionManager pm = new PermissionManager( repository );
+ return pm.listUsers();
+ }
- }
- } catch (Exception e) {
- log.error(e);
- errs.append("An error occurred building package ["
- + pkg.getName() + "]\n");
- }
- }
+ public Map<String, List<String>> retrieveUserPermissions(String userName) {
+ if ( Contexts.isSessionContextActive() ) {
+ Identity.instance().checkPermission( new AdminType(),
+ RoleTypes.ADMIN );
+ }
- if (errs.toString().length() > 0) {
- throw new DetailedSerializableException(
- "Unable to rebuild all packages.", errs.toString());
- }
- }
+ PermissionManager pm = new PermissionManager( repository );
+ return pm.retrieveUserPermissions( userName );
+ }
- public Map<String, List<String>> listUserPermissions() {
- if (Contexts.isSessionContextActive()) {
- Identity.instance().checkPermission(
- new AdminType(),
- RoleTypes.ADMIN);
- }
+ public void updateUserPermissions(String userName,
+ Map<String, List<String>> perms) {
+ if ( Contexts.isSessionContextActive() ) {
+ Identity.instance().checkPermission( new AdminType(),
+ RoleTypes.ADMIN );
+ }
- PermissionManager pm = new PermissionManager(repository);
- return pm.listUsers();
- }
+ PermissionManager pm = new PermissionManager( repository );
+ System.err.println( perms );
+ log.info( "Updating user permissions for userName [" + userName + "] to [" + perms + "]" );
+ pm.updateUserPermissions( userName,
+ perms );
+ repository.save();
+ }
- public Map<String, List<String>> retrieveUserPermissions(String userName) {
- if (Contexts.isSessionContextActive()) {
- Identity.instance().checkPermission(
- new AdminType(),
- RoleTypes.ADMIN);
- }
+ public String[] listAvailablePermissionTypes() {
+ if ( Contexts.isSessionContextActive() ) {
+ Identity.instance().checkPermission( new AdminType(),
+ RoleTypes.ADMIN );
+ }
- PermissionManager pm = new PermissionManager(repository);
- return pm.retrieveUserPermissions(userName);
- }
+ return RoleTypes.listAvailableTypes();
+ }
- public void updateUserPermissions(String userName,
- Map<String, List<String>> perms) {
- if (Contexts.isSessionContextActive()) {
- Identity.instance().checkPermission(
- new AdminType(),
- RoleTypes.ADMIN);
- }
+ public void deleteUser(String userName) {
+ log.info( "Removing user permissions for user name [" + userName + "]" );
+ PermissionManager pm = new PermissionManager( repository );
+ pm.removeUserPermissions( userName );
+ repository.save();
+ }
- PermissionManager pm = new PermissionManager(repository);
- System.err.println(perms);
- log.info("Updating user permissions for userName [" + userName + "] to [" + perms + "]");
- pm.updateUserPermissions(userName, perms);
- repository.save();
- }
-
- public String[] listAvailablePermissionTypes() {
- if (Contexts.isSessionContextActive()) {
- Identity.instance().checkPermission(
- new AdminType(),
- RoleTypes.ADMIN);
- }
-
- return RoleTypes.listAvailableTypes();
- }
-
- public void deleteUser(String userName) {
- log.info("Removing user permissions for user name [" + userName + "]");
- PermissionManager pm = new PermissionManager(repository);
- pm.removeUserPermissions(userName);
- repository.save();
- }
- /* (non-Javadoc)
- * @see org.drools.guvnor.client.rpc.RepositoryService#getAssetLockerUserName(java.lang.String)
- */
+ /* (non-Javadoc)
+ * @see org.drools.guvnor.client.rpc.RepositoryService#getAssetLockerUserName(java.lang.String)
+ */
public String getAssetLockerUserName(String uuid) {
AssetLockManager alm = AssetLockManager.instance();
String userName = alm.getAssetLockerUserName( uuid );
-
+
log.info( "Asset locked by [" + userName + "]" );
-
+
return userName;
}
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 2008-11-05 03:30:46 UTC (rev 23706)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RulesRepository.java 2008-11-05 08:26:50 UTC (rev 23707)
@@ -349,7 +349,7 @@
AssetItem.PACKAGE_NAME_PROPERTY );
dest.node.setProperty( AssetItem.VERSION_NUMBER_PROPERTY_NAME,
0 );
- dest.updateTitle(dest.getName());
+ dest.updateTitle( dest.getName() );
dest.checkin( "Copied from " + source.getPackageName() + "/" + source.getName() );
return dest.getUUID();
} catch ( RepositoryException e ) {
@@ -384,6 +384,23 @@
}
}
+ public StateItem loadState(String name) throws RulesRepositoryException {
+ try {
+ Node folderNode = this.getAreaNode( STATE_AREA );
+ Node ruleStateNode = folderNode.getNode( name );
+
+ return new StateItem( this,
+ ruleStateNode );
+ } catch ( RepositoryException e ) {
+ log.error( "Unable to load a status. ",
+ e );
+
+ throw new RulesRepositoryException( "Unable to load a status. ",
+ e );
+
+ }
+ }
+
/**
* This returns true if the repository contains the specified package name.
*/
@@ -1122,6 +1139,22 @@
}
}
+ public void renameState(String oldName,
+ String newName) {
+ try {
+ StateItem state = loadState( oldName );
+ Node node = state.getNode();
+ String sourcePath = node.getPath();
+ String destPath = node.getParent().getPath() + "/" + newName;
+ this.session.move( sourcePath,
+ destPath );
+ save();
+ } catch ( RepositoryException e ) {
+ log.error( e );
+ throw new RulesRepositoryException( e );
+ }
+ }
+
/**
* This will rename a package and apply the change immediately.
* @return the UUID of the package
@@ -1267,7 +1300,7 @@
String sql = "SELECT " + AssetItem.TITLE_PROPERTY_NAME + ", " + AssetItem.DESCRIPTION_PROPERTY_NAME + ", " + AssetItem.CONTENT_PROPERTY_ARCHIVE_FLAG + " FROM " + AssetItem.RULE_NODE_TYPE_NAME;
sql += " WHERE jcr:path LIKE '/" + RULES_REPOSITORY_NAME + "/" + RULE_PACKAGE_AREA + "/%'";
for ( Iterator<Map.Entry<String, String[]>> iterator = params.entrySet().iterator(); iterator.hasNext(); ) {
- Map.Entry<String, String[]> en = iterator.next();
+ Map.Entry<String, String[]> en = iterator.next();
String fld = en.getKey();
String[] options = en.getValue();
if ( options != null && options.length > 0 ) {
Modified: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/StateItem.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/StateItem.java 2008-11-05 03:30:46 UTC (rev 23706)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/StateItem.java 2008-11-05 08:26:50 UTC (rev 23707)
@@ -1,6 +1,8 @@
package org.drools.repository;
import javax.jcr.Node;
+import javax.jcr.PropertyIterator;
+import javax.jcr.RepositoryException;
import org.apache.log4j.Logger;
@@ -13,18 +15,18 @@
*/
public class StateItem extends Item {
- private Logger log = Logger.getLogger(StateItem.class);
+ private Logger log = Logger.getLogger( StateItem.class );
/**
* All assets when created, or a new version saved, have a status of Draft.
*/
- public static final String DRAFT_STATE_NAME = "Draft";
-
+ public static final String DRAFT_STATE_NAME = "Draft";
+
/**
* The name of the state node type
*/
public static final String STATE_NODE_TYPE_NAME = "drools:stateNodeType";
-
+
/**
* Constructs an object of type StateItem corresponding the specified node
*
@@ -32,39 +34,52 @@
* @param node the node to which this object corresponds
* @throws RulesRepositoryException
*/
- public StateItem(RulesRepository rulesRepository, Node node) throws RulesRepositoryException {
- super(rulesRepository, node);
-
+ public StateItem(RulesRepository rulesRepository,
+ Node node) throws RulesRepositoryException {
+ super( rulesRepository,
+ node );
+
try {
//make sure this node is a state node
- if(!(this.node.getPrimaryNodeType().getName().equals(STATE_NODE_TYPE_NAME))) {
+ if ( !(this.node.getPrimaryNodeType().getName().equals( STATE_NODE_TYPE_NAME )) ) {
String message = this.node.getName() + " is not a node of type " + STATE_NODE_TYPE_NAME + ". It is a node of type: " + this.node.getPrimaryNodeType().getName();
- log.error(message);
- throw new RulesRepositoryException(message);
- }
+ log.error( message );
+ throw new RulesRepositoryException( message );
+ }
+ } catch ( Exception e ) {
+ log.error( "Caught exception: " + e );
+ throw new RulesRepositoryException( e );
}
- catch(Exception e) {
- log.error("Caught exception: " + e);
- throw new RulesRepositoryException(e);
- }
}
-
+
public boolean equals(Object in) {
- if (!(in instanceof StateItem)) {
+ if ( !(in instanceof StateItem) ) {
return false;
- } else if (in == this) {
+ } else if ( in == this ) {
return true;
} else {
StateItem other = (StateItem) in;
return this.getName().equals( other.getName() );
}
}
-
+
public String toString() {
return "Current status: [" + getName() + "] (" + super.toString() + ")";
}
-
+
public int hashCode() {
return getName().hashCode();
}
+
+ public void remove() {
+ try {
+ PropertyIterator pi = this.node.getReferences();
+ if ( pi.hasNext() ) {
+ throw new RulesRepositoryException( "The status still has some assets linked to it. You will need to remove the links so you can delete the status." );
+ }
+ this.node.remove();
+ } catch ( RepositoryException e ) {
+ log.error( e );
+ }
+ }
}
\ No newline at end of file
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 2008-11-05 03:30:46 UTC (rev 23706)
+++ labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RulesRepositoryTest.java 2008-11-05 08:26:50 UTC (rev 23707)
@@ -21,7 +21,6 @@
import org.drools.repository.RulesRepository.DateQuery;
import org.drools.repository.migration.MigrateDroolsPackage;
-
import junit.framework.TestCase;
public class RulesRepositoryTest extends TestCase {
@@ -31,549 +30,717 @@
Iterator it = repo.listPackages();
boolean foundDefault = false;
- while(it.hasNext()) {
+ while ( it.hasNext() ) {
PackageItem item = (PackageItem) it.next();
- if (item.getName().equals( RulesRepository.DEFAULT_PACKAGE )) {
+ if ( item.getName().equals( RulesRepository.DEFAULT_PACKAGE ) ) {
foundDefault = true;
}
}
- assertTrue(foundDefault);
+ assertTrue( foundDefault );
PackageItem def = repo.loadDefaultPackage();
- assertNotNull(def);
- assertEquals(RulesRepository.DEFAULT_PACKAGE, def.getName());
+ assertNotNull( def );
+ assertEquals( RulesRepository.DEFAULT_PACKAGE,
+ def.getName() );
String userId = repo.getSession().getUserID();
- assertNotNull(userId);
- assertFalse(userId.equals( "" ));
+ assertNotNull( userId );
+ assertFalse( userId.equals( "" ) );
MigrateDroolsPackage mig = new MigrateDroolsPackage();
- assertFalse(mig.needsMigration(repo));
- assertTrue(repo.initialized);
+ assertFalse( mig.needsMigration( repo ) );
+ assertTrue( repo.initialized );
}
public void testCategoryRename() throws Exception {
RulesRepository repo = RepositorySessionUtil.getRepository();
- CategoryItem root = repo.loadCategory("/");
- root.addCategory("testCatRename", "");
- repo.loadCategory("testCatRename").addCategory("testRename", "");
+ CategoryItem root = repo.loadCategory( "/" );
+ root.addCategory( "testCatRename",
+ "" );
+ repo.loadCategory( "testCatRename" ).addCategory( "testRename",
+ "" );
- repo.renameCategory("testCatRename/testRename", "testAnother");
+ repo.renameCategory( "testCatRename/testRename",
+ "testAnother" );
- CategoryItem cat = repo.loadCategory("testCatRename/testAnother");
- assertNotNull(cat);
+ CategoryItem cat = repo.loadCategory( "testCatRename/testAnother" );
+ assertNotNull( cat );
try {
- repo.loadCategory("testCatRename/testRename");
- fail("should not exist.");
- } catch (RulesRepositoryException e) {
- assertNotNull(e.getMessage());
+ repo.loadCategory( "testCatRename/testRename" );
+ fail( "should not exist." );
+ } catch ( RulesRepositoryException e ) {
+ assertNotNull( e.getMessage() );
}
- PackageItem pkg = repo.createPackage("testCategoryRename", "");
- AssetItem asset = pkg.addAsset("fooBar", "");
- asset.addCategory("testCatRename");
- asset.addCategory("testCatRename/testAnother");
- asset.checkin("");
+ PackageItem pkg = repo.createPackage( "testCategoryRename",
+ "" );
+ AssetItem asset = pkg.addAsset( "fooBar",
+ "" );
+ asset.addCategory( "testCatRename" );
+ asset.addCategory( "testCatRename/testAnother" );
+ asset.checkin( "" );
+ cat = repo.loadCategory( "testCatRename/testAnother" );
+ AssetPageList as = repo.findAssetsByCategory( "testCatRename/testAnother",
+ 0,
+ -1 );
+ assertEquals( "fooBar",
+ ((AssetItem) as.assets.get( 0 )).getName() );
+ repo.renameCategory( "testCatRename/testAnother",
+ "testYetAnother" );
+ as = repo.findAssetsByCategory( "testCatRename/testYetAnother",
+ 0,
+ -1 );
+ assertEquals( "fooBar",
+ ((AssetItem) as.assets.get( 0 )).getName() );
- cat = repo.loadCategory("testCatRename/testAnother");
- AssetPageList as = repo.findAssetsByCategory("testCatRename/testAnother", 0, -1);
- assertEquals("fooBar",((AssetItem) as.assets.get(0)).getName());
-
-
- repo.renameCategory("testCatRename/testAnother", "testYetAnother");
- as = repo.findAssetsByCategory("testCatRename/testYetAnother", 0, -1);
- assertEquals("fooBar",((AssetItem) as.assets.get(0)).getName());
-
-
}
public void testAddVersionARule() throws Exception {
RulesRepository repo = RepositorySessionUtil.getRepository();
- PackageItem pack = repo.createPackage( "testAddVersionARule", "description" );
+ PackageItem pack = repo.createPackage( "testAddVersionARule",
+ "description" );
repo.save();
- AssetItem rule = pack.addAsset( "my rule", "foobar" );
- assertEquals("my rule", rule.getName());
+ AssetItem rule = pack.addAsset( "my rule",
+ "foobar" );
+ assertEquals( "my rule",
+ rule.getName() );
rule.updateContent( "foo foo" );
rule.checkin( "version0" );
- pack.addAsset( "other rule", "description" );
+ pack.addAsset( "other rule",
+ "description" );
rule.updateContent( "foo bar" );
rule.checkin( "version1" );
- PackageItem pack2 = repo.loadPackage( "testAddVersionARule" );
+ PackageItem pack2 = repo.loadPackage( "testAddVersionARule" );
- Iterator it = pack2.getAssets();
+ Iterator it = pack2.getAssets();
it.next();
it.next();
- assertFalse(it.hasNext());
+ assertFalse( it.hasNext() );
AssetItem prev = (AssetItem) rule.getPrecedingVersion();
- assertEquals("foo bar", rule.getContent());
- assertEquals("foo foo", prev.getContent());
+ assertEquals( "foo bar",
+ rule.getContent() );
+ assertEquals( "foo foo",
+ prev.getContent() );
-
-
}
public void testFindByState() throws Exception {
RulesRepository repo = RepositorySessionUtil.getRepository();
- PackageItem pkg = repo.createPackage("testFindByStatePackage", "heheheh");
- AssetItem asset1 = pkg.addAsset("asset1", "");
- AssetItem asset2 = pkg.addAsset("asset2", "");
- repo.createState("testFindByState");
+ PackageItem pkg = repo.createPackage( "testFindByStatePackage",
+ "heheheh" );
+ AssetItem asset1 = pkg.addAsset( "asset1",
+ "" );
+ AssetItem asset2 = pkg.addAsset( "asset2",
+ "" );
+ repo.createState( "testFindByState" );
repo.save();
- asset1.updateState("testFindByState");
- asset2.updateState("testFindByState");
- asset1.checkin("");
- asset2.checkin("");
+ asset1.updateState( "testFindByState" );
+ asset2.updateState( "testFindByState" );
+ asset1.checkin( "" );
+ asset2.checkin( "" );
- AssetPageList list = repo.findAssetsByState("testFindByState", true, 0, -1);
- assertEquals(2, list.assets.size());
+ AssetPageList list = repo.findAssetsByState( "testFindByState",
+ true,
+ 0,
+ -1 );
+ assertEquals( 2,
+ list.assets.size() );
-
}
public void testFindRulesByName() throws Exception {
RulesRepository repo = RepositorySessionUtil.getRepository();
- repo.loadDefaultPackage().addAsset( "findRulesByNamex1", "X" );
- repo.loadDefaultPackage().addAsset( "findRulesByNamex2", "X" );
+ repo.loadDefaultPackage().addAsset( "findRulesByNamex1",
+ "X" );
+ repo.loadDefaultPackage().addAsset( "findRulesByNamex2",
+ "X" );
repo.save();
- List list = iteratorToList(repo.findAssetsByName( "findRulesByNamex1" ));
- assertEquals(1, list.size());
+ List list = iteratorToList( repo.findAssetsByName( "findRulesByNamex1" ) );
+ assertEquals( 1,
+ list.size() );
- list = iteratorToList(repo.findAssetsByName( "findRulesByNamex2" ));
- assertEquals(1, list.size());
+ list = iteratorToList( repo.findAssetsByName( "findRulesByNamex2" ) );
+ assertEquals( 1,
+ list.size() );
+ list = iteratorToList( repo.findAssetsByName( "findRulesByNamex%" ) );
+ assertEquals( 2,
+ list.size() );
- list = iteratorToList( repo.findAssetsByName( "findRulesByNamex%") );
- assertEquals(2, list.size());
-
- repo.createPackageSnapshot( RulesRepository.DEFAULT_PACKAGE, "testFindRulesByName" );
+ repo.createPackageSnapshot( RulesRepository.DEFAULT_PACKAGE,
+ "testFindRulesByName" );
repo.save();
- list = iteratorToList(repo.findAssetsByName( "findRulesByNamex2" ));
- AssetItem item = (AssetItem)list.get( 0 );
- assertEquals("findRulesByNamex2", item.getName());
- assertEquals("X", item.getDescription());
- assertEquals(1, list.size());
+ list = iteratorToList( repo.findAssetsByName( "findRulesByNamex2" ) );
+ AssetItem item = (AssetItem) list.get( 0 );
+ assertEquals( "findRulesByNamex2",
+ item.getName() );
+ assertEquals( "X",
+ item.getDescription() );
+ assertEquals( 1,
+ list.size() );
list = iteratorToList( repo.findAssetsByName( "findRulesByNamex%" ) );
- assertEquals(2, list.size());
+ assertEquals( 2,
+ list.size() );
-
}
public void testQueryText() throws Exception {
- RulesRepository repo = RepositorySessionUtil.getRepository();
- PackageItem pkg = repo.createPackage("testQueryTest", "");
- AssetItem asset = pkg.addAsset("asset1", "testQueryText1");
- asset.updateSubject("testQueryText42");
- asset.checkin("firstCheckintestQueryTest");
- asset.updateFormat("drl");
- asset.checkin("firstCheckintestQueryTest2");
- pkg.addAsset("asset2", "testQueryText2");
- repo.save();
+ RulesRepository repo = RepositorySessionUtil.getRepository();
+ PackageItem pkg = repo.createPackage( "testQueryTest",
+ "" );
+ AssetItem asset = pkg.addAsset( "asset1",
+ "testQueryText1" );
+ asset.updateSubject( "testQueryText42" );
+ asset.checkin( "firstCheckintestQueryTest" );
+ asset.updateFormat( "drl" );
+ asset.checkin( "firstCheckintestQueryTest2" );
+ pkg.addAsset( "asset2",
+ "testQueryText2" );
+ repo.save();
- List<AssetItem> ls = iteratorToList(repo.queryFullText("testQueryText*", false));
- assertEquals(2, ls.size());
+ List<AssetItem> ls = iteratorToList( repo.queryFullText( "testQueryText*",
+ false ) );
+ assertEquals( 2,
+ ls.size() );
- AssetItem as = ls.get(0);
- assertEquals("asset1", as.getName());
+ AssetItem as = ls.get( 0 );
+ assertEquals( "asset1",
+ as.getName() );
- as = ls.get(1);
- assertEquals("asset2", as.getName());
+ as = ls.get( 1 );
+ assertEquals( "asset2",
+ as.getName() );
+ ls = iteratorToList( repo.queryFullText( "firstCheckintestQueryTest2",
+ false ) );
+ assertEquals( 1,
+ ls.size() );
- ls = iteratorToList(repo.queryFullText("firstCheckintestQueryTest2", false));
- assertEquals(1, ls.size());
+ ls = iteratorToList( repo.queryFullText( "firstCheckintestQueryTest",
+ false ) );
+ assertEquals( 0,
+ ls.size() );
- ls = iteratorToList(repo.queryFullText("firstCheckintestQueryTest", false));
- assertEquals(0, ls.size());
+ ls = iteratorToList( repo.queryFullText( "testQueryText*",
+ false ) );
+ assertEquals( 2,
+ ls.size() );
- ls = iteratorToList(repo.queryFullText("testQueryText*", false));
- assertEquals(2, ls.size());
+ asset.archiveItem( true );
+ asset.checkin( "" );
- asset.archiveItem(true);
- asset.checkin("");
+ ls = iteratorToList( repo.queryFullText( "testQueryText*",
+ false ) );
+ assertEquals( 1,
+ ls.size() );
- ls = iteratorToList(repo.queryFullText("testQueryText*", false));
- assertEquals(1, ls.size());
+ ls = iteratorToList( repo.queryFullText( "testQueryText*",
+ true ) );
+ assertEquals( 2,
+ ls.size() );
- ls = iteratorToList(repo.queryFullText("testQueryText*", true));
- assertEquals(2, ls.size());
-
-
}
public void testQuery() throws Exception {
RulesRepository repo = RepositorySessionUtil.getRepository();
- AssetItem asset = repo.loadDefaultPackage().addAsset( "testQuery", "wanklerotaryengine1cc" );
+ AssetItem asset = repo.loadDefaultPackage().addAsset( "testQuery",
+ "wanklerotaryengine1cc" );
//asset.updateBinaryContentAttachment(new ByteArrayInputStream("testingSearchWankle".getBytes()));
- asset.updateContent("testingSearchWankle");
- asset.updateSubject("testQueryXXX42");
- asset.checkin("");
+ asset.updateContent( "testingSearchWankle" );
+ asset.updateSubject( "testQueryXXX42" );
+ asset.checkin( "" );
Map<String, String[]> q = new HashMap<String, String[]>();
- q.put("drools:subject", new String[] {"testQueryXXX42"});
+ q.put( "drools:subject",
+ new String[]{"testQueryXXX42"} );
- AssetItemIterator asit = repo.query(q, false, null);
- List<AssetItem> results = iteratorToList(asit);
- assertEquals(1, results.size());
- AssetItem as = results.get(0);
- assertEquals("testQuery", as.getName());
+ AssetItemIterator asit = repo.query( q,
+ false,
+ null );
+ List<AssetItem> results = iteratorToList( asit );
+ assertEquals( 1,
+ results.size() );
+ AssetItem as = results.get( 0 );
+ assertEquals( "testQuery",
+ as.getName() );
+ asset.updateExternalSource( "database" );
+ asset.checkin( "" );
- asset.updateExternalSource("database");
- asset.checkin("");
-
q = new HashMap<String, String[]>();
- q.put("drools:subject", new String[] {"testQueryXXX42"});
- q.put(AssetItem.SOURCE_PROPERTY_NAME, new String[] {"database"});
- results = iteratorToList(repo.query(q, true, null));
- assertEquals(1, results.size());
- as = results.get(0);
- assertEquals("testQuery", as.getName());
+ q.put( "drools:subject",
+ new String[]{"testQueryXXX42"} );
+ q.put( AssetItem.SOURCE_PROPERTY_NAME,
+ new String[]{"database"} );
+ results = iteratorToList( repo.query( q,
+ true,
+ null ) );
+ assertEquals( 1,
+ results.size() );
+ as = results.get( 0 );
+ assertEquals( "testQuery",
+ as.getName() );
-
q = new HashMap<String, String[]>();
- q.put("drools:subject", new String[] {"testQueryXXX42", "wankle"});
- q.put(AssetItem.SOURCE_PROPERTY_NAME, new String[] {"database", "wankle"});
- results = iteratorToList(repo.query(q, false, null));
- assertEquals(1, results.size());
- as = results.get(0);
- assertEquals("testQuery", as.getName());
+ q.put( "drools:subject",
+ new String[]{"testQueryXXX42", "wankle"} );
+ q.put( AssetItem.SOURCE_PROPERTY_NAME,
+ new String[]{"database", "wankle"} );
+ results = iteratorToList( repo.query( q,
+ false,
+ null ) );
+ assertEquals( 1,
+ results.size() );
+ as = results.get( 0 );
+ assertEquals( "testQuery",
+ as.getName() );
q = new HashMap<String, String[]>();
- q.put("drools:subject", null);
- q.put("cruddy", new String[0]);
- q.put(AssetItem.SOURCE_PROPERTY_NAME, new String[] {"database", "wankle"});
- results = iteratorToList(repo.query(q, false, null));
- assertEquals(1, results.size());
+ q.put( "drools:subject",
+ null );
+ q.put( "cruddy",
+ new String[0] );
+ q.put( AssetItem.SOURCE_PROPERTY_NAME,
+ new String[]{"database", "wankle"} );
+ results = iteratorToList( repo.query( q,
+ false,
+ null ) );
+ assertEquals( 1,
+ results.size() );
-
//now dates
q = new HashMap<String, String[]>();
- q.put("drools:subject", new String[] {"testQueryXXX42", "wankle"});
- q.put(AssetItem.SOURCE_PROPERTY_NAME, new String[] {"database", "wankle"});
- results = iteratorToList(repo.query(q, false, new DateQuery[] {new DateQuery("jcr:created", "1974-07-10T00:00:00.000-05:00", "3074-07-10T00:00:00.000-05:00")}));
- assertEquals(1, results.size());
- as = results.get(0);
- assertEquals("testQuery", as.getName());
+ q.put( "drools:subject",
+ new String[]{"testQueryXXX42", "wankle"} );
+ q.put( AssetItem.SOURCE_PROPERTY_NAME,
+ new String[]{"database", "wankle"} );
+ results = iteratorToList( repo.query( q,
+ false,
+ new DateQuery[]{new DateQuery( "jcr:created",
+ "1974-07-10T00:00:00.000-05:00",
+ "3074-07-10T00:00:00.000-05:00" )} ) );
+ assertEquals( 1,
+ results.size() );
+ as = results.get( 0 );
+ assertEquals( "testQuery",
+ as.getName() );
q = new HashMap<String, String[]>();
- q.put("drools:subject", new String[] {"testQueryXXX42", "wankle"});
- q.put(AssetItem.SOURCE_PROPERTY_NAME, new String[] {"database", "wankle"});
- results = iteratorToList(repo.query(q, false, new DateQuery[] {new DateQuery("jcr:created", "1974-07-10T00:00:00.000-05:00", null)}));
- assertEquals(1, results.size());
- as = results.get(0);
- assertEquals("testQuery", as.getName());
+ q.put( "drools:subject",
+ new String[]{"testQueryXXX42", "wankle"} );
+ q.put( AssetItem.SOURCE_PROPERTY_NAME,
+ new String[]{"database", "wankle"} );
+ results = iteratorToList( repo.query( q,
+ false,
+ new DateQuery[]{new DateQuery( "jcr:created",
+ "1974-07-10T00:00:00.000-05:00",
+ null )} ) );
+ assertEquals( 1,
+ results.size() );
+ as = results.get( 0 );
+ assertEquals( "testQuery",
+ as.getName() );
q = new HashMap<String, String[]>();
- q.put("drools:subject", new String[] {"testQueryXXX42", "wankle"});
- q.put(AssetItem.SOURCE_PROPERTY_NAME, new String[] {"database", "wankle"});
- results = iteratorToList(repo.query(q, false, new DateQuery[] {new DateQuery("jcr:created", null, "3074-07-10T00:00:00.000-05:00")}));
- assertEquals(1, results.size());
- as = results.get(0);
- assertEquals("testQuery", as.getName());
+ q.put( "drools:subject",
+ new String[]{"testQueryXXX42", "wankle"} );
+ q.put( AssetItem.SOURCE_PROPERTY_NAME,
+ new String[]{"database", "wankle"} );
+ results = iteratorToList( repo.query( q,
+ false,
+ new DateQuery[]{new DateQuery( "jcr:created",
+ null,
+ "3074-07-10T00:00:00.000-05:00" )} ) );
+ assertEquals( 1,
+ results.size() );
+ as = results.get( 0 );
+ assertEquals( "testQuery",
+ as.getName() );
-
//should return nothing:
q = new HashMap<String, String[]>();
- q.put("drools:subject", new String[] {"testQueryXXX42", "wankle"});
- q.put(AssetItem.SOURCE_PROPERTY_NAME, new String[] {"database", "wankle"});
- results = iteratorToList(repo.query(q, false, new DateQuery[] {new DateQuery("jcr:created", "3074-07-10T00:00:00.000-05:00", null)}));
- assertEquals(0, results.size());
+ q.put( "drools:subject",
+ new String[]{"testQueryXXX42", "wankle"} );
+ q.put( AssetItem.SOURCE_PROPERTY_NAME,
+ new String[]{"database", "wankle"} );
+ results = iteratorToList( repo.query( q,
+ false,
+ new DateQuery[]{new DateQuery( "jcr:created",
+ "3074-07-10T00:00:00.000-05:00",
+ null )} ) );
+ assertEquals( 0,
+ results.size() );
q = new HashMap<String, String[]>();
- q.put("drools:subject", new String[] {"testQueryXXX42", "wankle"});
- q.put(AssetItem.SOURCE_PROPERTY_NAME, new String[] {"database", "wankle"});
- results = iteratorToList(repo.query(q, false, new DateQuery[] {new DateQuery("jcr:created", null, "1974-07-10T00:00:00.000-05:00")}));
- assertEquals(0, results.size());
+ q.put( "drools:subject",
+ new String[]{"testQueryXXX42", "wankle"} );
+ q.put( AssetItem.SOURCE_PROPERTY_NAME,
+ new String[]{"database", "wankle"} );
+ results = iteratorToList( repo.query( q,
+ false,
+ new DateQuery[]{new DateQuery( "jcr:created",
+ null,
+ "1974-07-10T00:00:00.000-05:00" )} ) );
+ assertEquals( 0,
+ results.size() );
-
}
-
public void testLoadRuleByUUIDWithConcurrentSessions() throws Exception {
RulesRepository repo = RepositorySessionUtil.getRepository();
PackageItem rulePackageItem = repo.loadDefaultPackage();
- AssetItem rule = rulePackageItem.addAsset( "testLoadRuleByUUID", "this is a description");
+ AssetItem rule = rulePackageItem.addAsset( "testLoadRuleByUUID",
+ "this is a description" );
repo.save();
String uuid = rule.getNode().getUUID();
- AssetItem loaded = repo.loadAssetByUUID(uuid);
- assertNotNull(loaded);
- assertEquals("testLoadRuleByUUID", loaded.getName());
- assertEquals( "this is a description", loaded.getDescription());
+ AssetItem loaded = repo.loadAssetByUUID( uuid );
+ assertNotNull( loaded );
+ assertEquals( "testLoadRuleByUUID",
+ loaded.getName() );
+ assertEquals( "this is a description",
+ loaded.getDescription() );
long oldVersionNumber = loaded.getVersionNumber();
loaded.updateContent( "xxx" );
loaded.checkin( "woo" );
-
-
-
AssetItem reload = repo.loadAssetByUUID( uuid );
- assertEquals("testLoadRuleByUUID", reload.getName());
- assertEquals("xxx", reload.getContent());
- System.out.println(reload.getVersionNumber());
- System.out.println(loaded.getVersionNumber());
- assertFalse(reload.getVersionNumber() == oldVersionNumber );
+ assertEquals( "testLoadRuleByUUID",
+ reload.getName() );
+ assertEquals( "xxx",
+ reload.getContent() );
+ System.out.println( reload.getVersionNumber() );
+ System.out.println( loaded.getVersionNumber() );
+ assertFalse( reload.getVersionNumber() == oldVersionNumber );
-
// try loading rule package that was not created
try {
- repo.loadAssetByUUID("01010101-0101-0101-0101-010101010101");
- fail("Exception not thrown loading rule package that was not created.");
- } catch (RulesRepositoryException e) {
+ repo.loadAssetByUUID( "01010101-0101-0101-0101-010101010101" );
+ fail( "Exception not thrown loading rule package that was not created." );
+ } catch ( RulesRepositoryException e ) {
// that is OK!
- assertNotNull(e.getMessage());
+ assertNotNull( e.getMessage() );
}
//now test concurrent session access...
- AssetItem asset1 = repo.loadDefaultPackage().addAsset( "testMultiSession", "description" );
+ AssetItem asset1 = repo.loadDefaultPackage().addAsset( "testMultiSession",
+ "description" );
asset1.updateContent( "yeah" );
asset1.checkin( "boo" );
uuid = asset1.getUUID();
asset1.updateState( "Draft" );
repo.save();
- Session s2 = repo.getSession().getRepository().login(new SimpleCredentials("fdd", "password".toCharArray()));
+ Session s2 = repo.getSession().getRepository().login( new SimpleCredentials( "fdd",
+ "password".toCharArray() ) );
- RulesRepository repo2 = new RulesRepository(s2);
+ RulesRepository repo2 = new RulesRepository( s2 );
AssetItem asset2 = repo2.loadAssetByUUID( uuid );
asset2.updateContent( "yeah 42" );
asset2.checkin( "yeah" );
asset1 = repo.loadAssetByUUID( uuid );
- assertEquals("yeah 42", asset1.getContent());
+ assertEquals( "yeah 42",
+ asset1.getContent() );
asset1.updateContent( "yeah 43" );
asset1.checkin( "la" );
asset2 = repo2.loadAssetByUUID( uuid );
- assertEquals( "yeah 43", asset2.getContent() );
+ assertEquals( "yeah 43",
+ asset2.getContent() );
}
public void testAddRuleCalendarWithDates() {
RulesRepository rulesRepository = RepositorySessionUtil.getRepository();
+ Calendar effectiveDate = Calendar.getInstance();
+ Calendar expiredDate = Calendar.getInstance();
+ expiredDate.setTimeInMillis( effectiveDate.getTimeInMillis() + (1000 * 60 * 60 * 24) );
+ AssetItem ruleItem1 = rulesRepository.loadDefaultPackage().addAsset( "testAddRuleCalendarCalendar",
+ "desc" );
+ ruleItem1.updateDateEffective( effectiveDate );
+ ruleItem1.updateDateExpired( expiredDate );
- Calendar effectiveDate = Calendar.getInstance();
- Calendar expiredDate = Calendar.getInstance();
- expiredDate.setTimeInMillis(effectiveDate.getTimeInMillis() + (1000 * 60 * 60 * 24));
- AssetItem ruleItem1 = rulesRepository.loadDefaultPackage().addAsset("testAddRuleCalendarCalendar", "desc");
- ruleItem1.updateDateEffective( effectiveDate );
- ruleItem1.updateDateExpired( expiredDate );
+ assertNotNull( ruleItem1 );
+ assertNotNull( ruleItem1.getNode() );
+ assertEquals( effectiveDate,
+ ruleItem1.getDateEffective() );
+ assertEquals( expiredDate,
+ ruleItem1.getDateExpired() );
- assertNotNull(ruleItem1);
- assertNotNull(ruleItem1.getNode());
- assertEquals(effectiveDate, ruleItem1.getDateEffective());
- assertEquals(expiredDate, ruleItem1.getDateExpired());
-
- ruleItem1.checkin( "ho " );
+ ruleItem1.checkin( "ho " );
}
public void testGetState() {
RulesRepository rulesRepository = RepositorySessionUtil.getRepository();
- StateItem state0 = rulesRepository.createState( "testGetState" );
- assertNotNull(state0);
- assertEquals("testGetState", state0.getName());
- StateItem stateItem1 = rulesRepository.getState("testGetState");
- assertNotNull(stateItem1);
- assertEquals("testGetState", stateItem1.getName());
+ StateItem state0 = rulesRepository.createState( "testGetState" );
+ assertNotNull( state0 );
+ assertEquals( "testGetState",
+ state0.getName() );
+ StateItem stateItem1 = rulesRepository.getState( "testGetState" );
+ assertNotNull( stateItem1 );
+ assertEquals( "testGetState",
+ stateItem1.getName() );
- StateItem stateItem2 = rulesRepository.getState("testGetState");
- assertNotNull(stateItem2);
- assertEquals("testGetState", stateItem2.getName());
- assertEquals(stateItem1, stateItem2);
+ StateItem stateItem2 = rulesRepository.getState( "testGetState" );
+ assertNotNull( stateItem2 );
+ assertEquals( "testGetState",
+ stateItem2.getName() );
+ assertEquals( stateItem1,
+ stateItem2 );
}
public void testGetTag() {
- RulesRepository rulesRepository = RepositorySessionUtil.getRepository();
+ RulesRepository rulesRepository = RepositorySessionUtil.getRepository();
- CategoryItem root = rulesRepository.loadCategory( "/" );
- CategoryItem tagItem1 = root.addCategory( "testGetTag", "ho");
- assertNotNull(tagItem1);
- assertEquals("testGetTag", tagItem1.getName());
- assertEquals("testGetTag", tagItem1.getFullPath());
+ CategoryItem root = rulesRepository.loadCategory( "/" );
+ CategoryItem tagItem1 = root.addCategory( "testGetTag",
+ "ho" );
+ assertNotNull( tagItem1 );
+ assertEquals( "testGetTag",
+ tagItem1.getName() );
+ assertEquals( "testGetTag",
+ tagItem1.getFullPath() );
- CategoryItem tagItem2 = rulesRepository.loadCategory("testGetTag");
- assertNotNull(tagItem2);
- assertEquals("testGetTag", tagItem2.getName());
- assertEquals(tagItem1, tagItem2);
+ CategoryItem tagItem2 = rulesRepository.loadCategory( "testGetTag" );
+ assertNotNull( tagItem2 );
+ assertEquals( "testGetTag",
+ tagItem2.getName() );
+ assertEquals( tagItem1,
+ tagItem2 );
- //now test getting a tag down in the tag hierarchy
- CategoryItem tagItem3 = tagItem2.addCategory( "TestChildTag1", "ka");
- assertNotNull(tagItem3);
- assertEquals("TestChildTag1", tagItem3.getName());
- assertEquals("testGetTag/TestChildTag1", tagItem3.getFullPath());
+ //now test getting a tag down in the tag hierarchy
+ CategoryItem tagItem3 = tagItem2.addCategory( "TestChildTag1",
+ "ka" );
+ assertNotNull( tagItem3 );
+ assertEquals( "TestChildTag1",
+ tagItem3.getName() );
+ assertEquals( "testGetTag/TestChildTag1",
+ tagItem3.getFullPath() );
}
-
-
public void testListPackages() {
RulesRepository rulesRepository = RepositorySessionUtil.getRepository();
- rulesRepository.createPackage("testListPackages", "desc");
+ rulesRepository.createPackage( "testListPackages",
+ "desc" );
- assertTrue(rulesRepository.containsPackage( "testListPackages" ));
- assertFalse(rulesRepository.containsPackage( "XXXXXXX" ));
+ assertTrue( rulesRepository.containsPackage( "testListPackages" ) );
+ assertFalse( rulesRepository.containsPackage( "XXXXXXX" ) );
- Iterator it = rulesRepository.listPackages();
- assertTrue(it.hasNext());
+ Iterator it = rulesRepository.listPackages();
+ assertTrue( it.hasNext() );
- boolean found = false;
- while ( it.hasNext() ) {
- PackageItem element = (PackageItem) it.next();
- if (element.getName().equals( "testListPackages" ))
- {
- found = true;
- break;
- }
- System.out.println(element.getName());
+ boolean found = false;
+ while ( it.hasNext() ) {
+ PackageItem element = (PackageItem) it.next();
+ if ( element.getName().equals( "testListPackages" ) ) {
+ found = true;
+ break;
}
- assertTrue(found);
+ System.out.println( element.getName() );
+ }
+ assertTrue( found );
}
public void testFindAssetsByState() throws Exception {
RulesRepository repo = RepositorySessionUtil.getRepository();
- repo.loadCategory( "/" ).addCategory( "testFindAssetsByStateCat", "X" );
+ repo.loadCategory( "/" ).addCategory( "testFindAssetsByStateCat",
+ "X" );
- PackageItem pkg = repo.createPackage( "testFindAssetsByStatePac", "");
- pkg.addAsset( "testCat1", "x", "/testFindAssetsByStateCat", "drl");
- pkg.addAsset( "testCat2", "x", "/testFindAssetsByStateCat", "drl");
+ PackageItem pkg = repo.createPackage( "testFindAssetsByStatePac",
+ "" );
+ pkg.addAsset( "testCat1",
+ "x",
+ "/testFindAssetsByStateCat",
+ "drl" );
+ pkg.addAsset( "testCat2",
+ "x",
+ "/testFindAssetsByStateCat",
+ "drl" );
repo.save();
- AssetPageList apl = repo.findAssetsByState( "Draft", false, 0, -1, new RepositoryFilter() {
- public boolean accept(Object artifact, String action) {
- if (!(artifact instanceof AssetItem))
- return false;
+ AssetPageList apl = repo.findAssetsByState( "Draft",
+ false,
+ 0,
+ -1,
+ new RepositoryFilter() {
+ public boolean accept(Object artifact,
+ String action) {
+ if ( !(artifact instanceof AssetItem) ) return false;
+ if ( ((AssetItem) artifact).getName().equalsIgnoreCase( "testCat1" ) ) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+ } );
- if (((AssetItem)artifact).getName().equalsIgnoreCase("testCat1")) {
- return true;
- } else {
- return false;
- }
- }
- });
-
- assertEquals(1, apl.assets.size());
- assertEquals("testCat1", ((AssetItem)apl.assets.get(0)).getName());
+ assertEquals( 1,
+ apl.assets.size() );
+ assertEquals( "testCat1",
+ ((AssetItem) apl.assets.get( 0 )).getName() );
}
-
public void testFindAssetsByCategory() throws Exception {
RulesRepository repo = RepositorySessionUtil.getRepository();
- repo.loadCategory( "/" ).addCategory( "testFindAssetsByCategoryUsingFilterCat", "X" );
+ repo.loadCategory( "/" ).addCategory( "testFindAssetsByCategoryUsingFilterCat",
+ "X" );
- PackageItem pkg = repo.createPackage( "testFindAssetsByCategoryUsingFilterPack", "");
- pkg.addAsset( "testCat1", "x", "/testFindAssetsByCategoryUsingFilterCat", "drl");
- pkg.addAsset( "testCat2", "x", "/testFindAssetsByCategoryUsingFilterCat", "drl");
+ PackageItem pkg = repo.createPackage( "testFindAssetsByCategoryUsingFilterPack",
+ "" );
+ pkg.addAsset( "testCat1",
+ "x",
+ "/testFindAssetsByCategoryUsingFilterCat",
+ "drl" );
+ pkg.addAsset( "testCat2",
+ "x",
+ "/testFindAssetsByCategoryUsingFilterCat",
+ "drl" );
repo.save();
- List items = repo.findAssetsByCategory( "/testFindAssetsByCategoryUsingFilterCat", 0, -1 ).assets;
- assertEquals(2, items.size());
+ List items = repo.findAssetsByCategory( "/testFindAssetsByCategoryUsingFilterCat",
+ 0,
+ -1 ).assets;
+ assertEquals( 2,
+ items.size() );
- AssetPageList apl = repo.findAssetsByCategory( "/testFindAssetsByCategoryUsingFilterCat", false, 0, -1, new RepositoryFilter() {
- public boolean accept(Object artifact, String action) {
- if (!(artifact instanceof AssetItem))
- return false;
+ AssetPageList apl = repo.findAssetsByCategory( "/testFindAssetsByCategoryUsingFilterCat",
+ false,
+ 0,
+ -1,
+ new RepositoryFilter() {
+ public boolean accept(Object artifact,
+ String action) {
+ if ( !(artifact instanceof AssetItem) ) return false;
+ if ( ((AssetItem) artifact).getName().equalsIgnoreCase( "testCat1" ) ) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+ } );
- if (((AssetItem)artifact).getName().equalsIgnoreCase("testCat1")) {
- return true;
- } else {
- return false;
- }
- }
- });
+ assertEquals( 1,
+ apl.assets.size() );
+ assertEquals( "testCat1",
+ ((AssetItem) apl.assets.get( 0 )).getName() );
+ pkg.addAsset( "testCat3",
+ "x",
+ "/testFindAssetsByCategoryUsingFilterCat",
+ "drl" );
+ pkg.addAsset( "testCat4",
+ "x",
+ "/testFindAssetsByCategoryUsingFilterCat",
+ "drl" );
+ pkg.addAsset( "testCat5",
+ "x",
+ "/testFindAssetsByCategoryUsingFilterCat",
+ "drl" );
+ pkg.addAsset( "testCat6",
+ "x",
+ "/testFindAssetsByCategoryUsingFilterCat",
+ "drl" );
+ pkg.addAsset( "testCat7",
+ "x",
+ "/testFindAssetsByCategoryUsingFilterCat",
+ "drl" );
+ pkg.addAsset( "testCat8",
+ "x",
+ "/testFindAssetsByCategoryUsingFilterCat",
+ "drl" );
- assertEquals(1, apl.assets.size());
- assertEquals("testCat1", ((AssetItem)apl.assets.get(0)).getName());
+ pkg.loadAsset( "testCat1" ).archiveItem( true ).checkin( "" );
+ pkg.loadAsset( "testCat2" ).archiveItem( true ).checkin( "" );
+ pkg.loadAsset( "testCat3" ).archiveItem( true ).checkin( "" );
+ pkg.loadAsset( "testCat4" ).archiveItem( true ).checkin( "" );
- pkg.addAsset( "testCat3", "x", "/testFindAssetsByCategoryUsingFilterCat", "drl");
- pkg.addAsset( "testCat4", "x", "/testFindAssetsByCategoryUsingFilterCat", "drl");
- pkg.addAsset( "testCat5", "x", "/testFindAssetsByCategoryUsingFilterCat", "drl");
- pkg.addAsset( "testCat6", "x", "/testFindAssetsByCategoryUsingFilterCat", "drl");
- pkg.addAsset( "testCat7", "x", "/testFindAssetsByCategoryUsingFilterCat", "drl");
- pkg.addAsset( "testCat8", "x", "/testFindAssetsByCategoryUsingFilterCat", "drl");
+ // apl = repo.findAssetsByCategory( "/testFindAssetsByCategoryUsingFilterCat", 0, 2 );
+ // assertEquals(2, apl.assets.size());
+ // assertTrue(apl.hasNext);
+ //
+ // assertEquals(5, apl.currentPosition);
+ // //assertEquals("testCat5", apl.assets.get(0).getName());
+ //
+ // apl = repo.findAssetsByCategory( "/testFindAssetsByCategoryUsingFilterCat", 7, 2 );
+ // assertEquals(2, apl.assets.size());
+ // assertFalse(apl.hasNext);
+ // //assertEquals("testCat7", apl.assets.get(0).getName());
- pkg.loadAsset("testCat1").archiveItem(true).checkin("");
- pkg.loadAsset("testCat2").archiveItem(true).checkin("");
- pkg.loadAsset("testCat3").archiveItem(true).checkin("");
- pkg.loadAsset("testCat4").archiveItem(true).checkin("");
-
-// apl = repo.findAssetsByCategory( "/testFindAssetsByCategoryUsingFilterCat", 0, 2 );
-// assertEquals(2, apl.assets.size());
-// assertTrue(apl.hasNext);
-//
-// assertEquals(5, apl.currentPosition);
-// //assertEquals("testCat5", apl.assets.get(0).getName());
-//
-// apl = repo.findAssetsByCategory( "/testFindAssetsByCategoryUsingFilterCat", 7, 2 );
-// assertEquals(2, apl.assets.size());
-// assertFalse(apl.hasNext);
-// //assertEquals("testCat7", apl.assets.get(0).getName());
-
repo.save();
- apl = repo.findAssetsByCategory( "/testFindAssetsByCategoryUsingFilterCat", 0, -1 );
+ apl = repo.findAssetsByCategory( "/testFindAssetsByCategoryUsingFilterCat",
+ 0,
+ -1 );
- assertEquals(4, apl.assets.size());
+ assertEquals( 4,
+ apl.assets.size() );
List<String> names = new ArrayList<String>();
- for (AssetItem as : apl.assets) {
- if (names.contains(as.getName())) { fail("dupe returned."); }
- names.add(as.getName());
- }
+ for ( AssetItem as : apl.assets ) {
+ if ( names.contains( as.getName() ) ) {
+ fail( "dupe returned." );
+ }
+ names.add( as.getName() );
+ }
names = new ArrayList<String>();
-
boolean hasNext = true;
int skip = 0;
- while (hasNext) {
- apl = repo.findAssetsByCategory( "/testFindAssetsByCategoryUsingFilterCat", skip, 2 );
- for (AssetItem as : apl.assets) {
- if (names.contains(as.getName())) { fail("dupe returned"); }
- names.add(as.getName());
- }
+ while ( hasNext ) {
+ apl = repo.findAssetsByCategory( "/testFindAssetsByCategoryUsingFilterCat",
+ skip,
+ 2 );
+ for ( AssetItem as : apl.assets ) {
+ if ( names.contains( as.getName() ) ) {
+ fail( "dupe returned" );
+ }
+ names.add( as.getName() );
+ }
//we add the num of results returned, and sub 2 to work out where to start next
skip = (int) (apl.currentPosition + apl.assets.size() - 2);
- hasNext = apl.hasNext;
+ hasNext = apl.hasNext;
}
- assertEquals(4, names.size());
- assertTrue(names.contains("testCat5"));
- assertTrue(names.contains("testCat6"));
- assertTrue(names.contains("testCat7"));
- assertTrue(names.contains("testCat8"));
+ assertEquals( 4,
+ names.size() );
+ assertTrue( names.contains( "testCat5" ) );
+ assertTrue( names.contains( "testCat6" ) );
+ assertTrue( names.contains( "testCat7" ) );
+ assertTrue( names.contains( "testCat8" ) );
-
}
public void testFunnyOrdering() throws Exception {
@@ -585,216 +752,336 @@
*/
public void testCategoriesAndSnapshots() throws Exception {
RulesRepository repo = RepositorySessionUtil.getRepository();
- repo.loadCategory( "/" ).addCategory( "testCategoriesAndSnapshots", "X" );
+ repo.loadCategory( "/" ).addCategory( "testCategoriesAndSnapshots",
+ "X" );
- PackageItem pkg = repo.createPackage( "testCategoriesAndSnapshots", "");
- pkg.addAsset( "testCat1", "x", "/testCategoriesAndSnapshots", "drl");
- pkg.addAsset( "testCat2", "x", "/testCategoriesAndSnapshots", "drl");
+ PackageItem pkg = repo.createPackage( "testCategoriesAndSnapshots",
+ "" );
+ pkg.addAsset( "testCat1",
+ "x",
+ "/testCategoriesAndSnapshots",
+ "drl" );
+ pkg.addAsset( "testCat2",
+ "x",
+ "/testCategoriesAndSnapshots",
+ "drl" );
repo.save();
- List items = repo.findAssetsByCategory( "/testCategoriesAndSnapshots", 0, -1 ).assets;
- assertEquals(2, items.size());
+ List items = repo.findAssetsByCategory( "/testCategoriesAndSnapshots",
+ 0,
+ -1 ).assets;
+ assertEquals( 2,
+ items.size() );
- repo.createPackageSnapshot( "testCategoriesAndSnapshots", "SNAP 1" );
- items = repo.findAssetsByCategory( "testCategoriesAndSnapshots", 0, -1 ).assets;
- assertEquals(2, items.size());
+ repo.createPackageSnapshot( "testCategoriesAndSnapshots",
+ "SNAP 1" );
+ items = repo.findAssetsByCategory( "testCategoriesAndSnapshots",
+ 0,
+ -1 ).assets;
+ assertEquals( 2,
+ items.size() );
- assertTrue(repo.containsSnapshot("testCategoriesAndSnapshots", "SNAP 1"));
- assertFalse(repo.containsSnapshot("testCategoriesAndSnapshots", "SNAP XXXX"));
+ assertTrue( repo.containsSnapshot( "testCategoriesAndSnapshots",
+ "SNAP 1" ) );
+ assertFalse( repo.containsSnapshot( "testCategoriesAndSnapshots",
+ "SNAP XXXX" ) );
+ assertFalse( repo.containsSnapshot( "gooberWhhewasssllllelelelelele",
+ "SNAP" ) );
- assertFalse(repo.containsSnapshot("gooberWhhewasssllllelelelelele", "SNAP"));
-
}
public void testMoveRulePackage() throws Exception {
RulesRepository repo = RepositorySessionUtil.getRepository();
- PackageItem pkg = repo.createPackage( "testMove", "description" );
- AssetItem r = pkg.addAsset( "testMove", "description" );
+ PackageItem pkg = repo.createPackage( "testMove",
+ "description" );
+ AssetItem r = pkg.addAsset( "testMove",
+ "description" );
r.checkin( "version0" );
String uuid = r.getUUID();
- assertEquals("testMove", r.getPackageName());
+ assertEquals( "testMove",
+ r.getPackageName() );
repo.save();
- assertEquals(1, iteratorToList( pkg.getAssets()).size());
+ assertEquals( 1,
+ iteratorToList( pkg.getAssets() ).size() );
- repo.createPackage( "testMove2", "description" );
- repo.moveRuleItemPackage( "testMove2", r.node.getUUID(), "explanation" );
+ repo.createPackage( "testMove2",
+ "description" );
+ repo.moveRuleItemPackage( "testMove2",
+ r.node.getUUID(),
+ "explanation" );
pkg = repo.loadPackage( "testMove" );
- assertEquals(0, iteratorToList( pkg.getAssets() ).size());
+ assertEquals( 0,
+ iteratorToList( pkg.getAssets() ).size() );
pkg = repo.loadPackage( "testMove2" );
- assertEquals(1, iteratorToList( pkg.getAssets() ).size());
+ assertEquals( 1,
+ iteratorToList( pkg.getAssets() ).size() );
r = (AssetItem) pkg.getAssets().next();
- assertEquals("testMove", r.getName());
- assertEquals("testMove2", r.getPackageName());
- assertEquals("explanation", r.getCheckinComment());
+ assertEquals( "testMove",
+ r.getName() );
+ assertEquals( "testMove2",
+ r.getPackageName() );
+ assertEquals( "explanation",
+ r.getCheckinComment() );
AssetItem p = (AssetItem) r.getPrecedingVersion();
- assertEquals("testMove", p.getPackageName());
- assertEquals("version0", p.getCheckinComment());
- assertEquals(uuid, r.getUUID());
+ assertEquals( "testMove",
+ p.getPackageName() );
+ assertEquals( "version0",
+ p.getCheckinComment() );
+ assertEquals( uuid,
+ r.getUUID() );
}
public void testCopyAsset() throws Exception {
RulesRepository repo = RepositorySessionUtil.getRepository();
- repo.createPackage( "testCopyAsset", "asset" );
- AssetItem item = repo.loadDefaultPackage().addAsset( "testCopyAssetSource", "desc" );
+ repo.createPackage( "testCopyAsset",
+ "asset" );
+ AssetItem item = repo.loadDefaultPackage().addAsset( "testCopyAssetSource",
+ "desc" );
item.updateContent( "la" );
item.checkin( "" );
item.updateDescription( "mmm" );
item.checkin( "again" );
- assertEquals(2, item.getVersionNumber());
+ assertEquals( 2,
+ item.getVersionNumber() );
- String uuid = repo.copyAsset( item.getUUID(), "testCopyAsset", "testCopyAssetDestination" );
+ String uuid = repo.copyAsset( item.getUUID(),
+ "testCopyAsset",
+ "testCopyAssetDestination" );
AssetItem dest = repo.loadAssetByUUID( uuid );
- assertEquals(dest.getName(), dest.getTitle());
- assertEquals("la", dest.getContent());
- assertEquals("testCopyAsset", dest.getPackageName());
- assertFalse(uuid.equals( item.getUUID() ));
- assertEquals(1, dest.getVersionNumber());
+ assertEquals( dest.getName(),
+ dest.getTitle() );
+ assertEquals( "la",
+ dest.getContent() );
+ assertEquals( "testCopyAsset",
+ dest.getPackageName() );
+ assertFalse( uuid.equals( item.getUUID() ) );
+ assertEquals( 1,
+ dest.getVersionNumber() );
}
public void testRenameAsset() throws Exception {
RulesRepository repo = RepositorySessionUtil.getRepository();
- repo.createPackage( "testRenameAsset", "asset" );
- AssetItem item = repo.loadPackage("testRenameAsset").addAsset( "testRenameAssetSource", "desc" );
+ repo.createPackage( "testRenameAsset",
+ "asset" );
+ AssetItem item = repo.loadPackage( "testRenameAsset" ).addAsset( "testRenameAssetSource",
+ "desc" );
item.updateContent( "la" );
item.checkin( "" );
- String uuid = repo.renameAsset( item.getUUID(), "testRename2");
+ String uuid = repo.renameAsset( item.getUUID(),
+ "testRename2" );
item = repo.loadAssetByUUID( uuid );
- assertEquals("testRename2", item.getName());
- assertEquals("testRename2", item.getTitle());
+ assertEquals( "testRename2",
+ item.getName() );
+ assertEquals( "testRename2",
+ item.getTitle() );
List assets = iteratorToList( repo.loadPackage( "testRenameAsset" ).getAssets() );
- assertEquals(1, assets.size());
+ assertEquals( 1,
+ assets.size() );
item = (AssetItem) assets.get( 0 );
- assertEquals("testRename2", item.getName());
- assertEquals("la", item.getContent());
+ assertEquals( "testRename2",
+ item.getName() );
+ assertEquals( "la",
+ item.getContent() );
}
public void testRenamePackage() throws Exception {
RulesRepository repo = RepositorySessionUtil.getRepository();
- PackageItem original = repo.createPackage( "testRenamePackage", "asset" );
+ PackageItem original = repo.createPackage( "testRenamePackage",
+ "asset" );
List packagesOriginal = iteratorToList( repo.listPackages() );
- AssetItem item = repo.loadPackage("testRenamePackage").addAsset( "testRenameAssetSource", "desc" );
+ AssetItem item = repo.loadPackage( "testRenamePackage" ).addAsset( "testRenameAssetSource",
+ "desc" );
item.updateContent( "la" );
item.checkin( "" );
- String uuid = repo.renamePackage( original.getUUID(), "testRenamePackage2");
+ String uuid = repo.renamePackage( original.getUUID(),
+ "testRenamePackage2" );
PackageItem pkg = repo.loadPackageByUUID( uuid );
- assertEquals("testRenamePackage2", pkg.getName());
+ assertEquals( "testRenamePackage2",
+ pkg.getName() );
List assets = iteratorToList( repo.loadPackage( "testRenamePackage2" ).getAssets() );
- assertEquals(1, assets.size());
+ assertEquals( 1,
+ assets.size() );
item = (AssetItem) assets.get( 0 );
- assertEquals("testRenameAssetSource", item.getName());
- assertEquals("la", item.getContent());
- assertEquals("testRenamePackage2", item.getPackageName());
+ assertEquals( "testRenameAssetSource",
+ item.getName() );
+ assertEquals( "la",
+ item.getContent() );
+ assertEquals( "testRenamePackage2",
+ item.getPackageName() );
List packageFinal = iteratorToList( repo.listPackages() );
- assertEquals(packagesOriginal.size(), packageFinal.size());
+ assertEquals( packagesOriginal.size(),
+ packageFinal.size() );
}
-
-
public void testCopyPackage() throws Exception {
RulesRepository repo = RepositorySessionUtil.getRepository();
- PackageItem source = repo.createPackage( "testCopyPackage", "asset" );
- AssetItem item = source.addAsset( "testCopyPackage", "desc" );
+ PackageItem source = repo.createPackage( "testCopyPackage",
+ "asset" );
+ AssetItem item = source.addAsset( "testCopyPackage",
+ "desc" );
item.updateContent( "la" );
item.checkin( "" );
repo.save();
- repo.copyPackage( "testCopyPackage", "testCopyPackage2" );
+ repo.copyPackage( "testCopyPackage",
+ "testCopyPackage2" );
PackageItem dest = repo.loadPackage( "testCopyPackage2" );
- assertNotNull(dest);
- assertFalse( source.getUUID().equals( dest.getUUID() ));
+ assertNotNull( dest );
+ assertFalse( source.getUUID().equals( dest.getUUID() ) );
- assertEquals(1, iteratorToList( dest.getAssets()).size());
+ assertEquals( 1,
+ iteratorToList( dest.getAssets() ).size() );
AssetItem item2 = (AssetItem) dest.getAssets().next();
- assertEquals("testCopyPackage", item.getPackageName());
- assertEquals("testCopyPackage2", item2.getPackageName());
+ assertEquals( "testCopyPackage",
+ item.getPackageName() );
+ assertEquals( "testCopyPackage2",
+ item2.getPackageName() );
-
item2.updateContent( "goober choo" );
item2.checkin( "yeah" );
- assertEquals("la", item.getContent());
+ assertEquals( "la",
+ item.getContent() );
-
try {
- repo.copyPackage( "testCopyPackage", "testCopyPackage2" );
- fail("should not be able to copy when existing.");
+ repo.copyPackage( "testCopyPackage",
+ "testCopyPackage2" );
+ fail( "should not be able to copy when existing." );
- } catch (RulesRepositoryException e) {
- assertNotNull(e.getMessage());
+ } catch ( RulesRepositoryException e ) {
+ assertNotNull( e.getMessage() );
}
-
}
-
- public void testListStates() {
+ public void testListStates() {
RulesRepository repo = RepositorySessionUtil.getRepository();
StateItem[] items = repo.listStates();
- assertTrue(items.length > 0);
+ assertTrue( items.length > 0 );
repo.createState( "testListStates" );
StateItem[] items2 = repo.listStates();
- assertEquals(items.length + 1, items2.length);
+ assertEquals( items.length + 1,
+ items2.length );
}
+ public void testRenameState() {
+ RulesRepository repo = RepositorySessionUtil.getRepository();
+ StateItem[] items = repo.listStates();
+ assertTrue( items.length > 0 );
+
+ final String oldName = "stateThatHasALongNameAndWillBeRenamed";
+ repo.createState( oldName );
+
+ StateItem[] items2 = repo.listStates();
+ assertEquals( items.length + 1,
+ items2.length );
+
+ final String newName = "stateThatHasALongNameAndWillBeRenamedNameAfterTheRenaming";
+ repo.renameState( oldName,
+ newName );
+
+ StateItem[] items3 = repo.listStates();
+ assertEquals( items2.length,
+ items3.length );
+ try {
+ repo.loadState( oldName );
+ fail( "Should never be here. Old name is still used." );
+ } catch ( RulesRepositoryException e ) {
+ // Works
+ }
+
+ assertNotNull( repo.loadState( newName ) );
+ }
+
+ public void testRemoveState() {
+ RulesRepository repo = RepositorySessionUtil.getRepository();
+ StateItem[] items = repo.listStates();
+ assertTrue( items.length > 0 );
+
+ final String name = "stateThatHasALongNameAndWillBeRenamed";
+ repo.createState( name );
+
+ StateItem[] items2 = repo.listStates();
+ assertEquals( items.length + 1,
+ items2.length );
+
+ repo.loadState( name ).remove();
+ repo.save();
+
+ StateItem[] items3 = repo.listStates();
+ assertEquals( items2.length -1,
+ items3.length );
+ try {
+ repo.loadState( name );
+ fail( "Should never be here. Removed state still exists." );
+ } catch ( RulesRepositoryException e ) {
+ // Works
+ }
+
+ }
+
public void testImportExport() {
RulesRepository repo = RepositorySessionUtil.getRepository();
- byte []repository_unitest;
- byte []repository_backup;
+ byte[] repository_unitest;
+ byte[] repository_backup;
try {
repository_backup = repo.dumpRepositoryXml();
assertNotNull( repository_backup );
- repo.createPackage( "testImportExport", "nodescription" );
+ repo.createPackage( "testImportExport",
+ "nodescription" );
repository_unitest = repo.dumpRepositoryXml();
repo.importRulesRepository( repository_backup );
assertFalse( repo.containsPackage( "testImportExport" ) );
repo.importRulesRepository( repository_unitest );
assertTrue( repo.containsPackage( "testImportExport" ) );
} catch ( Exception e ) {
- fail("Can't throw any exception.");
+ fail( "Can't throw any exception." );
e.printStackTrace();
}
}
- public void testExportZippedRepository () throws PathNotFoundException, IOException, RepositoryException {
+ public void testExportZippedRepository() throws PathNotFoundException,
+ IOException,
+ RepositoryException {
RulesRepository repo = RepositorySessionUtil.getRepository();
- byte []repository_unitest;
+ byte[] repository_unitest;
- repository_unitest = repo.exportRulesRepository();
+ repository_unitest = repo.exportRulesRepository();
- ByteArrayInputStream bin = new ByteArrayInputStream(repository_unitest);
- ZipInputStream zis = new ZipInputStream (bin);
+ ByteArrayInputStream bin = new ByteArrayInputStream( repository_unitest );
+ ZipInputStream zis = new ZipInputStream( bin );
- ZipEntry entry = zis.getNextEntry();
- assertEquals( entry.getName() , "repository_export.xml" );
+ ZipEntry entry = zis.getNextEntry();
+ assertEquals( entry.getName(),
+ "repository_export.xml" );
assertFalse( entry.isDirectory() );
}
-
- public static<T> List<T> iteratorToList(Iterator<T> it) {
+ public static <T> List<T> iteratorToList(Iterator<T> it) {
List<T> list = new ArrayList<T>();
- while(it.hasNext()) {
+ while ( it.hasNext() ) {
list.add( it.next() );
}
return list;
More information about the jboss-svn-commits
mailing list