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

Preview:

DESCRIPTION

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

Citation preview

Use Notes objects in memory and other useful Java tips for XPages

developmentFrank van der Linden

Me

• Java/XPages/Web/Domino developer

• Self employed at elstar IT

• 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

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

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

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• Can cause out of memory

What is serialization

XPages Java 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 XPage and 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 XPinc and 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

• Controller = Java managed bean

Managed beans

The requirements

• Needs to be Serializable• At least one constructor without parameters• Needs to be registrated in the Faces-config.xml• Properties are private • And have Getters and Setters

Faces-config.xml syntax

• In package-explorer, under WebContentWEB-INF• Name of the bean• Full qualified class name• Scope of the bean• Optional, initialize properties

Use the managed beans

• Do the calculation in the class• Use Expression Language to access properties• Minimize use of SSJS• Some examples

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 TimeDifference horror• Java provide nice Date checks• Like… Date.before(Date) or Date.after(Date)

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 better Java code• Use Mock Framework, like EasyMock or Mockito, to simulate objects

Unit test for XPages

• More and more Java code in XPages development• Write Unit test for better code• On OpenNTF Junit test for Xpages project (thanks Christian Guedemann)

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://bitbucket.org/flinden68/bccon-java-demo/src

Bonus

Eventsource

Customizable Toolbar

Recommended