Le talk "The birth and Death of Javascript" de Gary Bernhardt est très open-minded à ce sujet : https://www.destroyallsoftware.com/talks/the-birth-and-death-of-javascript
La suite : http://blog.soat.fr/2014/02/du-bon-usage-de-junit-22/
Je ne sais plus qui avait Shaarlié ça. Les infos semblent intéressantes.
"When you use void as your return type Spring will by default try to determine the view name from your method name, unless it thinks you're directly writing the response (which it does when you have a HttpServletResponse as a parameter). Have a look at section 15.3.2.3 of the Spring 3 docs."
Rah ! Mais il faut vraiment lire tout StackOverflow pour lire ce genre de choses ? Ils ne sont pas fichu chez Spring de faire une usine à gaz avec une documentation et des exemples un peu clair non ? Mince, avec toute la doc qui existe, la base des bases restent tout de même inexpliqué...
Décidément, le Web en Java EE, ça m'énerve à chaque fois !
Améliorer quelques peu les performances des logs en Java, ce n'est pas toujours à négliger.
Voilà qui répond bien à mes questions quant à la modification de paramètres d'une méthode en Java.
Ainsi que ces deux topics :
http://stackoverflow.com/questions/5607773/change-a-functions-arguments-values
http://stackoverflow.com/questions/40480/is-java-pass-by-reference
Trier une liste d'objet en Java est relativement facile :
[code]
Collections.sort(myList, new MyComparator());
[/code]
Où MyComparator implémente l'interface Comparator. Je n'ai pas trouvé de classe abstraite pour cela, donc pas de sucre syntaxique particulier ici.
Un Comparator implémente la méthode compare(o1, o2) qui doit retourner :
Par exemple :
[code]
public class MyComparator implements Comparator
@Override
public int compare(MyObject o1, MyObject o2) {
if (o1.getInt() == o2.getInt()) {
return 0;
}
if (o1.getInt() < o2.getInt()) {
return -1;
}
return 1;
}
[/code]
Rah !!! Déclarer un array en Java (je l'oublie toujours celui là...) :
String[] anArray = new String[10];
Ou en plus court:
String[] anArray = {"Val1", Val2};
Eh, je ne savais pas ça !
${parameter.name:default value}
${parameter.${other.parameter}}
Les tests unitaires en Java, c'est le pied grâce à JUnit ! C'est vraiment le pied ! Dans un projet, j'ai même eu l'occasion de m'en servir pour des tests d'intégrations !
Cela devient plus compliqué dès qu'il faut tester des méthodes asynchrones utilisant des callback (ou listener, as your prefer). Je n'ai rien de complètement figé dans ma tête actuellement, mais voilà ce que je note :
La solution générique consiste à attendre l'appel du thread à l'aide de synchronized, wait et notify. Dans la réalité, il semble qu'il vaut mieux utiliser CountDownLatch (http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/CountDownLatch.html) afin d'éviter que le callback n'arrive avant que l'on est eu le temps d'attendre... ce serait dommage ;-)
Actuellement, pour moi, la meilleure solution consiste donc à utiliser un code du type :
public class AsynchronousTest
{
/**
@Test
public void testAsynchronousCall() throws Exception
{
Object parameters = null;
myAsynchronousCall(parameters, new MyCallback()
{
@Override
public void onSuccess(Object data)
{
receiveddata = data;
lock.countDown();
}
});
boolean releaseBeforeTimeout = lock.await(2000, TimeUnit.MILLISECONDS);
// Check timeout
if (!releaseBeforeTimeout) {
// Do stuff
fail("Timeout");
}
assertNotNull(receiveddata);
// Other tests
}
}
Rahhh, je l'oublie toujours celui là ! Parcourir une Map en Java :
HashMap<String, String> selects = new HashMap<String, String>();
for(Entry<String, String> entry : selects.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
// do what you have to do here
// In your case, an other loop.
}