Internett: www.wis.no E-post: wis@wis.no
Tlf: 7245 0190 Fax: 7245 0191

Startsiden | Produkter | Drift | Markedsføring | Ta kontakt | Gå til
Søk:
Logg innLogg inn 

WIS blogg


BeanModel generering med AutoBean støtte
Av: Stig Runar Vangen Mandag 07.02.2011 (15:11)

Vi har i det siste jobbet med å konvertere vår under utvikling webapplikasjon fra å bruke GWT-RPC til å bruke RequestFactory. I denne sammenhgen fant vi ut at ExtGWT 2 sin BeanModelGenerator ikke er i stand til å lese getters fra proxy interface. Denne generatoren skal fikse dette problemet.

package com.wis.wisweb2.intra.core.rebind;

import java.util.List;

import com.extjs.gxt.ui.rebind.core.BeanModelGenerator;
import com.google.gwt.core.ext.typeinfo.JClassType;
import com.google.gwt.core.ext.typeinfo.JMethod;
import com.google.gwt.requestfactory.shared.BaseProxy;

/**
 * BeanModel generator with support for GWT AutoBeans.
 * 
 * @author Stig Runar Vangen
 */
public class AutoBeanBeanModelGenerator extends BeanModelGenerator {

    @Override
    protected final void addGetters(final JClassType cls,
            final List methods) {
        // Ignore methods of Object
        if (cls.getSuperclass() != null) {
            addGetters(cls.getSuperclass(), methods);
            addClassGetters(cls, methods);
        }

        if (isAutoBean(cls)) {
            addClassGetters(cls, methods);
        }
    }

    /**
     * @param cls
     *            class to test
     * @return true if given class qualify for AutoBean generation
     */
    private boolean isAutoBean(final JClassType cls) {
        if (cls.getQualifiedSourceName().equals(BaseProxy.class.getName())) {
            return true;
        }

        for (JClassType classType : cls.getImplementedInterfaces()) {
            return isAutoBean(classType);
        }

        return false;
    }

    private void addClassGetters(final JClassType cls,
            final List methods) {
        for (JMethod m : cls.getMethods()) {
            if (m.isPublic() || m.isProtected()) {
                String name = m.getName();
                if ((name.matches("get.*") || name.matches("is.*"))
                        && m.getParameters().length == 0) {
                    methods.add(m);
                }
            }
        }
    }
}

Du må også definere denne generatoren for bruk i din GWT modul definisjonsfil.

    <!-- BeanModel for AutoBean -->
    <generate-with class="com.wis.wisweb2.intra.core.rebind.AutoBeanBeanModelGenerator">
        <when-type-assignable class="com.extjs.gxt.ui.client.data.BeanModelLookup" />
    </generate-with>

Denne definisjonen burde overstyre generatoren fra ExtGWT pakken.

--Emner: Java, Web 2.0, WisWeb 2
Kommentarer: 0


 
 Nye poster
Fixing missing (30.05.2012)
Redirect dll us (30.05.2012)
Laste ned passo (11.05.2012)
Bare si "Nei ti (12.12.2011)
Posten er slett (16.11.2011)
 Søk
 
 Populære emner
Access  Ajax  Ansatte  Brannmur  Database/SQL  Debugging  Delphi  FortiClient  Fortigate  GSI  Hjemmet  Html  Internett  iPhone  iPhone Apps  Java  JavaScript  JVM  Nerdehumor  Nettverk  Operativsystem  Palm  Servere  Skrivere  Sybase  Utvikling  VBA  Vista  VPN  Web 2.0  Windows  WinXP  WIS  Wis Tiltak  WisWeb 1  WisWeb 2  Word  XML
 Vis måned
Mai 2012 (3)
Desember 2011 (1)
November 2011 (1)
September 2011 (2)
August 2011 (1)
 Vis fra forfatter
Ove Halseth (46)
Dag Waade (9)
Stig Runar Vangen (7)
Svein Waade (6)
Inge Valaas (1)
Inger Berg (1)
Kristian Ljøkelsøy Vitsø (1)