You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by mm...@apache.org on 2018/09/27 18:24:41 UTC
[geode-native] 01/01: GEODE-5768: Refactored CqListners to override
OnEvent method for specific type - added JMX port info to start/stop server
scripting
This is an automated email from the ASF dual-hosted git repository.
mmartell pushed a commit to branch GEODE-5768
in repository https://gitbox.apache.org/repos/asf/geode-native.git
commit fe295b0ad1cbac810b2b8bcaecc4daf2d8d91ec0
Author: Ivan Godwin <ig...@pivotal.io>
AuthorDate: Thu Sep 27 11:15:48 2018 -0700
GEODE-5768: Refactored CqListners to override OnEvent method for specific type
- added JMX port info to start/stop server scripting
---
clicache/integration-test2/CMakeLists.txt | 4 +-
clicache/integration-test2/CqOperationTest.cs | 182 ++++++++++++++++----
clicache/integration-test2/GeodeServer.cs | 27 +--
clicache/integration-test2/Position.cs | 239 ++++++++++++++++++++++++++
clicache/integration-test2/server.xml | 26 +++
tests/javaobject/Position.java | 20 +--
6 files changed, 438 insertions(+), 60 deletions(-)
diff --git a/clicache/integration-test2/CMakeLists.txt b/clicache/integration-test2/CMakeLists.txt
index 745a1da..0bbdcc7 100644
--- a/clicache/integration-test2/CMakeLists.txt
+++ b/clicache/integration-test2/CMakeLists.txt
@@ -36,7 +36,9 @@ add_library( ${PROJECT_NAME} SHARED
CqOperationTest.cs
RegionTest.cs
RegionSSLTest.cs
+ Position.cs
cache.xml
+ server.xml
geode.properties
xunit.runner.json
packages.config
@@ -47,7 +49,7 @@ add_library( ${PROJECT_NAME} SHARED
ServerSslKeys/server_truststore.jks
)
-set_source_files_properties(cache.xml xunit.runner.json geode.properties ClientSslKeys/client_keystore.password.pem ClientSslKeys/client_truststore.pem ServerSslKeys/server_keystore.jks ServerSslKeys/server_truststore.jks PROPERTIES
+set_source_files_properties(cache.xml server.xml xunit.runner.json geode.properties ClientSslKeys/client_keystore.password.pem ClientSslKeys/client_truststore.pem ServerSslKeys/server_keystore.jks ServerSslKeys/server_truststore.jks PROPERTIES
VS_COPY_TO_OUT_DIR Always
VS_TOOL_OVERRIDE "None"
)
diff --git a/clicache/integration-test2/CqOperationTest.cs b/clicache/integration-test2/CqOperationTest.cs
index ad6bfa9..8d0e147 100644
--- a/clicache/integration-test2/CqOperationTest.cs
+++ b/clicache/integration-test2/CqOperationTest.cs
@@ -64,7 +64,7 @@ namespace Apache.Geode.Client.IntegrationTests
}
}
- public class MyCqListener<TKey, TResult> : ICqListener<TKey, TResult>
+ public class CqListener<TKey, TResult> : ICqListener<TKey, TResult>
{
public AutoResetEvent RegionClearEvent { get; private set; }
public AutoResetEvent CreatedEvent { get; private set; }
@@ -72,9 +72,9 @@ namespace Apache.Geode.Client.IntegrationTests
public AutoResetEvent DestroyedNonNullEvent { get; private set; }
public AutoResetEvent DestroyedNullEvent { get; private set; }
public AutoResetEvent InvalidatedEvent { get; private set; }
- public bool ReceivedUnknownEventType { get; private set; }
+ public bool ReceivedUnknownEventType { get; internal set; }
- public MyCqListener()
+ public CqListener()
{
CreatedEvent = new AutoResetEvent(false);
UpdatedEvent = new AutoResetEvent(false);
@@ -87,8 +87,25 @@ namespace Apache.Geode.Client.IntegrationTests
public virtual void OnEvent(CqEvent<TKey, TResult> ev)
{
- Debug.WriteLine("MyCqListener::OnEvent called");
- MyOrder val = ev.getNewValue() as MyOrder;
+ }
+
+ public virtual void OnError(CqEvent<TKey, TResult> ev)
+ {
+ Debug.WriteLine("CqListener::OnError called");
+ }
+
+ public virtual void Close()
+ {
+ Debug.WriteLine("CqListener::close called");
+ }
+ }
+
+ public class PdxCqListener<TKey, TResult> : CqListener<TKey, TResult>
+ {
+ public override void OnEvent(CqEvent<TKey, TResult> ev)
+ {
+ Debug.WriteLine("CqListener::OnEvent called");
+ var val = ev.getNewValue() as MyOrder;
TKey key = ev.getKey();
switch (ev.getQueryOperation())
@@ -120,15 +137,44 @@ namespace Apache.Geode.Client.IntegrationTests
break;
}
}
+ }
- public virtual void OnError(CqEvent<TKey, TResult> ev)
+ public class DataCqListener<TKey, TResult> : CqListener<TKey, TResult>
+ {
+ public override void OnEvent(CqEvent<TKey, TResult> ev)
{
- Debug.WriteLine("MyCqListener::OnError called");
- }
+ Debug.WriteLine("CqListener::OnEvent called");
+ var val = ev.getNewValue() as Position;
+ TKey key = ev.getKey();
- public virtual void Close()
- {
- Debug.WriteLine("MyCqListener::close called");
+ switch (ev.getQueryOperation())
+ {
+ case CqOperation.OP_TYPE_REGION_CLEAR:
+ RegionClearEvent.Set();
+ break;
+ case CqOperation.OP_TYPE_CREATE:
+ CreatedEvent.Set();
+ break;
+ case CqOperation.OP_TYPE_UPDATE:
+ UpdatedEvent.Set();
+ break;
+ case CqOperation.OP_TYPE_INVALIDATE:
+ InvalidatedEvent.Set();
+ break;
+ case CqOperation.OP_TYPE_DESTROY:
+ if (val == null)
+ {
+ DestroyedNullEvent.Set();
+ }
+ else
+ {
+ DestroyedNonNullEvent.Set();
+ }
+ break;
+ default:
+ ReceivedUnknownEventType = true;
+ break;
+ }
}
}
@@ -138,42 +184,42 @@ namespace Apache.Geode.Client.IntegrationTests
private readonly Cache _cache;
private readonly GeodeServer _geodeServer;
private static int _waitInterval = 1000;
-
+
public CqOperationTest()
{
var cacheFactory = new CacheFactory()
.Set("log-level", "error");
-
+
_cache = cacheFactory.Create();
_geodeServer = new GeodeServer();
-
+
}
-
+
public void Dispose()
{
_cache.Close();
_geodeServer.Dispose();
}
-
+
[Fact]
- public void NotificationsHaveCorrectValues()
+ public void NotificationsHaveCorrectValuesPdxSerializable()
{
_cache.TypeRegistry.RegisterPdxType(MyOrder.CreateDeserializable);
-
+
var poolFactory = _cache.GetPoolFactory()
.AddLocator("localhost", _geodeServer.LocatorPort);
var pool = poolFactory
.SetSubscriptionEnabled(true)
.Create("pool");
-
+
var regionFactory = _cache.CreateRegionFactory(RegionShortcut.PROXY)
.SetPoolName("pool");
-
+
var region = regionFactory.Create<string, MyOrder>("cqTestRegion");
-
+
var queryService = pool.GetQueryService();
var cqAttributesFactory = new CqAttributesFactory<string, MyOrder>();
- var cqListener = new MyCqListener<string, MyOrder>();
+ var cqListener = new PdxCqListener<string, MyOrder>();
cqAttributesFactory.AddCqListener(cqListener);
var cqAttributes = cqAttributesFactory.Create();
@@ -181,36 +227,98 @@ namespace Apache.Geode.Client.IntegrationTests
Debug.WriteLine("Executing continuous query");
query.Execute();
- Debug.WriteLine("Putting and changing Order objects in the region");
+ Debug.WriteLine("Putting and changing Position objects in the region");
var order1 = new MyOrder(1, "product x", 23);
var order2 = new MyOrder(2, "product y", 37);
var order3 = new MyOrder(3, "product z", 101);
-
+
region.Put("order1", order1);
+
region.Put("order2", order2);
- Assert.True(cqListener.CreatedEvent.WaitOne(_waitInterval), "Didn't receieve expected CREATE event");
-
+ Assert.True(cqListener.CreatedEvent.WaitOne(_waitInterval), "Didn't receive expected CREATE event");
+
order1.Quantity = 60;
region.Put("order1", order1);
- Assert.True(cqListener.CreatedEvent.WaitOne(_waitInterval), "Didn't receieve expected CREATE event");
-
+ Assert.True(cqListener.CreatedEvent.WaitOne(_waitInterval), "Didn't receive expected CREATE event");
+
order2.Quantity = 45;
region.Put("order2", order2);
- Assert.True(cqListener.UpdatedEvent.WaitOne(_waitInterval), "Didn't receieve expected UPDATE event");
-
+ Assert.True(cqListener.UpdatedEvent.WaitOne(_waitInterval), "Didn't receive expected UPDATE event");
+
order2.Quantity = 11;
region.Put("order2", order2);
- Assert.True(cqListener.DestroyedNonNullEvent.WaitOne(_waitInterval), "Didn't receieve expected DESTROY event");
-
+ Assert.True(cqListener.DestroyedNonNullEvent.WaitOne(_waitInterval), "Didn't receive expected DESTROY event");
+
region.Remove("order1");
- Assert.True(cqListener.DestroyedNullEvent.WaitOne(_waitInterval), "Didn't receieve expected DESTROY event");
-
+ Assert.True(cqListener.DestroyedNullEvent.WaitOne(_waitInterval), "Didn't receive expected DESTROY event");
+
region.Put("order3", order3);
- Assert.True(cqListener.CreatedEvent.WaitOne(_waitInterval), "Didn't receieve expected CREATE event");
-
+ Assert.True(cqListener.CreatedEvent.WaitOne(_waitInterval), "Didn't receive expected CREATE event");
+
region.Clear();
Assert.True(cqListener.RegionClearEvent.WaitOne(_waitInterval), "Didn't receive expected CLEAR event");
-
+
+ Assert.False(cqListener.ReceivedUnknownEventType, "An unknown event was received by CQ listener");
+ }
+
+ [Fact]
+ public void NotificationsHaveCorrectValuesDataSerializable()
+ {
+ _cache.TypeRegistry.RegisterType(Position.CreateDeserializable, 2);
+
+ var poolFactory = _cache.GetPoolFactory()
+ .AddLocator("localhost", _geodeServer.LocatorPort);
+ var pool = poolFactory
+ .SetSubscriptionEnabled(true)
+ .Create("pool");
+
+ var regionFactory = _cache.CreateRegionFactory(RegionShortcut.PROXY)
+ .SetPoolName("pool");
+
+ var region = regionFactory.Create<string, Position>("cqTestRegion");
+
+ var queryService = pool.GetQueryService();
+ var cqAttributesFactory = new CqAttributesFactory<string, Position>();
+ var cqListener = new DataCqListener<string, Position>();
+ cqAttributesFactory.AddCqListener(cqListener);
+ var cqAttributes = cqAttributesFactory.Create();
+
+ var query = queryService.NewCq("MyCq", "SELECT * FROM /cqTestRegion WHERE sharesOutstanding > 30", cqAttributes, false);
+ Debug.WriteLine("Executing continuous query");
+ query.Execute();
+
+ Debug.WriteLine("Putting and changing Position objects in the region");
+ var order1 = new Position("GOOG", 23);
+ var order2 = new Position("IBM", 37);
+ var order3 = new Position("PVTL", 101);
+
+ region.Put("order1", order1);
+ var Value = region["order1"];
+
+ region.Put("order2", order2);
+ Assert.True(cqListener.CreatedEvent.WaitOne(_waitInterval), "Didn't receive expected CREATE event");
+
+ order1.SharesOutstanding = 55;
+ region.Put("order1", order1);
+ Assert.True(cqListener.CreatedEvent.WaitOne(_waitInterval), "Didn't receive expected CREATE event");
+
+ order2.SharesOutstanding = 77;
+ region.Put("order2", order2);
+ Assert.True(cqListener.UpdatedEvent.WaitOne(_waitInterval), "Didn't receive expected UPDATE event");
+
+ order2.SharesOutstanding = 11;
+ region.Put("order2", order2);
+ Assert.True(cqListener.DestroyedNonNullEvent.WaitOne(_waitInterval), "Didn't receive expected DESTROY event");
+
+ region.Remove("order1");
+ Assert.True(cqListener.DestroyedNullEvent.WaitOne(_waitInterval), "Didn't receive expected DESTROY event");
+
+ region.Put("order3", order3);
+ Assert.True(cqListener.CreatedEvent.WaitOne(_waitInterval), "Didn't receive expected CREATE event");
+
+ region.Clear();
+ Assert.True(cqListener.RegionClearEvent.WaitOne(_waitInterval), "Didn't receive expected CLEAR event");
+
Assert.False(cqListener.ReceivedUnknownEventType, "An unknown event was received by CQ listener");
}
}
diff --git a/clicache/integration-test2/GeodeServer.cs b/clicache/integration-test2/GeodeServer.cs
index 0844d88..3f34905 100644
--- a/clicache/integration-test2/GeodeServer.cs
+++ b/clicache/integration-test2/GeodeServer.cs
@@ -87,18 +87,21 @@ public class GeodeServer : IDisposable
{
StartInfo =
{
- FileName = Config.GeodeGfsh,
- Arguments = " -e \"start locator --bind-address=localhost --port=" + LocatorPort +
- " --J=-Dgemfire.jmx-manager-port=" + LocatorJmxPort + " --http-service-port=0" + "\"" +
- " -e \"start server --bind-address=localhost --server-port=0\"" +
- " -e \"create region --name=" + regionName + " --type=PARTITION\"" +
- " -e \"create region --name=testRegion1 --type=PARTITION\"" +
- " -e \"create region --name=cqTestRegion --type=REPLICATE\"",
- WindowStyle = ProcessWindowStyle.Hidden,
- UseShellExecute = false,
- RedirectStandardOutput = true,
- RedirectStandardError = true,
- CreateNoWindow = true
+
+ FileName = Config.GeodeGfsh,
+ Arguments = " -e \"start locator --name=locator1 --bind-address=localhost --port=" + LocatorPort +
+ " --J=-Dgemfire.jmx-manager-port=" + LocatorJmxPort + " --http-service-port=0" + "\"" +
+ " -e \"deploy --jar=..\\..\\..\\tests\\javaobject\\javaobject.jar\"" +
+ " -e \"start server --name=server1 --bind-address=localhost --cache-xml-file=server.xml --server-port=0\"" +
+ " -e \"start server --name=server1 --bind-address=localhost --server-port=0\"" +
+ " -e \"create region --name=" + regionName + " --type=PARTITION\"" +
+ " -e \"create region --name=testRegion1 --type=PARTITION\"" +
+ " -e \"create region --name=cqTestRegion --type=REPLICATE\"",
+ WindowStyle = ProcessWindowStyle.Hidden,
+ UseShellExecute = false,
+ RedirectStandardOutput = true,
+ RedirectStandardError = true,
+ CreateNoWindow = true
}
};
}
diff --git a/clicache/integration-test2/Position.cs b/clicache/integration-test2/Position.cs
new file mode 100644
index 0000000..ca3730f
--- /dev/null
+++ b/clicache/integration-test2/Position.cs
@@ -0,0 +1,239 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
+using System;
+
+namespace Apache.Geode.Client.IntegrationTests
+{
+ using Apache.Geode.Client;
+ public class Position
+ : IDataSerializable
+ {
+ #region Private members
+
+ private long m_avg20DaysVol;
+ private string m_bondRating;
+ private double m_convRatio;
+ private string m_country;
+ private double m_delta;
+ private long m_industry;
+ private long m_issuer;
+ private double m_mktValue;
+ private double m_qty;
+ private string m_secId;
+ private string m_secLinks;
+ private string m_secType;
+ private int m_sharesOutstanding;
+ private string m_underlyer;
+ private long m_volatility;
+ private int m_pid;
+
+ private static int m_count = 0;
+
+ #endregion
+
+ #region Private methods
+
+ private void Init()
+ {
+ m_avg20DaysVol = 0;
+ m_bondRating = "bondRatingString";
+ m_convRatio = 0.0;
+ m_country = null;
+ m_delta = 0.0;
+ m_industry = 0;
+ m_issuer = 0;
+ m_mktValue = 0.0;
+ m_qty = 0.0;
+ m_secId = null;
+ m_secLinks = null;
+ m_secType = null;
+ m_sharesOutstanding = 0;
+ m_underlyer = null;
+ m_volatility = 0;
+ m_pid = 0;
+ }
+
+ private UInt64 GetObjectSize(ISerializable obj)
+ {
+ return (obj == null ? 0 : obj.ObjectSize);
+ }
+
+ #endregion
+
+ #region Public accessors
+
+ public string SecId
+ {
+ get
+ {
+ return m_secId;
+ }
+ }
+
+ public int Id
+ {
+ get
+ {
+ return m_pid;
+ }
+ }
+
+ public int SharesOutstanding
+ {
+ get
+ {
+ return m_sharesOutstanding;
+ }
+ set
+ {
+ m_sharesOutstanding = value;
+ }
+ }
+
+ public static int Count
+ {
+ get
+ {
+ return m_count;
+ }
+ set
+ {
+ m_count = value;
+ }
+ }
+
+ public override string ToString()
+ {
+ return "Position [secId=" + m_secId + " sharesOutstanding=" + m_sharesOutstanding + " type=" + m_secType + " id=" + m_pid + "]";
+ }
+ #endregion
+
+ #region Constructors
+
+ public Position()
+ {
+ Init();
+ }
+
+ //This ctor is for a data validation test
+ public Position(Int32 iForExactVal)
+ {
+ Init();
+
+ char[] id = new char[iForExactVal + 1];
+ for (int i = 0; i <= iForExactVal; i++)
+ {
+ id[i] = 'a';
+ }
+ m_secId = id.ToString();
+ m_qty = iForExactVal % 2 == 0 ? 1000 : 100;
+ m_mktValue = m_qty * 2;
+ m_sharesOutstanding = iForExactVal;
+ m_secType = "a";
+ m_pid = iForExactVal;
+ }
+
+ public Position(string id, int shares)
+ {
+ Init();
+ m_secId = id;
+ m_qty = shares * (m_count % 2 == 0 ? 10.0 : 100.0);
+ m_mktValue = m_qty * 1.2345998;
+ m_sharesOutstanding = shares;
+ m_secType = "a";
+ m_pid = m_count++;
+ }
+
+ #endregion
+
+ #region IDataSerializable Members
+
+ public void FromData(DataInput input)
+ {
+ m_avg20DaysVol = input.ReadInt64();
+ m_bondRating = input.ReadUTF();
+ m_convRatio = input.ReadDouble();
+ m_country = input.ReadUTF();
+ m_delta = input.ReadDouble();
+ m_industry = input.ReadInt64();
+ m_issuer = input.ReadInt64();
+ m_mktValue = input.ReadDouble();
+ m_qty = input.ReadDouble();
+ m_secId = input.ReadUTF();
+ m_secLinks = input.ReadUTF();
+ m_secType = input.ReadUTF();
+ m_sharesOutstanding = input.ReadInt32();
+ m_underlyer = input.ReadUTF();
+ m_volatility = input.ReadInt64();
+ m_pid = input.ReadInt32();
+ }
+
+ public void ToData(DataOutput output)
+ {
+ output.WriteInt64(m_avg20DaysVol);
+ output.WriteUTF(m_bondRating);
+ output.WriteDouble(m_convRatio);
+ output.WriteUTF(m_country);
+ output.WriteDouble(m_delta);
+ output.WriteInt64(m_industry);
+ output.WriteInt64(m_issuer);
+ output.WriteDouble(m_mktValue);
+ output.WriteDouble(m_qty);
+ output.WriteUTF(m_secId);
+ output.WriteUTF(m_secLinks);
+ output.WriteUTF(m_secType);
+ output.WriteInt32(m_sharesOutstanding);
+ output.WriteUTF(m_underlyer);
+ output.WriteInt64(m_volatility);
+ output.WriteInt32(m_pid);
+
+ }
+
+ public UInt64 ObjectSize
+ {
+ get
+ {
+ UInt64 objectSize = 0;
+ objectSize += (UInt64)sizeof(long);
+ objectSize += (UInt64) (m_bondRating.Length * sizeof(char));
+ objectSize += (UInt64)sizeof(double);
+ objectSize += (UInt64)(m_country.Length * sizeof(char));
+ objectSize += (UInt64)sizeof(double);
+ objectSize += (UInt64)sizeof(Int64);
+ objectSize += (UInt64)sizeof(Int64);
+ objectSize += (UInt64)sizeof(double);
+ objectSize += (UInt64)sizeof(double);
+ objectSize += (UInt64)(m_secId.Length * sizeof(char));
+ objectSize += (UInt64)(m_secLinks.Length * sizeof(char));
+ objectSize += (UInt64)(m_secType == null ? 0 : sizeof(char) * m_secType.Length);
+ objectSize += (UInt64)sizeof(Int32);
+ objectSize += (UInt64)(m_underlyer.Length * sizeof(char));
+ objectSize += (UInt64)sizeof(Int64);
+ objectSize += (UInt64)sizeof(Int32);
+ return objectSize;
+ }
+ }
+
+ #endregion
+
+ public static ISerializable CreateDeserializable()
+ {
+ return new Position();
+ }
+ }
+}
diff --git a/clicache/integration-test2/server.xml b/clicache/integration-test2/server.xml
new file mode 100644
index 0000000..b1a8a6a
--- /dev/null
+++ b/clicache/integration-test2/server.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You 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.
+-->
+<cache
+ xmlns="http://geode.apache.org/schema/cache"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://geode.apache.org/schema/cache http://geode.apache.org/schema/cache/cache-1.0.xsd" version="1.0">
+ <serialization-registration>
+ <instantiator id="2">
+ <class-name>javaobject.Position</class-name>
+ </instantiator>
+ </serialization-registration>
+</cache>
\ No newline at end of file
diff --git a/tests/javaobject/Position.java b/tests/javaobject/Position.java
index 61e5499..058f356 100644
--- a/tests/javaobject/Position.java
+++ b/tests/javaobject/Position.java
@@ -113,38 +113,38 @@ public class Position implements Declarable, Serializable, DataSerializable {
public void fromData(DataInput in) throws IOException, ClassNotFoundException {
this.avg20DaysVol = in.readLong();
- this.bondRating = (String)DataSerializer.readObject(in);
+ this.bondRating = in.readUTF();
this.convRatio = in.readDouble();
- this.country = (String)DataSerializer.readObject(in);
+ this.country = in.readUTF();
this.delta = in.readDouble();
this.industry = in.readLong();
this.issuer = in.readLong();
this.mktValue = in.readDouble();
this.qty = in.readDouble();
- this.secId = (String)DataSerializer.readObject(in);
- this.secLinks = (String)DataSerializer.readObject(in);
+ this.secId = in.readUTF();
+ this.secLinks = in.readUTF();
this.secType = in.readUTF();
this.sharesOutstanding = in.readInt();
- this.underlyer = (String)DataSerializer.readObject(in);
+ this.underlyer = in.readUTF();
this.volatility = in.readLong();
this.pid = in.readInt();
}
public void toData(DataOutput out) throws IOException {
out.writeLong(this.avg20DaysVol);
- DataSerializer.writeObject(this.bondRating, out);
+ out.writeUTF(this.bondRating);
out.writeDouble(this.convRatio);
- DataSerializer.writeObject(this.country, out);
+ out.writeUTF(this.country);
out.writeDouble(this.delta);
out.writeLong(this.industry);
out.writeLong(this.issuer);
out.writeDouble(this.mktValue);
out.writeDouble(this.qty);
- DataSerializer.writeObject(this.secId, out);
- DataSerializer.writeObject(this.secLinks, out);
+ out.writeUTF(this.secId);
+ out.writeUTF(this.secLinks);
out.writeUTF(this.secType);
out.writeInt(this.sharesOutstanding);
- DataSerializer.writeObject(this.underlyer, out);
+ out.writeUTF(this.underlyer);
out.writeLong(this.volatility);
out.writeInt(this.pid);
}