]> SALOME platform Git repositories - modules/kernel.git/commitdiff
Salome HOME
Fixed bugs with not empty parameters
authorsrn <srn@opencascade.com>
Thu, 14 Dec 2006 14:50:59 +0000 (14:50 +0000)
committersrn <srn@opencascade.com>
Thu, 14 Dec 2006 14:50:59 +0000 (14:50 +0000)
src/SALOMEDS/SALOMEDS_Study.cxx
src/SALOMEDS/SALOMEDS_StudyBuilder.cxx
src/SALOMEDS/SALOMEDS_Study_i.cxx

index 210b5283346aab850ae30a766e4d7f56c010c364..207684032057b76378862da86668dd359bb7ae98 100644 (file)
@@ -244,9 +244,15 @@ _PTR(SObject) SALOMEDS_Study::CreateObjectID(const std::string& anObjectID)
   SALOMEDSClient_SObject* aSO = NULL;
   if (_isLocal) {
     SALOMEDS::Locker lock;
-    aSO = new SALOMEDS_SObject(_local_impl->CreateObjectID((char*)anObjectID.c_str()));
+    Handle(SALOMEDSImpl_SObject) aSO_impl = _local_impl->CreateObjectID((char*)anObjectID.c_str());
+    if(aSO_impl.IsNull()) return _PTR(SObject)(aSO);
+    aSO = new SALOMEDS_SObject(aSO_impl);
+  }
+  else { 
+    SALOMEDS::SObject_var aSO_impl = _corba_impl->CreateObjectID((char*)anObjectID.c_str());
+    if(CORBA::is_nil(aSO_impl)) return _PTR(SObject)(aSO);
+    aSO = new SALOMEDS_SObject(aSO_impl);
   }
-  else aSO = new SALOMEDS_SObject(_corba_impl->CreateObjectID((char*)anObjectID.c_str())); 
   return _PTR(SObject)(aSO);
 }
 
