I'm using an academic license of the newest version, 7.1p2.  I still can't
seem to figure it out.



On Mon, Aug 24, 2009 at 3:54 PM, Ernest Friedman-Hill <[email protected]>wrote:

> What version of Jess are you using? For the most current version, the only
> thing I see that could possibly give that stack trace would be if the
> PropertyChangeEvent event object being sent to Jess was itself null, but
> that seems unlikely given that you're using PropertyChangeSupport. If you're
> using some older version, perhaps you're seeing an old bug that's already
> been fixed.
>
>
>
> On Aug 23, 2009, at 5:00 PM, Pierre Bezuhov wrote:
>
>  As I said before, the firePropertyChange method was ineffective.  Now
>> however, after changing around some code (none of the code listed in this
>> post), I'm getting the following error when firePropertyChange is called.
>>
>> java.lang.NullPointerException
>>        at jess.de.propertyChange(Unknown Source)
>>        at
>> java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:339)
>>        at
>> java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:276)
>>        at geogame.server.Round.setRound(Round.java:61)
>>        at geogame.server.Game.advanceRound(Game.java:987)
>>        at geogame.server.Game.advanceTimer(Game.java:910)
>>        at geogame.server.Game.run(Game.java:889)
>>        at
>> com.sun.sgs.impl.service.task.PendingTask.run(PendingTask.java:224)
>>        at
>> com.sun.sgs.impl.service.task.TaskServiceImpl$TaskRunner.run(TaskServiceImpl.java:1081)
>>        at
>> com.sun.sgs.impl.kernel.TransactionSchedulerImpl.executeTask(TransactionSchedulerImpl.java:579)
>>        at
>> com.sun.sgs.impl.kernel.TransactionSchedulerImpl.access$500(TransactionSchedulerImpl.java:70)
>>        at
>> com.sun.sgs.impl.kernel.TransactionSchedulerImpl$TaskConsumer.run(TransactionSchedulerImpl.java:487)
>>        at
>> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
>>        at
>> java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>>        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>>        at
>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>>        at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>>        at java.lang.Thread.run(Thread.java:619)
>>
>> I thought that maybe this meant that the object for which
>> firePropertyChange was being called was not added to the engine.  However I
>> verified that a Round object is being added and that the corresponding fact
>> shows up.  Anyone know what's going on here?
>>
>>
>> On Fri, Aug 21, 2009 at 11:48 AM, Ernest Friedman-Hill <
>> [email protected]> wrote:
>> The only thing here that's clearly wrong is the equals() method -- you
>> can't (generally) compare Strings with equals -- you want to use the
>> equals() method instead. But otherwise from Jess's perspective I think
>> things should be fine.
>>
>> How are you adding the objects to working memory? Using "add" or
>> "definstance"? Can I see that line of code?
>>
>>
>>
>> On Aug 21, 2009, at 11:20 AM, Pierre Bezuhov wrote:
>>
>> When I call firePropertyChange from my Java object after setting an
>> attribute the working memory of my engine is not updated.  I know this
>> because I loop through the facts before and after the setting of the
>> attribute, and "round" is set to "0" both times.
>>
>> My Java and Jess code is below (if you're wondering why I have a class
>> just to wrap an int and string, it's to tie into some 3rd party code I don't
>> have control over).  Any idea what I'm doing wrong?
>>
>> ######## JAVA CLASS ########
>> package game.server;
>>
>> import java.beans.*;
>> import java.io.*;
>> import java.nio.*;
>> import java.util.*;
>> import jess.*;
>>
>> public class Round implements Serializable
>> {
>>   private static final long serialVersionUID = 1L;
>>   private int round;
>>   private String gameName;
>>   private PropertyChangeSupport propertyChange;
>>
>>   protected Round(int round, String game)
>>   {
>>       this.round = round;
>>       gameName = game;
>>       propertyChange = new PropertyChangeSupport(this);
>>   }
>>
>>   public int getRound()
>>   {
>>       return round;
>>   }
>>
>>   public void setRound(int round)
>>   {
>>       if (this.round != round)
>>       {
>>           int oldValue = this.round;
>>           this.round = round;
>>
>>           // Fire property change event so Jess working memory is updated
>>           propertyChange.firePropertyChange("round", new
>> Integer(oldValue), new Integer(this.round));
>>       }
>>   }
>>
>>   public String getGameName()
>>   {
>>       return gameName;
>>   }
>>
>>   public void setGameName(String game)
>>   {
>>       gameName = game;
>>   }
>>
>>
>>   public void addPropertyChangeListener(PropertyChangeListener listener)
>>   {
>>       propertyChange.addPropertyChangeListener(listener);
>>   }
>>
>>   public void removePropertyChangeListener(PropertyChangeListener
>> listener)
>>   {
>>       propertyChange.removePropertyChangeListener(listener);
>>   }
>>
>>   public boolean equals(Object obj)
>>   {
>>       boolean equal = false;
>>
>>       if (obj instanceof Round)
>>       {
>>           Round objRound = (Round)obj;
>>           equal = ((objRound.getRound() == round) &&
>> (objRound.getGameName() == gameName));
>>       }
>>
>>       return equal;
>>   }
>>
>>   public int hashCode()
>>   {
>>       // Game name never changes so hashCode is mutable
>>       return gameName.hashCode();
>>   }
>> }
>>
>>
>> ######## JESS RULES ########
>> (import game.server.*)
>>
>> (deftemplate Round (declare (from-class Round)))
>>
>> (defrule process-round
>>   (Round {round >= 0} (round ?round))
>>   =>
>>   (printout t "Round " ?round crlf)
>> )
>>
>> ---------------------------------------------------------
>> Ernest Friedman-Hill
>> Informatics & Decision Sciences, Sandia National Laboratories
>> PO Box 969, MS 9012, Livermore, CA 94550
>> http://www.jessrules.com
>>
>>
>>
>>
>>
>>
>>
>> --------------------------------------------------------------------
>> To unsubscribe, send the words 'unsubscribe jess-users [email protected]'
>> in the BODY of a message to [email protected], NOT to the list
>> (use your own address!) List problems? Notify [email protected]
>> .
>> --------------------------------------------------------------------
>>
>>
>>
> ---------------------------------------------------------
> Ernest Friedman-Hill
> Informatics & Decision Sciences, Sandia National Laboratories
> PO Box 969, MS 9012, Livermore, CA 94550
> http://www.jessrules.com
>
>
>
>
>
>
>
> --------------------------------------------------------------------
> To unsubscribe, send the words 'unsubscribe jess-users [email protected]'
> in the BODY of a message to [email protected], NOT to the list
> (use your own address!) List problems? Notify [email protected].
> --------------------------------------------------------------------
>
>

Reply via email to