Package nexj.core.persistence

Examples of nexj.core.persistence.OID


      pair = action.getAttributes();
      assertEquals("e", pair.getHead());
      assertEquals("f", pair.getNext().getHead());
      assertNull(pair.getNext().getNext());

      OID oid = contact.getOID();

      assertEquals(1, oid.getCount());
      assertEquals("123", oid.getValue(0));

      assertEquals("Contact-test", contact.getClassName());
      assertEquals("update", contact.getEventName());
      assertEquals(12345, contact.getVersion());
      assertEquals(24, contact.getValueCount());
      assertEquals("Java", contact.getValue("firstName"));
      assertEquals("Kava", contact.getValue("lastName"));
      assertNull(contact.getValue("null"));
      assertSame(contact, contact.getValue("self"));
      assertEquals(new Integer(1), contact.getValue("integer"));
      assertEquals(new Long(2), contact.getValue("long"));
      assertEquals(new Float(0.625f), contact.getValue("float"));
      assertEquals(new Double(1.625), contact.getValue("double"));
      assertEquals(new BigDecimal("1.2345"), contact.getValue("decimal"));
      assertEquals(new Timestamp(12345), contact.getValue("timestamp"));
      assertEquals(Boolean.TRUE, contact.getValue("boolean"));
      assertEquals(new Binary(new byte[]{1, 2, 3, 4, 5}), contact.getValue("binary"));
      assertEquals(new Binary(new byte[]{1, 2, 3, 4, 5, 6, 7}), contact.getValue("binary2"));
      assertEquals(new Binary(new byte[]{1, 2}), contact.getValue("binary3"));
      assertEquals("sym", ((Symbol)contact.getValue("symbol")).getName());
      assertSame(Symbol.define("sym"), contact.getValue("symbol"));
     
      Pair pairA = (Pair)contact.getValue("pair");
      assertEquals("A", pairA.getHead());
     
      Pair pairB = pairA.getNext();
      assertEquals("B", pairB.getHead());
      assertNull(pairB.getTail());

      char[] cvec = (char[])contact.getValue("cvector");

      assertEquals(3, cvec.length);
      assertEquals('a', cvec[0]);
      assertEquals('b', cvec[1]);
      assertEquals('c', cvec[2]);

      byte[] bvec = (byte[])contact.getValue("bvector");

      assertEquals(3, bvec.length);
      assertEquals(0, bvec[0]);
      assertEquals((byte)0xAB, bvec[1]);
      assertEquals(0x12, bvec[2]);

      String[] svec = (String[])contact.getValue("svector");

      assertEquals(3, svec.length);
      assertEquals("a", svec[0]);
      assertEquals("b", svec[1]);
      assertEquals("c", svec[2]);

      // XMLMarshaller is hardcoded to marshal Object[] as List for compatibility with MS.NET
      List vec = (List)contact.getValue("vector");

      assertEquals(3, vec.size());
      assertEquals("a", vec.get(0));
      assertEquals("b", vec.get(1));
      assertEquals("c", vec.get(2));

      PCodeFunction fun = (PCodeFunction)contact.getValue("function");

      assertEquals(3, fun.code.length);
      assertEquals(0, fun.code[0]);
      assertEquals(1, fun.code[1]);
      assertEquals(2, fun.code[2]);
      assertEquals(1, fun.constants.length);
      assertEquals("abc", fun.constants[0]);
     
      PCodeMacro mac = (PCodeMacro)contact.getValue("macro");
     
      assertEquals(3, mac.code.length);
      assertEquals(3, mac.code[0]);
      assertEquals(4, mac.code[1]);
      assertEquals(5, mac.code[2]);
      assertEquals(1, mac.constants.length);
      assertEquals("cde", mac.constants[0]);

      PrivilegeSet privilegeSet = (PrivilegeSet)contact.getValue("privilegeSet");

      assertTrue(privilegeSet.contains(Repository
                                          .getMetadata()
                                             .getPrimitivePrivilege("updateContact")));
      assertTrue(privilegeSet.contains(Repository
                                          .getMetadata()
                                             .getPrimitivePrivilege("WorkflowManage")));
      assertFalse(privilegeSet.contains(Repository
                                           .getMetadata()
                                              .getPrimitivePrivilege("createContact")));

      List addressList = (List)contact.getValue("addresses");

      assertEquals(2, addressList.size());

      TransferObject addr1 = (TransferObject)addressList.get(0);

      oid = addr1.getOID();

      assertEquals(1, oid.getCount());
      assertEquals("456", oid.getValue(0));

      assertEquals("Address-test", addr1.getClassName());
      assertEquals("update", addr1.getEventName());
      assertEquals(0, addr1.getVersion());
      assertEquals("Canada", addr1.getValue("country"));
