Skip to content

Commit c0bef4f

Browse files
geetikabatrarawagner
authored andcommitted
Adds license file in request
1 parent 0d73f47 commit c0bef4f

6 files changed

Lines changed: 126 additions & 13 deletions

File tree

plugins/com.redhat.fabric8analytics.lsp.eclipse.core/src/com/redhat/fabric8analytics/lsp/eclipse/core/RecommenderAPIProvider.java

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,14 @@
1111

1212
package com.redhat.fabric8analytics.lsp.eclipse.core;
1313

14+
import java.io.BufferedReader;
15+
import java.io.File;
16+
import java.io.FileNotFoundException;
17+
import java.io.FileReader;
1418
import java.io.IOException;
19+
import java.io.InputStream;
1520
import java.util.Map;
21+
import java.util.Set;
1622

1723
import org.apache.http.HttpEntity;
1824
import org.apache.http.HttpResponse;
@@ -21,9 +27,12 @@
2127
import org.apache.http.client.methods.HttpPost;
2228
import org.apache.http.entity.mime.HttpMultipartMode;
2329
import org.apache.http.entity.mime.MultipartEntityBuilder;
30+
import org.apache.http.entity.mime.content.FileBody;
2431
import org.apache.http.impl.client.CloseableHttpClient;
2532
import org.apache.http.impl.client.HttpClients;
2633
import org.apache.http.util.EntityUtils;
34+
import org.eclipse.core.resources.IFile;
35+
import org.eclipse.core.runtime.CoreException;
2736
import org.json.JSONException;
2837
import org.json.JSONObject;
2938

