private void setParameters()

in yoko-core/src/main/java/org/apache/yoko/orb/OBCORBA/ORB_impl.java [907:1092]


    private void setParameters(org.omg.CORBA.StringSeqHolder args,
            java.util.Properties properties,
            org.apache.yoko.orb.OB.Logger logger) {
        if (args.value == null)
            args.value = new String[0];

        //
        // Initialize the Logger
        //
        if (logger == null)
            logger = new org.apache.yoko.orb.OB.Logger_impl();

        //
        // Initialize the properties
        //
        if (properties == null) {
            properties = new Properties();
            try {
                properties.putAll(System.getProperties());
            } catch (SecurityException ex) {
                //
                // May be raised in an applet
                //
                // logger.warning("ORB.init: Unable to access System " +
                // "properties");
            }
        }

        args.value = ParseArgs(args.value, properties, logger);

        //
        // Process each property
        //
        String orbId = "";
        String serverId = "";
        String serverInstance = "";
        int concModel = org.apache.yoko.orb.OB.Client.Blocking;
        int nativeCs = org.apache.yoko.orb.OB.CodeSetDatabase.ISOLATIN1;
        int nativeWcs = org.apache.yoko.orb.OB.CodeSetDatabase.UTF16;
        int defaultWcs = 0;

        java.util.Enumeration keys = properties.keys();
        while (keys.hasMoreElements()) {
            String key = (String) keys.nextElement();
            if (!key.startsWith("yoko.orb."))
                continue;

            String value = properties.getProperty(key);
            org.apache.yoko.orb.OB.Assert._OB_assert(value != null);

            if (key.equals("yoko.orb.conc_model")) {
                if (value.equals("threaded")) {
                    concModel = org.apache.yoko.orb.OB.Client.Threaded;
                }
                else {
                    logger.warning("ORB.init: unknown value for "
                            + "yoko.orb.conc_model: " + value);
                }
            } else if (key.startsWith("yoko.orb.trace.")) {
                // Ignore -- handled in CoreTraceLevels
            } else if (key.startsWith("yoko.orb.policy.")) {
                // Ignore -- handled in initializeDefaultPolicies()
            } else if (key.equals("yoko.orb.id")) {
                orbId = value;
            } else if (key.equals("yoko.orb.server_name")) {
                //
                // The server name must begin with an alpha-numeric
                // character
                //
                if (value.length() == 0
                        || !Character.isLetterOrDigit(value.charAt(0))) {
                    String err = "ORB.init: illegal value for "
                            + "yoko.orb.server_name: " + value;
                    logger.error(err);
                    throw new org.omg.CORBA.INITIALIZE(err);
                }
                serverId = value;
            } else if (key.equals("yoko.orb.server_instance")) {
                serverInstance = value;
            } else if (key.equals("yoko.orb.raise_dii_exceptions")) {
                if (value.equalsIgnoreCase("true"))
                    raiseDIIExceptions_ = true;
                else
                    raiseDIIExceptions_ = false;
            } else if (key.equals("yoko.orb.native_cs")) {
                int csid = org.apache.yoko.orb.OB.CodeSetDatabase.instance()
                        .nameToId(value);
                if (csid != 0
                        && csid != org.apache.yoko.orb.OB.CodeSetDatabase.UTF8)
                    nativeCs = csid;
                else {
                    String err = "ORB.init: unknown value for "
                            + "yoko.orb.native_cs: " + value;
                    logger.error(err);
                    throw new org.omg.CORBA.INITIALIZE(err);
                }
            } else if (key.equals("yoko.orb.native_wcs")) {
                int csid = org.apache.yoko.orb.OB.CodeSetDatabase.instance()
                        .nameToId(value);
                if (csid != 0
                        && csid != org.apache.yoko.orb.OB.CodeSetDatabase.UTF8)
                    nativeWcs = csid;
                else {
                    String err = "ORB.init: unknown value for "
                            + "yoko.orb.native_wcs: " + value;
                    logger.error(err);
                    throw new org.omg.CORBA.INITIALIZE(err);
                }
            } else if (key.equals("yoko.orb.default_wcs")) {
                int csid = org.apache.yoko.orb.OB.CodeSetDatabase.instance()
                        .nameToId(value);
                if (csid != 0
                        && csid != org.apache.yoko.orb.OB.CodeSetDatabase.UTF8)
                    defaultWcs = csid;
                else {
                    String err = "ORB.init: unknown value for "
                            + "yoko.orb.default_wcs: " + value;
                    logger.error(err);
                    throw new org.omg.CORBA.INITIALIZE(err);
                }
            } else if (key.equals("yoko.orb.extended_wchar")) {
                if (!value.equals("true") && !value.equals("false")) {
                    String err = "ORB.init: unknown value for "
                            + "yoko.orb.extended_wchar: " + value;
                    logger.error(err);
                    throw new org.omg.CORBA.INITIALIZE(err);
                }
            } else if (key.equals("yoko.orb.default_init_ref")) {
                if (value.length() == 0)
                    logger.warning("ORB.init: invalid value for "
                            + "yoko.orb.default_init_ref");
            } else if (key.equals("yoko.orb.server_timeout")
                    || key.equals("yoko.orb.server_shutdown_timeout")) {
                // Used by GIOPServerWorker
            } else if (key.equals("yoko.orb.client_timeout")
                    || key.equals("yoko.orb.client_shutdown_timeout")) {
                // Used by GIOPClientWorker
            } else if (key.startsWith("yoko.orb.service.")) {
                // Ignore
            } else if (key.startsWith("yoko.orb.oa.")) {
                // Ignore
            } else if (key.startsWith("yoko.orb.poamanager.")) {
                // Ignore
            } else if (key.equals("yoko.orb.noIMR")) {
                // Ignore
            } else if (key.equals("yoko.orb.use_type_code_cache")) {
                if (!value.equals("true") && !value.equals("false")) {
                    String err = "ORB.init: unknown value for "
                            + "yoko.orb.use_type_code_cache: " + value;
                    logger.error(err);
                    throw new org.omg.CORBA.INITIALIZE(err);
                }
            } else if (key.equals("yoko.orb.giop.max_message_size")) {
                try {
                    int max = Integer.valueOf(value).intValue();
                    org.apache.yoko.orb.OB.GIOPIncomingMessage
                    .setMaxMessageSize(max);
                    org.apache.yoko.orb.OB.GIOPOutgoingMessage
                    .setMaxMessageSize(max);
                } catch (NumberFormatException ex) {
                    String err = "ORB.init: invalid value for "
                            + "yoko.orb.giop.max_message_size: " + value;
                    logger.error(err, ex);
                    throw new org.omg.CORBA.INITIALIZE(err);
                }
            } else if (key.equals("yoko.orb.ami_workers")) {
                // ignore
            } else {
                logger.warning("ORB.init: unknown property `" + key + "'");
            }
        }

        //
        // Parse the tracing levels from the properties
        //
        org.apache.yoko.orb.OB.CoreTraceLevels coreTraceLevels = new org.apache.yoko.orb.OB.CoreTraceLevels(
                logger, properties);

        //
        // Initialize the ORB state - this must be done after processing
        // command-line options and properties
        //
        initialize(args, orbId, serverId, serverInstance, concModel,
                coreTraceLevels, properties, logger, nativeCs, nativeWcs,
                defaultWcs);
    }