You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by pp...@apache.org on 2009/04/28 11:20:12 UTC

svn commit: r769308 - in /openjpa/trunk: openjpa-kernel/src/main/java/org/apache/openjpa/meta/ openjpa-kernel/src/main/resources/org/apache/openjpa/meta/ openjpa-persistence/src/main/java/org/apache/openjpa/persistence/ openjpa-persistence/src/main/res...

Author: ppoddar
Date: Tue Apr 28 09:20:06 2009
New Revision: 769308

URL: http://svn.apache.org/viewvc?rev=769308&view=rev
Log:
OPENJPA-926: JPA 2.0 Access processing by XML descriptors

Modified:
    openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractMetaDataDefaults.java
    openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AccessCode.java
    openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java
    openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataDefaults.java
    openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/NoneMetaDataFactory.java
    openjpa/trunk/openjpa-kernel/src/main/resources/org/apache/openjpa/meta/localizer.properties
    openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceMetaDataDefaults.java
    openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java
    openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/localizer.properties

Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractMetaDataDefaults.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractMetaDataDefaults.java?rev=769308&r1=769307&r2=769308&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractMetaDataDefaults.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractMetaDataDefaults.java Tue Apr 28 09:20:06 2009
@@ -179,7 +179,8 @@
             FieldMetaData fmd;
             for (int i = 0; i < fieldNames.length; i ++) {
             	String property = fieldNames[i];
-                member = getMemberByProperty(meta, property);
+                member = getMemberByProperty(meta, property,
+                	AccessCode.UNKNOWN, true);
                 if (member == null) // transient or indeterminable access
                 	continue;
                 fmd = meta.addDeclaredField(property, fieldTypes[i]);
@@ -241,13 +242,6 @@
     }
     
     /**
-     * Called when populating from PCRegistry when only property names are
-     * available.
-     */
-    protected abstract Member getMemberByProperty(ClassMetaData meta, 
-    		String property); 
-
-    /**
      * Return the list of fields in <code>meta</code> that use field access,
      * or <code>null</code> if a list of fields is unobtainable. An empty list
      * should be returned if the list of fields is obtainable, but there
@@ -333,34 +327,10 @@
             return null;
         if (fmd.getBackingMember() != null)
         	return fmd.getBackingMember();
-        return getMemberByProperty(fmd.getDeclaringMetaData(), fmd.getName());
-//        try {
-//            //### note that we might not have access to declaring metadata yet
-//            //### (this could be used during parse), so we have to settle for
-//            //### defining.  could cause problems if maps a superclass field
-//            //### where the superclass uses a different access type
-//            if (fmd.getBackingMember() == null) {
-//                if ((fmd.getDefiningMetaData().getAccessType() &
-//                    ClassMetaData.ACCESS_FIELD) == ClassMetaData.ACCESS_FIELD)
-//                    return AccessController.doPrivileged(
-//                        J2DoPrivHelper.getDeclaredFieldAction(
-//                            fmd.getDeclaringType(), fmd.getName())); 
-//                return Reflection.findGetter(fmd.getDeclaringType(), 
-//                    fmd.getName(), true);                
-//            } else {
-//                return fmd.getBackingMember();
-//            }
-//        } catch (OpenJPAException ke) {
-//            throw ke;
-//        } catch (Exception e) {
-//            if (e instanceof PrivilegedActionException)
-//                e = ((PrivilegedActionException) e).getException();
-//            throw new InternalException(e);
-//        }
+        return getMemberByProperty(fmd.getDeclaringMetaData(), fmd.getName(),
+            fmd.getAccessType(), true);
     }
     
-
-
     public Class<?> getUnimplementedExceptionType() {
         return UnsupportedOperationException.class;
     }

Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AccessCode.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AccessCode.java?rev=769308&r1=769307&r2=769308&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AccessCode.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AccessCode.java Tue Apr 28 09:20:06 2009
@@ -18,6 +18,9 @@
  */
 package org.apache.openjpa.meta;
 
