Examples of Persistable


Examples of org.persvr.data.Persistable

  public void grantCapability(Persistable target, final String levelName) {
   
    if(target.getId().source == DataSourceManager.getMetaClassSource() && target.getId() instanceof Query){
      target = DataSourceManager.getRootObject();
    }
    final Persistable persistable = target;
    int level = permissionNameLevelMap.get(levelName);
    if (UserSecurity.getPermissionLevel(persistable) < FULL_ACCESS)
      throw new SecurityException("You do not have permission to grant this authorization to this resource");
    computedPermissions.clear(); // clear the cache first
      UserSecurity.doPriviledgedAction(new PrivilegedAction() {

      public Object run() {
        for (Entry<String,Integer> permissionEntry : permissionNameLevelMap.entrySet()){
          Object grantedObject = noCheckGet(permissionEntry.getKey());
          if (grantedObject instanceof PersistableList) {
            PersistableList<Persistable> granted = (PersistableList<Persistable>) grantedObject;
            if(permissionEntry.getValue() == 7) {
              // if it is granted, we want to clean out bad entries from the previous version of Persevere
              for (int i = granted.size(); i > 0;){
                i--;
                Object grantee = granted.get(i);
                if (!(grantee instanceof Capability)){
                  granted.remove(i);
                }
              }
            }
            if (granted.contains(persistable)){
              if (permissionEntry.getKey().equals(levelName)) {
                // already has the right permission
                return null;
              }
              else {
                granted.remove(persistable);
              }
            }
          }
        }
        Object granted = noCheckGet(levelName);
        if (!(granted instanceof PersistableList)){
          granted = Persevere.newArray();
          set(levelName, granted);
        }
        ((PersistableList)granted).add(persistable);
        return null;
      }
      });     
   
    if (allGranted != null)
      allGranted.put(persistable.getId(), level);
  }
View Full Code Here

