openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Pinaki Poddar" <ppod...@bea.com>
Subject RE: svn commit: r573750 - in /openjpa/trunk: openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ openjpa-kernel/src/main/java/org/apache/openjpa/meta/ openjpa-persistence/src/main/java/org/apache/openjpa/persistence/
Date Sat, 08 Sep 2007 19:24:15 GMT
Kevin,
  This is the first attempt to fix 357 & 358. I linked 357 to 358. 
Also added a comment on 357 to link it to SVN revision 573750.

  Please suggest/discuss what is the best way to keep SVN commit and
JIRA issues
linked together.

Pinaki Poddar
972.834.2865
 

>-----Original Message-----
>From: Kevin Sutter [mailto:kwsutter@gmail.com] 
>Sent: Saturday, September 08, 2007 12:41 PM
>To: dev@openjpa.apache.org
>Subject: Re: svn commit: r573750 - in /openjpa/trunk: 
>openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ 
>openjpa-kernel/src/main/java/org/apache/openjpa/meta/ 
>openjpa-persistence/src/main/java/org/apache/openjpa/persistence/
>
>Was this commit for OPENJPA-358 or OPENJPA-357, or both?  :-)  
>We need to remember to include the tag in the commit message 
>so that we get the SVN changes in the JIRA Issues.  Thanks!
>
>Kevin
>
>On 9/7/07, ppoddar@apache.org <ppoddar@apache.org> wrote:
>>
>> Author: ppoddar
>> Date: Fri Sep  7 16:08:02 2007
>> New Revision: 573750
>>
>> URL: http://svn.apache.org/viewvc?rev=573750&view=rev
>> Log:
>> Fix for FetchGroup inclusion and recursion depth calculation.
>>
>> Modified:
>>
>>     
>> 
>openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/F
>> etchConfigurationImpl.java
>>
>>     
>> 
>openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/Fet
>> chGroup.java
>>
>>     
>> 
>openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/per
>> sistence/AnnotationPersistenceMetaDataParser.java
>>
>> Modified:
>> 
>openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/F
>> etchConfigurationImpl.java
>> URL:
>> 
>http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/jav
>> 
>a/org/apache/openjpa/kernel/FetchConfigurationImpl.java?rev=573750&r1=
>> 573749&r2=573750&view=diff
>>
>> 
>======================================================================
>> ========
>> ---
>> 
>openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/F
>> etchConfigurationImpl.java
>> (original)
>> +++
>> 
>openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/F
>> etchConfigurationImpl.java
>> Fri Sep  7 16:08:02 2007
>> @@ -604,6 +604,8 @@
>>          int cur;
>>          for (int i = 0; max != FetchGroup.DEPTH_INFINITE
>>              && i < groups.length; i++) {
>> +            // ignore custom groups that are inactive in this
>> configuration
>> +            if (!this.hasFetchGroup(groups[i])) continue;
>>              cur = 
>meta.getFetchGroup(groups[i]).getRecursionDepth(fm);
>>              if (cur == FetchGroup.DEPTH_INFINITE || cur > max)
>>                  max = cur;
>> @@ -625,7 +627,7 @@
>>              return avail;
>>          return Math.min(max, avail);
>>      }
>> -
>> +
>>      /**
>>       * Return the relation type of the given field.
>>       */
>>
>> Modified:
>> 
>openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/Fet
>> chGroup.java
>> URL:
>> 
>http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/jav
>> 
>a/org/apache/openjpa/meta/FetchGroup.java?rev=573750&r1=573749&r2=5737
>> 50&view=diff
>>
>> 
>======================================================================
>> ========
>> ---
>> 
>openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/Fet
>> chGroup.java
>> (original)
>> +++
>> 
>openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/Fet
>> chGroup.java
>> Fri Sep  7 16:08:02 2007
>> @@ -21,9 +21,11 @@
>> import java.io.Serializable;
>> import java.util.ArrayList;
>> import java.util.HashMap;
>> +import java.util.HashSet;
>> import java.util.Iterator;
>> import java.util.List;
>> import java.util.Map;
>> +import java.util.Set;
>>
>> import org.apache.commons.lang.StringUtils;
>> import org.apache.commons.lang.ObjectUtils;
>> @@ -74,6 +76,7 @@
>>      private final ClassMetaData _meta;
>>      private final boolean _readOnly;
>>      private List _includes;
>> +    private Set  _containedBy;
>>      private Map _depths;
>>      private Boolean _postLoad;
>>
>> @@ -171,6 +174,32 @@
>>              }
>>          }
>>          return false;
>> +    }
>> +
>> +    /**
>> +     * Sets this receiver as one of the included fetch groups of the
>> given
>> +     * parent.
>> +     * The parent fecth grop must include this receiver 
>before this call.
>> +     *
>> +     * @see #includes(String, boolean)
>> +     * @see #addDeclaredInclude(String)
>> +     */
>> +    public boolean setContainedBy(FetchGroup parent) {
>> +       parent.addDeclaredInclude(this.getName());
>> +       if (_containedBy==null)
>> +               _containedBy = new HashSet();
>> +       return _containedBy.add(parent.getName());
>> +    }
>> +
>> +    /**
>> +     * Gets the name of the fetch groups in which this 
>receiver has been
>> +     * included.
>> +     *
>> +     * @see #setContainedBy(FetchGroup)
>> +     */
>> +    public String[] getContainedBy() {
>> +       return (_containedBy == null) ? new String[0]
>> +            : (String[]) _containedBy.toArray(new
>> String[_containedBy.size()]);
>>      }
>>
>>      /**
>>
>> Modified:
>> 
>openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/per
>> sistence/AnnotationPersistenceMetaDataParser.java
>> URL:
>> 
>http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/mai
>> 
>n/java/org/apache/openjpa/persistence/AnnotationPersistenceMetaDataPar
>> ser.java?rev=573750&r1=573749&r2=573750&view=diff
>>
>> 
>======================================================================
>> ========
>> ---
>> 
>openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/per
>> sistence/AnnotationPersistenceMetaDataParser.java
>> (original)
>> +++
>> 
>openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/per
>> sistence/AnnotationPersistenceMetaDataParser.java
>> Fri Sep  7 16:08:02 2007
>> @@ -875,6 +875,14 @@
>>
>>      /**
>>       * Create fetch groups.
>> +     * If FetchGroup A includes FetchGroup B, then a bi-link is set
>> between
>> +     * A and B. Both A and B must be declared in the same Class.
>> +     * <br>
>> +     * Call {@link #parseFetchAttribute(ClassMetaData,
>> +     * org.apache.openjpa.meta.FetchGroup, FetchAttribute) 
>only after the
>> +     * bi-links have been established, because a field f will not 
>> + only
>> add the
>> +     * fetch group A which explictly includes f to its custom fetch
>> groups but
>> +     * also will also add any fetch group B that includes A.
>>       */
>>      private void parseFetchGroups(ClassMetaData meta, FetchGroup...
>> groups) {
>>          org.apache.openjpa.meta.FetchGroup fg; @@ -885,12 +893,25 @@
>>              fg = meta.addDeclaredFetchGroup(group.name());
>>              if (group.postLoad())
>>                  fg.setPostLoad(true);
>> -            for (String s : group.fetchGroups())
>> +            for (String s : group.fetchGroups()) {
>>                  fg.addDeclaredInclude(s);
>> +            }
>> +        }
>> +
>> +        for (FetchGroup group:groups) {
>> +               fg = meta.getFetchGroup(group.name());
>> +               String[] includedFetchGropNames = 
>> + fg.getDeclaredIncludes
>> ();
>> +               for (String
>> includedFectchGroupName:includedFetchGropNames)
>> +                   meta.getFetchGroup
>> (includedFectchGroupName).setContainedBy(fg);
>> +        }
>> +
>> +        for (FetchGroup group : groups) {
>> +            fg = meta.getFetchGroup(group.name());
>>              for (FetchAttribute attr : group.attributes())
>>                  parseFetchAttribute(meta, fg, attr);
>>          }
>>      }
>> +
>>
>>      /**
>>       * Set a field's fetch group.
>> @@ -904,6 +925,9 @@
>>                  meta, attr.name()));
>>
>>          field.setInFetchGroup(fg.getName(), true);
>> +        String[] parentFetchGroups = fg.getContainedBy();
>> +        for (String parentFetchGroup:parentFetchGroups)
>> +               field.setInFetchGroup(parentFetchGroup, true);
>>          if (attr.recursionDepth() != Integer.MIN_VALUE)
>>              fg.setRecursionDepth(field, attr.recursionDepth());
>>      }
>>
>>
>>
>

Notice:  This email message, together with any attachments, may contain information  of  BEA
Systems,  Inc.,  its subsidiaries  and  affiliated entities,  that may be confidential,  proprietary,
 copyrighted  and/or legally privileged, and is intended solely for the use of the individual
or entity named in this message. If you are not the intended recipient, and have received
this message in error, please immediately return this by email and then delete it.

Mime
View raw message