openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kevin Sutter" <kwsut...@gmail.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 17:40:57 GMT
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/FetchConfigurationImpl.java
>
>     openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/FetchGroup.java
>
>     openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceMetaDataParser.java
>
> Modified:
> openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java
> URL:
> http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/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/FetchConfigurationImpl.java
> (original)
> +++
> openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.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/FetchGroup.java
> URL:
> http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/FetchGroup.java?rev=573750&r1=573749&r2=573750&view=diff
>
> ==============================================================================
> ---
> openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/FetchGroup.java
> (original)
> +++
> openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/FetchGroup.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/persistence/AnnotationPersistenceMetaDataParser.java
> URL:
> http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceMetaDataParser.java?rev=573750&r1=573749&r2=573750&view=diff
>
> ==============================================================================
> ---
> openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceMetaDataParser.java
> (original)
> +++
> openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/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());
>      }
>
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message