test_class.declarator: sonar
test_class.modifier: @InjectMocks
test_class.original_string: @InjectMocks
      SonarPlugin sonar;
test_class.type: SonarPlugin
test_class.var_name: sonar
test_class.declarator: client
test_class.modifier: @Mock
test_class.original_string: @Mock
      GenericSoftwareClient client;
test_class.type: GenericSoftwareClient
test_class.var_name: client
test_class.declarator: sonarConnectionFactory
test_class.modifier: @Mock
test_class.original_string: @Mock
      SonarConnectionFactory sonarConnectionFactory;
test_class.type: SonarConnectionFactory
test_class.var_name: sonarConnectionFactory
test_class.declarator: sonarVersionExtractor
test_class.modifier: @Mock
test_class.original_string: @Mock
      SonarVersionExtractor sonarVersionExtractor;
test_class.type: SonarVersionExtractor
test_class.var_name: sonarVersionExtractor
test_class.declarator: sonarDetector
test_class.modifier: @Mock
test_class.original_string: @Mock
      SonarDetector sonarDetector;
test_class.type: SonarDetector
test_class.var_name: sonarDetector
test_class.declarator: properties
test_class.modifier: private
test_class.original_string: private Map<String, String> properties;
test_class.type: Map<String, String>
test_class.var_name: properties
test_class.file: component/core/src/test/java/fr/norad/visuwall/plugin/sonar/SonarPluginTest.java
test_class.identifier: SonarPluginTest
test_case.body: @Test
      public void should_extract_version_from_welcome_page() throws Exception {
          when(sonarDetector.isSonarWelcomePage(any(URL.class))).thenReturn(true);
  
          when(sonarVersionExtractor.welcomePageVersion(any(URL.class))).thenReturn("2.5");
  
          URL url = new URL("http://sonar.com/v25");
          SoftwareId softwareId = sonar.getSoftwareId(url, properties);
  
          assertTrue(softwareId.isCompatible());
      }
test_case.class_method_signature: SonarPluginTest.should_extract_version_from_welcome_page()
test_case.full_signature: @Test public void should_extract_version_from_welcome_page()
test_case.identifier: should_extract_version_from_welcome_page
test_case.invocations: thenReturn when isSonarWelcomePage any thenReturn when welcomePageVersion any getSoftwareId assertTrue isCompatible
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void should_extract_version_from_welcome_page()
focal_class.declarator: SONAR_MINIMUM_COMPATIBLE_VERSION = 2.4
focal_class.modifier: private static final
focal_class.original_string: private static final double SONAR_MINIMUM_COMPATIBLE_VERSION = 2.4;
focal_class.type: double
focal_class.var_name: SONAR_MINIMUM_COMPATIBLE_VERSION
focal_class.declarator: SONAR_CORE_VERSION_KEY = "sonar.core.version"
focal_class.modifier: static final
focal_class.original_string: static final String SONAR_CORE_VERSION_KEY = "sonar.core.version";
focal_class.type: String
focal_class.var_name: SONAR_CORE_VERSION_KEY
focal_class.declarator: client
focal_class.modifier: private
focal_class.original_string: private GenericSoftwareClient client;
focal_class.type: GenericSoftwareClient
focal_class.var_name: client
focal_class.declarator: sonarConnectionFactory
focal_class.modifier: private
focal_class.original_string: private SonarConnectionFactory sonarConnectionFactory;
focal_class.type: SonarConnectionFactory
focal_class.var_name: sonarConnectionFactory
focal_class.declarator: sonarDetector = new SonarDetector()
focal_class.modifier: private
focal_class.original_string: private SonarDetector sonarDetector = new SonarDetector();
focal_class.type: SonarDetector
focal_class.var_name: sonarDetector
focal_class.declarator: sonarVersionExtractor = new SonarVersionExtractor()
focal_class.modifier: private
focal_class.original_string: private SonarVersionExtractor sonarVersionExtractor = new SonarVersionExtractor();
focal_class.type: SonarVersionExtractor
focal_class.var_name: sonarVersionExtractor
focal_class.declarator: sonarCompatibleVersionChecker = new SonarCompatibleVersionChecker(
              SONAR_MINIMUM_COMPATIBLE_VERSION)
focal_class.modifier: private
focal_class.original_string: private SonarCompatibleVersionChecker sonarCompatibleVersionChecker = new SonarCompatibleVersionChecker(
              SONAR_MINIMUM_COMPATIBLE_VERSION);
