RE: JESS: [EXTERNAL] Issue with static methods (or generics?)

"Friedman-Hill, Ernest" <[email protected]> Thu, 8 Aug 2013 03:58:38 +0000
Newsgroups gmane.comp.java.jess
Message-ID <[email protected]>
--_000_7F2CAF6713AFDD4392FC4DAA05671E072C83286EEXMB10srnsandia_
Content-Type: text/plain;
 charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable

Java syntax like "DefaultEdge.class" is (more or less) just syntactic sugar=
 for 'java.lang.Class.forName("org.jgrapht.graph.DefaultEdge");' which in J=
ess will come out like "(Class.forName org.jgrapht.graph.DefaultEdge)"  (ta=
king advantage of the default static imports from the java.lang package.) S=
o you want to do something like

    (bind ?edge-class (Class.forName org.jgrapht.graph.DefaultEdge))
    (bind ?graph (new org.jgrapht.graph.DefaultDirectedGraph ?edge-class))

From: [email protected] [mailto:[email protected]] On B=
ehalf Of Aur=E9lien Mazurie
Sent: Wednesday, August 07, 2013 7:11 PM
To: jess-users
Subject: JESS: [EXTERNAL] Issue with static methods (or generics?)

Dear Jess users,
I am having trouble instantiating a Java class from within a rule's RHS, an=
d cannot figure out how to solve this problem.

The code in my RHS creates an instance of a class from the JGraphT library.=
 As seen in  https://github.com/jgrapht/jgrapht/blob/master/jgrapht-demo/sr=
c/main/java/org/jgrapht/demo/HelloJGraphT.java (lines 91-92), the creation =
of a DefaultDirectedGraph instance require another class as argument; here,=
 DefaultEdge.

I couldn't find an example in the Jess documentation about how to do that. =
For example, I tried the following:

            (bind ?edge-class org.jgrapht.graph.DefaultEdge)
            (bind ?graph (new org.jgrapht.graph.DefaultDirectedGraph ?edge-=
class))

I also tried variations such as

            (bind ?edge-class org.jgrapht.graph.DefaultEdge)
            (bind ?graph (new org.jgrapht.graph.DefaultDirectedGraph (?edge=
-class getClass))

or

            (bind ?edge-class (new org.jgrapht.graph.DefaultEdge))
            (bind ?graph (new org.jgrapht.graph.DefaultDirectedGraph ?edge-=
class))

Any idea about what the syntax should be to properly instantiate the Defaul=
tDirectedGraph class? For information (but not certain how relevant it is h=
ere), I succeeded in the past in using java.util.regex.Pattern and its stat=
ic method 'compile' by typing

            (bind ?pattern-class java.util.regex.Pattern)
            (bind ?matches ((?pattern-class compile "...") matcher ?string)=
)

Best,
Aur=E9lien

--_000_7F2CAF6713AFDD4392FC4DAA05671E072C83286EEXMB10srnsandia_
Content-Type: text/html;
 charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Diso-8859-=
1">
<meta name=3D"Generator" content=3D"Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0in;
	margin-bottom:.0001pt;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:purple;
	text-decoration:underline;}
span.apple-tab-span
	{mso-style-name:apple-tab-span;}
