コード例 #1
0
 /**
  * Helper method to get the plugin module method hooks, the module references
  *
  * @param app the app to invoke
  * @return an immutable map of the on-module refs of the apps
  */
 private List<OnModuleReference> onModuleRefs(App app) {
   List<OnModuleReference> list = Lists.newArrayList();
   for (Method method : app.getClass().getDeclaredMethods()) {
     if (!method.getName().equals("onModule")) {
       continue;
     }
     if (method.getParameterTypes().length == 0 || method.getParameterTypes().length > 1) {
       logger.warn(
           "plugin {} implementing onModule with no parameters or more than one parameter",
           app.name());
       continue;
     }
     Class moduleClass = method.getParameterTypes()[0];
     if (!Module.class.isAssignableFrom(moduleClass)) {
       logger.warn(
           "plugin {} implementing onModule by the type is not of Module type {}",
           app.name(),
           moduleClass);
       continue;
     }
     method.setAccessible(true);
     list.add(new OnModuleReference(moduleClass, method));
   }
   return list;
 }
コード例 #2
0
ファイル: Status.java プロジェクト: kishoreg/incubator-s4
    public void readClusterFromZk() throws Exception {
      List<String> processes;
      List<String> tasks;

      tasks = zkClient.getChildren(taskPath);
      processes = zkClient.getChildren(processPath);

      taskNumber = tasks.size();

      for (int i = 0; i < processes.size(); i++) {
        ZNRecord process = zkClient.readData(processPath + "/" + processes.get(i), true);
        if (process != null) {
          int partition = Integer.parseInt(process.getSimpleField("partition"));
          String host = process.getSimpleField("host");
          int port = Integer.parseInt(process.getSimpleField("port"));
          String taskId = process.getSimpleField("taskId");
          ClusterNode node = new ClusterNode(partition, port, host, taskId);
          nodes.add(node);
        }
      }

      app = new App();
      app.cluster = clusterName;
      try {
        ZNRecord appRecord = zkClient.readData(appPath);
        app.name = appRecord.getSimpleField("name");
        app.uri = appRecord.getSimpleField("s4r_uri");
      } catch (ZkNoNodeException e) {
        logger.warn(appPath + " doesn't exist");
      }
    }
コード例 #3
0
 public void processModule(Module module) {
   for (App app : moduleApps.values()) {
     app.processModule(module);
     // see if there are onModule references
     List<OnModuleReference> references = onModuleReferences.get(app);
     if (references != null) {
       for (OnModuleReference reference : references) {
         if (reference.moduleClass.isAssignableFrom(module.getClass())) {
           try {
             reference.onModuleMethod.invoke(app, module);
           } catch (Exception e) {
             logger.warn("app {}, failed to invoke custom onModule method", e, app.name());
           }
         }
       }
     }
   }
 }
コード例 #4
0
 @Override
 public void endElement(String localName) {
   super.endElement(localName);
   if (mApp != null) {
     // We are inside <app>
     if (localName.equalsIgnoreCase("app")) {
       // Closing tag of <app> - add to vector and be ready for next one
       if (!mApp.name.equals("")) {
         // name is a must
         mApps.add(mApp);
       }
       mApp = null;
     } else {
       // Not the closing tag - we decode possible inner tags
       if (localName.equalsIgnoreCase("name")) {
         mApp.name = getCurrentElement();
       } else if (localName.equalsIgnoreCase("user_friendly_name")) {
         mApp.user_friendly_name = getCurrentElement();
       }
     }
   }
 }