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