Good day to you, Jiaqi,
Actually, the second if statement handles that ( the one after "String
expression = stripTokens( expr );" ). It takes in the contents of "${" and
"}" and recursively evaluates it. If the expr passed to evaluate(...) is not
a ${...}, then the actual substitution takes place.
The way I see it, indexOf("/") is used to evalute "/" which are inside
${...}. Why would you want to do that? - I don't know :-)
Cheers,
Franz
Jiaqi Guo wrote:
>
> In fact, the ReflectionValueExtractor.evaluate("lugin",
> pluginDescriptor) does return null. The first token in while loop is
> "lugin", which calls "getLugin()" of root object and returns null. I
> guess this is where the problem is. Maybe there should be another 'else
> if ( "plugin".equals( expression ) )' before 'else if (
> expression.startsWith( "plugin" ) )' .
>
> And I think I begin to understand the indexOf( "/" ) now. Is it to allow
> user to specify things like
> "${project.build.sourceDirectory}/some/sub/directory"?
>
> Thanks
> -Jiaqi
>
> Jiaqi Guo wrote:
>> Hi Franz,
>>
>> I tried to get PluginDescriptor within a mojo and got
>> PluginParameterException, then I started looking at this code.
>>
>> Assume expression is string "plugin", pathSeparator is -1, the
>> expression.substring(1) becomes "lugin". Did I miss anything here?
>>
>> And then looking at ReflectionValueExtractor.java today, I just
>> realized ReflectionValueExtractor.evaluate("lugin", pluginDescriptor)
>> may work since the first argument is irrelevant if string doesn't
>> contain '.'. But I'm more confused by the substring part of what
>> .indexOf("/") is for.
>>
>> And still, in my Mojo, the parameter with expression "${plugin}" is
>> causing PluginParameterException which indicates the value of it is null.
>>
>> Regards
>> -Jiaqi
>>
>> franz see wrote:
>>> Good day to you, Jiaqi,
>>>
>>> Why do you say that it will be evaluted to null?
>>>
>>> Cheers,
>>> Franz
>>>
>>>
>>> Jiaqi Guo wrote:
>>>
>>>> Hi there,
>>>>
>>>> I'm trying to find out the build-in variables for a maven2 plugin
>>>> and found the following code in
>>>> http://svn.apache.org/repos/asf/maven/components/tags/maven-2.0.4/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java
>>>>
>>>>
>>>> line 217:
>>>>
>>>> ...
>>>> else if ( expression.startsWith( "plugin" ) )
>>>> {
>>>> try
>>>> {
>>>> int pathSeparator = expression.indexOf( "/" );
>>>>
>>>> PluginDescriptor pluginDescriptor =
>>>> mojoDescriptor.getPluginDescriptor();
>>>>
>>>> if ( pathSeparator > 0 )
>>>> {
>>>> String pathExpression = expression.substring( 1,
>>>> pathSeparator );
>>>> value = ReflectionValueExtractor.evaluate(
>>>> pathExpression, pluginDescriptor );
>>>> value = value + expression.substring(
>>>> pathSeparator );
>>>> }
>>>> else
>>>> {
>>>> value = ReflectionValueExtractor.evaluate(
>>>> expression.substring( 1 ), pluginDescriptor );
>>>> }
>>>> }
>>>> catch ( Exception e )
>>>> {
>>>> // TODO: don't catch exception
>>>> throw new ExpressionEvaluationException( "Error
>>>> evaluating plugin parameter expression: " + expression,
>>>> e );
>>>> }
>>>> }
>>>> ...
>>>>
>>>> If I didn't miss anything this code make the value of any parameter
>>>> expression starting with "plugin" to be null for sure, which will
>>>> cause PluginParameterException in
>>>> org.apache.maven.plugin.DefaultPluginManager.checkRequiredParameters(DefaultPluginManager.java:809).
>>>>
>>>> Same thing happens to "settings" and "project".
>>>>
>>>> Is this a bug of maven-2.0.4? Is there any way to get
>>>> pluginDescriptor in Mojo?
>>>>
>>>>
>>>>
>>>> Regards
>>>>
>>>> --
>>>>
>>>>
>>>> Jiaqi Guo
>>>>
>>>> http://www.cyclopsgroup.org
>>>> [EMAIL PROTECTED]
>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>
>
> --
>
>
> Jiaqi Guo
>
> http://www.cyclopsgroup.org
> [EMAIL PROTECTED]
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
>
--
View this message in context:
http://www.nabble.com/Can-anyone-explain-this-code-tf3218981s177.html#a9053579
Sent from the Maven - Users mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]