Trying to isolate the problem, the following code runs smoothly: // {{ findRegisteredToPerson (action) @Action(hidden = Where.EVERYWHERE) public Person findRegisteredToPerson() { return Kit.this.firstMatch(new QueryDefault<Person>(Person.class, "findByKit", "registeredKit", this)); }
// }} But if changed into this it throws and Exception: // {{ findRegisteredToPerson (action) @Action(hidden = Where.EVERYWHERE) public Person findRegisteredToPerson() { return this.queryResultsCache.execute(new Callable<Person>() { @SuppressWarnings("synthetic-access") @Override public Person call() throws Exception { return Kit.this.firstMatch(new QueryDefault<Person>(Person.class, "findByKit", "registeredKit", this)); } }, this.getClass(), "findRegisteredToPerson", this.barCode); } // }} org.apache.isis.core.metamodel.exceptions.MetaModelException: java.lang.reflect.InvocationTargetException at org.apache.isis.core.commons.lang.ThrowableExtensions.throwWithinIsisException(ThrowableExtensions.java:60) at org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventAbstract.internalInvoke(ActionInvocationFacetForDomainEventAbstract.java:411) at org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventAbstract.invoke(ActionInvocationFacetForDomainEventAbstract.java:189) at org.apache.isis.core.runtime.transaction.facets.ActionInvocationFacetWrapTransaction$1.execute(ActionInvocationFacetWrapTransaction.java:57) at org.apache.isis.core.runtime.transaction.facets.ActionInvocationFacetWrapTransaction$1.execute(ActionInvocationFacetWrapTransaction.java:1) at org.apache.isis.core.runtime.system.transaction.IsisTransactionManager.executeWithinTransaction(IsisTransactionManager.java:205) at org.apache.isis.core.runtime.transaction.facets.ActionInvocationFacetWrapTransaction.invoke(ActionInvocationFacetWrapTransaction.java:54) at org.apache.isis.core.metamodel.specloader.specimpl.ObjectActionImpl.execute(ObjectActionImpl.java:367) at org.apache.isis.core.wrapper.handlers.DomainObjectInvocationHandler.handleActionMethod(DomainObjectInvocationHandler.java:629) at org.apache.isis.core.wrapper.handlers.DomainObjectInvocationHandler.invoke(DomainObjectInvocationHandler.java:263) at org.apache.isis.core.wrapper.proxy.ProxyInstantiatorForJavassist$1.invoke(ProxyInstantiatorForJavassist.java:72) at com.tellmegen.domain.model.accounts.Person_$$_jvste3b_7.registerKit(Person_$$_jvste3b_7.java) at com.tellmegen.domain.model.kits.Kit.assignToPerson(Kit.java:228) at com.tellmegen.integtests.domain.model.algorithms.complexdiseases.ComplexDiseaseAlgorithmImplementationTests.isBlocked(ComplexDiseaseAlgorithmImplementationTests.java:65) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) at org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2$1.evaluate(JUnitRuleMockery2.java:146) at org.apache.isis.core.integtestsupport.ExceptionRecognizerTranslate$TranslationStatement.evaluate(ExceptionRecognizerTranslate.java:32) at org.apache.isis.core.integtestsupport.IntegrationTestAbstract$IsisTransactionRule$1.evaluate(IntegrationTestAbstract.java:214) at org.junit.rules.ExpectedException$ExpectedExceptionStatement.evaluate(ExpectedException.java:239) at org.junit.rules.RunRules.evaluate(RunRules.java:20) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.GeneratedMethodAccessor166.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.apache.isis.core.runtime.services.ServiceInstantiator$2.invoke(ServiceInstantiator.java:227) at org.apache.isis.applib.services.queryresultscache.QueryResultsCache_$$_jvste3b_3.execute(QueryResultsCache_$$_jvste3b_3.java) at com.tellmegen.domain.model.kits.Kit.findRegisteredToPerson(Kit.java:213) at com.tellmegen.domain.model.kits.Kit.getRegisteredForPerson(Kit.java:205) at com.tellmegen.domain.model.accounts.Person.registerKit(Person.java:213) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventAbstract.internalInvoke(ActionInvocationFacetForDomainEventAbstract.java:337) ... 42 more Caused by: java.lang.RuntimeException: java.lang.IllegalArgumentException: illegal argument, expected: is a non empty string at org.apache.isis.applib.services.queryresultscache.QueryResultsCache.execute(QueryResultsCache.java:142) at org.apache.isis.applib.services.queryresultscache.QueryResultsCache.execute(QueryResultsCache.java:125) ... 55 more Caused by: java.lang.IllegalArgumentException: illegal argument, expected: is a non empty string at org.apache.isis.core.commons.ensure.Ensure.ensureThatArg(Ensure.java:57) at org.apache.isis.core.metamodel.spec.ObjectSpecId.<init>(ObjectSpecId.java:47) at org.apache.isis.core.metamodel.spec.ObjectSpecId.of(ObjectSpecId.java:43) at org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacetAbstract.<init>(ObjectSpecIdFacetAbstract.java:39) at org.apache.isis.core.metamodel.facets.object.objectspecid.classname.ObjectSpecIdFacetDerivedFromClassName.<init>(ObjectSpecIdFacetDerivedFromClassName.java:28) at org.apache.isis.core.metamodel.facets.object.objectspecid.classname.ObjectSpecIdFacetDerivedFromClassNameFactory.process(ObjectSpecIdFacetDerivedFromClassNameFactory.java:46) at org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor.process(FacetProcessor.java:276) at org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.introspectClass(FacetedMethodsBuilder.java:185) at org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.introspectTypeHierarchyAndMembers(ObjectSpecificationDefault.java:125) at org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.introspect(ObjectReflectorDefault.java:510) at org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.introspectIfRequired(ObjectReflectorDefault.java:497) at org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.loadSpecificationForSubstitutedClass(ObjectReflectorDefault.java:396) at org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.internalLoadSpecification(ObjectReflectorDefault.java:374) at org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.loadSpecification(ObjectReflectorDefault.java:355) at org.apache.isis.core.runtime.persistence.adaptermanager.AdapterManagerDefault.existingOrValueAdapter(AdapterManagerDefault.java:202) at org.apache.isis.core.runtime.persistence.adaptermanager.AdapterManagerDefault.adapterFor(AdapterManagerDefault.java:177) at org.apache.isis.core.runtime.system.persistence.PersistenceQueryFactory.wrap(PersistenceQueryFactory.java:92) at org.apache.isis.core.runtime.system.persistence.PersistenceQueryFactory.createPersistenceQueryFor(PersistenceQueryFactory.java:76) at org.apache.isis.core.runtime.system.persistence.PersistenceSession.createPersistenceQueryFor(PersistenceSession.java:405) at org.apache.isis.core.runtime.system.persistence.PersistenceSession.findInstances(PersistenceSession.java:373) at org.apache.isis.core.runtime.persistence.internal.RuntimeContextFromSession$8.firstMatchingQuery(RuntimeContextFromSession.java:288) at org.apache.isis.core.metamodel.services.container.DomainObjectContainerDefault.firstMatch(DomainObjectContainerDefault.java:596) at org.apache.isis.applib.AbstractContainedObject.firstMatch(AbstractContainedObject.java:221) at com.tellmegen.domain.model.kits.Kit.access$1(Kit.java:1) at com.tellmegen.domain.model.kits.Kit$1.call(Kit.java:217) at com.tellmegen.domain.model.kits.Kit$1.call(Kit.java:1) at org.apache.isis.applib.services.queryresultscache.QueryResultsCache.execute(QueryResultsCache.java:138) ... 56 more Any ideas? Thanks, Oscar > El 28/5/2015, a las 19:06, GESCONSULTOR - Óscar Bou <o....@gesconsultor.com> > escribió: > > > Hi all. > > I have a project that uses isis-addons-security. > > So it installs the TenantedAuthorizationFacetDefault > > Which is invoked when using wrapped calls in order to evaluate if that action > is allowed or hidden. > > > That said, I have a test with the following code: > > // given > ... > final Trait trait = > this.wrap(this.traits).createTrait("outcome_higherLimitIncluded"); > this.wrap(trait).upsertScoringRange(-1000, -40, "Bad Result"); > > Please, notice that the first invocation is wrapped, and it has properly > passed. > When the test executes the second invocation, it will fail with a > HiddenException, telling that the user has not bee found. > > But the inner problem is that the ServiceInstantiator is returning “null” > when invoking the “execute” method. > See the stack trace right there, when the execution has been paused on > ServiceInstantiator, line 225. > > Please am I missing something? It has started to happen today … > > Thanks! > > Thread [main] (Suspended) > > org.apache.isis.core.runtime.services.ServiceInstantiator$2.invoke(java.lang.Object, > java.lang.reflect.Method, java.lang.reflect.Method, java.lang.Object[]) > line: 225 > > org.apache.isis.applib.services.queryresultscache.QueryResultsCache_$$_jvstd14_3.execute(java.util.concurrent.Callable, > java.lang.Class, java.lang.String, java.lang.Object...) line: not available > > > org.isisaddons.module.security.facets.TenantedAuthorizationFacetDefault.findApplicationUser(java.lang.String) > line: 158 > > org.isisaddons.module.security.facets.TenantedAuthorizationFacetDefault.pathsFor(org.apache.isis.core.metamodel.interactions.InteractionContext<?>) > line: 114 > > org.isisaddons.module.security.facets.TenantedAuthorizationFacetDefault.hides(org.apache.isis.core.metamodel.interactions.VisibilityContext<? > extends org.apache.isis.applib.events.VisibilityEvent>) line: 71 > > org.apache.isis.core.metamodel.interactions.InteractionUtils.isVisibleResult(org.apache.isis.core.metamodel.facetapi.FacetHolder, > org.apache.isis.core.metamodel.interactions.VisibilityContext<?>) line: 40 > > > org.apache.isis.core.metamodel.specloader.specimpl.ObjectActionImpl(org.apache.isis.core.metamodel.specloader.specimpl.ObjectMemberAbstract).isVisibleResult(org.apache.isis.core.commons.authentication.AuthenticationSession, > org.apache.isis.core.metamodel.adapter.ObjectAdapter, > org.apache.isis.applib.annotation.Where) line: 238 > > org.apache.isis.core.metamodel.specloader.specimpl.ObjectActionImpl(org.apache.isis.core.metamodel.specloader.specimpl.ObjectMemberAbstract).isVisible(org.apache.isis.core.commons.authentication.AuthenticationSession, > org.apache.isis.core.metamodel.adapter.ObjectAdapter, > org.apache.isis.applib.annotation.Where) line: 233 > > org.apache.isis.core.wrapper.handlers.DomainObjectInvocationHandler.checkVisibility(org.apache.isis.core.metamodel.adapter.ObjectAdapter, > org.apache.isis.core.metamodel.spec.feature.ObjectMember) line: 680 > > org.apache.isis.core.wrapper.handlers.DomainObjectInvocationHandler.handleActionMethod(org.apache.isis.core.metamodel.adapter.ObjectAdapter, > java.lang.Object[], > org.apache.isis.core.metamodel.spec.feature.ObjectAction, > org.apache.isis.core.metamodel.specloader.specimpl.ContributeeMember) line: > 607 > > org.apache.isis.core.wrapper.handlers.DomainObjectInvocationHandler.invoke(java.lang.Object, > java.lang.reflect.Method, java.lang.Object[]) line: 263 > > org.apache.isis.core.wrapper.proxy.ProxyInstantiatorForJavassist$1.invoke(java.lang.Object, > java.lang.reflect.Method, java.lang.reflect.Method, java.lang.Object[]) > line: 72 > > com.tellmegen.domain.model.traits.Trait_$$_jvstd14_7.upsertScoringRange(java.lang.Integer, > java.lang.Integer, java.lang.String) line: not available > > com.tellmegen.integtests.domain.model.algorithms.traits.TraitLogicalAlgorithmImplementationTests.outcome_higherLimitIncluded() > line: 127 > sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, > java.lang.Object, java.lang.Object[]) line: not available [native method] > > sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, > java.lang.Object[]) line: 57 > sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, > java.lang.Object[]) line: 43 > java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) > line: 606 > org.junit.runners.model.FrameworkMethod$1.runReflectiveCall() line: 50 > > org.junit.runners.model.FrameworkMethod$1(org.junit.internal.runners.model.ReflectiveCallable).run() > line: 12 > > org.junit.runners.model.FrameworkMethod.invokeExplosively(java.lang.Object, > java.lang.Object...) line: 47 > org.junit.internal.runners.statements.InvokeMethod.evaluate() line: 17 > org.junit.internal.runners.statements.RunBefores.evaluate() line: 26 > > org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2$1.evaluate() > line: 146 > > org.apache.isis.core.integtestsupport.ExceptionRecognizerTranslate$TranslationStatement.evaluate() > line: 32 > > org.apache.isis.core.integtestsupport.IntegrationTestAbstract$IsisTransactionRule$1.evaluate() > line: 214 > org.junit.rules.ExpectedException$ExpectedExceptionStatement.evaluate() > line: 239 > org.junit.rules.RunRules.evaluate() line: 20 > > org.junit.runners.BlockJUnit4ClassRunner(org.junit.runners.ParentRunner).runLeaf(org.junit.runners.model.Statement, > org.junit.runner.Description, org.junit.runner.notification.RunNotifier) > line: 325 > > org.junit.runners.BlockJUnit4ClassRunner.runChild(org.junit.runners.model.FrameworkMethod, > org.junit.runner.notification.RunNotifier) line: 78 > org.junit.runners.BlockJUnit4ClassRunner.runChild(java.lang.Object, > org.junit.runner.notification.RunNotifier) line: 57 > org.junit.runners.ParentRunner$3.run() line: 290 > org.junit.runners.ParentRunner$1.schedule(java.lang.Runnable) line: 71 > > org.junit.runners.BlockJUnit4ClassRunner(org.junit.runners.ParentRunner).runChildren(org.junit.runner.notification.RunNotifier) > line: 288 > > org.junit.runners.ParentRunner.access$000(org.junit.runners.ParentRunner, > org.junit.runner.notification.RunNotifier) line: 58 > org.junit.runners.ParentRunner$2.evaluate() line: 268 > org.junit.internal.runners.statements.RunBefores.evaluate() line: 26 > > org.junit.runners.BlockJUnit4ClassRunner(org.junit.runners.ParentRunner).run(org.junit.runner.notification.RunNotifier) > line: 363 > > org.eclipse.jdt.internal.junit4.runner.JUnit4TestMethodReference(org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference).run(org.eclipse.jdt.internal.junit.runner.TestExecution) > line: 50 > > org.eclipse.jdt.internal.junit.runner.TestExecution.run(org.eclipse.jdt.internal.junit.runner.ITestReference[]) > line: 38 > > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(java.lang.String[], > java.lang.String, org.eclipse.jdt.internal.junit.runner.TestExecution) line: > 467 > > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(org.eclipse.jdt.internal.junit.runner.TestExecution) > line: 683 > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run() line: 390 > > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(java.lang.String[]) > line: 197 > > Óscar Bou Bou Responsable de Producto Auditor Jefe de Certificación ISO 27001 en BSI CISA, CRISC, APMG ISO 20000, ITIL-F 902 900 231 / 620 267 520 http://www.twitter.com/oscarbou <http://www.twitter.com/oscarbou> http://es.linkedin.com/in/oscarbou <http://es.linkedin.com/in/oscarbou> http://www.GesConsultor.com <http://www.gesconsultor.com/> Este mensaje y los ficheros anexos son confidenciales. Los mismos contienen información reservada que no puede ser difundida. Si usted ha recibido este correo por error, tenga la amabilidad de eliminarlo de su sistema y avisar al remitente mediante reenvío a su dirección electrónica; no deberá copiar el mensaje ni divulgar su contenido a ninguna persona. Su dirección de correo electrónico junto a sus datos personales constan en un fichero titularidad de Gesdatos Software, S.L. cuya finalidad es la de mantener el contacto con Ud. Si quiere saber de qué información disponemos de Ud., modificarla, y en su caso, cancelarla, puede hacerlo enviando un escrito al efecto, acompañado de una fotocopia de su D.N.I. a la siguiente dirección: Gesdatos Software, S.L. , Paseo de la Castellana, 153 bajo - 28046 (Madrid), y Avda. Cortes Valencianas num. 50, 1ºC - 46015 (Valencia). Asimismo, es su responsabilidad comprobar que este mensaje o sus archivos adjuntos no contengan virus informáticos, y en caso que los tuvieran eliminarlos.