////////////////////////////////////////////////////
@Override
public ObjectAdapter mappedObject(final String oidStr) {
final TypedOid typedOid = getOidMarshaller().unmarshal(oidStr, TypedOid.class);
// final char type = oidStr.charAt(0);
//
// // Pdom.todo.ToDoItem@OID:TODO:6
// final String[] split = oidStr.split("@");
// final String oidData = split[1];
// final String[] oidDataArray = oidData.split(":");
// final String objectType = oidDataArray[1];
// final String aggregatedId = split.length > 2?split[2]:null;
//
// final ObjectSpecification spec = getSpecificationLoader().lookupByObjectType(objectType);
//if ((type == 'T')) {
if (typedOid.isTransient()) {
TransientRootAdapterMapping mapping = sessionTransients.get(oidStr);
if (mapping == null) {
mapping = requestTransients.get(oidStr);
}
if (mapping == null) {
// create as a (transient) root adapter
// Oid oid = deString(objectType, oidData, State.TRANSIENT);
//return getPersistenceSession().recreateAdapter(oid, pojo);
return getAdapterManager().adapterFor(typedOid);
}
final ObjectAdapter mappedTransientObject = mapping.getObject();
if(LOG.isDebugEnabled()) {
LOG.debug("retrieved " + mappedTransientObject.getOid() + " for " + oidStr);
}
return mappedTransientObject;
}
try {
//LOG.debug("decoding " + oidData);
//if (aggregatedId != null) {
if(typedOid instanceof AggregatedOid) {
// final RootOid parentOid = deString(objectType, oidData, State.PERSISTENT);
// Oid aggregatedOid = new AggregatedOid(objectType, parentOid, aggregatedId);
AggregatedOid aggregatedOid = (AggregatedOid) typedOid;
final TypedOid parentOid = aggregatedOid.getParentOid();
getPersistenceSession().loadObject(parentOid);
return getAdapterManager().getAdapterFor(aggregatedOid);
}