Package nexj.core.runtime

Examples of nexj.core.runtime.Instance


               reverse = null;
            }

            for (Iterator itr = instanceSet.iterator(); itr.hasNext();)
            {
               Instance container = (Instance)itr.next();

               if (m_attribute.isCollection())
               {
                  Object value = container.getOldValueDirect(m_attribute.getOrdinal());
                  InstanceList list;

                  if (value instanceof Undefined)
                  {
                     if (value == Undefined.VALUE)
                     {
                        list = new InstanceArrayList();
                        list.setAssociation(container, m_attribute, true);
                        container.setOldValueDirect(m_attribute.getOrdinal(), list);
                     }
                     else
                     {
                        list = null;
                     }
                  }
                  else
                  {
                     list = (InstanceList)value;
                  }

                  if (list != null)
                  {
                     list.setLazy(false);
                     list.add(instance, InstanceList.DIRECT | InstanceList.REPLACE);
                  }
               }
               else
               {
                  container.setOldValueDirect(m_attribute.getOrdinal(), instance);
               }

               if (reverse != null && !instance.isLazy() && instance.getOldValueDirect(reverse.getOrdinal()) == Undefined.VALUE)
               {
                  instance.setOldValueDirect(reverse.getOrdinal(), container);
View Full Code Here


      {
         for (Iterator setItr = m_parentInstanceMap.valueIterator(); setItr.hasNext();)
         {
            for (Iterator itr = ((Set)setItr.next()).iterator(); itr.hasNext();)
            {
               Instance container = (Instance)itr.next();

               if (m_attribute.isCollection())
               {
                  Object value = container.getOldValueDirect(m_attribute.getOrdinal());
                  InstanceList list;

                  if (value instanceof Undefined)
                  {
                     if (value == Undefined.VALUE)
                     {
                        list = new InstanceArrayList();
                        list.setAssociation(container, m_attribute, true);
                        container.setOldValueDirect(m_attribute.getOrdinal(), list);
                     }
                     else
                     {
                        list = null;
                     }
                  }
                  else
                  {
                     list = (InstanceList)value;
                  }

                  if (list != null)
                  {
                     list.setLazy(false);
                  }
               }
               else if (container.getOldValueDirect(m_attribute.getOrdinal()) == Undefined.VALUE)
               {
                  container.setOldValueDirect(m_attribute.getOrdinal(), null);
               }
            }
         }
      }
   }
View Full Code Here

    */
   protected Object configureFormatter(MessageFormatter messageFormatter, int nArgCount, Machine machine)
   {
      TransferObject tobj = (TransferObject)machine.getArg(0, nArgCount);
      State state = (State) machine.getArg(1, nArgCount);
      final Instance syncLink = (Instance)m_syncLinkExpr.invoke(machine, state, new Object[] {tobj});

      ((ObjectMessageFormatter)messageFormatter).initFormatterStrategy(new Link(syncLink, m_syncScriptExpr, nArgCount,
         machine));

      Object oldValue = machine.getGlobalEnvironment().findVariable(SYNC_LINK);
View Full Code Here

      VirtualDataSourceFragment fragment = (VirtualDataSourceFragment)getFragment();
      ArrayList tobjList = new ArrayList(nEnd - nStart);

      for (int i = nStart; i < nEnd; i++)
      {
         Instance instance = workArray[i].getInstance();
         TransferObject tobj;

         if (nLockingOrdinal >= 0)
         {
            tobj = new TransferObject(instance.getOID(), metaclass.getName(), EVENT, 1);
            tobj.setValue(sLockingAttributeName, instance.getValue(nLockingOrdinal));
         }
         else
         {
            tobj = new TransferObject(instance.getOID(), metaclass.getName(), EVENT, 0);
         }

         tobjList.add(tobj);
      }
View Full Code Here

            }
         }
      }
      else
      {
         Instance assoc = null;

         if (value instanceof InstanceList)
         {
            InstanceList list = (InstanceList)value;

            if (!list.isEmpty())
            {
               assoc = list.getInstance(0);
            }
         }
         else
         {
            assoc = (Instance)value;
         }

         for (int i = 0, n = mapping.getDenormCount(); i < n; ++i)
         {
            RelationalClassDenorm denorm = (RelationalClassDenorm)mapping.getDenorm(i);
            Key dstKey = ((RelationalClassMapping)denorm.getMapping()).getDestinationKey();

            SQLWork work = findWork(uow, instance, denorm.getSourceKey().getTable());

            if (work != null)
            {
               if (assoc != null && assoc.getOID() == null)
               {
                  addDependency(uow, work, assoc, denorm.getSourceKey(), dstKey, true);
               }
               else
               {
View Full Code Here

         return new QueryTimeoutException(e);
      }

      if (isDuplicateKeyException(e))
      {
         Instance firstInstance = null;
         Metaclass commonMetaclass = null;

         if (workArray != null)
         {
            for (int i = nStart; i < nEnd; i++)
            {
               Instance instance = workArray[i].getInstance();
               Metaclass metaclass = instance.getLazyMetaclass();

               if (commonMetaclass == null || metaclass.isUpcast(commonMetaclass))
               {
                  commonMetaclass = metaclass;
                  firstInstance = instance;
               }
               else if (!commonMetaclass.isUpcast(metaclass)) // Metaclasses of instances do not have a common parent; just use root for the first one as a guess.
               {
                  commonMetaclass = instance.getLazyMetaclass().getPersistenceRoot();

                  break;
               }
            }
         }
View Full Code Here

    */
   public void testReadCached()
   {
      Metaclass clazz = m_metadata.getMetaclass("CachedVirtual");
      InstanceList list;
      Instance inst;

      m_context.getGlobalCache().clear();
      clazz.setValue("readCount", Primitive.ZERO_INTEGER);

      // This query fills the cache
      list = Query.createRead(clazz, parse("(x (assoc x))"), parseEval("`(= (@) ,(oid 1))"), null, -1, 0, false, Query.SEC_ALL, m_context).read();

      assertEquals(Primitive.ONE_INTEGER, clazz.getValue("readCount")); // verify that the read was executed
      assertEquals(1, list.size());
      inst = list.getInstance(0);
      assertEquals("101", inst.getValue("x"));
      assertNull(inst.getValue("assoc"));
      assertEquals(Primitive.ONE_INTEGER, clazz.getValue("readCount")); // no lazy

      m_context.removeInstance(inst);
      inst = null;
      list = null;

      // This query should hit the cache
      list = Query.createRead(clazz, parse("(x (assoc x))"), parseEval("`(= (@) ,(oid 1))"), null, -1, 0, false, Query.SEC_ALL, m_context).read();

      assertEquals(Primitive.ONE_INTEGER, clazz.getValue("readCount")); // cache hit
      assertEquals(1, list.size());
      inst = list.getInstance(0);
      assertEquals("101", inst.getValue("x"));
      assertNull(inst.getValue("assoc"));
      assertEquals(Primitive.ONE_INTEGER, clazz.getValue("readCount")); // no lazy

      m_context.removeInstance(inst);
      inst = null;
      list = null;

      // Clear caches
      m_context.getUnitOfWork().rollback();
      m_context.getGlobalCache().clear();

      // This query should miss the cache
      list = Query.createRead(clazz, parse("(x (assoc x))"), parseEval("`(= (@) ,(oid 1))"), null, -1, 0, false, Query.SEC_ALL, m_context).read();

      assertEquals(Primitive.createInteger(2), clazz.getValue("readCount")); // cache miss
      assertEquals(1, list.size());
      inst = list.getInstance(0);
      assertEquals("101", inst.getValue("x"));
      assertNull(inst.getValue("assoc"));
      assertEquals(Primitive.createInteger(2), clazz.getValue("readCount")); // no lazy
   }
View Full Code Here

    */
   public void testReadCachedAssoc()
   {
      Metaclass clazz = m_metadata.getMetaclass("CachedVirtual");
      InstanceList list;
      Instance inst;
      Instance assoc;

      m_context.getGlobalCache().clear();
      clazz.setValue("readCount", Primitive.ZERO_INTEGER);

      // This query fills the cache with key (CachedVirtual . OID:1:I1:3)
      list = Query.createRead(clazz, parse("(x (assoc x))"), parseEval("`(= (@) ,(oid 3))"), null, -1, 0, false, Query.SEC_ALL, m_context).read();

      assertEquals(Primitive.createInteger(1), clazz.getValue("readCount")); // verify that the read was executed
      assertEquals(1, list.size());
      inst = list.getInstance(0);
      assertEquals("303", inst.getValue("x"));
      assertNull(inst.getValue("assoc"));
      assertEquals(Primitive.createInteger(1), clazz.getValue("readCount")); // no lazy

      m_context.removeInstance(inst);
      inst = null;
      list = null;

      // The association query does not hit the cache because key is (:class CachedVirtual "(= (@ <"<OID_TYPE>">) #<OID:1:I1:3>)")
      list = Query.createRead(clazz, parse("(x (assoc x))"), parseEval("`(= (@) ,(oid 2))"), null, -1, 0, false, Query.SEC_ALL, m_context).read();

      assertEquals(Primitive.createInteger(3), clazz.getValue("readCount")); // reads both again
      assertEquals(1, list.size());
      inst = list.getInstance(0);
      assertEquals("202", inst.getValue("x"));
      assoc = (Instance)inst.getValue("assoc");
      assertEquals("303", assoc.getValue("x"));
      assertEquals(Primitive.createInteger(3), clazz.getValue("readCount")); // no lazy

      m_context.removeInstance(inst);
      m_context.removeInstance(assoc);
      assoc = inst = null;
      list = null;

      // The association query does hit the cache because the where clause cache key is now known (from the previous read)
      list = Query.createRead(clazz, parse("(x (assoc x))"), parseEval("`(= (@) ,(oid 4))"), null, -1, 0, false, Query.SEC_ALL, m_context).read();

      assertEquals(Primitive.createInteger(4), clazz.getValue("readCount")); // reads (oid 4), but (oid 3) is taken from cache
      assertEquals(1, list.size());
      inst = list.getInstance(0);
      assertEquals("404", inst.getValue("x"));
      assoc = (Instance)inst.getValue("assoc");
      assertEquals("303", assoc.getValue("x"));
      assertEquals(Primitive.createInteger(4), clazz.getValue("readCount")); // no lazy

      m_context.removeInstance(inst);
      m_context.removeInstance(assoc);
      assoc = inst = null;
      list = null;

      // Clear caches
      m_context.getUnitOfWork().rollback();
      m_context.getGlobalCache().clear();

      // This query should miss the cache
      list = Query.createRead(clazz, parse("(x (assoc x))"), parseEval("`(= (@) ,(oid 2))"), null, -1, 0, false, Query.SEC_ALL, m_context).read();

      assertEquals(Primitive.createInteger(6), clazz.getValue("readCount")); // cache miss
      assertEquals(1, list.size());
      inst = list.getInstance(0);
      assertEquals("202", inst.getValue("x"));
      assoc = (Instance)inst.getValue("assoc");
      assertEquals("303", assoc.getValue("x"));
      assertEquals(Primitive.createInteger(6), clazz.getValue("readCount")); // no lazy
   }
View Full Code Here

    */
   public void testUpdateChangeOID()
   {
      Metaclass penClass = m_metadata.getMetaclass("AnimalPen");
      InstanceList list;
      Instance inst;

      list = Query.createRead(penClass,
         parse("(name)"), parseEval("`(= (@) ,(oid \"North\" 8))"),
         null, -1, 0, false, Query.SEC_NODE, m_context).read();
      assertEquals(1, list.size());
      inst = list.getInstance(0);
      assertEquals("Dog pen", inst.getValue("name"));

      // Change the OID-mapped attributes
      inst.setValue("k1", "South");
      inst.setValue("k2", Primitive.createInteger(2));
      m_context.getUnitOfWork().commit();

      // Verify that OID has changed.
      list = Query.createRead(penClass,
         parse("(name)"), parseEval("`(= (@) ,(oid \"North\" 8))"),
         null, -1, 0, false, Query.SEC_NODE, m_context).read();
      assertEquals(0, list.size());
      list = Query.createRead(penClass,
         parse("(name)"), parseEval("`(= (@) ,(oid \"South\" 2))"),
         null, -1, 0, false, Query.SEC_NODE, m_context).read();
      assertEquals(1, list.size());
      inst = list.getInstance(0);
      assertEquals("Dog pen", inst.getValue("name"));
   }
View Full Code Here

    */
   public void testUpdateWithAssocToCreated()
   {
      Metaclass animalClass = m_metadata.getMetaclass("Animal");
      Metaclass penClass = m_metadata.getMetaclass("AnimalPen");
      Instance animal, pen;
      InstanceList list;

      // Create new pen & update existing animal
      pen = (Instance)penClass.invoke("new", new Object[]
      {
         new Pair(Symbol.define("name"), "Chimpanzee pen")
      });
      list = Query.createRead(animalClass,
         parse("(commonName pen)"), parse("(= (@ commonName) \"Beaver\")"),
         null, -1, 0, false, Query.SEC_NODE, m_context).read();
      assertEquals(1, list.size());
      animal = list.getInstance(0);
      assertEquals("Beaver", animal.getValue("commonName"));
      assertNull(animal.getValue("pen"));
      animal.setValue("pen", pen);

      m_context.getUnitOfWork().commit();

      // Read the animal, check the assoc to its pen
      list = Query.createRead(animalClass,
         parse("(commonName pen)"), parse("(= (@ commonName) \"Beaver\")"),
         null, -1, 0, false, Query.SEC_NODE, m_context).read();
      assertEquals(1, list.size());
      animal = list.getInstance(0);
      assertEquals("Beaver", animal.getValue("commonName"));
      pen = (Instance)animal.getValue("pen");
      assertEquals("Chimpanzee pen", pen.getValue("name"));

      // Read the pen, check the collection of its animals
      list = Query.createRead(penClass,
         parse("(name animals)"), parse("(= (@ name) \"Chimpanzee pen\")"),
         null, -1, 0, false, Query.SEC_NODE, m_context).read();
      assertEquals(1, list.size());
      pen = list.getInstance(0);
      assertEquals("Chimpanzee pen", pen.getValue("name"));
      list = (InstanceList)pen.getValue("animals");
      assertEquals(1, list.size());
      animal = list.getInstance(0);
      assertEquals("Beaver", animal.getValue("commonName"));
   }
View Full Code Here

TOP

Related Classes of nexj.core.runtime.Instance

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.