implement singleton as requirement
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
This commit is contained in:
		
					parent
					
						
							
								efedfbf47c
							
						
					
				
			
			
				commit
				
					
						d0123acc2a
					
				
			
		
					 1 changed files with 12 additions and 9 deletions
				
			
		| 
						 | 
					@ -156,19 +156,22 @@ class Emulator(object):
 | 
				
			||||||
                self.log.debug("Recording requirement: " + requirement)
 | 
					                self.log.debug("Recording requirement: " + requirement)
 | 
				
			||||||
                requirement_parts = requirement.split(os.sep, 1)
 | 
					                requirement_parts = requirement.split(os.sep, 1)
 | 
				
			||||||
                requirement_type_name = requirement_parts[0]
 | 
					                requirement_type_name = requirement_parts[0]
 | 
				
			||||||
                requirement_object_id = requirement_parts[1]
 | 
					                try:
 | 
				
			||||||
 | 
					                    requirement_object_id = requirement_parts[1]
 | 
				
			||||||
 | 
					                except IndexError:
 | 
				
			||||||
 | 
					                    # no object id, assume singleton
 | 
				
			||||||
 | 
					                    requirement_object_id = 'singleton'
 | 
				
			||||||
                
 | 
					                
 | 
				
			||||||
                # FIXME: Add support for omitted object id == singleton
 | 
					                # Remove leading / from object id
 | 
				
			||||||
                #if len(requirement_parts) == 1:
 | 
					 | 
				
			||||||
                #except IndexError:
 | 
					 | 
				
			||||||
                #    # no object id, must be singleton
 | 
					 | 
				
			||||||
                #    requirement_object_id = 'singleton'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                # Remove / if existent in object id
 | 
					 | 
				
			||||||
                requirement_object_id = requirement_object_id.lstrip('/')
 | 
					                requirement_object_id = requirement_object_id.lstrip('/')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                # Instantiate type which fails if type does not exist
 | 
					                # Instantiate type which fails if type does not exist
 | 
				
			||||||
                requirement_type = core.Type(self.type_base_path, requirement_type_name)
 | 
					                requirement_type = core.Type(self.type_base_path, requirement_type_name)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if requirement_object_id == 'singleton' \
 | 
				
			||||||
 | 
					                    and not requirement_type.is_singleton:
 | 
				
			||||||
 | 
					                    raise IllegalRequirementError(requirement, "Missing object_id and type is not a singleton.")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                # Instantiate object which fails if the object_id is illegal
 | 
					                # Instantiate object which fails if the object_id is illegal
 | 
				
			||||||
                requirement_object = core.Object(requirement_type, self.object_base_path, requirement_object_id)
 | 
					                requirement_object = core.Object(requirement_type, self.object_base_path, requirement_object_id)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue