2011-08-08 3 views
0

Voici mes classes de domaineRequestFactory avec valueType interfaces/classes abstraites

class Person { 
    String getName(); 
    Vehicle getVehicle(); 
} 

interface Vehicle { 
    String getCompanyName(); 
    String getRegNo(); 
    Point getParkingSpaceRequired(); 
} 

abstract class AbstractVehicle { 
} 

class Motorcycle extends AbstractVehicle { 
} 

class Car extends AbstractVehicle { 
} 

Création PersonProxy comme EntityProxy était simple, et fonctionne très bien pour person.getName()

J'ai créé VehicleProxy comme ValueProxy et a appelé le feu() avec .avec ('véhicule') Mais j'obtiens l'erreur:

le type de domaine com .... AbstractVehicle $$ $$ EnhancerByCGLIB e86549b9 ne peut pas être envoyé au client.

Sur PersonProxy j'ai eu @ProxyFor (valeur = Person.class, localisateur = PersonLocator.class)
Sur VehicleProxy je suis arrivé @ProxyFor (valeur = Vehicle.class)

donc, Comment gérer une telle héritage dans RequestFactory?
Dois-je remplacer Vehicle par EntityProxy par ValueProxy?
Alors Comment implémenter les méthodes de VehicleLocator?

Répondre

0

Vous devez écrire des interfaces proxy pour Motorocycle et Car au lieu de l'interface proxy pour l'interface Vehicle. Je n'ai jamais utilisé les interfaces proxy requestfactory pour les interfaces (pas les classes), et à mon avis, c'est la raison pour laquelle vous obtenez cette exception.

[EDIT]
Dans ce cas, comme ci-dessus, vous devrez déplacer l'interface Vehicle à l'ensemble shared de sorte que le serveur et le site client verrait. C'est une solution très courante dans le cas d'enums - les classes de domaine ont une certaine propriété enum et l'interface proxy doit aussi contenir des accesseurs pour cette propriété.

Autre solution (qui je pense peut ne pas fonctionner) est d'écrire interface proxy pour l'interface Vehicle et vos interfaces proxy pour Motorocycle et Car devrait l'étendre.

+0

Alors, que devrait-on retourner de getVehicle() de PersonProxy? Véhicule? et MotorcycleProxy devrait étendre l'interface du véhicule? ou je devrais avoir VehicleProxy? – Nachiket

+0

Droit, j'ai raté cette partie - désolé. S'il vous plaît jeter un oeil à mes modifications. –