package fr.imag.adele.apam.pax.test.performance;
//@Scope("STATELESS")
public class FibonacciRecursive implements Fibonacci {
public static int calls = 0;
// @Reference(required=false)
Fibonacci moins1;
// @Reference(required=false)
Fibonacci moins2;
public FibonacciRecursive(){
System.out.println("############## Building ########### ");
}
/*BundleContext context;
public FibonacciRecursive(){}
public FibonacciRecursive(BundleContext context){
this.context=context;
}*/
synchronized public int compute(int n) {
// pure osgi
// if(moins1==null){
// ServiceReference reference=this.context.getServiceReference(Fibonacci.class.getName());
// moins1=(Fibonacci)context.getService(reference);
// }
//
// if(moins2==null){
// ServiceReference reference=this.context.getServiceReference(Fibonacci.class.getName());
// moins2=(Fibonacci)context.getService(reference);
// }
//moins1=Main.dom.getServiceReference(FibonacciRecursive.class, "FibonacciComponent").getService();
//moins2=Main.dom.getServiceReference(FibonacciRecursive.class, "FibonacciComponent").getService();
//String message=String.format("Instances are %d ---- %s/%s/%s", n,this,moins1,moins2);
//System.out.println(message);
calls++;
if (n < 2)
return 1;
int returns = moins1.compute(n - 1) + moins2.compute(n - 2);
return returns;
}
public Fibonacci getMoins1() {
return moins1;
}
public void setMoins1(Fibonacci moins1) {
this.moins1 = moins1;
}
public Fibonacci getMoins2() {
return moins2;
}
public void setMoins2(Fibonacci moins2) {
this.moins2 = moins2;
}
@Override
public int getCalls() {
return calls;
}
@Override
public void callsInit(int val) {
calls=val;
}
}