Added tests to ValueStore, specifically DeltaValueStoreJsonImpl and RecordJsoImpl Review at http://gwt-code-reviews.appspot.com/621801 Review by: rjrjr@google.com git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@8261 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/bikeshed/src/com/google/gwt/valuestore/client/DeltaValueStoreJsonImpl.java b/bikeshed/src/com/google/gwt/valuestore/client/DeltaValueStoreJsonImpl.java index 57e0126..d42bcee 100644 --- a/bikeshed/src/com/google/gwt/valuestore/client/DeltaValueStoreJsonImpl.java +++ b/bikeshed/src/com/google/gwt/valuestore/client/DeltaValueStoreJsonImpl.java
@@ -256,7 +256,10 @@ } public Record create(String token) { - assert !used; + if (used) { + throw new IllegalStateException( + "create can only be called on an un-used DeltaValueStore"); + } String futureId = futureIdGenerator.getFutureId(); RecordSchema<? extends Record> schema = recordToTypeMap.getType(token); @@ -270,8 +273,7 @@ } public void delete(Record record) { - assert !used; - assert record instanceof RecordImpl; + checkArgumentsAndState(record, "delete"); RecordImpl recordImpl = (RecordImpl) record; RecordKey recordKey = new RecordKey(recordImpl); WriteOperation priorOperation = operations.get(recordKey); @@ -312,8 +314,7 @@ } public <V> void set(Property<V> property, Record record, V value) { - assert !used; - assert record instanceof RecordImpl; + checkArgumentsAndState(record, "set"); RecordImpl recordImpl = (RecordImpl) record; RecordKey recordKey = new RecordKey(recordImpl); @@ -424,6 +425,17 @@ return false; } + private void checkArgumentsAndState(Record record, String methodName) { + if (used) { + throw new IllegalStateException( + methodName + " can only be called on an un-used DeltaValueStore"); + } + if (!(record instanceof RecordImpl)) { + throw new IllegalArgumentException(record + " + must be an instance of " + + RecordImpl.class); + } + } + private String getJsonForOperation(WriteOperation writeOperation) { Map<RecordKey, RecordJsoImpl> recordsMap = getRecordsMap(writeOperation); if (recordsMap.size() == 0) {
diff --git a/bikeshed/src/com/google/gwt/valuestore/shared/impl/RecordJsoImpl.java b/bikeshed/src/com/google/gwt/valuestore/shared/impl/RecordJsoImpl.java index 8ff7638..9ed849f 100644 --- a/bikeshed/src/com/google/gwt/valuestore/shared/impl/RecordJsoImpl.java +++ b/bikeshed/src/com/google/gwt/valuestore/shared/impl/RecordJsoImpl.java
@@ -51,10 +51,13 @@ } public static native RecordJsoImpl fromJson(String json) /*-{ - return eval(json); + // TODO: clean this + eval("xyz=" + json); + return xyz; }-*/; - private static native RecordJsoImpl create() /*-{ + /* Made protected, for testing */ + protected static native RecordJsoImpl create() /*-{ return {}; }-*/;
diff --git a/bikeshed/test/com/google/gwt/valuestore/ValueStoreSuite.java b/bikeshed/test/com/google/gwt/valuestore/ValueStoreSuite.java new file mode 100644 index 0000000..2c9d81e --- /dev/null +++ b/bikeshed/test/com/google/gwt/valuestore/ValueStoreSuite.java
@@ -0,0 +1,35 @@ +/* + * Copyright 2010 Google Inc. + * + * 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. + */ +package com.google.gwt.valuestore; + +import com.google.gwt.junit.tools.GWTTestSuite; +import com.google.gwt.valuestore.client.DeltaValueStoreJsonImplTest; +import com.google.gwt.valuestore.shared.impl.RecordJsoImplTest; + +import junit.framework.Test; + +/** + * + */ +public class ValueStoreSuite { + public static Test suite() { + GWTTestSuite suite = new GWTTestSuite( + "Test suite for all valuestore code."); + suite.addTestSuite(DeltaValueStoreJsonImplTest.class); + suite.addTestSuite(RecordJsoImplTest.class); + return suite; + } +}
diff --git a/bikeshed/test/com/google/gwt/valuestore/ValueStoreTest.gwt.xml b/bikeshed/test/com/google/gwt/valuestore/ValueStoreTest.gwt.xml new file mode 100644 index 0000000..97b83ce --- /dev/null +++ b/bikeshed/test/com/google/gwt/valuestore/ValueStoreTest.gwt.xml
@@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.0.1//EN" "http://google-web-toolkit.googlecode.com/svn/tags/2.0.1/distro-source/core/src/gwt-module.dtd"> +<!-- + Copyright 2010 Google Inc. + + 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. +--> +<module> + <inherits name='com.google.gwt.valuestore.ValueStore'/> + <!-- use this old inefficient JSON library just for the time being, replace soon --> + <inherits name='com.google.gwt.json.JSON'/> +</module>
diff --git a/bikeshed/test/com/google/gwt/valuestore/client/DeltaValueStoreJsonImplTest.java b/bikeshed/test/com/google/gwt/valuestore/client/DeltaValueStoreJsonImplTest.java index cf159e6..e766120 100644 --- a/bikeshed/test/com/google/gwt/valuestore/client/DeltaValueStoreJsonImplTest.java +++ b/bikeshed/test/com/google/gwt/valuestore/client/DeltaValueStoreJsonImplTest.java
@@ -15,21 +15,169 @@ */ package com.google.gwt.valuestore.client; +import com.google.gwt.json.client.JSONArray; +import com.google.gwt.json.client.JSONObject; +import com.google.gwt.json.client.JSONParser; import com.google.gwt.junit.client.GWTTestCase; +import com.google.gwt.valuestore.shared.DeltaValueStore; +import com.google.gwt.valuestore.shared.Record; +import com.google.gwt.valuestore.shared.SimpleFooRecord; +import com.google.gwt.valuestore.shared.ValueStore; +import com.google.gwt.valuestore.shared.WriteOperation; +import com.google.gwt.valuestore.shared.impl.RecordImpl; +import com.google.gwt.valuestore.shared.impl.RecordJsoImpl; +import com.google.gwt.valuestore.shared.impl.RecordSchema; +import com.google.gwt.valuestore.shared.impl.RecordToTypeMap; +import com.google.gwt.valuestore.shared.impl.SimpleFooRecordImpl; + +import java.util.Date; /** * Tests for {@link DeltaValueStoreJsonImpl}. */ public class DeltaValueStoreJsonImplTest extends GWTTestCase { - - public String getModuleName() { - return "com.google.gwt.valuestore.ValueStore"; + + /* + * sub-classed it here so that the protected constructor of {@link RecordImpl} + * can remain as such. + */ + private class MyRecordImpl extends RecordImpl { + + protected MyRecordImpl(RecordJsoImpl record) { + super(record); + } } - - public void testValidation() { - ValueStoreJsonImpl valueStore = new ValueStoreJsonImpl(null, null); + + ValueStoreJsonImpl valueStore = null; + RecordJsoImpl jso = null; + + public String getModuleName() { + return "com.google.gwt.valuestore.ValueStoreTest"; + } + + @Override + public void gwtSetUp() { + valueStore = new ValueStoreJsonImpl(null, new RecordToTypeMap() { + public RecordSchema<? extends Record> getType(String token) { + if (token.equals(SimpleFooRecordImpl.TOKEN)) { + return SimpleFooRecordImpl.SCHEMA; + } + throw new IllegalArgumentException("Unknown token " + token); + } + + }); + + // add a record + jso = RecordJsoImpl.fromJson("{}"); + jso.set(SimpleFooRecord.id, "42"); + jso.set(SimpleFooRecord.version, 1); + jso.set(SimpleFooRecord.userName, "bovik"); + jso.set(SimpleFooRecord.password, "bovik"); + jso.set(SimpleFooRecord.intId, 4); + jso.set(SimpleFooRecord.created, new Date()); + jso.setSchema(SimpleFooRecordImpl.SCHEMA); + valueStore.setRecord(jso); + } + + public void testCreate() { DeltaValueStoreJsonImpl deltaValueStore = valueStore.spawnDeltaView(); - + Record created = deltaValueStore.create(SimpleFooRecordImpl.TOKEN); + assertNotNull(created.getId()); + assertNotNull(created.getVersion()); + + assertTrue(deltaValueStore.isChanged()); + testAndGetChangeRecord(deltaValueStore.toJson(), WriteOperation.CREATE); + } + + public void testCreateDelete() { + DeltaValueStoreJsonImpl deltaValueStore = valueStore.spawnDeltaView(); + Record created = deltaValueStore.create(SimpleFooRecordImpl.TOKEN); + assertTrue(deltaValueStore.isChanged()); + deltaValueStore.delete(created); + assertFalse(deltaValueStore.isChanged()); + + String jsonString = deltaValueStore.toJson(); + assertEquals("{}", jsonString); + } + + public void testCreateUpdate() { + DeltaValueStoreJsonImpl deltaValueStore = valueStore.spawnDeltaView(); + Record created = deltaValueStore.create(SimpleFooRecordImpl.TOKEN); + assertTrue(deltaValueStore.isChanged()); + deltaValueStore.set(SimpleFooRecord.userName, created, "harry"); + assertTrue(deltaValueStore.isChanged()); + JSONObject changeRecord = testAndGetChangeRecord(deltaValueStore.toJson(), + WriteOperation.CREATE); + changeRecord.get(SimpleFooRecord.userName.getName()); + } + + public void testDelete() { + DeltaValueStoreJsonImpl deltaValueStore = valueStore.spawnDeltaView(); + deltaValueStore.delete(new MyRecordImpl(jso)); + assertTrue(deltaValueStore.isChanged()); + testAndGetChangeRecord(deltaValueStore.toJson(), WriteOperation.DELETE); + } + + public void testDeleteUpdate() { + DeltaValueStoreJsonImpl deltaValueStore = valueStore.spawnDeltaView(); + deltaValueStore.delete(new MyRecordImpl(jso)); + assertTrue(deltaValueStore.isChanged()); + + // update after a delete nullifies the delete. + deltaValueStore.set(SimpleFooRecord.userName, new MyRecordImpl(jso), + "harry"); + assertTrue(deltaValueStore.isChanged()); + JSONObject changeRecord = testAndGetChangeRecord(deltaValueStore.toJson(), + WriteOperation.UPDATE); + changeRecord.get(SimpleFooRecord.userName.getName()); + } + + public void testOperationAfterJson() { + DeltaValueStoreJsonImpl deltaValueStore = valueStore.spawnDeltaView(); + deltaValueStore.delete(new MyRecordImpl(jso)); + assertTrue(deltaValueStore.isChanged()); + + deltaValueStore.toJson(); + + try { + deltaValueStore.set(SimpleFooRecord.userName, new MyRecordImpl(jso), + "harry"); + fail("Modifying DeltaValueStore after calling toJson should throw a RuntimeException"); + } catch (RuntimeException ex) { + // expected. + } + + deltaValueStore.clearUsed(); + deltaValueStore.set(SimpleFooRecord.userName, new MyRecordImpl(jso), + "harry"); + } + + public void testUpdate() { + DeltaValueStoreJsonImpl deltaValueStore = valueStore.spawnDeltaView(); + deltaValueStore.set(SimpleFooRecord.userName, new MyRecordImpl(jso), + "harry"); + assertTrue(deltaValueStore.isChanged()); + JSONObject changeRecord = testAndGetChangeRecord(deltaValueStore.toJson(), + WriteOperation.UPDATE); + changeRecord.get(SimpleFooRecord.userName.getName()); + } + + public void testUpdateDelete() { + DeltaValueStoreJsonImpl deltaValueStore = valueStore.spawnDeltaView(); + deltaValueStore.set(SimpleFooRecord.userName, new MyRecordImpl(jso), + "harry"); + assertTrue(deltaValueStore.isChanged()); + + // delete after an update nullifies the delete. + deltaValueStore.delete(new MyRecordImpl(jso)); + assertTrue(deltaValueStore.isChanged()); + testAndGetChangeRecord(deltaValueStore.toJson(), WriteOperation.DELETE); + } + + public void testValidation() { + ValueStore dummyValueStore = new ValueStoreJsonImpl(null, null); + DeltaValueStore deltaValueStore = dummyValueStore.spawnDeltaView(); + try { deltaValueStore.addValidation(); fail("Should throw an UnsupportedOperationException"); @@ -37,4 +185,29 @@ // expected } } + + private JSONObject testAndGetChangeRecord(String jsonString, + WriteOperation currentWriteOperation) { + JSONObject jsonObject = (JSONObject) JSONParser.parse(jsonString); + for (WriteOperation writeOperation : WriteOperation.values()) { + if (writeOperation != currentWriteOperation) { + assertFalse(jsonObject.containsKey(writeOperation.name())); + } else { + assertTrue(jsonObject.containsKey(writeOperation.name())); + } + } + + JSONArray writeOperationArray = jsonObject.get(currentWriteOperation.name()).isArray(); + assertEquals(1, writeOperationArray.size()); + + JSONObject recordWithName = writeOperationArray.get(0).isObject(); + assertEquals(1, recordWithName.size()); + assertTrue(recordWithName.containsKey(SimpleFooRecordImpl.TOKEN)); + + JSONObject record = recordWithName.get(SimpleFooRecordImpl.TOKEN).isObject(); + assertTrue(record.containsKey("id")); + assertTrue(record.containsKey("version")); + + return record; + } }
diff --git a/bikeshed/test/com/google/gwt/valuestore/shared/SimpleFooRecord.java b/bikeshed/test/com/google/gwt/valuestore/shared/SimpleFooRecord.java new file mode 100644 index 0000000..c9b459d --- /dev/null +++ b/bikeshed/test/com/google/gwt/valuestore/shared/SimpleFooRecord.java
@@ -0,0 +1,42 @@ +/* + * Copyright 2010 Google Inc. + * + * 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. + */ +package com.google.gwt.valuestore.shared; + +import java.util.Date; + +/** + * A simple entity used for testing. Has an int field and date field. Add other + * data types as their support gets built in. + */ +public interface SimpleFooRecord extends Record { + + String TOKEN = "SimpleFooRecord"; + + Property<String> userName = new Property<String>("userName", "User Name", + String.class); + Property<String> password = new Property<String>("password", "Password", + String.class); + Property<Integer> intId = new Property<Integer>("intId", Integer.class); + Property<Date> created = new Property<Date>("created", Date.class); + + Date getCreated(); + + Integer getIntId(); + + String getPassword(); + + String getUserName(); +} \ No newline at end of file
diff --git a/bikeshed/test/com/google/gwt/valuestore/shared/impl/RecordJsoImplTest.java b/bikeshed/test/com/google/gwt/valuestore/shared/impl/RecordJsoImplTest.java new file mode 100644 index 0000000..680dab3 --- /dev/null +++ b/bikeshed/test/com/google/gwt/valuestore/shared/impl/RecordJsoImplTest.java
@@ -0,0 +1,148 @@ +/* + * Copyright 2010 Google Inc. + * + * 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. + */ +package com.google.gwt.valuestore.shared.impl; + +import com.google.gwt.core.client.JsArray; +import com.google.gwt.junit.client.GWTTestCase; +import com.google.gwt.valuestore.shared.SimpleFooRecord; + +import java.util.Date; + +/** + * Tests for {@link RecordJsoImpl}. + */ +public class RecordJsoImplTest extends GWTTestCase { + + private static final String EMPTY_JSON = "{}"; + private static final String ID_VERSION_JSON = "{\"id\":\"42\",\"version\":1}"; + private static final String ID_VERSION_JSON2 = "{\"id\":\"43\",\"version\":1}"; + private static final String ALL_PROPERTIES_JSON = "{\"id\":\"42\",\"version\":1,\"userName\":\"bovik\",\"password\":\"bovik\",\"intId\":4,\"created\":400}"; + + private static final boolean SCHEMA_ABSENT = false; + private static final boolean SCHEMA_PRESENT = true; + + @Override + public String getModuleName() { + return "com.google.gwt.valuestore.ValueStoreTest"; + } + + public void testEmptyCopy() { + RecordJsoImpl emptyCopy = RecordJsoImpl.emptyCopy(new RecordImpl(getPopulatedJso())); + testMinimalJso(emptyCopy, SCHEMA_PRESENT); + } + + public void testFromJson() { + testEmptyJso(RecordJsoImpl.fromJson(EMPTY_JSON), SCHEMA_ABSENT); + testMinimalJso(RecordJsoImpl.fromJson(ID_VERSION_JSON), SCHEMA_ABSENT); + testPopulatedJso(RecordJsoImpl.fromJson(ALL_PROPERTIES_JSON), SCHEMA_ABSENT); + } + + public void testFromJsonArray() { + String jsonString = "[" + ID_VERSION_JSON + "," + ID_VERSION_JSON2 + "]"; + JsArray<RecordJsoImpl> jsArray = RecordJsoImpl.arrayFromJson(jsonString); + assertEquals(2, jsArray.length()); + } + + public void testIsEmpty() { + try { + getEmptyJso().isEmpty(); + fail("A Runtime Exception should be thrown because schema is not defined"); + } catch (RuntimeException ex) { + // NullPointerException in dev mode, JavaScriptException in prod mode + // expected because schema is not defined. + } + assertTrue(getMinimalJso().isEmpty()); + assertFalse(getPopulatedJso().isEmpty()); + } + + public void testSet() { + RecordJsoImpl jso = getMinimalJso(); + jso.set(SimpleFooRecord.userName, "bovik"); + jso.set(SimpleFooRecord.password, "bovik"); + jso.set(SimpleFooRecord.intId, 4); + jso.set(SimpleFooRecord.created, new Date(400)); + testPopulatedJso(jso, SCHEMA_PRESENT); + } + + public void testToJson() { + assertEquals(ID_VERSION_JSON, getMinimalJso().toJson()); + } + + public void testToJsonIdVersion() { + assertEquals(ID_VERSION_JSON, getPopulatedJso().toJsonIdVersion()); + assertEquals(ID_VERSION_JSON, getMinimalJso().toJsonIdVersion()); + } + + private RecordJsoImpl getEmptyJso() { + return RecordJsoImpl.create(); + } + + private RecordJsoImpl getMinimalJso() { + return RecordJsoImpl.create("42", 1, SimpleFooRecordImpl.SCHEMA); + } + + private RecordJsoImpl getPopulatedJso() { + RecordJsoImpl jso = getMinimalJso(); + jso.set(SimpleFooRecord.userName, "bovik"); + jso.set(SimpleFooRecord.password, "bovik"); + jso.set(SimpleFooRecord.intId, 4); + jso.set(SimpleFooRecord.created, new Date(400)); + return jso; + } + + private void testEmptyJso(RecordJsoImpl jso, boolean schemaPresent) { + assertFalse(jso.isDefined(SimpleFooRecord.id.getName())); + assertFalse(jso.isDefined(SimpleFooRecord.version.getName())); + assertEquals("{}", jso.toJson()); + testSchema(jso, schemaPresent); + } + + private void testMinimalJso(RecordJsoImpl jso, boolean schemaPresent) { + for (String property : new String[] {"id", "version"}) { + assertTrue(jso.isDefined(property)); + } + for (String property : new String[] { + "created", "intId", "userName", "password"}) { + assertFalse(jso.isDefined(property)); + assertNull(jso.get(property)); + } + assertEquals("42", jso.getId()); + assertEquals(new Integer(1), jso.getVersion()); + testSchema(jso, schemaPresent); + } + + private void testPopulatedJso(RecordJsoImpl jso, boolean schemaPresent) { + for (String property : new String[] {"id", "version", "created", "intId", "userName", "password"}) { + assertTrue(jso.isDefined(property)); + } + assertEquals("42", jso.getId()); + assertEquals(new Integer(1), jso.getVersion()); + assertEquals("bovik", jso.get(SimpleFooRecord.userName)); + assertEquals("bovik", jso.get(SimpleFooRecord.password)); + assertEquals(new Integer(4), jso.get(SimpleFooRecord.intId)); + assertEquals(new Date(400), jso.get(SimpleFooRecord.created)); + testSchema(jso, schemaPresent); + } + + private void testSchema(RecordJsoImpl jso, boolean schemaPresent) { + if (schemaPresent) { + assertEquals(SimpleFooRecordImpl.SCHEMA, jso.getSchema()); + } else { + assertNull(jso.getSchema()); + } + } + +}
diff --git a/bikeshed/test/com/google/gwt/valuestore/shared/impl/SimpleFooRecordImpl.java b/bikeshed/test/com/google/gwt/valuestore/shared/impl/SimpleFooRecordImpl.java new file mode 100644 index 0000000..122b485 --- /dev/null +++ b/bikeshed/test/com/google/gwt/valuestore/shared/impl/SimpleFooRecordImpl.java
@@ -0,0 +1,94 @@ +/* + * Copyright 2010 Google Inc. + * + * 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. + */ +package com.google.gwt.valuestore.shared.impl; + +import com.google.gwt.valuestore.shared.Property; +import com.google.gwt.valuestore.shared.Record; +import com.google.gwt.valuestore.shared.RecordChangedEvent; +import com.google.gwt.valuestore.shared.SimpleFooRecord; +import com.google.gwt.valuestore.shared.WriteOperation; + +import java.util.Collections; +import java.util.HashSet; +import java.util.Set; + +/** + * The actual implementation of {@link SimpleFooRecord}, which is normally + * generated. + * + * TODO: Use the generator here. + */ +public class SimpleFooRecordImpl extends RecordImpl implements SimpleFooRecord { + + /** + * The Schema class. + */ + public static class MySchema extends RecordSchema<SimpleFooRecordImpl> { + private final Set<Property<?>> allProperties; + { + Set<Property<?>> set = new HashSet<Property<?>>(); + set.addAll(super.allProperties()); + set.add(userName); + set.add(password); + set.add(intId); + set.add(created); + allProperties = Collections.unmodifiableSet(set); + } + + public Set<Property<?>> allProperties() { + return allProperties; + } + + @Override + public SimpleFooRecordImpl create(RecordJsoImpl jso) { + return new SimpleFooRecordImpl(jso); + } + + @Override + public RecordChangedEvent<?, ?> createChangeEvent(Record record, + WriteOperation writeOperation) { + // ignore + return null; + } + + public String getToken() { + return SimpleFooRecord.TOKEN; // special field + } + } + + public static final RecordSchema<SimpleFooRecordImpl> SCHEMA = new MySchema(); + + private SimpleFooRecordImpl(RecordJsoImpl jso) { + super(jso); + } + + public java.util.Date getCreated() { + return get(created); + } + + public java.lang.Integer getIntId() { + return get(intId); + } + + public java.lang.String getPassword() { + return get(password); + } + + public java.lang.String getUserName() { + return get(userName); + } + +}