Examples of ApiAdapter


Examples of org.datanucleus.api.ApiAdapter

        }

        // Generate a list of metadata for the roots of inheritance tree(s) that this identity can represent
        // Really ought to be for a single inheritance tree (hence one element in the List) but we allow for
        // a user reusing their PK class in multiple trees
        ApiAdapter api = getApiAdapter();
        List<AbstractClassMetaData> rootCmds = new ArrayList<AbstractClassMetaData>();
        if (id instanceof OID)
        {
            // Datastore Identity, so identity is an OID, and the object is of the target class or a subclass
            OID oid = (OID) id;
            AbstractClassMetaData cmd = getMetaDataManager().getMetaDataForClass(oid.getPcClass(), clr);
            rootCmds.add(cmd);
            if (cmd.getIdentityType() != IdentityType.DATASTORE)
            {
                throw new NucleusUserException(LOCALISER_RDBMS.msg("050022", id, cmd.getFullClassName()));
            }
        }
        else if (api.isSingleFieldIdentity(id))
        {
            // Using SingleFieldIdentity so can assume that object is of the target class or a subclass
            String className = api.getTargetClassNameForSingleFieldIdentity(id);
            AbstractClassMetaData cmd = getMetaDataManager().getMetaDataForClass(className, clr);
            rootCmds.add(cmd);
            if (cmd.getIdentityType() != IdentityType.APPLICATION || !cmd.getObjectidClass().equals(id.getClass().getName()))
            {
                throw new NucleusUserException(LOCALISER_RDBMS.msg("050022", id, cmd.getFullClassName()));
View Full Code Here

Examples of org.jpox.api.ApiAdapter

        {
            return new NullLiteral(qs);
        }
        if (expr instanceof Literal)
        {
            ApiAdapter api = qs.getStoreManager().getApiAdapter();
            Object id = api.getIdForObject(((Literal)expr).getValue());
            if (id == null)
            {
                return new NullLiteral(qs);
            }
            else
View Full Code Here

Examples of org.jpox.api.ApiAdapter

                }
            }
        }
        else
        {
            ApiAdapter api = om.getApiAdapter();
            if (!api.isPersistable(value))
            {
                throw new JPOXException(LOCALISER.msg("041016",
                    value.getClass(), value)).setFatal();
            }
View Full Code Here

Examples of org.jpox.api.ApiAdapter

                // Elements are embedded but no join table so we store in a single column
                singleColumn = true;
            }

            Class elementClass = fmd.getType().getComponentType();
            ApiAdapter api = fmd.getMetaDataManager().getApiAdapter();
            if (!elementClass.isInterface() && !api.isPersistable(elementClass))
            {
                // Array of non-PC with no join table  so store in single column of main table
                singleColumn = true;
            }
        }
View Full Code Here

