Naturally, I wish to test this. I've chosen my YPPO project for it.
Progress
It seems easy enough. Just select Source in the main menu and choose Inspect2.
It transpired that I require FindBugs to use All Analyzers, but NetBeans automatically asked if I wanted to install it.
A lot of the inspection messages are regarding missing JavaDoc. I'm going to skip over those (as being not interesting).
Functional Operations
Use functional operations instead of imperative style loop.public static void addErrorMessages(List<String> messages)
{
for (String message : messages)
{
addErrorMessage(message);
}
}
Got turned into:{
for (String message : messages)
{
addErrorMessage(message);
}
}
public static void addErrorMessages(List<String> messages)
{
messages.stream().forEach((message) ->
{
addErrorMessage(message);
});
}
{
messages.stream().forEach((message) ->
{
addErrorMessage(message);
});
}
private void persistGalleries(Map<String, Gallery> galleries)
{
for (String path : galleries.keySet())
{
Gallery gallery = galleries.get(path);
logger.log(Level.FINE, "persistGalleries persist gallery {0}.", gallery);
galleryBean.create(gallery);//em.persist(gallery);
}
}
Got turned into:{
for (String path : galleries.keySet())
{
Gallery gallery = galleries.get(path);
logger.log(Level.FINE, "persistGalleries persist gallery {0}.", gallery);
galleryBean.create(gallery);//em.persist(gallery);
}
}
private void persistGalleries(Map<String, Gallery> galleries)
{
galleries.keySet().stream().map((path) -> galleries.get(path)).map((gallery) ->
{
logger.log(Level.FINE, "persistGalleries persist gallery {0}.", gallery);
return gallery;
}).forEach((gallery) ->
{
galleryBean.create(gallery);
});
}
{
galleries.keySet().stream().map((path) -> galleries.get(path)).map((gallery) ->
{
logger.log(Level.FINE, "persistGalleries persist gallery {0}.", gallery);
return gallery;
}).forEach((gallery) ->
{
galleryBean.create(gallery);
});
}
Lambda Expressions
Anonymous inner class creation can be turned into a lambda expression.Collections.sort(list, new Comparator<Gallery>()
{
@Override
public int compare(Gallery t, Gallery t1)
{
return t.getCreationDate().compareTo(t1.getCreationDate());
}
});
Got turned into:{
@Override
public int compare(Gallery t, Gallery t1)
{
return t.getCreationDate().compareTo(t1.getCreationDate());
}
});
Collections.sort(list, (Gallery t, Gallery t1) -> t.getCreationDate().compareTo(t1.getCreationDate()));
Notes
Despite NetBeans telling me that everything is perfectly fine, actually deploying it to GlassFish using the new Streams throws an ArrayIndexOutOfBoundsException. See [3].
I'm sure they're already hard at work.
References
- [1] Overview of JDK 8 Support in NetBeans IDE
- https://netbeans.org/kb/docs/java/javase-jdk8.html
- [2] 7.11.21 Using Hints in Source Code Analysis and Refactoring
- http://docs.oracle.com/cd/E40938_01/doc.74/e40142/build_japps.htm#NBDAG613
- [3] Collection streams provoke java.lang.ArrayIndexOutOfBoundsException
- https://java.net/jira/browse/GLASSFISH-21014
No comments:
Post a Comment