Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrescobar2010-09-17 02:16:28 +0000
committerRyan D. Brooks2010-09-17 02:16:28 +0000
commitc443fd722b994f018e0ff763b198616dea1bb1c0 (patch)
treedbf2aac35876ca57979b65572f4513697b668d54 /plugins/org.eclipse.osee.framework.manager.servlet
parent6325b1293702f722cd272761741fbebbc1a8cbb7 (diff)
downloadorg.eclipse.osee-c443fd722b994f018e0ff763b198616dea1bb1c0.tar.gz
org.eclipse.osee-c443fd722b994f018e0ff763b198616dea1bb1c0.tar.xz
org.eclipse.osee-c443fd722b994f018e0ff763b198616dea1bb1c0.zip
bug[ats_UNJKK]: Implement server-side change to use search request/response messages
Diffstat (limited to 'plugins/org.eclipse.osee.framework.manager.servlet')
-rw-r--r--plugins/org.eclipse.osee.framework.manager.servlet/src/org/eclipse/osee/framework/manager/servlet/SearchEngineServlet.java140
-rw-r--r--plugins/org.eclipse.osee.framework.manager.servlet/src/org/eclipse/osee/framework/manager/servlet/internal/ServletRegistrationHandler.java3
2 files changed, 60 insertions, 83 deletions
diff --git a/plugins/org.eclipse.osee.framework.manager.servlet/src/org/eclipse/osee/framework/manager/servlet/SearchEngineServlet.java b/plugins/org.eclipse.osee.framework.manager.servlet/src/org/eclipse/osee/framework/manager/servlet/SearchEngineServlet.java
index b6f6a12810b..6d9edadd097 100644
--- a/plugins/org.eclipse.osee.framework.manager.servlet/src/org/eclipse/osee/framework/manager/servlet/SearchEngineServlet.java
+++ b/plugins/org.eclipse.osee.framework.manager.servlet/src/org/eclipse/osee/framework/manager/servlet/SearchEngineServlet.java
@@ -11,27 +11,20 @@
package org.eclipse.osee.framework.manager.servlet;
import java.io.IOException;
-import java.io.StringWriter;
+import java.io.InputStream;
import java.util.logging.Level;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import org.eclipse.osee.framework.core.model.cache.AttributeTypeCache;
-import org.eclipse.osee.framework.core.model.type.AttributeType;
-import org.eclipse.osee.framework.core.operation.IOperation;
-import org.eclipse.osee.framework.core.operation.Operations;
+import org.eclipse.osee.framework.core.enums.CoreTranslatorId;
+import org.eclipse.osee.framework.core.message.SearchRequest;
+import org.eclipse.osee.framework.core.message.SearchResponse;
import org.eclipse.osee.framework.core.server.ISessionManager;
import org.eclipse.osee.framework.core.server.SecureOseeHttpServlet;
-import org.eclipse.osee.framework.database.core.JoinUtility;
-import org.eclipse.osee.framework.database.core.JoinUtility.ArtifactJoinQuery;
+import org.eclipse.osee.framework.core.translation.IDataTranslationService;
import org.eclipse.osee.framework.jdk.core.util.Lib;
-import org.eclipse.osee.framework.jdk.core.util.Strings;
import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.manager.servlet.data.HttpSearchInfo;
import org.eclipse.osee.framework.manager.servlet.internal.Activator;
import org.eclipse.osee.framework.search.engine.ISearchEngine;
-import org.eclipse.osee.framework.search.engine.SearchOptions.SearchOptionsEnum;
-import org.eclipse.osee.framework.search.engine.SearchResult;
-import org.eclipse.osee.framework.search.engine.SearchResultToXmlOperation;
/**
* @author Roberto E. Escobar
@@ -41,95 +34,80 @@ public class SearchEngineServlet extends SecureOseeHttpServlet {
private static final long serialVersionUID = 3722992788943330970L;
private final ISearchEngine searchEngine;
- private final AttributeTypeCache attributeTypeCache;
+ private final IDataTranslationService translationService;
- public SearchEngineServlet(ISessionManager sessionManager, ISearchEngine searchEngine, AttributeTypeCache attributeTypeCache) {
+ public SearchEngineServlet(ISessionManager sessionManager, ISearchEngine searchEngine, IDataTranslationService translationService) {
super(sessionManager);
this.searchEngine = searchEngine;
- this.attributeTypeCache = attributeTypeCache;
+ this.translationService = translationService;
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
try {
- HttpSearchInfo searchInfo = HttpSearchInfo.loadFromPost(request);
+ SearchRequest searchRequest =
+ translationService.convert(request.getInputStream(), CoreTranslatorId.SEARCH_REQUEST);
- String clientVersion = ModCompatible.getClientVersion(getSessionManager(), request.getParameter("sessionId"));
- boolean isCompatible = ModCompatible.is_0_9_2_Compatible(clientVersion);
-
- executeSearch(isCompatible, searchInfo, response);
- } catch (Exception ex) {
- response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
- response.setContentType("text/plain");
- OseeLog.log(Activator.class, Level.SEVERE,
- String.format("Failed to respond to a search engine servlet request [%s]", request.getRequestURL()), ex);
- response.getWriter().write(Lib.exceptionToString(ex));
- }
- }
-
- private void executeSearch(boolean isCompatible, HttpSearchInfo searchInfo, HttpServletResponse response) throws IOException {
- try {
- String[] attributeTypeGuids = searchInfo.getAttributeTypeGuids();
- AttributeType[] attributeTypes = new AttributeType[attributeTypeGuids.length];
-
- int index = 0;
- for (String attributeTypeValue : attributeTypeGuids) {
- if (!isCompatible) {
- attributeTypes[index++] = attributeTypeCache.getBySoleName(attributeTypeValue);
- } else {
- attributeTypes[index++] = attributeTypeCache.getByGuid(attributeTypeValue);
- }
- }
-
- SearchResult results =
- searchEngine.search(searchInfo.getQuery(), searchInfo.getId(), searchInfo.getOptions(), attributeTypes);
- StringWriter writer = new StringWriter();
- IOperation operation = new SearchResultToXmlOperation(results, writer);
- Operations.executeWork(operation);
+ SearchResponse searchResponse = new SearchResponse();
+ searchEngine.search(searchRequest, searchResponse);
response.setStatus(HttpServletResponse.SC_ACCEPTED);
- response.setCharacterEncoding("UTF-8");
response.setContentType("text/xml");
- response.getWriter().write(writer.toString());
+ response.setCharacterEncoding("UTF-8");
- if (results.isEmpty() && Strings.isValid(results.getErrorMessage())) {
+ InputStream inputStream = translationService.convertToStream(searchResponse, CoreTranslatorId.SEARCH_RESPONSE);
+ Lib.inputStreamToOutputStream(inputStream, response.getOutputStream());
- sendEmptyAsXml(response, results);
- } else if (!results.isEmpty()) {
- long start = System.currentTimeMillis();
- if (!searchInfo.getOptions().getBoolean(SearchOptionsEnum.as_xml.asStringOption())) {
- sendAsDbJoin(response, results);
- } else {
- response.setCharacterEncoding("UTF-8");
- response.setContentType("text/xml");
- sendAsXml(response, results);
- }
- System.out.println(String.format("Search for [%s] - [%d results sent in %d ms]", searchInfo.getQuery(),
- results.size(), System.currentTimeMillis() - start));
- } else {
- response.setCharacterEncoding("UTF-8");
- response.setContentType("text/plain");
- }
} catch (Exception ex) {
+ OseeLog.log(Activator.class, Level.SEVERE,
+ String.format("Failed to respond to a search engine servlet request [%s]", request.getRequestURL()), ex);
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
response.setContentType("text/plain");
- OseeLog.log(Activator.class, Level.SEVERE,
- String.format("Failed to respond to a search engine servlet request [%s]", searchInfo.toString()), ex);
response.getWriter().write(Lib.exceptionToString(ex));
+ response.getWriter().flush();
+ response.getWriter().close();
}
}
- private void sendAsDbJoin(HttpServletResponse response, SearchResult results) throws Exception {
- response.setCharacterEncoding("UTF-8");
- response.setContentType("text/plain");
+ // StringWriter writer = new StringWriter();
+ // IOperation operation = new SearchResultToXmlOperation(results, writer);
+ // Operations.executeWork(operation);
+ //
+ // response.setStatus(HttpServletResponse.SC_ACCEPTED);
+ // response.setCharacterEncoding("UTF-8");
+ // response.setContentType("text/xml");
+ // response.getWriter().write(writer.toString());
+ //
+ // if (results.isEmpty() && Strings.isValid(results.getErrorMessage())) {
+ //
+ // sendEmptyAsXml(response, results);
+ // } else if (!results.isEmpty()) {
+ // long start = System.currentTimeMillis();
+ // if (!searchInfo.getOptions().getBoolean(SearchOptionsEnum.as_xml.asStringOption())) {
+ // sendAsDbJoin(response, results);
+ // } else {
+ // response.setCharacterEncoding("UTF-8");
+ // response.setContentType("text/xml");
+ // sendAsXml(response, results);
+ // }
+ // System.out.println(String.format("Search for [%s] - [%d results sent in %d ms]", searchInfo.getQuery(),
+ // results.size(), System.currentTimeMillis() - start));
+ // } else {
+ // response.setCharacterEncoding("UTF-8");
+ // response.setContentType("text/plain");
+ // }
+ // private void sendAsDbJoin(HttpServletResponse response, SearchResult results) throws Exception {
+ // response.setCharacterEncoding("UTF-8");
+ // response.setContentType("text/plain");
+ //
+ // ArtifactJoinQuery joinQuery = JoinUtility.createArtifactJoinQuery();
+ // for (Integer branchId : results.getBranchIds()) {
+ // for (Integer artId : results.getArtifactIds(branchId)) {
+ // joinQuery.add(artId, branchId);
+ // }
+ // }
+ // joinQuery.store();
+ // response.getWriter().write(String.format("%d,%d", joinQuery.getQueryId(), joinQuery.size()));
+ // }
- ArtifactJoinQuery joinQuery = JoinUtility.createArtifactJoinQuery();
- for (Integer branchId : results.getBranchIds()) {
- for (Integer artId : results.getArtifactIds(branchId)) {
- joinQuery.add(artId, branchId);
- }
- }
- joinQuery.store();
- response.getWriter().write(String.format("%d,%d", joinQuery.getQueryId(), joinQuery.size()));
- }
}
diff --git a/plugins/org.eclipse.osee.framework.manager.servlet/src/org/eclipse/osee/framework/manager/servlet/internal/ServletRegistrationHandler.java b/plugins/org.eclipse.osee.framework.manager.servlet/src/org/eclipse/osee/framework/manager/servlet/internal/ServletRegistrationHandler.java
index d7a1555b245..e71c13d56f2 100644
--- a/plugins/org.eclipse.osee.framework.manager.servlet/src/org/eclipse/osee/framework/manager/servlet/internal/ServletRegistrationHandler.java
+++ b/plugins/org.eclipse.osee.framework.manager.servlet/src/org/eclipse/osee/framework/manager/servlet/internal/ServletRegistrationHandler.java
@@ -118,8 +118,7 @@ public class ServletRegistrationHandler extends AbstractTrackingHandler {
OseeServerContext.BRANCH_EXCHANGE_CONTEXT);
register(new BranchManagerServlet(sessionManager, branchService, translationService),
OseeServerContext.BRANCH_CONTEXT);
- register(new SearchEngineServlet(sessionManager, search, caching.getAttributeTypeCache()),
- OseeServerContext.SEARCH_CONTEXT);
+ register(new SearchEngineServlet(sessionManager, search, translationService), OseeServerContext.SEARCH_CONTEXT);
register(new SearchEngineTaggerServlet(sessionManager, tagger), OseeServerContext.SEARCH_TAGGING_CONTEXT);
register(new ServerLookupServlet(serverLookup, appServerManager), OseeServerContext.LOOKUP_CONTEXT);
register(new SessionManagementServlet(sessionManager, authenticationManager), OseeServerContext.SESSION_CONTEXT);

Back to the top