Eclipse Preferences Import/Export
- You can save the folder '.metadata' in your workspace.
- This folder contain your preferences, simply restore it after a re-installation and your done.
- The '.metadata' folder can contain projects/plugins specific settings, the 'core' eclipse settings are in: '.metadata/.plugins/org.eclipse.core.runtime/.settings'
- Theses 'core' settings can be exported using 'File -> Export -> Preferences'
Eclipse Essentials 2013
Environment Preparation
- JavaSE 6r29 JDK(and JRE): java.oracle.com
- Set Path & Test: “C:\Program Files\Java\jre6\bin”
- java -version
- javac -version
- IDE
- Eclipse: www.eclipse.org/downloads
- Eclipse IDE for Java Developers/Jave EE Developers
- Eclipse: www.eclipse.org/downloads
JARs(include in Eclipse project when needed):
- TestND: http://beust.com/eclipse
- Java Excel API: http://jexcelapi.sourceforge.net/
- JUnit: http://www.junit.org/
- Apache ANT (HTML reporting)
- Subversion http://subclipse.tigris.org/update_1.8.x
- Also check: http://download.eclipse.org/releases/juno/
Help and Tutorials
Java/Selenium Reading from Excel sheets:
- http://testerinyou.blogspot.com/2010/10/how-to-do-data-driven-testing-using.html
- http://functionaltestautomation.blogspot.com/2009/10/dataprovider-data-driven-testing-with.html
- http://www.youtube.com/watch?v=ty3q2wQdPmU&feature=BFp&list=WL18EEBB0491EF4A05
Shortcuts:
CTRL-SPACE Code writing
CTRL + / Add/remove comments
CTRL + SHFT + O Organize imports (Add/remove imports)
ALT + UP/DOWN Move a line of code up or down
CTRL + D Delete Line
ALT+SHFT+J Element Comment

Starting Eclipse
Eclipse Start.bat: JDK7
This uses the JDK7 binaries:
|
set DEV_HOME=D:\DEVL\Java set JAVA_HOME=%DEV_HOME%\java32\jdk7 set PATH=%JAVA_HOME%\bin;%PATH%
start %DEV_HOME%\eclipse32\eclipse.exe -vm %JAVA_HOME%\bin\javaw.exe -showlocation -vmargs -server -Xms512m -Xmx1024m -XX:MaxPermSize=128m |
Eclipse.ini Configuration: JDK7
|
-startup plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar --launcher.library plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.200.v20120522-1813 -product org.eclipse.epp.package.java.product --launcher.defaultAction openFile --launcher.XXMaxPermSize 256M -showsplash org.eclipse.platform --launcher.XXMaxPermSize 256m --launcher.defaultAction openFile -vm D:/DEVL/Java/java32/java32/jdk7/bin/javaw.exe -vmargs -Dosgi.requiredJavaVersion=1.5 -Dhelp.lucene.tokenizer=standard -Xms40m -Xmx512m |

HOME Environment Variable


Installing the Subversion Client
- Go to Help\Eclipse Marketplace and search by ‘Subversion’
- Select Subclipse and Install…
- http://subclipse.tigris.org/update_1.8.x
- Go to Preferences\Team\SVN
- The SVN interface should be JavaHL(JNI)
- Here it is Not Available

- If the Subclipse client plugins are missing, the following prompt will appear
Subclipse Library Not Available

Installing Subclipse from Help\New Software
- Go to Help\Install New Software…

Locate “Subclipse – http://...”
Select Subclipse option, Click Next

Acknowledge EULAs

Eclipse will download selected packages

Security Warning

Eclipse will restart


Installing Subclipse From Help\Eclipse Market Place…
Eclipse Marketplace: Subclipse selection

Select all packages

Acknowledge the EULAs

Eclipse will download the packages

Upon restarting, Eclipse will prompt for communicating Subclipse usage


Enabling the SVN Connector and Plugin
Eclipse\Preferences\Team\SVN
Select SVN interface: JavaHL and press OK

Open the SVN Repository View

The SVN repository Exporting Panel will appear

Right Click in the SVN repositories panel, select New..

Enter the URL of the SVN Server and Repository

If Incorrect, Eclipse will indicate an Error

Accessing SVN from the Project Explorer


Eclipse About

About Main Form

Installation Details

Installation History

Features

Plugins

Eclipse Installation Details


Eclipse Help

Main Contents View

Help Contents Expanded

Help Index

Help Search


