Examples of ApiAdapter


Examples of org.jpox.api.ApiAdapter

     * @param state FetchPlan state
     * @param detached Collection to add the detached copies to
     */
    public static void detachCopyForCollection(StateManager ownerSM, Object[] elements, FetchPlanState state, Collection detached)
    {
        ApiAdapter api = ownerSM.getObjectManager().getApiAdapter();
        for (int i = 0; i < elements.length; i++)
        {
            if (elements[i] == null)
            {
                detached.add(null);
            }
            else
            {
                Object object = elements[i];
                if (api.isPersistable(object))
                {
                    detached.add(ownerSM.getObjectManager().detachObjectCopy(object, state));
                }
                else
                {
View Full Code Here

Examples of org.jpox.api.ApiAdapter

     * @param elements The elements in the collection
     * @param elementsWithoutIdentity Whether the elements have their own identity
     */
    public static void attachForCollection(StateManager ownerSM, Object[] elements, boolean elementsWithoutIdentity)
    {
        ApiAdapter api = ownerSM.getObjectManager().getApiAdapter();
        for (int i = 0; i < elements.length; i++)
        {
            if (api.isPersistable(elements[i]))
            {
                ownerSM.getObjectManager().attachObject(elements[i], elementsWithoutIdentity);
            }
        }
    }
View Full Code Here

Examples of org.jpox.api.ApiAdapter

     * @param elementsWithoutIdentity Whether the elements have their own identity
     */
    public static void attachCopyForCollection(StateManager ownerSM, Object[] detachedElements,
            Collection attached, boolean elementsWithoutIdentity)
    {
        ApiAdapter api = ownerSM.getObjectManager().getApiAdapter();
        for (int i = 0; i < detachedElements.length; i++)
        {
            if (api.isPersistable(detachedElements[i]) && api.isDetachable(detachedElements[i]))
            {
                attached.add(ownerSM.getObjectManager().attachObjectCopy(detachedElements[i], elementsWithoutIdentity));
            }
            else
            {
View Full Code Here

Examples of org.jpox.api.ApiAdapter

     * @param entries The entries in the map
     * @param state FetchPlan state
     */
    public static void detachForMap(StateManager ownerSM, Set entries, FetchPlanState state)
    {
        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().detachObject(key, state);
            }
            if (api.isPersistable(val))
            {
               ownerSM.getObjectManager().detachObject(val, state);
            }
        }
    }
View Full Code Here

Examples of org.jpox.api.ApiAdapter

     * @param state FetchPlan state
     * @param detached Map to add the detached copies to
     */
    public static void detachCopyForMap(StateManager ownerSM, Set entries, FetchPlanState state, Map detached)
    {
        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(val))
            {
                val = ownerSM.getObjectManager().detachObjectCopy(val, state);
            }
            if (api.isPersistable(key))
            {
                key = ownerSM.getObjectManager().detachObjectCopy(key, state);
            }
            detached.put(key, val);
        }
View Full Code Here

Examples of org.jpox.api.ApiAdapter

     * @param keysWithoutIdentity Whether the keys have their own identity
     * @param valuesWithoutIdentity Whether the values have their own identity
     */
    public static void attachForMap(StateManager ownerSM, Set entries, boolean keysWithoutIdentity, boolean valuesWithoutIdentity)
    {
        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().attachObject(key, keysWithoutIdentity);
            }
            if (api.isPersistable(val))
            {
               ownerSM.getObjectManager().attachObject(val, valuesWithoutIdentity);
            }
        }
    }
View Full Code Here

Examples of org.jpox.api.ApiAdapter

        {
            throw new JPOXException(failureMessage("setObject")).setFatal();
        }

        StateManager[] sms = null;
        ApiAdapter api = om.getApiAdapter();
        if (value != null)
        {
            Collection smsColl = null;
            if (value instanceof java.util.Collection)
            {
                Iterator elementsIter = ((java.util.Collection)value).iterator();
                while (elementsIter.hasNext())
                {
                    Object elem = elementsIter.next();
                    if (api.isPersistable(elem))
                    {
                        StateManager sm = om.findStateManager(elem);
                        if (sm != null)
                        {
                            if (smsColl == null)
                            {
                                smsColl = new HashSet();
                            }
                            smsColl.add(sm);
                        }
                    }
                }
            }
            else if (value instanceof java.util.Map)
            {
                Iterator entriesIter = ((java.util.Map)value).entrySet().iterator();
                while (entriesIter.hasNext())
                {
                    Map.Entry entry = (Map.Entry)entriesIter.next();
                    Object key = entry.getKey();
                    Object val = entry.getValue();
                    if (api.isPersistable(key))
                    {
                        StateManager sm = om.findStateManager(key);
                        if (sm != null)
                        {
                            if (smsColl == null)
                            {
                                smsColl = new HashSet();
                            }
                            smsColl.add(sm);
                        }
                    }
                    if (api.isPersistable(val))
                    {
                        StateManager sm = om.findStateManager(val);
                        if (sm != null)
                        {
                            if (smsColl == null)
View Full Code Here

Examples of org.jpox.api.ApiAdapter

     * @param ownerFieldNumber the owner absolute field number
     */   
    public void setObject(ObjectManager om, Object ps, int[] pos, Object value, StateManager ownerSM, int ownerFieldNumber)
    {
        ClassLoaderResolver clr = om.getClassLoaderResolver();
        ApiAdapter api = om.getApiAdapter();

        int n = 0;
        boolean foundClassAssignableFromValue = false;
        NotYetFlushedException notYetFlushed = null;

        if (value != null)
        {
          if (!om.isInserting(value))
          {
              // Object either already exists, or is not yet being inserted.
              Object id = api.getIdForObject(value);

              // Check if the PersistenceCapable exists in this datastore
              boolean requiresPersisting = false;
              if (om.getApiAdapter().isDetached(value) && ownerSM != null)
              {
                  // Detached object that needs attaching (or persisting if detached from a different datastore)
                  requiresPersisting = true;
              }
              else if (id == null)
              {
                  // Transient object, so we need to persist it
                  requiresPersisting = true;
              }
              else
              {
                    ObjectManager valueOM = ObjectManagerHelper.getObjectManager(value);
                  if (valueOM != null && om != valueOM)
                  {
                      throw new JPOXUserException(LOCALISER.msg("041015"), id);
                  }
              }
             
              if (requiresPersisting)
              {
                  // The object is either not yet persistent or is detached and so needs attaching
                  Object pcNew = om.persistObjectInternal(value, null, null, -1, StateManager.PC);
                  om.flushInternal(false);
                  id = api.getIdForObject(pcNew);
                  if (om.getApiAdapter().isDetached(value) && ownerSM != null)
                  {
                      // Update any detached reference to refer to the attached variant
                      ownerSM.replaceField(ownerFieldNumber, pcNew, true);
                        int relationType = fmd.getRelationType(clr);
View Full Code Here

Examples of org.jpox.api.ApiAdapter

            {
                JPOXLogger.REACHABILITY.debug(LOCALISER.msg("007006", fmd.getFullFieldName()));
            }

            // Check for any persistable keys/values that arent persistent
            ApiAdapter api = sm.getObjectManager().getApiAdapter();
            Set entries = value.entrySet();
            Iterator iter = entries.iterator();
            while (iter.hasNext())
            {
                Map.Entry entry = (Map.Entry)iter.next();
                if (api.isPersistable(entry.getKey()))
                {
                    if (!api.isPersistent(entry.getKey()) && !api.isDetached(entry.getKey()))
                    {
                        // Key is not persistent so throw exception
                        throw new ReachableObjectNotCascadedException(fmd.getFullFieldName(), entry.getKey());
                    }
                }
                if (api.isPersistable(entry.getValue()))
                {
                    if (!api.isPersistent(entry.getValue()) && !api.isDetached(entry.getValue()))
                    {
                        // Value is not persistent so throw exception
                        throw new ReachableObjectNotCascadedException(fmd.getFullFieldName(), entry.getValue());
                    }
                }
View Full Code Here

Examples of org.jpox.api.ApiAdapter

     * to TRANSIENT. Used by "DetachAllOnCommit".
     * @param state State for the detachment process
     */
    public void detach(FetchPlanState state)
    {
        ApiAdapter api = myOM.getApiAdapter();
        if (myLC.isDeleted() || api.isDetached(myPC) || detaching)
        {
            // Already deleted, detached or being detached
            return;
        }

        // Check if detachable ... if so then we detach a copy, otherwise we return a transient copy
        boolean detachable = api.isDetachable(myPC);
        if (detachable)
        {
            if (JPOXLogger.PERSISTENCE.isDebugEnabled())
            {
                JPOXLogger.PERSISTENCE.debug(LOCALISER.msg("010009", StringUtils.toJVMIDString(myPC),
                    "" + state.getCurrentFetchDepth()));
            }

            // Call any "pre-detach" listeners
            getCallbackHandler().preDetach(myPC);
        }

        try
        {
            detaching = true;

            // Handle any field loading/unloading before the detach
            if ((myOM.getFetchPlan().getDetachmentOptions() & FetchPlan.DETACH_LOAD_FIELDS) != 0)
            {
                // Load any unloaded fetch-plan fields
                loadUnloadedFieldsInFetchPlan();
            }
            if ((myOM.getFetchPlan().getDetachmentOptions() & FetchPlan.DETACH_UNLOAD_FIELDS) != 0)
            {
                // Unload any loaded fetch-plan fields that aren't in the current fetch plan
                unloadNonFetchPlanFields();
            }

            // Detach all (loaded) fields in the FetchPlan
            FieldManager detachFieldManager = new DetachFieldManager(this, getSecondClassMutableFields(), myFP,
                state, false);
            for (int i = 0; i < loadedFields.length; i++)
            {
                if (loadedFields[i])
                {
                    try
                    {
                        // Just fetch the field since we are usually called in postCommit() so dont want to update it
                        detachFieldManager.fetchObjectField(i);
                    }
                    catch (EndOfFetchPlanGraphException eofpge)
                    {
                        Object value = provideField(i);
                        if (api.isPersistable(value))
                        {
                            // PC field beyond end of graph
                            org.jpox.StateManager valueSM = myOM.findStateManager(value);
                            if (!api.isDetached(value) && !(valueSM != null && valueSM.isDetaching()))
                            {
                                // Field value is not detached or being detached so unload it
                                String fieldName = cmd.getMetaDataForManagedMemberAtAbsolutePosition(i).getName();
                                if (JPOXLogger.PERSISTENCE.isDebugEnabled())
                                {
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.