Skip to content

Commit 8e343af

Browse files
authored
add client libraries group (#1575)
* add client libraries group * add tooltip * code review * fix classpathContainerPage id * fix logger class * fix bad merge
1 parent 2360f53 commit 8e343af

14 files changed

Lines changed: 278 additions & 109 deletions

File tree

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
/*
2+
* Copyright 2017 Google Inc.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package com.google.cloud.tools.eclipse.appengine.libraries.ui;
18+
19+
import org.junit.Assert;
20+
import org.junit.Test;
21+
22+
public class ApiClientLibrariesPageTest {
23+
24+
private final ApiClientLibrariesPage page = new ApiClientLibrariesPage();
25+
26+
@Test
27+
public void testConstructor() {
28+
Assert.assertEquals("Google Client APIs for Java", page.getTitle());
29+
Assert.assertNull(page.getMessage());
30+
Assert.assertNull(page.getErrorMessage());
31+
Assert.assertEquals(
32+
"Additional jars used by Google Client APIs for Java",
33+
page.getDescription());
34+
Assert.assertNotNull(page.getImage());
35+
}
36+
37+
@Test
38+
public void testFinish() {
39+
Assert.assertTrue(page.finish());
40+
}
41+
42+
@Test
43+
public void testGetSelection() {
44+
Assert.assertNull(page.getSelection());
45+
}
46+
47+
}

plugins/com.google.cloud.tools.eclipse.appengine.libraries.ui.test/src/com/google/cloud/tools/eclipse/appengine/libraries/ui/MessagesTest.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,26 @@
2222
public class MessagesTest {
2323

2424
@Test
25-
public void testTitle() {
26-
Assert.assertEquals("App Engine Standard Environment Libraries", Messages.getString("title"));
25+
public void testAppEngineTitle() {
26+
Assert.assertEquals("App Engine Standard Environment Libraries", Messages.getString("appengine-title"));
27+
}
28+
29+
@Test
30+
public void testClientApisTitle() {
31+
Assert.assertEquals("Google Client APIs for Java", Messages.getString("clientapis-title"));
32+
}
33+
34+
@Test
35+
public void testClientApisDescription() {
36+
Assert.assertEquals("Additional jars used by Google Client APIs for Java",
37+
Messages.getString("clientapis-description"));
2738
}
2839

2940
@Test
3041
public void testDescription() {
3142
Assert.assertEquals(
3243
"Additional jars commonly used in App Engine Standard Environment applications",
33-
Messages.getString("description"));
44+
Messages.getString("appengine-description"));
3445
}
3546

3647

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,18 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<?eclipse version="3.4"?>
33
<plugin>
4+
45
<extension point="org.eclipse.jdt.ui.classpathContainerPage">
56
<classpathContainerPage
6-
id="com.google.cloud.tools.eclipse.appengine.libraries.ui"
7+
id="com.google.cloud.tools.eclipse.appengine.libraries"
78
name="App Engine Libraries"
89
class="com.google.cloud.tools.eclipse.appengine.libraries.ui.AppEngineLibrariesPage">
910
</classpathContainerPage>
11+
<classpathContainerPage
12+
id="com.google.cloud.tools.eclipse.appengine.libraries"
13+
name="Google API Libraries"
14+
class="com.google.cloud.tools.eclipse.appengine.libraries.ui.ApiClientLibrariesPage">
15+
</classpathContainerPage>
16+
1017
</extension>
1118
</plugin>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/*
2+
* Copyright 2017 Google Inc.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package com.google.cloud.tools.eclipse.appengine.libraries.ui;
18+
19+
import com.google.cloud.tools.eclipse.appengine.libraries.model.CloudLibraries;
20+
21+
public class ApiClientLibrariesPage extends CloudLibrariesPage {
22+
23+
public ApiClientLibrariesPage() {
24+
super(CloudLibraries.CLIENT_APIS_GROUP);
25+
}
26+
27+
}

plugins/com.google.cloud.tools.eclipse.appengine.libraries.ui/src/com/google/cloud/tools/eclipse/appengine/libraries/ui/AppEngineLibrariesPage.java

Lines changed: 3 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -16,99 +16,15 @@
1616

1717
package com.google.cloud.tools.eclipse.appengine.libraries.ui;
1818

19-
import java.util.ArrayList;
20-
import java.util.List;
21-
import java.util.logging.Level;
22-
import java.util.logging.Logger;
23-
24-
import org.eclipse.core.runtime.CoreException;
25-
import org.eclipse.core.runtime.NullProgressMonitor;
26-
import org.eclipse.jdt.core.IClasspathEntry;
27-
import org.eclipse.jdt.core.IJavaProject;
28-
import org.eclipse.jdt.ui.wizards.IClasspathContainerPage;
29-
import org.eclipse.jdt.ui.wizards.IClasspathContainerPageExtension;
30-
import org.eclipse.jdt.ui.wizards.IClasspathContainerPageExtension2;
31-
import org.eclipse.jface.wizard.WizardPage;
32-
import org.eclipse.swt.SWT;
33-
import org.eclipse.swt.layout.GridLayout;
34-
import org.eclipse.swt.widgets.Composite;
35-
36-
import com.google.cloud.tools.eclipse.appengine.libraries.BuildPath;
37-
import com.google.cloud.tools.eclipse.appengine.libraries.model.Library;
38-
import com.google.cloud.tools.eclipse.appengine.ui.AppEngineImages;
39-
import com.google.cloud.tools.eclipse.appengine.ui.AppEngineLibrariesSelectorGroup;
40-
import com.google.cloud.tools.eclipse.util.MavenUtils;
19+
import com.google.cloud.tools.eclipse.appengine.libraries.model.CloudLibraries;
4120

4221
/**
4322
* UI for adding App Engine libraries to an existing project.
4423
*/
45-
public class AppEngineLibrariesPage extends WizardPage implements IClasspathContainerPage,
46-
IClasspathContainerPageExtension, IClasspathContainerPageExtension2 {
47-
48-
private static final Logger logger = Logger.getLogger(AppEngineLibrariesPage.class.getName());
49-
50-
private AppEngineLibrariesSelectorGroup librariesSelector;
51-
private IJavaProject project;
24+
public class AppEngineLibrariesPage extends CloudLibrariesPage {
5225

5326
public AppEngineLibrariesPage() {
54-
super("appengine-libraries-page"); //$NON-NLS-1$
55-
setTitle(Messages.getString("title")); //$NON-NLS-1$
56-
setDescription(Messages.getString("description")); //$NON-NLS-1$
57-
setImageDescriptor(AppEngineImages.appEngine(64));
58-
}
59-
60-
@Override
61-
public void createControl(Composite parent) {
62-
Composite composite = new Composite(parent, SWT.BORDER);
63-
composite.setLayout(new GridLayout(2, true));
64-
65-
librariesSelector = new AppEngineLibrariesSelectorGroup(composite);
66-
67-
setControl(composite);
68-
}
69-
70-
@Override
71-
public boolean finish() {
72-
return true;
73-
}
74-
75-
@Override
76-
public IClasspathEntry getSelection() {
77-
// Since this class implements IClasspathContainerPageExtension2,
78-
// Eclipse calls getNewContainers instead.
79-
logger.log(Level.WARNING, "Unexpected call to getSelection()");
80-
return null;
81-
}
82-
83-
@Override
84-
public void setSelection(IClasspathEntry containerEntry) {
85-
}
86-
87-
@Override
88-
public void initialize(IJavaProject project, IClasspathEntry[] currentEntries) {
89-
this.project = project;
90-
}
91-
92-
@Override
93-
public IClasspathEntry[] getNewContainers() {
94-
List<Library> libraries = new ArrayList<>(librariesSelector.getSelectedLibraries());
95-
if (libraries == null || libraries.isEmpty()) {
96-
return null;
97-
}
98-
99-
try {
100-
if (MavenUtils.hasMavenNature(project.getProject())) {
101-
BuildPath.addMavenLibraries(project.getProject(), libraries, new NullProgressMonitor());
102-
return new IClasspathEntry[0];
103-
} else {
104-
IClasspathEntry[] added =
105-
BuildPath.listAdditionalLibraries(project, libraries, new NullProgressMonitor());
106-
return added;
107-
}
108-
} catch (CoreException ex) {
109-
logger.log(Level.WARNING, "Error adding libraries to project", ex);
110-
return new IClasspathEntry[0];
111-
}
27+
super(CloudLibraries.APP_ENGINE_GROUP);
11228
}
11329

11430
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
/*
2+
* Copyright 2017 Google Inc.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package com.google.cloud.tools.eclipse.appengine.libraries.ui;
18+
19+
import java.util.ArrayList;
20+
import java.util.List;
21+
import java.util.logging.Level;
22+
import java.util.logging.Logger;
23+
24+
import org.eclipse.core.runtime.CoreException;
25+
import org.eclipse.core.runtime.NullProgressMonitor;
26+
import org.eclipse.jdt.core.IClasspathEntry;
27+
import org.eclipse.jdt.core.IJavaProject;
28+
import org.eclipse.jdt.ui.wizards.IClasspathContainerPage;
29+
import org.eclipse.jdt.ui.wizards.IClasspathContainerPageExtension;
30+
import org.eclipse.jdt.ui.wizards.IClasspathContainerPageExtension2;
31+
import org.eclipse.jface.wizard.WizardPage;
32+
import org.eclipse.swt.SWT;
33+
import org.eclipse.swt.layout.GridLayout;
34+
import org.eclipse.swt.widgets.Composite;
35+
36+
import com.google.cloud.tools.eclipse.appengine.libraries.BuildPath;
37+
import com.google.cloud.tools.eclipse.appengine.libraries.model.Library;
38+
import com.google.cloud.tools.eclipse.appengine.ui.AppEngineImages;
39+
import com.google.cloud.tools.eclipse.appengine.ui.LibrarySelectorGroup;
40+
import com.google.cloud.tools.eclipse.util.MavenUtils;
41+
42+
public abstract class CloudLibrariesPage extends WizardPage implements IClasspathContainerPage,
43+
IClasspathContainerPageExtension, IClasspathContainerPageExtension2 {
44+
45+
private static final Logger logger = Logger.getLogger(CloudLibrariesPage.class.getName());
46+
private LibrarySelectorGroup librariesSelector;
47+
private IJavaProject project;
48+
private final String group;
49+
50+
protected CloudLibrariesPage(String group) {
51+
super(group + "-page"); //$NON-NLS-1$
52+
setTitle(Messages.getString(group + "-title")); //$NON-NLS-1$
53+
setDescription(Messages.getString(group + "-description")); //$NON-NLS-1$
54+
setImageDescriptor(AppEngineImages.appEngine(64));
55+
this.group = group;
56+
}
57+
58+
@Override
59+
public void createControl(Composite parent) {
60+
Composite composite = new Composite(parent, SWT.BORDER);
61+
composite.setLayout(new GridLayout(2, true));
62+
63+
librariesSelector = new LibrarySelectorGroup(composite, group);
64+
65+
setControl(composite);
66+
}
67+
68+
@Override
69+
public boolean finish() {
70+
return true;
71+
}
72+
73+
@Override
74+
public IClasspathEntry getSelection() {
75+
// Since this class implements IClasspathContainerPageExtension2,
76+
// Eclipse calls getNewContainers instead.
77+
logger.log(Level.WARNING, "Unexpected call to getSelection()");
78+
return null;
79+
}
80+
81+
@Override
82+
public void setSelection(IClasspathEntry containerEntry) {
83+
}
84+
85+
@Override
86+
public void initialize(IJavaProject project, IClasspathEntry[] currentEntries) {
87+
this.project = project;
88+
}
89+
90+
@Override
91+
public IClasspathEntry[] getNewContainers() {
92+
List<Library> libraries = new ArrayList<>(librariesSelector.getSelectedLibraries());
93+
if (libraries == null || libraries.isEmpty()) {
94+
return null;
95+
}
96+
97+
try {
98+
if (MavenUtils.hasMavenNature(project.getProject())) {
99+
BuildPath.addMavenLibraries(project.getProject(), libraries, new NullProgressMonitor());
100+
return new IClasspathEntry[0];
101+
} else {
102+
IClasspathEntry[] added =
103+
BuildPath.listAdditionalLibraries(project, libraries, new NullProgressMonitor());
104+
return added;
105+
}
106+
} catch (CoreException ex) {
107+
logger.log(Level.WARNING, "Error adding libraries to project", ex);
108+
return new IClasspathEntry[0];
109+
}
110+
}
111+
112+
}
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
1-
title=App Engine Standard Environment Libraries
2-
description=Additional jars commonly used in App Engine Standard Environment applications
1+
appengine-title=App Engine Standard Environment Libraries
2+
appengine-description=Additional jars commonly used in App Engine Standard Environment applications
3+
clientapis-title=Google Client APIs for Java
4+
clientapis-description=Additional jars used by Google Client APIs for Java
5+

plugins/com.google.cloud.tools.eclipse.appengine.libraries/plugin.properties

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,6 @@ pluginName=Cloud Tools For Eclipse App Engine Libraries Management
22
providerName=Google Inc.
33
objectify.tooltip=com.googlecode.objectify, a Java data access API designed for Google Cloud Datastore
44
appengine.api.tooltip=The com.google.appengine.api, com.google.apphosting, and javax.mail libraries
5+
googleapiclient.tooltip=Functionality common to Google client APIs, including HTTP transport, \
6+
error handling, authentication, JSON and protobuf parsing, media download/upload, and batching.
57
endpoints.tooltip=Google Cloud Endpoints v1 (com.google.api.server.spi)

0 commit comments

Comments
 (0)