Mylyn Task Manager
|
Mylyn is a Task-Focused Interface for Eclipse that reduces information overload and makes multi-tasking easy. It does this by making tasks a first class part of Eclipse, and integrating rich and offline editing for repositories such as Bugzilla, Trac, and JIRA. Once your tasks are integrated, Mylyn monitors your work activity to identify information relevant to the task-at-hand, and uses this task context to focus the Eclipse UI on the interesting information, hide the uninteresting, and automatically find what's related. This puts the information you need to get work done at your fingertips and improves productivity by reducing searching, scrolling, and navigation. By making task context explicit Mylyn also facilitates multitasking, planning, reusing past efforts, and sharing expertise. |

MAVEN
Eclipse M2E Installation
Searching repositories

Install Details

Review Licenses

Installing Software

Restart

Eclipse Maven Configuration









Eclipse Development
Create Workspace
- Create WORKSPACE folder to contain PROJECTS
- New, Project....
- New, Class....(.java file is the class)

- Window > Prefrences > General > Appearance > Colors and Fonts.. > Text Font
- Run > Run Configurations... >

New Project

JRE Section

Configure JREs

Configure Defaults

Import Projects
- File > Import > General > Existing Project into Workspace
- Exploded Project (Root Dir)
- Zipped Project (Archive File)
- Root Dir, OK
- Eclipse will autodetect projects
- Copy projects into workspace
- Close projects that aren’t in use (Right-Click, Close Project)
- Projects remain in workspace, just not open
Missing Dependencies and References
When opening a project, several errors can occur, such as missing depencies or references.
In this case, there is a missing JAR file
Right-click the error and select properties for more detailed look
Right-click the project and select properties or press ALT-ENTER to bring u the project properties
Select the missing package and press Edit to select a new path to the file
IDE Layout
HutuBBB
Views/Panels


