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:"Ca=
libri","sans-serif";color:#1F497D">Java syntax like “D=
efaultEdge.class” is (more or less) just syntactic sugar for ‘j=
ava.lang.Class.forName(“org.jgrapht.graph.DefaultEdge”);’=
which in Jess will
come out like “(Class.forName org.jgrapht.graph.DefaultEdge)” =
(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:"Ca=
libri","sans-serif";color:#1F497D"><o:p> </o:p></span><=
/p>
<p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Ca=
libri","sans-serif";color:#1F497D"> (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:"Ca=
libri","sans-serif";color:#1F497D"> (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:"Ca=
libri","sans-serif";color:#1F497D"><o:p> </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:"=
;Tahoma","sans-serif"">From:</span></b><span style=3D"font-s=
ize:10.0pt;font-family:"Tahoma","sans-serif""> 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> </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> </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 <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> (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> </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> </o:p></p>
</div>
<div>
<p class=3D"MsoNormal"><span class=3D"apple-tab-span"> &nb=
sp; </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"> &nb=
sp; </span>(bind ?graph (new org.=
jgrapht.graph.DefaultDirectedGraph ?edge-class))<o:p></o:p></p>
</div>
<div>
<p class=3D"MsoNormal"><o:p> </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> </o:p></p>
</div>
<div>
<div>
<p class=3D"MsoNormal"><span class=3D"apple-tab-span"> &nb=
sp; </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"> &nb=
sp; </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> </o:p></p>
</div>
<div>
<p class=3D"MsoNormal">or<o:p></o:p></p>
</div>
<div>
<p class=3D"MsoNormal"><o:p> </o:p></p>
</div>
<div>
<div>
<p class=3D"MsoNormal"><span class=3D"apple-tab-span"> &nb=
sp; </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"> &nb=
sp; </span>(bind ?graph (new org.=
jgrapht.graph.DefaultDirectedGraph ?edge-class))<o:p></o:p></p>
</div>
</div>
<div>
<p class=3D"MsoNormal"><o:p> </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> </o:p></p>
</div>
<div>
<div>
<p class=3D"MsoNormal"><span class=3D"apple-tab-span"> &nb=
sp; </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"> &nb=
sp; </span>(bind ?matches ((?patt=
ern-class compile "...") matcher ?string))<o:p></o:p></p>
</div>
</div>
<div>
<p class=3D"MsoNormal"><o:p> </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_--