+import org.apache.openjpa.lib.util.Localizer;
+import org.apache.openjpa.util.UserException;
+
 /**
  * Represents access styles for members of a class and field through a 
  * 5-bit integer.
@@ -74,6 +77,8 @@
 	public static int EXPLICIT  = 2 << 2;
 	public static int MIXED     = 2 << 3;
 	
+	private static Localizer _loc = Localizer.forPackage(AccessCode.class);
+	
 	/**
 	 * Affirms if the given code is valid. 
 	 */
@@ -167,6 +172,17 @@
 		return false;
 	}
 	
+	public static int mergeFieldCode(ClassMetaData meta, FieldMetaData fmd, 
+			int fCode) {
+		int cCode = meta.getAccessType();
+		try {
+			return mergeFieldCode(cCode, fCode);
+		} catch (IllegalStateException e) {
+            throw new UserException(_loc.get("access-illegal-merge",
+                fmd.getFullName(false), toString(fCode), toString(cCode)));
+		}
+	}
+	
 	/**
      * Merges the field access type with the class access type provided such
      * merge is valid.
@@ -192,8 +208,8 @@
 				if (fCode == cCode)
 					return cCode;
 				else
-                    throw new IllegalStateException(toString(cCode) + 
-                        " not compatible to " + toString(fCode));
+                    throw new IllegalStateException("Can not merge field " +
+                    toString(fCode) + " to class " + toString(cCode));
 			}
 		}
 		return cCode;

Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java?rev=769308&r1=769307&r2=769308&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java Tue Apr 28 09:20:06 2009
@@ -697,7 +697,7 @@
      * it may have the side-effect of changing the access code of this receiver.
      */
     void mergeFieldAccess(FieldMetaData fmd, int fCode) {
-    	setAccessType(AccessCode.mergeFieldCode(_accessType, fCode));
+    	setAccessType(AccessCode.mergeFieldCode(this, fmd, fCode));
     }
 
     /**

Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataDefaults.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataDefaults.java?rev=769308&r1=769307&r2=769308&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataDefaults.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataDefaults.java Tue Apr 28 09:20:06 2009
@@ -83,6 +83,22 @@
      * Return the backing member for the given field metadata.
      */
     public Member getBackingMember(FieldMetaData field);
+    
+    /**
+     * Get the field or getter for the given attribute of the given class.
+     * 
+     * @param meta is the declaring class 
+     * @param attribute name of the logical attribute
+     * @param access whether to look for the field of getter method. 
+     * If unknown, then field or property is chosen based on the access type 
+     * used by the given class.
+     * @param scanAnnotation if true and access is unknown then scans the
+     * annotation on the member to determine access.
+     * 
+     * @since 2.0.0
+     */
+    public Member getMemberByProperty(ClassMetaData meta, String attribute, 
+    	int access, boolean scanAnnotation);
 
     /**
      * Return a runtime exception class to throw for un-implemented

Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/NoneMetaDataFactory.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/NoneMetaDataFactory.java?rev=769308&r1=769307&r2=769308&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/NoneMetaDataFactory.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/NoneMetaDataFactory.java Tue Apr 28 09:20:06 2009
@@ -131,7 +131,12 @@
         return null;
     }
 
-    public Class getUnimplementedExceptionType() {
+    public Member getMemberByProperty(ClassMetaData meta, String property,
+    		int access, boolean scan) {
+    	return null;
+    }
+    
+    public Class<? extends Exception> getUnimplementedExceptionType() {
         return null;
     }
     

Modified: openjpa/trunk/openjpa-kernel/src/main/resources/org/apache/openjpa/meta/localizer.properties
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/resources/org/apache/openjpa/meta/localizer.properties?rev=769308&r1=769307&r2=769308&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/resources/org/apache/openjpa/meta/localizer.properties (original)
+++ openjpa/trunk/openjpa-kernel/src/main/resources/org/apache/openjpa/meta/localizer.properties Tue Apr 28 09:20:06 2009
@@ -23,7 +23,8 @@
 	"{3}" used by its persistent superclass "{2}".  All persistent classes in \
 	an inheritance hierarchy must use a single implicit field or property \
 	based access style or explicitly declare an access style.
-
+access-illegal-merge: Field "{0}" with "{1}" is not compatible with "{2}" \
+	used by its declaring class. 
 meta-reflect: Using reflection for metadata generation.
 gen-meta: Generating default metadata for type "{0}".
 load-cls: Loading metadata for "{0}" under mode "{1}".

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=769308&r1=769307&r2=769308&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 Apr 28 09:20:06 2009
@@ -314,7 +314,7 @@
     	if (sup != null && !AccessCode.isUnknown(sup))
     		return sup.getAccessType();
     	
-        return AccessCode.FIELD;
+        return getDefaultAccessType();
     }
     
     /**
@@ -598,33 +598,34 @@
     /**
      * Gets either the instance field or the getter method depending upon the 
      * access style of the given meta-data.
-     * <br>
-     * Defining class is used instead of declaring class because this method
-     * may be invoked during parsing phase when declaring meta-data may not be
-     * available.  
      */