Examples of org.persvr.data.Persistable

       */
    @Override
    public String handle(ClientImpl client, Transport transport, Message message) throws IOException {
      if (!message.getChannel().startsWith("/meta")){
        // These are published messages
        Persistable target = (Persistable) Identification.idForString((String) message.getChannel()).getTarget();
        Function messageFunc = (Function) target.get("message");
        messageFunc.call(PersevereContextFactory.getContext(), GlobalData.getGlobalScope(), target, new Object[]{message.getData()});
        // don't actually publish it, let Persevere handle it
        return null;
      }
      if (message.getChannel().startsWith("/meta/subscribe")){
View Full Code Here

Examples of org.persvr.data.Persistable

            String changesSinceString = PersevereFilter.getParameter(httpRequest,"changesSince");
            if (changesSinceString != null)
              ifModifiedSince = Long.parseLong(changesSinceString);
            locale = PersevereFilter.getHeader(httpRequest,"Accept-Language");
          }
          Persistable object = null;
              //Id requestedId = new Id(requestedObject); // removes the leading underscore
              //requestedId.source = sourceURL;
          String field = null;
              Object value = null;
            Identification id = Identification.idForString(requestedPath);
View Full Code Here

Examples of org.persvr.data.Persistable

        output.append("{data:");
        output.append(JsponEncoding.makeList(clientObjectsChangeIdNeeded.entrySet(), new JsponEncoding.ItemHandler() {
          public String handleItem(Object object) {
            Map.Entry<String,Persistable> clientObject = (Map.Entry<String,Persistable>) object;
            Persistable obj = clientObject.getValue();
            shouldSerialize(obj);
            return "{aliasId:\"" + clientObject.getKey() + "\",id:\"" + obj.getId() +"\"}";
          }
        }));
        output.append("}");
        clientObjectsChangeIdNeeded.clear();
        return output.toString();
View Full Code Here

Examples of org.persvr.data.Persistable

      return writer.toString();
    }
    public void writeWaitingRPCs() {
      RPCMessage message = dispatchNextMessages();
      Object id = message.getId();
      Persistable result = Persevere.newObject();
      result.put("id", result, id);
      if (message instanceof RPCall) {
        result.put("object",result,((RPCall) message).getTarget());
        result.put("method",result,((RPCall) message).getFunctionName());
        result.put("params",result,new PersistableArray(((RPCall) message).getParameters()));
      }
      else if (message instanceof RPCResponse) {
        result.put("result",result,((RPCResponse) message).getResult());
        result.put("error",result,((RPCResponse) message).getError());
      }
      else
        throw new RuntimeException("Unknown RPC message: " + message);
     
      DataSerializer.serialize(result, getCurrentObjectResponse().getHttpRequest().getHeader("Accept"));
View Full Code Here

Examples of org.persvr.data.Persistable

          switch (state) {
          case HISTORY:
            throw new IllegalStateException("Transaction instance can't be an array");
          case FROZEN_VERSION:
          case CHANGED:
            Persistable object = value instanceof Persistable ? (Persistable) value : objId.getTarget();
            writeObject(object, raf, state, null, null);
            break;
          case REFERENCE_IF_EXISTS:
            if (objId.isPersisted()) {
              raf.writeByte(HEADER_REFERENCE_ARRAY);
              InternalId internalId = convertIdToInternalObject(objId);
              raf.writeInt(internalId.tableId);
              writeEntity(internalId.subObjectId, raf, null);
            } else {
              throw new IllegalStateException();
            }

          }

        } else {
          switch (state) {
          case FROZEN_VERSION:
          case CHANGED:
          case HISTORY:
            Persistable object = value instanceof Persistable ? (Persistable) value : objId.getTarget();
            writeObject(object, raf, state, null, null);
            break;
          case REFERENCE_IF_EXISTS:
            if (objId.isPersisted()) {
              raf.writeByte(HEADER_REFERENCE);
View Full Code Here

Examples of org.persvr.data.Persistable

  }

  Map<Long, Persistable> referenceToVersions = new WeakValueHashMap<Long, Persistable>(100);

  Persistable getVersionByReference(long reference) throws IOException {
    Persistable version;
    synchronized (referenceToVersions) {
      version = referenceToVersions.get(reference);
    }
    if (version == null) {
      getTransactionsReadFile().seek(reference);
View Full Code Here

Examples of org.persvr.data.Persistable

              changes.add(changedObject);
            }
          }
        }
        historyInitializer.setProperty("changes", changes);
        Persistable newHistory = historyInitializer.getInitializingObject();
        long transactionWriteLockTime = 0;
        if(Method.profiling)
          transactionWriteLockTime = Method.startTiming();
        synchronized (transactionLogFile) { // we must write one at a time
          thisCommit = nextCommit++;
View Full Code Here

Examples of org.persvr.data.Persistable

    public Persistable getPreviousVersion() {
      if (previousVersionReference == -1)
        return null;
      try {
        Persistable previous = getVersionByReference(previousVersionReference);
        ObjectVersion previousVersion = (ObjectVersion) previous.getVersion();
        if (previousVersion.isCurrent) {
          previousVersion.isCurrent = false;
          RandomAccessFile transactionsFile = getTransactionsReadFile();
          transactionsFile.seek(previousVersionReference + 1);
          transactionsFile.writeByte(0); // set it to be a non-current version
View Full Code Here

Examples of org.persvr.data.Persistable

        try {
          while (processingTableUpdate > lastUpdatedFromTable) {
            //TODO: this iterates in reverse, so need to find someway to do partial indexes
            //if(numIndexed++ > MAX_TO_INDEX_AT_ONCE && !"id".equals(propertyName))
            //throw new QueryCantBeHandled("Too many items to index at once");
            Persistable lastChangeObject = getVersionByReference(processingTableUpdate);
            Persistable previousObject = lastChangeObject;
            ObjectVersion versionInfo = (ObjectVersion) lastChangeObject.getVersion();
            boolean isDeleted = versionInfo.isDeleted;
            // versionInfo.previousTableChange != processingTableUpdate: "previous  version points to self";
            if (versionInfo.currentVersionReference != processingTableUpdate || versionInfo.previousTableChange >= processingTableUpdate) {
              getVersionByReference(processingTableUpdate);
              throw new IllegalStateException("should not be here");
            }
            long nextTableUpdate = versionInfo.previousTableChange;
            if (versionInfo.isCurrent || writeListener.containsOverWrittenObject(processingTableUpdate)) {
              //System.err.println("bringUpToDate " + lastChangeObject.getId() + " isDelete " + isDeleted + " processing " + processingTableUpdate);
              boolean searching = true;
              do {
                versionInfo = (ObjectVersion) previousObject.getVersion();
                if (versionInfo.previousVersionReference <= lastUpdatedFromTable)
                  searching = false;
                previousObject = versionInfo.getPreviousVersion();
                //System.err.println("bringUpToDate " + lastChangeObject.getId() + " isDelete " + isDeleted + " processing " + processingTableUpdate + " previous " + previousObject);
                // TODO: If we know a point at which the index has definitely not been updated, we don't need to do this removal if versionInfo.previousVersionReference > knownNotHaveBeenIndexed
                if (previousObject != null) {
                  submitIfNeeded(addToObjectsNeedingIndex(new IndexNodeUpdate("id".equals(propertyName) ? convertIdToInternalObject(previousObject
                      .getId()).subObjectId : previousObject.get(propertyName), false, versionInfo.previousVersionReference, this)));
                }
              } while (searching);
              //System.err.println("numIndexed " + (numIndexed++));
              //System.out.println("addin to index " + processingTableUpdate + " " + nextTableUpdate + " " + (this instanceof RootIndexNode ? ((RootIndexNode)this).propertyName : ""));
              if(!isDeleted){
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.