wu-sheng closed pull request #1: Avoid class cast exception.
URL: https://github.com/apache/incubator-skywalking-oal-tool/pull/1
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git 
a/oal-parser/src/main/resources/code-templates/EndpointDispatcherTemplate.ftl 
b/oal-parser/src/main/resources/code-templates/EndpointDispatcherTemplate.ftl
index ce18bbf..5c0be3e 100644
--- 
a/oal-parser/src/main/resources/code-templates/EndpointDispatcherTemplate.ftl
+++ 
b/oal-parser/src/main/resources/code-templates/EndpointDispatcherTemplate.ftl
@@ -31,7 +31,6 @@ import org.apache.skywalking.oap.server.core.source.Endpoint;
  */
 public class EndpointDispatcher implements SourceDispatcher<Endpoint> {
 
-
     @Override public void dispatch(Endpoint source) {
 <#list endpointIndicators as indicator>
         do${indicator.metricName}(source);
@@ -49,5 +48,6 @@ public class EndpointDispatcher implements 
SourceDispatcher<Endpoint> {
         indicator.${indicator.entryMethod.methodName}(<#list 
indicator.entryMethod.argsExpressions as arg>${arg}<#if arg_has_next>, 
</#if></#list>);
         IndicatorProcess.INSTANCE.in(indicator);
     }
+
 </#list>
 }
diff --git 
a/oal-parser/src/main/resources/code-templates/IndicatorImplementor.ftl 
b/oal-parser/src/main/resources/code-templates/IndicatorImplementor.ftl
index db109b4..25d56c7 100644
--- a/oal-parser/src/main/resources/code-templates/IndicatorImplementor.ftl
+++ b/oal-parser/src/main/resources/code-templates/IndicatorImplementor.ftl
@@ -56,7 +56,6 @@ public class ${metricName}Indicator extends 
${indicatorClassName} {
         return result;
     }
 
-
     @Override public boolean equals(Object obj) {
         if (this == obj)
             return true;
@@ -78,7 +77,6 @@ public class ${metricName}Indicator extends 
${indicatorClassName} {
         return true;
     }
 
-
     @Override public RemoteData.Builder serialize() {
         RemoteData.Builder remoteBuilder = RemoteData.newBuilder();
 <#list serializeFields.stringFields as field>
@@ -134,10 +132,18 @@ public class ${metricName}Indicator extends 
${indicatorClassName} {
         @Override public ${metricName}Indicator map2Data(Map<String, Object> 
dbMap) {
             ${metricName}Indicator indicator = new ${metricName}Indicator();
     <#list fieldsFromSource as field>
+        <#if field.typeName == "long" || field.typeName == "int" || 
field.typeName == "double" || field.typeName == "float">
+            
indicator.${field.fieldSetter}(((Number)dbMap.get("${field.columnName}")).${field.typeName}Value());
+        <#else>
             
indicator.${field.fieldSetter}((${field.typeName})dbMap.get("${field.columnName}"));
+        </#if>
     </#list>
     <#list persistentFields as field>
+        <#if field.typeName == "long" || field.typeName == "int" || 
field.typeName == "double" || field.typeName == "float">
+            
indicator.${field.fieldSetter}(((Number)dbMap.get("${field.columnName}")).${field.typeName}Value());
+        <#else>
             
indicator.${field.fieldSetter}((${field.typeName})dbMap.get("${field.columnName}"));
+        </#if>
     </#list>
             return indicator;
         }
diff --git 
a/oal-parser/src/main/resources/code-templates/ServiceDispatcherTemplate.ftl 
b/oal-parser/src/main/resources/code-templates/ServiceDispatcherTemplate.ftl
index 3dc7e21..a7b8239 100644
--- a/oal-parser/src/main/resources/code-templates/ServiceDispatcherTemplate.ftl
+++ b/oal-parser/src/main/resources/code-templates/ServiceDispatcherTemplate.ftl
@@ -30,6 +30,7 @@ import org.apache.skywalking.oap.server.core.source.Service;
  * @author Observability Analysis Language code generator
  */
 public class ServiceDispatcher implements SourceDispatcher<Service> {
+
     @Override public void dispatch(Service source) {
 <#list serviceIndicators as indicator>
         do${indicator.metricName}(source);
diff --git 
a/oal-parser/src/main/resources/code-templates/ServiceInstanceJVMCPUDispatcherTemplate.ftl
 
b/oal-parser/src/main/resources/code-templates/ServiceInstanceJVMCPUDispatcherTemplate.ftl
index d34a19e..bf6635c 100644
--- 
a/oal-parser/src/main/resources/code-templates/ServiceInstanceJVMCPUDispatcherTemplate.ftl
+++ 
b/oal-parser/src/main/resources/code-templates/ServiceInstanceJVMCPUDispatcherTemplate.ftl
@@ -30,8 +30,7 @@ import 
org.apache.skywalking.oap.server.core.source.ServiceInstanceJVMCPU;
  * @author Observability Analysis Language code generator
  */
 public class ServiceInstanceJVMCPUDispatcher implements 
SourceDispatcher<ServiceInstanceJVMCPU> {
-
-
+    
     @Override public void dispatch(ServiceInstanceJVMCPU source) {
 <#list serviceInstanceJVMCPUIndicators as indicator>
         do${indicator.metricName}(source);
diff --git 
a/oal-parser/src/main/resources/code-templates/ServiceInstanceJVMGCDispatcherTemplate.ftl
 
b/oal-parser/src/main/resources/code-templates/ServiceInstanceJVMGCDispatcherTemplate.ftl
index aeabf99..48ef241 100644
--- 
a/oal-parser/src/main/resources/code-templates/ServiceInstanceJVMGCDispatcherTemplate.ftl
+++ 
b/oal-parser/src/main/resources/code-templates/ServiceInstanceJVMGCDispatcherTemplate.ftl
@@ -31,7 +31,6 @@ import 
org.apache.skywalking.oap.server.core.source.ServiceInstanceJVMGC;
  */
 public class ServiceInstanceJVMGCDispatcher implements 
SourceDispatcher<ServiceInstanceJVMGC> {
 
-
     @Override public void dispatch(ServiceInstanceJVMGC source) {
 <#list serviceInstanceJVMGCIndicators as indicator>
         do${indicator.metricName}(source);
@@ -50,4 +49,4 @@ public class ServiceInstanceJVMGCDispatcher implements 
SourceDispatcher<ServiceI
         IndicatorProcess.INSTANCE.in(indicator);
     }
 </#list>
-    }
+}
diff --git 
a/oal-parser/src/main/resources/code-templates/ServiceInstanceJVMMemoryDispatcherTemplate.ftl
 
b/oal-parser/src/main/resources/code-templates/ServiceInstanceJVMMemoryDispatcherTemplate.ftl
index 2afa991..60a6680 100644
--- 
a/oal-parser/src/main/resources/code-templates/ServiceInstanceJVMMemoryDispatcherTemplate.ftl
+++ 
b/oal-parser/src/main/resources/code-templates/ServiceInstanceJVMMemoryDispatcherTemplate.ftl
@@ -31,7 +31,6 @@ import 
org.apache.skywalking.oap.server.core.source.ServiceInstanceJVMMemory;
  */
 public class ServiceInstanceJVMMemoryDispatcher implements 
SourceDispatcher<ServiceInstanceJVMMemory> {
 
-
     @Override public void dispatch(ServiceInstanceJVMMemory source) {
 <#list serviceInstanceJVMMemoryIndicators as indicator>
         do${indicator.metricName}(source);
@@ -50,4 +49,4 @@ public class ServiceInstanceJVMMemoryDispatcher implements 
SourceDispatcher<Serv
         IndicatorProcess.INSTANCE.in(indicator);
     }
 </#list>
-    }
+}
diff --git 
a/oal-parser/src/main/resources/code-templates/ServiceInstanceJVMMemoryPoolDispatcherTemplate.ftl
 
b/oal-parser/src/main/resources/code-templates/ServiceInstanceJVMMemoryPoolDispatcherTemplate.ftl
index 58c4129..ce71046 100644
--- 
a/oal-parser/src/main/resources/code-templates/ServiceInstanceJVMMemoryPoolDispatcherTemplate.ftl
+++ 
b/oal-parser/src/main/resources/code-templates/ServiceInstanceJVMMemoryPoolDispatcherTemplate.ftl
@@ -31,7 +31,6 @@ import 
org.apache.skywalking.oap.server.core.source.ServiceInstanceJVMMemoryPool
  */
 public class ServiceInstanceJVMMemoryPoolDispatcher implements 
SourceDispatcher<ServiceInstanceJVMMemoryPool> {
 
-
     @Override public void dispatch(ServiceInstanceJVMMemoryPool source) {
 <#list serviceInstanceJVMMemoryPoolIndicators as indicator>
         do${indicator.metricName}(source);
@@ -50,4 +49,4 @@ public class ServiceInstanceJVMMemoryPoolDispatcher 
implements SourceDispatcher<
         IndicatorProcess.INSTANCE.in(indicator);
     }
 </#list>
-    }
+}
diff --git 
a/oal-parser/src/test/resources/expectedFiles/IndicatorImplementorExpected.java 
b/oal-parser/src/test/resources/expectedFiles/IndicatorImplementorExpected.java
index d599e3b..323ea61 100644
--- 
a/oal-parser/src/test/resources/expectedFiles/IndicatorImplementorExpected.java
+++ 
b/oal-parser/src/test/resources/expectedFiles/IndicatorImplementorExpected.java
@@ -50,7 +50,6 @@
         return result;
     }
 
-
     @Override public boolean equals(Object obj) {
         if (this == obj)
             return true;
@@ -68,7 +67,6 @@
         return true;
     }
 
-
     @Override public RemoteData.Builder serialize() {
         RemoteData.Builder remoteBuilder = RemoteData.newBuilder();
 
@@ -108,11 +106,11 @@
 
         @Override public ServiceAvgIndicator map2Data(Map<String, Object> 
dbMap) {
             ServiceAvgIndicator indicator = new ServiceAvgIndicator();
-            indicator.setId((int)dbMap.get("id"));
-            indicator.setSummation((long)dbMap.get("summation"));
-            indicator.setCount((int)dbMap.get("count"));
-            indicator.setValue((long)dbMap.get("value"));
-            indicator.setTimeBucket((long)dbMap.get("time_bucket"));
+            indicator.setId(((Number)dbMap.get("id")).intValue());
+            
indicator.setSummation(((Number)dbMap.get("summation")).longValue());
+            indicator.setCount(((Number)dbMap.get("count")).intValue());
+            indicator.setValue(((Number)dbMap.get("value")).longValue());
+            
indicator.setTimeBucket(((Number)dbMap.get("time_bucket")).longValue());
             return indicator;
         }
     }
diff --git 
a/oal-parser/src/test/resources/expectedFiles/ServiceDispatcherExpected.java 
b/oal-parser/src/test/resources/expectedFiles/ServiceDispatcherExpected.java
index 32fe003..da7013b 100644
--- a/oal-parser/src/test/resources/expectedFiles/ServiceDispatcherExpected.java
+++ b/oal-parser/src/test/resources/expectedFiles/ServiceDispatcherExpected.java
@@ -28,6 +28,7 @@
  * @author Observability Analysis Language code generator
  */
 public class ServiceDispatcher implements SourceDispatcher<Service> {
+
     @Override public void dispatch(Service source) {
         doServiceAvg(source);
     }


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

Reply via email to