2013-06-03 5 views
1

J'utilise XMLAdapter pour marshaler et unmarshal Dates. Dans mon unmarshaller je veux vérifier le format fourni par le service REST. Si le format est incorrect, je veux lancer une exception. Cependant, l'expulsion est en train d'être mangée et l'application continue. Je sais que la solution réside avec ValidationEventHandler mais je ne suis pas capable de comprendre comment l'utiliser exactement. VEUILLEZ aider avec les moyens de l'utiliser. Mon code XMLAdapter est comme ceLancer une exception personnalisée dans XMLAdapter

public class DateFormatAdapter extends XmlAdapter<String, Date> { 

@Override 
public String marshal(Date arg0) throws Exception { 

    return arg0.toString(); 
} 

@Override 
public Date unmarshal(String arg0) { 
    DateFormat df = new SimpleDateFormat("MM/dd/yyyy"); 
    df.setLenient(false); 
    Date startDate = null; 
    try { 
     startDate = df.parse(arg0); 
     df.format(startDate); 

    } catch (ParseException e) { 
     // throw custom exception from here 
    } 

    return startDate; 
} 

}

Répondre

1

Cest vrai! Si vous lancez une exception dans une implémentation de XMLAdapter, elle sera interceptée et le service continue. Le statut de la réponse ne sera pas défini sur Status.INTERNAL_SERVER_ERROR ou autre chose. Insted les données ne sont pas mappées et donc la réponse ne contient pas les données souhaitées. Si vous souhaitez influencer le code de réponse, dans le cas où le format de données ne correspond pas, vous devez lancer l'exception dans l'entité de données elle-même. Dans votre cas, vous devez créer une classe CustomDate qui étend Date, puis appelle du constructeur une méthode de validation. De plus, une classe apdapter n'est pas considérée comme une validation de données, par conséquent l'approche avec la classe de date personnalisée et un proxy de validation facultatif est beaucoup plus pratique.

+0

Y a-t-il un moyen pratique de le faire? Je vais essayer cela et mettre à jour. – user1037160

+0

Si cette réponse vous a été utile, veuillez la marquer comme acceptée. Si vous avez encore des problèmes, ajoutez un commentaire. –

Questions connexes