@@ -65,7 +74,7 @@ public RecommenderAPIProvider(AnalyticsAuthData analyticsAuthData) {
6574
* @param pomFiles
6675
* @return jobID
6776
*/
68-
public String requestAnalyses(Map<String, String> files) throws RecommenderAPIException {
77+
public String requestAnalyses(Map<String, String> files, Set<IFile> license) throws RecommenderAPIException {
6978

7079
checkFiles(files);// check if this is none
7180
HttpPost post = new HttpPost(
@@ -74,12 +83,30 @@ public String requestAnalyses(Map<String, String> files) throws RecommenderAPIEx
7483
post.addHeader("Authorization", analyticsAuthData.getToken());
7584

7685
MultipartEntityBuilder builder = MultipartEntityBuilder.create().setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
77-
86+
87+
7888
for (Map.Entry<String, String> fileObject : files.entrySet()) {
7989
builder.addPart("manifest[]", new PomContentBody(fileObject.getValue())).addTextBody("filePath[]",
8090
fileObject.getKey());
8191
}
92+
if(!license.isEmpty()) {
93+
File temp = license.iterator().next().getFullPath().toFile();
94+
BufferedReader br;
95+
try {
96+
br = new BufferedReader(new FileReader(temp));
97+
String line = null;
98+
while ((line = br.readLine()) != null) {
99+
System.out.println(line);
100+
}
101+
} catch (IOException e) {
102+
// TODO Auto-generated catch block
103+
e.printStackTrace();
104+
}
105+
82106

107+
FileBody licenseBody = new FileBody(temp);
108+
builder.addPart("license[]", licenseBody);
109+
}
83110
HttpEntity multipart = builder.build();
84111
post.setEntity(multipart);
85112

plugins/com.redhat.fabric8analytics.lsp.eclipse.core/src/com/redhat/fabric8analytics/lsp/eclipse/core/job/SendToFabric8AnalysisJob.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,13 @@ public class SendToFabric8AnalysisJob extends Job {
3434
private String jobID;
3535
private Set<IFile> pomFiles;
3636
private RecommenderAPIProvider provider;
37+
private Set<IFile> license;
3738

38-
public SendToFabric8AnalysisJob(RecommenderAPIProvider provider, Set<IFile> pomFiles) {
39+
public SendToFabric8AnalysisJob(RecommenderAPIProvider provider, Set<IFile> pomFiles, Set<IFile> license) {
3940
super("Send poms to fabric8-analysis");
4041
this.pomFiles = pomFiles;
4142
this.provider = provider;
43+
this.license = license;
4244
}
4345

4446
@Override
@@ -56,7 +58,8 @@ protected IStatus run(IProgressMonitor monitor) {
5658
String effectivePom = sw.toString();
5759
effectivePomFiles.put(pomFile.getFullPath().toString(), effectivePom);
5860
}
59-
jobID = provider.requestAnalyses(effectivePomFiles);
61+
62+
jobID = provider.requestAnalyses(effectivePomFiles, license);
6063
} catch (Exception e) {
6164
return new Status(Status.ERROR, Fabric8AnalysisLSCoreActivator.PLUGIN_ID, "Error during communication with server", e);
6265
}

plugins/com.redhat.fabric8analytics.lsp.eclipse.ui/src/com/redhat/fabric8analytics/lsp/eclipse/ui/EditorComposite.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ public void done(IJobChangeEvent event) {
8585
AnalyticsAuthData analyticsAuthData = getAuthDataJob.getAuthData();
8686
if(analyticsAuthData != null) {
8787
RecommenderAPIProvider provider = new RecommenderAPIProvider(analyticsAuthData);
88-
new AnalysesJobHandler(provider, Collections.singleton(currentPomFile), EditorComposite.this).analyze();
88+
new AnalysesJobHandler(provider, Collections.singleton(currentPomFile), Collections.EMPTY_SET, EditorComposite.this).analyze();
8989
}
9090
}
9191
});

plugins/com.redhat.fabric8analytics.lsp.eclipse.ui/src/com/redhat/fabric8analytics/lsp/eclipse/ui/ExitHandler.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,12 @@ public class ExitHandler extends AbstractHandler {
4040
@Override
4141
public Object execute(ExecutionEvent event) throws ExecutionException {
4242
final Set<IFile> pomFiles;
43+
final Set<IFile> license;
4344
try {
4445
pomFiles = WorkspaceFilesFinder.getInstance().findPOMs();
46+
license = WorkspaceFilesFinder.getInstance().findLicense();
4547
} catch (CoreException e1) {
46-
MessageDialogUtils.displayErrorMessage("Error while searching for POM files", e1);
48+
MessageDialogUtils.displayErrorMessage("Error while searching for Pom or license files", e1);
4749
return null;
4850
}
4951
if (pomFiles.isEmpty()) {
@@ -73,7 +75,7 @@ public void run() {
7375
});
7476

7577
RecommenderAPIProvider provider = new RecommenderAPIProvider(analyticsAuthData);
76-
new AnalysesJobHandler(provider, pomFiles, null).analyze();
78+
new AnalysesJobHandler(provider, pomFiles, license, null).analyze();
7779
}
7880

7981
}

plugins/com.redhat.fabric8analytics.lsp.eclipse.ui/src/com/redhat/fabric8analytics/lsp/eclipse/ui/internal/AnalysesJobHandler.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,14 @@ public class AnalysesJobHandler {
4040
private Set<IFile> pomFiles;
4141

4242
private EditorComposite editorComposite;
43+
44+
private Set<IFile> license;
4345

44-
public AnalysesJobHandler(RecommenderAPIProvider provider, Set<IFile> pomFiles, EditorComposite editorComposite) {
46+
public AnalysesJobHandler(RecommenderAPIProvider provider, Set<IFile> pomFiles, Set<IFile> license, EditorComposite editorComposite) {
4547
this.provider = provider;
4648
this.pomFiles = pomFiles;
4749
this.editorComposite = editorComposite;
50+
this.license = license;
4851
}
4952

5053
public void analyze() {
@@ -62,7 +65,7 @@ public void analyze() {
6265
} else {
6366
editorComposite.updateBrowser(url.toString());
6467
}
65-
SendToFabric8AnalysisJob sentToAnalysisJob = new SendToFabric8AnalysisJob(provider, pomFiles);
68+
SendToFabric8AnalysisJob sentToAnalysisJob = new SendToFabric8AnalysisJob(provider, pomFiles, license);
6669
sentToAnalysisJob.schedule();
6770

6871
sentToAnalysisJob.addJobChangeListener(new JobChangeAdapter() {

plugins/com.redhat.fabric8analytics.lsp.eclipse.ui/src/com/redhat/fabric8analytics/lsp/eclipse/ui/internal/WorkspaceFilesFinder.java

Lines changed: 82 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.eclipse.core.resources.IContainer;
2121
import org.eclipse.core.resources.IFile;
2222
import org.eclipse.core.resources.IFolder;
23+
import org.eclipse.core.resources.IProject;
2324
import org.eclipse.core.resources.IResource;
2425
import org.eclipse.core.runtime.CoreException;
2526
import org.eclipse.core.runtime.IAdaptable;
@@ -38,7 +39,7 @@
3839
public class WorkspaceFilesFinder {
3940

4041
private static final Set<String> EXCLUDED_FOLDERS = Stream.of("bin", "target").collect(Collectors.toSet());
41-
42+
4243
private static final WorkspaceFilesFinder INSTANCE = new WorkspaceFilesFinder();
4344

4445
public static WorkspaceFilesFinder getInstance() {
@@ -96,12 +97,12 @@ private void findPOMs(Set<IFile> files, IAdaptable adaptable) throws CoreExcepti
9697
return;
9798
}
9899
}
99-
100+
100101
IContainer container = (IContainer) adaptable.getAdapter(IContainer.class);
101102
if (container == null || !container.isAccessible()) {
102103
return;
103104
}
104-
105+
105106
for (IResource member : container.members()) {
106107
if (member instanceof IFolder && EXCLUDED_FOLDERS.contains(member.getName())) {
107108
continue;
@@ -125,5 +126,82 @@ public Set<IFile> getCurrentPom() throws CoreException
125126
pomFile.add(file);
126127
return pomFile;
127128
}
128-
}
129129

130+
/**
131+
* Finds the license files in the root of workspace selected projects
132+
*
133+
* @return
134+
* @throws CoreException
135+
*/
136+
public Set<IFile> findLicense() throws CoreException {
137+
IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
138+
if (window == null) {
139+
return Collections.emptySet();
140+
}
141+
142+
IStructuredSelection selection = (IStructuredSelection) window.getSelectionService().getSelection();
143+
if (selection == null) {
144+
return Collections.emptySet();
145+
}
146+
return findLicense(selection);
147+
}
148+
149+
/**
150+
* Finds the license files in the root of selected projects
151+
* @param selection
152+
* @return
153+
* @throws CoreException
154+
*/
155+
public Set<IFile> findLicense(IStructuredSelection selection) throws CoreException {
156+
Set<IFile> files = new HashSet<IFile>();
157+
if(selection instanceof IStructuredSelection) {
158+
IStructuredSelection structurredSelection = (IStructuredSelection)selection;
159+
Object firstSeleciton = structurredSelection.getFirstElement();
160+
161+
IProject selectedProject = null;
162+
163+
if (firstSeleciton instanceof IProject) {
164+
// selectedProject = (IProject) firstSeleciton;
165+
for (Object o : selection.toList()) {
166+
if (o instanceof IAdaptable) {
167+
findLicense(files, (IAdaptable) o);
168+
}
169+
}
170+
171+
return files;
172+
}
173+
174+
}
175+
return files;
176+
}
177+
/**
178+
* Finds the license file in the the project.
179+
* @param adaptable
180+
* @return
181+
* @throws CoreException
182+
*/
183+
private void findLicense(Set<IFile> files, IAdaptable adaptable) throws CoreException {
184+
185+
IContainer container = (IContainer) adaptable.getAdapter(IContainer.class);
186+
if (container == null || !container.isAccessible()) {
187+
return;
188+
}
189+
for (IResource member : container.members()) {
190+
if (member instanceof IFile && member.getName().toLowerCase().equals("license")) {
191+
IFile file = (IFile) member.getAdapter(IFile.class);
192+
if (file != null) {
193+
if (file.isAccessible()) {
194+
files.add(file);
195+
} else {
196+
return;
197+
}
198+
}
199+
200+
}
201+
202+
}
203+
204+
205+
}
206+
207+
}

0 commit comments

Comments
 (0)