Преглед изворни кода

Merge pull request #10247 from richardkchapman/move-wureceiver

HPCC-18009 Move WorkunitErrorReceiver out of hql

Reviewed-by: Gavin Halliday <ghalliday@hpccsystems.com>
Gavin Halliday пре 8 година
родитељ
комит
49f4735c8a

+ 32 - 0
common/workunit/workunit.cpp

@@ -10839,3 +10839,35 @@ void addWorkunitException(IWorkUnit * wu, IError * error, bool removeTimeStamp)
     if (error->queryScope())
         exception->setScope(error->queryScope());
 }
+
+
+IError * WorkUnitErrorReceiver::mapError(IError * error)
+{
+    return LINK(error);
+}
+
+void WorkUnitErrorReceiver::report(IError* eclError)
+{
+    addWorkunitException(wu, eclError, removeTimeStamp);
+}
+
+size32_t WorkUnitErrorReceiver::errCount()
+{
+    unsigned count = 0;
+    Owned<IConstWUExceptionIterator> exceptions = &wu->getExceptions();
+    ForEach(*exceptions)
+        if (exceptions->query().getSeverity() == SeverityError)
+            count++;
+    return count;
+}
+
+size32_t WorkUnitErrorReceiver::warnCount()
+{
+    unsigned count = 0;
+    Owned<IConstWUExceptionIterator> exceptions = &wu->getExceptions();
+    ForEach(*exceptions)
+        if (exceptions->query().getSeverity() == SeverityWarning)
+            count++;
+    return count;
+}
+

+ 19 - 0
common/workunit/workunit.hpp

@@ -1521,6 +1521,25 @@ extern WORKUNIT_API WUAction getWorkunitAction(const char * actionStr);
 
 extern WORKUNIT_API void addTimeStamp(IWorkUnit * wu, StatisticScopeType scopeType, const char * scope, StatisticKind kind);
 extern WORKUNIT_API IPropertyTree * getWUGraphProgress(const char * wuid, bool readonly);
+
+class WORKUNIT_API WorkUnitErrorReceiver : implements IErrorReceiver, public CInterface
+{
+public:
+    WorkUnitErrorReceiver(IWorkUnit * _wu, const char * _component, bool _removeTimeStamp) { wu.set(_wu); component.set(_component); removeTimeStamp = _removeTimeStamp; }
+    IMPLEMENT_IINTERFACE;
+
+    virtual IError * mapError(IError * error);
+    virtual void exportMappings(IWorkUnit * wu) const { }
+    virtual void report(IError*);
+    virtual size32_t errCount();
+    virtual size32_t warnCount();
+
+private:
+    Owned<IWorkUnit> wu;
+    StringAttr component;
+    bool removeTimeStamp;
+};
+
 extern WORKUNIT_API void addWorkunitException(IWorkUnit * wu, IError * error, bool removeTimeStamp);
 
 inline bool isGlobalScope(const char * scope) { return scope && (streq(scope, GLOBAL_SCOPE) || streq(scope, LEGACY_GLOBAL_SCOPE)); }

+ 0 - 1
ecl/hql/CMakeLists.txt

@@ -156,7 +156,6 @@ target_link_libraries ( hql
          nbcd
          eclrtl
          deftype
-         workunit
          ${CPPUNIT_LIBRARIES}
     )
 

+ 0 - 26
ecl/hql/hqlerror.cpp

@@ -36,17 +36,6 @@ ErrorSeverity getSeverity(IAtom * name)
     return SeverityUnknown;
 }
 