span.EmailStyle18
	{mso-style-type:personal-reply;
	font-family:"Calibri","sans-serif";
	color:#1F497D;}
span.n
	{mso-style-name:n;}
span.o
	{mso-style-name:o;}
span.na
	{mso-style-name:na;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-size:10.0pt;}
@page WordSection1
	{size:8.5in 11.0in;
	margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=3D"EN-US" link=3D"blue" vlink=3D"purple">
<div class=3D"WordSection1">
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D">Java syntax like &#8220;D=
efaultEdge.class&#8221; is (more or less) just syntactic sugar for &#8216;j=
ava.lang.Class.forName(&#8220;org.jgrapht.graph.DefaultEdge&#8221;);&#8217;=
 which in Jess will
 come out like &#8220;(Class.forName org.jgrapht.graph.DefaultEdge)&#8221; =
&nbsp;(taking advantage of the default static imports from the java.lang pa=
ckage.) So you want to do something like<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span><=
/p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D">&nbsp;&nbsp;&nbsp; (bind =
?edge-class (Class.forName org.jgrapht.graph.DefaultEdge))<o:p></o:p></span=
></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D">&nbsp;&nbsp;&nbsp; (bind =
?graph (new org.jgrapht.graph.DefaultDirectedGraph ?edge-class))<o:p></o:p>=
</span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:&quot;Ca=
libri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span><=
/p>
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in =
0in 0in">
<p class=3D"MsoNormal"><b><span style=3D"font-size:10.0pt;font-family:&quot=
;Tahoma&quot;,&quot;sans-serif&quot;">From:</span></b><span style=3D"font-s=
ize:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;"> owner-je=
[email protected] [mailto:[email protected]]
<b>On Behalf Of </b>Aur=E9lien Mazurie<br>
<b>Sent:</b> Wednesday, August 07, 2013 7:11 PM<br>
<b>To:</b> jess-users<br>
<b>Subject:</b> JESS: [EXTERNAL] Issue with static methods (or generics?)<o=
:p></o:p></span></p>
</div>
</div>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">Dear Jess users,<o:p></o:p></p>
<div>
<p class=3D"MsoNormal">I am having trouble instantiating a Java class from =
within a rule's RHS, and cannot figure out how to solve this problem.<o:p><=
/o:p></p>
</div>
<div>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class=3D"MsoNormal">The code in my RHS creates an instance of a class fr=
om the JGraphT library. As seen in&nbsp;&nbsp;<a href=3D"https://github.com=
/jgrapht/jgrapht/blob/master/jgrapht-demo/src/main/java/org/jgrapht/demo/He=
lloJGraphT.java">https://github.com/jgrapht/jgrapht/blob/master/jgrapht-dem=
o/src/main/java/org/jgrapht/demo/HelloJGraphT.java</a>&nbsp;(lines
 91-92), the creation of a DefaultDirectedGraph instance require another cl=
ass as argument; here, DefaultEdge.<o:p></o:p></p>
</div>
<div>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class=3D"MsoNormal">I couldn't find an example in the Jess documentation=
 about how to do that. For example, I tried the following:<o:p></o:p></p>
</div>
<div>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class=3D"MsoNormal"><span class=3D"apple-tab-span">&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>(bind ?edge-class org.=
jgrapht.graph.DefaultEdge)<o:p></o:p></p>
</div>
<div>
<p class=3D"MsoNormal"><span class=3D"apple-tab-span">&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>(bind ?graph (new org.=
jgrapht.graph.DefaultDirectedGraph ?edge-class))<o:p></o:p></p>
</div>
<div>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class=3D"MsoNormal">I also tried variations such as<o:p></o:p></p>
</div>
<div>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<div>
<div>
<p class=3D"MsoNormal"><span class=3D"apple-tab-span">&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>(bind ?edge-class org.=
jgrapht.graph.DefaultEdge)<o:p></o:p></p>
</div>
<div>
<p class=3D"MsoNormal"><span class=3D"apple-tab-span">&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>(bind ?graph (new org.=
jgrapht.graph.DefaultDirectedGraph (?edge-class getClass))<o:p></o:p></p>
</div>
</div>
<div>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class=3D"MsoNormal">or<o:p></o:p></p>
</div>
<div>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<div>
<div>
<p class=3D"MsoNormal"><span class=3D"apple-tab-span">&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>(bind ?edge-class (new=
 org.jgrapht.graph.DefaultEdge))<o:p></o:p></p>
</div>
<div>
<p class=3D"MsoNormal"><span class=3D"apple-tab-span">&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>(bind ?graph (new org.=
jgrapht.graph.DefaultDirectedGraph ?edge-class))<o:p></o:p></p>
</div>
</div>
<div>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class=3D"MsoNormal">Any idea about what the syntax should be to properly=
 instantiate the DefaultDirectedGraph class? For information (but not certa=
in how relevant it is here), I succeeded in the past in using java.util.reg=
ex.Pattern and its static method 'compile'
 by typing<o:p></o:p></p>
</div>
<div>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<div>
<div>
<p class=3D"MsoNormal"><span class=3D"apple-tab-span">&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>(bind ?pattern-class j=
ava.util.regex.Pattern)<o:p></o:p></p>
</div>
<div>
<p class=3D"MsoNormal"><span class=3D"apple-tab-span">&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>(bind ?matches ((?patt=
ern-class compile &quot;...&quot;) matcher ?string))<o:p></o:p></p>
</div>
</div>
<div>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class=3D"MsoNormal">Best,<o:p></o:p></p>
</div>
<div>
<p class=3D"MsoNormal">Aur=E9lien<o:p></o:p></p>
</div>
</div>
</body>
</html>

--_000_7F2CAF6713AFDD4392FC4DAA05671E072C83286EEXMB10srnsandia_--