Ejemplo n.º 1
0
        /// <summary>
        /// reads an object
        /// </summary>
        /// <returns></returns>
        public T Read()
        {
            IJavaData data = stream.ReadObject();

            if (reducer != null && data is JavaObject)
            {
                data = reducer.Reduce((JavaObject)data);
            }
            return(converter.Convert(data));
        }
Ejemplo n.º 2
0
 void ReduceArray(JavaArray array, HashSet <JavaObject> visited)
 {
     for (int i = array.Items.Count - 1; i >= 0; --i)
     {
         IJavaData data = array.Items[i];
         if (data is JavaArray)
         {
             ReduceArray((JavaArray)data, visited);
         }
         else if (data is JavaObject)
         {
             array.Items[i] = ReduceObject((JavaObject)data, visited);
         }
     }
 }
Ejemplo n.º 3
0
        /// <summary>
        /// reads an object
        /// </summary>
        /// <returns></returns>
        public T Read()
        {
            IJavaData data = stream.ReadObject();

            if (reducer != null && data is JavaObject)
            {
                data = reducer.Reduce((JavaObject)data);
            }

            JavaValue value = data as JavaValue;

            if (value == null)
            {
                throw new InvalidOperationException("Stream contains no object of the specified type");
            }
            return(value.Get <T>());
        }
Ejemplo n.º 4
0
        IJavaData ReduceObject(JavaObject @object, HashSet <JavaObject> visited)
        {
            if (visited.Contains(@object))
            {
                return(@object);
            }
            visited.Add(@object);

            foreach (JavaField field in @object.Fields)
            {
                if (field.Value is JavaArray)
                {
                    ReduceArray((JavaArray)field.Value, visited);
                }
                else if (field.Value is JavaObject)
                {
                    field.Value = ReduceObject((JavaObject)field.Value, visited);
                }
            }

            for (int i = @object.Custom.Count - 1; i >= 0; --i)
            {
                IJavaData data = @object.Custom[i];
                if (data is JavaArray)
                {
                    ReduceArray((JavaArray)data, visited);
                }
                else if (data is JavaObject)
                {
                    @object.Custom[i] = ReduceObject((JavaObject)data, visited);
                }
            }

            visited.Remove(@object);

            IDataTransformer transformer = transformationtable.Get(@object.Type);

            if (transformer == null)
            {
                return(@object);
            }

            return(transformer.Convert(@object));
        }
Ejemplo n.º 5
0
        /// <summary>
        /// writes an xml document out of a java data structure
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public XmlDocument Convert(IJavaData data)
        {
            HashSet <JavaObject> visited = new HashSet <JavaObject>();

            XmlDocument document = new XmlDocument();

            if (data is JavaObject)
            {
                WriteObject(document.CreateAndAppendElement(GetTagName(((JavaObject)data).Type)), (JavaObject)data, visited);
            }
            else if (data is JavaValue)
            {
                document.CreateAndAppendElement("value").InnerText = GetValue((JavaValue)data);
            }
            else if (data is JavaArray)
            {
                WriteArray(document.CreateAndAppendElement("array"), (JavaArray)data, visited);
            }
            return(document);
        }
Ejemplo n.º 6
0
 void WriteData(XmlNode parent, IJavaData data, HashSet <JavaObject> visited)
 {
     if (data is JavaArray)
     {
         JavaArray array = (JavaArray)data;
         WriteArray(parent, array, visited);
     }
     else if (data is JavaValue)
     {
         parent.InnerText = GetValue((JavaValue)data);
     }
     else if (data is JavaObject)
     {
         WriteObject(parent.CreateAndAppendAttribute("type", GetTagName(((JavaObject)data).Type)), (JavaObject)data, visited);
     }
     else
     {
         throw new InvalidOperationException("Invalid data type in array");
     }
 }
Ejemplo n.º 7
0
 public IEnumerable <IJavaData> Select(IJavaData data)
 {
     if (data is JavaArray)
     {
         foreach (IJavaData child in ((JavaArray)data).Items)
         {
             foreach (IJavaData result in Select(child))
             {
                 yield return(result);
             }
         }
     }
     else if (data is JavaObject)
     {
         JavaField field = ((JavaObject)data).Fields.FirstOrDefault(f => f.Name == Name);
         if (field != null)
         {
             yield return(field.Value);
         }
     }
 }
Ejemplo n.º 8
0
        void WriteArray(XmlNode parent, JavaArray array, HashSet <JavaObject> visited)
        {
            if (array.Items.Count == 0)
            {
                return;
            }

            IJavaData data = array.Items.First();

            if (data is JavaArray)
            {
                foreach (JavaArray childarray in array.Items.Cast <JavaArray>())
                {
                    WriteArray(parent.CreateAndAppendElement("array"), childarray, visited);
                }
            }
            else if (data is JavaValue)
            {
#if FRAMEWORK35
                parent.InnerText = string.Join(";", array.Items.Cast <JavaValue>().Select(GetValue).ToArray());
#else
                parent.InnerText = string.Join(";", array.Items.Cast <JavaValue>().Select(GetValue));
#endif
            }
            else if (data is JavaObject)
            {
                foreach (JavaObject item in array.Items.Cast <JavaObject>())
                {
                    WriteObject(parent.CreateAndAppendElement(GetTagName(item.Type)), item, visited);
                }
            }
            else
            {
                throw new InvalidOperationException("Invalid data type in array");
            }
        }
Ejemplo n.º 9
0
 /// <summary>
 /// selects nodes using a path
 /// </summary>
 /// <typeparam name="T">type of nodes to select</typeparam>
 /// <param name="data">data from which to select</param>
 /// <param name="path">path to nodes</param>
 /// <returns>nodes of the selected type which match the path</returns>
 public static IEnumerable <T> SelectNodes <T>(this IJavaData data, string path)
     where T : IJavaData
 {
     return(SelectNodes(data, path).Where(n => n is T).Cast <T>());
 }
Ejemplo n.º 10
0
 /// <summary>
 /// select child data using a xpath like path specification
 /// </summary>
 /// <param name="data"></param>
 /// <param name="path">path to data</param>
 /// <returns>data if path leads to a valid node, null otherwise</returns>
 public static IEnumerable <IJavaData> SelectNodes(this IJavaData data, string path)
 {
     IPathElement[] elements = parser.ParsePath(path).ToArray();
     return(SelectNodes(data, elements, 0));
 }
Ejemplo n.º 11
0
 public JavaDataController(IJavaData iJavaData, ITestService testService)
 {
     _java        = iJavaData;
     _testService = testService;
 }
Ejemplo n.º 12
0
 void CreateReference(IJavaData data)
 {
     references.Add(data);
 }
Ejemplo n.º 13
0
 /// <summary>
 /// creates a new java exception
 /// </summary>
 /// <param name="object"></param>
 public JavaException(IJavaData @object)
 {
     Object = @object;
 }
Ejemplo n.º 14
0
 /// <summary>
 /// creates a new java field
 /// </summary>
 /// <param name="name"></param>
 /// <param name="value"></param>
 public JavaField(string name, IJavaData value)
 {
     Name  = name;
     Value = value;
 }