-ErrorSeverity queryDefaultSeverity(WarnErrorCategory category)
-{
-    if (category == CategoryError)
-        return SeverityFatal;
-    if (category == CategoryInformation)
-        return SeverityInformation;
-    if (category == CategoryMistake)
-        return SeverityError;
-    return SeverityWarning;
-}
-
 WarnErrorCategory getCategory(const char * category)
 {
     if (strieq(category, "all"))
@@ -97,21 +86,6 @@ ErrorSeverity getCheckSeverity(IAtom * name)
 
 //---------------------------------------------------------------------------------------------------------------------
 
-void IErrorReceiver::reportError(int errNo, const char *msg, const char *filename, int lineno, int column, int position)
-{
-    Owned<IError> err = createError(errNo,msg,filename,lineno,column,position);
-    report(err);
-}
-
-void IErrorReceiver::reportWarning(WarnErrorCategory category, int warnNo, const char *msg, const char *filename, int lineno, int column, int position)
-{
-    ErrorSeverity severity = queryDefaultSeverity(category);
-    Owned<IError> warn = createError(category, severity,warnNo,msg,filename,lineno,column,position);
-    report(warn);
-}
-
-//---------------------------------------------------------------------------------------------------------------------
-
 void ErrorReceiverSink::report(IError* error)
 {
     switch (error->getSeverity())

+ 0 - 19
ecl/hql/hqlerror.hpp

@@ -24,20 +24,6 @@
 #define DEFAULT_MAX_ERRORS 5
 #define HQLERR_ErrorAlreadyReported             4799            // special case...
 
-interface IWorkUnit;
-interface HQL_API IErrorReceiver : public IInterface
-{
-    virtual void report(IError* error) = 0;
-    virtual IError * mapError(IError * error) = 0;
-    virtual size32_t errCount() = 0;
-    virtual size32_t warnCount() = 0;
-    virtual void exportMappings(IWorkUnit * wu) const = 0;
-
-    //global helper functions
-    void reportError(int errNo, const char *msg, const char *filename, int lineno, int column, int pos);
-    void reportWarning(WarnErrorCategory category, int warnNo, const char *msg, const char *filename, int lineno, int column, int pos);
-};
-
 typedef IArrayOf<IError> IErrorArray;
 
 
@@ -118,17 +104,12 @@ private:
 
 //---------------------------------------------------------------------------------------------------------------------
 
-extern HQL_API ErrorSeverity queryDefaultSeverity(WarnErrorCategory category);
 extern HQL_API WarnErrorCategory getCategory(const char * category);
 extern HQL_API ErrorSeverity getSeverity(IAtom * name);
 extern HQL_API ErrorSeverity getCheckSeverity(IAtom * name);
 
 //---------------------------------------------------------------------------------------------------------------------
 
-inline IError * createError(int errNo, const char *msg, const char *filename, int lineno=0, int column=0, int pos=0)
-{
-    return createError(CategoryError, SeverityFatal, errNo, msg, filename, lineno, column, pos);
-}
 extern HQL_API void reportErrors(IErrorReceiver & receiver, IErrorArray & errors);
 void HQL_API reportErrorVa(IErrorReceiver * errors, int errNo, const ECLlocation & loc, const char* format, va_list args) __attribute__((format(printf, 4, 0)));
 void HQL_API reportError(IErrorReceiver * errors, int errNo, const ECLlocation & loc, const char * format, ...) __attribute__((format(printf, 4, 5)));

+ 0 - 31
ecl/hql/hqlwuerr.cpp

@@ -32,37 +32,6 @@ static void formatError(StringBuffer & out, int errNo, const char *msg, IIdAtom
 }
 
 
-IError * WorkUnitErrorReceiver::mapError(IError * error)
-{
-    return LINK(error);
-}
-
-void WorkUnitErrorReceiver::report(IError* eclError)
-{
-    addWorkunitException(wu, eclError, removeTimeStamp);
-}
-
-size32_t WorkUnitErrorReceiver::errCount()
-{
-    unsigned count = 0;
-    Owned<IConstWUExceptionIterator> exceptions = &wu->getExceptions();
-    ForEach(*exceptions)
-        if (exceptions->query().getSeverity() == SeverityError)
-            count++;
-    return count;
-}
-
-size32_t WorkUnitErrorReceiver::warnCount()
-{
-    unsigned count = 0;
-    Owned<IConstWUExceptionIterator> exceptions = &wu->getExceptions();
-    ForEach(*exceptions)
-        if (exceptions->query().getSeverity() == SeverityWarning)
-            count++;
-    return count;
-}
-
-
 class CompoundErrorReceiver : implements IErrorReceiver, public CInterface
 {
 public:

+ 1 - 20
ecl/hql/hqlwuerr.hpp

@@ -17,27 +17,8 @@
 #ifndef __HQLWUERR_HPP__
 #define __HQLWUERR_HPP__
 
+#include "jexcept.hpp"
 #include "hqlexpr.hpp"
-#include "workunit.hpp"
-
-class HQL_API WorkUnitErrorReceiver : implements IErrorReceiver, public CInterface
-{
-public:
-    WorkUnitErrorReceiver(IWorkUnit * _wu, const char * _component, bool _removeTimeStamp) { wu.set(_wu); component.set(_component); removeTimeStamp = _removeTimeStamp; }
-    IMPLEMENT_IINTERFACE;
-
-    virtual IError * mapError(IError * error);
-    virtual void exportMappings(IWorkUnit * wu) const { }
-    virtual void report(IError*);
-    virtual size32_t errCount();
-    virtual size32_t warnCount();
-
-private:
-    Owned<IWorkUnit> wu;
-    StringAttr component;
-    bool removeTimeStamp;
-};
-
 
 extern HQL_API IErrorReceiver * createCompoundErrorReceiver(IErrorReceiver * primary, IErrorReceiver * secondary);
 

+ 30 - 0
system/jlib/jexcept.cpp

@@ -1534,6 +1534,18 @@ IError * CError::cloneSetSeverity(ErrorSeverity newSeverity) const
                          getLine(), getColumn(), getPosition(), getActivity(), queryScope());
 }
 
+ErrorSeverity queryDefaultSeverity(WarnErrorCategory category)
+{
+    if (category == CategoryError)
+        return SeverityFatal;
+    if (category == CategoryInformation)
+        return SeverityInformation;
+    if (category == CategoryMistake)
+        return SeverityError;
+    return SeverityWarning;
+}
+
+
 IError *createError(WarnErrorCategory category, ErrorSeverity severity, int errNo, const char *msg, const char * filename, int lineno, int column, int pos, unsigned activity, const char * scope)
 {
     return new CError(category,severity,errNo,msg,filename,lineno,column,pos, activity, scope);
@@ -1557,3 +1569,21 @@ IError *createError(IPropertyTree * tree)
                       tree->getPropInt("@activity"),
                       tree->queryProp("@scope"));
 }
