/**********************************************************************
* $Source: /cvsroot/jameica/jameica.webadmin/src/de/willuhn/jameica/webadmin/messaging/RestMessageConsumer.java,v $
* $Revision: 1.2 $
* $Date: 2010/09/13 12:45:44 $
* $Author: willuhn $
* $Locker: $
* $State: Exp $
*
* Copyright (c) by willuhn software & services
* All rights reserved
*
**********************************************************************/
package de.willuhn.jameica.webadmin.messaging;
import de.willuhn.jameica.messaging.Message;
import de.willuhn.jameica.messaging.MessageConsumer;
import de.willuhn.jameica.messaging.MessagingQueue;
import de.willuhn.jameica.messaging.QueryMessage;
import de.willuhn.jameica.messaging.SystemMessage;
import de.willuhn.jameica.system.Application;
import de.willuhn.jameica.webadmin.rest.AutoRestBean;
import de.willuhn.logging.Logger;
import de.willuhn.util.ClassFinder;
/**
* Registriert die AutoRestBeans.
*/
public class RestMessageConsumer implements MessageConsumer
{
/**
* @see de.willuhn.jameica.messaging.MessageConsumer#autoRegister()
*/
public boolean autoRegister()
{
return true;
}
/**
* @see de.willuhn.jameica.messaging.MessageConsumer#getExpectedMessageTypes()
*/
public Class[] getExpectedMessageTypes()
{
return new Class[]{SystemMessage.class};
}
/**
* @see de.willuhn.jameica.messaging.MessageConsumer#handleMessage(de.willuhn.jameica.messaging.Message)
*/
public void handleMessage(Message message) throws Exception
{
SystemMessage m = (SystemMessage) message;
if (m.getStatusCode() != SystemMessage.SYSTEM_STARTED)
return;
try
{
Logger.info("searching auto rest beans");
ClassFinder finder = Application.getClassLoader().getClassFinder();
Class<AutoRestBean>[] classes = finder.findImplementors(AutoRestBean.class);
MessagingQueue queue = Application.getMessagingFactory().getMessagingQueue("jameica.webadmin.rest.register");
for (Class<AutoRestBean> c:classes)
{
try
{
AutoRestBean b = c.newInstance();
queue.sendMessage(new QueryMessage(b));
}
catch (Exception e)
{
Logger.error("unable to init auto rest bean " + c.getName() + ", skipping",e);
}
}
}
catch (ClassNotFoundException e)
{
Logger.warn("no auto rest beans found");
}
}
}
/**********************************************************************
* $
**********************************************************************/