How to Get Shared TeaObject Along with All the References

A TeaObject has references to all its members. When you get a TeaObject from the database, you have the option to get the high-level object or you can request the object with all the references included (Closure).

To retrieve a TeaObject Closure use the following code:

@TeaOperation(name = "getJohnClosure", description = "getJohnClosure")
public String getJohnClosure() throws IOException {    
TeaPersistence persistence = ShareReaderAgent.server.getPersistence();    
Map<String, JSONObject> johnClosure = persistence.getObjectClosure("ShareWriterAgent", "Person", "john");    
return Joiner.on(",").join(johnClosure.values());
}

The object returned by this method is in JSON format. Below is an example that is returned by the sample code above:

[     
{        
  "@objectId":"ShareWriterAgent::Person:Peter",      
  "name":"Peter",      
  "description":"Peter Person",      
  "key":"Peter",      
  "config":{           
     "status":"Single",         
     "address":"3303 Hillview Avenue"      
},      
  "members":[           
     "ShareWriterAgent::Person:Adam",         
     "ShareWriterAgent::Person:Sarah"      
],      
  "references":[           
    {              
     "name":"cousins",            
     "elements":[                 
       "ShareWriterAgent::Person:Brian",               
       "ShareWriterAgent::Person:Anna"            
       ]         
     },         
     {              
       "name":"parent",            
       "elements":[                 
         "ShareWriterAgent::Person:John"            
       ]         
     },         
     {              
       "name":"cars",            
       "elements":[                 
         "ShareWriterAgent::Car:BMW"            
         ]         
       }      
      ]   
     },   
     {        
       "@objectId":"ShareWriterAgent::Person:Adam",      
       "name":"Adam",      
       "description":"Adam Person",      
       "key":"Adam",      
       "config":{           
          "status":"Single",         
          "address":"3303 Hillview Avenue"      
        }   
     },   
     {        
       "@objectId":"ShareWriterAgent::Person:Sarah",      
       "name":"Sarah",      
       "description":"Sarah Person",      
       "key":"Sarah",      
       "config":{           
          "status":"Single",         
          "address":"3303 Hillview Avenue"      
         }   
     },   
     {        
       "@objectId":"ShareWriterAgent::Person:Brian",      
       "name":"Brian",      
       "description":"Brian Person",      
       "key":"Brian",      
       "config":{           
          "status":"Single",         
          "address":"3303 Hillview Avenue"      
       }   
     },   
     {        
       "@objectId":"ShareWriterAgent::Person:Anna",      
       "name":"Anna",      
       "description":"Anna Person",      
       "key":"Anna",      
       "config":{           
          "status":"Single",         
          "address":"3303 Hillview Avenue"      
        }   
     },   
     {        
       "@objectId":"ShareWriterAgent::Person:John",      
       "name":"John",      
       "description":"John Person",      
       "key":"John",      
       "config":{           
          "status":"Single",         
          "address":"3303 Hillview Avenue"      
         }   
     },   
     {        
       "@objectId":"ShareWriterAgent::Car:BMW",      
       "name":"BMW",      
       "description":"BMW Car",      
       "key":"BMW",      
       "config":{           
          "color":"blue",         
          "license":"6VHM435"      
        }   
      }
     ]