IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Boot Java Discussion :

(Spring Boot) UnsatisfiedDependencyException : Error creating bean with name


Sujet :

Spring Boot Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 12
    Points : 19
    Points
    19
    Par défaut (Spring Boot) UnsatisfiedDependencyException : Error creating bean with name
    Bonjour tout le monde,
    Je travaille sur une application avec Spring Boot mais j'ai quelques soucis et je souhaiterai avoir voir aide.

    Voici mon bean Operation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    package com.niit.jonaheta.entities;
     
    import java.io.Serializable;
    import java.util.Date;
     
    import javax.persistence.DiscriminatorColumn;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.Inheritance;
    import javax.persistence.InheritanceType;
    import javax.persistence.JoinColumn;
    import javax.persistence.ManyToOne;
     
    import com.fasterxml.jackson.annotation.JsonFormat;
     
    @Entity
    @Inheritance(strategy = InheritanceType.SINGLE_TABLE)
    @DiscriminatorColumn(name = "TYPE_OPERATION", length = 10)
    public class Operation implements Serializable
    { 
    	static final long serialVersionUID = 1L;
    	@Id
    	@GeneratedValue(strategy = GenerationType.IDENTITY)
    	private Long numeroOperation;
    	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    	private Date dateOperation;
    	private double montant;
    	@ManyToOne
    	@JoinColumn(name = "codeEmployer")
    	private Employer employer;
    	@ManyToOne
    	@JoinColumn(name = "codeCompte")
    	private Compte compte;
     
    	public Operation() 
    	{
    		super();
    	}
     
    	public Operation(Date dateOperation, double montant) 
    	{
    		super();
    		this.dateOperation = dateOperation;
    		this.montant = montant;
    	}
     
    	public Long getNumeroOperation()
    	{
    		return numeroOperation;
    	}
     
    	public void setNumeroOperation(Long numeroOperation) 
    	{
    		this.numeroOperation = numeroOperation;
    	}
     
    	public Date getDateOperation() 
    	{
    		return dateOperation;
    	}
     
    	public void setDateOperation(Date dateOperation) 
    	{
    		this.dateOperation = dateOperation;
    	}
     
    	public double getMontant() 
    	{
    		return montant;
    	}
     
    	public void setMontant(double montant)
    	{
    		this.montant = montant;
    	}
     
    	public Employer getEmployer()
    	{
    		return employer;
    	}
     
    	public void setEmployer(Employer employer) 
    	{
    		this.employer = employer;
    	}
     
    	public Compte getCompte() 
    	{
    		return compte;
    	}
     
    	public void setCompte(Compte compte) 
    	{
    		this.compte = compte;
    	}
    }
    Voici l'interface Dao associé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    package com.greensoft.jonaheta.Dao;
     
    import org.springframework.data.couchbase.core.query.Query;
    import org.springframework.data.domain.Page;
    import org.springframework.data.domain.Pageable;
    import org.springframework.data.jpa.repository.JpaRepository;
    import org.springframework.data.repository.query.Param;
     
    import com.niit.jonaheta.entities.Operation;
     
    public interface OperationRepository extends JpaRepository<Operation, Long> 
    {
    	@Query("Select green from Operation green where green.compte.codeCompte =:Y")
    	public Page<Operation> getOperationsParCompte(@Param("Y") String codeCompte,Pageable pageable);
    }

    Et là on a l'interface metier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    package com.greensoft.jonaheta.Metier;
     
    public interface OperationMetier 
    {
    	public boolean verser(String codeCompte, double montantOperation, Long codeEmployer);
    	public boolean retirer(String codeCompte, double montantOperation, Long codeEmployer);
    	public boolean virement(String codeCompte1, String codeCompte2, double montantOperation, Long codeEmployer);
    	public PageOperations getOperations(String codeCompte,int page,int size);
    }
    Et l'implémentation de cette interface (Je donne juste la fonction concernée):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    @Override
    	@Transactional
    	public PageOperations getOperations(String codeCompte, int page, int size) 
    	{
    		Page<Operation> operations = operationRepository.getOperationsParCompte(codeCompte, new PageRequest(page, size));
    		PageOperations pageOperations = new PageOperations();
    		pageOperations.setOperations(operations.getContent());
    		pageOperations.setNombreOperations(operations.getNumberOfElements());
    		pageOperations.setNumeroPage(operations.getNumber());
    		pageOperations.setTotalPages(operations.getTotalPages());
     
    		return pageOperations;
    	}
    Et finalement le service associé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
           @Autowired
    	private OperationMetier operationMetier;
     
    	@RequestMapping(value = "/operations", method = RequestMethod.GET)
    	@ResponseBody
    	public PageOperations getOperations(@RequestParam(value = "codeCompte", required = true) String codeCompte, @RequestParam(value = "page", required = true) int        page,@RequestParam(value = "size", required = true) int size) 
    	{
    		return operationMetier.getOperations(codeCompte, page, size);
    	}


    Maintenant après exécution j'obtiens comme erreur ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'operationMetierImpl': Unsatisfied dependency expressed through field 'operationRepository'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'operationRepository': Invocation of init method failed; nested exception is org.springframework.data.mapping.PropertyReferenceException: No property getOperationsParCompte found for type Operation!
    	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:569) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
    	at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
    	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:349) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1219) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
    	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
    	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
    	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
    	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
    	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:751) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
    	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:861) ~[spring-context-4.3.3.RELEASE.jar:4.3.3.RELEASE]
    	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541) ~[spring-context-4.3.3.RELEASE.jar:4.3.3.RELEASE]
    	at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) ~[spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
    	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:761) [spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
    	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:371) [spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
    	at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) [spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
    	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1186) [spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
    	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1175) [spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
    	at com.greensoft.jonaheta.JonahetaApplication.main(JonahetaApplication.java:11) [classes/:na]
    Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'operationRepository': Invocation of init method failed; nested exception is org.springframework.data.mapping.PropertyReferenceException: No property getOperationsParCompte found for type Operation!
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1583) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
    	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
    	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
    	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
    	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
    	at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:207) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
    	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1128) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
    	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1056) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
    	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:566) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
    	... 19 common frames omitted
    Caused by: org.springframework.data.mapping.PropertyReferenceException: No property getOperationsParCompte found for type Operation!
    	at org.springframework.data.mapping.PropertyPath.<init>(PropertyPath.java:77) ~[spring-data-commons-1.12.3.RELEASE.jar:na]
    	at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:329) ~[spring-data-commons-1.12.3.RELEASE.jar:na]
    	at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:309) ~[spring-data-commons-1.12.3.RELEASE.jar:na]
    	at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:272) ~[spring-data-commons-1.12.3.RELEASE.jar:na]
    	at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:243) ~[spring-data-commons-1.12.3.RELEASE.jar:na]
    	at org.springframework.data.repository.query.parser.Part.<init>(Part.java:76) ~[spring-data-commons-1.12.3.RELEASE.jar:na]
    	at org.springframework.data.repository.query.parser.PartTree$OrPart.<init>(PartTree.java:235) ~[spring-data-commons-1.12.3.RELEASE.jar:na]
    	at org.springframework.data.repository.query.parser.PartTree$Predicate.buildTree(PartTree.java:373) ~[spring-data-commons-1.12.3.RELEASE.jar:na]
    	at org.springframework.data.repository.query.parser.PartTree$Predicate.<init>(PartTree.java:353) ~[spring-data-commons-1.12.3.RELEASE.jar:na]
    	at org.springframework.data.repository.query.parser.PartTree.<init>(PartTree.java:84) ~[spring-data-commons-1.12.3.RELEASE.jar:na]
    	at org.springframework.data.jpa.repository.query.PartTreeJpaQuery.<init>(PartTreeJpaQuery.java:63) ~[spring-data-jpa-1.10.3.RELEASE.jar:na]
    	at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:103) ~[spring-data-jpa-1.10.3.RELEASE.jar:na]
    	at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateIfNotFoundQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:214) ~[spring-data-jpa-1.10.3.RELEASE.jar:na]
    	at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$AbstractQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:77) ~[spring-data-jpa-1.10.3.RELEASE.jar:na]
    	at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.<init>(RepositoryFactorySupport.java:435) ~[spring-data-commons-1.12.3.RELEASE.jar:na]
    	at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:220) ~[spring-data-commons-1.12.3.RELEASE.jar:na]
    	at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.initAndReturn(RepositoryFactoryBeanSupport.java:266) ~[spring-data-commons-1.12.3.RELEASE.jar:na]
    	at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:252) ~[spring-data-commons-1.12.3.RELEASE.jar:na]
    	at org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean.afterPropertiesSet(JpaRepositoryFactoryBean.java:92) ~[spring-data-jpa-1.10.3.RELEASE.jar:na]
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1642) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1579) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
    	... 29 common frames omitted
    J'ai bien lu les messages d'erreurs mais je ne vois pas pourquoi ça ne passe pas.

    Merci à vous et désolé pour la longueur.

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Ton nom de méthode n'est pas valide et tu n'as pas besoin de faire une requête. Remplace ce bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @Query("Select green from Operation green where green.compte.codeCompte =:Y")
    	public Page<Operation> getOperationsParCompte(@Param("Y") String codeCompte,Pageable pageable);
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public Page<Operation> findByCompteCodeCompte(@Param("codeCompte") String codeCompte,Pageable pageable);
    ou:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public Page<Operation> findByCompte_CodeCompte(@Param("codeCompte") String codeCompte,Pageable pageable);
    A+.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 12
    Points : 19
    Points
    19
    Par défaut Merci pour votre retour
    Bonjour,
    Merci Andry pour votre retour. Sinon dites moi, Si je comprends il ne m'es pas possible de créer mes propres noms de méthodes en utilisant Spring data, même avec les reqêtes paramétrées ?

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 12
    Points : 19
    Points
    19
    Par défaut Problème résolu
    Merci Andry j'ai pu résoudre le problème suite à votre réponse. MERCI infiniment. Sinon pour ma question,en attendant votre retour, je vais essayer de revoir la documentation du frameword pour plus de détails.

    Cordialement.

  5. #5
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Si, tu peux utiliser une requête paramétrée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @Query("Select green from Operation green join green.compte c where c.codeCompte =:Y")
    	public Page<Operation> findByCompteCodeCompte(@Param("Y") String codeCompte,Pageable pageable);
    Mais si tu ne veux pas respecter les règles de nommage des méthodes, tu dois passer par un interface qui n'hérite pas de Repository

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public interface OperationRepositoryCustom{
    @Query("Select green from Operation green join green.compte c where c.codeCompte =:Y")
    	public Page<Operation> getOperationsParCompte(@Param("Y") String codeCompte,Pageable pageable);
    }
    public interface OperationRepository extends JpaRepository<Operation, Long> , OperationRepositoryCustom{
     
    }
    http://docs.spring.io/spring-data/jp...mplementations

    A+.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 12
    Points : 19
    Points
    19
    Par défaut
    Leçon sue et Merci INFINIMENT .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 26/03/2015, 19h11
  2. [Data] Error creating bean with name 'entityManagerFactory'
    Par olivier57b dans le forum Spring
    Réponses: 0
    Dernier message: 27/09/2009, 14h47
  3. Réponses: 1
    Dernier message: 15/04/2009, 21h06
  4. Error creating bean with name
    Par MASSAKA dans le forum Spring
    Réponses: 1
    Dernier message: 07/05/2008, 19h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo