Package com.impetus.kundera.graph

Examples of com.impetus.kundera.graph.Node


        EntityMetadata metadata = getMetadata(e.getClass());

        // Create an object graph of the entity object
        ObjectGraph graph = new GraphGenerator().generateGraph(e, this, new ManagedState());

        Node node = graph.getHeadNode();

        try
        {
            lock.writeLock().lock();

            // TODO : push into action queue, get original end-point from
            // persistenceContext first!

            // Action/ExecutionQueue/ActivityQueue :-> id, name, EndPoint,
            // changed
            // state

            // Change state of node, after successful flush processing.
            node.setPersistenceDelegator(this);
            node.remove();

            // build flush stack.

            flushManager.buildFlushStack(node, EventType.DELETE);
View Full Code Here


        if (fs != null)
        {
            boolean isBatch = false;
            while (!fs.isEmpty())
            {
                Node node = fs.pop();

                // Only nodes in Managed and Removed state are flushed, rest
                // are ignored
                if (node.isInState(ManagedState.class) || node.isInState(RemovedState.class))
                {
                    EntityMetadata metadata = getMetadata(node.getDataClass());
                    node.setClient(getClient(metadata));

                    // if batch size is defined.
                    if ((node.getClient() instanceof Batcher) && ((Batcher) (node.getClient())).getBatchSize() > 0)
                    {
                        isBatch = true;
                        ((Batcher) (node.getClient())).addBatch(node);
                    }
                    else if (isTransactionInProgress
                            && MetadataUtils
                                    .defaultTransactionSupported(metadata.getPersistenceUnit(), kunderaMetadata))
                    {
                        onSynchronization(node, metadata);
                    }
                    else
                    {
                        node.flush();
                    }
                }

            }
View Full Code Here

        // Create an object graph of the entity object to be merged
        ObjectGraph graph = new GraphGenerator().generateGraph(e, this);

        // Call merge on each node in object graph
        Node node = graph.getHeadNode();

        try
        {
            lock.writeLock().lock();
            // Change node's state after successful flush.
            node.setPersistenceDelegator(this);
            node.merge();

            // build flush stack.
            flushManager.buildFlushStack(node, EventType.UPDATE);

            flush();
        }
        finally
        {
            lock.writeLock().unlock();
        }
        graph.clear();
        graph = null;

        return (E) node.getData();
    }
View Full Code Here

     * Remove the given entity from the persistence context, causing a managed
     * entity to become detached.
     */
    public void detach(Object entity)
    {
        Node node = getPersistenceCache().getMainCache().getNodeFromCache(entity, getMetadata(entity.getClass()), this);
        if (node != null)
        {
            node.detach();
        }
    }
View Full Code Here

     * Check if the instance is a managed entity instance belonging to the
     * current persistence context.
     */
    boolean contains(Object entity)
    {
        Node node = getPersistenceCache().getMainCache().getNodeFromCache(entity, getMetadata(entity.getClass()), this);
        return node != null && node.isInState(ManagedState.class);
    }
View Full Code Here

    public void refresh(Object entity)
    {
        if (contains(entity))
        {
            MainCache mainCache = (MainCache) getPersistenceCache().getMainCache();
            Node node = mainCache.getNodeFromCache(entity, getMetadata(entity.getClass()), this);
            // Locking as it might read from persistence context.

            try
            {
                lock.readLock().lock();
                node.setPersistenceDelegator(this);
                node.refresh();
            }
            finally
            {
                lock.readLock().unlock();
            }
View Full Code Here

     */
    public static void addEntityToPersistenceCache(Object entity, PersistenceDelegator pd, Object entityId)
    {
        MainCache mainCache = (MainCache) pd.getPersistenceCache().getMainCache();
        String nodeId = ObjectGraphUtils.getNodeId(entityId, entity.getClass());
        Node node = new Node(nodeId, entity.getClass(), new ManagedState(), pd.getPersistenceCache(), entityId, pd);
        node.setData(entity);
        node.setPersistenceDelegator(pd);
        mainCache.addNodeToCache(node);
    }
View Full Code Here

        PersistenceDelegator persistenceDelegator = null;
        persistenceDelegator = getPersistenceDelegator(persistenceDelegator);

        // get node from first level cache.
        Node node1 = persistenceDelegator
                .getPersistenceCache()
                .getMainCache()
                .getNodeFromCache(
                        entity1,
                        KunderaMetadataManager.getEntityMetadata(persistenceDelegator.getKunderaMetadata(),
                                entity1.getClass()), persistenceDelegator);

        // check if it is present in second level cache.
        EhCacheEntity foundNode1 = (EhCacheEntity) l2Cache.get(node1.getNodeId());

        Assert.assertNotNull(foundNode1);
        Assert.assertEquals(foundNode1, node1.getData()); // should be same
                                                          // object.

        // remove entity 1.
        em.remove(entity1);

        Node node2 = persistenceDelegator
                .getPersistenceCache()
                .getMainCache()
                .getNodeFromCache(
                        entity2,
                        KunderaMetadataManager.getEntityMetadata(persistenceDelegator.getKunderaMetadata(),
                                entity1.getClass()), persistenceDelegator);

        Assert.assertNotNull(l2Cache.get(node2.getNodeId()));

        EhCacheEntity foundNode2 = (EhCacheEntity) l2Cache.get(node2.getNodeId());
        Assert.assertEquals(foundNode2, node2.getData()); // should be same
                                                          // object.
        Assert.assertNull(l2Cache.get(node1.getNodeId()));

        entity1.setAge(99);
        em.persist(entity1);
        em.flush();

        // get node from first level cache.
        node1 = persistenceDelegator
                .getPersistenceCache()
                .getMainCache()
                .getNodeFromCache(
                        entity1,
                        KunderaMetadataManager.getEntityMetadata(persistenceDelegator.getKunderaMetadata(),
                                entity1.getClass()), persistenceDelegator);

        // check if it is present in second level cache.
        foundNode1 = (EhCacheEntity) l2Cache.get(node1.getNodeId());

        Assert.assertNotNull(foundNode1);
        Assert.assertEquals(foundNode1, node1.getData()); // should be same
                                                          // object.

        Assert.assertEquals(foundNode1.getAge(), new Integer(99));
        Assert.assertEquals(foundNode1.getAge(), entity1.getAge());

        em.clear(); // evict all.

        Assert.assertNull(l2Cache.get(node2.getNodeId()));

    }
View Full Code Here

        object.setPersonId(ROW_KEY);
        object.setPersonName(originalName);
        object.setDay(Day.TUESDAY);
        object.setMonth(Month.JAN);

        Node node = new Node(nodeId, PersonRedis.class, new TransientState(), null, ROW_KEY, null);
        node.setData(object);
        client.persist(node);

        PersonRedis result = (PersonRedis) client.find(PersonRedis.class, ROW_KEY);

        Assert.assertNotNull(result);
View Full Code Here

        // Entity state to remain as Removed

        // Flush this node to database
        Client client = nodeStateContext.getClient();

        Node node = (Node) nodeStateContext;

        Object entityId = node.getEntityId();

        client.delete(node.getData(), entityId);

        // Since node is flushed, mark it as NOT dirty
        nodeStateContext.setDirty(false);

        // Remove this node from Persistence Cache
View Full Code Here

TOP

Related Classes of com.impetus.kundera.graph.Node

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.