| 

.NET C# Java Javascript Exception

Re: Meta Object Protocol

Dies ist das Archiv des ehemaligen Forums zum Thema Groovy, Grails, Griffon und Bean Scripting Framework, welches unter groovy-forum.de existierte. Die neue Adresse des Groovy-Forums ist: http://codekicker.de/fragen/themen/groovy.


Re: Meta Object Protocol

manfred - 14.03.2010 13:48
Wie Christian bereits meinte, ist das MOP eigentlich nur für interne Groovy Zwecke um eben die Dynamik in eine vom statischen Java abgeleitete Sprache zu bekommen.
Schau Dir doch mal die Groovy API docs dazu an, vielleicht wirds dann klarer:
[groovy.codehaus.org]

Gruss,
Manfred


Re: Meta Object Protocol

christian - 15.03.2010 13:35
... stimmt auch wieder. Aber Magie kann sehr unterschiedlich gut gekapselt sein und da erscheint mir die Magie der JVM wesentlich transparenter als das MOP.

Gruß
Christian


Re: Meta Object Protocol

saurier - 16.03.2010 19:25
Hallo MüLi!

Wenn du es ganz genau wissen willst, würde ich einen Blick in den Grails-Source-Code empfehlen. Hier mal
ein kleiner Ausschnitt als Anhaltspunkt - das ist allerdings noch Grails 1.0.2, also uralt...

/* Ausschnitt aus: org.codehaus.groovy.grails.plugins.orm.hibernate.HibernateGrailsPlugin.groovy */
        // This is the code that deals with dynamic finders. It looks up a static method, if it exists it invokes it
        // otherwise it trys to match the method invocation to one of the dynamic methods. If it matches it will
        // register a new method with the ExpandoMetaClass so the next time it is invoked it doesn't have this overhead.
        mc.'static'.methodMissing = {String methodName, args ->
            def result = null
            StaticMethodInvocation method = dynamicMethods.find {it.isMethodMatch(methodName)}
            if (method) {
                // register the method invocation for next time
                synchronized(this) {
                    mc.'static'."$methodName" = {List varArgs ->
                        method.invoke(dc.clazz, methodName, varArgs)
                    }
                }
                result = method.invoke(dc.clazz, methodName, args)
            }
            else {
                throw new MissingMethodException(methodName, delegate, args)
            }
            result
        }

Gruß, Christian


Stelle deine Groovy-Frage jetzt!


Diese Seite zeigt den Thread "Re: Meta Object Protocol" der ehemaligen Webseite groovy-forum.de, welche durch einen Serverunfall zerstört wurde. codekicker.de hat viele Konversationen über die beliebte Programmiersprache Groovy und zugehörige Frameworks wie das Grails-Framework retten können.

Hast Du eine Frage zum Thema Groovy, Grails oder allgemein Java? Viele ehemalige groovy-forum.de Mitglieder beantworten dir auf codekicker.de deine Frage! Stelle jetzt eine Frage!

Viele weitere Diskussionen zu Grails und Groovy befinden sich auf der Threadübersicht des alten groovy-forum.de.