Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2293 connectés 

 


 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  321  322  323  ..  327  328  329  330  331  332
Auteur Sujet :

BlaBlaTech@JAVA [ELITE, viendez les boobs]

n°2196881
fiscalisat​or
tu dois rompre
Posté le 09-07-2013 à 11:58:15  profilanswer
 

Reprise du message précédent :
:hello:
 
question jpa / orm  
 
je suis à la recherche d'un article, ou d'un blog qui exposeraient des pattern pour spécifier proprement les collections lazy que je veux fetcher de ma base  
 
par exemple : j'ai ma classe livre et plusieurs collections 'review/commentaires/dispos/séries/traductions'
 
et suivant certains cas, je veux pas tout retourner, d'autre fois seulement une selection précise de ces catégories  
 
comment vous faites vous ?

mood
Publicité
Posté le 09-07-2013 à 11:58:15  profilanswer
 

n°2196893
LeRiton
Posté le 09-07-2013 à 13:17:15  profilanswer
 

fiscalisator a écrit :

:hello:
 
question jpa / orm  
 
je suis à la recherche d'un article, ou d'un blog qui exposeraient des pattern pour spécifier proprement les collections lazy que je veux fetcher de ma base  
 
par exemple : j'ai ma classe livre et plusieurs collections 'review/commentaires/dispos/séries/traductions'
 
et suivant certains cas, je veux pas tout retourner, d'autre fois seulement une selection précise de ces catégories  
 
