37
Use Notes objects in memory and other useful Java tips for XPages development Frank van der Linden

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

Embed Size (px)

DESCRIPTION

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

Citation preview

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

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

developmentFrank van der Linden

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

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

[email protected]

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

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

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

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

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

Notes objects in memory

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

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

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

What is serialization

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

XPages Java doc to the rescue

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

Put Notes document in memory

• Get Notesdocument

• Wrap Notesdocument into a DominoDocument

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

Get field values

• First check if document isRecycled

• Access field

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

On a XPage and more

• In a computed field

• In an edit box

• Update the backend document

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

Demo

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

What about attachments

• Get easy access to your attachments

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

What about attachments

• No calculation of paths• Works both in XPinc and Web

• Call the attachment URL

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

Demo

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

Use build-in JSON classes

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

JSON building classes

• Part of the Extensibility API, since 8.5.2• Easy way to build JSON

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

JSON building classes

• No concatenation of Strings• Faster• Readable code

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

MVC

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

MVC

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

MVC for XPages

• Separation of responsibility

• Cleaner code

• Easier to maintain

• Model = documents

• View = XPage

• Controller = Java managed bean

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

Managed beans

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

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

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

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

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

Use the managed beans

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

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

Java tips for XPages

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

Utility class

• All kind of methods• Always available as static class• I added some methods who were translated

from SSJS

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

Date checks

• Remember the TimeDifference horror• Java provide nice Date checks• Like… Date.before(Date) or Date.after(Date)

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

Extending a class

• Extend a base class• Use the methods of the base class

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

Extending a class

• Using the class

• In a XPage

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

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

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

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)

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

And Finally

• Finally will always called, even after a catch

• Use it to recycle objects and close stream readers

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

Thank you

@flinden68

http://www.elstarit.nl

http://nl.linkedin.com/in/flinden68

[email protected]

https://bitbucket.org/flinden68/bccon-java-demo/src

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

Bonus

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

Eventsource

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

Customizable Toolbar