Пример #1
0
 /**
  * Executes a background task.
  *
  * <p>The task payload is either type Deferrable or Key; in the latter case, retrieve (then
  * delete) the Deferrable instance from the datastore.
  */
 @Override
 public void doPost(HttpServletRequest req, HttpServletResponse res)
     throws ServletException, IOException {
   try {
     Object payload = deserialize(req);
     if (payload instanceof Key) {
       // get Deferrable from datastore
       Blob taskBlob = (Blob) getDatastoreService().get((Key) payload).getProperty(TASK_PROPERTY);
       deleteEntity((Key) payload);
       if (taskBlob != null) {
         payload = deserialize(taskBlob.getBytes());
       }
     }
     if (payload instanceof Deferrable) {
       ((Deferrable) payload).doTask();
     } else if (payload != null) {
       log.severe("invalid payload type: " + payload.getClass().getName());
       // don't retry task
     }
   } catch (EntityNotFoundException e) {
     log.severe(e.toString()); // don't retry task
   } catch (PermanentTaskFailure e) {
     log.severe(e.toString()); // don't retry task
   }
 }
Пример #2
0
    @Override
    public void stateChanged(ChangeEvent e) {
      Component selected = jtp.getSelectedComponent();
      if (selected instanceof Deferrable) {
        Deferrable deferrable = (Deferrable) selected;
        if (!deferrable.isInitialized()) deferrable.initialize();
      }

      if (selected instanceof Controllable) {
        JPanel controlPanel = ((Controllable) selected).getControlPanel();
        if (controlPanel == null) clearSpecificTaskPane();
        else
          setSpecificTaskPane(
              controlPanel,
              jtp.getTitleAt(jtp.getSelectedIndex()),
              jtp.getIconAt(jtp.getSelectedIndex()));
      } else {
        clearSpecificTaskPane();
      }
    }