Hi !
 
I have a problem where I'm not sure if this is thread safe can anyone pls tell me?
Objective of this 2 classes is to support the porcessing of business rules. Hence, the follow classes?  (Questions are below class)
 
 
 
 
Criteria Class

public abstract class Criteria implements IRule {

protected Status criteriaStatus = new Status(Status.SUCCESS); // Holds status

public synchronized void fire(RequestToValidate aRequest){

    criteriaStatus.setStatus(Status.SUCCESS); // Intitalise for each request

    setup(aRequest);

    execute(aRequest);

    cleanup(aRequest);

}

 

protected void setup(RequestToValidate aRequest){}

protected abstract void execute(RequestToValidate aRequest);

protected void cleanup(RequestToValidate aRequest){

    aRequest.setTestResult(this.getClass(), criteriaStatus, "");

}

 

}// end class

 

Question :
Using Synchronized in Fire method will that stop anyone altering the criteriaStatus ? If not, what is rememdy?
Should I create new fire signature of :
        public synchronized void fire(RequestToValidate aRequest)  ?
 
Is it possible for criteriaStatus to be altered between Setup, Execute & CleanUp methods?
 

Reply via email to