<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic geoEvent setField() method throws error or sets null value in ArcGIS GeoEvent Server Questions</title>
    <link>https://community.esri.com/t5/arcgis-geoevent-server-questions/geoevent-setfield-method-throws-error-or-sets-null/m-p/241608#M1037</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; font-family: Arial;"&gt;I'm working on creating a modified version of an Esri adapter for parsing XML in GeoEvent processor. I can parse values out from the XML and log them but the sample code will not set values in the GeoEvent. When the values are set either the output is null or a cast exception is returned (java.lang.ClassCastException). String and Geometry values end up being null; longs and integers cause the cast exception. I've tried using objects (i.e., Integer, Long) and primitives; both cause a cast exception. The link to the sample is below, as is the switch that should set the geoEvent values but does not. &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; font-family: Arial;"&gt;Any suggestions welcome! &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; font-family: Arial;"&gt;&lt;A href="https://messenger.esri.ca/owa/redir.aspx?C=RDcJU16VCkC3JjuoVUl0OcyQ2D1BotEINYJo7Qv0RmF_F8EKXcko__l6tGTAN9ZEuFOH3FzGjvo.&amp;amp;URL=https%3a%2f%2fgithub.com%2fEsri%2fsolutions-geoevent-java%2ftree%2fmaster%2fsolutions-geoevent%2fadapters%2fgeomessage-adapter" style="font-family: Arial; font-size: 10pt;" target="_blank"&gt;https://github.com/Esri/solutions-geoevent-java/tree/master/solutions-geoevent/adapters/geomessage-adapter&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="java" __jive_macro_name="code" class="jive_macro_code jive_text_macro _jivemacro_uid_14105426211218168" jivemacro_uid="_14105426211218168" modifiedtitle="true"&gt;
