int length = object_reference.length();
int cnt = (length - 4) / 2;
if ( ( length % 2 ) != 0 )
{
throw new BAD_PARAM("Odd number of characters within object reference");
}
ByteArrayOutputStream bos = new ByteArrayOutputStream();
for (int j = 0; j < cnt; j++)
{
char c1 = object_reference.charAt(j * 2 + 4);
char c2 = object_reference.charAt(j * 2 + 5);
int i1 =
(c1 >= 'a')
? (10 + c1 - 'a')
: ((c1 >= 'A') ? (10 + c1 - 'A') : (c1 - '0'));
int i2 =
(c2 >= 'a')
? (10 + c2 - 'a')
: ((c2 >= 'A') ? (10 + c2 - 'A') : (c2 - '0'));
bos.write((i1 * 16 + i2));
}
final CDRInputStream in_;
if (orb == null)
{
in_ = new CDRInputStream(org.omg.CORBA.ORB.init(), bos.toByteArray());
}
else
{
in_ = new CDRInputStream(orb, bos.toByteArray());
}
endianness = in_.read_boolean();
if (endianness)
{
in_.setLittleEndian(true);
}
try
{
IOR _ior = IORHelper.read(in_);
decode(_ior);
}
catch (MARSHAL e)
{
if (logger.isDebugEnabled())
{
logger.debug("Invalid IOR", e);
}
throw new BAD_PARAM("Invalid IOR " + e, 10, CompletionStatus.COMPLETED_NO);
}
}