Examples of org.jpox.api.ApiAdapter

            return;
        }

        // Retrieve the current elements from the store
        Collection coll = new java.util.HashSet();
        ApiAdapter api = ownerSM.getObjectManager().getApiAdapter();
        Iterator iter = store.iterator(ownerSM);
        while (iter.hasNext())
        {
            coll.add(iter.next());
        }

        // Remove all elements no longer in the store
        iter = coll.iterator();
        while (iter.hasNext())
        {
            Object element = iter.next();
            if (api.isPersistable(element))
            {
                Object id = api.getIdForObject(element);

                if (id != null)
                {
                    // Element has an id so compare the id
                    boolean present = false;
                    Iterator newIter = newColl.iterator();
                    while (newIter.hasNext())
                    {
                        Object newElement = newIter.next();
                        Object newId = api.getIdForObject(newElement);

                        if (id.equals(newId))
                        {
                            present = true;
                            break;
                        }
                    }

                    if (!present)
                    {
                        store.remove(ownerSM, element, -1, true);
                    }
                }
                else
                {
                    if (!newColl.contains(element))
                    {
                        store.remove(ownerSM, element, -1, true);
                    }
                }
            }
            else
            {
                if (!newColl.contains(element))
                {
                    store.remove(ownerSM, element, -1, true);
                }
            }
        }

        // Add all new elements to the store
        Iterator newIter = newColl.iterator();
        while (newIter.hasNext())
        {
            Object newElement = newIter.next();

            if (api.isPersistable(newElement))
            {
                Object newId = api.getIdForObject(newElement);
                if (newId != null)
                {
                    boolean present = false;
                    iter = coll.iterator();
                    while (iter.hasNext())
                    {
                        Object element = iter.next();
                        Object id = api.getIdForObject(element);
                        if (newId.equals(id))
                        {
                            present = true;
                            break;
                        }
View Full Code Here

Examples of org.jpox.api.ApiAdapter

                }
                else
                {
                    // Class of the field will have its own table
                    table = qs.getStoreManager().getDatastoreClass(mapping.getType(), clr);
                    ApiAdapter api = qs.getStoreManager().getApiAdapter();

                    if (fieldName != null && subfieldName != null)
                    {
                        AbstractMemberMetaData subfieldMetaData = otherCmd.getMetaDataForMember(subfieldName);
                        if (subfieldMetaData != null && subfieldMetaData.isPrimaryKey() &&
                            !api.isPersistable(subfieldMetaData.getType()))
                        {
                            // Selecting a non-PC field in the other class that is part of its PK mapping (so we have a column here for it)
                            // Avoids the extra join to the other table
                            JavaTypeMapping[] subMappings = ((PersistenceCapableMapping)mapping).getJavaTypeMapping();
                            if (subMappings.length == 1)
View Full Code Here

Examples of org.jpox.api.ApiAdapter

                values.add(valueIter.next());
            }
        }

        // Retrieve the entries (key-value pairs so we can associate them)
        ApiAdapter api = ownerSM.getObjectManager().getApiAdapter();
        SetStore entries = store.entrySetStore();
        Iterator entryIter = entries.iterator(ownerSM);
        while (entryIter.hasNext())
        {
            Map.Entry entry = (Map.Entry)entryIter.next();
            Object key = entry.getKey();
            Object value = entry.getValue();

            Object trueKey = null;
            if (store.keysAreEmbedded() || store.keysAreSerialised())
            {
                // The value has been retrieved as part of the entry
                trueKey = key;
            }
            else
            {
                // Find the true key (with its fields populated)
                // The key in the entry contains just the identity
                Object pcKeyId = api.getIdForObject(key);
                Iterator keyIter = keys.iterator();
                while (keyIter.hasNext())
                {
                    Object obj = keyIter.next();
                    if (api.getIdForObject(obj).equals(pcKeyId))
                    {
                        trueKey = obj;
                        break;
                    }
                }
            }

            Object trueValue = null;
            if (store.valuesAreEmbedded() || store.valuesAreSerialised())
            {
                // The value has been retrieved as part of the entry
                trueValue = value;
            }
            else
            {
                // Find the true value (with its fields populated)
                // The value in the entry contains just the identity
                Object pcValueId = api.getIdForObject(value);
                Iterator valueIter = values.iterator();
                while (valueIter.hasNext())
                {
                    Object obj = valueIter.next();
                    if (api.getIdForObject(obj).equals(pcValueId))
                    {
                        trueValue = obj;
                    }
                }
            }
View Full Code Here

Examples of org.jpox.api.ApiAdapter

     * @param ownerSM StateManager for the owning object with the collection
     * @param elements The elements in the collection
     */
    public static void refreshFetchPlanFieldsForCollection(StateManager ownerSM, Object[] elements)
    {
        ApiAdapter api = ownerSM.getObjectManager().getApiAdapter();
        for (int i = 0; i < elements.length; i++)
        {
            if (api.isPersistable(elements[i]))
            {
                ownerSM.getObjectManager().refreshObject(elements[i]);
            }
        }
    }
View Full Code Here

Examples of org.jpox.api.ApiAdapter

     * @param ownerSM StateManager for the owning object with the map
     * @param entries The entries in the map
     */
    public static void refreshFetchPlanFieldsForMap(StateManager ownerSM, Set entries)
    {
        ApiAdapter api = ownerSM.getObjectManager().getApiAdapter();
        for (Iterator it = entries.iterator(); it.hasNext();)
        {
            Map.Entry entry = (Map.Entry) it.next();
            Object val = entry.getValue();
            Object key = entry.getKey();
            if (api.isPersistable(key))
            {
               ownerSM.getObjectManager().refreshObject(key);
            }
            if (api.isPersistable(val))
            {
               ownerSM.getObjectManager().refreshObject(val);
            }
        }
    }
View Full Code Here

Examples of org.jpox.api.ApiAdapter

     * @param elements The elements in the collection
     * @param state FetchPlan state
     */
    public static void detachForCollection(StateManager ownerSM, Object[] elements, FetchPlanState state)
    {
        ApiAdapter api = ownerSM.getObjectManager().getApiAdapter();
        for (int i = 0; i < elements.length; i++)
        {
            if (api.isPersistable(elements[i]))
            {
                ownerSM.getObjectManager().detachObject(elements[i], state);
            }
        }
    }
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.