Difference between revisions of "Teams Winter 2011/team6/lab2"

From CDOT Wiki
Jump to: navigation, search
Line 167: Line 167:
 
             }
 
             }
 
             }
 
             }
 
           
 
 
lalala
 

Revision as of 14:55, 12 April 2011

Lab 2 OSGI Tutorial

After downloading the “Eclipse classic” from Eclipse then proceed with the following steps to create Chat Program with OSGi.

Create the Chat Interface

The first step is to create the Chat Interface which is the Service Provider in the Program. This defines and provides the services available and the requirements and outcomes for those services.

Define the service interface

a) Create a new Plug-in Project
01NewProj.png
b) Name your Plug-in Project (cs.dps914.osgi.lab.chatinterface) and be sure to select the target platform (OSGi framework: Equinox)
02newproj02.png
c) Be sure to uncheck the “Generate an activator” option as you will not be needing an activator then go ahead and click finish.
03newproj3.png

Create the bundle with the interface

a) You must now create three interfaces: IChatClient, IChatSystem and IMessage
Be sure to edit the package name and the Interface Name.
300px
b) Fill the interfaces with the following information:
Message


05IMessage.png
Chat System
06ChatSystem.png
Chat Client
07ChatClient.png

Export the Package

To register our service we must export the package into the interface bundle
a) Select the MANIFEST.MF
b) In the Runtime tab select Add
08ExportPackage.png
c) Select the chatinterface package
09PackageExported.png


Implement the Chat Provider

Register the service in the class Activator

a) Create a new Plug-in Project
b) Name your Plug-in Project (cs.dps914.osgi.lab.provider) again be sure to select the target platform correctly
c) This time you can leave the Activator checked as you will need it. (Change the name of the activator to cs.dps914.osgi.lab.provider.ChatActivator)
10PActivator.png


Define MANIFEST.MF

a) Select the MANIFEST.MF
b) In the Dependencies tab select Add for Required Plug-ins
c) Add cs.dps914.osgilab.chatinterface
600px


Create Java Classes Required

a) Create 2 Java Classes (SimpleMessage and SimpleChatSystem)
b) Make sure the package is defined correctly (cs.dps914.osgi.lab.provider.internals)
12PClass.png
c) Fill Java Classes with following Data
SimpleMessage.java
           import java.util.Calendar;
           import java.util.Date;
           import cs.dps914.osgi.lab.chatinterface.IMessage;      
           public class SimpleMessage implements IMessage {
           	private String source;
           	private Date time;
           	private String message;
           	
           	public SimpleMessage(String src,String msg) {
           		setSource(src);
           		setTime(Calendar.getInstance().getTime());
           		setMessage(msg);
           	}
           	
           	public void setSource(String src) {
           		if (src!=null) {
           			source=src;
           		} else {
           			source="";
           		}
           	}
           
           	public String getSource() {
           		return source;
           	}
           	
           	public void setTime(Date time) {
           		if (time!=null) {
           			this.time=time;
           		} else {
           			this.time=Calendar.getInstance().getTime();
           		}
           	}
           	public Date getTime() {
           		return time;
           	}
           	public void setMessage(String msg) {
           		if (msg!=null) {
           			message=msg;
           		} else {
           			message="";
           		}
           	}
           	public String getMessage() {
           		return message;
           	}
           }

SimpleChatSystem.java

           import java.util.ArrayList;
           import cs.dps914.osgi.lab.chatinterface.IChatClient;
           import cs.dps914.osgi.lab.chatinterface.IChatSystem;
           import cs.dps914.osgi.lab.chatinterface.IMessage;
           
           public class SimpleChatSystem implements IChatSystem {
           
           	public static ArrayList<IChatClient> clientList=new ArrayList<IChatClient>();
           	public static ArrayList<IMessage> messageList=new ArrayList<IMessage>();
           	
           	public void registerClient(IChatClient client) {
           		clientList.add(client);
           	}
           	
           	public ArrayList<IMessage> appendMessage(String src, String msg) {
           		
           		IMessage newMsg=new SimpleMessage(src,msg);
           		
           		messageList.add(newMsg);
           		
           		for (IChatClient client:clientList) {
           			client.receiveMessage(newMsg);
           		}
           		
           		return messageList;
           	}
           }