321 def convertValueToBeSet( self, obj, value ):
322 if value is None: value = ''
323 isString =
type(value)
is str
324 if isString:
325
326 return self._handleType(value)
327 elif self.isHandle(value):
328
329 return self._handleType(value.toStringProperty())
330 elif self.isConfig(value):
331 if self._handleType.isPublic:
332
333 if derives_from(value,'ConfigurableAlgTool'):
334 if not value.isInToolSvc():
335 suggestion = 'You may need to add jobOptions lines something like:' + os.linesep + \
336 'from AthenaCommon.AppMgr import ToolSvc' + os.linesep + \
337 'ToolSvc += '
338 if value.getName() == value.getType():
339 suggestion += '%s()' % value.__class__.__name__
340 else:
341 suggestion += '%s(%r)' % (value.__class__.__name__,value.getName())
342 raise RuntimeError( self.fullPropertyName(obj) +
343 ': Public tool %s is not yet in ToolSvc. %s' %
344 (value.getJobOptName(),suggestion) )
345
346 return self._handleType(value.toStringProperty())
347 elif value.hasParent( obj.getJobOptName() ):
348
349 return value
350 else:
351
352 return obj.copyChildAndSetParent( value, obj.getJobOptName() )
353 else:
354 raise TypeError( "Property %s value %r is not a %s nor a %s nor a string" % \
355 (self.fullPropertyName(obj),value,self._confTypeName,self._handleType.__name__) )
356
357 return value
358
359