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 2010/02/18 20:11:37 UTC
svn commit: r911530 - in /openjpa/trunk:
openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/
openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/meta/strats/
openjpa-kernel/src/main/java/org/apache/openjpa/util/
openjpa-lib/src/main/jav...
Author: ppoddar
Date: Thu Feb 18 19:11:36 2010
New Revision: 911530
URL: http://svn.apache.org/viewvc?rev=911530&view=rev
Log:
Throw informative error messages on bad enum field
Modified:
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/EnumValueHandler.java
openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/meta/strats/localizer.properties
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/Exceptions.java
openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/Localizer.java
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/EnumValueHandler.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/EnumValueHandler.java?rev=911530&r1=911529&r2=911530&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/EnumValueHandler.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/EnumValueHandler.java Thu Feb 18 19:11:36 2010
@@ -26,7 +26,9 @@
import org.apache.openjpa.jdbc.schema.Column;
import org.apache.openjpa.jdbc.schema.ColumnIO;
import org.apache.openjpa.jdbc.sql.DBDictionary;
+import org.apache.openjpa.lib.util.Localizer;
import org.apache.openjpa.meta.JavaTypes;
+import org.apache.openjpa.util.Exceptions;
import org.apache.openjpa.util.MetaDataException;
/**
@@ -34,11 +36,13 @@
*
* @nojavadoc
*/
+@SuppressWarnings("serial")
public class EnumValueHandler
extends AbstractValueHandler {
- private Enum[] _vals = null;
+ private Enum<?>[] _vals = null;
private boolean _ordinal = false;
+ private static final Localizer _loc = Localizer.forPackage(EnumValueHandler.class);
/**
* Whether to store the enum value as its ordinal.
@@ -72,7 +76,9 @@
Method m = vm.getType().getMethod("values", (Class[]) null);
_vals = (Enum[]) m.invoke(null, (Object[]) null);
} catch (Exception e) {
- throw new MetaDataException().setCause(e);
+
+ throw new MetaDataException(_loc.get("not-enum-field",
+ vm.getFieldMapping().getFullName(true), Exceptions.toClassName(vm.getType()))).setCause(e);
}
Column col = new Column();
@@ -96,8 +102,7 @@
return true;
}
- public Object toDataStoreValue(ValueMapping vm, Object val,
- JDBCStore store) {
+ public Object toDataStoreValue(ValueMapping vm, Object val, JDBCStore store) {
if (val == null)
return null;
if (_ordinal)
Modified: openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/meta/strats/localizer.properties
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/meta/strats/localizer.properties?rev=911530&r1=911529&r2=911530&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/meta/strats/localizer.properties (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/meta/strats/localizer.properties Thu Feb 18 19:11:36 2010
@@ -137,3 +137,4 @@
multi-column-version-unsupported:You have specified more than one column for \
version data, but the "{1}" version strategy does not support multi-column \
versioning.
+not-enum-field: Field "{0}" is expected to be a enum but actually is of type "{1}".
\ No newline at end of file
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/Exceptions.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/Exceptions.java?rev=911530&r1=911529&r2=911530&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/Exceptions.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/Exceptions.java Thu Feb 18 19:11:36 2010
@@ -265,4 +265,11 @@
else
return pc.pcFetchObjectId();
}
+
+ public static String toClassName(Class<?> cls) {
+ if (cls == null) return "";
+ if (cls.isArray())
+ return toClassName(cls.getComponentType())+"[]";
+ return cls.getName();
+ }
}
Modified: openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/Localizer.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/Localizer.java?rev=911530&r1=911529&r2=911530&view=diff
==============================================================================
--- openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/Localizer.java (original)
+++ openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/Localizer.java Thu Feb 18 19:11:36 2010
@@ -48,11 +48,12 @@
public class Localizer {
// static cache of package+loc name to localizer mappings
- private static final Map _localizers = new ConcurrentHashMap();
+ private static final Map<String,Localizer> _localizers = new ConcurrentHashMap<String,Localizer>();
// list of resource providers to delegate to when locating resources
- private static final Collection _providers = new CopyOnWriteArraySet
- (Arrays.asList(new Object[]{
+ private static final Collection<ResourceBundleProvider> _providers =
+ new CopyOnWriteArraySet<ResourceBundleProvider>
+ (Arrays.asList(new ResourceBundleProvider[]{
new SimpleResourceBundleProvider(),
new StreamResourceBundleProvider(),
new ZipResourceBundleProvider(), }));
@@ -63,7 +64,7 @@
*
* @see #forPackage(Class,Locale)
*/
- public static Localizer forPackage(Class cls) {
+ public static Localizer forPackage(Class<?> cls) {
return forPackage(cls, null);
}
@@ -77,7 +78,7 @@
* @param locale the locale to which strings should be localized; if
* null, the system default will be assumed
*/
- public static Localizer forPackage(Class cls, Locale locale) {
+ public static Localizer forPackage(Class<?> cls, Locale locale) {
if (locale == null)
locale = Locale.getDefault();
@@ -138,10 +139,9 @@
// no locking; it's ok to create multiple bundles
if (_bundle == null) {
// find resource bundle
- for (Iterator itr = _providers.iterator();
+ for (Iterator<ResourceBundleProvider> itr = _providers.iterator();
itr.hasNext() && _bundle == null; ) {
- _bundle = ((ResourceBundleProvider) itr.next())
- .findResource(_file, _locale, _loader);
+ _bundle = itr.next().findResource(_file, _locale, _loader);
}
}
return _bundle;