focal_class.type: SonarCompatibleVersionChecker
focal_class.var_name: sonarCompatibleVersionChecker
focal_class.file: component/core/src/main/java/fr/norad/visuwall/plugin/sonar/SonarPlugin.java
focal_class.identifier: SonarPlugin
focal_class.interfaces: implements VisuwallPlugin<SonarConnection>
focal_class.class_method_signature: SonarPlugin.SonarPlugin()
focal_class.full_signature: public  SonarPlugin()
focal_class.identifier: SonarPlugin
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.signature:  SonarPlugin()
focal_class.class_method_signature: SonarPlugin.getConnection(URL url, Map<String, String> properties)
focal_class.full_signature: @Override public SonarConnection getConnection(URL url, Map<String, String> properties)
focal_class.identifier: getConnection
focal_class.modifiers: @Override public
focal_class.parameters: (URL url, Map<String, String> properties)
focal_class.return: SonarConnection
focal_class.signature: SonarConnection getConnection(URL url, Map<String, String> properties)
focal_class.class_method_signature: SonarPlugin.getConnectionClass()
focal_class.full_signature: @Override public Class<SonarConnection> getConnectionClass()
focal_class.identifier: getConnectionClass
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: Class<SonarConnection>
focal_class.signature: Class<SonarConnection> getConnectionClass()
focal_class.class_method_signature: SonarPlugin.getName()
focal_class.full_signature: @Override public String getName()
focal_class.identifier: getName
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String getName()
focal_class.class_method_signature: SonarPlugin.getVersion()
focal_class.full_signature: @Override public float getVersion()
focal_class.identifier: getVersion
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: float
focal_class.signature: float getVersion()
focal_class.class_method_signature: SonarPlugin.getSoftwareId(URL url, Map<String, String> properties)
focal_class.full_signature: @Override public SoftwareId getSoftwareId(URL url, Map<String, String> properties)
focal_class.identifier: getSoftwareId
focal_class.modifiers: @Override public
focal_class.parameters: (URL url, Map<String, String> properties)
focal_class.return: SoftwareId
focal_class.signature: SoftwareId getSoftwareId(URL url, Map<String, String> properties)
focal_class.class_method_signature: SonarPlugin.createSoftwareIdFromWelcomePage(URL url)
focal_class.full_signature: private SoftwareId createSoftwareIdFromWelcomePage(URL url)
focal_class.identifier: createSoftwareIdFromWelcomePage
focal_class.modifiers: private
focal_class.parameters: (URL url)
focal_class.return: SoftwareId
focal_class.signature: SoftwareId createSoftwareIdFromWelcomePage(URL url)
focal_class.class_method_signature: SonarPlugin.createSoftwareIdFromProperties(URL url)
focal_class.full_signature: private SoftwareId createSoftwareIdFromProperties(URL url)
focal_class.identifier: createSoftwareIdFromProperties
focal_class.modifiers: private
focal_class.parameters: (URL url)
focal_class.return: SoftwareId
focal_class.signature: SoftwareId createSoftwareIdFromProperties(URL url)
focal_class.class_method_signature: SonarPlugin.createSoftwareId(String version)
focal_class.full_signature: private SoftwareId createSoftwareId(String version)
focal_class.identifier: createSoftwareId
focal_class.modifiers: private
focal_class.parameters: (String version)
focal_class.return: SoftwareId
focal_class.signature: SoftwareId createSoftwareId(String version)
focal_class.class_method_signature: SonarPlugin.toString()
focal_class.full_signature: @Override public String toString()
focal_class.identifier: toString
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String toString()
focal_class.class_method_signature: SonarPlugin.getPropertiesWithDefaultValue()
focal_class.full_signature: @Override public Map<String, String> getPropertiesWithDefaultValue()
focal_class.identifier: getPropertiesWithDefaultValue
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: Map<String, String>
focal_class.signature: Map<String, String> getPropertiesWithDefaultValue()
focal_method.body: @Override
      public SoftwareId getSoftwareId(URL url, Map<String, String> properties) throws SoftwareNotFoundException {
          checkNotNull(url, "url is mandatory");
          if (sonarDetector.isSonarPropertiesPage(url)) {
              return createSoftwareIdFromProperties(url);
          } else if (sonarDetector.isSonarWelcomePage(url)) {
              return createSoftwareIdFromWelcomePage(url);
          }
          throw new SoftwareNotFoundException("Url " + url.toString() + " is not compatible with Sonar");
      }
focal_method.class_method_signature: SonarPlugin.getSoftwareId(URL url, Map<String, String> properties)
focal_method.full_signature: @Override public SoftwareId getSoftwareId(URL url, Map<String, String> properties)
focal_method.identifier: getSoftwareId
focal_method.invocations: checkNotNull isSonarPropertiesPage createSoftwareIdFromProperties isSonarWelcomePage createSoftwareIdFromWelcomePage toString
focal_method.modifiers: @Override public
focal_method.parameters: (URL url, Map<String, String> properties)
focal_method.return: SoftwareId
focal_method.signature: SoftwareId getSoftwareId(URL url, Map<String, String> properties)