Package core :: Module javautils

[hide private]
[frames] | no frames]

# Source Code for Module core.javautils

      1  # Copyright 2011-2012 the original author or authors.
      2  #
      3  # Licensed under the Apache License, Version 2.0 (the "License");
      4  # you may not use this file except in compliance with the License.
      5  # You may obtain a copy of the License at
      6  #
      7  #      http://www.apache.org/licenses/LICENSE-2.0
      8  #
      9  # Unless required by applicable law or agreed to in writing, software
     10  # distributed under the License is distributed on an "AS IS" BASIS,
     11  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     12  # See the License for the specific language governing permissions and
     13  # limitations under the License.
     14  #
     15
     16  """
     17  This module defines several functions to ease interfacing with Java code.
     18
     19  Initially based on resources in the following article http://www.ibm.com/developerworks/java/tutorials/j-jython2/index.html
     20  """
     21
     22  import sys
     23  from types import *
     24  from java import util
     25
     26  __author__ = "Scott Horn"
     27  __email__ = "scott@hornmicro.com"
     28  __credits__ = "Based entirely on work by Tim Fox http://tfox.org"
     29
     30 -def map_map_from_java (map):
     31      """ Convert a Map to a Dictionary. """
     32      result = {}
     33      iter = map.keySet().iterator()
     34      while iter.hasNext():
     35          key = iter.next()
     36          result[map_from_java(key)] = map_from_java(map.get(key))
     37      return result
     38
     39 -def map_set_from_java (set_):
     40      """ Convert a Set to a set. """
     41      result = set()
     42      iter = set_.iterator()
     43      while iter.hasNext():
     44          result.add(map_from_java(iter.next()))
     45      return result
     46
     47 -def map_collection_from_java (coll):
     48      """ Convert a Collection to a List. """
     49      result = []
     50      iter = coll.iterator()
     51      while iter.hasNext():
     52          result.append(map_from_java(iter.next()))
     53      return result
     54
     55 -def map_from_java (object):
     56      """ Convert a Java type to a Jython type. """
     57      if object is None: return object
     58      if   isinstance(object, util.Map):        result = map_map_from_java(object)
     59      elif isinstance(object, util.Set):        result = map_set_from_java(object)
     60      elif isinstance(object, util.Collection): result = map_collection_from_java(object)
     61      else:                                     result = object
     62      return result
     63
     64 -def map_seq_to_java (seq):
     65      """ Convert a seqence to a Java ArrayList. """
     66      result = util.ArrayList(len(seq))
     67      for e in seq:
     68          result.add(map_to_java(e));
     69      return result
     70
     71 -def map_list_to_java (list):
     72      """ Convert a List to a Java ArrayList. """
     73      result = util.ArrayList(len(list))
     74      for e in list:
     75          result.add(map_to_java(e));
     76      return result
     77
     78 -def map_list_to_java_vector (list):
     79      """ Convert a List to a Java Vector. """
     80      result = util.Vector(len(list))
     81      for e in list:
     82          result.add(map_to_java(e));
     83      return result
     84
     85 -def map_dict_to_java (dict):
     86      """ Convert a Dictionary to a Java HashMap. """
     87      result = util.HashMap()
     88      for key, value in dict.items():
     89          result.put(map_to_java(key), map_to_java(value))
     90      return result
     91
     92 -def map_to_java (object):
     93      """ Convert a Jython type to a Java type. """
     94      if object is None: return object
     95      t = type(object)
     96      if   t == TupleType: result = map_seq_to_java(object)
     97      elif t == ListType:  result = map_seq_to_java(object)
     98      elif t == DictType:  result = map_dict_to_java(object)
     99      else:                result = object
    100      return result
    101