@@ -288,6 +294,7 @@ _PTR(SObject) SALOMEDS_Study::FindObjectByPath(const std::string& thePath)
 
 std::string SALOMEDS_Study::GetObjectPath(const _PTR(SObject)& theSO)
 {
+  if(!theSO) return "";
   SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
   std::string aPath;
   if (_isLocal) {
index 97fa1f88441a1f13ae0cfbbc7cbdb5df5ce1dc41..277ceebb9bd697b7a5dcb027c0fcd3d7361cd5f8 100644 (file)
@@ -41,6 +41,7 @@
 #include "SALOMEDSImpl_GenericAttribute.hxx"
 
 #include <string>
+#include <stdexcept>
 
 #include <TCollection_AsciiString.hxx> 
 #include <TDF_Attribute.hxx>
@@ -97,6 +98,8 @@ _PTR(SComponent) SALOMEDS_StudyBuilder::NewComponent(const std::string& Componen
 void SALOMEDS_StudyBuilder::DefineComponentInstance (const _PTR(SComponent)& theSCO, 
                                                     const std::string& ComponentIOR)
 {
+  if(theSCO) return;
+
   SALOMEDS_SComponent* aSCO = dynamic_cast<SALOMEDS_SComponent*>(theSCO.get());
   if (_isLocal) {
     CheckLocked();
@@ -113,6 +116,7 @@ void SALOMEDS_StudyBuilder::DefineComponentInstance (const _PTR(SComponent)& the
 
 void SALOMEDS_StudyBuilder::RemoveComponent(const _PTR(SComponent)& theSCO)
 {
+  if(!theSCO) return;
   SALOMEDS_SComponent* aSCO = dynamic_cast<SALOMEDS_SComponent*>(theSCO.get());
   if (_isLocal) {
     CheckLocked();
@@ -188,6 +192,8 @@ void SALOMEDS_StudyBuilder::AddDirectory(const std::string& thePath)
 
 void SALOMEDS_StudyBuilder::LoadWith(const _PTR(SComponent)& theSCO, const std::string& theIOR)
 {
+  if(!theSCO) return;
+
   SALOMEDS_SComponent* aSCO = dynamic_cast<SALOMEDS_SComponent*>(theSCO.get());
   CORBA::Object_var obj = _orb->string_to_object(theIOR.c_str());
   SALOMEDS::Driver_var aDriver = SALOMEDS::Driver::_narrow(obj);
@@ -217,6 +223,8 @@ void SALOMEDS_StudyBuilder::Load(const _PTR(SObject)& theSCO)
 
 void SALOMEDS_StudyBuilder::RemoveObject(const _PTR(SObject)& theSO)
 {
+  if(!theSO) return;
+
   SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
   if (_isLocal) {
     CheckLocked();
@@ -229,6 +237,8 @@ void SALOMEDS_StudyBuilder::RemoveObject(const _PTR(SObject)& theSO)
 
 void SALOMEDS_StudyBuilder::RemoveObjectWithChildren(const _PTR(SObject)& theSO)
 {
+  if(!theSO) return;
+
   SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
   if (_isLocal) {
     CheckLocked();
@@ -241,9 +251,10 @@ void SALOMEDS_StudyBuilder::RemoveObjectWithChildren(const _PTR(SObject)& theSO)
 
 _PTR(GenericAttribute) SALOMEDS_StudyBuilder::FindOrCreateAttribute(const _PTR(SObject)& theSO, 
                                                                    const std::string& aTypeOfAttribute)
-{
-  SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
+{  
   SALOMEDSClient_GenericAttribute* anAttr = NULL;
+  if(!theSO) return _PTR(GenericAttribute)(anAttr);
+  SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
   if (_isLocal) {
     SALOMEDS::Locker lock;
 
@@ -271,6 +282,9 @@ bool SALOMEDS_StudyBuilder::FindAttribute(const _PTR(SObject)& theSO,
                                          const std::string& aTypeOfAttribute)
 {
   bool ret;
+
+  if(!theSO) return false;
+
   SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
   if (_isLocal) {
     SALOMEDS::Locker lock;
@@ -290,6 +304,8 @@ bool SALOMEDS_StudyBuilder::FindAttribute(const _PTR(SObject)& theSO,
 
 void SALOMEDS_StudyBuilder::RemoveAttribute(const _PTR(SObject)& theSO, const std::string& aTypeOfAttribute)
 {
+  if(!theSO) return;
+
   SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
   if (_isLocal) {
     CheckLocked();
@@ -302,6 +318,8 @@ void SALOMEDS_StudyBuilder::RemoveAttribute(const _PTR(SObject)& theSO, const st
 
 void SALOMEDS_StudyBuilder::Addreference(const _PTR(SObject)& me, const _PTR(SObject)& thereferencedObject)
 {
+  if(!me || !thereferencedObject) return;
+
   SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(me.get());
   SALOMEDS_SObject* aRefSO = dynamic_cast<SALOMEDS_SObject*>(thereferencedObject.get());
   if (_isLocal) {
@@ -315,6 +333,7 @@ void SALOMEDS_StudyBuilder::Addreference(const _PTR(SObject)& me, const _PTR(SOb
 
 void SALOMEDS_StudyBuilder::RemoveReference(const _PTR(SObject)& me)
 {
+  if(!me) return;
   SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(me.get());
   if (_isLocal) {
     CheckLocked();
@@ -327,6 +346,9 @@ void SALOMEDS_StudyBuilder::RemoveReference(const _PTR(SObject)& me)
 
 void SALOMEDS_StudyBuilder::SetGUID(const _PTR(SObject)& theSO, const std::string& theGUID)
 {
+  if(!theSO) return;
+  if(!Standard_GUID::CheckGUIDFormat((char*)theGUID.c_str())) throw invalid_argument("Invalid GUID");
+
   SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
   if (_isLocal) {
     CheckLocked();
@@ -339,6 +361,8 @@ void SALOMEDS_StudyBuilder::SetGUID(const _PTR(SObject)& theSO, const std::strin
  
 bool SALOMEDS_StudyBuilder::IsGUID(const _PTR(SObject)& theSO, const std::string& theGUID)
 {
+  if(!theSO || !Standard_GUID::CheckGUIDFormat((char*)theGUID.c_str())) return false;
+
   SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
   bool ret;
   if (_isLocal) {
@@ -482,6 +506,8 @@ void SALOMEDS_StudyBuilder::CheckLocked()
 
 void SALOMEDS_StudyBuilder::SetName(const _PTR(SObject)& theSO, const std::string& theValue)
 {
+  if(!theSO) return;
+
   SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
   if (_isLocal) {
     CheckLocked();
@@ -494,6 +520,8 @@ void SALOMEDS_StudyBuilder::SetName(const _PTR(SObject)& theSO, const std::strin
 
 void SALOMEDS_StudyBuilder::SetComment(const _PTR(SObject)& theSO, const std::string& theValue)
 {
+  if(!theSO) return;
+
   SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
   if (_isLocal) {
     CheckLocked();
@@ -506,6 +534,8 @@ void SALOMEDS_StudyBuilder::SetComment(const _PTR(SObject)& theSO, const std::st
 
 void SALOMEDS_StudyBuilder::SetIOR(const _PTR(SObject)& theSO, const std::string& theValue)
 {
+  if(!theSO) return;
+
   SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
   if (_isLocal) {
     CheckLocked();
index 7110e933ae69254de3de986bed43f2a4268e6498..d23ace255e4bb58f504c29d9fdaddeb4cd9152d6 100644 (file)
@@ -194,6 +194,8 @@ SALOMEDS::SObject_ptr SALOMEDS_Study_i::CreateObjectID(const char* anObjectID)
 {
   SALOMEDS::Locker lock; 
 
+  if(!anObjectID || strlen(anObjectID) == 0) return SALOMEDS::SObject::_nil();
+
   Handle(SALOMEDSImpl_SObject) aSO = _impl->CreateObjectID((char*)anObjectID);
   if(aSO.IsNull()) return SALOMEDS::SObject::_nil();