<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>lib/openwfe/expool/def_parser.rb</filename>
    </added>
    <added>
      <filename>test/functional/ft_5_process_uri.rb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -1,2 +1,3 @@
 logs/
 work/
+tmp/</diff>
      <filename>.gitignore</filename>
    </modified>
    <modified>
      <diff>@@ -50,7 +50,7 @@ require 'openwfe/workitem'
 require 'openwfe/util/irb'
 require 'openwfe/util/workqueue'
 require 'openwfe/util/treechecker'
-require 'openwfe/expool/parser'
+require 'openwfe/expool/def_parser'
 require 'openwfe/expool/wfidgen'
 require 'openwfe/expool/expressionpool'
 require 'openwfe/expool/expstorage'</diff>
      <filename>lib/openwfe/engine/engine.rb</filename>
    </modified>
    <modified>
      <diff>@@ -175,7 +175,7 @@ module OpenWFE
 
       else
 
-        [ read_uri(wfdurl), false ]
+        [ get_def_parser.read_uri(wfdurl), false ]
       end
 
       raise(
@@ -183,7 +183,7 @@ module OpenWFE
       ) unless definition
 
       raise(
-        &quot;:definition_in_launchitem_allowed not set to true, cannot launch.&quot;
+        ':definition_in_launchitem_allowed not set to true, cannot launch.'
       ) if in_launchitem and ac[:definition_in_launchitem_allowed] != true
 
       raw_expression = get_expression_pool.build_raw_expression(</diff>
      <filename>lib/openwfe/engine/launch_methods.rb</filename>
    </modified>
    <modified>
      <diff>@@ -48,12 +48,11 @@ require 'openwfe/flowexpressionid'
 require 'openwfe/util/observable'
 require 'openwfe/expool/errors'
 require 'openwfe/expool/expool_pause_methods'
-require 'openwfe/expool/parser'
 require 'openwfe/expool/representation'
 require 'openwfe/expressions/environment'
 require 'openwfe/expressions/raw'
 
-require 'rufus/verbs' # gem 'rufus-verbs'
+require 'rufus/verbs' # sudo gem install 'rufus-verbs'
 
 
 module OpenWFE
@@ -615,17 +614,6 @@ module OpenWFE
     end
 
     #
-    # Gets the process definition (if necessary) and turns into
-    # into an expression tree (for storing into a RawExpression).
-    #
-    def determine_rep (param)
-
-      param = read_uri(param) if param.is_a?(URI)
-
-      get_def_parser.parse(param)
-    end
-
-    #
     # Returns true if the process instance to which the expression
     # belongs is currently paused.
     #
@@ -638,12 +626,14 @@ module OpenWFE
     # Builds the RawExpression instance at the root of the flow
     # being launched.
     #
-    # The param can be a template or a definition (anything
-    # accepted by the determine_representation() method).
+    # The param can be a template or a definition (or a URI).
     #
     def build_raw_expression (param, launchitem=nil)
 
-      procdef = determine_rep(param)
+      procdef = get_def_parser.determine_rep(param)
+
+      # procdef is a nested [ name, attributes, children ] structure now
+
       atts = procdef[1]
 
       h = {
@@ -783,29 +773,6 @@ module OpenWFE
     end
 
     #
-    # This is the only point in the expression pool where an URI
-    # is read, so this is where the :remote_definitions_allowed
-    # security check is enforced.
-    #
-    def read_uri (uri)
-
-      uri = URI.parse(uri.to_s)
-
-      raise &quot;:remote_definitions_allowed is set to false&quot; \
-        if (ac[:remote_definitions_allowed] != true and
-          uri.scheme and
-          uri.scheme != 'file')
-
-      #open(uri.to_s).read
-
-      f = Rufus::Verbs.fopen(uri) # Rufus::Verbs is OK with redirections
-      result = f.read
-      f.close if f.respond_to?(:close)
-
-      result
-    end
-
-    #
     # This is the method called [asynchronously] by the WorkQueue
     # upon apply/reply.
     #</diff>
      <filename>lib/openwfe/expool/expressionpool.rb</filename>
    </modified>
    <modified>
      <diff>@@ -252,7 +252,7 @@ module OpenWFE
 
       ldebug { &quot;apply() def is &gt;#{df}&lt;&quot; }
 
-      tree = get_expression_pool.determine_rep(df)
+      tree = get_def_parser.determine_rep(df)
 
       get_expression_pool.substitute_and_apply(self, tree, workitem)
     end</diff>
      <filename>lib/openwfe/expressions/fe_misc.rb</filename>
    </modified>
    <modified>
      <diff>@@ -150,13 +150,10 @@ module OpenWFE
   #
   def OpenWFE.parse_uri (string)
 
-    return nil if string.split(&quot;\n&quot;).size &gt; 1
+    return nil if string.index(&quot;\n&quot;)
+      # cheap initial test
 
-    begin
-      URI::parse(string)
-    rescue Exception =&gt; e
-      nil
-    end
+    URI.parse(string) rescue nil
   end
 
   #
@@ -166,7 +163,7 @@ module OpenWFE
   #
   def OpenWFE.parse_known_uri (ref)
 
-    uri = OpenWFE::parse_uri(ref.to_s)
+    uri = OpenWFE.parse_uri(ref.to_s)
 
     return nil unless uri
 </diff>
      <filename>lib/openwfe/utils.rb</filename>
    </modified>
    <modified>
      <diff>@@ -10,7 +10,7 @@
 require File.dirname(__FILE__) + '/../test_helper.rb'
 
 require 'openwfe/def'
-require 'openwfe/expool/parser'
+require 'openwfe/expool/def_parser'
 
 
 class ParserRubyTest &lt; Test::Unit::TestCase</diff>
      <filename>test/unit/ut_7_parser_ruby.rb</filename>
    </modified>
    <modified>
      <diff>@@ -10,7 +10,7 @@
 require File.dirname(__FILE__) + '/../test_helper.rb'
 
 require 'openwfe/def'
-require 'openwfe/expool/parser'
+require 'openwfe/expool/def_parser'
 
 
 class ParserRubyTestB &lt; Test::Unit::TestCase</diff>
      <filename>test/unit/ut_7b_parser_ruby.rb</filename>
    </modified>
    <modified>
      <diff>@@ -9,7 +9,7 @@
 
 require File.dirname(__FILE__) + '/../test_helper.rb'
 
-require 'openwfe/expool/parser'
+require 'openwfe/expool/def_parser'
 
 
 class ParserDescriptionTest &lt; Test::Unit::TestCase</diff>
      <filename>test/unit/ut_8_parser_description.rb</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>lib/openwfe/expool/parser.rb</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>86ec3070831a224dca687023590b3898299d2170</id>
    </parent>
  </parents>
  <author>
    <name>John Mettraux</name>
    <email>jmettraux@gmail.com</email>
  </author>
  <url>http://github.com/jmettraux/ruote/commit/f85073fda9246911e36d20cf32ab636c904fa2ec</url>
  <id>f85073fda9246911e36d20cf32ab636c904fa2ec</id>
  <committed-date>2009-02-25T18:00:45-08:00</committed-date>
  <authored-date>2009-02-25T18:00:45-08:00</authored-date>
  <message>bug #24136 : read_uri issue during restruct. Fixed.</message>
  <tree>6418037d26c3e6c22b640912b1551c3f303dc9d5</tree>
  <committer>
    <name>John Mettraux</name>
    <email>jmettraux@gmail.com</email>
  </committer>
</commit>
