| | | | | | |
. | 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.No | Scenario (Ctrl+Click point) | Action(s) with Example(s) | Additional Notes | Phase | Comments |
. | 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 accessible | Phase 1 | Done |
. | 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 anything | Phase 1 | Done |
. | 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 anything | Phase 2 | Done |
. | 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 hyperlinking | Phase 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 definition | | Phase 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 referenced | | Deferred | To be decided. Not sure whether we have to do this |
. | 8 | <bean>/<property>/<value>/TEXT | If the property is of type other than a primitive, then clicking on the text should actually jump to the bean with name equal to TEXT | | Deferred | To be decided. Not sure whether we have to do this |
. | 9 | <bean>/<property>/<idref>/bean <bean>/<property>/<idref>/local | Should jump to the bean definition | | Phase 3 (Partial) Phase 4 (Complete) | Partial complete |
. | 10 | <bean>/parent <bean>/depends-on | Should jump to the definition of the parent bean | | Phase 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 2 | Done |
. | 12 | <bean>/<lookup-method>/bean | Should jump to the bean definition. In the example above, clicking on "command" should take the user to a bean with name command | | Phase 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 2 | Done |