First, what are the expected semantics for the original request? If the deploy command is invoked with a URI, what is the asadmin client expected to do? For example, is the client expected to fetch the content of the URI and then treat that content the same way it treats a file today? Is the URI supposed to be passed to the server, and then the server is surpposed to fetch the content of the URI? A key question is, where does the URI client code execute?
What I have supposed to do is that the client expected to fetch the content of the URI and then treat that content the same way it treats a file today.
Second, since the original syntax must be supported, how is the command parameter actually declared. If it is a URI (as the subtask requests), is the asadmin client expected to convert a path argument to a URI argument automatically? How is the asadmin client supposed to know that the default URI scheme should be "file://"? Is the implementation to be hardcoded this way, or is it necessary to allow the default scheme to be specified by the command.
Or, is the idea hear to allow the operand to be of varying types depending on what is entered by the user? If it looks like a URI, then just the URI is passed, but if it looks like a path, then a File is passed? What would the @Param declaration for a command look like in this case?
What I have revised is to define a path as a URI parameter. Then I will try to convert a path argument to a URI argument when it is excuted in the asadmin client.
All in all, What I have revised is based on the option#2, which is defined a URI parameter and change the File to URI when the application is deployed as a File.
BTW: If we decide to take the option#1, I will look into the logical about deploydir first before I code.