[mapguide-commits] r7594 - in branches/2.4/MgDev: . Common/Foundation/Exception Common/Stylization Server/src/Services/Feature Server/src/Services/Mapping Server/src/UnitTesting Web/src/mapadmin/HelpDocs Web/src/mapviewerphp Web/src/viewerfiles

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Mon Jun 10 03:29:32 PDT 2013


Author: jng
Date: 2013-06-10 03:29:32 -0700 (Mon, 10 Jun 2013)
New Revision: 7594

Modified:
   branches/2.4/MgDev/
   branches/2.4/MgDev/Common/Foundation/Exception/Exception.cpp
   branches/2.4/MgDev/Common/Stylization/SE_Renderer.cpp
   branches/2.4/MgDev/Server/src/Services/Feature/OpUpdateFeatures.cpp
   branches/2.4/MgDev/Server/src/Services/Feature/ServerFeatureUtil.cpp
   branches/2.4/MgDev/Server/src/Services/Mapping/MappingUtil.cpp
   branches/2.4/MgDev/Server/src/UnitTesting/TestFeatureService.cpp
   branches/2.4/MgDev/Server/src/UnitTesting/TestFeatureService.h
   branches/2.4/MgDev/Web/src/mapadmin/HelpDocs/
   branches/2.4/MgDev/Web/src/mapadmin/HelpDocs/configuring_servers.htm
   branches/2.4/MgDev/Web/src/mapviewerphp/quickplotgeneratepicture.php
   branches/2.4/MgDev/Web/src/viewerfiles/
   branches/2.4/MgDev/Web/src/viewerfiles/quickplot.js
Log:
#2218, #2251: Backport to 2.4


Property changes on: branches/2.4/MgDev
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/2.5/MgDev:7349,7396,7531,7569-7570,7574
/sandbox/rfc94:5099-5163
/trunk/MgDev:6611,6690,6746,7230-7231
   + /branches/2.5/MgDev:7349,7396,7531,7569-7570,7574
/sandbox/rfc94:5099-5163
/trunk/MgDev:6611,6690,6746,7230-7231,7373,7452

Modified: branches/2.4/MgDev/Common/Foundation/Exception/Exception.cpp
===================================================================
--- branches/2.4/MgDev/Common/Foundation/Exception/Exception.cpp	2013-06-09 16:01:40 UTC (rev 7593)
+++ branches/2.4/MgDev/Common/Foundation/Exception/Exception.cpp	2013-06-10 10:29:32 UTC (rev 7594)
@@ -534,6 +534,8 @@
         m_details = GetExceptionMessage(locale);
         m_details += L"\n";
         m_details += FormatDetails(locale);
+        m_details += L"\n";
+        m_details += FormatStackTrace(locale);
     }
 
     MG_CATCH_AND_RELEASE()


Property changes on: branches/2.4/MgDev/Common/Stylization/SE_Renderer.cpp
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/2.5/MgDev/Common/Stylization/SE_Renderer.cpp:7349,7396,7531,7569-7570,7574
/sandbox/adsk/2.4j/Common/Stylization/SE_Renderer.cpp:6327-6445
/sandbox/rfc94/Common/Stylization/SE_Renderer.cpp:5099-5163
/trunk/MgDev/Common/Stylization/SE_Renderer.cpp:6250-6326,6611,6690,6746,7230-7231
   + /branches/2.5/MgDev/Common/Stylization/SE_Renderer.cpp:7349,7396,7531,7569-7570,7574
/sandbox/adsk/2.4j/Common/Stylization/SE_Renderer.cpp:6327-6445
/sandbox/rfc94/Common/Stylization/SE_Renderer.cpp:5099-5163
/trunk/MgDev/Common/Stylization/SE_Renderer.cpp:6250-6326,6611,6690,6746,7230-7231,7373,7452

Modified: branches/2.4/MgDev/Server/src/Services/Feature/OpUpdateFeatures.cpp
===================================================================
--- branches/2.4/MgDev/Server/src/Services/Feature/OpUpdateFeatures.cpp	2013-06-09 16:01:40 UTC (rev 7593)
+++ branches/2.4/MgDev/Server/src/Services/Feature/OpUpdateFeatures.cpp	2013-06-10 10:29:32 UTC (rev 7594)
@@ -55,6 +55,7 @@
     ACE_DEBUG((LM_DEBUG, ACE_TEXT("  (%t) MgOpUpdateFeatures::Execute()\n")));
 
     STRING partialFailureMsg;