comment vous faites vous ?


 
Je suis pas sûr de comprendre ce que tu cherches à faire, mais au cas où, je vois deux possibilités :
- tu restes en lazy et tu retournes au cas par cas (donc tu appliques tes filtres dans l'appli) ;
- pour tes requêtes spécifiques, tu créé des named queries correspondantes (donc c'est la DB qui applique tes filtres).

n°2196915
fiscalisat​or
tu dois rompre
Posté le 09-07-2013 à 14:08:24  profilanswer
 

merci mais c'est effectivement pas mon problème je me suis ma exprimé.
 
les collections de mon entity sont toutes en lazy (j'y peux rien).
je cherche une méthode souple pour ne pas avoir à me taper toutes les méthodes du types :
 
findBookWithReviewWithoutComment
 
je pense pas que ce soit un truc de criteria, je pense surtout que j'ai peu de moyen de le faire tant que tout est en lazy

n°2196918
gizmo
Posté le 09-07-2013 à 14:35:48  profilanswer
 

Euh, et si tu te creais une interface fluent du genre:
findBook().withReview().fetch()

n°2196919
fiscalisat​or
tu dois rompre
Posté le 09-07-2013 à 14:37:33  profilanswer
 

je regarde lambdaj en ce moment en effet
 
 
merci :jap:


Message édité par fiscalisator le 09-07-2013 à 14:38:01
n°2196938
LeRiton
Posté le 09-07-2013 à 15:31:01  profilanswer
 

Puisqu'il y a du monde aujourd'hui, envoyer des mails à partir d'une appli serveur (web), JavaMail ou autre ?
J'ai pour le moment pas besoin d'autre chose que du mail texte et une connexion SMTP (éventuellement sous SSL), mais qui peut le plus...

n°2196942
gizmo
Posté le 09-07-2013 à 15:49:12  profilanswer
 

Ca peut etre une solution deportee? Genre MailChimp? Ou bien c'est avec votre propre SMTP?
Et sinon, avec resource JNDI ou pas?

n°2196943
LeRiton
Posté le 09-07-2013 à 16:06:18  profilanswer
 

gizmo a écrit :

Ca peut etre une solution deportee? Genre MailChimp? Ou bien c'est avec votre propre SMTP?


Pour le moment, je tape sur un SMTP local. A terme, je n'exclue pas les SendGrid and co.
Je ne connaissais pas MailChimp. De ce que j'en comprend, l'API te permet aussi de constituer ton message, c'est pas un simple SMTP provider ?
Si c'est le cas, et au moins dans un premier temps, je souhaite rester sur du relai SMTP, j'ai l'impression de m'enfermer dans une dépendance importante avec une solution comme MailChimp.

gizmo a écrit :

Et sinon, avec resource JNDI ou pas?


Nope.
 
 

n°2196967
TBone
Pouet.
Posté le 09-07-2013 à 19:01:19  profilanswer
 

j'ai un brol qui envoie des mails (texte et html) en supportant les pièces jointes basé sur JavaMail, SMTP local.

 

je ne sais pas si il y a mieux mais c'est simple et il ne m'a jamais fait faux bond sur au moins un bon million de mails envoyés.

Message cité 1 fois
Message édité par TBone le 09-07-2013 à 19:01:35

---------------
A straight line is a special case of a curve. It's a curve which is uncurved. -- Susskind.
n°2196971
LeRiton
Posté le 09-07-2013 à 19:31:49  profilanswer
 

TBone a écrit :

j'ai un brol qui envoie des mails (texte et html) en supportant les pièces jointes basé sur JavaMail, SMTP local.
 
je ne sais pas si il y a mieux mais c'est simple et il ne m'a jamais fait faux bond sur au moins un bon million de mails envoyés.


 
OK, donc solution maison qui s'appuie sur JavaMail.
C'est le genre d'API tellement vieille - j'ai toujours utilisé que ça - qu'un petit tour d'horizon s'impose de temps en temps. Je connais d'ailleurs pas d'autre implem de la 919.

mood
Publicité
Posté le 09-07-2013 à 19:31:49  profilanswer
 

n°2196986
TBone
Pouet.
Posté le 09-07-2013 à 21:37:13  profilanswer
 

ça marche bien et simplement... pourquoi réinventer la roue ;)


---------------
A straight line is a special case of a curve. It's a curve which is uncurved. -- Susskind.
n°2198098
LeRiton
Posté le 19-07-2013 à 14:39:31  profilanswer
 

JPA et collections en Lazy.
 
Si j'initialise ma collection :

Code :
  1. public class Foo {
  2.    ...
  3.    @OneToMany(fetch = FetchType.LAZY)
  4.    private List<Bar> bars = new ArrayList<Bar>();
  5. }


 
pour notamment éviter les NPE ou null check rébarbatifs lorsque je load la collection, oui, non, Obiwan ?
 
Un thread sur SO aborde la question, avec notamment une remarque (la seule, mais également la réponse acceptée et aucune contre argumentation derrière) contre la pratique :

Citation :

We had a serious issue when doing lazy initialization of an entity property using Hibernate, so I would strongly discourage it. The problem we saw was manifest by a save taking place when we were issuing a search request. This is because when the object was loaded the property was null, but when the getter was called it would return the lazy initialized object so hibernate (rightly) considered the object dirty and would save it before issuing the search.


 
Le problème, bien que pertient dans le cas général, ne me parrait pas applicable lorsque le champ en question est une collection. Je me trompe ? Vos avis généraux sur le chargement des collections en lazy ?

n°2198108
LeRiton
Posté le 19-07-2013 à 15:29:16  profilanswer
 

Et pendant que j'y suis, une deuxième, histoire de vous laisser le choix :o
 
J'ai une hiérarchie d'héritage sur des entités, qui peuvent être stockées dans une collection.
 

Code :
  1. public class Foo {
  2.    @OneToMany(targetEntity = Bar.class)
  3.    private List<Baz> bazs;
  4.    @OneToMany(targetEntity = Bar.class)
  5.    private List<Buz> buzs;
  6. }
  7.  
  8. @Inheritance(strategy = InheritanceType.JOINED) // J'ai essayé avec de la STI également
  9. public abstract class Bar {
  10.    // Plein de champs communs à tous les fruits, à commencer par l'ID
  11.    @ManyToOne
  12.    private Foo foo;
  13. }
  14.  
  15. public class Baz extends Bar {
  16.    ...
  17. }
  18.  
  19. public class Buz extends Bar {
  20.    ...
  21. }


 
 
Vous connaissez une méthode pour pouvoir appeler foo.getBuzs() sans avoir l'intégralité des Bar retournés ? Dans les deux cas (STI et JOINED), j'ai toutes les entrées.
Et si dans 'targetEntity, je spécifie les classes concrètes, je me fait jeter, j'imagine à cause de l'absence de la clé foo_id dans la table correspondante, mais je pensais le truc assez intelligent pour aller le piocher dans la classe parente.

n°2198134
fiscalisat​or
tu dois rompre
Posté le 19-07-2013 à 17:10:25  profilanswer
 

LeRiton a écrit :

Et pendant que j'y suis, une deuxième, histoire de vous laisser le choix :o
 
J'ai une hiérarchie d'héritage sur des entités, qui peuvent être stockées dans une collection.
 

Code :
  1. public class Foo {
  2.    @OneToMany(targetEntity = Bar.class)
  3.    private List<Baz> bazs;
  4.    @OneToMany(targetEntity = Bar.class)
  5.    private List<Buz> buzs;
  6. }
  7.  
  8. @Inheritance(strategy = InheritanceType.JOINED) // J'ai essayé avec de la STI également
  9. public abstract class Bar {
  10.    // Plein de champs communs à tous les fruits, à commencer par l'ID
  11.    @ManyToOne
  12.    private Foo foo;
  13. }
  14.  
  15. public class Baz extends Bar {
  16.    ...
  17. }
  18.  
  19. public class Buz extends Bar {
  20.    ...
  21. }


 
 
Vous connaissez une méthode pour pouvoir appeler foo.getBuzs() sans avoir l'intégralité des Bar retournés ? Dans les deux cas (STI et JOINED), j'ai toutes les entrées.
Et si dans 'targetEntity, je spécifie les classes concrètes, je me fait jeter, j'imagine à cause de l'absence de la clé foo_id dans la table correspondante, mais je pensais le truc assez intelligent pour aller le piocher dans la classe parente.


 
 
Perso j'ai une classe AbstractActor
 

Code :
  1. @Entity
  2. @Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
  3. public abstract class AbstractActor extends AbstractAttributeSubject implements
  4.  Actor {
  5. ...  }


 
et plusieurs classes qui en dérivent :  

Code :
  1. @Entity
  2. @Table(name = "Organization" )
  3. public class Organization  extends AbstractActor implements foo.interfaces.actors.Organization{
  4. }
  5. @Entity
  6. @Table(name="Professional" )
  7. public class Professional extends AbstractActor implements foo.interfaces.actors.Professional {
  8. }
  9. ...


 
et ensuite dans une autre classe je me prends plus la tête :  

Code :
  1. @Entity
  2. @Table(name="Relationship" )
  3. public class Relationship extends AbstractAttributeSubject implements
  4.  foo.interfaces.actors.Relationship {
  5. @ManyToOne(targetEntity=AbstractActor.class)
  6. private Actor relatedActor;
  7. @LazyCollection(LazyCollectionOption.FALSE)
  8. @OneToMany(targetEntity=AbstractActor.class, cascade={CascadeType.ALL})
  9. private Set<Actor> actors = new HashSet<Actor>();
  10. }


 
et après je recharge l'entity suivant sa nature que ce soit un professional ou un une org, mais tu peux séparer professionnal et org directement
 
 
edit :  
sinon si tu tiens à garder ton JOINED ou STI, tu fais par exemple pour la requête retournant des Baz

Code :
  1. SELECT b FROM Bar b WHERE TYPE(b) = Baz

 
 
mais j'aime pas :o

Message cité 1 fois
Message édité par fiscalisator le 19-07-2013 à 17:27:59
n°2198151
LeRiton
Posté le 19-07-2013 à 17:52:25  profilanswer
 

fiscalisator a écrit :


 
 
Perso j'ai une classe AbstractActor
 

Code :
  1. @Entity
  2. @Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
  3. public abstract class AbstractActor extends AbstractAttributeSubject implements
  4.  Actor {
  5. ...  }


 
et plusieurs classes qui en dérivent :  

Code :
  1. @Entity
  2. @Table(name = "Organization" )
  3. public class Organization  extends AbstractActor implements foo.interfaces.actors.Organization{
  4. }
  5. @Entity
  6. @Table(name="Professional" )
  7. public class Professional extends AbstractActor implements foo.interfaces.actors.Professional {
  8. }
  9. ...


 
et ensuite dans une autre classe je me prends plus la tête :  

Code :
  1. @Entity
  2. @Table(name="Relationship" )
  3. public class Relationship extends AbstractAttributeSubject implements
  4.  foo.interfaces.actors.Relationship {
  5. @ManyToOne(targetEntity=AbstractActor.class)
  6. private Actor relatedActor;
  7. @LazyCollection(LazyCollectionOption.FALSE)
  8. @OneToMany(targetEntity=AbstractActor.class, cascade={CascadeType.ALL})
  9. private Set<Actor> actors = new HashSet<Actor>();
  10. }


 
et après je recharge l'entity suivant sa nature que ce soit un professional ou un une org, mais tu peux séparer professionnal et org directement
 
 
edit :  
sinon si tu tiens à garder ton JOINED ou STI, tu fais par exemple pour la requête retournant des Baz

Code :
  1. SELECT b FROM Bar b WHERE TYPE(b) = Baz

 
 
mais j'aime pas :o


 
Oui, je vois le principe mais tu te doutes bien, je partais sur STI ou JOINED pour éviter les réplications de colonnes dans les tables.
 
Pour le select, oui :o Sauf qu'effectivement, je trouve ça plus joli de ne passer que par mon bean, plutôt qu'un appel sur DAO.

n°2198267
LeRiton
Posté le 22-07-2013 à 10:59:36  profilanswer
 

Pour ceux qui l'auraient oublié ce week-end, deux questions comme on en voit trop peu :o

LeRiton a écrit :

Une SUPERBE question sur l'initialisation de collections lazy en JPA, avec du pour, du contre, un thread sur SO et des jeeps \o/


(pas spécialement critique, mais avoir vos avis là dessus me permettrait de passer au stade supérieur de la sérénité)

LeRiton a écrit :

Un MAGNIFIQUE dilemme technique sur l'utilisation d'héritage d'entités, toujours en JPA et où l'on veut conserver une base normalisée tout en profitant de l'expressivité (huhuhu) de JPA (également une course poursuite !).


(ça me les brise un peu plus, j'ai pas envie de faire le choix entre une base dégueu et une couche d'accès aux données dégueu)

n°2198445
LeRiton
Posté le 23-07-2013 à 11:50:15  profilanswer
 

LeRiton a écrit :

Un MAGNIFIQUE dilemme technique sur l'utilisation d'héritage d'entités, toujours en JPA et où l'on veut conserver une base normalisée tout en profitant de l'expressivité (huhuhu) de JPA (également une course poursuite !).


 
Trouvé une méthode, au cas où ça serve à d'autre. On part du principe que l'on fait de la STI dans notre cas.
La première étape est de dire à Hibernate de bien prendre en compte le type concret de la classe demandée lors du repéchage de la collection, c.-à-d.
 

Code :
  1. List<Bar extends Foo> bars;
  2. getBars() // Renvoi bien la liste des Bar, et non pas l'intégralité des Foo


 
Ça revient à ce que l'implémentaton JPA ajoute bien au select un WHERE type = Bar, ce qui n'est pas réalisé par défaut. Il n'existe pas de solution pur JPA, j'ai trouvé ça dans le cas d'Hibernate. On utilise @DiscriminatorOptions(force = true) (anciennement @ForceDiscriminator) sur la classe englobante, et ça roule, le WHERE prend en compte le type de classe concrète demandée. Vous trouverez un peu plus de détail ici : http://www.gmarwaha.com/blog/2009/ [...] riminator/
 
Ce n'est cependant pas terminé. Dans mon cas  
 

Code :
  1. public class User {
  2.    @OneToMany(mappedBy = "user", targetEntity = Alert.class}
  3.    private List<Alert> alerts;
  4. }
  5.  
  6. @Inheritance(strategy = InheritanceType.SINGLE_TABLE)
  7. @DiscriminatorColumn(name = "type" )
  8. @DiscriminatorOptions(force = true)
  9. public abstract Event {
  10.    private User user;
  11. }
  12.  
  13. @DiscriminatorValue("ALERT" )
  14. public class Alert extends Event {
  15. }


 
Le champ utilisé comme référence entre Alert et User est déclaré dans le supertype. Apparamment, Hibernate ne sait pas s'en débrouiller, une solution est de déplacer la clé dans une classe - abstraite ou non - qui s'intercale ici entre Event et Alert, annotée avec @MappedSuperclass :  
 

Code :
  1. public class User {
  2.    @OneToMany(mappedBy = "user", targetEntity = Alert.class}
  3.    private List<Alert> alerts;
  4. }
  5.  
  6. @Inheritance(strategy = InheritanceType.SINGLE_TABLE)
  7. @DiscriminatorColumn(name = "type" )
  8. @DiscriminatorOptions(force = true)
  9. public abstract Event {
  10. }
  11.  
  12. @MappedSuperclass
  13. public abstract UserEvent extends Event {
  14.    private User user;
  15. }
  16.  
  17. @DiscriminatorValue("ALERT" )
  18. public class Alert extends UserEvent {
  19. }


 
Et, jusqu'ici, on est bon ! C'était pourtant simple  [:papa titus:4]

n°2198992
LeRiton
Posté le 29-07-2013 à 18:08:28  profilanswer
 

En EJB 3.0, vous connaissez un moyen portable / générique de faire du lookup JNDI (hors module Spring, un truc dans le JDK quoi) ? Appli EJB 3.0 sur un application server tout vieux (JBoss 5.1), client Java.
 
En plus de me contraindre à embarquer une context factory spécifique au runtime, le Jar de dépendances client JBoss est immonde, embarque quasiment tout le serveur d'application. Je peux toujours jouer sur un Jar purgé, des exclusions ou autres trucs crados, mais au cas où il y aurait une solution propre...

n°2199155
LeRiton
Posté le 31-07-2013 à 20:25:31  profilanswer
 

gizmo a écrit :

On n'utilise ça: http://www.mindrot.org/projects/jBCrypt/ (qui existe aussi dans spring security, si tu l'utilises dans ton projet).


 
Fun fact: sur une SheevaPlug, la génération / comparaison de mot de passe avec le nombre d'itérations le plus bas prend 16s  [:manust]  
Je sais bien que c'est justement le but, mais je me suis demandé pendant 10 bonnes minutes pourquoi ça ramait autant après déploiement.
 

n°2199743
the real m​oins moins
Posté le 08-08-2013 à 18:21:44  profilanswer
 

Mais putain!? Les annotations peuvent être "inheritées" sur les classes/sous-classes, mais pas sur les interfaces implementées ? wtf ?
 

Code :
  1. import java.lang.annotation.ElementType;
  2. import java.lang.annotation.Inherited;
  3. import java.lang.annotation.Retention;
  4. import java.lang.annotation.RetentionPolicy;
  5. import java.lang.annotation.Target;
  6. public class AnnotMess {
  7.     @Retention(RetentionPolicy.RUNTIME)
  8.     @Target(ElementType.TYPE)    @Inherited
  9.     public static @interface MyAnnot {}
  10.     @MyAnnot()
  11.     public static class A {}
  12.     public static class B extends A {}
  13.     @MyAnnot()
  14.     public static interface  I {}
  15.     public static class C implements I {}
  16.     public static void main(String[] args) {
  17.         System.out.println("Tout va bien, l'annot est trouvée:" );
  18.         System.out.println("new A().getClass().getAnnotation(MyAnnot.class): " + new A().getClass().getAnnotation(MyAnnot.class));
  19.         System.out.println("new B().getClass().getAnnotation(MyAnnot.class): " + new B().getClass().getAnnotation(MyAnnot.class));
  20.         System.out.println();
  21.         System.out.println("Now WTF?" );
  22.         final I anon = new I() {
  23.         };
  24.         System.out.println("anon.getClass().getAnnotation(MyAnnot.class): " + anon.getClass().getAnnotation(MyAnnot.class));
  25.         System.out.println("new C().getClass().getAnnotation(MyAnnot.class): " + new C().getClass().getAnnotation(MyAnnot.class));
  26.     }
  27. }


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°2199747
LeRiton
Posté le 08-08-2013 à 19:06:01  profilanswer
 

J'ai googlé pour avoir le détail, le premier résultat est pas mal : http://stackoverflow.com/a/4745820

 

Et réponse suivante pour la spec.

 

/TIL

 

Edit : c'était quoi le besoin ?


Message édité par LeRiton le 08-08-2013 à 19:10:18
n°2199759
the real m​oins moins
Posté le 09-08-2013 à 00:42:31  profilanswer
 

Jai effectivement vu cette réponse, et ça tient la route, mais ça fait chier, dans la mesure ou mon annotation n'a pas de paramètres. Pis l'API est relativement moisir. Enfin, disons plutôt inexistante. Du coup faut se taper l'itération "à la main" dans les super classes et interfaces, et à priori la seule lib "util" qui tienne la route est dans spring. Donc monolithique, donc non merci. Tout ce que j'ai trouvé d'autre c'est des bouts de code à copier-coller. J'ai pas encore regardé les commons-lang récent mais j'ai des à priori sur les versions up to 2.x; j'espérais trouver qqch dans guava mais non.  


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°2199854
gizmo
Posté le 09-08-2013 à 22:40:36  profilanswer
 

Et ça (pas encore testé), ça ne t'irait pas? https://code.google.com/p/reflections/

n°2199857
the real m​oins moins
Posté le 09-08-2013 à 23:43:35  profilanswer
 

tiens, j'y ai pas pensé. J'avais vu cette lib quand j'avais besoin de "chercher" des classes annotées. Le projet à été mis de coté et j'ai oublié la lib; effectivement y'a ptet des choses à y réutiliser sans pour autant passer par le "scanner". Cela dit entre temps j'ai piqué un bout de code qui a l'air de marcher pour mon utilisation, et j'ai buté dans d'autres problèmes avec mon idée qui font que je vais ptet devoir oublier l'annotation et repasser par une interface...
Je serais presque tenter de "tricher" et injecter l'interface via un proxy ...après tout, ça serait une interface avec une seule methode, et utilisée uniquement par le biniou qui processe l'annotation (au runtime).
 
... Biniou qui, d'ailleurs, va possiblement etre un module guice, qui va proxifier les objets annotés en question ...
http://8tracks.imgix.net/i/000/406/148/c/fire_voodoo-8965.jpg?fm=jpg&q=65&fit=max&w=250&h=250&fit=max


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°2200195
the real m​oins moins
Posté le 16-08-2013 à 17:59:30  profilanswer
 

Je sens que la réponse va me passer au dessus de la tête, mais qqun pourrait expliquer pourquoi je dois caster ici:

Code :
  1. public static <T> void blah(T t) {
  2.         final Class<T> aClass = t.getClass();


et pas la:

Code :
  1. Number n = 0;
  2.         Class<? extends Number> c = n.getClass();



---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°2200201
fiscalisat​or
tu dois rompre
Posté le 16-08-2013 à 20:52:31  profilanswer
 

Sur le 1 : je dirais que c'est purement du runtime, et que ton compilo n'a aucun moyen de savoir que le cast est inutile.
 
Sur le 2 : t'as une vérif at compile time que n hérite au moins de Number
 
edit; je pense que le vin ne m'attends pas trop : http://en.wikipedia.org/wiki/Generics_in_Java generics en java c'est des vérifs compile time.
 
Après pendant un temps y avait des gars qui voulait plus de souplesse.
Je sais pas où ça en est.


Message édité par fiscalisator le 16-08-2013 à 20:56:43
n°2200218
the real m​oins moins
Posté le 17-08-2013 à 13:11:50  profilanswer
 

J'ai trouvé, mais c'est pas évident à taper sur mobile donc ça sera pour une autre fois;)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°2200324
the real m​oins moins
Posté le 20-08-2013 à 00:50:55  profilanswer
 

Bon y'a rien pour proxifier du bordel dans Guice ? C'est quoi que je vois pas là ?
(je veux proxifier toute classe marquée par une annotation)
(et les MethodInterceptor me suffisent pas)
(je fais un topo demain si y'a des curieux, mais surtout si y'a des pistes)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°2200325
souk
Tourist
Posté le 20-08-2013 à 01:14:52  profilanswer
 

the real moins moins a écrit :

Bon y'a rien pour proxifier du bordel dans Guice ? C'est quoi que je vois pas là ?
(je veux proxifier toute classe marquée par une annotation)
(et les MethodInterceptor me suffisent pas)
(je fais un topo demain si y'a des curieux, mais surtout si y'a des pistes)


bah si, pourquoi le method interceptor te convient pas ?

n°2200331
the real m​oins moins
Posté le 20-08-2013 à 08:08:32  profilanswer
 

Paske :o

 

On dirait - mais je suis pas sur à 100%, parce que le cambouis est quand même bien épais la dedans - qu'ils peuvent pas être interdépendants. Le weaving se fait au démarrage, les proxys incomplets créés par le premier sont jamais passés au second et vice-versa. Pas évident à expliquer, encore moins sous mobile, et franchement j'ai pas super envie de passer mon temps a extraire un example.
Détail pas insignifiant, je peux pas faire de binding sur un type.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°2200332
LeRiton
Posté le 20-08-2013 à 08:41:34  profilanswer
 

the real moins moins a écrit :

Bon y'a rien pour proxifier du bordel dans Guice ? C'est quoi que je vois pas là ?
(je veux proxifier toute classe marquée par une annotation)
(et les MethodInterceptor me suffisent pas)
(je fais un topo demain si y'a des curieux, mais surtout si y'a des pistes)


 
Si la question est de créer le proxy sans avoir à gérer le loading des classes annotées et si Guice intègre Guava, t'as Reflection.newProxy().

n°2200333
the real m​oins moins
Posté le 20-08-2013 à 08:53:30  profilanswer
 

Nope, mais je vais voir ça qd mm
Edit: ouais non créer un proxy ça va je sais faire:D c'est dire à guice de le faire (ou de wrapper une instance) que je sais pas


Message édité par the real moins moins le 20-08-2013 à 09:23:25

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°2200335
souk
Tourist
Posté le 20-08-2013 à 09:21:49  profilanswer
 

tu veux proxifier des methodes privees ? si oui tu vas en effect avoir des problemes parce que Guice genere des sous classes au runtime. (idem si tes classes ou methodes sont final, ca va pas passer, pour ce genre de choses il te faut du bytecode injection et le java agent qui va bien, donc aspectj et consort)

n°2200337
the real m​oins moins
Posté le 20-08-2013 à 09:24:55  profilanswer
 

souk a écrit :

tu veux proxifier des methodes privees ?


Noooon.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°2200554
LeRiton
Posté le 22-08-2013 à 13:34:28  profilanswer
 

Cette semaine, j'ai fait du bit-shifting, de la reflection sur generics, un peu d'AOP et du cache : résultat, le truc qui m'a le plus emmerdé - et pas qu'une fois - c'est l'impossibilité d'avoir des méthodes ou champs statiques et abstraits  [:k o k i a:3]  
 
/my-blog

n°2200586
the real m​oins moins
Posté le 22-08-2013 à 17:12:05  profilanswer
 

Aop avec quoi? J'en chie tjs avec mes proxy moi grrr


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°2200587
LeRiton
Posté le 22-08-2013 à 17:43:28  profilanswer
 

Une maquette avec Spring AOP malheureusement. Si j'avais plus de temps et si une réécriture complète devait être faite, je serais parti sur Guice, que je n'ai pas encore testé.
 
C'est pour une API qui mappe une norme et que les équipements interfacés n'implémentent pas tous au même degré.

n°2200591
souk
Tourist
Posté le 22-08-2013 à 18:54:32  profilanswer
 

LeRiton a écrit :

méthodes ou champs statiques et abstraits  [:k o k i a:3]


 :heink:  
je serai curieux de voir ton use case parce que ca n'a pas grand sens

n°2200599
LeRiton
Posté le 22-08-2013 à 20:20:47  profilanswer
 

souk a écrit :


 :heink:  
je serai curieux de voir ton use case parce que ca n'a pas grand sens


 
Y'a peut-être du design flaw, mais pour cette API particulière, je me suis retrouvé coincé relativement souvent.
Par exemple garantir que les implem de Foo ont toutes une factory method avec la même signature, définissent toutes le même champ statique...

n°2200606
souk
Tourist
Posté le 22-08-2013 à 20:55:01  profilanswer
 

mais tu pas les invoquer de facon polymorphique, donc ca ne presente aucun interet, a moins que tu utilises la reflection, auquel cas, ouais mauvais design, clairement

n°2200612
the real m​oins moins
Posté le 22-08-2013 à 22:49:57  profilanswer
 

Putain on sent le mec qui bosse chez Google hein :o pour guice si ct à refaire j'éviterais. Trop rigide, et imbitable quand faut rentrer dans le cambouis. Soit je repartirais chez mes vieux potes de picocontainer soit je jetterais un œil sur les nouveaux venus (celui de chez square leadé par crazybob, donc, et un autre dont le nom m'échappe la)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  321  322  323  ..  327  328  329  330  331  332

Aller à :
Ajouter une réponse
 

Sujets relatifs
[java]Ouvrir un fichier dans la fenetre principaleformation pour developpeurs Java
crontab : programme java[JAVA] Aide pour packager un jar
[java] copie de fichier et progressbarinstallation java
[JAVA]Comment insérer un texte dans un fichier audio?[JAVA] Intégrer ANT : API ou ligne de commande ?
[Java][Bouley]Serializable : mauvaise instanciation des champs[JAVA : JNI] Pb a l'execution avec library
Plus de sujets relatifs à : BlaBlaTech@JAVA [ELITE, viendez les boobs]


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)