.

Spring Hyperlinking Scenarios

.

Phase 1: Simple Links

.

Phase 2: Links requiring Java Model (Retouche) interaction

.

Phase 3: Links requiring local interaction model for XML

.

Phase 4: Links requiring XAM model implementation

.

Currently deferred

.

S.NoScenario (Ctrl+Click point)Action(s) with Example(s)Additional NotesPhaseComments

.

1<import>/resource<import resource="foo.xml"/>
Ctrl+Click on foo.xml should open the foo.xml file in the editor
No-op for files not accessiblePhase 1Done

.

2<bean>/class<bean id="sampleBean" class="com.sun.foo.bar.FooBean"/>
In this scenario, when the user presses Ctrl+Click in the class attribute's value, the corresponding java file of the class should be opened in the editor.
For classes which are in one of the jar's on the classpath (not editable), a click should not do anythingPhase 1Done

.

3<alias>/name<alias name="fromName" alias="toName"/>
Clicking on fromName should jump to the bean with name fromName
Phase 3 (Partial)
Phase 4 (Complete)
Partial complete

.

4<bean>/<property>/name<bean id="fooBean" class="FooClass">
<property name="me" ref="fooBeanTwo"/>
</bean>

Clicking on the "me" should take the user to the setMe() method in the FooClass' java file or any of it's ancestors (if they are editable)
For classes which are in one of the jar's on the classpath (not editable), a click should not do anythingPhase 2Done

.

5<bean>/factory-method<bean id="example" class="ExampleBean2" factory-method="createInstance"
Clicking on createInstance will open ExampleBean2 class in the editor at the line where createInstance is defined

<bean id="example" factory-bean="SomeBeanReference" factory-method="createInstance"/>
Now clicking on createInstance should open the class of SomeBeanReference bean, and place the cursor on the line where createInstance() method has been defined.
If the said method is missing on the class, no hyperlinkingPhase 2 (Partial)
Phase 4 (Complete)
Partial complete

.

6<property>/<ref>/bean
<property>/ref
<constructor-arg>/ref
<constructor-arg>/<ref>/bean
Should jump to the bean definitionPhase 3 (Partial)
Phase 4 (Complete)
Partial complete

.

7<constructor-arg>Clicking on the constructor arg tag should take the user to the argument in the constructor or the static factory method being referencedDeferredTo be decided. Not sure whether we have to do this

.

8<bean>/<property>/<value>/TEXTIf the property is of type other than a primitive, then clicking on the text should actually jump to the bean with name equal to TEXTDeferredTo be decided. Not sure whether we have to do this

.

9<bean>/<property>/<idref>/bean
<bean>/<property>/<idref>/local
Should jump to the bean definitionPhase 3 (Partial)
Phase 4 (Complete)
Partial complete

.

10<bean>/parent
<bean>/depends-on
Should jump to the definition of the parent beanPhase 3 (Partial)
Phase 4 (Complete)
Partial complete

.

11<bean>/<lookup-method>/name<bean id="commandManager" class="fiona.apple.CommandManager">
<lookup-method name="createCommand" bean="command"/>
</bean>
Clicking on createCommand should take the user to the method in the CommandManager class
Phase 2Done

.

12<bean>/<lookup-method>/beanShould jump to the bean definition. In the example above, clicking on "command" should take the user to a bean with name commandPhase 3 (Partial)
Phase 4 (Complete)
Partial complete

.

13<bean>/<replaced-method>/name<bean id="myValueCalculator class="x.y.z.MyValueCalculator">
<!-- arbitrary method replacement -->
<replaced-method name="computeValue" replacer="replacementComputeValue">
<arg-type>String</arg-type>
</replaced-method>
</bean>
<bean id="replacementComputeValue" class="a.b.c.ReplacementComputeValue"/>

When user clicks on "computeValue", he should be taken to the computeValue() method in the bean class. It should be noted that the arg-type arguments will have to be introspected to jump to the correct method definition in case of overloaded methods.
Phase 2Done

.

14<bean>/<replaced-method>/replacerEg. same as above.
Clicking on the replacer attribute value takes the user to the replacer bean definition
Phase 3 (Partial)
Phase 4 (Complete)
Partial complete

.

15<bean>/<replaced-method>/<arg-type>/TEXTEg. same as above.
The type text can be a FQN or a uniquely identifiable prefix of the class name. Clicking on this takes the user to the source file of the class
DeferredTo be decided. Not sure whether we have to do this

.

16<bean>/init-method
<bean>/destroy-method
Jump to the method definition in the bean classPhase 2Done