package org.boon;
import com.examples.model.test.movies.admin.AdminService;
import com.examples.model.test.movies.crud.CrudType;
import com.examples.model.test.movies.entitlement.Rights;
import com.examples.model.test.movies.entitlement.RightsCrudRequest;
import com.examples.model.test.movies.entitlement.RightsPushRequest;
import com.examples.model.test.movies.entitlement.RightsType;
import com.examples.model.test.time.TimeZoneType;
import org.boon.core.reflection.BeanUtils;
import org.boon.core.reflection.Invoker;
import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
import org.openjdk.jmh.annotations.OutputTimeUnit;
import org.openjdk.jmh.logic.BlackHole;
import java.util.List;
import java.util.concurrent.TimeUnit;
import static org.boon.Boon.atIndex;
import static org.boon.Boon.puts;
import static org.boon.json.JsonFactory.fromJson;
import static org.boon.json.JsonFactory.toJson;
/**
* Created by Richard on 4/2/14.
*/
public class InvokerObjectArg {
static AdminService adminService = new AdminService(){
@Override
public boolean rightsPush(RightsPushRequest request) {
return false;
}
};
static RightsPushRequest rightsPushRequest;
static String json;
static {
Rights rights = Rights.createRights(
RightsType.AMAZON_PRIME, true, TimeZoneType.EST, System.currentTimeMillis());
RightsCrudRequest rightsCrudRequest = new RightsCrudRequest("Bob",
CrudType.ADD, rights);
RightsCrudRequest rightsCrudRequest2 = BeanUtils.copy(rightsCrudRequest);
rightsCrudRequest2.setUsername("Rick2");
RightsCrudRequest rightsCrudRequest3 = BeanUtils.copy(rightsCrudRequest);
rightsCrudRequest3.setUsername("Jason3");
List<RightsCrudRequest> rightsList = Lists.list(rightsCrudRequest, rightsCrudRequest2, rightsCrudRequest3);
rightsPushRequest = new RightsPushRequest(1L, rightsList);
json = toJson(rightsPushRequest);
}
@GenerateMicroBenchmark
@OutputTimeUnit(TimeUnit.SECONDS)
public void rightsInvokeBH(BlackHole bh) throws Exception {
bh.consume(rightsInvoke());
}
private Object rightsInvoke() {
Object arg = fromJson(json);
return Invoker.invokeFromObject(adminService, "rightsPush", arg);
}
@GenerateMicroBenchmark
@OutputTimeUnit(TimeUnit.SECONDS)
public void serialBH(BlackHole bh) throws Exception {
bh.consume(serial());
}
private Object serial() {
return fromJson(json);
}
}