Author: kwright
Date: Tue Sep 16 17:28:39 2014
New Revision: 1625338

URL: http://svn.apache.org/r1625338
Log:
Fix for CONNECTORS-1026.  Committed on behalf of Daniel Aschauer.

Added:
    
manifoldcf/trunk/connectors/jira/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jira/JiraServerInfo.java
   (with props)
Modified:
    manifoldcf/trunk/CHANGES.txt
    
manifoldcf/trunk/connectors/jira/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jira/JiraRepositoryConnector.java
    
manifoldcf/trunk/connectors/jira/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jira/JiraSession.java

Modified: manifoldcf/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/manifoldcf/trunk/CHANGES.txt?rev=1625338&r1=1625337&r2=1625338&view=diff
==============================================================================
--- manifoldcf/trunk/CHANGES.txt (original)
+++ manifoldcf/trunk/CHANGES.txt Tue Sep 16 17:28:39 2014
@@ -3,6 +3,9 @@ $Id$
 
 ======================= 2.0-dev =====================
 
+CONNECTORS-1026: Change JIRA URL to use the standard form.
+(Daniel Aschaeur)
+
 CONNECTORS-1027: Improve some general and PostgreSQL queries
 for large crawling sets.
 (Paul Boichat, Karl Wright)

Modified: 
manifoldcf/trunk/connectors/jira/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jira/JiraRepositoryConnector.java
URL: 
http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/jira/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jira/JiraRepositoryConnector.java?rev=1625338&r1=1625337&r2=1625338&view=diff
==============================================================================
--- 
manifoldcf/trunk/connectors/jira/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jira/JiraRepositoryConnector.java
 (original)
+++ 
manifoldcf/trunk/connectors/jira/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jira/JiraRepositoryConnector.java
 Tue Sep 16 17:28:39 2014
@@ -35,6 +35,7 @@ import java.util.Map;
 import java.util.Date;
 import java.util.Set;
 import java.util.Iterator;
+
 import org.apache.manifoldcf.crawler.system.Logging;
 import org.apache.manifoldcf.crawler.connectors.BaseRepositoryConnector;
 import org.apache.manifoldcf.agents.interfaces.ServiceInterruption;
@@ -51,6 +52,7 @@ import org.apache.manifoldcf.core.interf
 import org.apache.manifoldcf.crawler.interfaces.IProcessActivity;
 import org.apache.manifoldcf.crawler.interfaces.ISeedingActivity;
 import org.apache.manifoldcf.crawler.interfaces.IExistingVersions;
