// If the supplied registryModeName is "remoteRendered" or
// "remoteRenderable", in order to get the OperationDescriptor's
// ParameterListDescriptor, we need to actually use the "rendered"
// or "renderable" mode respectively.
ParameterListDescriptor oldPLD = null;
if (registryModeName.equalsIgnoreCase("remoteRendered")) {
oldPLD = oldOD.getParameterListDescriptor("rendered");
} else if (registryModeName.equalsIgnoreCase("remoteRenderable")) {
oldPLD = oldOD.getParameterListDescriptor("renderable");
} else {
oldPLD = oldOD.getParameterListDescriptor(registryModeName);
}
int numParams = oldPLD.getNumParameters();
// If the serverNames are same, nothing to be done for that
if (oldServerName != newServerName) {
// Check whether they both support the supplied operation name
OperationDescriptor newDescs[] =
getServerSupportedOperationList(newServerName);
OperationDescriptor newOD;
if ((newOD = getOperationDescriptor(newDescs,
operationName)) == null)
throw new IllegalArgumentException(
JaiI18N.getString("JAIRMIDescriptor2"));
// Check the OperationDescriptor equivalence
// Sources
if (numSources != newOD.getNumSources())
throw new IllegalArgumentException(
JaiI18N.getString("JAIRMIDescriptor3"));
// Parameters
ParameterListDescriptor newPLD =
newOD.getParameterListDescriptor(registryModeName);
if (numParams != newPLD.getNumParameters())
throw new IllegalArgumentException(
JaiI18N.getString("JAIRMIDescriptor4"));
// Param names
String oldParamNames[] = oldPLD.getParamNames();
if (oldParamNames == null)
oldParamNames = new String[0];
String newParamNames[] = newPLD.getParamNames();
if (newParamNames == null)
newParamNames = new String[0];
Hashtable oldHash = hashNames(oldParamNames);
Hashtable newHash = hashNames(newParamNames);
// The same names should be present in both in the same order.
if (containsAll(oldHash, newHash) == false)
throw new IllegalArgumentException(
JaiI18N.getString("JAIRMIDescriptor8"));
// Param class types
Class thisParamClasses[] = oldPLD.getParamClasses();
Class otherParamClasses[] = newPLD.getParamClasses();
for (int i=0; i<oldParamNames.length; i++) {
if (thisParamClasses[i] !=
otherParamClasses[getIndex(newHash, oldParamNames[i])])
throw new IllegalArgumentException(
JaiI18N.getString("JAIRMIDescriptor9"));