View Full Code Here


   protected void addCreate(UnitOfWork uow, Instance instance)
   {
      Metaclass metaclass = instance.getMetaclass();
      int nCount = metaclass.getInstanceAttributeCount();
      VirtualMapping mapping = (VirtualMapping)instance.getPersistenceMapping();
      OID oid = instance.getOID();
      VirtualWork work = getWork(uow, VirtualWork.CREATE, instance);

      if (oid == null)
      {
         Component keyGen = mapping.getKeyGenerator();

         if (keyGen != null)
         {
            oid = ((OIDGenerator)keyGen.getInstance(uow.getInvocationContext())).generateOID(instance, this);
         }
         else
         {
            // Compute OID from attribute values
            Object[] valueArray = null;

            for (int i = 0; i < nCount; i++)
            {
               Attribute attribute = metaclass.getInstanceAttribute(i);

               if (attribute.getType().isPrimitive())
               {
                  VirtualPrimitiveMapping attrMapping = (VirtualPrimitiveMapping)mapping.getAttributeMapping(attribute);

                  if (attrMapping != null// ignore non-persisted attributes
                  {
                     int nKeyPart = attrMapping.getObjectKeyPart();

                     if (nKeyPart >= 0)
                     {
                        Object value = instance.getValueDirect(i);

                        if (value == null)
                        {
                           valueArray = null;

                           break;
                        }

                        if (valueArray == null)
                        {
                           valueArray = new Object[mapping.getObjectKey().getPartCount()];
                        }

                        valueArray[nKeyPart] = value;
                     }
                  }
               }
            }

            if (valueArray != null)
            {
               oid = new OID(valueArray);
            }
         }

         instance.setOID(oid);
      }
View Full Code Here

      Metaclass derivedClass = (derivedMapping == null) ? null : derivedMapping.getMetaclass();

      // If any message part is mapped to special attributes ATTR_EVENT and ATTR_OID,
      // it overrides the event or oid set on message.
      String sEventName = (String)getSystemAttributeValue(derivedComposite, tobj, ObjectMessagePartMapping.ATTR_EVENT);
      OID oid = (OID)getSystemAttributeValue(derivedComposite, tobj, ObjectMessagePartMapping.ATTR_OID);

      if (sEventName != null)
      {
         setEventName(tobj, sEventName);
      }
View Full Code Here

    */
   public void removeInstance(Instance instance)
   {
      if (m_instanceRefMap != null)
      {
         OID oid = instance.getOID();

         if (oid != null)
         {
            InstanceRef ref = (InstanceRef)m_instanceRefMap.remove(oid,
               instance.getLazyMetaclass().getPersistenceRoot());
View Full Code Here

      if (list != null && !list.isLazy())
      {
         return list;
      }

      OID oid = primary.getOID();

      if (oid == null)
      {
         if (list != null)
         {
            return list;
         }

         list = new InstanceArrayList(4);
      }
      else
      {
         Pair attributes =
            new Pair(Symbol.define("name"),
            new Pair(Symbol.define("version"),
            new Pair(Symbol.define("serializedState"),
            new Pair(Symbol.define("serializedVariables")))));
         Object where = Pair.attribute("oid").eq(oid.toBinary()).and(
            Pair.attribute("class").eq(primary.getMetaclass().getName()));

         InstanceList ilist = Query.createRead(metaclass, attributes, where, null, -1, 0,
            false, Query.SEC_NONE, m_context).read();
View Full Code Here

      }

      Metaclass metaclass = m_context.getMetadata().getMetaclass(tobj.getClassName());
      Attribute lockingAttribute = (metaclass.getPersistenceMapping() != null) ? metaclass.getPersistenceMapping()
         .getLockingAttribute() : null;
      OID oid = tobj.getOID();

      if (isCached())
      {
         if (oid == null)
         {
            instance = null;
         }
         else
         {
            instance = m_context.lockInstance(metaclass, oid, tobj.getEventName() != null);

            if (instance != null && instance.isLazy())
            {
               if (tobj.getVersion() >= 0)
               {
                  instance.setMetaclass(metaclass);
               }
               else if (instance.getLazyMetaclass().isUpcast(metaclass))
               {
                  instance.setLazyMetaclass(metaclass);
               }
            }
         }

         if ("create".equals(tobj.getEventName()))
         {
            if (instance == null)
            {
               instance = new Instance(metaclass, m_context);
               instance.setNew();
               instance.setOID(oid);
            }
         }
         else
         {
            if (instance == null)
            {
               instance = new Instance(metaclass, tobj.getVersion() < 0, m_context);
               m_context.getUnitOfWork().lock(instance.cache(oid), tobj.getEventName() != null);
            }
            else if ((m_nMode & CACHE) != 0 && instance.isCached())
            {
               return instance;
            }
         }

         if ((m_nMode & CACHE) != 0)
         {
            instance.setCached(true);
         }
      }
      else
      {
         if (oid == null)
         {
            instance = new Instance(metaclass, m_context);
            instance.setNew();
            instance.getUnitOfWork().keepChange(instance);
         }
         else
         {
            if (m_context.isProtected() && m_context.isSecure())
            {
               metaclass.checkReadAccess(m_context.getPrivilegeSet());
            }

            instance = m_context.lockInstance(metaclass, oid, tobj.getEventName() != null);

            if (instance == null)
            {
               PersistenceMapping mapping = metaclass.getPersistenceMapping();

               if (mapping != null)
               {
                  Object[] valueArray = oid.getValueArray();
                  Key key = mapping.getObjectKey();

                  if (key.getPartCount() != valueArray.length)
                  {
                     throw new RequestException("err.rpc.oidPartCount", new Object[]
View Full Code Here

                             
            Instance instance = work.getInstance();

            if (instance.getOID() == null)
            {
               OID oid = work.computeOID();

               if (oid == null)
               {
                  throw new PersistenceException("err.persistence.requiredOID",
                     new Object[]{instance.getLazyMetaclass()});
View Full Code Here

      {
         s_logger.debug("addInsert(uow=\"" + uow + "\", instance=\"" + instance + "\")");
      }
     
      FileMapping fileMapping = (FileMapping)instance.getPersistenceMapping();
      OID oid = instance.getOID();

      getWork(uow, FileWork.INSERT, instance);

      if (oid == null)
      {
         //Generate OID using key generator specified in metadata configuration
         Component component = fileMapping.getKeyGenerator();

         oid = ((OIDGenerator)component.getInstance(uow.getInvocationContext())).generateOID(instance, this);

         //OID must be a single value, converted to a string.
         Object[] oidValues = oid.getValueArray();

         if (oidValues.length != 1)
         {
            throw new PersistenceException("err.persistence.oidValueCount",
               new Object[]{component.getName(), Primitive.ONE_INTEGER,
View Full Code Here

      else
      {
         throw new InvalidQueryException("err.persistence.file.query");
      }

      OID oid;
     
      /*
       * Two kinds of queries:
       * 1) Lookup by equating a class to an OID.
       * 2) Lookup by equating name field to a string.
       */
      if (aop.getType() instanceof Metaclass)
      {
         if(con.getValue() instanceof OIDHolder)
         {
            oid = ((OIDHolder)con.getValue()).getOID();
         }
         else
         {
            throw new InvalidQueryException("err.persistence.file.query");
         }
      }
      else
      {
         if (con.getType() == Primitive.STRING)
         {
            oid = new OID(new Object[]{con.getValue()});
         }
         else
         {
            throw new InvalidQueryException("err.persistence.file.query");
         }
      }

      String sDataFileName = mapOIDToFile(oid);
     
      if (sDataFileName == null)
      {
         //Interpret badly-formatted OID as "not found"
         return new InstanceArrayList(0);
      }

      //Open file directly
      FileDataSourceFragment fragment = (FileDataSourceFragment)query.getFragment();
      File dataFile = nexj.core.rpc.file.ra.FileManagedConnection.splitNameToSubdirs(
         new File(fragment.getDataDirectory()), sDataFileName,
            fragment.getMaxNameSplits(), fragment.getNameSplitSize(), false);

      if (!dataFile.exists())
      {
         //Not found
         return new InstanceArrayList(0);
      }

      LockableFile directFile = new LockableFile(dataFile);

      //BLOCKING
      directFile.lock(true);
     
      try
      {
         Instance instance = m_context.findInstance(query.getMetaclass(), oid);

         if (instance == null)
         {
            instance = new Instance(query.getMetaclass(), m_context);
            instance.cache(oid);
         }

         for (Iterator i = query.getFieldIterator(); i.hasNext(); )
         {
            Field field = (Field)i.next();
            Attribute attribute = field.getAttribute();
            FilePrimitiveMapping primitiveMapping = (FilePrimitiveMapping)query.getPersistenceMapping().getAttributeMapping(attribute);
           
            switch (primitiveMapping.getSysId())
            {
               case FilePrimitiveMapping.SYSID_ID:
                  instance.setOldValueDirect(attribute.getOrdinal(), oid.getValue(0));
                  break;
                 
               case FilePrimitiveMapping.SYSID_DATA:
                  Object value = null;
                 
View Full Code Here

    */
   protected void receive(final Binary id, final String sQueueName, final String sDispatcherId)
   {
      Channel candidateChannel = m_metadata.findChannel(sQueueName);
      final ObjectQueue channel = (candidateChannel instanceof ObjectQueue) ? (ObjectQueue)candidateChannel : null;
      final OID oid = OID.fromBinary(id);

      run(new ContextRunnable()
      {
         public void run(InvocationContext context) throws Throwable
         {
View Full Code Here

TOP

Related Classes of nexj.core.persistence.OID

Copyright © 2018 www.massapicom. 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.