+
+//---------------------------------------------------------------------------------------------------------------------
+
+void IErrorReceiver::reportError(int errNo, const char *msg, const char *filename, int lineno, int column, int position)
+{
+    Owned<IError> err = createError(errNo,msg,filename,lineno,column,position);
+    report(err);
+}
+
+void IErrorReceiver::reportWarning(WarnErrorCategory category, int warnNo, const char *msg, const char *filename, int lineno, int column, int position)
+{
+    ErrorSeverity severity = queryDefaultSeverity(category);
+    Owned<IError> warn = createError(category, severity,warnNo,msg,filename,lineno,column,position);
+    report(warn);
+}
+
+//---------------------------------------------------------------------------------------------------------------------
+

+ 20 - 0
system/jlib/jexcept.hpp

@@ -224,12 +224,32 @@ public:
     virtual IPropertyTree * toTree() const = 0;
 };
 
+interface IWorkUnit;
+interface jlib_decl IErrorReceiver : public IInterface
+{
+    virtual void report(IError* error) = 0;
+    virtual IError * mapError(IError * error) = 0;
+    virtual size32_t errCount() = 0;
+    virtual size32_t warnCount() = 0;
+    virtual void exportMappings(IWorkUnit * wu) const = 0;
+
+    //global helper functions
+    void reportError(int errNo, const char *msg, const char *filename, int lineno, int column, int pos);
+    void reportWarning(WarnErrorCategory category, int warnNo, const char *msg, const char *filename, int lineno, int column, int pos);
+};
+
+
 inline bool isError(IError * error) { return isError(error->getSeverity()); }
 inline bool isFatal(IError * error) { return isFatal(error->getSeverity()); }
+extern jlib_decl ErrorSeverity queryDefaultSeverity(WarnErrorCategory category);
 
 extern jlib_decl IError *createError(WarnErrorCategory category, ErrorSeverity severity, int errNo, const char *msg, const char *filename, int lineno=0, int column=0, int pos=0, unsigned activity = 0, const char * scope = nullptr);
 extern jlib_decl IError *createError(WarnErrorCategory category, ErrorSeverity severity, int errNo, const char *msg, unsigned activity, const char * scope);
 extern jlib_decl IError *createError(IPropertyTree * tree);
+inline IError * createError(int errNo, const char *msg, const char *filename, int lineno=0, int column=0, int pos=0)
+{
+    return createError(CategoryError, SeverityFatal, errNo, msg, filename, lineno, column, pos);
+}
 
 #endif