blazeds-data-push-with-remote-object s


http://codeofdoom.com/wordpress/2009/01/29/blazeds-data-push-with-remote-objects/
package com.codeofdoom;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import flex.messaging.MessageBroker;
import flex.messaging.messages.AsyncMessage;
import flex.messaging.messages.Message;
import flex.messaging.services.MessageService;
import flex.messaging.services.ServiceAdapter;
import flex.messaging.util.UUIDUtils;

public class BlazeDsServiceAdapter extends ServiceAdapter
{
Random random;
PersonGenerator thread;
public BlazeDsServiceAdapter()
{
random = new Random();
System.out.println(”Adapter initilized”);
}

public void start()
{
if(thread == null)
{
System.out.println(”Adapter started”);
thread = new PersonGenerator();
thread.start();
}
}

public void stop()
{
System.out.println(”Adapter stopped”);
thread.running = false;
thread=null;
}

private List generatePersons()
{

List arr = new ArrayList();
for (int x=0;x<5;x++)
{
Person p = new Person();
p.setFirstName(”FirstPerson”+x);
p.setLastName(”LastPerson”+x);
p.setAge(random.nextInt(80));
arr.add(p);
}
return arr;
}

public class PersonGenerator extends Thread
{
public boolean running = true;
public void run()
{
String clientId = UUIDUtils.createUUID();
MessageBroker msgBroker = MessageBroker.getMessageBroker(null);
while (running)
{
AsyncMessage msg = new AsyncMessage();
msg.setDestination(”BlazeDsServicePush”);
msg.setClientId(clientId);
List a= generatePersons();
msg.setMessageId(UUIDUtils.createUUID());
msg.setBody(a);
msgBroker.routeMessageToService(msg,null);

try
{
Thread.sleep(5000);
}
catch(InterruptedException e)
{
System.out.println(”Exception”);
e.printStackTrace();
}
}

}
}
@Override
public Object invoke(Message msg)
{
if(msg.getBody().equals(”New”))
{
System.out.println(”Adapter received new”);
return generatePersons();
}
else
{
System.out.println(”Adapter sending message”);
AsyncMessage newMessage = (AsyncMessage)msg;
MessageService msgService = (MessageService)getDestination().getService();
msgService.pushMessageToClients(newMessage, true);
}
return null;
}
}

when server will start it will start pushing data but in invoke() method its going to else loop it not cating the published msg plz can any one suggest solution

public Object invoke(Message msg)
{
if(msg.getBody().equals(”New”))
{
System.out.println(”Adapter received new”);
return generatePersons();
}
else
{
System.out.println(”Adapter sending message”);
AsyncMessage newMessage = (AsyncMessage)msg;
MessageService msgService = (MessageService)getDestination().getService();
msgService.pushMessageToClients(newMessage, true);
}
return null;
}
}