openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Albert Lee" <allee8...@gmail.com>
Subject Re: svn commit: r577029 - in /openjpa/trunk: openjpa-kernel/src/main/java/org/apache/openjpa/datacache/ openjpa-lib/src/main/java/org/apache/openjpa/lib/util/ openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/ openjpa-persist
Date Mon, 24 Sep 2007 15:36:40 GMT
Patrick,

Thanks for spotting the 1.4 compile scenario which I am still new and
ignorance on this topic.

Now that I understand the problem, I have a few observations and questions:

1) To avoid "module explosion", you suggested to put it in e.g. kernel-5
instead of a new lib-5. We can use that approach but now we are limiting the
usage of the new methods in kernel and/or other modules that has
dependency/access to kernel-5 module. From design perspective, it makes
sense to have the 1.5 J2DoPrivHelp functions in lib(-5), that can be
potentially accessed from ANY other modules.

2) If we put the new 1.5 functions in lib-5, then we need a different class
e.g. J2DoPriv15Helper.java. This makes an unnatural feel of using the
J2DoPrivHelper.

3) Is there still a need to support 1.4 at all? Is the benefit of supporting
1.4 justify the source module complexity?

Thanks,
Albert Lee.

On 9/23/07, Patrick Linskey <plinskey@gmail.com> wrote:
>
> Hi,
>
> This change (and r577877, the port of this to the 1.0.x branch)
> contains Java 5 code. So, it should be in the a new class in a
> 1.5-capable module (either a new openjpa-lib-5 dir, or maybe the
> openjpa-kernel-5 module, to save on module explosion).
>
> FYI, you can run a compile that detects these types of problems by
> running 'mvn compile -Djava14.jar=/path/to/jdk1.4/rt.jar', or
> alternately, by submitting your changes through the TeamCity install
> that I wrote about earlier. You can see these types of problems as
> they occur by monitoring that same TeamCity install.
>
> I could set things up so that key build failures were emailed out to
> dev@openjpa.apache.org from the TeamCity install.
>
> -Patrick
>
> On 9/18/07, kwsutter@apache.org <kwsutter@apache.org> wrote:
> > Author: kwsutter
> > Date: Tue Sep 18 12:44:06 2007
> > New Revision: 577029
> >
> > URL: http://svn.apache.org/viewvc?rev=577029&view=rev
> > Log:
> > OPENJPA-369.  Committed Albert's changes for the Java 2 Security updates
> for the Solaris platform.
> >
> > Modified:
> >
> openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/DataCacheScheduler.java
> >
> openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/J2DoPrivHelper.java
> >
> openjpa/trunk/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/AnnotationPersistenceMappingParser.java
> >
> openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceMetaDataParser.java
> >
> openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceXMLMetaDataParser.java
> >
> openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceMetaDataDefaults.java
> >
> openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceMetaDataFactory.java
> >
> > Modified:
> openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/DataCacheScheduler.java
> > URL:
> http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/DataCacheScheduler.java?rev=577029&r1=577028&r2=577029&view=diff
> >
> ==============================================================================
> > ---
> openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/DataCacheScheduler.java
> (original)
> > +++
> openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/DataCacheScheduler.java
> Tue Sep 18 12:44:06 2007
> > @@ -99,10 +99,9 @@
> >          _caches.put(cache, schedule);
> >          _stop = false;
> >          if (_thread == null) {
> > -            _thread = (Thread) AccessController
> > -                .doPrivileged(J2DoPrivHelper.newThreadAction(this,
> _loc.get(
> > -                    "scheduler-name").getMessage()));
> > -            _thread.setDaemon(true);
> > +            _thread = (Thread) AccessController.doPrivileged
> (J2DoPrivHelper
> > +                .newDaemonThreadAction(this, _loc.get("scheduler-name")
> > +                    .getMessage()));
> >              _thread.start();
> >              if (_log.isTraceEnabled())
> >                  _log.trace(_loc.get("scheduler-start",
> _thread.getName()));
> >
> > Modified:
> openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/J2DoPrivHelper.java
> > URL:
> http://svn.apache.org/viewvc/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/J2DoPrivHelper.java?rev=577029&r1=577028&r2=577029&view=diff
> >
> ==============================================================================
> > ---
> openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/J2DoPrivHelper.java
> (original)
> > +++
> openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/J2DoPrivHelper.java
> Tue Sep 18 12:44:06 2007
> > @@ -24,6 +24,7 @@
> >  import java.io.FileOutputStream;
> >  import java.io.IOException;
> >  import java.lang.reflect.AccessibleObject;
> > +import java.lang.reflect.AnnotatedElement;
> >  import java.net.InetAddress;
> >  import java.net.MalformedURLException;
> >  import java.net.ServerSocket;
> > @@ -48,6 +49,9 @@
> >   * methods:
> >   * <ul>
> >   * <li>AccessibleObject.setAccessible
> > + * <li>AnnotatedElement.getAnnotations
> > + * <li>AnnotatedElement.getDeclaredAnnotations
> > + * <li>AnnotatedElement.isAnnotationPresent
> >   * <li>Class.forName
> >   * <li>Class.getClassLoader
> >   * <li>Class.getDeclaredField
> > @@ -325,6 +329,60 @@
> >      }
> >
> >      /**
> > +     * Return a PrivilegeAction object for
> AnnotatedElement.getAnnotations().
> > +     *
> > +     * Requires security policy:
> > +     *   'permission java.lang.RuntimePermission"accessDeclaredMembers";'
> > +     *
> > +     * @return Annotation[]
> > +     */
> > +    public static final PrivilegedAction getAnnotationsAction(
> > +        final AnnotatedElement element) {
> > +        return new PrivilegedAction() {
> > +            public Object run() {
> > +                return element.getAnnotations();
> > +            }
> > +        };
> > +    }
> > +
> > +    /**
> > +     * Return a PrivilegeAction object for
> > +     *   AnnotatedElement.getDeclaredAnnotations().
> > +     *
> > +     * Requires security policy:
> > +     *   'permission java.lang.RuntimePermission"accessDeclaredMembers";'
> > +     *
> > +     * @return Annotation[]
> > +     */
> > +    public static final PrivilegedAction getDeclaredAnnotationsAction(
> > +        final AnnotatedElement element) {
> > +        return new PrivilegedAction() {
> > +            public Object run() {
> > +                return element.getDeclaredAnnotations();
> > +            }
> > +        };
> > +    }
> > +
> > +    /**
> > +     * Return a PrivilegeAction object for
> > +     *   AnnotatedElement.isAnnotationPresent().
> > +     *
> > +     * Requires security policy:
> > +     *   'permission java.lang.RuntimePermission"accessDeclaredMembers";'
> > +     *
> > +     * @return Boolean
> > +     */
> > +    public static final PrivilegedAction isAnnotationPresentAction(
> > +        final AnnotatedElement element, final Class annotationClazz) {
> > +        return new PrivilegedAction() {
> > +            public Object run() {
> > +                return element.isAnnotationPresent(annotationClazz)
> > +                    ? Boolean.TRUE : Boolean.FALSE;
> > +            }
> > +        };
> > +    }
> > +
> > +    /**
> >       * Return a PrivilegedExceptionAction object for clazz.newInstance
> ().
> >       *
> >       * Requires security policy:
> > @@ -794,14 +852,17 @@
> >       *
> >       * Requires security policy:
> >       *   'permission java.lang.RuntimePermission "modifyThreadGroup";'
> > +     *   'permission java.lang.RuntimePermission "modifyThread";'
> >       *
> >       * @return Thread
> >       */
> > -    public static final PrivilegedAction newThreadAction(
> > +    public static final PrivilegedAction newDaemonThreadAction(
> >          final Runnable target, final String name) {
> >          return new PrivilegedAction() {
> >              public Object run() {
> > -                return new Thread(target, name);
> > +                Thread thread = new Thread(target, name);
> > +                thread.setDaemon(true);
> > +                return thread;
> >              }
> >          };
> >      }
> >
> > Modified:
> openjpa/trunk/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/AnnotationPersistenceMappingParser.java
> > URL:
> http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/AnnotationPersistenceMappingParser.java?rev=577029&r1=577028&r2=577029&view=diff
> >
> ==============================================================================
> > ---
> openjpa/trunk/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/AnnotationPersistenceMappingParser.java
> (original)
> > +++
> openjpa/trunk/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/AnnotationPersistenceMappingParser.java
> Tue Sep 18 12:44:06 2007
> > @@ -21,6 +21,7 @@
> >  import java.lang.annotation.Annotation;
> >  import java.lang.reflect.AnnotatedElement;
> >  import java.lang.reflect.Modifier;
> > +import java.security.AccessController;
> >  import java.sql.Types;
> >  import java.util.ArrayList;
> >  import java.util.Arrays;
> > @@ -74,6 +75,7 @@
> >  import org.apache.openjpa.jdbc.schema.Unique;
> >  import org.apache.openjpa.jdbc.sql.DBDictionary;
> >  import org.apache.openjpa.lib.log.Log;
> > +import org.apache.openjpa.lib.util.J2DoPrivHelper;
> >  import org.apache.openjpa.lib.util.Localizer;
> >  import org.apache.openjpa.meta.ClassMetaData;
> >  import org.apache.openjpa.meta.FieldMetaData;
> > @@ -1058,7 +1060,9 @@
> >
> >              if (xmlTypeClass != null
> >                  && StringUtils.isEmpty(pcols[i].columnDefinition())
> > -                && fm.getDeclaredType().isAnnotationPresent(xmlTypeClass))
> {
> > +                && ((Boolean) AccessController.doPrivileged
> (J2DoPrivHelper
> > +                    .isAnnotationPresentAction(fm.getDeclaredType(),
> > +                        xmlTypeClass))).booleanValue()) {
> >                  DBDictionary dict = ((MappingRepository)
> getRepository())
> >                      .getDBDictionary();
> >                  if (dict.supportsXMLColumn)
> >
> > 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=577029&r1=577028&r2=577029&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
> Tue Sep 18 12:44:06 2007
> > @@ -465,9 +465,14 @@
> >          // check immediately whether the user is using any annotations,
> >          // regardless of mode.  this prevents adding non-entity classes
> to
> >          // repository if we're ignoring these annotations in mapping
> mode
> > -        if (!_cls.isAnnotationPresent(Entity.class)
> > -            && !_cls.isAnnotationPresent(Embeddable.class)
> > -            && !_cls.isAnnotationPresent(MappedSuperclass.class))
> > +        if (!((Boolean) AccessController.doPrivileged(J2DoPrivHelper
> > +            .isAnnotationPresentAction(_cls, Entity.class
> ))).booleanValue()
> > +            && !((Boolean) AccessController.doPrivileged(J2DoPrivHelper
> > +                .isAnnotationPresentAction(_cls, Embeddable.class)))
> > +                .booleanValue()
> > +            && !((Boolean) AccessController.doPrivileged(J2DoPrivHelper
> > +                .isAnnotationPresentAction(_cls, MappedSuperclass.class
> )))
> > +                .booleanValue())
> >              return null;
> >
> >          // find / create metadata
> > @@ -762,7 +767,9 @@
> >                  J2DoPrivHelper.getDeclaredFieldsAction(
> >                      meta.getDescribedType()));
> >              for (int i = 0; i < fields.length; i++)
> > -                if (fields[i].isAnnotationPresent(DetachedState.class))
> > +                if (((Boolean) AccessController.doPrivileged
> (J2DoPrivHelper
> > +                    .isAnnotationPresentAction(fields[i],
> DetachedState.class)))
> > +                    .booleanValue())
> >                      meta.setDetachedState(fields[i].getName());
> >          }
> >      }
> > @@ -818,7 +825,8 @@
> >
> >          MetaDataDefaults def = repos.getMetaDataFactory
> ().getDefaults();
> >          for (Method m : methods) {
> > -            for (Annotation anno : m.getDeclaredAnnotations()) {
> > +            for (Annotation anno : (Annotation[]) AccessController
> > +                .doPrivileged(
> J2DoPrivHelper.getDeclaredAnnotationsAction(m))) {
> >                  MetaDataTag tag = _tags.get(anno.annotationType());
> >                  if (tag == null)
> >                      continue;
> > @@ -956,7 +964,8 @@
> >          fmd.setExplicit(true);
> >
> >          AnnotatedElement el = (AnnotatedElement) member;
> > -        boolean lob = el.isAnnotationPresent(Lob.class);
> > +        boolean lob = ((Boolean) AccessController.doPrivileged
> (J2DoPrivHelper
> > +            .isAnnotationPresentAction(el, Lob.class))).booleanValue();
> >          if (isMetaDataMode()) {
> >              switch (pstrat) {
> >                  case BASIC:
> >
> > Modified:
> openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceXMLMetaDataParser.java
> > URL:
> http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceXMLMetaDataParser.java?rev=577029&r1=577028&r2=577029&view=diff
> >
> ==============================================================================
> > ---
> openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceXMLMetaDataParser.java
> (original)
> > +++
> openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceXMLMetaDataParser.java
> Tue Sep 18 12:44:06 2007
> > @@ -22,10 +22,12 @@
> >  import java.lang.reflect.Field;
> >  import java.lang.reflect.Member;
> >  import java.lang.reflect.Method;
> > +import java.security.AccessController;
> >
> >  import org.apache.commons.lang.StringUtils;
> >  import org.apache.openjpa.conf.OpenJPAConfiguration;
> >  import org.apache.openjpa.lib.log.Log;
> > +import org.apache.openjpa.lib.util.J2DoPrivHelper;
> >  import org.apache.openjpa.lib.util.Localizer;
> >  import org.apache.openjpa.meta.DelegatingMetaDataFactory;
> >  import org.apache.openjpa.meta.FieldMetaData;
> > @@ -171,8 +173,11 @@
> >      private XMLMetaData parseXMLClassAnnotations() {
> >          // check immediately whether the class has JAXB XML annotations
> >          if (_cls == null || xmlTypeClass == null
> > -            || !(_cls.isAnnotationPresent(xmlTypeClass)
> > -                && _cls.isAnnotationPresent(xmlRootElementClass)))
> > +            || !(((Boolean) AccessController.doPrivileged
> (J2DoPrivHelper
> > +                .isAnnotationPresentAction(_cls,
> xmlTypeClass))).booleanValue()
> > +                && ((Boolean) AccessController
> > +                .doPrivileged(J2DoPrivHelper.isAnnotationPresentAction
> (_cls,
> > +                    xmlRootElementClass))).booleanValue()))
> >              return null;
> >
> >          // find / create metadata
> > @@ -220,7 +225,9 @@
> >          Class superclass = cls.getSuperclass();
> >
> >          // handle inheritance at sub-element level
> > -        if (superclass.isAnnotationPresent(xmlTypeClass))
> > +        if (((Boolean) AccessController.doPrivileged(J2DoPrivHelper
> > +            .isAnnotationPresentAction(superclass, xmlTypeClass)))
> > +            .booleanValue())
> >              populateFromReflection(superclass, meta);
> >
> >          try {
> > @@ -240,8 +247,9 @@
> >                      // avoid JAXB XML bind default name
> >                      if (StringUtils.equals(XMLMetaData.defaultName,
> xmlname))
> >                          xmlname = member.getName();
> > -                    if (((Field) member).getType()
> > -                        .isAnnotationPresent(xmlTypeClass)) {
> > +                    if (((Boolean) AccessController.doPrivileged
> (J2DoPrivHelper
> > +                        .isAnnotationPresentAction(((Field)
> member).getType(),
> > +                            xmlTypeClass))).booleanValue()) {
> >                          field = _repos.addXMLMetaData(((Field)
> member).getType()
> >                              , member.getName());
> >                          parseXmlRootElement(((Field) member).getType(),
> field);
> >
> > Modified:
> openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceMetaDataDefaults.java
> > URL:
> http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceMetaDataDefaults.java?rev=577029&r1=577028&r2=577029&view=diff
> >
> ==============================================================================
> > ---
> openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceMetaDataDefaults.java
> (original)
> > +++
> openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceMetaDataDefaults.java
> Tue Sep 18 12:44:06 2007
> > @@ -116,7 +116,8 @@
> >          if (member == null)
> >              return null;
> >          AnnotatedElement el = (AnnotatedElement) member;
> > -        if (el.isAnnotationPresent(Transient.class))
> > +        if (((Boolean) AccessController.doPrivileged(J2DoPrivHelper
> > +            .isAnnotationPresentAction(el, Transient.class
> ))).booleanValue())
> >              return TRANSIENT;
> >          if (fmd != null
> >              && fmd.getManagement() != FieldMetaData.MANAGE_PERSISTENT)
> > @@ -182,7 +183,8 @@
> >          }
> >
> >          //### EJB3: what if defined in XML?
> > -        if (type.isAnnotationPresent(Embeddable.class))
> > +        if (((Boolean) AccessController.doPrivileged(J2DoPrivHelper
> > +            .isAnnotationPresentAction(type, Embeddable.class
> ))).booleanValue())
> >              return EMBEDDED;
> >          if (Serializable.class.isAssignableFrom(type))
> >              return BASIC;
> > @@ -271,7 +273,8 @@
> >          Annotation[] annos;
> >          String name;
> >          for (int i = 0; i < members.length; i++) {
> > -            annos = members[i].getAnnotations();
> > +            annos = (Annotation[]) AccessController.doPrivileged
> (J2DoPrivHelper
> > +                .getAnnotationsAction(members[i]));
> >              for (int j = 0; j < annos.length; j++) {
> >                  name = annos[j].annotationType().getName();
> >                  if ((name.startsWith("javax.persistence.")
> > @@ -317,7 +320,9 @@
> >
> >      private boolean isAnnotatedTransient(Member member) {
> >          return member instanceof AnnotatedElement
> > -            && ((AnnotatedElement) member).isAnnotationPresent(
> Transient.class);
> > +            && ((Boolean) AccessController.doPrivileged(J2DoPrivHelper
> > +                .isAnnotationPresentAction(((AnnotatedElement) member),
> > +                    Transient.class))).booleanValue();
> >      }
> >
> >      private void logNoSetter(ClassMetaData meta, String name, Exception
> e) {
> >
> > Modified:
> openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceMetaDataFactory.java
> > URL:
> http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceMetaDataFactory.java?rev=577029&r1=577028&r2=577029&view=diff
> >
> ==============================================================================
> > ---
> openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceMetaDataFactory.java
> (original)
> > +++
> openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceMetaDataFactory.java
> Tue Sep 18 12:44:06 2007
> > @@ -293,18 +293,26 @@
> >              return null;
> >          Collection classes = repos.loadPersistentTypes(false, loader);
> >          for (Class cls : (Collection<Class>) classes) {
> > -            if (cls.isAnnotationPresent(NamedQuery.class) &&
> hasNamedQuery
> > +            if (((Boolean) AccessController.doPrivileged(J2DoPrivHelper
> > +                .isAnnotationPresentAction(cls, NamedQuery.class)))
> > +                .booleanValue() && hasNamedQuery
> >                  (queryName, (NamedQuery) cls.getAnnotation(
> NamedQuery.class)))
> >                  return cls;
> > -            if (cls.isAnnotationPresent(NamedQueries.class) &&
> > +            if (((Boolean) AccessController.doPrivileged(J2DoPrivHelper
> > +                .isAnnotationPresentAction(cls, NamedQueries.class)))
> > +                .booleanValue() &&
> >                  hasNamedQuery(queryName, ((NamedQueries) cls.
> >                      getAnnotation(NamedQueries.class)).value()))
> >                  return cls;
> > -            if (cls.isAnnotationPresent(NamedNativeQuery.class) &&
> > +            if (((Boolean) AccessController.doPrivileged(J2DoPrivHelper
> > +                .isAnnotationPresentAction(cls, NamedNativeQuery.class
> )))
> > +                .booleanValue() &&
> >                  hasNamedNativeQuery(queryName, (NamedNativeQuery) cls.
> >                      getAnnotation(NamedNativeQuery.class)))
> >                  return cls;
> > -            if (cls.isAnnotationPresent(NamedNativeQueries.class) &&
> > +            if (((Boolean) AccessController.doPrivileged(J2DoPrivHelper
> > +                .isAnnotationPresentAction(cls,
> NamedNativeQueries.class)))
> > +                .booleanValue() &&
> >                  hasNamedNativeQuery(queryName, ((NamedNativeQueries)
> cls.
> >                      getAnnotation(NamedNativeQueries.class)).value()))
> >                  return cls;
> > @@ -320,13 +328,17 @@
> >
> >          Collection classes = repos.loadPersistentTypes(false, loader);
> >          for (Class cls : (Collection<Class>) classes) {
> > -
> > -            if (cls.isAnnotationPresent(SqlResultSetMapping.class) &&
> > +
> > +            if (((Boolean) AccessController.doPrivileged(J2DoPrivHelper
> > +                .isAnnotationPresentAction(cls,
> SqlResultSetMapping.class)))
> > +                .booleanValue() &&
> >                  hasRSMapping(rsMappingName, (SqlResultSetMapping) cls.
> >                  getAnnotation(SqlResultSetMapping.class)))
> >                  return cls;
> > -
> > -            if (cls.isAnnotationPresent(SqlResultSetMappings.class) &&
> > +
> > +            if (((Boolean) AccessController.doPrivileged(J2DoPrivHelper
> > +                .isAnnotationPresentAction(cls,
> SqlResultSetMappings.class)))
> > +                .booleanValue() &&
> >                  hasRSMapping(rsMappingName, ((SqlResultSetMappings)
> cls.
> >                  getAnnotation(SqlResultSetMappings.class)).value()))
> >                  return cls;
> >
> >
> >
>
>
> --
> Patrick Linskey
> 202 669 5907
>

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