+    Ptr<MgPropertyCollection> rowsAffected;
     MG_LOG_OPERATION_MESSAGE(L"UpdateFeatures");
 
     MG_FEATURE_SERVICE_TRY()
@@ -89,11 +90,8 @@
         Validate();
 
         // Execute the operation
-        Ptr<MgPropertyCollection> rowsAffected = m_service->UpdateFeatures(resource, commands, useTransaction);
+        rowsAffected = m_service->UpdateFeatures(resource, commands, useTransaction);
 
-        // Write the response
-        EndExecution(rowsAffected);
-
         // #649: Exceptions are only thrown in transactional cases (which will never reach here). For non-transactional cases, 
         // we check for any MgStringProperty instances. These are "serialized" FDO exception messages indicating failure for that 
         // particular command. We can't throw for non-transactional cases, instead we put the onus on the consuming caller to do 
@@ -109,6 +107,13 @@
                 break;
             }
         }
+
+        if (mgException == NULL && partialFailureMsg.empty())
+        {
+            // Only Write the response if there no Fdo Exception
+            // if there is an exception, Response will be written by MgFeatureServiceHandler::ProcessOperation catching it
+            EndExecution(rowsAffected);
+        }
     }
     else
     {
@@ -134,13 +139,18 @@
     {
         // Failed operation
         MG_LOG_OPERATION_MESSAGE_ADD_STRING(MgResources::Failure.c_str());
-        // Only thrown exceptions are logged, so for this partial failure to be logged into Error.log it needs to be
-        // wrapped in an MgException to be thrown at the end of this method
+        // Only thrown exceptions are logged, so for this partial failure to be logged into Error.log
+        // we have to log it here
         if (mgException == NULL && !partialFailureMsg.empty())
         {
-            MgStringCollection args;
-            args.Add(partialFailureMsg);
-            mgException = new MgFeatureServiceException(L"MgOpUpdateFeatures.Execute", __LINE__, __WFILE__, NULL, L"MgFormatInnerExceptionMessage", &args);
+            //NOTE: Serialized MgFdoException already has the stack trace, so stub an empty string to
+            //satisfy the logging macro
+            STRING sTrace = L"";
+            MG_LOG_EXCEPTION_ENTRY(partialFailureMsg, sTrace);
+
+            //DO NOT THROW A NEW EXCEPTION! We must respect the original contract of the API as perceived by the
+            //calling web tier code. That is: Write out the original MgPropertyCollection
+            EndExecution(rowsAffected);
         }
     }
 
@@ -148,4 +158,5 @@
     MG_LOG_OPERATION_MESSAGE_ACCESS_ENTRY();
 
     MG_FEATURE_SERVICE_THROW()
+
 }


Property changes on: branches/2.4/MgDev/Server/src/Services/Feature/ServerFeatureUtil.cpp
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/2.5/MgDev/Server/src/Services/Feature/ServerFeatureUtil.cpp:7349,7396,7531,7569-7570,7574
/sandbox/adsk/2.4j/Server/src/Services/Feature/ServerFeatureUtil.cpp:6327-6481
/sandbox/rfc94/Server/src/Services/Feature/ServerFeatureUtil.cpp:5099-5163
/trunk/MgDev/Server/src/Services/Feature/ServerFeatureUtil.cpp:6250-6326,6611,6690,6746,7230-7231
   + /branches/2.5/MgDev/Server/src/Services/Feature/ServerFeatureUtil.cpp:7349,7396,7531,7569-7570,7574
/sandbox/adsk/2.4j/Server/src/Services/Feature/ServerFeatureUtil.cpp:6327-6481
/sandbox/rfc94/Server/src/Services/Feature/ServerFeatureUtil.cpp:5099-5163
/trunk/MgDev/Server/src/Services/Feature/ServerFeatureUtil.cpp:6250-6326,6611,6690,6746,7230-7231,7373,7452