&lt;P&gt;switch (fieldDefinition.getType())&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;case Integer:&lt;/P&gt;
&lt;P&gt;&amp;nbsp; Integer tmp = (Integer)Integer.parseInt(fieldValue);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LOG.info(tmp);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; geoEvent.setField(fieldName, tmp);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LOG.info("GeoEvent value stored for " + fieldName + " :" + geoEvent.getField(fieldName));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; break;&lt;/P&gt;
&lt;P&gt;case Long:&lt;/P&gt;
&lt;P&gt;&amp;nbsp; geoEvent.setField(fieldName, Long.parseLong(fieldValue));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LOG.info("GeoEvent value stored for " + fieldName + " :" + geoEvent.getField(fieldName));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; break;&lt;/P&gt;
&lt;P&gt;case Short:&lt;/P&gt;
&lt;P&gt;&amp;nbsp; geoEvent.setField(fieldName, Short.parseShort(fieldValue));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LOG.info("GeoEvent value stored for " + fieldName + " :" + geoEvent.getField(fieldName));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; break;&lt;/P&gt;
&lt;P&gt;case Double:&lt;/P&gt;
&lt;P&gt;&amp;nbsp; geoEvent.setField(fieldName, Double.parseDouble(fieldValue));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LOG.info("GeoEvent value stored for " + fieldName + " :" + geoEvent.getField(fieldName));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; break;&lt;/P&gt;
&lt;P&gt;case Float:&lt;/P&gt;
&lt;P&gt;&amp;nbsp; geoEvent.setProperty(fieldName, Float.parseFloat(fieldValue));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LOG.info("GeoEvent value stored for " + fieldName + " :" + geoEvent.getField(fieldName));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; break;&lt;/P&gt;
&lt;P&gt;case Boolean:&lt;/P&gt;
&lt;P&gt;&amp;nbsp; //geoEvent.setField(fieldName, Boolean.parseBoolean(fieldValue));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; geoEvent.setProperty(fieldName, Boolean.parseBoolean(fieldValue));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LOG.info("GeoEvent value stored for" + fieldName + " :" + geoEvent.getField(fieldName));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; break;&lt;/P&gt;
&lt;P&gt;case Date:&lt;/P&gt;
&lt;P&gt;&amp;nbsp; geoEvent.setProperty(fieldName, DateUtil.convert(fieldValue));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LOG.info("GeoEvent value stored for " + fieldName + " :" + geoEvent.getField(fieldName));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; break;&lt;/P&gt;
&lt;P&gt;case String:&lt;/P&gt;
&lt;P&gt;&amp;nbsp; geoEvent.setProperty(fieldName, fieldValue);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LOG.info("GeoEvent value stored for " + fieldName + " :" + geoEvent.getField(fieldName));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; break;&lt;/P&gt;
&lt;P&gt;case Geometry:&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LOG.info("Geometry field received: "+fieldValue);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; String geometryString = fieldValue;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; if (geometryString.contains(";"))&lt;/P&gt;
&lt;P&gt;&amp;nbsp; geometryString = geometryString.substring(0, geometryString.indexOf(';') - 1);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; String[] g = geometryString.split(",");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; double x = Double.parseDouble(g[0]);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; double y = Double.parseDouble(g[1]);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; double z = 0;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; int wkid = 4326;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; Point point = spatial.createPoint(x, y, z, wkid);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; // getGeometryId is deprecated&lt;/P&gt;
&lt;P&gt;&amp;nbsp; // int geometryID = geoEvent.getGeoEventDefinition().getGeometryId();&lt;/P&gt;
&lt;P&gt;&amp;nbsp; String geometryGUID = geoEvent.getGuid();&lt;/P&gt;
&lt;P&gt;&amp;nbsp; // updated to use setGeometry without using the .toJson method; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; // the new method accepts a geometry object&lt;/P&gt;
&lt;P&gt;&amp;nbsp; geoEvent.setGeometry(geometryGUID, point);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; Point pt = (Point) geoEvent.getGeometry();&lt;/P&gt;
&lt;P&gt;&amp;nbsp; if (pt == null){&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LOG.info("Null point geometry");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp; else{&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LOG.info("Geometry X value is: " + pt.getX());&lt;/P&gt;
&lt;P&gt;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; break;&lt;/P&gt;
&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 12 Sep 2014 17:25:21 GMT</pubDate>
    <dc:creator>GregYetman</dc:creator>
    <dc:date>2014-09-12T17:25:21Z</dc:date>
    <item>
      <title>geoEvent setField() method throws error or sets null value</title>
      <link>https://community.esri.com/t5/arcgis-geoevent-server-questions/geoevent-setfield-method-throws-error-or-sets-null/m-p/241608#M1037</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; font-family: Arial;"&gt;I'm working on creating a modified version of an Esri adapter for parsing XML in GeoEvent processor. I can parse values out from the XML and log them but the sample code will not set values in the GeoEvent. When the values are set either the output is null or a cast exception is returned (java.lang.ClassCastException). String and Geometry values end up being null; longs and integers cause the cast exception. I've tried using objects (i.e., Integer, Long) and primitives; both cause a cast exception. The link to the sample is below, as is the switch that should set the geoEvent values but does not. &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; font-family: Arial;"&gt;Any suggestions welcome! &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; font-family: Arial;"&gt;&lt;A href="https://messenger.esri.ca/owa/redir.aspx?C=RDcJU16VCkC3JjuoVUl0OcyQ2D1BotEINYJo7Qv0RmF_F8EKXcko__l6tGTAN9ZEuFOH3FzGjvo.&amp;amp;URL=https%3a%2f%2fgithub.com%2fEsri%2fsolutions-geoevent-java%2ftree%2fmaster%2fsolutions-geoevent%2fadapters%2fgeomessage-adapter" style="font-family: Arial; font-size: 10pt;" target="_blank"&gt;https://github.com/Esri/solutions-geoevent-java/tree/master/solutions-geoevent/adapters/geomessage-adapter&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="java" __jive_macro_name="code" class="jive_macro_code jive_text_macro _jivemacro_uid_14105426211218168" jivemacro_uid="_14105426211218168" modifiedtitle="true"&gt;
&lt;P&gt;switch (fieldDefinition.getType())&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;case Integer:&lt;/P&gt;
&lt;P&gt;&amp;nbsp; Integer tmp = (Integer)Integer.parseInt(fieldValue);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LOG.info(tmp);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; geoEvent.setField(fieldName, tmp);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LOG.info("GeoEvent value stored for " + fieldName + " :" + geoEvent.getField(fieldName));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; break;&lt;/P&gt;
&lt;P&gt;case Long:&lt;/P&gt;
&lt;P&gt;&amp;nbsp; geoEvent.setField(fieldName, Long.parseLong(fieldValue));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LOG.info("GeoEvent value stored for " + fieldName + " :" + geoEvent.getField(fieldName));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; break;&lt;/P&gt;
&lt;P&gt;case Short:&lt;/P&gt;
&lt;P&gt;&amp;nbsp; geoEvent.setField(fieldName, Short.parseShort(fieldValue));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LOG.info("GeoEvent value stored for " + fieldName + " :" + geoEvent.getField(fieldName));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; break;&lt;/P&gt;
&lt;P&gt;case Double:&lt;/P&gt;
&lt;P&gt;&amp;nbsp; geoEvent.setField(fieldName, Double.parseDouble(fieldValue));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LOG.info("GeoEvent value stored for " + fieldName + " :" + geoEvent.getField(fieldName));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; break;&lt;/P&gt;
&lt;P&gt;case Float:&lt;/P&gt;
&lt;P&gt;&amp;nbsp; geoEvent.setProperty(fieldName, Float.parseFloat(fieldValue));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LOG.info("GeoEvent value stored for " + fieldName + " :" + geoEvent.getField(fieldName));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; break;&lt;/P&gt;
&lt;P&gt;case Boolean:&lt;/P&gt;
&lt;P&gt;&amp;nbsp; //geoEvent.setField(fieldName, Boolean.parseBoolean(fieldValue));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; geoEvent.setProperty(fieldName, Boolean.parseBoolean(fieldValue));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LOG.info("GeoEvent value stored for" + fieldName + " :" + geoEvent.getField(fieldName));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; break;&lt;/P&gt;
&lt;P&gt;case Date:&lt;/P&gt;
&lt;P&gt;&amp;nbsp; geoEvent.setProperty(fieldName, DateUtil.convert(fieldValue));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LOG.info("GeoEvent value stored for " + fieldName + " :" + geoEvent.getField(fieldName));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; break;&lt;/P&gt;
&lt;P&gt;case String:&lt;/P&gt;
&lt;P&gt;&amp;nbsp; geoEvent.setProperty(fieldName, fieldValue);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LOG.info("GeoEvent value stored for " + fieldName + " :" + geoEvent.getField(fieldName));&lt;/P&gt;
&lt;P&gt;&amp;nbsp; break;&lt;/P&gt;
&lt;P&gt;case Geometry:&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LOG.info("Geometry field received: "+fieldValue);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; String geometryString = fieldValue;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; if (geometryString.contains(";"))&lt;/P&gt;
&lt;P&gt;&amp;nbsp; geometryString = geometryString.substring(0, geometryString.indexOf(';') - 1);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; String[] g = geometryString.split(",");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; double x = Double.parseDouble(g[0]);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; double y = Double.parseDouble(g[1]);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; double z = 0;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; int wkid = 4326;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; Point point = spatial.createPoint(x, y, z, wkid);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; // getGeometryId is deprecated&lt;/P&gt;
&lt;P&gt;&amp;nbsp; // int geometryID = geoEvent.getGeoEventDefinition().getGeometryId();&lt;/P&gt;
&lt;P&gt;&amp;nbsp; String geometryGUID = geoEvent.getGuid();&lt;/P&gt;
&lt;P&gt;&amp;nbsp; // updated to use setGeometry without using the .toJson method; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; // the new method accepts a geometry object&lt;/P&gt;
&lt;P&gt;&amp;nbsp; geoEvent.setGeometry(geometryGUID, point);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; Point pt = (Point) geoEvent.getGeometry();&lt;/P&gt;
&lt;P&gt;&amp;nbsp; if (pt == null){&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LOG.info("Null point geometry");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp; else{&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LOG.info("Geometry X value is: " + pt.getX());&lt;/P&gt;
&lt;P&gt;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; break;&lt;/P&gt;
&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 12 Sep 2014 17:25:21 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-geoevent-server-questions/geoevent-setfield-method-throws-error-or-sets-null/m-p/241608#M1037</guid>
      <dc:creator>GregYetman</dc:creator>
      <dc:date>2014-09-12T17:25:21Z</dc:date>
    </item>
    <item>
      <title>Re: geoEvent setField() method throws error or sets null value</title>
      <link>https://community.esri.com/t5/arcgis-geoevent-server-questions/geoevent-setfield-method-throws-error-or-sets-null/m-p/241609#M1038</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="color: #000000; font-family: Arial;"&gt;I figured out the problem while trying to reproduce it on another machine. The setField() method throws the cast error when the GeoEvent definition for the field has a cardinality of many. Changing the cardinality to one fixed the problem. I imagine that setField() would work for a cardinality of many if an array or enum object were used but I haven't tested that. &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; font-family: Arial;"&gt;I also had to update the setGeometry function: passing in just the geometry without the GUID is what is needed. &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="java" __jive_macro_name="code" class="jive_macro_code jive_text_macro _jivemacro_uid_1410806853478795" jivemacro_uid="_1410806853478795"&gt;
&lt;P&gt;geoEvent.setGeometry(point);&lt;/P&gt;
&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 15 Sep 2014 18:46:47 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-geoevent-server-questions/geoevent-setfield-method-throws-error-or-sets-null/m-p/241609#M1038</guid>
      <dc:creator>GregYetman</dc:creator>
      <dc:date>2014-09-15T18:46:47Z</dc:date>
    </item>
  </channel>
</rss>

