[
http://jira.jboss.com/jira/browse/JBRULES-1290?page=comments#action_12412429 ]
Michael Neale commented on JBRULES-1290:
----------------------------------------
Jervis wrote:
Hi team,
I am currently working on JIRA
http://jira.jboss.com/jira/browse/JBRULES-1290 (BRMS does not allow rule
names to contain an apostrophe character ( ' )). The problem is caused by using rule
name inputted by users as the name to add a node, see below (in PackageItem.java):
Node rulesFolder = this.node.getNode( ASSET_FOLDER_NAME );
ruleNode = rulesFolder.addNode( assetName, AssetItem.RULE_NODE_TYPE_NAME);
The javax.jcr.Node.addNode(String relPath, String primaryNodeTypeName) method will through
RepositoryException if the relPath parameter contains apostrophe character ( ' ). Had
a quick check with JSR-170, it is true that apostrophe character ( ' ) is not allowed
in a path name. Section 4.6:
char ::= nonspace | ' '
nonspace ::= (* Any Unicode character except: '/', ':', '[',
']', '*', ''', '"', '|' or any
whitespace
character *)
There are two possible ways I can think of to have this fixed, none of them are ideal
though.
a. We valid the rule name inputted by users, the validation rule is in line with JSR-170.
This approach is not ideal because a rule named "Jervis' rule" is perfect
valid in my opinion.
b. Somehow we transform the rule name to sth else if it is not a valid relative path
according to JSR-170. This approach may require a data structure somewhere to store the
original rule name and transformed relative path name. As I am pretty new to Drools, I am
not sure how to best get this done.
Any thoughts or suggestions are highly welcome.
BRMS does not allow rule names to contain an apostrophe character (
' )
-----------------------------------------------------------------------
Key: JBRULES-1290
URL:
http://jira.jboss.com/jira/browse/JBRULES-1290
Project: JBoss Drools
Issue Type: Bug
Security Level: Public(Everyone can see)
Components: drools-brms
Affects Versions: 4.0.2
Reporter: Phil Verghese
Assigned To: Jervis Liu
Fix For: 4.0.8
Rules with apostrophe characters are rejected by the BRMS. For example the rule name
"Set employee's wage" works outside BRMS, but does not work in BRMS.
If you attempt to enter a rule through the BRMS containing an apostrophe,the error stack
trace says "An error occurred executing the action.
Details
com.google.gwt.user.client.rpc.SerializableException:
javax.jcr.RepositoryException: failed to resolve path Set employee's relative to
/drools:repository/drools:package_area/com.example/assets: Invalid name: Set
employee's wage: Invalid name: Set employee's wage at
org.drools.brms.server.ServiceImplementation.createNewRule(ServiceImplementation.java:166)..."
If you attempt to import a .drl file with a rule that has an apostrophe in the title,
you'll get this error message
(including the <pre> tags): "Unable to import into the package.
[<pre>Unable to process import: javax.jcr.RepositoryException: failed
to resolve path Set employee's wage relative to
/drools:repository/drools:package_area/com.soi/assets: Invalid name: Set employee's
wage: Invalid name: Set employee's wage</pre>]".
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira