You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by si...@apache.org on 2009/09/16 15:12:13 UTC
svn commit: r815754 - in /labs/magma/trunk/foundation-database/src:
main/java/org/apache/magma/database/DatabaseConverter.java
test/java/org/apache/magma/database/LogicallyNamedBean.java
test/java/org/apache/magma/database/TestJPAConverter.java
Author: simoneg
Date: Wed Sep 16 13:12:12 2009
New Revision: 815754
URL: http://svn.apache.org/viewvc?rev=815754&view=rev
Log:
LABS-456 : database converter takes into account logical names
Added:
labs/magma/trunk/foundation-database/src/test/java/org/apache/magma/database/LogicallyNamedBean.java
Modified:
labs/magma/trunk/foundation-database/src/main/java/org/apache/magma/database/DatabaseConverter.java
labs/magma/trunk/foundation-database/src/test/java/org/apache/magma/database/TestJPAConverter.java
Modified: labs/magma/trunk/foundation-database/src/main/java/org/apache/magma/database/DatabaseConverter.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-database/src/main/java/org/apache/magma/database/DatabaseConverter.java?rev=815754&r1=815753&r2=815754&view=diff
==============================================================================
--- labs/magma/trunk/foundation-database/src/main/java/org/apache/magma/database/DatabaseConverter.java (original)
+++ labs/magma/trunk/foundation-database/src/main/java/org/apache/magma/database/DatabaseConverter.java Wed Sep 16 13:12:12 2009
@@ -19,6 +19,7 @@
import org.apache.magma.beans.BeanData;
import org.apache.magma.conversion.Converter;
import org.apache.magma.conversion.GenericConverter;
+import org.apache.magma.basics.MagmaException;
public class DatabaseConverter implements Converter<DatabasePersisted> {
@@ -32,17 +33,42 @@
public DatabasePersisted from(String value) {
if (value == null || value.equals("")) return null;
- DatabaseIdentity id = BeanData.getFor(myclass).getDatabaseIdentity();
- Object key = id.getSubconverter().from(value);
+ DatabasePersisted ret = null;
+ Exception retexc = null;
Database db = new Database();
- return db.load(myclass, key);
+ try {
+ DatabaseIdentity id = BeanData.getFor(myclass).getDatabaseIdentity();
+ Object key = id.getSubconverter().from(value);
+ ret = db.load(myclass, key);
+ } catch (Exception e) {
+ retexc = e;
+ }
+ if (ret == null && LogicallyNamed.class.isAssignableFrom(myclass)) {
+ try {
+ ret = (DatabasePersisted) db.named((Class<? extends LogicallyNamed>)myclass, value);
+ } catch (Exception e) {
+ if (retexc == null) {
+ throw new MagmaException(e, "Error retriving {0} using logical name \"{1}\"", myclass, value);
+ } else {
+ throw new MagmaException(e, "Error retriving {0} using logical name \"{1}\"", myclass, value);
+ }
+ }
+ } else if (retexc != null) {
+ throw new MagmaException(retexc, "Error retrieving {0} using primary key \"{1}\"", myclass, value);
+ }
+ return ret;
}
@SuppressWarnings("unchecked")
public String to(DatabasePersisted value) {
if (value == null) return "";
- DatabaseIdentity id = BeanData.getFor(myclass).getDatabaseIdentity();
- String ret = id.getSubconverter().to(value.getPrimaryKey());
+ String ret = null;
+ if (value instanceof LogicallyNamed) {
+ ret = ((LogicallyNamed)value).getLogicalName();
+ } else {
+ DatabaseIdentity id = BeanData.getFor(myclass).getDatabaseIdentity();
+ ret = id.getSubconverter().to(value.getPrimaryKey());
+ }
return ret;
}
Added: labs/magma/trunk/foundation-database/src/test/java/org/apache/magma/database/LogicallyNamedBean.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-database/src/test/java/org/apache/magma/database/LogicallyNamedBean.java?rev=815754&view=auto
==============================================================================
--- labs/magma/trunk/foundation-database/src/test/java/org/apache/magma/database/LogicallyNamedBean.java (added)
+++ labs/magma/trunk/foundation-database/src/test/java/org/apache/magma/database/LogicallyNamedBean.java Wed Sep 16 13:12:12 2009
@@ -0,0 +1,33 @@
+package org.apache.magma.database;
+
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+
+import org.apache.magma.beans.MagmaBean;
+import org.apache.magma.database.LogicallyNamed;
+
+@MagmaBean
+@Entity
+public class LogicallyNamedBean implements LogicallyNamed {
+ private String name;
+ private long id;
+
+ public String getName() {
+ return name;
+ }
+ public void setName(String name) {
+ this.name = name;
+ }
+ public long getId() {
+ return id;
+ }
+ public void setId(long id) {
+ this.id = id;
+ }
+
+ public String computeLogicalName() {
+ return this.getName();
+ }
+
+}
Modified: labs/magma/trunk/foundation-database/src/test/java/org/apache/magma/database/TestJPAConverter.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-database/src/test/java/org/apache/magma/database/TestJPAConverter.java?rev=815754&r1=815753&r2=815754&view=diff
==============================================================================
--- labs/magma/trunk/foundation-database/src/test/java/org/apache/magma/database/TestJPAConverter.java (original)
+++ labs/magma/trunk/foundation-database/src/test/java/org/apache/magma/database/TestJPAConverter.java Wed Sep 16 13:12:12 2009
@@ -16,6 +16,7 @@
*/
package org.apache.magma.database;
+import static org.junit.Assert.*;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
@@ -41,6 +42,21 @@
assertNotNull(tos);
assertEquals("5", tos);
}
+
+ @Test
+ public void named() throws Exception {
+ Converter converter = Converters.getConverterFor(LogicallyNamedBean.class);
+ assertNotNull(converter);
+ assertTrue(converter instanceof DatabaseConverter);
+ DatabaseConverter conv = (DatabaseConverter) converter;
+ LogicallyNamedBean b = new LogicallyNamedBean();
+ b.setId(5);
+ b.setName("Simone");
+ b.setLogicalName("simone");
+ String tos = converter.to(b);
+ assertNotNull(tos);
+ assertEquals("simone", tos);
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org