+
 import java.util.Map.Entry;
 
 /**
@@ -1022,7 +1024,7 @@ public class JiraRepositoryConnector ext
               rd.addField(entry.getKey(), entry.getValue());
             }
 
-            String documentURI = jiraFile.getSelf();
+            String documentURI = composeDocumentURI(getBaseUrl(session), 
jiraFile.getKey());
             String document = getJiraBody(jiraFile);
             try {
               byte[] documentBytes = document.getBytes(StandardCharsets.UTF_8);
@@ -1066,6 +1068,19 @@ public class JiraRepositoryConnector ext
     }
     return body.toString();
   }
+  
+  
+  /**
+   * Compose the "real" url of the jira issue (BASEURL+/browse/+ISSUEKEY)
+   * @param baseUrl
+   * @param key
+   * @return
+   */
+  private String composeDocumentURI(String baseUrl, String key) {
+         if (!baseUrl.endsWith("/"))
+               baseUrl = baseUrl + "/";
+      return baseUrl + "browse/" + key;
+  }
 
   /** Grab forced acl out of document specification.
   *@param spec is the document specification.
@@ -1314,6 +1329,24 @@ public class JiraRepositoryConnector ext
     return t.getResponse();
   }
   
+  
+  protected String getBaseUrl(JiraSession jiraSession) throws 
ManifoldCFException, ServiceInterruption {
+         String url = "";
+         try {
+                 url = jiraSession.getBaseUrl();
+                 return url;
+           } catch (java.net.SocketTimeoutException e) {
+               handleIOException(e);
+           } catch (InterruptedIOException e) {
+               handleIOException(e);
+           } catch (IOException e) {
+               handleIOException(e);
+           } catch (ResponseException e) {
+               handleResponseException(e);
+           }
+       return url;
+  }
+  
   protected static class GetIssueThread extends Thread {
 
     protected final JiraSession session;

Added: 
manifoldcf/trunk/connectors/jira/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jira/JiraServerInfo.java
URL: 
http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/jira/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jira/JiraServerInfo.java?rev=1625338&view=auto
==============================================================================
--- 
manifoldcf/trunk/connectors/jira/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jira/JiraServerInfo.java
 (added)
+++ 
manifoldcf/trunk/connectors/jira/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jira/JiraServerInfo.java
 Tue Sep 16 17:28:39 2014
@@ -0,0 +1,48 @@
+/**
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You under the Apache License, Version 2.0
+* (the "License"); you may not use this file except in compliance with
+* the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package org.apache.manifoldcf.crawler.connectors.jira;
+
+import org.json.simple.JSONObject;
+
+/** An instance of this class represents the ServerInfo, but is used only to 
get the baseUrl.
+ * Other fields that are available: versionNumbers, buildDate, serverTime, 
scmInfo, serverTitle
+*/
+public class JiraServerInfo extends JiraJSONResponse {
+       
+  // Specific keys we care about
+  private final static String BASEURL = "baseUrl";
+  private final static String BUILDNUMBER = "buildNumber";
+  private final static String VERSION = "version";
+
+  public JiraServerInfo() {
+    super();
+  }
+
+  public String getBaseUrl() {
+    return (String)((JSONObject)object).get(BASEURL);
+  }
+
+  public Long getBuildNumber() {
+    return (Long)((JSONObject)object).get(BUILDNUMBER);
+  }
+  
+  public String getVersion() {
+    return (String)((JSONObject)object).get(VERSION);
+  }
+  
+}

Propchange: 
manifoldcf/trunk/connectors/jira/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jira/JiraServerInfo.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
manifoldcf/trunk/connectors/jira/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jira/JiraServerInfo.java
------------------------------------------------------------------------------
    svn:keywords = Id

Modified: 
manifoldcf/trunk/connectors/jira/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jira/JiraSession.java
URL: 
http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/jira/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jira/JiraSession.java?rev=1625338&r1=1625337&r2=1625338&view=diff
==============================================================================
--- 
manifoldcf/trunk/connectors/jira/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jira/JiraSession.java
 (original)
+++ 
manifoldcf/trunk/connectors/jira/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jira/JiraSession.java
 Tue Sep 16 17:28:39 2014
@@ -30,8 +30,8 @@ import java.io.InputStream;
 import java.io.InputStreamReader;
 
 import org.apache.manifoldcf.core.util.URLEncoder;
-import java.nio.charset.Charset;
 
+import java.nio.charset.Charset;
 import java.nio.charset.StandardCharsets;
 import java.util.Map;
 import java.util.HashMap;
@@ -66,9 +66,7 @@ import org.apache.http.client.AuthCache;
 import org.apache.http.impl.client.BasicAuthCache;
 import org.apache.http.impl.auth.BasicScheme;
 import org.apache.http.client.protocol.HttpClientContext;
-
 import org.apache.http.ParseException;
-
 import org.json.simple.JSONObject;
 import org.json.simple.JSONValue;
 import org.json.simple.JSONArray;
@@ -83,6 +81,7 @@ public class JiraSession {
   private final String path;
   private final String clientId;
   private final String clientSecret;
+  private String baseUrl;
   
   private HttpClientConnectionManager connectionManager;
   private HttpClient httpClient;
@@ -292,6 +291,21 @@ public class JiraSession {
     statistics.put("Total Issues", qr.getTotal().toString());
     return statistics;
   }
+  
+  /**
+   * Get baseUrl via serverInfo API call
+   * @return
+   * @throws IOException
+   * @throws ResponseException
+   */
+  public String getBaseUrl() throws IOException, ResponseException {
+    if (this.baseUrl == null) {
+      JiraServerInfo jiraServerInfo = new JiraServerInfo();
+      getRest("serverInfo",jiraServerInfo);
+      this.baseUrl = jiraServerInfo.getBaseUrl();
+    }
+    return this.baseUrl;
+  }
 
   /**
    * Get the list of matching root documents, e.g. seeds.


Reply via email to