Examples of ApiAdapter


Examples of org.jpox.api.ApiAdapter

        if (pc == null)
        {
            return null;
        }

        ApiAdapter api = sm.getObjectManager().getApiAdapter();
        if (!api.isPersistable(pc))
        {
            return pc;
        }

        if (!api.isDetached(pc))
        {
            if (api.isPersistent(pc))
            {
                // Persistent object that is not yet detached so detach it
                if (copy)
                {
                    // Detach a copy and return the copy
View Full Code Here

Examples of org.jpox.api.ApiAdapter

    protected Object internalFetchObjectField(int fieldNumber)
    {
        SingleValueFieldManager sfv = new SingleValueFieldManager();
        sm.provideFields(new int[]{fieldNumber}, sfv);
        Object value = sfv.fetchObjectField(fieldNumber);
        ApiAdapter api = sm.getObjectManager().getApiAdapter();

        if (value == null)
        {
            return null;
        }
        else
        {
            AbstractMemberMetaData fmd = sm.getClassMetaData().getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber);
            if (api.isPersistable(value))
            {
                // Process PC fields
                return processPersistable(value);
            }
            else if (value instanceof Collection || value instanceof Map)
            {
                // Process all elements of Collections/Maps that are PC
                if (!(value instanceof SCO))
                {
                    // Replace with SCO so we can work with it
                    value = sm.wrapSCOField(fieldNumber, value, false, false, true);
                }
                SCO sco = (SCO)value;

                if (copy)
                {
                    return sco.detachCopy(state);
                }

                if (sco instanceof Collection)
                {
                    // Detach all PC elements of the collection
                    SCOUtils.detachForCollection(sm, ((Collection)sco).toArray(), state);
                    sco.unsetOwner();
                }
                else if (sco instanceof Map)
                {
                    // Detach all PC keys/values of the map
                    SCOUtils.detachForMap(sm, ((Map)sco).entrySet(), state);
                    sco.unsetOwner();
                }
                return sco;
            }
            else if (value instanceof Object[])
            {
                // Process object array
                if (!api.isPersistable(fmd.getType().getComponentType()))
                {
                    // Array element type is not persistable so just return
                    return value;
                }
View Full Code Here

Examples of org.jpox.api.ApiAdapter

    {
        // check if the object here is PC and is in the detached cache anyway
        SingleValueFieldManager sfv = new SingleValueFieldManager();
        sm.provideFields(new int[]{fieldNumber}, sfv);
        Object value = sfv.fetchObjectField(fieldNumber);
        ApiAdapter api = sm.getObjectManager().getApiAdapter();

        if (api.isPersistable(value))
        {
            Object detached = null;
            if (copy)
            {
                detached = ((DetachState)state).getDetachedCopyObject(value);
View Full Code Here

Examples of org.jpox.api.ApiAdapter

        if (type == null)
        {
            // No type specified, must be implicit parameter
            return null;
        }
        ApiAdapter api = qs.getStoreManager().getApiAdapter();
        if (!api.isPersistable(type))
        {
            // Type is not PC so cannot bind to it
            return null;
        }
View Full Code Here

Examples of org.jpox.api.ApiAdapter

        if (getMetaDataManager() != null)
        {
            // Set defaults for cascading
            // If we have no MetaDataManager here then we are likely a field for an Index/Unique etc so dont need this
            ApiAdapter apiAdapter = getMetaDataManager().getOMFContext().getApiAdapter();
            this.cascadePersist = apiAdapter.getDefaultCascadePersistForField();
            this.cascadeUpdate = apiAdapter.getDefaultCascadeUpdateForField();
            this.cascadeDelete = apiAdapter.getDefaultCascadeDeleteForField();
            this.cascadeRefresh = apiAdapter.getDefaultCascadeRefreshForField();
        }
    }
View Full Code Here

Examples of org.jpox.api.ApiAdapter

        // Check for array types supported by JPOX
        if (!persistenceModifier.equals(FieldPersistenceModifier.NONE) && getType().isArray() &&
            !getAbstractClassMetaData().getMetaDataManager().isEnhancing())
        {
            // JPOX supports simple arrays, arrays of PCs, and arrays of reference types, and anything serialised
            ApiAdapter api = getMetaDataManager().getOMFContext().getApiAdapter();
            if (!getMetaDataManager().getOMFContext().getTypeManager().isSupportedType(getType().getName()) &&
                !api.isPersistable(getType().getComponentType()) &&
                !getType().getComponentType().isInterface() &&
                !getType().getComponentType().getName().equals("java.lang.Object")
                && serialized != Boolean.TRUE)
            {
                JPOXLogger.METADATA.warn(LOCALISER.msg("044111",name,getClassName(false)));
View Full Code Here

Examples of org.jpox.api.ApiAdapter

     * @param objectType Type of object (see org.jpox.StateManager)
     */
    protected void processPersistable(Object pc, int ownerFieldNum, int objectType)
    {
        // TODO Consider adding more of the functionality in SCOUtils.validateObjectForWriting
        ApiAdapter adapter = sm.getObjectManager().getApiAdapter();
        if (!adapter.isPersistent(pc) ||
            (adapter.isPersistent(pc) && adapter.isDeleted(pc)))
        {
            // Object is TRANSIENT/DETACHED and being persisted, or P_NEW_DELETED and being re-persisted
            if (objectType != StateManager.PC)
            {
                sm.getObjectManager().persistObjectInternal(pc, null, sm, ownerFieldNum, objectType);
View Full Code Here

Examples of org.jpox.api.ApiAdapter

    {
        if (value != null)
        {
            AbstractMemberMetaData fmd = sm.getClassMetaData().getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber);
            boolean persistCascade = fmd.isCascadePersist();
            ApiAdapter api = sm.getObjectManager().getApiAdapter();

            if (replaceSCOsWithWrappers)
            {
                // Replace any SCO field that isnt already a wrapper, with its wrapper object
                boolean[] secondClassMutableFieldFlags = sm.getClassMetaData().getSCOMutableMemberFlags();
                if (secondClassMutableFieldFlags[fieldNumber] && !(value instanceof SCO))
                {
                    // Replace the field with a SCO wrapper
                    sm.wrapSCOField(fieldNumber, value, false, true, true);
                }
            }

            if (persistCascade)
            {
                if (api.isPersistable(value))
                {
                    // Process PC fields
                    if (fmd.isEmbedded() || fmd.isSerialized())
                    {
                        processPersistable(value, fieldNumber, StateManager.EMBEDDED_PC);
                    }
                    else
                    {
                        processPersistable(value, -1, StateManager.PC);
                    }
                }
                else if (value instanceof Collection)
                {
                    // Process all elements of the Collection that are PC
                    Collection coll = (Collection)value;
                    Iterator iter = coll.iterator();
                    while (iter.hasNext())
                    {
                        Object element = iter.next();
                        if (api.isPersistable(element))
                        {
                            if (fmd.getCollection().isEmbeddedElement() || fmd.getCollection().isSerializedElement())
                            {
                                processPersistable(element, fieldNumber, StateManager.EMBEDDED_COLLECTION_ELEMENT_PC);
                            }
                            else
                            {
                                processPersistable(element, -1, StateManager.PC);
                            }
                        }
                    }
                }
                else if (value instanceof Map)
                {
                    // Process all keys, values of the Map that are PC
                    Map map = (Map)value;

                    // Process any keys that are PersistenceCapable
                    Set keys = map.keySet();
                    Iterator iter = keys.iterator();
                    while (iter.hasNext())
                    {
                        Object mapKey = iter.next();
                        if (api.isPersistable(mapKey))
                        {
                            if (fmd.getMap().isEmbeddedKey() || fmd.getMap().isSerializedKey())
                            {
                                processPersistable(mapKey, fieldNumber, StateManager.EMBEDDED_MAP_KEY_PC);
                            }
                            else
                            {
                                processPersistable(mapKey, -1, StateManager.PC);
                            }
                        }
                    }

                    // Process any values that are PersistenceCapable
                    Collection values = map.values();
                    iter = values.iterator();
                    while (iter.hasNext())
                    {
                        Object mapValue = iter.next();
                        if (api.isPersistable(mapValue))
                        {
                            if (fmd.getMap().isEmbeddedValue() || fmd.getMap().isSerializedValue())
                            {
                                processPersistable(mapValue, fieldNumber, StateManager.EMBEDDED_MAP_VALUE_PC);
                            }
                            else
                            {
                                processPersistable(mapValue, -1, StateManager.PC);
                            }
                        }
                    }
                }
                else if (value instanceof Object[])
                {
                    Object[] array = (Object[]) value;

                    for (int i=0;i<array.length;i++)
                    {
                        Object element = array[i];
                        if (api.isPersistable(element))
                        {
                            if (fmd.getArray().isEmbeddedElement() || fmd.getArray().isSerializedElement())
                            {
                                // TODO This should be ARRAY_ELEMENT_PC but we havent got that yet
                                processPersistable(element, fieldNumber, StateManager.EMBEDDED_COLLECTION_ELEMENT_PC);
View Full Code Here

Examples of org.jpox.api.ApiAdapter

    protected Object internalFetchObjectField(int fieldNumber)
    {
        SingleValueFieldManager sfv = new SingleValueFieldManager();
        sm.provideFields(new int[]{fieldNumber}, sfv);
        Object value = sfv.fetchObjectField(fieldNumber);
        ApiAdapter api = sm.getObjectManager().getApiAdapter();

        if (value != null)
        {
            if (api.isPersistable(value))
            {
                // Process PC fields
                processPersistable(value);
            }
            else if (value instanceof Collection)
            {
                // Process all elements of the Collection that are PC
                if (!(value instanceof SCO))
                {
                    // Replace with SCO
                    value = sm.wrapSCOField(fieldNumber, value, false, false, true);
                }

                Collection coll = (Collection)value;
                Iterator iter = coll.iterator();
                while (iter.hasNext())
                {
                    Object element = iter.next();
                    if (api.isPersistable(element))
                    {
                        processPersistable(element);
                    }
                }
            }
            else if (value instanceof Map)
            {
                // Process all keys, values of the Map that are PC
                if (!(value instanceof SCO))
                {
                    // Replace with SCO
                    value = sm.wrapSCOField(fieldNumber, value, false, false, true);
                }

                Map map = (Map)value;

                // Process any keys that are PersistenceCapable
                Set keys = map.keySet();
                Iterator iter = keys.iterator();
                while (iter.hasNext())
                {
                    Object mapKey = iter.next();
                    if (api.isPersistable(mapKey))
                    {
                        processPersistable(mapKey);
                    }
                }

                // Process any values that are PersistenceCapable
                Collection values = map.values();
                iter = values.iterator();
                while (iter.hasNext())
                {
                    Object mapValue = iter.next();
                    if (api.isPersistable(mapValue))
                    {
                        processPersistable(mapValue);
                    }
                }
            }
            else if (value instanceof Object[])
            {
                Object[] array = (Object[]) value;
                for (int i=0;i<array.length;i++)
                {
                    Object element = array[i];
                    if (api.isPersistable(element))
                    {
                        processPersistable(element);
                    }
                }
            }
View Full Code Here

Examples of org.jpox.api.ApiAdapter

     * @param fmd MetaData for the field storing this object
     */
    protected void processPersistable(Object obj, AbstractMemberMetaData fmd)
    {
        // TODO Remove this reference to PersistenceCabable
        ApiAdapter api = sm.getObjectManager().getApiAdapter();
        org.jpox.StateManager sm = this.sm.getObjectManager().findStateManager(obj);
        if (sm != null)
        {
            sm.runReachability(reachables);
        }
        else
        {
            if (JPOXLogger.REACHABILITY.isDebugEnabled())
            {
                JPOXLogger.REACHABILITY.debug(LOCALISER.msg("007005",
                    api.getIdForObject(obj), fmd.getFullFieldName()));
            }
        }
    }
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.