[pve-devel] r5035 - pve-common/trunk

svn-commits at proxmox.com svn-commits at proxmox.com
Fri Aug 20 10:19:18 CEST 2010


Author: dietmar
Date: 2010-08-20 08:19:18 +0000 (Fri, 20 Aug 2010)
New Revision: 5035

Modified:
   pve-common/trunk/ChangeLog
   pve-common/trunk/JSONSchema.pm
   pve-common/trunk/RESTHandler.pm
Log:
	* JSONSchema.pm (validate): new 'fragmentDelimiter' option.

	* RESTHandler.pm (find_handler): remove 'require' - we load
	statically instead



Modified: pve-common/trunk/ChangeLog
===================================================================
--- pve-common/trunk/ChangeLog	2010-08-20 06:06:07 UTC (rev 5034)
+++ pve-common/trunk/ChangeLog	2010-08-20 08:19:18 UTC (rev 5035)
@@ -1,3 +1,10 @@
+2010-08-20  Proxmox Support Team  <support at proxmox.com>
+
+	* JSONSchema.pm (validate): new 'fragmentDelimiter' option.
+
+	* RESTHandler.pm (find_handler): remove 'require' - we load
+	statically instead
+
 2010-08-17  Proxmox Support Team  <support at proxmox.com>
 
 	* JSONSchema.pm (get_options): we use option type 's' for boolean

Modified: pve-common/trunk/JSONSchema.pm
===================================================================
--- pve-common/trunk/JSONSchema.pm	2010-08-20 06:06:07 UTC (rev 5034)
+++ pve-common/trunk/JSONSchema.pm	2010-08-20 08:19:18 UTC (rev 5035)
@@ -562,6 +562,11 @@
 	    type =>  'string',
 	    description => "path for URL matching (uri template)",
 	},
+        fragmentDelimiter => {
+            type => 'string',
+	    description => "A ways to override the default fragment delimiter '/'. This onyl works on a whole sub-class. You can set this to the empty string to match the whole rest of the URI.",            
+	    optional => 1,
+        },
 	parameters => {
 	    type => 'object',
 	    description => "JSON Schema for parameters.",
@@ -586,6 +591,7 @@
 		properties => {
                     subclass => {},
                     path => {},
+                    fragmentDelimiter => { optional => 1 }
                 }             
             },
 	}, 

Modified: pve-common/trunk/RESTHandler.pm
===================================================================
--- pve-common/trunk/RESTHandler.pm	2010-08-20 06:06:07 UTC (rev 5034)
+++ pve-common/trunk/RESTHandler.pm	2010-08-20 08:19:18 UTC (rev 5035)
@@ -160,20 +160,24 @@
     return undef if !$info;
 
     if (my $subh = $info->{subclass}) {
-	eval "require $subh;";
 
-	if ($@) {
-	    syslog ('err', "missing subclass '$subh': $@");
-	    return undef;
-	}
-
 	my $matchlen = scalar(@{$info->{match_re}});
 
 	for (my $i = 0; $i < $matchlen; $i++) {
-	    my $fragment = shift @$stack;
-	    # fixme: store $fragments somewhere ?
+	    shift @$stack; # pop from stack
 	}
 
+	my $fd = $info->{fragmentDelimiter};
+
+	if (defined($fd)) {
+
+	    # we only support the empty string '' (match whole URI)
+	    die "unsupported fragmentDelimiter '$fd'" 
+		if $fd ne '';
+
+	    $stack = [ join ('/', @$stack) ];
+	}
+
 	return $subh->find_handler($method, $stack, $uri_param);
     }
 



More information about the pve-devel mailing list