Property changes on: branches/2.4/MgDev/Server/src/Services/Mapping/MappingUtil.cpp
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/2.5/MgDev/Server/src/Services/Mapping/MappingUtil.cpp:7349,7396,7531,7569-7570,7574
/sandbox/adsk/2.4j/Server/src/Services/Mapping/MappingUtil.cpp:6327-6535
/sandbox/rfc94/Server/src/Services/Mapping/MappingUtil.cpp:5099-5163
/trunk/MgDev/Server/src/Services/Mapping/MappingUtil.cpp:6250-6326,6611,6690,6746,7230-7231
   + /branches/2.5/MgDev/Server/src/Services/Mapping/MappingUtil.cpp:7349,7396,7531,7569-7570,7574
/sandbox/adsk/2.4j/Server/src/Services/Mapping/MappingUtil.cpp:6327-6535
/sandbox/rfc94/Server/src/Services/Mapping/MappingUtil.cpp:5099-5163
/trunk/MgDev/Server/src/Services/Mapping/MappingUtil.cpp:6250-6326,6611,6690,6746,7230-7231,7373,7452

Modified: branches/2.4/MgDev/Server/src/UnitTesting/TestFeatureService.cpp
===================================================================
--- branches/2.4/MgDev/Server/src/UnitTesting/TestFeatureService.cpp	2013-06-09 16:01:40 UTC (rev 7593)
+++ branches/2.4/MgDev/Server/src/UnitTesting/TestFeatureService.cpp	2013-06-10 10:29:32 UTC (rev 7594)
@@ -270,6 +270,9 @@
         Ptr<MgResourceIdentifier> fsres9 = new MgResourceIdentifier(L"Library://UnitTests/Data/GetIdentityPropertiesTest.FeatureSource");
         if (pService->ResourceExists(fsres9)) pService->DeleteResource(fsres9);
 
+        Ptr<MgResourceIdentifier> fsres10 = new MgResourceIdentifier(L"Library://UnitTests/Data/TestInsert.FeatureSource");
+        if (pService->ResourceExists(fsres10)) pService->DeleteResource(fsres10);
+
         #ifdef _DEBUG
         ACE_DEBUG((LM_INFO, ACE_TEXT("TestFeatureService::TestEnd()\n")));
         MgFdoConnectionManager* pFdoConnectionManager = MgFdoConnectionManager::GetInstance();
