Arun
Arun

Reputation: 329

Xpages - Java - How to start writing code

I am new to Java but not Lotus Notes. Here are some of my questions:

  1. Main method in Java class - Can I run a simple HelloWorld.java in DDE as I would in Ecplise?
  2. Do I use Java design element or create Java classes in project explorer?
  3. Would it be better to uninstall other JVMs before starting on working Java in DDE?

Thanks Arun

Upvotes: 1

Views: 745

Answers (5)

Howard
Howard

Reputation: 1503

If you just want to play with Java (not the XPages part) create a Java project in Domino Designer (change to the Java perspective) and then use the main to write code. When you run it as a Java program it will output to the console. You can still access Domino objects. For example, the code below shows how to do that... I did this to test out some data models and concepts and then copied the code to an actual NSF for use as a bean after I proved out my concept. It is so much easier to experiment and test running your code as a Java program and viewing the output in the browser.

Howard

public static void main(String[] args) {
        try {
            NotesThread.sinitThread(); // start thread
            Session s = NotesFactory.createSession((String) null, (String) null, "cessna");
//do whatever

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            NotesThread.stermThread(); // must terminate every thread
        }

    }

Upvotes: 2

stwissel
stwissel

Reputation: 20384

Check for the article "the double headed beast" from Bob Balaban. It explains the approach you want to take. While it was written for agents it applies to Java too.

What you need to do: write your businesses logic (the part you want to unit test) without dependencies to xpages specifics. Hand over the key objects in method calls: session database. You can initialize them in a main routine.

I wrote an article about that, Check it out.

Upvotes: 0

Paul Stephen Withers
Paul Stephen Withers

Reputation: 15729

I'm not sure what you mean by not wanting to run the whole program. The "program" is the same XPages runtime you'll have been running when writing SSJS. The JVM is created as part of that runtime, for a specific NSF. That runtime includes all the relevant OSGi plugins on which a lot of your Java code will depend (thinks like FacesContext classes, ExtLibUtil etc). Testing of "the program" in XPages is usually no different to testing of "the program" in traditional Notes development.

You can test from Eclipse, but you need to be able to connect to a Domino server in order to run the code in a similar way to how you need to be able to connect to a Domino server to run the debugger. So if running the debugger is an issue, running from Eclipse is a non-starter.

From Eclipse, unless you're running code from a OSGi plugin, you'll still need to copy and paste your code outside the NSF, unless you use test cases within the ODP.

If you want to run junit tests, an OpenNTF project is available for that. But from my experience of Java and junit testing, I don't think I would have been capable of using that to test my code when I was just starting out with Java. So it's not something I'd recommend.

Static methods (utility methods that are not in a managed bean) can be tested from standalone XPages. I've used that method before. Otherwise, beans can be added to a standalone XPage pointing to whatever data you wish or initialised with whatever values you wish, so you have the control to test part of it, if the application architecture allows it.

Upvotes: 1

Knut Herrmann
Knut Herrmann

Reputation: 30960

As you tagged your question with XPages my answer will cover only Java development in DDE for XPages.

  1. You can't use the main method as usually. Create a HelloWorld.java with a static methode hello() and call this method in an XPage with {javascript:com.package.HelloWorld.hello()}

  2. You can use Java design elements. Those are easy to access in DDE and included in build path already. For larger projects you can create your own directory structure in Package explorer and include those in build path. As long as they included in build path you can use them in XPages.

  3. The JVM is included in and get used from Domino server. You don't need to uninstall JVM on your computer.

Upvotes: 1

Oliver Busse
Oliver Busse

Reputation: 3395

I strongly recommend you to invest some time to learn how Xpages and Java are used in DDE/Notes/Domino as:

  • the JVM of IBM is completely separated from other JVM you may have installed
  • Java classes don't have a main method - except you refer to those that come from an Agent
  • if you create a Java class for an XPages app you always use the Java class element

A good point to start is David Leedy's NotesIn9 series. You can check the whole compendium of video tutorials here: http://www.mindmeister.com/de/280533435/notesin9

Upvotes: 3

Related Questions