|
@@ -912,7 +912,7 @@ const char * getWorkunitStateStr(WUState state)
|
|
|
return states[state].str; // MORE - should be using getEnumText, or need to take steps to ensure values remain contiguous and in order.
|
|
|
}
|
|
|
|
|
|
-const char *getEnumText(int value, mapEnums *map)
|
|
|
+const char *getEnumText(int value, const mapEnums *map)
|
|
|
{
|
|
|
const char *defval = map->str;
|
|
|
while (map->str)
|
|
@@ -925,7 +925,7 @@ const char *getEnumText(int value, mapEnums *map)
|
|
|
return defval;
|
|
|
}
|
|
|
|
|
|
-void setEnum(IPropertyTree *p, const char *propname, int value, mapEnums *map)
|
|
|
+void setEnum(IPropertyTree *p, const char *propname, int value, const mapEnums *map)
|
|
|
{
|
|
|
const char *defval = map->str;
|
|
|
while (map->str)
|
|
@@ -941,7 +941,7 @@ void setEnum(IPropertyTree *p, const char *propname, int value, mapEnums *map)
|
|
|
p->setProp(propname, defval);
|
|
|
}
|
|
|
|
|
|
-static int getEnum(const char *v, mapEnums *map)
|
|
|
+static int getEnum(const char *v, const mapEnums *map)
|
|
|
{
|
|
|
if (v)
|
|
|
{
|
|
@@ -956,7 +956,7 @@ static int getEnum(const char *v, mapEnums *map)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-static int getEnum(const IPropertyTree *p, const char *propname, mapEnums *map)
|
|
|
+static int getEnum(const IPropertyTree *p, const char *propname, const mapEnums *map)
|
|
|
{
|
|
|
return getEnum(p->queryProp(propname),map);
|
|
|
}
|
|
@@ -1319,6 +1319,8 @@ public:
|
|
|
{ return c->getSnapshot(str); }
|
|
|
virtual const char *queryUser() const
|
|
|
{ return c->queryUser(); }
|
|
|
+ virtual ErrorSeverity getWarningSeverity(unsigned code, ErrorSeverity defaultSeverity) const
|
|
|
+ { return c->getWarningSeverity(code, defaultSeverity); }
|
|
|
virtual IStringVal & getWuScope(IStringVal & str) const
|
|
|
{ return c->getWuScope(str); }
|
|
|
virtual const char *queryWuid() const
|
|
@@ -1497,6 +1499,8 @@ public:
|
|
|
|
|
|
virtual void setSnapshot(const char * value)
|
|
|
{ c->setSnapshot(value); }
|
|
|
+ virtual void setWarningSeverity(unsigned code, ErrorSeverity severity)
|
|
|
+ { c->setWarningSeverity(code, severity); }
|
|
|
virtual void setTimeScheduled(const IJlibDateTime &val)
|
|
|
{ c->setTimeScheduled(val); }
|
|
|
virtual void setDebugAgentListenerPort(unsigned port)
|
|
@@ -4753,6 +4757,45 @@ void CLocalWorkUnit::setSnapshot(const char * val)
|
|
|
p->setProp("SNAPSHOT", val);
|
|
|
}
|
|
|
|
|
|
+const static mapEnums warningSeverityMap[] =
|
|
|
+{
|
|
|
+ { SeverityIgnore, "ignore" },
|
|
|
+ { SeverityInfo, "info" },
|
|
|
+ { SeverityWarning, "warning" },
|
|
|
+ { SeverityError, "error" },
|
|
|
+ { SeverityFatal, "fatal" },
|
|
|
+ { SeverityUnknown, NULL }
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+ErrorSeverity CLocalWorkUnit::getWarningSeverity(unsigned code, ErrorSeverity defaultSeverity) const
|
|
|
+{
|
|
|
+ StringBuffer xpath;
|
|
|
+ xpath.append("OnWarnings/OnWarning[@code='").append(code).append("']");
|
|
|
+ CriticalBlock block(crit);
|
|
|
+ IPropertyTree * mapping = p->queryPropTree(xpath);
|
|
|
+ if (mapping)
|
|
|
+ return (ErrorSeverity) getEnum(mapping, "@severity", warningSeverityMap);
|
|
|
+ return defaultSeverity;
|
|
|
+}
|
|
|
+
|
|
|
+void CLocalWorkUnit::setWarningSeverity(unsigned code, ErrorSeverity severity)
|
|
|
+{
|
|
|
+ StringBuffer xpath;
|
|
|
+ xpath.append("OnWarnings/OnWarning[@code='").append(code).append("']");
|
|
|
+
|
|
|
+ CriticalBlock block(crit);
|
|
|
+ IPropertyTree * mapping = p->queryPropTree(xpath);
|
|
|
+ if (!mapping)
|
|
|
+ {
|
|
|
+ IPropertyTree * onWarnings = ensurePTree(p, "OnWarnings");
|
|
|
+ mapping = onWarnings->addPropTree("OnWarning", createPTree());
|
|
|
+ mapping->setPropInt("@code", code);
|
|
|
+ }
|
|
|
+
|
|
|
+ setEnum(mapping, "@severity", severity, warningSeverityMap);
|
|
|
+}
|
|
|
+
|
|
|
static int comparePropTrees(IInterface * const *ll, IInterface * const *rr)
|
|
|
{
|
|
|
IPropertyTree *l = (IPropertyTree *) *ll;
|
|
@@ -4857,6 +4900,7 @@ void CLocalWorkUnit::copyWorkUnit(IConstWorkUnit *cached, bool all)
|
|
|
else
|
|
|
p->setPropTree("Debug", LINK(pt));
|
|
|
}
|
|
|
+ copyTree(p, fromP, "OnWarnings");
|
|
|
copyTree(p, fromP, "Plugins");
|
|
|
copyTree(p, fromP, "Libraries");
|
|
|
copyTree(p, fromP, "Results");
|