### # # Copyright Alan Kennedy. # # You may contact the copyright holder at this uri: # # http://www.xhaus.com/contact/modjy # # The licence under which this code is released is the Apache License v2.0. # # The terms and conditions of this license are listed in a file contained # in the distribution that also contained this file, under the name # LICENSE.txt. # # You may also read a copy of the license at the following web address. # # http://modjy.xhaus.com/LICENSE.txt # ### import types from modjy_exceptions import * class write_object: def __init__(self, ostream): self.ostream = ostream self.num_writes = 0 def __call__(self, *args, **keywords): if len(args) != 1 or not isinstance(args[0], types.StringTypes): raise NonStringOutput("Invocation of write callable requires exactly one string argument") try: self.ostream.write(args[0]) # Jython implicitly converts the (binary) string to a byte array # WSGI requires that all output be flushed before returning to the application # According to the java docs: " The flush method of OutputStream does nothing." # Still, leave it in place for now: it's in the right place should this # code ever be ported to another platform. self.ostream.flush() self.num_writes += 1 except Exception, x: raise ModjyIOException(x)