@@ -2366,7 +2369,7 @@
 
 void TestFeatureService::TestCase_SavePoint()
 {
-     try
+    try
     {
         MgServiceManager* serviceManager = MgServiceManager::GetInstance();
         if(serviceManager == 0)
@@ -2465,6 +2468,145 @@
 ///----------------------------------------------------------------------------
 /// Test Case Description:
 ///
+/// This test case exercises the UpdateFeatures API for insertion
+///----------------------------------------------------------------------------
+void TestFeatureService::TestCase_UpdateFeaturesInsert()
+{
+    try
+    {
+        MgServiceManager* serviceManager = MgServiceManager::GetInstance();
+        if(serviceManager == 0)
+        {
+            throw new MgNullReferenceException(L"TestFeatureService.TestCase_SavePoint", __LINE__, __WFILE__, NULL, L"", NULL);
+        }
+
+        Ptr<MgFeatureService> pService = dynamic_cast<MgFeatureService*>(serviceManager->RequestService(MgServiceType::FeatureService));
+        if (pService == 0)
+        {
+            throw new MgServiceNotAvailableException(L"TestFeatureService.TestCase_SavePoint", __LINE__, __WFILE__, NULL, L"", NULL);
+        }
+
+        Ptr<MgResourceIdentifier> featureSource = new MgResourceIdentifier(L"Library://UnitTests/Data/TestInsert.FeatureSource");
+
+        //Create our test data store (SQLite)
+        STRING scName = L"Default";
+        STRING srsWkt = L"LOCAL_CS[\"Non-Earth (Meter)\",LOCAL_DATUM[\"Local Datum\",0],UNIT[\"Meter\", 1],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]]";
+        
+        //Setup schema
+        Ptr<MgFeatureSchema> schema = new MgFeatureSchema(L"Default", L"Test schema for TestCase_2218");
+        Ptr<MgClassDefinition> klass = new MgClassDefinition();
+        klass->SetName(L"TestClass");
+        Ptr<MgPropertyDefinitionCollection> clsProps = klass->GetProperties();
+        Ptr<MgPropertyDefinitionCollection> idProps = klass->GetIdentityProperties();
+        
+        //ID
+        Ptr<MgDataPropertyDefinition> idProperty = new MgDataPropertyDefinition(L"ID");
+        idProperty->SetDataType(MgPropertyType::Int32);
+        idProperty->SetAutoGeneration(false);
+        idProperty->SetNullable(false);
+        clsProps->Add(idProperty);
+        idProps->Add(idProperty);
+        //Name
+        Ptr<MgDataPropertyDefinition> nameProperty = new MgDataPropertyDefinition(L"Name");
+        nameProperty->SetDataType(MgPropertyType::String);
+        nameProperty->SetLength(255);
+        nameProperty->SetNullable(true);
+        clsProps->Add(nameProperty);
+        //Geom
+        Ptr<MgGeometricPropertyDefinition> geomProperty = new MgGeometricPropertyDefinition(L"Geom");
+        geomProperty->SetSpatialContextAssociation(scName);
+        clsProps->Add(geomProperty);
+
+        klass->SetDefaultGeometryPropertyName(L"Geom");
+
+        Ptr<MgClassDefinitionCollection> classes = schema->GetClasses();
+        classes->Add(klass);
+
+        //Create the feature source
+        Ptr<MgFileFeatureSourceParams> fileParams = new MgFileFeatureSourceParams(L"OSGeo.SQLite", scName, srsWkt, schema);
+        pService->CreateFeatureSource(featureSource, fileParams);
+
+        //Set up insert command
+        Ptr<MgFeatureCommandCollection> commands = new MgFeatureCommandCollection();
+        Ptr<MgPropertyCollection> propVals = new MgPropertyCollection();
+        
+        Ptr<MgInt32Property> idVal = new MgInt32Property(L"ID", 1);
+        Ptr<MgStringProperty> nameVal = new MgStringProperty(L"Name", L"Foo");
+        
+        Ptr<MgWktReaderWriter> wktRw = new MgWktReaderWriter();
+        Ptr<MgAgfReaderWriter> agfRw = new MgAgfReaderWriter();
+        Ptr<MgGeometry> geom = wktRw->Read(L"POINT (1 2)");
+        Ptr<MgByteReader> agf = agfRw->Write(geom);
+        Ptr<MgGeometryProperty> geomVal = new MgGeometryProperty(L"Geom", agf);
+
+        propVals->Add(idVal);
+        propVals->Add(nameVal);
+        propVals->Add(geomVal);
+
+        Ptr<MgInsertFeatures> insert = new MgInsertFeatures(L"Default:TestClass", propVals);
+        commands->Add(insert);
+
+        //Execute insert. Should be fine
+        Ptr<MgPropertyCollection> result = pService->UpdateFeatures(featureSource, commands, true);
+        CPPUNIT_ASSERT(result->GetCount() == 1);
+        INT32 i = 0;
+        Ptr<MgProperty> resItem1 = result->GetItem(i);
+        CPPUNIT_ASSERT(resItem1->GetPropertyType() == MgPropertyType::Feature);
+        Ptr<MgFeatureReader> rdr = ((MgFeatureProperty*)resItem1.p)->GetValue();
+        rdr->Close();
+
+        //Change name, retain same id
+        nameVal->SetValue(L"Bar");
+
+        //Execute again, expect MgFdoException due to constraint violation
+        CPPUNIT_ASSERT_THROW_MG(result = pService->UpdateFeatures(featureSource, commands, true), MgFdoException*);
+        
+        //Expect one inserted result
+        Ptr<MgFeatureQueryOptions> query = new MgFeatureQueryOptions();
+        Ptr<MgFeatureReader> qryReader = pService->SelectFeatures(featureSource, L"Default:TestClass", query);
+        INT32 count = 0;
+        while (qryReader->ReadNext()) { count++; }
+        qryReader->Close();
+        CPPUNIT_ASSERT(1 == count);
+
+        //Execute again, useTransaction = false. Should not throw exception, but log
+        //the error as a MgStringProperty
+        result = pService->UpdateFeatures(featureSource, commands, false);
+        CPPUNIT_ASSERT(result->GetCount() == 1);
+        resItem1 = result->GetItem(i);
+        CPPUNIT_ASSERT(resItem1->GetPropertyType() == MgPropertyType::String); //Errors are of type String
+
+        //Use new id
+        idVal->SetValue(2);
+
+        //Should be fine now
+        result = pService->UpdateFeatures(featureSource, commands, true);
+        CPPUNIT_ASSERT(result->GetCount() == 1);
+        resItem1 = result->GetItem(i);
+        CPPUNIT_ASSERT(resItem1->GetPropertyType() == MgPropertyType::Feature);
+        rdr = ((MgFeatureProperty*)resItem1.p)->GetValue();
+        rdr->Close();
+    }
+    catch(MgException* e)
+    {
+        STRING message = e->GetDetails(TEST_LOCALE);
+        SAFE_RELEASE(e);
+        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+    }
+    catch(FdoException* e)
+    {
+        FDO_SAFE_RELEASE(e);
+        CPPUNIT_FAIL("FdoException occurred");
+    }
+    catch(...)
+    {
+        throw;
+    }
+}
+
+///----------------------------------------------------------------------------
+/// Test Case Description:
+///
 /// This test case exercises the FDO join optimization
 ///----------------------------------------------------------------------------
 void TestFeatureService::TestCase_JoinFdoFeatures()

Modified: branches/2.4/MgDev/Server/src/UnitTesting/TestFeatureService.h
===================================================================
--- branches/2.4/MgDev/Server/src/UnitTesting/TestFeatureService.h	2013-06-09 16:01:40 UTC (rev 7593)
+++ branches/2.4/MgDev/Server/src/UnitTesting/TestFeatureService.h	2013-06-10 10:29:32 UTC (rev 7594)
@@ -39,9 +39,8 @@
     CPPUNIT_TEST(TestCase_ApplySchema);
     CPPUNIT_TEST(TestCase_SelectFeatures);
     CPPUNIT_TEST(TestCase_SelectAggregate);
-//    CPPUNIT_TEST(TestCase_UpdateFeatures);
+    CPPUNIT_TEST(TestCase_UpdateFeaturesInsert);
     CPPUNIT_TEST(TestCase_UpdateFeaturesPartialFailure);
-//  TODO write test case when know how to make command collection
     CPPUNIT_TEST(TestCase_ExecuteSqlQuery);
     CPPUNIT_TEST(TestCase_ExecuteSqlNonQuery);
     CPPUNIT_TEST(TestCase_GetSpatialContexts);
@@ -62,7 +61,6 @@
     CPPUNIT_TEST(TestCase_SavePoint);
     CPPUNIT_TEST(TestCase_JoinFdoFeatures);
     CPPUNIT_TEST(TestCase_BenchmarkSqliteJoin);
-    
     CPPUNIT_TEST(TestCase_BenchmarkSqliteAggregateJoin);
 
     CPPUNIT_TEST(TestEnd); // This must be the very last unit test
@@ -89,7 +87,7 @@
     void TestCase_ApplySchema();
     void TestCase_SelectFeatures();
     void TestCase_SelectAggregate();
-//    void TestCase_UpdateFeatures();
+    void TestCase_UpdateFeaturesInsert();
     void TestCase_UpdateFeaturesPartialFailure();
     void TestCase_ExecuteSqlQuery();
     void TestCase_ExecuteSqlNonQuery();


Property changes on: branches/2.4/MgDev/Web/src/mapadmin/HelpDocs
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/2.5/MgDev/Web/src/mapadmin/HelpDocs:7349,7396,7531,7569-7570,7574
/sandbox/adsk/2.4j/Web/src/mapadmin/HelpDocs:6413
/sandbox/rfc94/Web/src/mapadmin/HelpDocs:5099-5163
/trunk/MgDev/Web/src/mapadmin/HelpDocs:6611,6690,6746,7230-7231
   + /branches/2.5/MgDev/Web/src/mapadmin/HelpDocs:7349,7396,7531,7569-7570,7574
/sandbox/adsk/2.4j/Web/src/mapadmin/HelpDocs:6413
/sandbox/rfc94/Web/src/mapadmin/HelpDocs:5099-5163
/trunk/MgDev/Web/src/mapadmin/HelpDocs:6611,6690,6746,7230-7231,7373,7452


Property changes on: branches/2.4/MgDev/Web/src/mapadmin/HelpDocs/configuring_servers.htm
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/2.5/MgDev/Web/src/mapadmin/HelpDocs/configuring_servers.htm:7349,7396,7531,7569-7570,7574
/sandbox/adsk/2.4j/Web/src/mapadmin/HelpDocs/configuring_servers.htm:6327-6435
/sandbox/rfc94/Web/src/mapadmin/HelpDocs/configuring_servers.htm:5099-5163
/trunk/MgDev/Web/src/mapadmin/HelpDocs/configuring_servers.htm:6250-6326,6611,6690,6746,7230-7231
   + /branches/2.5/MgDev/Web/src/mapadmin/HelpDocs/configuring_servers.htm:7349,7396,7531,7569-7570,7574
/sandbox/adsk/2.4j/Web/src/mapadmin/HelpDocs/configuring_servers.htm:6327-6435
/sandbox/rfc94/Web/src/mapadmin/HelpDocs/configuring_servers.htm:5099-5163
/trunk/MgDev/Web/src/mapadmin/HelpDocs/configuring_servers.htm:6250-6326,6611,6690,6746,7230-7231,7373,7452


Property changes on: branches/2.4/MgDev/Web/src/mapviewerphp/quickplotgeneratepicture.php
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/2.5/MgDev/Web/src/mapviewerphp/quickplotgeneratepicture.php:7349,7396,7531,7569-7570,7574
/sandbox/adsk/2.4jbeta2/Web/src/mapviewerphp/quickplotgeneratepicture.php:6334-6374
/sandbox/rfc94/Web/src/mapviewerphp/quickplotgeneratepicture.php:5099-5163
/trunk/MgDev/Web/src/mapviewerphp/quickplotgeneratepicture.php:6611,6690,6746,7230-7231
   + /branches/2.5/MgDev/Web/src/mapviewerphp/quickplotgeneratepicture.php:7349,7396,7531,7569-7570,7574
/sandbox/adsk/2.4jbeta2/Web/src/mapviewerphp/quickplotgeneratepicture.php:6334-6374
/sandbox/rfc94/Web/src/mapviewerphp/quickplotgeneratepicture.php:5099-5163
/trunk/MgDev/Web/src/mapviewerphp/quickplotgeneratepicture.php:6611,6690,6746,7230-7231,7373,7452


Property changes on: branches/2.4/MgDev/Web/src/viewerfiles
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/2.5/MgDev/Web/src/viewerfiles:7349,7396,7531,7569-7570,7574
/sandbox/adsk/2.2gp/Web/src/viewerfiles:5392
/trunk/MgDev/Web/src/viewerfiles:6611,6690,6746,7230-7231
   + /branches/2.5/MgDev/Web/src/viewerfiles:7349,7396,7531,7569-7570,7574
/sandbox/adsk/2.2gp/Web/src/viewerfiles:5392
/trunk/MgDev/Web/src/viewerfiles:6611,6690,6746,7230-7231,7373,7452


Property changes on: branches/2.4/MgDev/Web/src/viewerfiles/quickplot.js
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/2.5/MgDev/Web/src/viewerfiles/quickplot.js:7349,7396,7531,7569-7570,7574
/sandbox/adsk/2.2gp/Web/src/viewerfiles/quickplot.js:5392
/sandbox/adsk/2.4j/Web/src/viewerfiles/quickplot.js:6327-6474
/trunk/MgDev/Web/src/viewerfiles/quickplot.js:6250-6326,6611,6690,6746,7230-7231
   + /branches/2.5/MgDev/Web/src/viewerfiles/quickplot.js:7349,7396,7531,7569-7570,7574
/sandbox/adsk/2.2gp/Web/src/viewerfiles/quickplot.js:5392
/sandbox/adsk/2.4j/Web/src/viewerfiles/quickplot.js:6327-6474
/trunk/MgDev/Web/src/viewerfiles/quickplot.js:6250-6326,6611,6690,6746,7230-7231,7373,7452



More information about the mapguide-commits mailing list