}
}
private void parse_corbaloc(String object_reference)
{
CorbaLoc corbaLoc = new CorbaLoc(orb, object_reference);
IOR ior = null;
if (corbaLoc.rir())
{
try
{
org.omg.CORBA.Object obj =
orb.resolve_initial_references(corbaLoc.getKeyString());
if (obj == null)
{
throw new IllegalArgumentException(
"Unable to resolve reference for "
+ corbaLoc.getKeyString());
}
ior =
((Delegate) ((org.omg.CORBA.portable.ObjectImpl)obj)._get_delegate()).getIOR();
}
catch (Exception e)
{
logger.error(("Invalid corbaloc URL " + corbaLoc.getKeyString ()), e);
throw new IllegalArgumentException("Invalid corbaloc: URL");
}
}
else
{
if (corbaLoc.profileList.length == 0)
{
// no profiles found; no point continuing
return;
}
for (int count = 0; count < corbaLoc.profileList.length; count++)
{
corbaLoc.profileList[count].set_object_key(corbaLoc.getKey());
}
ior = createObjectIOR(orb, corbaLoc.profileList);
}
decode(ior);