{"action":"created","issue":{"url":"https://api.github.com/repos/advantageous/qbit/issues/744","repository_url":"https://api.github.com/repos/advantageous/qbit","labels_url":"https://api.github.com/repos/advantageous/qbit/issues/744/labels{/name}","comments_url":"https://api.github.com/repos/advantageous/qbit/issues/744/comments","events_url":"https://api.github.com/repos/advantageous/qbit/issues/744/events","html_url":"https://github.com/advantageous/qbit/issues/744","id":162717892,"number":744,"title":"Parameters of type ObjectId with null value are changed to non-null upon invocation","user":{"login":"tiddman","id":12397732,"avatar_url":"https://avatars.githubusercontent.com/u/12397732?v=3","gravatar_id":"","url":"https://api.github.com/users/tiddman","html_url":"https://github.com/tiddman","followers_url":"https://api.github.com/users/tiddman/followers","following_url":"https://api.github.com/users/tiddman/following{/other_user}","gists_url":"https://api.github.com/users/tiddman/gists{/gist_id}","starred_url":"https://api.github.com/users/tiddman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tiddman/subscriptions","organizations_url":"https://api.github.com/users/tiddman/orgs","repos_url":"https://api.github.com/users/tiddman/repos","events_url":"https://api.github.com/users/tiddman/events{/privacy}","received_events_url":"https://api.github.com/users/tiddman/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2016-06-28T15:39:38Z","updated_at":"2016-06-28T19:37:57Z","closed_at":null,"body":"I have a method with this signature:\r\n\r\n    void fetchSince(FeedMeta feedMeta, ObjectId since, Promise<List<Position>> promise);\r\n\r\nand am invoking it like this:\r\n\r\n    fetchSince(feedMeta, null, promise);\r\n\r\nWhen invoked, the 2nd parameter is not null, it's an ObjectId such as \"57728ed86cf58c9c45dfca95\".  The stack is below.\r\n\r\nI suspect that in the Qbit method invocation internals, the null parameter is getting swizzled to the result of \"new ObjectId()\" which is a non-null value. A workaround is to pass the value by string.\r\n\r\n\tat com.revelfire.poc.service.FetchServiceImpl.fetchSince(FetchServiceImpl.java:123)\r\n\tat io.advantageous.boon.core.reflection.impl.MethodAccessImpl.invoke(MethodAccessImpl.java:329)\r\n\tat io.advantageous.boon.core.reflection.impl.MethodAccessImpl.invokeDynamic(MethodAccessImpl.java:316)\r\n\tat io.advantageous.qbit.boon.service.impl.MapAndInvokeDynamic.mapArgsAsyncHandlersAndInvoke(MapAndInvokeDynamic.java:52)\r\n\tat io.advantageous.qbit.boon.service.impl.BoonServiceMethodCallHandler.mapArgsAsyncHandlersAndInvoke(BoonServiceMethodCallHandler.java:101)\r\n\tat io.advantageous.qbit.boon.service.impl.BoonServiceMethodCallHandler.invokeByName(BoonServiceMethodCallHandler.java:335)\r\n\tat io.advantageous.qbit.boon.service.impl.BoonServiceMethodCallHandler.receiveMethodCall(BoonServiceMethodCallHandler.java:88)\r\n\tat io.advantageous.qbit.service.impl.BaseServiceQueueImpl.doHandleMethodCall(BaseServiceQueueImpl.java:232)\r\n\tat io.advantageous.qbit.service.impl.BaseServiceQueueImpl.access$000(BaseServiceQueueImpl.java:85)\r\n\tat io.advantageous.qbit.service.impl.BaseServiceQueueImpl$3.receive(BaseServiceQueueImpl.java:447)\r\n\tat io.advantageous.qbit.service.impl.BaseServiceQueueImpl$3.receive(BaseServiceQueueImpl.java:434)\r\n\tat io.advantageous.qbit.queue.impl.BasicReceiveQueueManager.manageQueue(BasicReceiveQueueManager.java:94)\r\n\tat io.advantageous.qbit.queue.impl.BasicReceiveQueueManager$$Lambda$16/361571968.run(Unknown Source)\r\n\tat io.advantageous.qbit.concurrent.ScheduledThreadContext.lambda$start$30(ScheduledThreadContext.java:89)\r\n\tat io.advantageous.qbit.concurrent.ScheduledThreadContext$$Lambda$11/257608164.run(Unknown Source)\r\n\tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\r\n\tat java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)\r\n\tat java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)\r\n\tat java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)\r\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)\r\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)\r\n\tat java.lang.Thread.run(Thread.java:745)"},"comment":{"url":"https://api.github.com/repos/advantageous/qbit/issues/comments/229158538","html_url":"https://github.com/advantageous/qbit/issues/744#issuecomment-229158538","issue_url":"https://api.github.com/repos/advantageous/qbit/issues/744","id":229158538,"user":{"login":"revelfire","id":2252543,"avatar_url":"https://avatars.githubusercontent.com/u/2252543?v=3","gravatar_id":"","url":"https://api.github.com/users/revelfire","html_url":"https://github.com/revelfire","followers_url":"https://api.github.com/users/revelfire/followers","following_url":"https://api.github.com/users/revelfire/following{/other_user}","gists_url":"https://api.github.com/users/revelfire/gists{/gist_id}","starred_url":"https://api.github.com/users/revelfire/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/revelfire/subscriptions","organizations_url":"https://api.github.com/users/revelfire/orgs","repos_url":"https://api.github.com/users/revelfire/repos","events_url":"https://api.github.com/users/revelfire/events{/privacy}","received_events_url":"https://api.github.com/users/revelfire/received_events","type":"User","site_admin":false},"created_at":"2016-06-28T19:37:57Z","updated_at":"2016-06-28T19:37:57Z","body":"Can we use Void like Vertx does?"}}
{"actor":{"display_login":"revelfire"}}