-    @Override
-    protected Member getMemberByProperty(ClassMetaData meta, String property) {
+    public Member getMemberByProperty(ClassMetaData meta, String property, 
+    	int access, boolean applyDefaultRule) {
     	Class<?> cls = meta.getDescribedType();
         Field field = Reflection.findField(cls, property, false);;
         Method getter = Reflection.findGetter(cls, property, false);
+        Method setter = Reflection.findSetter(cls, property, false);
+        int accessCode = AccessCode.isUnknown(access) ? meta.getAccessType() :
+        	access;
+        if (field == null && getter == null)
+        	error(meta, _loc.get("access-no-property", cls, property));
     	if (isAnnotated(field) && isAnnotated(getter))
     		throw new IllegalStateException(_loc.get("access-duplicate", 
     			field, getter).toString());
     	
-        if (AccessCode.isField(meta)) {
+        if (AccessCode.isField(accessCode)) {
            if (isAnnotatedAccess(getter, AccessType.PROPERTY)) {
         	   meta.setAccessType(AccessCode.MIXED | meta.getAccessType());
                return getter;
            }
-           return field; 
-        } else if (AccessCode.isProperty(meta)) {
+           return field == null ? getter : field; 
+        } else if (AccessCode.isProperty(accessCode)) {
             if (isAnnotatedAccess(field, AccessType.FIELD)) {
          	   meta.setAccessType(AccessCode.MIXED | meta.getAccessType());
                return field;
             }            
-            return getter;
-        } else if (AccessCode.isUnknown(meta)) {
+            return getter == null ? field : getter;
+        } else if (AccessCode.isUnknown(accessCode)) {
         	if (isAnnotated(field)) {
         		meta.setAccessType(AccessCode.FIELD);
         		return field;

Modified: openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java?rev=769308&r1=769307&r2=769308&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java (original)
+++ openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java Tue Apr 28 09:20:06 2009
@@ -24,8 +24,6 @@
 import java.lang.reflect.Member;
 import java.lang.reflect.Method;
 import java.net.URL;
-import java.security.AccessController;
-import java.security.PrivilegedActionException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.EnumSet;
@@ -35,7 +33,6 @@
 import java.util.Stack;
 import javax.persistence.CascadeType;
 import javax.persistence.GenerationType;
-import javax.persistence.LockModeType;
 
 import static javax.persistence.CascadeType.*;
 
@@ -54,8 +51,8 @@
 import org.apache.openjpa.lib.conf.Configurations;
 import org.apache.openjpa.lib.log.Log;
 import org.apache.openjpa.lib.meta.CFMetaDataParser;
+import org.apache.openjpa.lib.meta.SourceTracker;
 import org.apache.openjpa.lib.meta.XMLVersionParser;
-import org.apache.openjpa.lib.util.J2DoPrivHelper;
 import org.apache.openjpa.lib.util.Localizer;
 import org.apache.openjpa.meta.AccessCode;
 import org.apache.openjpa.meta.ClassMetaData;
@@ -78,10 +75,13 @@
 import serp.util.Numbers;
 
 /**
- * Custom SAX parser used by the system to quickly parse persistence i
- * metadata files.
+ * Custom SAX parser used by the system to quickly parse persistence 
+ * metadata files. This parser may invoke 
+ * {@linkplain AnnotationPersistenceMetaDataParser another parser} to scan 
+ * source code annotation.
  *
  * @author Steve Kim
+ * @author Pinaki Poddar
  * @nojavadoc
  */
 public class XMLPersistenceMetaDataParser
@@ -108,9 +108,9 @@
         new HashMap<String, Object>();
 
     // Map for storing deferred metadata which needs to be populated
-    // after embeddedables are loaded.
-    private static final Map<Class, ArrayList<MetaDataContext>> _embeddables = 
-        new HashMap<Class, ArrayList<MetaDataContext>>();
+    // after embeddables are loaded.
+    private static final Map<Class<?>, ArrayList<MetaDataContext>> 
+        _embeddables = new HashMap<Class<?>, ArrayList<MetaDataContext>>();
 
     static {
         _elems.put(ELEM_PKG, ELEM_PKG);
@@ -178,10 +178,10 @@
     private int _mode = MODE_NONE;
     private boolean _override = false;
 
-    private final Stack _elements = new Stack();
-    private final Stack _parents = new Stack();
+    private final Stack<Object> _elements = new Stack<Object>();
+    private final Stack<Object> _parents = new Stack<Object>();
 
-    private Class _cls = null;
+    private Class<?> _cls = null;
     private int _fieldPos = 0;
     private int _clsPos = 0;
     private int _access = AccessCode.UNKNOWN;
@@ -189,7 +189,7 @@
     private Set<CascadeType> _cascades = null;
     private Set<CascadeType> _pkgCascades = null;
 
-    private Class _listener = null;
+    private Class<?> _listener = null;
     private Collection<LifecycleCallbacks>[] _callbacks = null;
     private int[] _highs = null;
     private boolean _isXMLMappingMetaDataComplete = false;
@@ -258,7 +258,7 @@
     public void setRepository(MetaDataRepository repos) {
         _repos = repos;
         if (repos != null
-            && (repos.getValidate() & repos.VALIDATE_RUNTIME) != 0)
+            && (repos.getValidate() & MetaDataRepository.VALIDATE_RUNTIME) != 0)
             setParseComments(false);
     }
 
@@ -843,20 +843,9 @@
             return false;
         }
 
-        // if we don't know the default access type, check to see if a 
-        // superclass has already defined the access type
-        int defaultAccess = _access;
-        if (defaultAccess == AccessCode.UNKNOWN) {
-            ClassMetaData sup = repos.getCachedMetaData(_cls.getSuperclass());
-            if (sup != null)
-                defaultAccess = sup.getAccessType();
-        }
-
-        int access = AccessCode.UNKNOWN;
         if (meta == null) {
-            // add metadata for this type
-            access = toAccessType(attrs.getValue("access"), defaultAccess);
-            meta = repos.addMetaData(_cls);
+            int accessCode = toAccessType(attrs.getValue("access"));
+            meta = repos.addMetaData(_cls, accessCode);
             meta.setEnvClassLoader(_envLoader);
             meta.setSourceMode(MODE_NONE);
 
@@ -864,12 +853,11 @@
             if (_parser != null)
                 _parser.parse(_cls);
         }
-        access = meta.getAccessType();
         
         boolean mappedSuper = "mapped-superclass".equals(elem);
         boolean embeddable = "embeddable".equals(elem);
         if (isMetaDataMode()) {
-            meta.setSource(getSourceFile(), meta.SRC_XML);
+            meta.setSource(getSourceFile(), SourceTracker.SRC_XML);
             meta.setSourceMode(MODE_META, true);
             Locator locator = getLocation().getLocator();
             if (locator != null) {
@@ -882,8 +870,6 @@
                 meta.setTypeAlias(name);
             meta.setAbstract(mappedSuper);
             meta.setEmbeddedOnly(mappedSuper || embeddable);
-//            if (mappedSuper)
-//                meta.setIdentityType(meta.ID_UNKNOWN);
             
             if (embeddable) {
                 addDeferredEmbeddableMetaData(_cls);
@@ -935,19 +921,19 @@
      * Default access element.
      */
     private void endAccess() {
-        _access = toAccessType(currentText(), AccessCode.UNKNOWN);
+        _access = toAccessType(currentText());
     }
 
     /**
      * Parse the given string as an entity access type, defaulting to given
      * default if string is empty.
      */
-    private int toAccessType(String str, int def) {
+    private int toAccessType(String str) {
         if (StringUtils.isEmpty(str))
-            return def;
+            return AccessCode.UNKNOWN;
         if ("PROPERTY".equals(str))
-            return AccessCode.PROPERTY;
-        return AccessCode.FIELD;
+            return AccessCode.EXPLICIT | AccessCode.PROPERTY;
+        return AccessCode.EXPLICIT | AccessCode.FIELD;
     }
 
     /**
@@ -1006,7 +992,7 @@
         Object cur = currentElement();
         Object scope = (cur instanceof ClassMetaData)
             ? ((ClassMetaData) cur).getDescribedType() : null;
-        meta.setSource(getSourceFile(), scope, meta.SRC_XML);
+        meta.setSource(getSourceFile(), scope, SourceTracker.SRC_XML);
         Locator locator = getLocation().getLocator();
         if (locator != null) {
             meta.setLineNumber(Numbers.valueOf(locator.getLineNumber()));
@@ -1064,7 +1050,7 @@
 
         ClassMetaData meta = (ClassMetaData) currentElement();
         String cls = attrs.getValue("class");
-        Class idCls = null;
+        Class<?> idCls = null;
         try {
             idCls = classForName(cls);
         } catch (Throwable t) {
@@ -1203,40 +1189,10 @@
         if ((field == null || field.getDeclaredType() == Object.class ||
              field.getAccessType() != fldAccess)
             && meta.getDescribedType() != Object.class) {
-            Member member = null;
-            Class type = null;
-            try {
-                if ((field != null && 
-                    field.getAccessType() == AccessCode.PROPERTY) ||
-                    (fldAccess == AccessCode.PROPERTY)) {
-                    String cap = StringUtils.capitalize(name);
-                    type = meta.getDescribedType();
-                    try {
-                        member = AccessController.doPrivileged(
-                            J2DoPrivHelper.getDeclaredMethodAction(
-                                type, "get" + cap,
-                                (Class[]) null));// varargs disambiguate
-                    } catch (Exception excep) {
-                        try {
-                            member = AccessController.doPrivileged(
-                                J2DoPrivHelper.getDeclaredMethodAction(
-                                    type, "is" + cap, (Class[]) null));
-                        } catch (Exception excep2) {
-                            throw excep;
-                        }
-                    }
-                    type = ((Method) member).getReturnType();
-                } else {
-                    member = AccessController.doPrivileged(
-                        J2DoPrivHelper.getDeclaredFieldAction(
-                            meta.getDescribedType(), name));
-                    type = ((Field) member).getType();
-                }
-            } catch (Exception e) {
-                if (e instanceof PrivilegedActionException)
-                    e = ((PrivilegedActionException) e).getException();
-                throw getException(_loc.get("invalid-attr", name, meta), e);
-            }
+            Member member = _repos.getMetaDataFactory().getDefaults()
+     	        .getMemberByProperty(meta, name, fldAccess, false);
+            Class<?> type = Field.class.isInstance(member) ? 
+                ((Field)member).getType() : ((Method)member).getReturnType();
 
             if (field == null) {
                 field = meta.addDeclaredField(name, type);
@@ -1288,9 +1244,9 @@
         if (attrs != null) {
             String access = attrs.getValue("access");
             if ("PROPERTY".equals(access))
-                return AccessCode.PROPERTY;
+                return AccessCode.EXPLICIT | AccessCode.PROPERTY;
             if ("FIELD".equals(access))
-                return AccessCode.FIELD;
+                return AccessCode.EXPLICIT | AccessCode.FIELD;
         }
         // Check access defined on field, if provided
         if (field != null) {
@@ -1607,7 +1563,7 @@
 
         QueryMetaData meta = getRepository().searchQueryMetaDataByName(name);
         if (meta != null) {
-        	Class defType = meta.getDefiningType();
+        	Class<?> defType = meta.getDefiningType();
             if ((defType != _cls) && log.isWarnEnabled()) {
                 log.warn(_loc.get("dup-query", name, currentLocation(),
             	        defType));
@@ -1634,7 +1590,7 @@
         Object cur = currentElement();
         Object scope = (cur instanceof ClassMetaData)
             ? ((ClassMetaData) cur).getDescribedType() : null;
-        meta.setSource(getSourceFile(), scope, meta.SRC_XML);
+        meta.setSource(getSourceFile(), scope, SourceTracker.SRC_XML);
         if (isMetaDataMode())
             meta.setSourceMode(MODE_META);
         else if (isMappingMode())
@@ -1698,7 +1654,7 @@
         meta.setLanguage(QueryLanguages.LANG_SQL);
         String val = attrs.getValue("result-class");
         if (val != null) {
-            Class type = classForName(val);
+            Class<?> type = classForName(val);
             if (ImplHelper.isManagedType(getConfiguration(), type))
                 meta.setCandidateType(type);
             else
@@ -1712,7 +1668,7 @@
         Object cur = currentElement();
         Object scope = (cur instanceof ClassMetaData)
             ? ((ClassMetaData) cur).getDescribedType() : null;
-        meta.setSource(getSourceFile(), scope, meta.SRC_XML);
+        meta.setSource(getSourceFile(), scope, SourceTracker.SRC_XML);
         Locator locator = getLocation().getLocator();
         if (locator != null) {
             meta.setLineNumber(Numbers.valueOf(locator.getLineNumber()));
@@ -1829,7 +1785,7 @@
             return false;
 
         boolean system = currentElement() == null;
-        Class type = currentElement() == null ? null :
+        Class<?> type = currentElement() == null ? null :
             ((ClassMetaData) currentElement()).getDescribedType();
         if (type == null)
             type = Object.class;
@@ -1841,7 +1797,6 @@
                 _highs = new int[LifecycleEvent.ALL_EVENTS.length];
         }
 
-        MetaDataDefaults def = _repos.getMetaDataFactory().getDefaults();
         LifecycleCallbacks adapter;
         if (_listener != null)
             adapter = new BeanLifecycleCallbacks(_listener,
@@ -1876,7 +1831,7 @@
      */
     private void storeCallbacks(ClassMetaData cls) {
         LifecycleMetaData meta = cls.getLifecycleMetaData();
-        Class supCls = cls.getDescribedType().getSuperclass();
+        Class<?> supCls = cls.getDescribedType().getSuperclass();
         Collection<LifecycleCallbacks>[] supCalls = null;
         if (!Object.class.equals(supCls)) {
             supCalls = AnnotationPersistenceMetaDataParser.parseCallbackMethods
@@ -1913,7 +1868,7 @@
     /**
      * Instantiate the given class, taking into account the default package.
 	 */
-	protected Class classForName(String name)
+	protected Class<?> classForName(String name)
 		throws SAXException {
 		if ("Entity".equals(name))
 			return PersistenceCapable.class;
@@ -1927,7 +1882,7 @@
      * @param embedType  embeddable class 
      * @param access class level access for embeddable
      */
-    protected void addDeferredEmbeddableMetaData(Class embedType) {
+    protected void addDeferredEmbeddableMetaData(Class<?> embedType) {
         ArrayList<MetaDataContext> fmds = _embeddables.get(embedType);
         if (fmds != null && fmds.size() > 0) {
             for (int i = fmds.size() -1 ; i >= 0; i--) {
@@ -1948,7 +1903,7 @@
         }
     }
     
-    protected void deferEmbeddable(Class embedType, MetaDataContext fmd) {
+    protected void deferEmbeddable(Class<?> embedType, MetaDataContext fmd) {
         ArrayList<MetaDataContext> fmds = _embeddables.get(embedType);
         if (fmds == null) {
             fmds = new ArrayList<MetaDataContext>();

Modified: openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/localizer.properties
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/localizer.properties?rev=769308&r1=769307&r2=769308&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/localizer.properties (original)
+++ openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/localizer.properties Tue Apr 28 09:20:06 2009
@@ -23,6 +23,8 @@
 access-none: Property "{1}" in class "{0}" is not annotated an instance field \
     or a getter method. It is not possible to determine its access type
 access-unknown: Access style for "{0}" can not be determined.
+access-no-property: No field or getter method for attribute "{1}" can be found \
+	in "{0}". 
 close-invoked: You have closed the EntityManager, though the persistence \
     context will remain active until the current transaction commits.
 no-managed-trans: There is no managed transaction in progress to sync this \