Use Notes objects in memory and other useful Java tips for XPages development 
Frank van der Linden
Me 
•Java/XPages/Web/Domino developer 
•Self employed at elstarIT 
•OpenNTF director 
•Speak at several national and inter...
Disclaimer 
All the code and the demos in this session will use the Java Notes Objects which are part of the IBM/Lotus Not...
Roadmap 
•Notes objects in memory 
•Use of JSON 
•MVC/Managed beans 
•Java tip for XPages 
•Date checks 
•Utility class 
•...
Notes objects in memory
Bad practice 
•Notes objects are not serializable 
•Will not recycled the Java way, it will keep a pointer to the C object...
What is serialization
XPagesJava doc to the rescue
Put Notes document in memory 
•Get Notesdocument 
•Wrap Notesdocument into a DominoDocument
Get field values 
•First check if document isRecycled 
•Access field
On a XPageand more 
•In a computed field 
•In an edit box 
•Update the backend document
Demo
What about attachments 
•Get easy access to your attachments
What about attachments 
•No calculation of paths 
•Works both in XPincand Web 
•Call the attachment URL
Demo
Use build-in JSON classes
JSON building classes 
•Part of the Extensibility API, since 8.5.2 
•Easy way to build JSON
JSON building classes 
•No concatenation of Strings 
•Faster 
•Readable code
MVC
MVC
MVC for XPages 
•Separation of responsibility 
•Cleaner code 
•Easier to maintain 
•Model = documents 
•View = XPage 
•Con...
Managed beans
The requirements 
•Needs to be Serializable 
•At least one constructor without parameters 
•Needs to be registratedin the ...
Faces-config.xml syntax 
•In package-explorer, under WebContentWEB-INF 
•Name of the bean 
•Full qualified class name 
•S...
Use the managed beans 
•Do the calculation in the class 
•Use Expression Language to access properties 
•Minimize use of S...
Java tips for XPages
Utility class 
•All kind of methods 
•Always available as static class 
•I added some methods who were translated from SSJS
Date checks 
•Remember the TimeDifferencehorror 
•Java provide nice Date checks 
•Like… Date.before(Date) or Date.after(Da...
Extending a class 
•Extend a base class 
•Use the methods of the base class
Extending a class 
•Using the class 
•In a XPage
Unit test 
•Write code to test small portions of code, like methods 
•Test if the code is doing what was intended 
•Write ...
Unit test for XPages 
•More and more Java code in XPagesdevelopment 
•Write Unit test for better code 
•On OpenNTF Junit t...
And Finally 
•Finally will always called, even after a catch 
•Use it to recycle objects and close stream readers
Thank you 
@flinden68 
http://www.elstarit.nl 
http://nl.linkedin.com/in/flinden68 
flinden68@elstarit.nl 
https://bitbuck...
Bonus
Eventsource
Customizable Toolbar
Upcoming SlideShare
Loading in …5
×

ics user group dev day_2014 use notes objects in memory and other useful

533 views

Published on

ics user group dev day 2014 - IBM Champion Frank van der Linden demonstrate how to use notes objects in memory

  • Be the first to comment

  • Be the first to like this

ics user group dev day_2014 use notes objects in memory and other useful

  1. 1. Use Notes objects in memory and other useful Java tips for XPages development Frank van der Linden
  2. 2. Me •Java/XPages/Web/Domino developer •Self employed at elstarIT •OpenNTF director •Speak at several national and international events •IBM Champion 2013 and 2014 •Live in the Netherlands •Work everywhere @flinden68 http://www.elstarit.nl http://nl.linkedin.com/in/flinden68 flinden68@elstarit.nl
  3. 3. Disclaimer All the code and the demos in this session will use the Java Notes Objects which are part of the IBM/Lotus Notes product. For a modern way of Java coding with Notes Objects please use the OpenNTF Domino API. Or even better use OpenNTF essentials
  4. 4. Roadmap •Notes objects in memory •Use of JSON •MVC/Managed beans •Java tip for XPages •Date checks •Utility class •Extending classes •Unit test •Finally •Some bonus code
  5. 5. Notes objects in memory
  6. 6. Bad practice •Notes objects are not serializable •Will not recycled the Java way, it will keep a pointer to the C object •Can cause out of memory
  7. 7. What is serialization
  8. 8. XPagesJava doc to the rescue
  9. 9. Put Notes document in memory •Get Notesdocument •Wrap Notesdocument into a DominoDocument
  10. 10. Get field values •First check if document isRecycled •Access field
  11. 11. On a XPageand more •In a computed field •In an edit box •Update the backend document
  12. 12. Demo
  13. 13. What about attachments •Get easy access to your attachments
  14. 14. What about attachments •No calculation of paths •Works both in XPincand Web •Call the attachment URL
  15. 15. Demo
  16. 16. Use build-in JSON classes
  17. 17. JSON building classes •Part of the Extensibility API, since 8.5.2 •Easy way to build JSON
  18. 18. JSON building classes •No concatenation of Strings •Faster •Readable code
  19. 19. MVC
  20. 20. MVC
  21. 21. MVC for XPages •Separation of responsibility •Cleaner code •Easier to maintain •Model = documents •View = XPage •Controller = Java managed bean
  22. 22. Managed beans
  23. 23. The requirements •Needs to be Serializable •At least one constructor without parameters •Needs to be registratedin the Faces-config.xml •Properties are private •And have Getters and Setters
  24. 24. Faces-config.xml syntax •In package-explorer, under WebContentWEB-INF •Name of the bean •Full qualified class name •Scope of the bean •Optional, initialize properties
  25. 25. Use the managed beans •Do the calculation in the class •Use Expression Language to access properties •Minimize use of SSJS •Some examples
  26. 26. Java tips for XPages
  27. 27. Utility class •All kind of methods •Always available as static class •I added some methods who were translated from SSJS
  28. 28. Date checks •Remember the TimeDifferencehorror •Java provide nice Date checks •Like… Date.before(Date) or Date.after(Date)
  29. 29. Extending a class •Extend a base class •Use the methods of the base class
  30. 30. Extending a class •Using the class •In a XPage
  31. 31. Unit test •Write code to test small portions of code, like methods •Test if the code is doing what was intended •Write better Java code •Use Mock Framework, like EasyMockor Mockito, to simulate objects
  32. 32. Unit test for XPages •More and more Java code in XPagesdevelopment •Write Unit test for better code •On OpenNTF Junit test for Xpagesproject (thanks Christian Guedemann)
  33. 33. And Finally •Finally will always called, even after a catch •Use it to recycle objects and close stream readers
  34. 34. Thank you @flinden68 http://www.elstarit.nl http://nl.linkedin.com/in/flinden68 flinden68@elstarit.nl https://bitbucket.org/flinden68/bccon-java-demo/src
  35. 35. Bonus
  36. 36. Eventsource
  37. 37. Customizable Toolbar

×