Perspectives
- Arrangement of Views
- Custom Perspectives: Window > Save Perspective As....
Command Line
- Dir to PROJECT\SRC
- javac Main.java
- dir = Main.class
- java Main
- javac Main.java -d ..\bin
- \src\Main.class
- javac Main.java -verbose
Note: Access Denied Errors
If Access Denied error occurs, set folder permissions to Everyone and give Full Control access.
D:\Eclipse\Java\CommandLine\src>javac Main.java -d D:\Eclipse\Java\CommandLine\bin
Main.java:2: error while writing Main: D:\Eclipse\Java\CommandLine\bin\Main.class (Access is denied
public class Main {
^
ClassPath
Similar to the classic dynamic loading behavior, when executing Java programs, the Java Virtual Machine finds and loads classes lazily (it loads the bytecode of a class only when this class is first used). The classpath tells Java where to look in the filesystem for files defining these classes.
The virtual machine searches for and loads classes in this order:
- bootstrap classes: the classes that are fundamental to the Java Platform (comprising the public classes of the Java Class Library, and the private classes that are necessary for this library to be functional).
- extension classes: packages that are in the extension directory of the JRE or JDK, jre/lib/ext/
- user-defined packages and libraries
By default only the packages of the JDK standard API and extension packages are accessible without needing to set where to find them. The path for all user-defined packages and libraries must be set in the command-line (or in the Manifest associated with the Jar file containing the classes).
Setting the path through an environment variable
The environment variable named CLASSPATH may be alternatively used to set the classpath. For the above example, we could also use on Windows:
Sometimes you have to check the JAVA_HOME also, if it is pointing towards the right JDK version
set CLASSPATH=D:\myprogram
java org.mypackage.HelloWorld
Diagnose
Application programmers may want to find out/debug the current settings under which the application is running:
System.getProperty("java.class.path")

Compiling and Running
Java package statement implies the directory structure where it exists within the project.
Should be unique
- package com.lynda.javatraining;
- \src\com\lynda\javatraining\HelloWorld.java
When compiling, use javac in the project root:
- C:\JavaProjects\HelloWorld>javac com\lynda\javatraining\HelloWorld.java
- HelloWorld.class
- HelloWorld.java
When running, use package reference and filename without “.java” extension
- C:\JavaProjects\HellowWorld>java com.lynda.javatraining.HelloWorld
public class HelloWorld {
public static void main(String[] args) {
- Static: allows class to be called directly?
|
public class HelloWorld {
public static void main(String[] args) {
|

Project Errors
Error: Build Path specifics execution environment JavaSE1.6. There are no FREs installed in the workspace that are strictly compatible with the environment…
Fix: Add an additional JRE Library to the project and reference that in lieu of JRE7
Press the Environments button to update the package refences
- IN this case, JavaSE-1.6 was mentioned in the error message so probably best to find a matching JRE for it
- jre6u33-src shows to be a [perfect match] for the requirement, so we’ll select it.

Java Language Tools
Main Class
public static void main(String[] args) {
Required by Class:
- public - can be called anywhere
- static - no instance required to run
- void - nothing returned by class
- String[] args
- [] - an array
- args - default variable to hold passed data
- Passed by Java’s JVM
Passing Args
Command Line
java Main arg1 arg2
In Eclipse:


Switch Statements: Enums
Project > New > Enum

Code:
public enum Month {
JANUARY, FEBRUARY, MARCH; //Constants of enum class
}
public class SwitchWithEnums {
// Enumerations
public static void main(String[] args) {
// int month = 1;
Month month = Month.FEBRUARY;
switch(month) {
case JANUARY:
System.out.println("It's the first month");
break;
case FEBRUARY:
System.out.println("It's the second month");
break;
case MARCH:
System.out.println("Its the third month");
}
}
}

Methods
Refactoring

Code:
public class Main {
public static void main(String[] args) {
doSomething();
//refactoring, copy code, Refactor..
//will create a new method and reference it here
loopMe();
}
private static void loopMe() {
int top = 10;
for (int i = 0; i < top; i++) {
System.out.println("the value is " + i);
}
}
//Access modifier public, private, protected (inheritance), none (protected package)
//Static - class method, only used inside class
//non-Static - used in instances
//Static must create instance to call non-Static '.method()'
private static void doSomething() {
System.out.println("This method has been called");
}
}

Extracting a Method

Code:
import java.io.*;
public class Calculator {
public static void main(String[] args) {
String s1 = getInput("Enter a numeric value: ");
String s2 = getInput("Enter a numeric value: ");
// Extracting a Method
double result = addTwovValues(s1, s2);
System.out.println("The answer is " + result);
}
// Extracted Method
private static double addTwovValues(String s1, String s2) {
double d1 = Double.parseDouble(s1);
double d2 = Double.parseDouble(s2);
double result = d1 + d2;
return result;
}
private static String getInput(String prompt) {
BufferedReader stdin = new BufferedReader(
new InputStreamReader(System.in));
System.out.print(prompt);
System.out.flush();
try {
return stdin.readLine();
} catch (Exception e) {
return "Error: " + e.getMessage();
}
}
}

Extract Method with Error Handling


Extracting and Error Handling with Try/Catch Block: Revisited
String[] strings = {"Welcome!"};
System.out.println(strings[1]);

..
getArrayItem(); //refactored getArrayItem()
..
private static void getArrayItem()
throws ArrayIndexOutOfBoundsException {
String[] strings = {"Welcome!"};
System.out.println(strings[1]);
}

try {
getArrayItem(); //refactored getArrayItem()
} catch (ArrayIndexOutOfBoundsException e) {
// e.printStackTrace(); // <--- throws ugly message
System.out.println("Array item was out of bounds");
}
Code:
public class Main {
public static void main(String[] args) {
//Extrac Method with Error Handling
//Surround with try/catch blcok
try {
getArrayItem(); //refactored getArrayItem()
} catch (ArrayIndexOutOfBoundsException e) {
// e.printStackTrace(); // <--- throws ugly message
System.out.println("Array item was out of bounds");
//Array item was out of bounds
}
}
private static void getArrayItem()
throws ArrayIndexOutOfBoundsException {
String[] strings = {"Welcome!"};
System.out.println(strings[1]);
}
}

Debugger
Finding Possible Exceptions
Highlight command > Help > Dynamic Help > JavaDoc > CONSTRUCTOR > METHOD
URI uri = new URI("http:\\somecompany.com");
java.net.URISyntaxException: Illegal character in opaque part at index 5: http:\somecompany.com
at java.net.URI$Parser.fail(Unknown Source)
at java.net.URI$Parser.checkChars(Unknown Source)
at java.net.URI$Parser.parse(Unknown Source)
at java.net.URI.<init>(Unknown Source)
at Main.main(Main.java:10)

From e.printStackTrace();
To System.out.println(e.getMessage());
Code:
import java.net.URI;
import java.net.URISyntaxException;
public class Main {
public static void main(String[] args) {
//Uniform Resource Identifier
try {
URI uri = new URI("http:\\somecompany.com");
} catch (URISyntaxException e) {
System.out.println(e.getMessage());
/*
e.printStackTrace();
java.net.URISyntaxException: Illegal character in opaque part at index 5: http:\somecompany.com
at java.net.URI$Parser.fail(Unknown Source)
at java.net.URI$Parser.checkChars(Unknown Source)
at java.net.URI$Parser.parse(Unknown Source)
at java.net.URI.<init>(Unknown Source)
at Main.main(Main.java:10)
*/
}
System.out.println("I'm alive!");
//Exception in thread "main" java.lang.Error: Unresolved compilation problem:
// Unhandled exception type URISyntaxException
// at Main.main(Main.java:8)
}
}

Classes
- Class = Filename.java
- Only one public class per java file
- Multiple classes only accessible within the files
- Refactoring is process of pulling code out, creating method/class
- Also changing class name is refactoring


Code:
From
result = divideValues(s1, s2);
To
result = SimpleMath.divideValues(s1, s2);
From
----------------------------------------------------------
public class Calculator2 {
private static double divideValues(String s1, String s2) {
double d1 = Double.parseDouble(s1);
double d2 = Double.parseDouble(s2);
double result = d1 / d2;
return result;
----------------------------------------------------------
To
----------------------------------------------------------
public class SimpleMath {
public static void main(String[] args) {
}
public static double divideValues(String s1, String s2) {
double d1 = Double.parseDouble(s1);
double d2 = Double.parseDouble(s2);
double result = d1 / d2;
return result;
----------------------------------------------------------

Packages
- If class is anywhere but default package, it must be declared
- when creating packages, use reverse domain...
- com.silosix.calc

Importing Packages
package com.lynda.calc;
import com.lynda.calc.helpers.InputHelper;
import com.lynda.calc.helpers.MathHelper;
same as:
package com.lynda.calc;
import com.lynda.calc.helpers.*;
CTRL-O will change * to specific class imports


Refactor > Move




Instance Methods
- Class method called from definition of the class
- building up utility functions that pass all data in the call
- STATIC present
- Instance method call from instance of the class - OBJECT
- objects stick around and retain their data so its always accessible.
- STATIC missing
- Method declarations
- static - class method
- public - called anywher ein ap
- private - only within class
- protected - only within this class or its subclasses
- Object Superclass methods with
- Olive()’s crush() method
- Olive inherits Object() methods/properties

Code: Main.java
package com.lynda.olivepress;
import com.lynda.olivepress.olives.Olive;
import com.lynda.olivepress.press.OlivePress;
public class Main {
public static void main(String[] args) {
//creating 3 anonymous Olive objects
Olive[] olives = {new Olive(), new Olive(), new Olive()};
OlivePress press = new OlivePress();
press.getOil(olives);
}
}
Code: OlivePress.java
package com.lynda.olivepress.press;
import com.lynda.olivepress.olives.Olive;
public class OlivePress {
public void getOil(Olive[] olives) {
for (Olive olive : olives) {
olive.crush();
}
}
}
Code: Olive.java
package com.lynda.olivepress.olives;
public class Olive {
public void crush() {
System.out.println("Ouch!");
}
}
Constructors
- Constructors have no return value (void, int, etc)
- can create multiple constructors (overloading) with different input specs
- Always create a ‘no argument’ constructor for clarity
- public OlivePress() { }
- Can Create a new constructor with fields....
Constructor of the Olive() class
public Olive() {
System.out.println("Constructor of " + this.name);
}
Creating another constructor to catch argument and populate a field:
public Olive(int oil) {
//this.oil means field(instance variable
//otherwise refers to argument
this.oil = oil;
}


Code:
package com.lynda.olivepress.olives;
public class Olive {
public String name = "Kalamata";
public String flavor = "Grassy";
public long color = 0x000000;
private int oil = 3;
//constructor, same name as class
//no return on constructors
//can overload the constructor
public Olive() {
System.out.println("Constructor of " + this.name);
}
public Olive(int oil) {
this.oil = oil;
}
public int crush() {
System.out.println("ouch!");
return oil;
}
}

Getters/Setters
- OO development patters
- Fields should be private
- Get to data with get/set
- Create private get() and set()
Eclipse can create get/set code via Source:


Creates:
public int getOil() {
return oil;
}
public void setOil(int oil) {
this.oil = oil;
}
Code: Main.java
package com.lynda.olivepress;
import java.util.ArrayList;
import com.lynda.olivepress.olives.Olive;
import com.lynda.olivepress.press.OlivePress;
public class Main {
public static void main(String[] args) {
ArrayList<Olive> olives = new ArrayList<Olive>();
Olive olive;
olive = new Olive(2);
System.out.println(olive.name);
olives.add(olive);
olive = new Olive(1);
System.out.println(olive.name);
olives.add(olive);
olive = new Olive(2);
System.out.println(olive.name);
olives.add(olive);
OlivePress press = new OlivePress();
press.getOil(olives);
System.out.println("You got " + press.getTotalOil() + " units of oil");
press.getOil(olives);
System.out.println("You got " + press.getTotalOil() + " units of oil");
}
}
Code: OlivePress.java
package com.lynda.olivepress;
import java.util.ArrayList;
import com.lynda.olivepress.olives.Olive;
import com.lynda.olivepress.press.OlivePress;
public class Main {
public static void main(String[] args) {
ArrayList<Olive> olives = new ArrayList<Olive>();
Olive olive;
olive = new Olive(2);
System.out.println(olive.name);
olives.add(olive);
olive = new Olive(1);
System.out.println(olive.name);
olives.add(olive);
olive = new Olive(2);
System.out.println(olive.name);
olives.add(olive);
OlivePress press = new OlivePress();
press.getOil(olives);
System.out.println("You got " + press.getTotalOil() + " units of oil");
press.getOil(olives);
System.out.println("You got " + press.getTotalOil() + " units of oil");
}
}
Code: Olive.java
package com.lynda.olivepress;
import java.util.ArrayList;
import com.lynda.olivepress.olives.Olive;
import com.lynda.olivepress.press.OlivePress;
public class Main {
public static void main(String[] args) {
ArrayList<Olive> olives = new ArrayList<Olive>();
Olive olive;
olive = new Olive(2);
System.out.println(olive.name);
olives.add(olive);
olive = new Olive(1);
System.out.println(olive.name);
olives.add(olive);
olive = new Olive(2);
System.out.println(olive.name);
olives.add(olive);
OlivePress press = new OlivePress();
press.getOil(olives);
System.out.println("You got " + press.getTotalOil() + " units of oil");
press.getOil(olives);
System.out.println("You got " + press.getTotalOil() + " units of oil");
}
}

Class Variables
- Java has no CONSTANT declaration so......
// public - accessible from entire app
// static - class var
// final - value can't be changed
IN Olive()...
public static final long BLACK= 0x000000;
using it
public long color = Olive.BLACK;

Inheritance
- Java has only single inheritance - only one inherited parent
- Parent/child
- Base/derived
- Superclass/subclass <- Preferred Java nomenclature
- By default Object() is the superclass unless directly specified
Polymorphism
- Can used as Superclass or Subclass
- Declare the object by Superclass
Superclass can have more than one subclass

- Private - only called within own class
- Protected - called by own class or subclass
- Public - called from anywhere
Subclasses extend superclass
extending Olive by setting inital volume (setVolume)
public class Kalamata extends Olive() {
public Kalamata() {this.setVolume(2);}
}
public class Liguria extends Olive() {
public Liguria () {this.setVolume(5);}
}
…..this creates inheritance
Olive[] olives = {new Kalamata(), new Liguria(), new Kalamata()};
OlivePress press = new OlivePress(olives);
OliveOil oil - press.getOil;
Takes Kalamata() class and fits into Superclass Olive()
Extending Custom Classes
- Superclass doesnot pass on its constructor so...
- Each subclass needs its own constructor
In subclass... use IDE to copy constructors from the Superclass
Can select all or one...

Superclass Olive() has two constructor methods (its overloaded)

Creates...
public Kalamata() {
super();//calling superclass constructor method
// TODO Auto-generated constructor stub
}
Code: Main
package com.lynda.olivepress;
import java.util.ArrayList;
import com.lynda.olivepress.olives.Kalamata;
import com.lynda.olivepress.olives.Ligurian;
import com.lynda.olivepress.olives.Olive;
import com.lynda.olivepress.press.OlivePress;
public class Main {
public static void main(String[] args) {
ArrayList<Olive> olives = new ArrayList<Olive>();
Olive olive;
//olive = new Olive(2); //Was calling SuperClass
olive = new Kalamata();
System.out.println(olive.name);
olives.add(olive);
olive = new Ligurian();
System.out.println(olive.name);
olives.add(olive);
olive = new Kalamata();
System.out.println(olive.name);
olives.add(olive);
OlivePress press = new OlivePress();
press.getOil(olives);
System.out.println("You got " + press.getTotalOil() +
" units of oil");
press.getOil(olives);
System.out.println("You got " + press.getTotalOil() +
" units of oil");
}
}
Code:Olive.java
package com.lynda.olivepress.olives;
public class Olive {
public static final long BLACK = 0x000000;
public static final long GREEN = 0x00ff00;
public String name = "Kalamata";
public String flavor = "Grassy";
public long color = Olive.BLACK;
private int oil = 3;
public int getOil() {
return oil;
}
public void setOil(int oil) {
this.oil = oil;
}
public Olive() {
System.out.println("Constructor of " + this.name);
}
public Olive(int oil) {
setOil(oil);
}
public int crush() {
System.out.println("ouch!");
return oil;
}
}
Code:Kalamata
package com.lynda.olivepress.olives;
public class Kalamata extends Olive {
public Kalamata() {
super(2); //calling superclass constructor method and passing '2'
this.name = "Kalamata";
this.flavor = "Grassy";
this.color = Olive.BLACK;
}
}

Overriding Methods (super.something();)
Code: Olive.java
package com.lynda.olivepress.olives;
public class Olive {
public static final long BLACK = 0x000000;
public static final long GREEN = 0x00FF00;
public String name = "Kalamata";
public String flavor = "Grassy";
public long color = Olive.BLACK;
private int oil = 3;
public int getOil() {
return oil;
}
public void setOil(int oil) {
this.oil = oil;
}
public Olive() {
System.out.println("Constructor of " + this.name);
}
public Olive(int oil) {
setOil(oil);
}
public int crush() {
System.out.println("crush from superclass");
//System.out.println("ouch!");
return oil;
}
}
Code: Kalamata.java
package com.lynda.olivepress.olives;
public class Kalamata extends Olive {
public Kalamata() {
super(2);
this.name = "Kalamata";
this.flavor = "Grassy";
this.color = Olive.BLACK;
}
//Annotation wth @...data type MUST match (super.crush())
@Override
public int crush() {
System.out.println("crush from subclass");
return super.crush();
}
}

Casting Objects
- As in conversion...upward/downward (int -> long / long -> int)
- casting
- upcasting - subclass as superclass (SAFE)
- downcasting - superclass as subclass (RISKY)
//Downcasting - will cause compiler error
Kalamata olive1 =olives.get(0);
//Downcasting Excplicitly
Kalamata olive1 = (Kalamata)olives.get(0);

Create a Kalamata() olive1 from Olive() in ArrayList[0], position 0
Kalamata olive1 = olives.get(0);
Create a Kalamata() olive1 from Kalamata() Olive() in ArrayList[0], position 0
Kalamata olive1 = (Kalamata)olives.get(0);
Code:
Main.java
//Downcasting
Kalamata olive1 = (Kalamata)olives.get(0);
//downcast Olive() to (Kalamata)
//(Kalamata)olives.get(0) means USE SUBCLASS
System.out.println("Olive 1 is from " + olive1.getOrigin());
Kalamata.java (only in the Kalamata subclass, not others..)
getOrigin extends Olive()
public String getOrigin() {
return "Greece";
}

Interfaces
- Allows definition of classes’ structure
- final fields
- method names
- return data type
- Interfaces provides definition for creating classes
- Allows for polymorphism due to similarities
Code:
This method only accept ArrayLists (part of Collection data type I/F)
public void getOil(ArrayList<Olive> olives) {}
This is more flexible and can take any Data Type that implements the Collection I/F
public void getOil(Collection<Olive> olives) {

Creating Interfaces
- No constructor methods or other class elements
- Modeling behavior, not dynamic managment of data
- MUST BE PUBLIC

package com.lynda.olivepress.press;
public interface Press {
}
Creating a class with interface


Code:
package com.lynda.olivepress.press;
import java.util.Collection;
import com.lynda.olivepress.olives.Olive;
public class OlivePress2 implements Press {
@Override
public void getOil(Collection<Olive> olives) {
// TODO Auto-generated method stub
}
@Override
public int getTotalOil() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void setTotalOil(int totalOil) {
// TODO Auto-generated method stub
}
}

Creating JARs
- Build Project
- File > Export

Don’t select Eclipse .classpath or .project

For Debugging...select these

Manifest file has project metadata


ClassPath
Create a batch file and pass %1
set CLASSPATH=.
OR
For Linux
D:\TEMP\Eclipse>java -classpath .:OlivePressApp.jar com.lynda.olivepress.Main
For Windows
D:\TEMP\Eclipse>java -classpath .;OlivePressApp.jar com.lynda.olivepress.Main
You crushed a Kalamata olive
You crushed a Ligurian olive
You crushed a Kalamata olive
You have 5 units of oil
You crushed a Kalamata olive
You crushed a Ligurian olive
You crushed a Kalamata olive
Now you have 10 units of oil
Olive 1 is from Greece

JavaDocs
Source > Generate Element Comment
/**
* @author SiloSix
*
*/

File > Export > Java > JavaDoc

javadoc.exe: C:\Program Files\Java\jdk1.6.0_33\bin\javadoc.exe



Resources
- apache commons
JUnit Class for testing:
- Annotations
- @Test, @Before, @After, @BeforeClass, @AfterClass, @Ignore
Code:
import static org.junit.Assert.*;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
public class myJUnit1 {
//No main() method, so JUnit will take over
@BeforeClass
public static void mBeforeTestClass(){
System.out.println("--------ClassBegin------------------");
}
//Annotation: Before EACH @Test
@Before
public void mBeforeTest(){
System.out.println("--------------------------");
}
//Gets executed every time we run the JUnit program
@Test
public void test1(){
if (mMultiply(10,30)==300) {
System.out.println("Multiply Pass");
} else {
System.out.println("Multiply Fail");
fail("Multiply Failed for 10 and 30");
}
}
//Test 2 code
@Test
public void test2(){
if (mAdd(10,30)==300){
System.out.println("Add Pass");
} else {
System.out.println("Add Fail");
fail("Add Failed for 10 and 30");
}
}
//Test 3 code
@Test
public void test3(){
if(mDivide(10,30)==300) {
System.out.println("Divide Pass");
} else {
System.out.println("Divide Fail");
fail("Divide Failed for 10 and 30");
}
}
//Test 4 code won't run due to @Ignore
@Ignore
@Test
public void test4(){
if(mDivide(10,30)==300) {
System.out.println("Divide Pass");
} else {
System.out.println("Divide Fail");
fail("Divide Failed for 10 and 30");
}
}
// Runs after EACH @Test
@After
public void mAfterTest(){
System.out.println("--------------------------");
}
@AfterClass
public static void mAfterTestClass(){
System.out.println("---------Class End-----------------");
}
//Multiply
public int mMultiply(int x, int y){
return x*y;
}
//Add
public int mAdd(int x, int y){
return x+y;
}
//Divide
public double mDivide(int x, int y){
return x/y;
}
}

Eclipse Web Services Project
Get Dependencies:
Axis2 Tools
Eclipse Java Web Developer Tools
Eclipse Web Developer Tools
Eclipse Java EE Developer Tools
JST Server Adapters
JST Server Adapters Extensions

Get Axis2 tools

Get Eclipse Java Web Developer Tools

Get Eclipse Web Developer Tools

Get Eclipse Java EE Developer Tools

Get JST Server Adapters

Get JST Server Adapters Extensions

Get JAX-WS Tools


Create Web Service Server
Create Project (Server)
New\Dynamic Web Project
New Runtime…

Configuration\Modify
Select Axis2 Web Services
Set Dynamic Web Module = 2.5

Configure Axis2 Web Services Core 1.1

If this step isn’t performed, the following error message will be displayed when attempting to use the Axis2 Project Facet


Create Class (Server)
Add Class\OperatorClass

OperatorClass Code
|
public class OperatorClass {
public int Add(int a, int b){
return a+b;
} }
|

Create Service (Server)
New\Web Service

Run On Server\AddServiceServer (whole project)
Ensure Tomcat is running, then run

AddServiceServer successfully running on the server

Click on Services\OperatorClass
The WSDL will be shown, copy link
http://localhost:8080/AddServiceServer/services/OperatorClass?wsdl

WSDL
|
<?xml version="1.0" encoding="UTF-8" ?> - <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:ns1="http://org.apache.axis2/xsd" xmlns:ns="http://ws.apache.org/axis2" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" targetNamespace="http://ws.apache.org/axis2"> <wsdl:documentation>Please Type your service description here</wsdl:documentation> - <wsdl:types> - <xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://ws.apache.org/axis2"> - <xs:element name="Add"> - <xs:complexType> - <xs:sequence> <xs:element minOccurs="0" name="a" type="xs:int" /> <xs:element minOccurs="0" name="b" type="xs:int" /> </xs:sequence> </xs:complexType> </xs:element> - <xs:element name="AddResponse"> - <xs:complexType> - <xs:sequence> <xs:element minOccurs="0" name="return" type="xs:int" /> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> </wsdl:types> - <wsdl:message name="AddRequest"> <wsdl:part name="parameters" element="ns:Add" /> </wsdl:message> - <wsdl:message name="AddResponse"> <wsdl:part name="parameters" element="ns:AddResponse" /> </wsdl:message> - <wsdl:portType name="OperatorClassPortType"> - <wsdl:operation name="Add"> <wsdl:input message="ns:AddRequest" wsaw:Action="urn:Add" /> <wsdl:output message="ns:AddResponse" wsaw:Action="urn:AddResponse" /> </wsdl:operation> </wsdl:portType> - <wsdl:binding name="OperatorClassSoap11Binding" type="ns:OperatorClassPortType"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" /> - <wsdl:operation name="Add"> <soap:operation soapAction="urn:Add" style="document" /> - <wsdl:input> <soap:body use="literal" /> </wsdl:input> - <wsdl:output> <soap:body use="literal" /> </wsdl:output> </wsdl:operation> </wsdl:binding> - <wsdl:binding name="OperatorClassSoap12Binding" type="ns:OperatorClassPortType"> <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" /> - <wsdl:operation name="Add"> <soap12:operation soapAction="urn:Add" style="document" /> - <wsdl:input> <soap12:body use="literal" /> </wsdl:input> - <wsdl:output> <soap12:body use="literal" /> </wsdl:output> </wsdl:operation> </wsdl:binding> - <wsdl:binding name="OperatorClassHttpBinding" type="ns:OperatorClassPortType"> <http:binding verb="POST" /> - <wsdl:operation name="Add"> <http:operation location="Add" /> - <wsdl:input> <mime:content type="application/xml" part="parameters" /> </wsdl:input> - <wsdl:output> <mime:content type="application/xml" part="parameters" /> </wsdl:output> </wsdl:operation> </wsdl:binding> - <wsdl:service name="OperatorClass"> - <wsdl:port name="OperatorClassHttpSoap11Endpoint" binding="ns:OperatorClassSoap11Binding"> <soap:address location="http://localhost:8080/AddServiceServer/services/OperatorClass.OperatorClassHttpSoap11Endpoint/" /> </wsdl:port> - <wsdl:port name="OperatorClassHttpSoap12Endpoint" binding="ns:OperatorClassSoap12Binding"> <soap12:address location="http://localhost:8080/AddServiceServer/services/OperatorClass.OperatorClassHttpSoap12Endpoint/" /> </wsdl:port> - <wsdl:port name="OperatorClassHttpEndpoint" binding="ns:OperatorClassHttpBinding"> <http:address location="http://localhost:8080/AddServiceServer/services/OperatorClass.OperatorClassHttpEndpoint/" /> </wsdl:port> </wsdl:service> </wsdl:definitions>
|

Create Web Service Client
Create Project (Client)
New\Dynamic Web Project

Java Settings

Web Module


Create Service (Client)
New\Other…\Web Service Client



Create Class (Client)
Create New\Class


|
import java.rmi.RemoteException;
import org.apache.ws.axis2.OperatorClassStub; import org.apache.ws.axis2.OperatorClassStub.Add;
public class TestOperatorClassServer {
/** * @param args * @throws RemoteException */ public static void main(String[] args) throws RemoteException { // TODO Auto-generated method stub
OperatorClassStub classStub = new OperatorClassStub();
Add add0 = new Add();
add0.setA(8); add0.setB(9); int finalvalue = classStub.add(add0).get_return();
System.out.println(finalvalue); }
} |
Run the class



Installing Java and Eclipse on Ubuntu Linux: 2013 Updates
Do you have a JDK installed? You likely want to put $JDK_HOME/bin on your PATH, not the /bin of a JRE, as jar comes with JDK, not JRE.
Do this:
- Delete all installations of Java.
- Install the Java SDK (self-extracting) into /opt/jdk1.6.0_16 (for example)
- Create a symbolic link: ln -s /opt/jdk1.6.0_16 /opt/jdk
- Edit $HOME/.bashrc:
JAVA_HOME=/opt/jdk
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
- Logout and log back in.
This offers many advantages:
- You can install multiple versions of the SDK and need only switch a symbolic link.
- You know where all the files are located.
- You know exactly which version of Java is being used.
- No other versions are installed, so there cannot be any conflicts.
I have done this for years and have never had any problems with Java on Linux, except for packages that do not detect that Java is installed and attempt to install the OpenJDK.
Also, stay away from the OpenJDK as its fonts are terrible to behold.

EXTRAS

EXTRAS
Tutorial Glassfish Configuration

XXX
Web Services - Attempt1
New\Web\Dynamic Web Project

Select Tomcat v7

Browse for the Tomcat 7 Runtime on the Tomcat server, it needed Eclipse will download and install the runtime

Modify Configuration
Tomcat7 default

Add Axis2 Web Services

Need to select Dynamic Web Module v2.5 to clear above Axis2 error message

Need to add Axis2 Tools (v1.1.200.v201103…

You can set Project facets after the fact via Project\Properties

Download Apache Axis2 Binaries/Docs/War
http://axis.apache.org/axis2/java/core/download.cgi
Apache Axis2 ReleasesThis page provides links to the release versions of Axis2 Java. For more information, please see Apache Release FAQ. Different types of distributions are available for each released version:
1.6.x releasesThe following versions are available:
|

Create a Class

Run the Wizard for new WebService

Select Web Service Wizard

Click Browse and enter the class name to use for WebService

OperatorClass

Server Selection

Generate a default services.xml file


Tomcat will start..

Run OperatorClass.java on the Tomcat Server..



Create Web Service Client

Create Web Services Client


- Log in to post comments

