git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/portlets/user/social-profile@74720 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
6593119694
commit
4f4cb4f7b1
|
@ -8,13 +8,6 @@
|
||||||
</classpathentry>
|
</classpathentry>
|
||||||
<classpathentry kind="src" path="target/generated-sources/gwt"/>
|
<classpathentry kind="src" path="target/generated-sources/gwt"/>
|
||||||
<classpathentry including="**/*.java" kind="src" output="src/main/webapp/WEB-INF/classes" path="src/main/resources"/>
|
<classpathentry including="**/*.java" kind="src" output="src/main/webapp/WEB-INF/classes" path="src/main/resources"/>
|
||||||
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
|
|
||||||
<attributes>
|
|
||||||
<attribute name="optional" value="true"/>
|
|
||||||
<attribute name="maven.pomderived" value="true"/>
|
|
||||||
</attributes>
|
|
||||||
</classpathentry>
|
|
||||||
<classpathentry including="**/*.java" kind="src" output="target/test-classes" path="src/test/resources"/>
|
|
||||||
<classpathentry kind="con" path="com.google.gwt.eclipse.core.GWT_CONTAINER"/>
|
<classpathentry kind="con" path="com.google.gwt.eclipse.core.GWT_CONTAINER"/>
|
||||||
<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER">
|
<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER">
|
||||||
<attributes>
|
<attributes>
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
#Mon Jan 21 12:20:12 CET 2013
|
#Wed May 08 17:09:53 CEST 2013
|
||||||
eclipse.preferences.version=1
|
eclipse.preferences.version=1
|
||||||
encoding//src/main/java=UTF-8
|
encoding//src/main/java=UTF-8
|
||||||
encoding//src/main/resources=UTF-8
|
encoding//src/main/resources=UTF-8
|
||||||
encoding//src/test/java=UTF-8
|
|
||||||
encoding//src/test/resources=UTF-8
|
|
||||||
encoding/<project>=UTF-8
|
encoding/<project>=UTF-8
|
||||||
|
|
2
pom.xml
2
pom.xml
|
@ -72,7 +72,7 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.gcube.applicationsupportlayer</groupId>
|
<groupId>org.gcube.applicationsupportlayer</groupId>
|
||||||
<artifactId>aslcore</artifactId>
|
<artifactId>aslcore</artifactId>
|
||||||
<version>3.2.0-2.12.0</version>
|
<version>[3.2.0-SNAPSHOT, 4.0.0-SNAPSHOT)</version>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
|
|
|
@ -1,148 +1,19 @@
|
||||||
package org.gcube.portlets.user.socialprofile.client;
|
package org.gcube.portlets.user.socialprofile.client;
|
||||||
|
|
||||||
import org.gcube.portlets.user.socialprofile.shared.FieldVerifier;
|
import org.gcube.portlets.user.socialprofile.client.ui.DisplayProfile;
|
||||||
|
|
||||||
import com.google.gwt.core.client.EntryPoint;
|
import com.google.gwt.core.client.EntryPoint;
|
||||||
import com.google.gwt.core.client.GWT;
|
|
||||||
import com.google.gwt.event.dom.client.ClickEvent;
|
|
||||||
import com.google.gwt.event.dom.client.ClickHandler;
|
|
||||||
import com.google.gwt.event.dom.client.KeyCodes;
|
|
||||||
import com.google.gwt.event.dom.client.KeyUpEvent;
|
|
||||||
import com.google.gwt.event.dom.client.KeyUpHandler;
|
|
||||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
|
||||||
import com.google.gwt.user.client.ui.Button;
|
|
||||||
import com.google.gwt.user.client.ui.DialogBox;
|
|
||||||
import com.google.gwt.user.client.ui.HTML;
|
|
||||||
import com.google.gwt.user.client.ui.Label;
|
|
||||||
import com.google.gwt.user.client.ui.RootPanel;
|
import com.google.gwt.user.client.ui.RootPanel;
|
||||||
import com.google.gwt.user.client.ui.TextBox;
|
|
||||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Entry point classes define <code>onModuleLoad()</code>.
|
* Entry point classes define <code>onModuleLoad()</code>.
|
||||||
*/
|
*/
|
||||||
public class SocialProfile implements EntryPoint {
|
public class SocialProfile implements EntryPoint {
|
||||||
/**
|
|
||||||
* The message displayed to the user when the server cannot be reached or
|
|
||||||
* returns an error.
|
|
||||||
*/
|
|
||||||
private static final String SERVER_ERROR = "An error occurred while "
|
|
||||||
+ "attempting to contact the server. Please check your network "
|
|
||||||
+ "connection and try again.";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a remote service proxy to talk to the server-side Greeting service.
|
|
||||||
*/
|
|
||||||
private final GreetingServiceAsync greetingService = GWT.create(GreetingService.class);
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is the entry point method.
|
* This is the entry point method.
|
||||||
*/
|
*/
|
||||||
public void onModuleLoad() {
|
public void onModuleLoad() {
|
||||||
final Button sendButton = new Button( "" );
|
RootPanel.get("SocialProfileDiv").add(new DisplayProfile());
|
||||||
final TextBox nameField = new TextBox();
|
|
||||||
nameField.setText( "" );
|
|
||||||
final Label errorLabel = new Label();
|
|
||||||
|
|
||||||
// We can add style names to widgets
|
|
||||||
sendButton.addStyleName("sendButton");
|
|
||||||
|
|
||||||
// Add the nameField and sendButton to the RootPanel
|
|
||||||
// Use RootPanel.get() to get the entire body element
|
|
||||||
RootPanel.get("nameFieldContainer").add(nameField);
|
|
||||||
RootPanel.get("sendButtonContainer").add(sendButton);
|
|
||||||
RootPanel.get("errorLabelContainer").add(errorLabel);
|
|
||||||
|
|
||||||
// Focus the cursor on the name field when the app loads
|
|
||||||
nameField.setFocus(true);
|
|
||||||
nameField.selectAll();
|
|
||||||
|
|
||||||
// Create the popup dialog box
|
|
||||||
final DialogBox dialogBox = new DialogBox();
|
|
||||||
dialogBox.setText("Remote Procedure Call");
|
|
||||||
dialogBox.setAnimationEnabled(true);
|
|
||||||
final Button closeButton = new Button("Close");
|
|
||||||
// We can set the id of a widget by accessing its Element
|
|
||||||
closeButton.getElement().setId("closeButton");
|
|
||||||
final Label textToServerLabel = new Label();
|
|
||||||
final HTML serverResponseLabel = new HTML();
|
|
||||||
VerticalPanel dialogVPanel = new VerticalPanel();
|
|
||||||
dialogVPanel.addStyleName("dialogVPanel");
|
|
||||||
dialogVPanel.add(new HTML("<b>Sending name to the server:</b>"));
|
|
||||||
dialogVPanel.add(textToServerLabel);
|
|
||||||
dialogVPanel.add(new HTML("<br><b>Server replies:</b>"));
|
|
||||||
dialogVPanel.add(serverResponseLabel);
|
|
||||||
dialogVPanel.setHorizontalAlignment(VerticalPanel.ALIGN_RIGHT);
|
|
||||||
dialogVPanel.add(closeButton);
|
|
||||||
dialogBox.setWidget(dialogVPanel);
|
|
||||||
|
|
||||||
// Add a handler to close the DialogBox
|
|
||||||
closeButton.addClickHandler(new ClickHandler() {
|
|
||||||
public void onClick(ClickEvent event) {
|
|
||||||
dialogBox.hide();
|
|
||||||
sendButton.setEnabled(true);
|
|
||||||
sendButton.setFocus(true);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Create a handler for the sendButton and nameField
|
|
||||||
class MyHandler implements ClickHandler, KeyUpHandler {
|
|
||||||
/**
|
|
||||||
* Fired when the user clicks on the sendButton.
|
|
||||||
*/
|
|
||||||
public void onClick(ClickEvent event) {
|
|
||||||
sendNameToServer();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Fired when the user types in the nameField.
|
|
||||||
*/
|
|
||||||
public void onKeyUp(KeyUpEvent event) {
|
|
||||||
if (event.getNativeKeyCode() == KeyCodes.KEY_ENTER) {
|
|
||||||
sendNameToServer();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Send the name from the nameField to the server and wait for a response.
|
|
||||||
*/
|
|
||||||
private void sendNameToServer() {
|
|
||||||
// First, we validate the input.
|
|
||||||
errorLabel.setText("");
|
|
||||||
String textToServer = nameField.getText();
|
|
||||||
if (!FieldVerifier.isValidName(textToServer)) {
|
|
||||||
errorLabel.setText("Please enter at least four characters");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Then, we send the input to the server.
|
|
||||||
sendButton.setEnabled(false);
|
|
||||||
textToServerLabel.setText(textToServer);
|
|
||||||
serverResponseLabel.setText("");
|
|
||||||
greetingService.greetServer(textToServer, new AsyncCallback<String>() {
|
|
||||||
public void onFailure(Throwable caught) {
|
|
||||||
// Show the RPC error message to the user
|
|
||||||
dialogBox.setText("Remote Procedure Call - Failure");
|
|
||||||
serverResponseLabel.addStyleName("serverResponseLabelError");
|
|
||||||
serverResponseLabel.setHTML(SERVER_ERROR);
|
|
||||||
dialogBox.center();
|
|
||||||
closeButton.setFocus(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void onSuccess(String result) {
|
|
||||||
dialogBox.setText("Remote Procedure Call");
|
|
||||||
serverResponseLabel.removeStyleName("serverResponseLabelError");
|
|
||||||
serverResponseLabel.setHTML(result);
|
|
||||||
dialogBox.center();
|
|
||||||
closeButton.setFocus(true);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add a handler to send the name to the server
|
|
||||||
MyHandler handler = new MyHandler();
|
|
||||||
sendButton.addClickHandler(handler);
|
|
||||||
nameField.addKeyUpHandler(handler);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,6 @@ import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
|
||||||
* The client side stub for the RPC service.
|
* The client side stub for the RPC service.
|
||||||
*/
|
*/
|
||||||
@RemoteServiceRelativePath("greet")
|
@RemoteServiceRelativePath("greet")
|
||||||
public interface GreetingService extends RemoteService {
|
public interface SocialService extends RemoteService {
|
||||||
String greetServer(String name) throws IllegalArgumentException;
|
|
||||||
}
|
}
|
|
@ -2,8 +2,6 @@ package org.gcube.portlets.user.socialprofile.client;
|
||||||
|
|
||||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||||
|
|
||||||
public interface GreetingServiceAsync {
|
public interface SocialServiceAsync {
|
||||||
|
|
||||||
void greetServer(String name, AsyncCallback<String> callback);
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
package org.gcube.portlets.user.socialprofile.client.ui;
|
||||||
|
|
||||||
|
import org.gcube.portlets.user.socialprofile.client.SocialService;
|
||||||
|
import org.gcube.portlets.user.socialprofile.client.SocialServiceAsync;
|
||||||
|
|
||||||
|
import com.google.gwt.core.client.GWT;
|
||||||
|
import com.google.gwt.uibinder.client.UiBinder;
|
||||||
|
import com.google.gwt.uibinder.client.UiField;
|
||||||
|
import com.google.gwt.user.client.ui.Composite;
|
||||||
|
import com.google.gwt.user.client.ui.Image;
|
||||||
|
import com.google.gwt.user.client.ui.Widget;
|
||||||
|
|
||||||
|
public class DisplayProfile extends Composite {
|
||||||
|
|
||||||
|
private static DisplayProfileUiBinder uiBinder = GWT
|
||||||
|
.create(DisplayProfileUiBinder.class);
|
||||||
|
|
||||||
|
interface DisplayProfileUiBinder extends UiBinder<Widget, DisplayProfile> {
|
||||||
|
}
|
||||||
|
|
||||||
|
private final SocialServiceAsync socialService = GWT.create(SocialService.class);
|
||||||
|
|
||||||
|
@UiField Image avatarImage;
|
||||||
|
|
||||||
|
public DisplayProfile() {
|
||||||
|
initWidget(uiBinder.createAndBindUi(this));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
|
||||||
|
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
|
||||||
|
xmlns:g="urn:import:com.google.gwt.user.client.ui">
|
||||||
|
<g:HTMLPanel>
|
||||||
|
<table class="">
|
||||||
|
<tr>
|
||||||
|
<td width="150px;" align="middle">
|
||||||
|
<a href="">
|
||||||
|
<g:Image title="Edit Profile Picture" styleName="member-photo"
|
||||||
|
url="" ui:field="avatarImage" width="150" height="150" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
<div class="">
|
||||||
|
SSSSSS
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</g:HTMLPanel>
|
||||||
|
</ui:UiBinder>
|
|
@ -1,48 +0,0 @@
|
||||||
package org.gcube.portlets.user.socialprofile.server;
|
|
||||||
|
|
||||||
import org.gcube.portlets.user.socialprofile.client.GreetingService;
|
|
||||||
import org.gcube.portlets.user.socialprofile.shared.FieldVerifier;
|
|
||||||
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The server side implementation of the RPC service.
|
|
||||||
*/
|
|
||||||
@SuppressWarnings("serial")
|
|
||||||
public class GreetingServiceImpl extends RemoteServiceServlet implements
|
|
||||||
GreetingService {
|
|
||||||
|
|
||||||
public String greetServer(String input) throws IllegalArgumentException {
|
|
||||||
// Verify that the input is valid.
|
|
||||||
if (!FieldVerifier.isValidName(input)) {
|
|
||||||
// If the input is not valid, throw an IllegalArgumentException back to
|
|
||||||
// the client.
|
|
||||||
throw new IllegalArgumentException(
|
|
||||||
"Name must be at least 4 characters long");
|
|
||||||
}
|
|
||||||
|
|
||||||
String serverInfo = getServletContext().getServerInfo();
|
|
||||||
String userAgent = getThreadLocalRequest().getHeader("User-Agent");
|
|
||||||
|
|
||||||
// Escape data from the client to avoid cross-site script vulnerabilities.
|
|
||||||
input = escapeHtml(input);
|
|
||||||
userAgent = escapeHtml(userAgent);
|
|
||||||
|
|
||||||
return "Hello, " + input + "!<br><br>I am running " + serverInfo
|
|
||||||
+ ".<br><br>It looks like you are using:<br>" + userAgent;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Escape an html string. Escaping data received from the client helps to
|
|
||||||
* prevent cross-site script vulnerabilities.
|
|
||||||
*
|
|
||||||
* @param html the html string to escape
|
|
||||||
* @return the escaped string
|
|
||||||
*/
|
|
||||||
private String escapeHtml(String html) {
|
|
||||||
if (html == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return html.replaceAll("&", "&").replaceAll("<", "<").replaceAll(
|
|
||||||
">", ">");
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
package org.gcube.portlets.user.socialprofile.server;
|
||||||
|
|
||||||
|
import org.gcube.portlets.user.socialprofile.client.SocialService;
|
||||||
|
import org.gcube.portlets.user.socialprofile.shared.FieldVerifier;
|
||||||
|
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The server side implementation of the RPC service.
|
||||||
|
*/
|
||||||
|
@SuppressWarnings("serial")
|
||||||
|
public class SocialServiceImpl extends RemoteServiceServlet implements SocialService {
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -3,17 +3,6 @@
|
||||||
<!-- Inherit the core Web Toolkit stuff. -->
|
<!-- Inherit the core Web Toolkit stuff. -->
|
||||||
<inherits name='com.google.gwt.user.User' />
|
<inherits name='com.google.gwt.user.User' />
|
||||||
|
|
||||||
<!-- We need the JUnit module in the main module, -->
|
|
||||||
<!-- otherwise eclipse complains (Google plugin bug?) -->
|
|
||||||
<inherits name='com.google.gwt.junit.JUnit' />
|
|
||||||
|
|
||||||
<!-- Inherit the default GWT style sheet. You can change -->
|
|
||||||
<!-- the theme of your GWT application by uncommenting -->
|
|
||||||
<!-- any one of the following lines. -->
|
|
||||||
<inherits name='com.google.gwt.user.theme.standard.Standard' />
|
|
||||||
<!-- <inherits name='com.google.gwt.user.theme.chrome.Chrome'/> -->
|
|
||||||
<!-- <inherits name='com.google.gwt.user.theme.dark.Dark'/> -->
|
|
||||||
|
|
||||||
<!-- Other module inherits -->
|
<!-- Other module inherits -->
|
||||||
|
|
||||||
<!-- Specify the app entry point class. -->
|
<!-- Specify the app entry point class. -->
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
sendButton = Send
|
|
||||||
nameField = Enter your name
|
|
|
@ -1,2 +0,0 @@
|
||||||
sendButton = Envoyer
|
|
||||||
nameField = Entrez votre nom
|
|
|
@ -1,34 +0,0 @@
|
||||||
/** Add css rules here for your application. */
|
|
||||||
|
|
||||||
|
|
||||||
/** Example rules used by the template application (remove for your app) */
|
|
||||||
h1 {
|
|
||||||
font-size: 2em;
|
|
||||||
font-weight: bold;
|
|
||||||
color: #777777;
|
|
||||||
margin: 40px 0px 70px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.sendButton {
|
|
||||||
display: block;
|
|
||||||
font-size: 16pt;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Most GWT widgets already have a style name defined */
|
|
||||||
.gwt-DialogBox {
|
|
||||||
width: 400px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dialogVPanel {
|
|
||||||
margin: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.serverResponseLabelError {
|
|
||||||
color: red;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Set ids using widget.getElement().setId("idOfElement") */
|
|
||||||
#closeButton {
|
|
||||||
margin: 15px 6px 6px;
|
|
||||||
}
|
|
|
@ -13,51 +13,13 @@
|
||||||
<!-- Consider inlining CSS to reduce the number of requested files -->
|
<!-- Consider inlining CSS to reduce the number of requested files -->
|
||||||
<!-- -->
|
<!-- -->
|
||||||
<link type="text/css" rel="stylesheet" href="SocialProfile.css">
|
<link type="text/css" rel="stylesheet" href="SocialProfile.css">
|
||||||
|
<title>SOCIAL PROFILE Project</title>
|
||||||
|
|
||||||
<!-- -->
|
<script type="text/javascript" language="javascript" src="socialprofile/socialprofile.nocache.js"></script>
|
||||||
<!-- Any title is fine -->
|
|
||||||
<!-- -->
|
|
||||||
<title>Web Application Starter Project</title>
|
|
||||||
|
|
||||||
<!-- -->
|
|
||||||
<!-- This script loads your compiled module. -->
|
|
||||||
<!-- If you add any GWT meta tags, they must -->
|
|
||||||
<!-- be added before this line. -->
|
|
||||||
<!-- -->
|
|
||||||
<script type="text/javascript" language="javascript" src="SocialProfile/SocialProfile.nocache.js"></script>
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<!-- -->
|
|
||||||
<!-- The body can have arbitrary html, or -->
|
|
||||||
<!-- you can leave the body empty if you want -->
|
|
||||||
<!-- to create a completely dynamic UI. -->
|
|
||||||
<!-- -->
|
|
||||||
<body>
|
<body>
|
||||||
|
<div id="SocialProfileDiv">
|
||||||
<!-- OPTIONAL: include this if you want history support -->
|
|
||||||
<iframe src="javascript:''" id="__gwt_historyFrame" tabIndex='-1' style="position:absolute;width:0;height:0;border:0"></iframe>
|
|
||||||
|
|
||||||
<!-- RECOMMENDED if your web app will not function without JavaScript enabled -->
|
|
||||||
<noscript>
|
|
||||||
<div style="width: 22em; position: absolute; left: 50%; margin-left: -11em; color: red; background-color: white; border: 1px solid red; padding: 4px; font-family: sans-serif">
|
|
||||||
Your web browser must have JavaScript enabled
|
|
||||||
in order for this application to display correctly.
|
|
||||||
</div>
|
</div>
|
||||||
</noscript>
|
|
||||||
|
|
||||||
<h1>Web Application Starter Project</h1>
|
|
||||||
|
|
||||||
<table align="center">
|
|
||||||
<tr>
|
|
||||||
<td colspan="2" style="font-weight:bold;">Please enter your name:</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td id="nameFieldContainer"></td>
|
|
||||||
<td id="sendButtonContainer"></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td colspan="2" style="color:red;" id="errorLabelContainer"></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -9,6 +9,5 @@
|
||||||
--%>
|
--%>
|
||||||
|
|
||||||
|
|
||||||
<div id="SocialProfile">
|
<div id="SocialProfileDiv">
|
||||||
<img src="/SocialProfile/images/coming_soon.jpg" />
|
|
||||||
</div>
|
</div>
|
|
@ -8,7 +8,7 @@
|
||||||
<!-- Servlets -->
|
<!-- Servlets -->
|
||||||
<servlet>
|
<servlet>
|
||||||
<servlet-name>greetServlet</servlet-name>
|
<servlet-name>greetServlet</servlet-name>
|
||||||
<servlet-class>org.gcube.portlets.user.socialprofile.server.GreetingServiceImpl</servlet-class>
|
<servlet-class>org.gcube.portlets.user.socialprofile.server.SocialServiceImpl</servlet-class>
|
||||||
</servlet>
|
</servlet>
|
||||||
|
|
||||||
<servlet-mapping>
|
<servlet-mapping>
|
||||||
|
|
Loading…
Reference in New Issue