Exemplo n.º 1
0
 /// <summary>
 /// method to perform depth-first search and write the parameters of every
 /// queue in JSON format.
 /// </summary>
 /// <param name="dumpGenerator">
 /// JsonGenerator object which takes the dump and flushes
 /// to a writer object
 /// </param>
 /// <param name="rootQueues">the top-level queues</param>
 /// <exception cref="Org.Codehaus.Jackson.JsonGenerationException"/>
 /// <exception cref="System.IO.IOException"/>
 private static void DumpConfiguration(JsonGenerator dumpGenerator, ICollection <Queue
                                                                                 > rootQueues)
 {
     foreach (Queue queue in rootQueues)
     {
         dumpGenerator.WriteStartObject();
         dumpGenerator.WriteStringField("name", queue.GetName());
         dumpGenerator.WriteStringField("state", queue.GetState().ToString());
         AccessControlList submitJobList      = null;
         AccessControlList administerJobsList = null;
         if (queue.GetAcls() != null)
         {
             submitJobList = queue.GetAcls()[ToFullPropertyName(queue.GetName(), QueueACL.SubmitJob
                                                                .GetAclName())];
             administerJobsList = queue.GetAcls()[ToFullPropertyName(queue.GetName(), QueueACL
                                                                     .AdministerJobs.GetAclName())];
         }
         string aclsSubmitJobValue = " ";
         if (submitJobList != null)
         {
             aclsSubmitJobValue = submitJobList.GetAclString();
         }
         dumpGenerator.WriteStringField("acl_submit_job", aclsSubmitJobValue);
         string aclsAdministerValue = " ";
         if (administerJobsList != null)
         {
             aclsAdministerValue = administerJobsList.GetAclString();
         }
         dumpGenerator.WriteStringField("acl_administer_jobs", aclsAdministerValue);
         dumpGenerator.WriteFieldName("properties");
         dumpGenerator.WriteStartArray();
         if (queue.GetProperties() != null)
         {
             foreach (KeyValuePair <object, object> property in queue.GetProperties())
             {
                 dumpGenerator.WriteStartObject();
                 dumpGenerator.WriteStringField("key", (string)property.Key);
                 dumpGenerator.WriteStringField("value", (string)property.Value);
                 dumpGenerator.WriteEndObject();
             }
         }
         dumpGenerator.WriteEndArray();
         ICollection <Queue> childQueues = queue.GetChildren();
         dumpGenerator.WriteFieldName("children");
         dumpGenerator.WriteStartArray();
         if (childQueues != null && childQueues.Count > 0)
         {
             DumpConfiguration(dumpGenerator, childQueues);
         }
         dumpGenerator.WriteEndArray();
         dumpGenerator.WriteEndObject();
     }
 }
Exemplo n.º 2
0
        /// <summary>
        /// Dumps the configuration of hierarchy of queues with
        /// the xml file path given.
        /// </summary>
        /// <remarks>
        /// Dumps the configuration of hierarchy of queues with
        /// the xml file path given. It is to be used directly ONLY FOR TESTING.
        /// </remarks>
        /// <param name="out">the writer object to which dump is written to.</param>
        /// <param name="configFile">the filename of xml file</param>
        /// <exception cref="System.IO.IOException"/>
        internal static void DumpConfiguration(TextWriter @out, string configFile, Configuration
                                               conf)
        {
            if (conf != null && conf.Get(DeprecatedQueueConfigurationParser.MapredQueueNamesKey
                                         ) != null)
            {
                return;
            }
            JsonFactory              dumpFactory   = new JsonFactory();
            JsonGenerator            dumpGenerator = dumpFactory.CreateJsonGenerator(@out);
            QueueConfigurationParser parser;
            bool aclsEnabled = false;

            if (conf != null)
            {
                aclsEnabled = conf.GetBoolean(MRConfig.MrAclsEnabled, false);
            }
            if (configFile != null && !string.Empty.Equals(configFile))
            {
                parser = new QueueConfigurationParser(configFile, aclsEnabled);
            }
            else
            {
                parser = GetQueueConfigurationParser(null, false, aclsEnabled);
            }
            dumpGenerator.WriteStartObject();
            dumpGenerator.WriteFieldName("queues");
            dumpGenerator.WriteStartArray();
            DumpConfiguration(dumpGenerator, parser.GetRoot().GetChildren());
            dumpGenerator.WriteEndArray();
            dumpGenerator.WriteEndObject();
            dumpGenerator.Flush();
        }
Exemplo n.º 3
0
 /// <exception cref="System.IO.IOException"/>
 private void WriteObject(JsonGenerator jg, object value)
 {
     if (value == null)
     {
         jg.WriteNull();
     }
     else
     {
         Type c = value.GetType();
         if (c.IsArray)
         {
             jg.WriteStartArray();
             int len = Runtime.GetArrayLength(value);
             for (int j = 0; j < len; j++)
             {
                 object item = Runtime.GetArrayValue(value, j);
                 WriteObject(jg, item);
             }
             jg.WriteEndArray();
         }
         else
         {
             if (value is Number)
             {
                 Number n = (Number)value;
                 jg.WriteNumber(n.ToString());
             }
             else
             {
                 if (value is bool)
                 {
                     bool b = (bool)value;
                     jg.WriteBoolean(b);
                 }
                 else
                 {
                     if (value is CompositeData)
                     {
                         CompositeData        cds  = (CompositeData)value;
                         CompositeType        comp = cds.GetCompositeType();
                         ICollection <string> keys = comp.KeySet();
                         jg.WriteStartObject();
                         foreach (string key in keys)
                         {
                             WriteAttribute(jg, key, cds.Get(key));
                         }
                         jg.WriteEndObject();
                     }
                     else
                     {
                         if (value is TabularData)
                         {
                             TabularData tds = (TabularData)value;
                             jg.WriteStartArray();
                             foreach (object entry in tds.Values())
                             {
                                 WriteObject(jg, entry);
                             }
                             jg.WriteEndArray();
                         }
                         else
                         {
                             jg.WriteString(value.ToString());
                         }
                     }
                 }
             }
         }
     }
 }