You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@groovy.apache.org by "ocs@ocs.cz" <oc...@ocs.cz> on 2016/09/20 19:44:30 UTC

dispatched can't find a method, offers the very same one?!?

Hello there,

does anybody understand how the following code:

===
package cz.ocs.model
class DatabaseContextDelegate extends ERXDatabaseContextDelegate {
    NSDictionary databaseContextShouldUpdateCurrentSnapshot(EODatabaseContext dbCtxt, NSDictionary dic, NSDictionary dic2, EOGlobalID gid, EODatabaseChannel dbChannel) {
      for (def cl=dic.getClass();cl;cl=cl.getSuperclass()) println "DIC inheritance: $cl"
      for (def cl=gid.getClass();cl;cl=cl.getSuperclass()) println "GID inheritance: $cl"
      def nd=super.databaseContextShouldUpdateCurrentSnapshot(dbCtxt,dic,dic2,gid,dbChannel) // this is line 57
      ...
===

could yield the result of

===
DIC inheritance: class com.webobjects.eocontrol._EOMutableKnownKeyDictionary
DIC inheritance: class com.webobjects.foundation.NSMutableDictionary
DIC inheritance: class com.webobjects.foundation.NSDictionary
DIC inheritance: class java.lang.Object
GID inheritance: class com.webobjects.eocontrol._EOIntegralKeyGlobalID
GID inheritance: class com.webobjects.eocontrol.EOKeyGlobalID
GID inheritance: class com.webobjects.eocontrol.EOGlobalID
GID inheritance: class java.lang.Object

groovy.lang.MissingMethodException: No signature of method: cz.ocs.model.DatabaseContextDelegate.databaseContextShouldUpdateCurrentSnapshot() is applicable for argument types: (com.webobjects.eoaccess.EODatabaseContext, com.webobjects.eocontrol._EOMutableKnownKeyDictionary, com.webobjects.eocontrol._EOMutableKnownKeyDictionary, com.webobjects.eocontrol._EOIntegralKeyGlobalID, com.webobjects.eoaccess.EODatabaseChannel) values: [com.webobjects.eoaccess.EODatabaseContext@22680f52, [creator_id:<com.webobjects.foundation.NSKeyValueCoding$Null>, ...], ...]
Possible solutions: databaseContextShouldUpdateCurrentSnapshot(com.webobjects.eoaccess.EODatabaseContext, com.webobjects.foundation.NSDictionary, com.webobjects.foundation.NSDictionary, com.webobjects.eocontrol.EOGlobalID, com.webobjects.eoaccess.EODatabaseChannel)
	at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:58)
	at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuperN(ScriptBytecodeAdapter.java:134)
	at cz.ocs.model.DatabaseContextDelegate.databaseContextShouldUpdateCurrentSnapshot(DatabaseContextDelegate.groovy:57)
...
===

? I must say I am sort of outta ideas, for

(a) I can't see why no signature of “cz.ocs.model.DatabaseContextDelegate.databaseContextShouldUpdateCurrentSnapshot” -- it should be searched for in the superclass (“ERXDatabaseContextDelegate”), should it not?

(b) how on earth can it complain that the method does not exist and at the same moment as a possible solution offer it, with a proper signature (this is why I log out those inheritances to be sure)?

Thanks,
OC