Revision: 12142
http://datanucleus.svn.sourceforge.net/datanucleus/?rev=12142&view=rev
Author: andy_jefferson
Date: 2011-02-09 19:42:21 +0000 (Wed, 09 Feb 2011)
Log Message:
-----------
[NUCJSON-15] Clean up use of member-name, and attempt to tidy up code
Modified Paths:
--------------
platform/accessplatform/trunk/build.properties
platform/store.json/trunk/META-INF/MANIFEST.MF
platform/store.json/trunk/pom.xml
platform/store.json/trunk/src/java/org/datanucleus/store/json/CloudStoragePersistenceHandler.java
platform/store.json/trunk/src/java/org/datanucleus/store/json/JsonPersistenceHandler.java
platform/store.json/trunk/src/java/org/datanucleus/store/json/fieldmanager/FetchFieldManager.java
Added Paths:
-----------
platform/store.json/trunk/src/java/org/datanucleus/store/json/JSONUtils.java
platform/store.json/trunk/src/java/org/datanucleus/store/json/fieldmanager/StoreFieldManager.java
Removed Paths:
-------------
platform/store.json/trunk/src/java/org/datanucleus/store/json/fieldmanager/InsertFieldManager.java
Modified: platform/accessplatform/trunk/build.properties
===================================================================
--- platform/accessplatform/trunk/build.properties 2011-02-09 17:02:35 UTC (rev 12141)
+++ platform/accessplatform/trunk/build.properties 2011-02-09 19:42:21 UTC (rev 12142)
@@ -44,7 +44,7 @@
datanucleus-db4o.version=3.0.0-m2-SNAPSHOT
datanucleus-neodatis.version=3.0.0-m2-SNAPSHOT
datanucleus-ldap.version=3.0.0-m1
-datanucleus-json.version=3.0.0-m1
+datanucleus-json.version=3.0.0-m2-SNAPSHOT
datanucleus-hbase.version=3.0.0-m2-SNAPSHOT
datanucleus-mongodb.version=3.0.0-m2-SNAPSHOT
Modified: platform/store.json/trunk/META-INF/MANIFEST.MF
===================================================================
--- platform/store.json/trunk/META-INF/MANIFEST.MF 2011-02-09 17:02:35 UTC (rev 12141)
+++ platform/store.json/trunk/META-INF/MANIFEST.MF 2011-02-09 19:42:21 UTC (rev 12142)
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: JSON Plug-in
Bundle-SymbolicName: org.datanucleus.store.json;singleton:=true
-Bundle-Version: 3.0.0.m1
+Bundle-Version: 3.0.0.m2
Bundle-Vendor: DataNucleus
Require-Bundle: org.datanucleus;bundle-version="3.0.0.m1"
Import-Package: javax.transaction;resolution:=optional,
Modified: platform/store.json/trunk/pom.xml
===================================================================
--- platform/store.json/trunk/pom.xml 2011-02-09 17:02:35 UTC (rev 12141)
+++ platform/store.json/trunk/pom.xml 2011-02-09 19:42:21 UTC (rev 12142)
@@ -2,7 +2,7 @@
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>org.datanucleus</groupId>
- <version>3.0.0-m1</version>
+ <version>3.0.0-m2-SNAPSHOT</version>
<artifactId>datanucleus-json</artifactId>
<name>DataNucleus JSON plugin</name>
<description>
Modified: platform/store.json/trunk/src/java/org/datanucleus/store/json/CloudStoragePersistenceHandler.java
===================================================================
--- platform/store.json/trunk/src/java/org/datanucleus/store/json/CloudStoragePersistenceHandler.java 2011-02-09 17:02:35 UTC (rev 12141)
+++ platform/store.json/trunk/src/java/org/datanucleus/store/json/CloudStoragePersistenceHandler.java 2011-02-09 19:42:21 UTC (rev 12142)
@@ -49,7 +49,7 @@
import org.datanucleus.store.StoreManager;
import org.datanucleus.store.connection.ManagedConnection;
import org.datanucleus.store.json.fieldmanager.FetchFieldManager;
-import org.datanucleus.store.json.fieldmanager.InsertFieldManager;
+import org.datanucleus.store.json.fieldmanager.StoreFieldManager;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
@@ -83,8 +83,8 @@
conn = (URLConnection) mconn.getConnection();
JSONObject jsonobj = new JSONObject();
- sm.provideFields(fieldNumbers, new InsertFieldManager(sm, jsonobj));
- sm.provideFields(sm.getClassMetaData().getPKMemberPositions(), new InsertFieldManager(sm, jsonobj));
+ sm.provideFields(fieldNumbers, new StoreFieldManager(sm, jsonobj));
+ sm.provideFields(sm.getClassMetaData().getPKMemberPositions(), new StoreFieldManager(sm, jsonobj));
write("PUT",conn.getURL().getPath(),conn,jsonobj, getHeaders("PUT",options));
}
Added: platform/store.json/trunk/src/java/org/datanucleus/store/json/JSONUtils.java
===================================================================
--- platform/store.json/trunk/src/java/org/datanucleus/store/json/JSONUtils.java (rev 0)
+++ platform/store.json/trunk/src/java/org/datanucleus/store/json/JSONUtils.java 2011-02-09 19:42:21 UTC (rev 12142)
@@ -0,0 +1,44 @@
+/**********************************************************************
+Copyright (c) 2011 Andy Jefferson and others. All rights reserved.
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Contributors:
+ ...
+**********************************************************************/
+package org.datanucleus.store.json;
+
+import org.datanucleus.metadata.AbstractMemberMetaData;
+import org.datanucleus.metadata.ColumnMetaData;
+
+/**
+ * Convenience methods for JSON.
+ */
+public class JSONUtils
+{
+ /**
+ * Method to return the member name to use in JSON.
+ * Uses the column name if provided, otherwise the member name from the class.
+ * @param mmd Metadata for the member
+ * @return The JSON member name
+ */
+ public static String getMemberNameForMember(AbstractMemberMetaData mmd)
+ {
+ String name = mmd.getName();
+ ColumnMetaData[] colmds = mmd.getColumnMetaData();
+ if (colmds != null && colmds.length == 1 && colmds[0].getName() != null)
+ {
+ name = colmds[0].getName();
+ }
+ return name;
+ }
+}
\ No newline at end of file
Modified: platform/store.json/trunk/src/java/org/datanucleus/store/json/JsonPersistenceHandler.java
===================================================================
--- platform/store.json/trunk/src/java/org/datanucleus/store/json/JsonPersistenceHandler.java 2011-02-09 17:02:35 UTC (rev 12141)
+++ platform/store.json/trunk/src/java/org/datanucleus/store/json/JsonPersistenceHandler.java 2011-02-09 19:42:21 UTC (rev 12142)
@@ -45,7 +45,7 @@
import org.datanucleus.store.StoreManager;
import org.datanucleus.store.connection.ManagedConnection;
import org.datanucleus.store.json.fieldmanager.FetchFieldManager;
-import org.datanucleus.store.json.fieldmanager.InsertFieldManager;
+import org.datanucleus.store.json.fieldmanager.StoreFieldManager;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
@@ -68,7 +68,7 @@
{
String url = getURLPath(sm.getClassMetaData());
JSONObject jsonobj = new JSONObject();
- sm.provideFields(sm.getClassMetaData().getPKMemberPositions(), new InsertFieldManager(sm,jsonobj));
+ sm.provideFields(sm.getClassMetaData().getPKMemberPositions(), new StoreFieldManager(sm,jsonobj));
try
{
url += jsonobj.get(JSONObject.getNames(jsonobj)[0]).toString();
@@ -122,8 +122,8 @@
URLConnection conn = (URLConnection) mconn.getConnection();
JSONObject jsonobj = new JSONObject();
- sm.provideFields(fieldNumbers, new InsertFieldManager(sm, jsonobj));
- sm.provideFields(sm.getClassMetaData().getPKMemberPositions(), new InsertFieldManager(sm, jsonobj));
+ sm.provideFields(fieldNumbers, new StoreFieldManager(sm, jsonobj));
+ sm.provideFields(sm.getClassMetaData().getPKMemberPositions(), new StoreFieldManager(sm, jsonobj));
write("POST",conn.getURL().toExternalForm(),conn,jsonobj,getHeaders("POST",options));
}
@@ -140,8 +140,8 @@
URLConnection conn = (URLConnection) mconn.getConnection();
JSONObject jsonobj = new JSONObject();
- sm.provideFields(fieldNumbers, new InsertFieldManager(sm, jsonobj));
- sm.provideFields(sm.getClassMetaData().getPKMemberPositions(), new InsertFieldManager(sm, jsonobj));
+ sm.provideFields(fieldNumbers, new StoreFieldManager(sm, jsonobj));
+ sm.provideFields(sm.getClassMetaData().getPKMemberPositions(), new StoreFieldManager(sm, jsonobj));
write("PUT",conn.getURL().toExternalForm(),conn,jsonobj,getHeaders("PUT",options));
}
@@ -211,7 +211,7 @@
public void fetchObject(ObjectProvider sm, int[] fieldNumbers)
{
JSONObject jsonobj = new JSONObject();
- sm.provideFields(sm.getClassMetaData().getPKMemberPositions(), new InsertFieldManager(sm,jsonobj));
+ sm.provideFields(sm.getClassMetaData().getPKMemberPositions(), new StoreFieldManager(sm,jsonobj));
Map<String,String> options = new HashMap<String,String>();
options.put(ConnectionFactoryImpl.STORE_JSON_URL, getURLPath(sm));
ManagedConnection mconn = storeMgr.getConnection(sm.getExecutionContext(), options);
Modified: platform/store.json/trunk/src/java/org/datanucleus/store/json/fieldmanager/FetchFieldManager.java
===================================================================
--- platform/store.json/trunk/src/java/org/datanucleus/store/json/fieldmanager/FetchFieldManager.java 2011-02-09 17:02:35 UTC (rev 12141)
+++ platform/store.json/trunk/src/java/org/datanucleus/store/json/fieldmanager/FetchFieldManager.java 2011-02-09 19:42:21 UTC (rev 12142)
@@ -37,7 +37,7 @@
import org.datanucleus.store.FieldValues2;
import org.datanucleus.store.ObjectProvider;
import org.datanucleus.store.fieldmanager.AbstractFieldManager;
-import org.datanucleus.store.fieldmanager.FieldManager;
+import org.datanucleus.store.json.JSONUtils;
import org.datanucleus.util.ClassUtils;
import org.datanucleus.util.TypeConversionHelper;
import org.json.JSONArray;
@@ -46,6 +46,7 @@
/**
* FieldManager for fetching from JSON.
+ * TODO Why is there a LocalFieldManager here, and why not just use FetchFieldManager????!!!
*/
public class FetchFieldManager extends AbstractFieldManager
{
@@ -60,34 +61,37 @@
this.result = result;
}
- public String fetchStringField(int fieldNumber)
+ public boolean fetchBooleanField(int fieldNumber)
{
- String fieldName = acmd.getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber).getName();
- if (result.isNull(fieldName))
+ String memberName =
+ JSONUtils.getMemberNameForMember(acmd.getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber));
+ if (result.isNull(memberName))
{
- return null;
+ return false;
}
try
{
- return result.getString(fieldName);
+ return result.getBoolean(memberName);
}
catch (JSONException e)
{
//ignore
- return null;
+ return false;
}
}
- public short fetchShortField(int fieldNumber)
+ public byte fetchByteField(int fieldNumber)
{
- String fieldName = acmd.getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber).getName();
- if( result.isNull(fieldName) )
+ String memberName =
+ JSONUtils.getMemberNameForMember(acmd.getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber));
+ if (result.isNull(memberName))
{
return 0;
}
try
{
- return (short) result.getInt(fieldName);
+ String str = result.getString(memberName);
+ return new Byte(str).byteValue();
}
catch (JSONException e)
{
@@ -96,76 +100,36 @@
}
}
- public Object fetchObjectField(int fieldNumber)
+ public char fetchCharField(int fieldNumber)
{
- AbstractMemberMetaData mmd = acmd.getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber);
- String fieldName = acmd.getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber).getName();
- if( result.isNull(fieldName) )
+ String memberName =
+ JSONUtils.getMemberNameForMember(acmd.getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber));
+ if (result.isNull(memberName))
{
- return null;
+ return 0;
}
try
{
- Object value = result.get(fieldName);
- if (value instanceof JSONObject)
- {
- return getObjectFromJSONObject((JSONObject) value, mmd.getType().getName(), ec);
- }
- else if (value instanceof JSONArray)
- {
- return fetchJSONArray((JSONArray)value, fieldNumber, ec, acmd);
- }
- else
- {
- return TypeConversionHelper.convertTo(result.get(fieldName), mmd.getType());
- }
+ return result.getString(memberName).charAt(0);
}
catch (JSONException e)
{
- throw new NucleusException(e.getMessage(), e);
+ //ignore
+ return 0;
}
-
}
- private List fetchJSONArray(JSONArray array, int position, ExecutionContext om, AbstractClassMetaData cmd) throws JSONException
+
+ public double fetchDoubleField(int fieldNumber)
{
- List elements = new ArrayList();
- for( int i=0; i<array.length(); i++)
+ String memberName =
+ JSONUtils.getMemberNameForMember(acmd.getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber));
+ if (result.isNull(memberName))
{
- if( array.isNull(i) )
- {
- elements.add(null);
- }
- else
- {
- Object value = array.get(i);
-
- if( value instanceof JSONObject)
- {
- elements.add(getObjectFromJSONObject((JSONObject)value, ((JSONObject)value).getString("class"), om));
- }
- else if( value instanceof JSONArray)
- {
- elements.add(fetchJSONArray((JSONArray)value,position, om, cmd));
- }
- else
- {
- elements.add(TypeConversionHelper.convertTo(value, cmd.getMetaDataForManagedMemberAtAbsolutePosition(position).getType()));
- }
- }
- }
- return elements;
- }
-
- public long fetchLongField(int fieldNumber)
- {
- String fieldName = acmd.getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber).getName();
- if (result.isNull(fieldName))
- {
return 0;
}
try
{
- return result.getLong(fieldName);
+ return result.getDouble(memberName);
}
catch (JSONException e)
{
@@ -174,16 +138,17 @@
}
}
- public int fetchIntField(int fieldNumber)
+ public float fetchFloatField(int fieldNumber)
{
- String fieldName = acmd.getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber).getName();
- if (result.isNull(fieldName))
+ String memberName =
+ JSONUtils.getMemberNameForMember(acmd.getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber));
+ if (result.isNull(memberName))
{
return 0;
}
try
{
- return result.getInt(fieldName);
+ return (float) result.getDouble(memberName);
}
catch (JSONException e)
{
@@ -192,16 +157,17 @@
}
}
- public float fetchFloatField(int fieldNumber)
+ public int fetchIntField(int fieldNumber)
{
- String fieldName = acmd.getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber).getName();
- if (result.isNull(fieldName))
+ String memberName =
+ JSONUtils.getMemberNameForMember(acmd.getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber));
+ if (result.isNull(memberName))
{
return 0;
}
try
{
- return (float) result.getDouble(fieldName);
+ return result.getInt(memberName);
}
catch (JSONException e)
{
@@ -209,17 +175,18 @@
return 0;
}
}
-
- public double fetchDoubleField(int fieldNumber)
+
+ public long fetchLongField(int fieldNumber)
{
- String fieldName = acmd.getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber).getName();
- if (result.isNull(fieldName))
+ String memberName =
+ JSONUtils.getMemberNameForMember(acmd.getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber));
+ if (result.isNull(memberName))
{
return 0;
}
try
{
- return result.getDouble(fieldName);
+ return result.getLong(memberName);
}
catch (JSONException e)
{
@@ -228,16 +195,17 @@
}
}
- public char fetchCharField(int fieldNumber)
+ public short fetchShortField(int fieldNumber)
{
- String fieldName = acmd.getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber).getName();
- if (result.isNull(fieldName))
+ String memberName =
+ JSONUtils.getMemberNameForMember(acmd.getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber));
+ if (result.isNull(memberName))
{
return 0;
}
try
{
- return result.getString(fieldName).charAt(0);
+ return (short) result.getInt(memberName);
}
catch (JSONException e)
{
@@ -246,57 +214,103 @@
}
}
- public byte fetchByteField(int fieldNumber)
+ public String fetchStringField(int fieldNumber)
{
- String fieldName = acmd.getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber).getName();
- if (result.isNull(fieldName))
+ String memberName =
+ JSONUtils.getMemberNameForMember(acmd.getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber));
+ if (result.isNull(memberName))
{
- return 0;
+ return null;
}
try
{
- String str = result.getString(fieldName);
- return new Byte(str).byteValue();
+ return result.getString(memberName);
}
catch (JSONException e)
{
//ignore
- return 0;
+ return null;
}
}
- public boolean fetchBooleanField(int fieldNumber)
+ public Object fetchObjectField(int fieldNumber)
{
- String fieldName = acmd.getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber).getName();
- if (result.isNull(fieldName))
+ AbstractMemberMetaData mmd = acmd.getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber);
+ String memberName =
+ JSONUtils.getMemberNameForMember(mmd);
+ if (result.isNull(memberName))
{
- return false;
+ return null;
}
try
{
- return result.getBoolean(fieldName);
+ Object value = result.get(memberName);
+ if (value instanceof JSONObject)
+ {
+ return getObjectFromJSONObject((JSONObject) value, mmd.getType().getName(), ec);
+ }
+ else if (value instanceof JSONArray)
+ {
+ return fetchJSONArray((JSONArray)value, fieldNumber, ec, acmd);
+ }
+ else
+ {
+ return TypeConversionHelper.convertTo(result.get(memberName), mmd.getType());
+ }
}
catch (JSONException e)
{
- //ignore
- return false;
+ throw new NucleusException(e.getMessage(), e);
}
}
+ private List fetchJSONArray(JSONArray array, int position, ExecutionContext oecm, AbstractClassMetaData cmd)
+ throws JSONException
+ {
+ List elements = new ArrayList();
+ for( int i=0; i<array.length(); i++)
+ {
+ if (array.isNull(i))
+ {
+ elements.add(null);
+ }
+ else
+ {
+ Object value = array.get(i);
+
+ if (value instanceof JSONObject)
+ {
+ elements.add(getObjectFromJSONObject((JSONObject)value,
+ ((JSONObject)value).getString("class"), oecm));
+ }
+ else if (value instanceof JSONArray)
+ {
+ elements.add(fetchJSONArray((JSONArray)value,position, oecm, cmd));
+ }
+ else
+ {
+ elements.add(TypeConversionHelper.convertTo(value,
+ cmd.getMetaDataForManagedMemberAtAbsolutePosition(position).getType()));
+ }
+ }
+ }
+ return elements;
+ }
+
/**
* @param jsonobj JSON Object
* @param className The class name
- * @param om The object manager
+ * @param ec execution context
* @return The object for the supplied JSON object
* @throws ClassNotResolvedException when the class is not found
* @throws {@link JDOFatalUserException} many situations, such as for google appengine when trying the set primary
* key of a PC_NEW
*/
- protected Object getObjectFromJSONObject(final JSONObject jsonobj, String className, final ExecutionContext om)
+ protected Object getObjectFromJSONObject(final JSONObject jsonobj, String className, final ExecutionContext ec)
{
- NucleusContext ctx = om.getNucleusContext();
+ NucleusContext ctx = ec.getNucleusContext();
- ClassLoaderResolver clr = om.getClassLoaderResolver();
+ ClassLoaderResolver clr = ec.getClassLoaderResolver();
Class cls = clr.classForName(className, true);
final AbstractClassMetaData cmd = ctx.getMetaDataManager().getMetaDataForClass(cls, clr);
@@ -305,32 +319,31 @@
return getObject(clr, jsonobj, cls);
}
- ObjectProvider op = ObjectProviderFactory.newForHollowPopulatedAppId(om, cls, new FieldValues2()
+ ObjectProvider op = ObjectProviderFactory.newForHollowPopulatedAppId(ec, cls, new FieldValues2()
{
-
public FetchPlan getFetchPlanForLoading()
{
- return om.getFetchPlan();
+ return ec.getFetchPlan();
}
-
+
public void fetchNonLoadedFields(ObjectProvider op)
{
- op.replaceNonLoadedFields(cmd.getAllMemberPositions(), new LocalFieldManager(jsonobj, null, cmd, om));
+ op.replaceNonLoadedFields(cmd.getAllMemberPositions(), new LocalFieldManager(jsonobj, null, cmd, ec));
}
-
+
public void fetchFields(ObjectProvider op)
{
- op.provideFields(cmd.getAllMemberPositions(), new LocalFieldManager(jsonobj, null, cmd, om));
+ op.provideFields(cmd.getAllMemberPositions(), new LocalFieldManager(jsonobj, null, cmd, ec));
}
});
Object obj = op.getObject();
try
{
- Object id = om.getApiAdapter().getNewApplicationIdentityObjectId(op.getObject(), cmd);
- obj = om.findObject(id, false, true, null);
+ Object id = ec.getApiAdapter().getNewApplicationIdentityObjectId(op.getObject(), cmd);
+ obj = ec.findObject(id, false, true, null);
- ObjectProvider sm = om.findObjectProvider(obj);
- sm.replaceFields(cmd.getNonPKMemberPositions(), new LocalFieldManager(jsonobj, sm, cmd, om));
+ ObjectProvider sm = ec.findObjectProvider(obj);
+ sm.replaceFields(cmd.getNonPKMemberPositions(), new LocalFieldManager(jsonobj, sm, cmd, ec));
return obj;
}
catch (NucleusException ex)
@@ -341,40 +354,32 @@
}
}
- class LocalFieldManager implements FieldManager
+ class LocalFieldManager extends AbstractFieldManager
{
JSONObject jsonobj;
-
AbstractClassMetaData cmd;
-
ObjectProvider sm;
+ ExecutionContext ec;
- ExecutionContext pm;
-
- /**
- * @param jsonobj
- * @param sm may be null
- * @param cmd
- * @param pm
- */
- LocalFieldManager(JSONObject jsonobj, ObjectProvider sm, AbstractClassMetaData cmd, ExecutionContext pm)
+ LocalFieldManager(JSONObject jsonobj, ObjectProvider sm, AbstractClassMetaData cmd, ExecutionContext ec)
{
this.jsonobj = jsonobj;
this.cmd = cmd;
this.sm = sm;
- this.pm = pm;
+ this.ec = ec;
}
public String fetchStringField(int position)
{
- String fieldName = cmd.getMetaDataForManagedMemberAtAbsolutePosition(position).getName();
- if (!jsonobj.has(fieldName))
+ String memberName = JSONUtils.getMemberNameForMember(
+ cmd.getMetaDataForManagedMemberAtAbsolutePosition(position));
+ if (!jsonobj.has(memberName))
{
return null;
}
try
{
- String value = jsonobj.getString(fieldName);
+ String value = jsonobj.getString(memberName);
if (sm != null)
{
sm.makeDirty(position);
@@ -390,14 +395,15 @@
public short fetchShortField(int position)
{
- String fieldName = cmd.getMetaDataForManagedMemberAtAbsolutePosition(position).getName();
- if (!jsonobj.has(fieldName))
+ String memberName = JSONUtils.getMemberNameForMember(
+ cmd.getMetaDataForManagedMemberAtAbsolutePosition(position));
+ if (!jsonobj.has(memberName))
{
return 0;
}
try
{
- short value = (short) jsonobj.getInt(fieldName);
+ short value = (short) jsonobj.getInt(memberName);
if (sm != null)
{
sm.makeDirty(position);
@@ -413,41 +419,43 @@
public Object fetchObjectField(int position)
{
- String fieldName = cmd.getMetaDataForManagedMemberAtAbsolutePosition(position).getName();
- if (!jsonobj.has(fieldName))
+ String memberName = JSONUtils.getMemberNameForMember(
+ cmd.getMetaDataForManagedMemberAtAbsolutePosition(position));
+ if (!jsonobj.has(memberName))
{
return null;
}
try
{
- if (jsonobj.isNull(fieldName))
+ if (jsonobj.isNull(memberName))
+ {
+ return null;
+ }
+ Object value = jsonobj.get(memberName);
+ if( value instanceof JSONObject)
+ {
+ value = getObjectFromJSONObject((JSONObject)value, ((JSONObject)value).getString("class"), ec);
+ if (sm != null)
{
- return null;
+ sm.makeDirty(position);
}
- Object value = jsonobj.get(fieldName);
- if( value instanceof JSONObject)
- {
- value = getObjectFromJSONObject((JSONObject)value, ((JSONObject)value).getString("class"), pm);
- if (sm != null)
- {
- sm.makeDirty(position);
- }
- return value;
- }
- if( value instanceof JSONArray)
- {
- value= fetchJSONArray((JSONArray)value,position);
- if (sm != null)
- {
- sm.makeDirty(position);
- }
- return value;
- }
+ return value;
+ }
+ if( value instanceof JSONArray)
+ {
+ value= fetchJSONArray((JSONArray)value,position);
if (sm != null)
{
sm.makeDirty(position);
}
- return TypeConversionHelper.convertTo(value, cmd.getMetaDataForManagedMemberAtAbsolutePosition(position).getType());
+ return value;
+ }
+ if (sm != null)
+ {
+ sm.makeDirty(position);
+ }
+ return TypeConversionHelper.convertTo(value,
+ cmd.getMetaDataForManagedMemberAtAbsolutePosition(position).getType());
}
catch(JSONException ex)
{
@@ -470,7 +478,7 @@
if( value instanceof JSONObject)
{
- elements.add(getObjectFromJSONObject((JSONObject)value, ((JSONObject)value).getString("class"), pm));
+ elements.add(getObjectFromJSONObject((JSONObject)value, ((JSONObject)value).getString("class"), ec));
}
else if( value instanceof JSONArray)
{
@@ -478,7 +486,8 @@
}
else
{
- elements.add(TypeConversionHelper.convertTo(value, cmd.getMetaDataForManagedMemberAtAbsolutePosition(position).getType()));
+ elements.add(TypeConversionHelper.convertTo(value,
+ cmd.getMetaDataForManagedMemberAtAbsolutePosition(position).getType()));
}
}
}
@@ -487,14 +496,15 @@
public long fetchLongField(int position)
{
- String fieldName = cmd.getMetaDataForManagedMemberAtAbsolutePosition(position).getName();
- if (!jsonobj.has(fieldName))
+ String memberName = JSONUtils.getMemberNameForMember(
+ cmd.getMetaDataForManagedMemberAtAbsolutePosition(position));
+ if (!jsonobj.has(memberName))
{
return 0;
}
try
{
- long value = jsonobj.getLong(fieldName);
+ long value = jsonobj.getLong(memberName);
if (sm != null)
{
sm.makeDirty(position);
@@ -510,14 +520,15 @@
public int fetchIntField(int position)
{
- String fieldName = cmd.getMetaDataForManagedMemberAtAbsolutePosition(position).getName();
- if (!jsonobj.has(fieldName))
+ String memberName = JSONUtils.getMemberNameForMember(
+ cmd.getMetaDataForManagedMemberAtAbsolutePosition(position));
+ if (!jsonobj.has(memberName))
{
return 0;
}
try
{
- int value = jsonobj.getInt(fieldName);
+ int value = jsonobj.getInt(memberName);
if (sm != null)
{
sm.makeDirty(position);
@@ -533,14 +544,15 @@
public float fetchFloatField(int position)
{
- String fieldName = cmd.getMetaDataForManagedMemberAtAbsolutePosition(position).getName();
- if (!jsonobj.has(fieldName))
+ String memberName = JSONUtils.getMemberNameForMember(
+ cmd.getMetaDataForManagedMemberAtAbsolutePosition(position));
+ if (!jsonobj.has(memberName))
{
return 0;
}
try
{
- float value = (float) jsonobj.getDouble(fieldName);
+ float value = (float) jsonobj.getDouble(memberName);
if (sm != null)
{
sm.makeDirty(position);
@@ -556,14 +568,15 @@
public double fetchDoubleField(int position)
{
- String fieldName = cmd.getMetaDataForManagedMemberAtAbsolutePosition(position).getName();
- if (!jsonobj.has(fieldName))
+ String memberName = JSONUtils.getMemberNameForMember(
+ cmd.getMetaDataForManagedMemberAtAbsolutePosition(position));
+ if (!jsonobj.has(memberName))
{
return 0;
}
try
{
- double value = jsonobj.getDouble(fieldName);
+ double value = jsonobj.getDouble(memberName);
if (sm != null)
{
sm.makeDirty(position);
@@ -579,14 +592,15 @@
public char fetchCharField(int position)
{
- String fieldName = cmd.getMetaDataForManagedMemberAtAbsolutePosition(position).getName();
- if (!jsonobj.has(fieldName))
+ String memberName = JSONUtils.getMemberNameForMember(
+ cmd.getMetaDataForManagedMemberAtAbsolutePosition(position));
+ if (!jsonobj.has(memberName))
{
return 0;
}
try
{
- String str = jsonobj.getString(fieldName);
+ String str = jsonobj.getString(memberName);
char value = 0;
if (str != null && str.length() > 0)
{
@@ -607,14 +621,15 @@
public byte fetchByteField(int position)
{
- String fieldName = cmd.getMetaDataForManagedMemberAtAbsolutePosition(position).getName();
- if (!jsonobj.has(fieldName))
+ String memberName = JSONUtils.getMemberNameForMember(
+ cmd.getMetaDataForManagedMemberAtAbsolutePosition(position));
+ if (!jsonobj.has(memberName))
{
return 0;
}
try
{
- String str = jsonobj.getString(fieldName);
+ String str = jsonobj.getString(memberName);
byte value = 0;
if (str != null && str.length() > 0)
{
@@ -635,14 +650,15 @@
public boolean fetchBooleanField(int position)
{
- String fieldName = cmd.getMetaDataForManagedMemberAtAbsolutePosition(position).getName();
- if (!jsonobj.has(fieldName))
+ String memberName = JSONUtils.getMemberNameForMember(
+ cmd.getMetaDataForManagedMemberAtAbsolutePosition(position));
+ if (!jsonobj.has(memberName))
{
return false;
}
try
{
- boolean value = jsonobj.getBoolean(fieldName);
+ boolean value = jsonobj.getBoolean(memberName);
if (sm != null)
{
sm.makeDirty(position);
@@ -655,46 +671,6 @@
}
return false;
}
-
- public void storeStringField(int arg0, String arg1)
- {
- }
-
- public void storeShortField(int arg0, short arg1)
- {
- }
-
- public void storeObjectField(int arg0, Object arg1)
- {
- }
-
- public void storeLongField(int arg0, long arg1)
- {
- }
-
- public void storeIntField(int arg0, int arg1)
- {
- }
-
- public void storeFloatField(int arg0, float arg1)
- {
- }
-
- public void storeDoubleField(int arg0, double arg1)
- {
- }
-
- public void storeCharField(int arg0, char arg1)
- {
- }
-
- public void storeByteField(int arg0, byte arg1)
- {
- }
-
- public void storeBooleanField(int arg0, boolean arg1)
- {
- }
}
/**
@@ -743,14 +719,17 @@
{
String appId = jsonobj.getString("appId");
String kind = jsonobj.getString("kind");
- Class keyFactory = Class.forName("com.google.appengine.api.datastore.KeyFactory",false,cls.getClassLoader());
+ Class keyFactory = Class.forName("com.google.appengine.api.datastore.KeyFactory",
+ false, cls.getClassLoader());
if( parent != null)
{
- return ClassUtils.getMethodForClass(keyFactory, "createKey", new Class[]{cls,String.class,String.class}).invoke(null, new Object[]{parent,kind,appId});
+ return ClassUtils.getMethodForClass(keyFactory, "createKey",
+ new Class[]{cls,String.class,String.class}).invoke(null, new Object[]{parent,kind,appId});
}
else
{
- return ClassUtils.getMethodForClass(keyFactory, "createKey", new Class[]{String.class,String.class}).invoke(null, new Object[]{kind,appId});
+ return ClassUtils.getMethodForClass(keyFactory, "createKey",
+ new Class[]{String.class,String.class}).invoke(null, new Object[]{kind,appId});
}
}
else
Deleted: platform/store.json/trunk/src/java/org/datanucleus/store/json/fieldmanager/InsertFieldManager.java
===================================================================
--- platform/store.json/trunk/src/java/org/datanucleus/store/json/fieldmanager/InsertFieldManager.java 2011-02-09 17:02:35 UTC (rev 12141)
+++ platform/store.json/trunk/src/java/org/datanucleus/store/json/fieldmanager/InsertFieldManager.java 2011-02-09 19:42:21 UTC (rev 12142)
@@ -1,318 +0,0 @@
-/**********************************************************************
-Copyright (c) 2008 Erik Bengtson and others. All rights reserved.
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-Contributors:
- ...
-**********************************************************************/
-package org.datanucleus.store.json.fieldmanager;
-
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.util.Calendar;
-import java.util.Date;
-
-import org.datanucleus.exceptions.NucleusException;
-import org.datanucleus.metadata.AbstractMemberMetaData;
-import org.datanucleus.store.ObjectProvider;
-import org.datanucleus.store.fieldmanager.FieldManager;
-import org.json.JSONException;
-import org.json.JSONObject;
-
-/**
- * FieldManager for inserting data into JSON.
- */
-public class InsertFieldManager implements FieldManager
-{
- ObjectProvider sm;
- JSONObject jsonobj;
-
- public InsertFieldManager(ObjectProvider sm, JSONObject jsonobj)
- {
- this.sm = sm;
- this.jsonobj = jsonobj;
- try
- {
- jsonobj.put("class", sm.getClassMetaData().getFullClassName());
- }
- catch (JSONException e)
- {
- throw new NucleusException(e.getMessage(), e);
- }
- }
-
- public String fetchStringField(int fieldNumber)
- {
- return null;
- }
-
- public short fetchShortField(int fieldNumber)
- {
- return 0;
- }
-
- public Object fetchObjectField(int fieldNumber)
- {
- return null;
- }
-
- public long fetchLongField(int fieldNumber)
- {
- return 0;
- }
-
- public int fetchIntField(int fieldNumber)
- {
- return 0;
- }
-
- public float fetchFloatField(int fieldNumber)
- {
- return 0;
- }
-
- public double fetchDoubleField(int fieldNumber)
- {
- return 0;
- }
-
- public char fetchCharField(int fieldNumber)
- {
- return 0;
- }
-
- public byte fetchByteField(int fieldNumber)
- {
- return 0;
- }
-
- public boolean fetchBooleanField(int fieldNumber)
- {
- return false;
- }
-
- public void storeStringField(int fieldNumber, String value)
- {
- AbstractMemberMetaData mmd = sm.getClassMetaData().getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber);
- String name = mmd.getName();
- if (mmd.hasExtension("member-name"))
- {
- name = mmd.getValueForExtension("member-name");
- }
- try
- {
- if(value==null)
- {
- jsonobj.put(name, JSONObject.NULL);
- }
- else
- {
- jsonobj.put(name, value);
- }
- }
- catch (JSONException e)
- {
- throw new NucleusException(e.getMessage(), e);
- }
- }
-
- public void storeShortField(int fieldNumber, short value)
- {
- AbstractMemberMetaData mmd = sm.getClassMetaData().getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber);
- String name = mmd.getName();
- if (mmd.hasExtension("member-name"))
- {
- name = mmd.getValueForExtension("member-name");
- }
- try
- {
- jsonobj.put(name, (int)value);
- }
- catch (JSONException e)
- {
- throw new NucleusException(e.getMessage(), e);
- }
- }
-
- public void storeObjectField(int fieldNumber, Object value)
- {
- AbstractMemberMetaData mmd = sm.getClassMetaData().getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber);
- String name = mmd.getName();
- if (mmd.hasExtension("member-name"))
- {
- name = mmd.getValueForExtension("member-name");
- }
- try
- {
- if (value==null)
- {
- jsonobj.put(name, JSONObject.NULL);
- }
- else
- {
- if (value instanceof Date)
- {
- jsonobj.put(name, ((Date)value).getTime());
- }
- else if (value instanceof Calendar)
- {
- jsonobj.put(name, ((Calendar)value).getTimeInMillis());
- }
- else if (value instanceof BigDecimal)
- {
- jsonobj.put(name, value);
- }
- else if (value instanceof BigInteger)
- {
- jsonobj.put(name, value);
- }
- else
- {
- JSONObject jsonobjfield = new JSONObject(value);
- jsonobjfield.put("class", value.getClass().getName());
- jsonobj.put(name, jsonobjfield);
- }
- }
- }
- catch (JSONException e)
- {
- throw new NucleusException(e.getMessage(), e);
- }
- }
-
- public void storeLongField(int fieldNumber, long value)
- {
- AbstractMemberMetaData mmd = sm.getClassMetaData().getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber);
- String name = mmd.getName();
- if (mmd.hasExtension("member-name"))
- {
- name = mmd.getValueForExtension("member-name");
- }
- try
- {
- jsonobj.put(name, (long)value);
- }
- catch (JSONException e)
- {
- throw new NucleusException(e.getMessage(), e);
- }
- }
-
- public void storeIntField(int fieldNumber, int value)
- {
- AbstractMemberMetaData mmd = sm.getClassMetaData().getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber);
- String name = mmd.getName();
- if (mmd.hasExtension("member-name"))
- {
- name = mmd.getValueForExtension("member-name");
- }
- try
- {
- jsonobj.put(name, (int)value);
- }
- catch (JSONException e)
- {
- throw new NucleusException(e.getMessage(), e);
- }
- }
-
- public void storeFloatField(int fieldNumber, float value)
- {
- AbstractMemberMetaData mmd = sm.getClassMetaData().getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber);
- String name = mmd.getName();
- if (mmd.hasExtension("member-name"))
- {
- name = mmd.getValueForExtension("member-name");
- }
- try
- {
- jsonobj.put(name, (double)value);
- }
- catch (JSONException e)
- {
- throw new NucleusException(e.getMessage(), e);
- }
- }
-
- public void storeDoubleField(int fieldNumber, double value)
- {
- AbstractMemberMetaData mmd = sm.getClassMetaData().getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber);
- String name = mmd.getName();
- if (mmd.hasExtension("member-name"))
- {
- name = mmd.getValueForExtension("member-name");
- }
- try
- {
- jsonobj.put(name, (double)value);
- }
- catch (JSONException e)
- {
- throw new NucleusException(e.getMessage(), e);
- }
- }
-
- public void storeCharField(int fieldNumber, char value)
- {
- AbstractMemberMetaData mmd = sm.getClassMetaData().getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber);
- String name = mmd.getName();
- if (mmd.hasExtension("member-name"))
- {
- name = mmd.getValueForExtension("member-name");
- }
- try
- {
- jsonobj.put(name, new Character(value));
- }
- catch (JSONException e)
- {
- throw new NucleusException(e.getMessage(), e);
- }
- }
-
- public void storeByteField(int fieldNumber, byte value)
- {
- AbstractMemberMetaData mmd = sm.getClassMetaData().getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber);
- String name = mmd.getName();
- if (mmd.hasExtension("member-name"))
- {
- name = mmd.getValueForExtension("member-name");
- }
- try
- {
- jsonobj.put(name, (int)value);
- }
- catch (JSONException e)
- {
- throw new NucleusException(e.getMessage(), e);
- }
- }
-
- public void storeBooleanField(int fieldNumber, boolean value)
- {
- AbstractMemberMetaData mmd = sm.getClassMetaData().getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber);
- String name = mmd.getName();
- if (mmd.hasExtension("member-name"))
- {
- name = mmd.getValueForExtension("member-name");
- }
- try
- {
- jsonobj.put(name, (boolean)value);
- }
- catch (JSONException e)
- {
- throw new NucleusException(e.getMessage(), e);
- }
- }
-}
\ No newline at end of file
Copied: platform/store.json/trunk/src/java/org/datanucleus/store/json/fieldmanager/StoreFieldManager.java (from rev 11557, platform/store.json/trunk/src/java/org/datanucleus/store/json/fieldmanager/InsertFieldManager.java)
===================================================================
--- platform/store.json/trunk/src/java/org/datanucleus/store/json/fieldmanager/StoreFieldManager.java (rev 0)
+++ platform/store.json/trunk/src/java/org/datanucleus/store/json/fieldmanager/StoreFieldManager.java 2011-02-09 19:42:21 UTC (rev 12142)
@@ -0,0 +1,239 @@
+/**********************************************************************
+Copyright (c) 2008 Erik Bengtson and others. All rights reserved.
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Contributors:
+ ...
+**********************************************************************/
+package org.datanucleus.store.json.fieldmanager;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.util.Calendar;
+import java.util.Date;
+
+import org.datanucleus.exceptions.NucleusException;
+import org.datanucleus.metadata.AbstractMemberMetaData;
+import org.datanucleus.store.ObjectProvider;
+import org.datanucleus.store.fieldmanager.AbstractFieldManager;
+import org.datanucleus.store.json.JSONUtils;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+/**
+ * FieldManager for inserting data into JSON.
+ */
+public class StoreFieldManager extends AbstractFieldManager
+{
+ ObjectProvider sm;
+ JSONObject jsonobj;
+
+ public StoreFieldManager(ObjectProvider sm, JSONObject jsonobj)
+ {
+ this.sm = sm;
+ this.jsonobj = jsonobj;
+ try
+ {
+ jsonobj.put("class", sm.getClassMetaData().getFullClassName());
+ }
+ catch (JSONException e)
+ {
+ throw new NucleusException(e.getMessage(), e);
+ }
+ }
+
+ public void storeBooleanField(int fieldNumber, boolean value)
+ {
+ AbstractMemberMetaData mmd = sm.getClassMetaData().getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber);
+ String name = JSONUtils.getMemberNameForMember(mmd);
+
+ try
+ {
+ jsonobj.put(name, (boolean)value);
+ }
+ catch (JSONException e)
+ {
+ throw new NucleusException(e.getMessage(), e);
+ }
+ }
+
+ public void storeByteField(int fieldNumber, byte value)
+ {
+ AbstractMemberMetaData mmd = sm.getClassMetaData().getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber);
+ String name = JSONUtils.getMemberNameForMember(mmd);
+
+ try
+ {
+ jsonobj.put(name, (int)value);
+ }
+ catch (JSONException e)
+ {
+ throw new NucleusException(e.getMessage(), e);
+ }
+ }
+
+ public void storeCharField(int fieldNumber, char value)
+ {
+ AbstractMemberMetaData mmd = sm.getClassMetaData().getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber);
+ String name = JSONUtils.getMemberNameForMember(mmd);
+
+ try
+ {
+ jsonobj.put(name, new Character(value));
+ }
+ catch (JSONException e)
+ {
+ throw new NucleusException(e.getMessage(), e);
+ }
+ }
+
+ public void storeDoubleField(int fieldNumber, double value)
+ {
+ AbstractMemberMetaData mmd = sm.getClassMetaData().getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber);
+ String name = JSONUtils.getMemberNameForMember(mmd);
+
+ try
+ {
+ jsonobj.put(name, (double)value);
+ }
+ catch (JSONException e)
+ {
+ throw new NucleusException(e.getMessage(), e);
+ }
+ }
+
+ public void storeFloatField(int fieldNumber, float value)
+ {
+ AbstractMemberMetaData mmd = sm.getClassMetaData().getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber);
+ String name = JSONUtils.getMemberNameForMember(mmd);
+
+ try
+ {
+ jsonobj.put(name, (double)value);
+ }
+ catch (JSONException e)
+ {
+ throw new NucleusException(e.getMessage(), e);
+ }
+ }
+
+ public void storeIntField(int fieldNumber, int value)
+ {
+ AbstractMemberMetaData mmd = sm.getClassMetaData().getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber);
+ String name = JSONUtils.getMemberNameForMember(mmd);
+
+ try
+ {
+ jsonobj.put(name, (int)value);
+ }
+ catch (JSONException e)
+ {
+ throw new NucleusException(e.getMessage(), e);
+ }
+ }
+
+ public void storeLongField(int fieldNumber, long value)
+ {
+ AbstractMemberMetaData mmd = sm.getClassMetaData().getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber);
+ String name = JSONUtils.getMemberNameForMember(mmd);
+
+ try
+ {
+ jsonobj.put(name, (long)value);
+ }
+ catch (JSONException e)
+ {
+ throw new NucleusException(e.getMessage(), e);
+ }
+ }
+
+ public void storeShortField(int fieldNumber, short value)
+ {
+ AbstractMemberMetaData mmd = sm.getClassMetaData().getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber);
+ String name = JSONUtils.getMemberNameForMember(mmd);
+
+ try
+ {
+ jsonobj.put(name, (int)value);
+ }
+ catch (JSONException e)
+ {
+ throw new NucleusException(e.getMessage(), e);
+ }
+ }
+
+ public void storeStringField(int fieldNumber, String value)
+ {
+ AbstractMemberMetaData mmd = sm.getClassMetaData().getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber);
+ String name = JSONUtils.getMemberNameForMember(mmd);
+
+ try
+ {
+ if(value==null)
+ {
+ jsonobj.put(name, JSONObject.NULL);
+ }
+ else
+ {
+ jsonobj.put(name, value);
+ }
+ }
+ catch (JSONException e)
+ {
+ throw new NucleusException(e.getMessage(), e);
+ }
+ }
+
+ public void storeObjectField(int fieldNumber, Object value)
+ {
+ AbstractMemberMetaData mmd = sm.getClassMetaData().getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber);
+ String name = JSONUtils.getMemberNameForMember(mmd);
+
+ try
+ {
+ if (value == null)
+ {
+ jsonobj.put(name, JSONObject.NULL);
+ }
+ else
+ {
+ if (value instanceof Date)
+ {
+ jsonobj.put(name, ((Date)value).getTime());
+ }
+ else if (value instanceof Calendar)
+ {
+ jsonobj.put(name, ((Calendar)value).getTimeInMillis());
+ }
+ else if (value instanceof BigDecimal)
+ {
+ jsonobj.put(name, value);
+ }
+ else if (value instanceof BigInteger)
+ {
+ jsonobj.put(name, value);
+ }
+ else
+ {
+ JSONObject jsonobjfield = new JSONObject(value);
+ jsonobjfield.put("class", value.getClass().getName());
+ jsonobj.put(name, jsonobjfield);
+ }
+ }
+ }
+ catch (JSONException e)
+ {
+ throw new NucleusException(e.getMessage(), e);
+ }
+ }
+}
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|