Java tutorial
/* * Copyright (C) 2010 Stanford University * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package edu.stanford.junction.addon; import java.lang.reflect.Method; import java.net.URI; import java.net.URL; import java.util.Map; import org.json.JSONObject; import edu.stanford.junction.JunctionMaker; import edu.stanford.junction.api.activity.JunctionService; import edu.stanford.junction.api.messaging.MessageHandler; import edu.stanford.junction.api.messaging.MessageHeader; /** * TODO: This class is temporarily broken. It requires switchboard information, * and so is XMPP specific for now. * * Line 71 has been commented out, resulting in nothing working here. * */ public class JunctionServiceFactory extends JunctionService { @Override public void onMessageReceived(MessageHeader header, JSONObject message) { // TODO: verify you got an activity request // somehow get the Activity object // that means the request needs // * a host // * an activity descriptor try { URI activityURI = new URI(message.getString("activity")); // TODO: support a factory mapping from serviceName => class String className = message.getString("serviceName"); Class c = null; try { c = Class.forName(className); } catch (Exception e) { System.out.println("Could not find class for service " + className + "."); } JunctionService service = null; Method method = null; try { method = c.getMethod("newInstance"); } catch (Exception e) { System.out.println("No newInstance method found for " + c + "."); } service = (JunctionService) method.invoke(null); String queryPart = activityURI.getQuery(); System.out.println("query part is " + queryPart); String localRole = "Unknown"; int i; if ((i = queryPart.indexOf("role=")) >= 0) { localRole = queryPart.substring(i + 14); if ((i = localRole.indexOf("&")) > 0) { localRole = localRole.substring(0, i); } } System.out.println("Setting service role to " + localRole); service.setRole(localRole); System.out.println("service actorID is " + service.getActorID()); //JunctionMaker.getInstance().newJunction(activityURI,service); } catch (Exception e) { e.printStackTrace(); } } @Override public String getServiceName() { return "ServiceFactory"; } public static void main(String[] argv) { String switchboard = "prpl.stanford.edu"; JunctionService waiter = new JunctionServiceFactory(); waiter.register(switchboard); while (true) { try { Thread.sleep(500000); } catch (Exception e) { } } } }