2016-05-09 7 views
0

私はソナープラグインを開発しており、それについていくつか質問があります。 私のプラグインは、それらを操作してページに表示するために、データベースからデータを取得する必要があります。ソナープラグインデータベースに照会してください

現在のところ、私のプラグインはJDBCドライバを使用してデータベースにクエリを行っていますが、本番環境では問題になると思います。 私はAPIを使用して、またはソナーオブジェクトを使用して私のプラグインからデータベース(ちょうど選択クエリ)を接続してクエリする方法を探したいと思います...

私はいくつかのWebServiceは知っていますが、私が必要とするすべての情報を私に渡すので、私は自分で質問をしなければなりません。

私のプラグインはSonarqube 4.1用です。

私の説明がはっきりしていれば幸いです。

答えて

1

私は解決策を見つけたと思う:

私はコンストラクタでdatabaseSessionFactoryを取得するクラスを持っています。私はSonarがコンストラクタによる依存性注入を使用しているところを読んでいます。

public class MyClass implements WebService{ 

     privateDatabaseSessionFactory sessionFactory; 

     public MyClass(DatabaseSessionFactory sessionFactory) { 
      this.sessionFactory = sessionFactory; 
     } 
    } 

そして後に、このクラスでは、私はデータベースを照会するためのSessionFactory変数を使用することができます。この例では

 DatabaseSession s = sessionFactory.getSession(); 
     String sqlQuery ="SELECT d.data FROM " + SnapshotSource.class.getName() + " d " 
        + "WHERE d.id = :Id"; 
     Query query = s.createQuery(sqlQuery); 

     query.setParameter("Id", 1); 

     List<String> queryResult = (List<String>) query.getResultList(); 
     //queryResult.get(0) contains the source 

、私は、データベース内の最初のスナップショットのソースを取得します。 私はそれが良い解決策であり、誰にでも役立つことを願っています。

0

SonarQubeデータベースに直接照会してはなりません。 DBスキーマは非公開であり、予告なく変更される場合があります。また、SonarQube自体に副作用が発生する可能性があります。

DBからいくつかのものを読み取る必要がある場合は、SonarQubeによって操作されるほとんどの「オブジェクト」を照会できるWebサービスAPIを使用する必要があります。 この場合、これは実際にはプラグインではなく、外部クライアントアプリケーションです。

SonarQubeのUI(カスタムウィジェットのようなもの)に何かを表示するSonarQubeプラグインを作成する場合は、SonarQube Java APIを使用することもできます。

+0

はい私はこのメソッドを試しました: "Sonar sonar = Sonar.create(" http:// localhost:9000 "、" login "、" password ");" Javaで作成されたwebServiceでエラーが発生しました: "ERROR [rails] Java :: JavaLang :: NoClassDefFoundError(org/sonar/wsclient/Sonar)" – Hijh4ck

関連する問題