static void copySubConfig(ServiceConfig from,ServiceConfig to,ServiceSchema serviceSchema) throws SMSException, SSOException {
  Set subConfigNames=from.getSubConfigNames();
  for (Iterator items=subConfigNames.iterator(); items.hasNext(); ) {
    String subConfigName=(String)items.next();
    ServiceConfig scf=from.getSubConfig(subConfigName);
    ServiceSchema subSchema=serviceSchema.getSubSchema(scf.getSchemaID());
    if (subSchema.isRealmCloneable()) {
      to.addSubConfig(subConfigName,scf.getSchemaID(),scf.getPriority(),scf.getAttributesWithoutDefaults());
      ServiceConfig sct=to.getSubConfig(subConfigName);
      copySubConfig(scf,sct,subSchema);
    }
  }
}

static void copySubConfig ( ServiceConfig from , ServiceConfig to , ServiceSchema serviceSchema ) throws SMSException , SSOException { Set subConfigNames = from . getSubConfigNames ( ) ; for ( Iterator items = subConfigNames . iterator ( ) ; items . hasNext ( ) ; ) { String subConfigName = ( String ) items . next ( ) ; ServiceConfig scf = from . getSubConfig ( subConfigName ) ; ServiceSchema subSchema = serviceSchema . getSubSchema ( scf . getSchemaID ( ) ) ; if ( subSchema . isRealmCloneable ( ) ) { to . addSubConfig ( subConfigName , scf . getSchemaID ( ) , scf . getPriority ( ) , scf . getAttributesWithoutDefaults ( ) ) ; ServiceConfig sct = to . getSubConfig ( subConfigName ) ; copySubConfig ( scf , sct , subSchema ) ; } } }
copies service configurations recursively from source to destination
