Package org.apache.ojb.broker.metadata

Examples of org.apache.ojb.broker.metadata.ObjectReferenceDescriptor


        if (implicitLocking)
        {
            Iterator i = cld.getObjectReferenceDescriptors(true).iterator();
            while (i.hasNext())
            {
                ObjectReferenceDescriptor rds = (ObjectReferenceDescriptor) i.next();
                Object refObj = rds.getPersistentField().get(sourceObject);
                if (refObj != null)
                {
                    boolean isProxy = ProxyHelper.isProxy(refObj);
                    RuntimeObject rt = isProxy ? new RuntimeObject(refObj, this, false) : new RuntimeObject(refObj, this);
                    if (!registrationList.contains(rt.getIdentity()))
View Full Code Here


     * @param doCascade If <em>true</em> cascading delete is enabled, <em>false</em> disabled.
     */
    public void setCascadingDelete(Class target, String referenceField, boolean doCascade)
    {
        ClassDescriptor cld = getBroker().getClassDescriptor(target);
        ObjectReferenceDescriptor ord = cld.getObjectReferenceDescriptorByName(referenceField);
        if(ord == null)
        {
            ord = cld.getCollectionDescriptorByName(referenceField);
        }
        if(ord == null)
View Full Code Here

    private void buildImageForSingleReferences(Map imageMap, ClassDescriptor cld)
    {
        // register all 1:1 references
        Iterator iter = cld.getObjectReferenceDescriptors(true).iterator();
        ObjectReferenceDescriptor rds;
        while(iter.hasNext())
        {
            rds = (ObjectReferenceDescriptor) iter.next();
            /*
            arminw:
            if a "super-reference" is matched (a 1:1 reference used to represent a super class)
            we don't handle it, because this will be done by the PB-api and will never be change
            */
            if(!rds.isSuperReferenceDescriptor())
            {
                Object referenceObject = rds.getPersistentField().get(myObj);

                IndirectionHandler handler = ProxyHelper.getIndirectionHandler(referenceObject);
                /*
                arminw:
                if object was serialized and anonymous FK are used in the main object, the FK
                values are null, we have to refresh (re-assign) these values before building field images.
                This will not touch the main object itself, because we only reassign anonymous FK fields.
                */
                if(handler == null && referenceObject != null
                        && BrokerHelper.hasAnonymousKeyReference(rds.getClassDescriptor(), rds))
                {
                    getBroker().serviceBrokerHelper().link(myObj, rds, false);
                }
                Image.SingleRef singleRef = new Image.SingleRef(this, rds, referenceObject);
                imageMap.put(rds, singleRef);
View Full Code Here

      ArrayList descs = cld.getAttributeDescriptorsForPath(projectionAttrs[0]);
      int pathLen = descs.size();
     
      if ((pathLen > 0) && (descs.get(pathLen - 1) instanceof ObjectReferenceDescriptor))
      {
      ObjectReferenceDescriptor ord =
      ((ObjectReferenceDescriptor) descs.get(pathLen - 1));
      query = QueryFactory.newQuery(clazz, criteria, distinct);
      query.setObjectProjectionAttribute(projectionAttrs[0],
      ord.getItemClass());
      }
      else
      {
      query = QueryFactory.newReportQuery(clazz, projectionAttrs, criteria, distinct);
      }
View Full Code Here

    private void cascadeInsertSingleReferences(ObjectEnvelope source, List descriptor, List alreadyPrepared)
    {
        for(int i = 0; i < descriptor.size(); i++)
        {
            ObjectReferenceDescriptor ord = (ObjectReferenceDescriptor) descriptor.get(i);
            Object depObj = ord.getPersistentField().get(source.getObject());

            if(depObj != null)
            {
                // in any case we have to link the source object when the object needs insert
                source.addLinkOneToOne(ord, false);
View Full Code Here

    private void cascadeDeleteSingleReferences(ObjectEnvelope source, List descriptor, List alreadyPrepared)
    {
        for(int i = 0; i < descriptor.size(); i++)
        {
            ObjectReferenceDescriptor ord = (ObjectReferenceDescriptor) descriptor.get(i);
            if(getTransaction().cascadeDeleteFor(ord))
            {
                Object depObj = ord.getPersistentField().get(source.getObject());
                if(depObj != null)
                {
                    Identity oid = getTransaction().getBroker().serviceIdentity().buildIdentity(depObj);
                    // if(!isNewAssociatedObject(oid) && !alreadyPrepared.contains(oid))
                    // if the object has a new association with a different object, don't delete it
View Full Code Here

    {
        ClassDescriptor cld = vertex.getEnvelope().getClassDescriptor();
        Iterator rdsIter = cld.getObjectReferenceDescriptors(true).iterator();
        while (rdsIter.hasNext())
        {
            ObjectReferenceDescriptor rds = (ObjectReferenceDescriptor) rdsIter.next();
            addObjectReferenceEdges(vertex, rds);
        }
        Iterator cdsIter = cld.getCollectionDescriptors(true).iterator();
        while (cdsIter.hasNext())
        {
View Full Code Here

        boolean onlyDependants = !_tx.getKit().isImplicitLockingUsed();
        ClassDescriptor mif = _pb.getClassDescriptor(userObject.getClass());

        // N:1 relations
        Iterator iter = mif.getObjectReferenceDescriptors().iterator();
        ObjectReferenceDescriptor rds = null;
        PersistentField f;
        Object relUserObj;
        Identity relOid;
        boolean isDependent;

        while (iter.hasNext())
        {
            rds = (ObjectReferenceDescriptor) iter.next();
            isDependent = rds.getOtmDependent();
            if (onlyDependants && !isDependent)
            {
                continue;
            }
            f = rds.getPersistentField();
            relUserObj = f.get(userObject);
            if (relUserObj != null)
            {
                relOid = new Identity(relUserObj, _pb);
                entry = (ContextEntry) _objects.get(relOid);
View Full Code Here

        }

        int countRefs = 0;
        for (Iterator it = refDescs.iterator(); it.hasNext(); count++, countRefs++)
        {
            ObjectReferenceDescriptor rds = (ObjectReferenceDescriptor) it.next();
            PersistentField f = rds.getPersistentField();
            Object relObj = f.get(obj);
            if (relObj != null)
            {
                fields[count] = new Identity(relObj, _pb);
                if (withObjects)
View Full Code Here

            count++;
        }

        for (Iterator it = refDescs.iterator(); it.hasNext(); count++)
        {
            ObjectReferenceDescriptor rds = (ObjectReferenceDescriptor) it.next();
            PersistentField f = rds.getPersistentField();
            Identity oid = (Identity) fields[count];
            Object relObj;
            if (oid == null)
            {
                relObj = null;
View Full Code Here

TOP

Related Classes of org.apache.ojb.broker.metadata.ObjectReferenceDescriptor

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.