blob: 617d2b0ec5d4664896c25a69fee92513af5ef507 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2007 IBM Corporation and Others
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Hisashi MIYASHITA - initial API and implementation
*******************************************************************************/
package org.eclipse.actf.examples.aibrowser.launcher;
import java.lang.reflect.Method;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import org.eclipse.actf.examples.aibrowser.launcher.nvm3.Nvm3ServiceEvent;
import org.eclipse.actf.examples.aibrowser.launcher.nvm3.Nvm3ServiceListener;
import org.eclipse.actf.examples.aibrowser.launcher.reflect.Mirror;
public class RequestBrokerProxy {
public static final Object[] EMPTY_ARG = new Object[0];
private static Mirror requestBrokerMirror;
private static Method invokeNavigatorMethod;
private static Method invokeTreeManagerMethod;
private static Method invokeITreeItemMethod;
public static Object invokeNavigator(String method, Object... args) throws Exception {
return invokeNavigatorMethod.invoke(requestBrokerMirror.getObject(), method, args);
}
private static Set<Nvm3ServiceListener> eventListeners = new HashSet<Nvm3ServiceListener>();
public static void addNvm3ServiceListner(Nvm3ServiceListener listener) {
eventListeners.add(listener);
}
public static void removeNvm3ServiceListner(Nvm3ServiceListener listener) {
eventListeners.remove(listener);
}
public static void handleEvent(int id, Object param) {
System.err.println("Event:" + id + " Param:" + param);
Nvm3ServiceEvent ev = new Nvm3ServiceEvent(id, param);
Iterator<Nvm3ServiceListener> it = eventListeners.iterator();
while (it.hasNext()) {
Nvm3ServiceListener listener = it.next();
listener.handleServiceEvent(ev);
}
}
public static Object invokeTreeManager(String method, Object... args) throws Exception {
return invokeTreeManagerMethod.invoke(requestBrokerMirror.getObject(), method, args);
}
public static Object invokeITreeItem(Object item, String method, Object... args)
throws Exception {
return invokeITreeItemMethod.invoke(requestBrokerMirror.getObject(), item, method, args);
}
public static void registerRequestBroker(Object requestBroker) {
System.err.println("Registered!");
requestBrokerMirror = new Mirror(requestBroker);
invokeNavigatorMethod = requestBrokerMirror.getMethod("invokeNavigator");
invokeTreeManagerMethod = requestBrokerMirror.getMethod("invokeTreeManager");
invokeITreeItemMethod = requestBrokerMirror.getMethod("invokeITreeItem");
}
}