import traceback
import sys
import os
-import xmlmarshaller
-
-AG_TYPE_MAPPING = { "ag:append" : "activegrid.model.processmodel.AppendOperation",
- "ag:body" : "activegrid.model.processmodel.Body",
- "ag:copy" : "activegrid.model.processmodel.CopyOperation",
- "ag:cssRule" : "activegrid.model.processmodel.CssRule",
- "ag:datasource" : "activegrid.data.dataservice.DataSource",
- "ag:debug" : "activegrid.model.processmodel.DebugOperation",
- "ag:deployment" : "activegrid.server.deployment.Deployment",
- "ag:glue" : "activegrid.model.processmodel.Glue",
- "ag:hr" : "activegrid.model.processmodel.HorizontalRow",
- "ag:image" : "activegrid.model.processmodel.Image",
- "ag:inputs" : "activegrid.model.processmodel.Inputs",
- "ag:label" : "activegrid.model.processmodel.Label",
- "ag:processmodel": "activegrid.model.processmodel.ProcessModel",
- "ag:processmodelref" : "activegrid.server.deployment.ProcessModelRef",
- "ag:query" : "activegrid.model.processmodel.Query",
- "ag:schemaOptions" : "activegrid.model.schema.SchemaOptions",
- "ag:schemaref" : "activegrid.server.deployment.SchemaRef",
- "ag:set" : "activegrid.model.processmodel.SetOperation",
- "ag:text" : "activegrid.model.processmodel.Text",
- "ag:title" : "activegrid.model.processmodel.Title",
- "ag:view" : "activegrid.model.processmodel.View",
- "bpws:case" : "activegrid.model.processmodel.BPELCase",
- "bpws:catch" : "activegrid.model.processmodel.BPELCatch",
- "bpws:faultHandlers" : "activegrid.model.processmodel.BPELFaultHandlers",
- "bpws:invoke" : "activegrid.model.processmodel.BPELInvoke",
- "bpws:onMessage" : "activegrid.model.processmodel.BPELOnMessage",
- "bpws:otherwise" : "activegrid.model.processmodel.BPELOtherwise",
- "bpws:pick" : "activegrid.model.processmodel.BPELPick",
- "bpws:process" : "activegrid.model.processmodel.BPELProcess",
- "bpws:receive" : "activegrid.model.processmodel.BPELReceive",
- "bpws:reply" : "activegrid.model.processmodel.BPELReply",
- "bpws:scope" : "activegrid.model.processmodel.BPELScope",
- "bpws:sequence" : "activegrid.model.processmodel.BPELSequence",
- "bpws:switch" : "activegrid.model.processmodel.BPELSwitch",
- "bpws:terminate" : "activegrid.model.processmodel.BPELTerminate",
- "bpws:variable" : "activegrid.model.processmodel.BPELVariable",
- "bpws:variables" : "activegrid.model.processmodel.BPELVariables",
- "bpws:while" : "activegrid.model.processmodel.BPELWhile",
- "wsdl:message" : "activegrid.model.processmodel.WSDLMessage",
- "wsdl:part" : "activegrid.model.processmodel.WSDLPart",
- "xforms:group" : "activegrid.model.processmodel.XFormsGroup",
- "xforms:input" : "activegrid.model.processmodel.XFormsInput",
- "xforms:label" : "activegrid.model.processmodel.XFormsLabel",
- "xforms:output" : "activegrid.model.processmodel.XFormsOutput",
- "xforms:secret" : "activegrid.model.processmodel.XFormsSecret",
- "xforms:submit" : "activegrid.model.processmodel.XFormsSubmit",
- "xs:all" : "activegrid.model.schema.XsdSequence",
- "xs:complexType" : "activegrid.model.schema.XsdComplexType",
- "xs:element" : "activegrid.model.schema.XsdElement",
- "xs:field" : "activegrid.model.schema.XsdKeyField",
- "xs:key" : "activegrid.model.schema.XsdKey",
- "xs:keyref" : "activegrid.model.schema.XsdKeyRef",
- "xs:schema" : "activegrid.model.schema.Schema",
- "xs:selector" : "activegrid.model.schema.XsdKeySelector",
- "xs:sequence" : "activegrid.model.schema.XsdSequence",
- "projectmodel" : "activegrid.tool.ProjectEditor.ProjectModel",
- }
-
-def defaultLoad(fileObject, knownTypes=None):
- xml = fileObject.read()
- loadedObject = defaultUnmarshal(xml, knownTypes=knownTypes)
- if hasattr(fileObject, 'name'):
- loadedObject.fileName = os.path.abspath(fileObject.name)
- loadedObject.initialize()
- return loadedObject
-
-def defaultUnmarshal(xml, knownTypes=None):
- if not knownTypes: knownTypes = AG_TYPE_MAPPING
- return xmlmarshaller.unmarshal(xml, knownTypes=knownTypes)
-
-def defaultSave(fileObject, objectToSave, prettyPrint=True, knownTypes=None, withEncoding=1, encoding='utf-8'):
- xml = defaultMarshal(objectToSave, prettyPrint=prettyPrint, knownTypes=knownTypes, withEncoding=withEncoding, encoding=encoding)
- fileObject.write(xml)
- fileObject.flush()
-
-def defaultMarshal(objectToSave, prettyPrint=True, knownTypes=None, withEncoding=1, encoding='utf-8'):
- if not knownTypes: knownTypes = AG_TYPE_MAPPING
- return xmlmarshaller.marshal(objectToSave, prettyPrint=prettyPrint, knownTypes=knownTypes, withEncoding=withEncoding, encoding=encoding)
-
-def clone(objectToClone, knownTypes=None, encoding='utf-8'):
- if not knownTypes: knownTypes = AG_TYPE_MAPPING
- xml = xmlmarshaller.marshal(objectToClone, prettyPrint=True, knownTypes=knownTypes, encoding=encoding)
- clonedObject = xmlmarshaller.unmarshal(xml, knownTypes=knownTypes)
- if hasattr(objectToClone, 'fileName'):
- clonedObject.fileName = objectToClone.fileName
- try:
- clonedObject.initialize()
- except AttributeError:
- pass
- return clonedObject
+from types import *
def classForName(className):
pathList = className.split('.')
code = code.__dict__[name]
return code
-def hasattrignorecase(object, name):
- namelow = name.lower()
- for attr in dir(object):
- if attr.lower() == namelow:
- return True
- for attr in dir(object):
- if attr.lower() == '_' + namelow:
- return True
- return False
-
-def setattrignorecase(object, name, value):
- namelow = name.lower()
- for attr in object.__dict__:
- if attr.lower() == namelow:
- object.__dict__[attr] = value
- return
- object.__dict__[name] = value
-
-def getattrignorecase(object, name):
- namelow = name.lower()
- for attr in object.__dict__:
- if attr.lower() == namelow:
- return object.__dict__[attr]
- return object.__dict__[name]
-
def hasPropertyValue(obj, attr):
hasProp = False
try:
return hasProp
def toDiffableString(value):
- s = repr(value)
+ s = str(value)
ds = ""
i = s.find(" at 0x")
start = 0
start = j
i = s.find(" at 0x", start)
return ds + s[start:]
-
+
+def toString(value, options=0):
+ if ((options & PRINT_OBJ_DIFFABLE) > 0):
+ return toDiffableString(value)
+ return value
+
+def toTypeString(obj):
+ if (isinstance(obj, BooleanType)):
+ return "bool"
+ elif (isinstance(obj, UnicodeType)):
+ return "unicode"
+ elif (isinstance(obj, basestring)):
+ return "string"
+ elif (isinstance(obj, IntType)):
+ return "int"
+ elif (isinstance(obj, FloatType)):
+ return "float"
+ elif (type(obj) == ListType):
+ return "list"
+ elif (isinstance(obj, DictType)):
+ return "dict"
+ elif (isinstance(obj, TupleType)):
+ return "tuple"
+ elif (isinstance(obj, InstanceType)):
+ return type(obj)
+ else:
+ return type(obj)
+
PRINT_OBJ_GETATTR = 1
PRINT_OBJ_HIDE_INTERNAL = 2
PRINT_OBJ_COMPACT = 4
PRINT_OBJ_NONONE = 8
+PRINT_OBJ_DIFFABLE = 16
PRINT_OBJ_INTERNAL = 512
def printObject(out, object, name="", indent=0, flags=0, exclude=None, maxIndent=30):
if ((maxIndent != None) and (indent > maxIndent)):
- print >> out, " "*indent, name, str(object)
+ print >> out, " "*indent, "%s: %s" % (name, toString(str(object), flags)),
+ if ((flags & PRINT_OBJ_INTERNAL) == 0):
+ print >> out
return True
finalNewLine = False
printed = True
+## if (exclude == None):
+## exclude = []
if ((flags & PRINT_OBJ_COMPACT) > 0):
if (exclude and object in exclude):
return
if ((flags & PRINT_OBJ_INTERNAL) == 0):
finalNewLine = True
flags |= PRINT_OBJ_INTERNAL
- if (object == None):
+ if (object is None):
if (flags & PRINT_OBJ_NONONE) == 0:
print >> out, " "*indent, name, " = None",
else:
finalNewLine = False
printed = False
elif (isinstance(object, (list, tuple))):
- if (exclude and object in exclude):
- print >> out, " "*indent, name, " : ", type(object), " of length = ", len(object), " (already printed)",
- elif (exclude and name in exclude):
- print >> out, " "*indent, name, " : ", type(object), " of length = ", len(object), " (excluded)",
+ if ((exclude != None) and object in exclude):
+ print >> out, " "*indent, name, " : ", toTypeString(object), " of length = ", len(object), " (already printed)",
+ elif ((exclude != None) and name in exclude):
+ print >> out, " "*indent, name, " : ", toTypeString(object), " of length = ", len(object), " (excluded)",
else:
- if (exclude != None): exclude.append(object)
- print >> out, " "*indent, name, " : ", type(object), " of length = %i" % len(object),
+ if ((exclude != None) and (len(object) > 0)): exclude.append(object)
+ print >> out, " "*indent, name, " : ", toTypeString(object), " of length = %d" % len(object),
for i, o in enumerate(object):
print >> out
- printObject(out, o, name="[%i]" % i, indent=indent+2, flags=flags, exclude=exclude, maxIndent=maxIndent)
+ printObject(out, o, name="[%d]" % i, indent=indent+2, flags=flags, exclude=exclude, maxIndent=maxIndent)
elif (isinstance(object, dict)):
- if (exclude and object in exclude):
- print >> out, " "*indent, name, " : ", type(object), " (already printed)",
+ if ((exclude != None) and object in exclude):
+ print >> out, " "*indent, name, " : ", toTypeString(object), " (already printed)",
else:
- if (exclude != None): exclude.append(object)
+ if ((exclude != None) and (len(object) > 0)): exclude.append(object)
if (len(name) > 0):
print >> out, " "*indent, name,
if ((flags & PRINT_OBJ_COMPACT) == 0):
print >> out
keys = object.keys()
keys.sort()
- for n in keys:
- if ((n != None) and (not n.startswith("_") or ((flags & PRINT_OBJ_HIDE_INTERNAL) == 0))):
- if printObject(out, object[n], name=n, indent=indent+2, flags=flags, exclude=exclude, maxIndent=maxIndent):
- if ((flags & PRINT_OBJ_COMPACT) == 0):
- print >> out
- else:
- print >> out, ",",
+ for key in keys:
+ if (key != None):
+ n = key
+ if (not (isinstance(n, basestring))):
+ n = str(n)
+ if ((not n.startswith("_") or ((flags & PRINT_OBJ_HIDE_INTERNAL) == 0))):
+ if printObject(out, object[key], name=n, indent=indent+2, flags=(flags | PRINT_OBJ_INTERNAL), exclude=exclude, maxIndent=maxIndent):
+ if ((flags & PRINT_OBJ_COMPACT) == 0):
+ print >> out
+ else:
+ print >> out, ",",
print >> out, " "*indent, "}",
elif (hasattr(object, "__dict__")):
- if (exclude and object in exclude):
- print >> out, " "*indent, name, " : ", type(object), " (already printed) = ", toDiffableString(object),
+ if ((exclude != None) and object in exclude):
+ print >> out, " "*indent, name, " : ", toTypeString(object), " (already printed) = ", toDiffableString(object),
else:
if (exclude != None): exclude.append(object)
- if (name.startswith("_")):
- print >> out, " "*indent, name, " : ", type(object),
- elif (exclude and object.__dict__ in exclude):
- print >> out, " "*indent, name, " : ", type(object), " (already printed)",
+ if (name.startswith("_")): ## and ((flags & PRINT_OBJ_HIDE_INTERNAL) > 0)):
+ print >> out, " "*indent, name, " : ", toTypeString(object),
+ elif ((exclude != None) and object.__dict__ in exclude):
+ print >> out, " "*indent, name, " : ", toTypeString(object), " (already printed)",
else:
- print >> out, " "*indent, name, " : ", type(object),
+ print >> out, " "*indent, name, " : ", toTypeString(object),
if ((flags & PRINT_OBJ_GETATTR) == 0):
if ((flags & PRINT_OBJ_COMPACT) == 0):
print >> out
elif (indent < 0):
print >> out, object,
elif isinstance(object, basestring):
- if (exclude and name in exclude):
- print >> out, " "*indent, name, " : ", type(object), " of length = ", len(object), " (excluded)",
+ if ((exclude != None) and name in exclude):
+ print >> out, " "*indent, name, " : ", toTypeString(object), " of length = ", len(object), " (excluded)",
elif (len(object) > 100):
- print >> out, " "*indent, name, ":", type(object), "[%i] = %s...%s" % (len(object), object[:50], object[-50:]),
+ print >> out, " "*indent, name, ":", toTypeString(object), "[%d] = %s...%s" % (len(object), object[:50], object[-50:]),
else:
- print >> out, " "*indent, name, ":", type(object), "=", str(object),
+ print >> out, " "*indent, name, ":", toTypeString(object), "=", str(object),
+## elif (isinstance(object, float)):
+## val = str(object)
+## if (len(val) > 17):
+## val = val[:17]
+## print >> out, " "*indent, name, ":", type(object), "=", val,
else:
- print >> out, " "*indent, name, ":", type(object), "=", str(object),
+ print >> out, " "*indent, name, ":", toTypeString(object), "=", str(object),
if (finalNewLine):
print >> out
return printed