Skip to main content

Jmaki, Jruby and Tomcat: stories from J Land

I was using the nice Dojo Table widget for a rails application because I needed to allow the user to sort the displayed table. I also needed to deploy the application on Tomcat. To make it work, I had to copy the resources folder created by Jmaki in the public folder to the root folder of Tomcat's webapps (the webapps folder). I also had to do some fixes to jmaki_core_celper.rb source. The modified parts (which adds more functionality such as allowing to pass field names to jmaki widgets) are the following:

module JmakiCoreHelper



  # ---------- Global Constants ----------



  JMAKI_RESOURCES = RAILS_ROOT + '/' + "public/resources/" #chg by JPT to allow Tomcat to find the the widget's files

...

  # ---------- Global jMaki Methods ----------
 def jmaki_widget(name, options = {}, field_name ="jmaki_field", width = 100)

    # Set up variables we will need
    result = ""
    nameSlashed = name.tr('.', '/')
    widgetDir = "/resources/" + nameSlashed # FIXME - relative to context path?

    # Render the widget-specific libraries and stylesheets
    widget = jmaki_load_widget(name)
#    puts "Loaded data is " + widget.inspect
    config = widget['config']
    if config
      type = config['type']
      if type
        id = type['id']
        if ((id != nil) && !jmaki_type_include?(id))
          # preload
          preload = type['preload']
          if preload
            result += jmaki_generate_script(preload)
          end
          # libs
          libs = type['libs']
          if libs
            for i in 0...libs.length
              result += jmaki_generate_js(widgetDir + "/" + libs[i])
            end
          end
          # postload
          postload = type['postload']
          if postload
            result += jmaki_generate_script(postload)
          end
          # styles
          styles = type['styles']
          if styles
            for i in 0...styles.length
              result += jmaki_generate_css(widgetDir + "/" + styles[i])
            end
          end
          jmaki_type_include(id)
        end
      end
    end

    # Render link to widget stylesheet (if any)
    # FIXME - allow "component.css" override with "style" attribute
    if (File.exist?(JMAKI_RESOURCES + nameSlashed + "/component.css"))
      result += jmaki_generate_css(widgetDir + "/component.css")
    end

    # Render link to widget javascript (assumed to exist)
    # FIXME - allow "component.js" override with "script" attribute
    result += jmaki_generate_js(widgetDir + "/component.js")

    # Create an empty options hash if we did not receive one
    if !options
      options = { }
    end

    # Decorate the options hash with our required attributes
    options['name'] = name
    if !options['uuid']
      options['uuid'] = jmaki_generate_uuid(name)
    end
    options['widgetDir'] = widgetDir
#    puts "options = " + options.inspect

    # Deal with the widget template (if any), including parameter replacements
    # FIXME - override local filename with "template" attribute
    template = nil
    templateFilename = JMAKI_RESOURCES + nameSlashed + "/component.htm"
    if (File.exist?(templateFilename))
      template = jmaki_generate_content(templateFilename)
    elsif (File.exist?(templateFilename + "l"))
      template = jmaki_generate_content(templateFilename + "l")
    end
    if template
      # FIXME - do substitutions in writeTemplate() other than ${uuid}
      template = template.gsub('${uuid}', options['uuid'])
      template = template.gsub('${field_name}', field_name)
      template = template.gsub('${width}', width.to_s)
      result += template
    end

#    puts "OPTIONS=" + options.to_json

    # Render the widget constructor call
    result += "\n"

    # Return the completed result
    result

  end
...
end

Comments

Popular posts from this blog

Powershell script for converting JPG to TIFF

The following Powershell script will convert a batch of JPEG files to TIFF format: #This Code is released under MIT license [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") $files_folder = 'C:\path-where-your-jpg-files-are\' $pdfs = get-childitem $files_folder -recurse | where {$_.Extension -match "jpg"} foreach($pdf in $pdfs) { $picture = [System.Drawing.Bitmap]::FromFile( $pdf.FullName ) $tiff = $pdf.FullName.replace('.PDF','').replace('.pdf','').replace('.jpg','').replace('.JPG','') + '.tiff' $picture.Save($tiff) }

Power Automate: SFTP action "Test connection failed"

When I added an SFTP create file action to my Power Automate flow ( https://flow.microsoft.com ) , I got the following error in the action step, within the designer: "Test connection failed" To troubleshoot the Power Automate connection, I had to: go the Power Automate portal then "Data"->"Connections"  the sftp connection was there, I clicked on the ellipsis, and entered the connection info It turns out, that screen provides more details about the connection error. In my case, it was complaining that "SSH host key finger-print xxx format is not supported. It must be in 'MD5' format". I had provided the sha fingerprint that WinScp shows. Instead, I needed to use the MD5 version of the fingerprint. To get that, I had to run in command line (I was in a folder that had openssh in it): ssh -o FingerprintHash=md5 mysftpsite.com To get the fingerprint in MD5 format. I took the string (without the "MD5:" part of the string) and put

Alert if file missing using Powershell

The following Powershell script can be used to send an email alert when a file is missing from a folder or it is the same file from a previous check: $path_mask = "yourfile_*.txt" $previous_file_store = "lastfileread.txt" $script_name = "File Check" ###### Functions ########## Function EMailLog($subject, $message) {    $emailTo = "juanito@yourserver.com"    $emailFrom = "alert@yourserver.com"    $smtpserver="smtp.yourserver.com"       $smtp=new-object Net.Mail.SmtpClient($smtpServer)    $smtp.Send($emailFrom, $emailTo, $subject, $message) } Try {    #get files that match the mask    $curr_file = dir $path_mask |  select name    if ($curr_file.count -gt 0)    {        #file found        #check if the file is different from the previous file read        $previous_file = Get-Content $previous_file_store        $curr_file_name = $curr_file.Item(0).Name        if ($