Once he has defined a part of the interface that is supported by the desired component, Code Conjurer can find suitable reusable components that already implement this interface by using the Merobase search engine. In Figure 1, which shows a screenshot of an Eclipse environment including Code Conjurer, the user has defined parts of the required Matrix as a UML class (top right hand window). After sending a search request to Merobase, Code Conjurer lists the discovered components in the reuse recommendation window (lower central part of Figure 1). It first displays the results and then fetches the source code so the developer can instantly browse through the interesting reuse candidates (lower right part of Figure 1) and access relevant metrics such as LOC, Halstead and complexity measures, etc.
If the developer believes that a component will be useful, he can insert it into his workspace with a double click of his mouse. Code Conjurer has an automatic dependency resolution feature that can be employed in the background to find any other classes that the chosen component depends on. After analyzing the component, the tool can trigger new searches that can find missing components that can then be inserted alongside the original. In many cases, all dependencies can be resolved and fully functioning, executable code can automatically be added to the development project.
Code Conjurer can also be set to "proactive mod," in which it monitors the work of the developer in the background and triggers new searches automatically every time the interface-defining part of the component under development changes (i.e., whenever a method is added, changed or removed). The developer can, therefore, proceed with his normal work, undisturbed, until he decides that one or more of the recommended reuse candidates are worthy of attention. He can also trigger a manual search for reuse recommendations or use Code Conjurer's quick fix integration feature that searches for reusable assets when a type in the developed Java code cannot be resolved.