示例#1
0
  public void storeMeemDefinition(MeemPath meemPath, MeemDefinition meemDefinition) {
    if (DEBUG) {
      logger.info("storing meem def: " + meemPath);
    }

    // only store meemstore paths
    if (meemPath.getSpace().equals(Space.MEEMSTORE)) {
      int meemVersion = meemDefinition.getMeemAttribute().getVersion();
      if (meemVersion > definitionStore.getVersion(meemPath)) {
        definitionStore.store(meemPath, meemDefinition);

        synchronized (meemPaths) {
          if (!meemPaths.containsKey(meemPath.getLocation())) {
            meemPaths.put(meemPath.getLocation(), meemPath);
            meemStoreClient.meemStored(meemPath);
          }
          meemDefinitionClient.meemDefinitionChanged(meemPath, meemDefinition);
          meemContentClient.meemContentChanged(meemPath, null);
        }
      } else {
        // definition version number is same or smaller than the persisted one
        // LogTools.warn(logger, "Request to persist MeemDefinition with lower version number than
        // most recent version");
      }
    }
  }
示例#2
0
  private void startStores(Properties properties) {
    String definitionStoreClassName = properties.getProperty(DEFINITION_STORE_CLASS);
    String contentStoreClassName = properties.getProperty(CONTENT_STORE_CLASS);

    // start definition store
    try {
      Class<?> definitionStoreClass = Class.forName(definitionStoreClassName);

      definitionStore = (MeemStoreDefinitionStore) definitionStoreClass.newInstance();
    } catch (Exception e) {
      logger.log(Level.INFO, "Exception while starting MeemStoreDefinitionStore", e);
    }

    if (definitionStore != null) definitionStore.configure(this, properties);

    //	start content store
    try {
      Class<?> contentStoreClass = Class.forName(contentStoreClassName);

      contentStore = (MeemStoreContentStore) contentStoreClass.newInstance();
    } catch (Exception e) {
      logger.log(Level.INFO, "Exception while starting MeemStoreContentStore", e);
    }

    if (contentStore != null) contentStore.configure(this, properties);
  }
示例#3
0
  public void destroyMeem(MeemPath meemPath) {

    String location = meemPath.getLocation();
    MeemPath removePath;

    synchronized (meemPaths) {
      removePath = (MeemPath) meemPaths.remove(location);

      if (removePath != null) {

        contentStore.remove(meemPath);
        definitionStore.remove(meemPath);

        meemStoreClient.meemDestroyed(meemPath);
        meemDefinitionClient.meemDefinitionChanged(meemPath, null);
        meemContentClient.meemContentChanged(meemPath, null);
      }
    }
  }
示例#4
0
  public void commence() {
    Properties properties = System.getProperties();

    // TODO put this in a commence() method, and close stores on conclude().
    startStores(properties);

    // grab the content and definition paths
    // it is possible to have a content stored without a definition and vice versa

    // -mg- not sure this is really necessary. should just hand off to store to try and
    // load and fail silently if path cannot be found
    HashSet<MeemPath> paths = new HashSet<MeemPath>();
    paths.addAll(contentStore.getAllPaths());
    paths.addAll(definitionStore.getAllPaths());

    for (MeemPath meemPath : paths) {
      meemPaths.put(meemPath.getLocation(), meemPath);
    }
  }