*implement basic parser exception
authorkonrad <konrad@6e3c4bff-ac9f-4ac1-96c5-d2ea494d3e33>
Tue, 17 Feb 2009 18:10:53 +0000 (18:10 +0000)
committerkonrad <konrad@6e3c4bff-ac9f-4ac1-96c5-d2ea494d3e33>
Tue, 17 Feb 2009 18:10:53 +0000 (18:10 +0000)
*merge lines of development

git-svn-id: https://silmor.de/svn/softmagic/smoke/trunk@270 6e3c4bff-ac9f-4ac1-96c5-d2ea494d3e33

woc/phpout.cpp
woc/processor.cpp
woc/processor.h
www/inc/wbase/autoload.php
www/inc/wbase/exception.php [new file with mode: 0644]

index 19a1e14..8a817cd 100644 (file)
@@ -235,6 +235,7 @@ void WocPHPServerOut::newClass(const WocClass&cls)
        //implement enums
        QStringList k=cls.enumTypes();
        for(int i=0;i<k.size();i++){
+               code+="//enum "+k[i]+"\n";
                QList<QPair<QString,int> >ev=cls.enumValues(k[i]);
                for(int j=0;j<ev.size();j++)
                        code+="const "+ev[j].first+"="+QString::number(ev[j].second)+";\n";
@@ -256,7 +257,9 @@ void WocPHPServerOut::newClass(const WocClass&cls)
        
        //implement de-serializer
        code+="\nstatic function fromString($txt){\n\t$xml=new DomDocument;\n";
-       code+="\t$xml->loadXml(trim($txt));\n\treturn self::fromXml($xml,$xml->documentElement);\n}\n";
+       code+="\tif(!$xml->loadXml(trim($txt)))";
+       code+="\n\t\tthrow WobXmlException(\"Unable to deserialize object of type "+cn+".\");";
+       code+="\n\treturn self::fromXml($xml,$xml->documentElement);\n}\n";
        code+="static function fromXml($xml,$elem){\n\t$data=array();\n";
        k=cls.propertyNames();
        for(int i=0;i<k.size();i++){
@@ -269,7 +272,6 @@ void WocPHPServerOut::newClass(const WocClass&cls)
        code+="\n//end of class\n};\n";
        
        
-       //write & close
        tf.write(code.toAscii());
        tf.write(PHPEND);
        tf.close();
index 94e7c84..f17fd0a 100644 (file)
@@ -430,13 +430,6 @@ bool WocClass::hasProperty(QString p)const
        return false;
 }
 
-bool WocClass::isAbstract()const
-{
-       for(int i=0;i<m_props.size();i++)
-               if(m_props[i].isabstract)return true;
-       return m_abstract;
-}
-
 QStringList WocClass::propertyNames()const
 {
        QStringList r;
@@ -448,27 +441,31 @@ QStringList WocClass::propertyNames()const
 QString WocClass::propertyType(QString p)const
 {
        for(int i=0;i<m_props.size();i++)
-               if(p==m_props[i].name)
-                       return m_props[i].type;
+               if(m_props[i].name==p)return m_props[i].type;
        return "";
 }
 
-bool WocClass::propertyIsId(QString p)const
+bool WocClass::propertyIsIdentity(QString p)const
 {
        for(int i=0;i<m_props.size();i++)
-               if(p==m_props[i].name)
-                       return m_props[i].isid;
+               if(m_props[i].name==p)return m_props[i].isid;
        return false;
 }
 
 bool WocClass::propertyIsAbstract(QString p)const
 {
        for(int i=0;i<m_props.size();i++)
-               if(p==m_props[i].name)
-                       return m_props[i].isabstract;
+               if(m_props[i].name==p)return m_props[i].isabstract;
        return false;
 }
 
+bool WocClass::isAbstract()const
+{
+       for(int i=0;i<m_props.size();i++)
+               if(m_props[i].isabstract)return true;
+       return m_abstract;
+}
+
 
 /******************************************************************************
  * WocTable
index 8b47760..b7f92b4 100644 (file)
@@ -34,7 +34,7 @@ class WocClass
                bool hasProperty(QString)const;
                QStringList propertyNames()const;
                QString propertyType(QString)const;
-               bool propertyIsId(QString)const;
+               bool propertyIsIdentity(QString)const;
                bool propertyIsAbstract(QString)const;
                
                bool isAbstract()const;
@@ -59,7 +59,7 @@ class WocClass
                QList<s_prop> m_props;
                QMap<QString,QList<QPair<QString,QString> > >m_maps;
                QMap<QString,QList<QPair<QString,int> > >m_enumvals;
-               QMap<QString,QStringList>m_serial;
+               QMap<QString,QStringList> m_serial;
 };
 
 class WocTable
index 3c446b9..1230229 100644 (file)
@@ -11,6 +11,7 @@
 
 $AUTOCLASS["WobTable"]="inc/wbase/table.php";
 $AUTOCLASS["WobSchemaBase"]="inc/wbase/schema.php";
+$AUTOCLASS["WobXmlException"]="inc/wbase/exception.php";
 $AUTOCLASS["WObject"]="inc/wbase/object.php";
 
 function __autoload($cname)
diff --git a/www/inc/wbase/exception.php b/www/inc/wbase/exception.php
new file mode 100644 (file)
index 0000000..732ac74
--- /dev/null
@@ -0,0 +1,16 @@
+<?
+//
+// PHP Implementation: exception
+//
+// Description: 
+//
+//
+// Author: Konrad Rosenbaum <konrad@silmor.de>, (C) 2009
+//
+// Copyright: See README/COPYING files that come with this distribution
+//
+//
+
+class WobXmlException extends Exception {};
+
+?>
\ No newline at end of file