author | Eugene Ostroukhov <eugeneo@symbian.org> |
Thu, 02 Sep 2010 10:50:38 -0700 | |
changeset 483 | 109da596fa9d |
parent 479 | 518afa7c6d2f |
child 484 | f5df819c1852 |
permissions | -rw-r--r-- |
470
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
1 |
/******************************************************************************* |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
2 |
* Copyright (c) 2009 Symbian Foundation and/or its subsidiary(-ies). |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
3 |
* All rights reserved. |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
4 |
* This component and the accompanying materials are made available |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
5 |
* under the terms of the License "Eclipse Public License v1.0" |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
6 |
* which accompanies this distribution, and is available |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
7 |
* at the URL "http://www.eclipse.org/legal/epl-v10.html". |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
8 |
* |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
9 |
* Initial Contributors: |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
10 |
* Symbian Foundation - initial contribution. |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
11 |
* Contributors: |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
12 |
* Description: |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
13 |
* Overview: |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
14 |
* Details: |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
15 |
* Platforms/Drives/Compatibility: |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
16 |
* Assumptions/Requirement/Pre-requisites: |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
17 |
* Failures and causes: |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
18 |
*******************************************************************************/ |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
19 |
package org.symbian.tools.tmw.previewer.http; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
20 |
|
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
21 |
import java.io.File; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
22 |
import java.io.IOException; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
23 |
import java.io.InputStream; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
24 |
import java.io.OutputStream; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
25 |
import java.io.UnsupportedEncodingException; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
26 |
import java.net.MalformedURLException; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
27 |
import java.net.URI; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
28 |
import java.net.URISyntaxException; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
29 |
import java.net.URL; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
30 |
import java.net.URLDecoder; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
31 |
import java.net.URLEncoder; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
32 |
import java.text.MessageFormat; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
33 |
import java.util.Map; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
34 |
import java.util.StringTokenizer; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
35 |
import java.util.TreeMap; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
36 |
|
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
37 |
import javax.servlet.ServletException; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
38 |
import javax.servlet.ServletInputStream; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
39 |
import javax.servlet.http.HttpServlet; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
40 |
import javax.servlet.http.HttpServletRequest; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
41 |
import javax.servlet.http.HttpServletResponse; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
42 |
|
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
43 |
import org.eclipse.core.resources.IFile; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
44 |
import org.eclipse.core.resources.IProject; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
45 |
import org.eclipse.core.resources.ResourcesPlugin; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
46 |
import org.eclipse.core.runtime.CoreException; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
47 |
import org.eclipse.core.runtime.FileLocator; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
48 |
import org.eclipse.core.runtime.IPath; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
49 |
import org.eclipse.core.runtime.Path; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
50 |
import org.json.simple.JSONObject; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
51 |
import org.json.simple.parser.JSONParser; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
52 |
import org.json.simple.parser.ParseException; |
479
518afa7c6d2f
Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
472
diff
changeset
|
53 |
import org.symbian.tools.tmw.core.TMWCore; |
518afa7c6d2f
Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
472
diff
changeset
|
54 |
import org.symbian.tools.tmw.core.projects.ITMWProject; |
518afa7c6d2f
Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
472
diff
changeset
|
55 |
import org.symbian.tools.tmw.core.runtimes.IApplicationLayoutProvider; |
470
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
56 |
import org.symbian.tools.tmw.previewer.PreviewerException; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
57 |
import org.symbian.tools.tmw.previewer.PreviewerPlugin; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
58 |
import org.symbian.tools.tmw.previewer.http.handlers.DebuggerResourceProvider; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
59 |
import org.symbian.tools.tmw.previewer.http.handlers.PreviewerStaticResourceProvider; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
60 |
import org.symbian.tools.tmw.previewer.http.handlers.Providers; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
61 |
|
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
62 |
public class WorkspaceResourcesServlet extends HttpServlet { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
63 |
private static final Map<String, String> EXTENSION_CONTENT_TYPE = new TreeMap<String, String>(); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
64 |
private static final long serialVersionUID = -3217197074249607950L; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
65 |
|
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
66 |
static { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
67 |
EXTENSION_CONTENT_TYPE.put("htm", "text/html"); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
68 |
EXTENSION_CONTENT_TYPE.put("html", "text/html"); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
69 |
EXTENSION_CONTENT_TYPE.put("xml", "text/xml"); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
70 |
EXTENSION_CONTENT_TYPE.put("plist", "application/octet-stream"); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
71 |
EXTENSION_CONTENT_TYPE.put("gif", "image/gif"); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
72 |
EXTENSION_CONTENT_TYPE.put("jpg", "image/jpeg"); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
73 |
EXTENSION_CONTENT_TYPE.put("jpeg", "image/jpeg"); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
74 |
EXTENSION_CONTENT_TYPE.put("png", "image/png"); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
75 |
EXTENSION_CONTENT_TYPE.put("css", "text/css"); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
76 |
EXTENSION_CONTENT_TYPE.put("js", "application/x-javascript"); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
77 |
EXTENSION_CONTENT_TYPE.put("mp3", "audio/x-mpeg"); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
78 |
} |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
79 |
|
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
80 |
private static String encode(String path) { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
81 |
try { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
82 |
StringBuffer result = new StringBuffer(); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
83 |
String[] segments = new Path(path).segments(); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
84 |
for (int i = 0; i < segments.length; i++) { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
85 |
String string = segments[i]; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
86 |
result.append("/"); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
87 |
// java.net.URLEncoder encodes " " as "+" while Chrome needs "%20" |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
88 |
StringTokenizer tokenizer = new StringTokenizer(string, " ", false); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
89 |
while (tokenizer.hasMoreElements()) { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
90 |
result.append(URLEncoder.encode(tokenizer.nextToken(), "UTF-8")); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
91 |
if (tokenizer.hasMoreTokens()) { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
92 |
result.append("%20"); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
93 |
} |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
94 |
} |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
95 |
} |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
96 |
return result.toString(); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
97 |
} catch (UnsupportedEncodingException e) { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
98 |
// Something is horribly wrong - JRE doesn't have UTF8? |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
99 |
throw new RuntimeException(e); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
100 |
} |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
101 |
} |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
102 |
|
479
518afa7c6d2f
Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
472
diff
changeset
|
103 |
public static URI getDebugStartingPage(IProject project, String session) { |
518afa7c6d2f
Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
472
diff
changeset
|
104 |
return getServerURIForResource(project.getFullPath().append(HttpPreviewer.DEBUG_STARTING_PAGE).makeAbsolute(), |
518afa7c6d2f
Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
472
diff
changeset
|
105 |
session); |
518afa7c6d2f
Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
472
diff
changeset
|
106 |
} |
518afa7c6d2f
Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
472
diff
changeset
|
107 |
|
470
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
108 |
public static IFile getFileFromUrl(String name) { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
109 |
final IPath path = getResourcePath(name); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
110 |
if (path != null) { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
111 |
final IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(path.segment(0)); |
479
518afa7c6d2f
Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
472
diff
changeset
|
112 |
final ITMWProject p = TMWCore.create(project); |
518afa7c6d2f
Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
472
diff
changeset
|
113 |
if (p != null && p.getTargetRuntime() != null) { |
518afa7c6d2f
Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
472
diff
changeset
|
114 |
final IApplicationLayoutProvider provider = p.getTargetRuntime().getLayoutProvider(); |
518afa7c6d2f
Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
472
diff
changeset
|
115 |
if (provider != null) { |
518afa7c6d2f
Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
472
diff
changeset
|
116 |
try { |
518afa7c6d2f
Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
472
diff
changeset
|
117 |
return provider.getWorkspaceFile(project, path.removeFirstSegments(1)); |
518afa7c6d2f
Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
472
diff
changeset
|
118 |
} catch (CoreException e) { |
518afa7c6d2f
Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
472
diff
changeset
|
119 |
PreviewerPlugin.log(e); |
518afa7c6d2f
Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
472
diff
changeset
|
120 |
} |
470
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
121 |
} |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
122 |
} |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
123 |
} |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
124 |
return null; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
125 |
} |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
126 |
|
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
127 |
public static String getHttpUrl(IFile file) { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
128 |
IPath p = new Path("/"); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
129 |
if (file != null) { |
479
518afa7c6d2f
Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
472
diff
changeset
|
130 |
final ITMWProject project = TMWCore.create(file.getProject()); |
518afa7c6d2f
Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
472
diff
changeset
|
131 |
if (project != null && project.getTargetRuntime() != null) { |
518afa7c6d2f
Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
472
diff
changeset
|
132 |
final IApplicationLayoutProvider provider = project.getTargetRuntime().getLayoutProvider(); |
518afa7c6d2f
Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
472
diff
changeset
|
133 |
if (provider != null) { |
518afa7c6d2f
Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
472
diff
changeset
|
134 |
IPath path = provider.getResourcePath(file); |
518afa7c6d2f
Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
472
diff
changeset
|
135 |
if (path != null) { |
518afa7c6d2f
Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
472
diff
changeset
|
136 |
p = p.append(file.getProject().getName()).append(path).makeAbsolute(); |
518afa7c6d2f
Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
472
diff
changeset
|
137 |
} |
472
bd9f2d7c64a6
Debugger is now Symbian-independant
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
470
diff
changeset
|
138 |
} |
470
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
139 |
} |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
140 |
} |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
141 |
String uri = getServerURIForResource(p, null).toASCIIString(); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
142 |
if (uri != null) { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
143 |
return uri; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
144 |
} else { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
145 |
return file.getLocationURI().toString(); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
146 |
} |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
147 |
} |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
148 |
|
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
149 |
public static String getMimeTypeByExtension(String extension) { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
150 |
if (extension != null) { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
151 |
return EXTENSION_CONTENT_TYPE.get(extension.toLowerCase()); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
152 |
} else { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
153 |
return null; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
154 |
} |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
155 |
} |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
156 |
|
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
157 |
public static File getPreviewerResource(String name) { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
158 |
try { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
159 |
IPath path = getResourcePath(name); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
160 |
if (path != null && path.segmentCount() > 1) { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
161 |
if (path.segmentCount() == 2 && HttpPreviewer.PREVIEW_STARTING_PAGE.equals(path.segment(1))) { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
162 |
path = new Path(PreviewerStaticResourceProvider.PREVIEW_START); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
163 |
} else if (path.segmentCount() > 2 |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
164 |
&& PreviewerStaticResourceProvider.PREVIEW_PATH.equals(path.segment(1))) { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
165 |
path = path.removeFirstSegments(1); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
166 |
} else { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
167 |
return null; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
168 |
} |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
169 |
URL pluginResource = FileLocator.find(PreviewerPlugin.getDefault().getBundle(), path, null); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
170 |
if (pluginResource != null) { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
171 |
URL url = FileLocator.toFileURL(pluginResource); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
172 |
if (url != null) { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
173 |
return new File(url.getPath()); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
174 |
} |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
175 |
} |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
176 |
} |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
177 |
} catch (IOException e) { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
178 |
PreviewerPlugin.log(e); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
179 |
} |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
180 |
return null; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
181 |
} |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
182 |
|
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
183 |
public static URI getPreviewerStartingPage(String widget) { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
184 |
return getServerURIForResource(new Path(widget).append(HttpPreviewer.PREVIEW_STARTING_PAGE).makeAbsolute(), |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
185 |
null); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
186 |
} |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
187 |
|
479
518afa7c6d2f
Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
472
diff
changeset
|
188 |
private static IPath getResourcePath(String name) { |
518afa7c6d2f
Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
472
diff
changeset
|
189 |
IPath p = null; |
518afa7c6d2f
Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
472
diff
changeset
|
190 |
try { |
518afa7c6d2f
Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
472
diff
changeset
|
191 |
String root = getHttpUrl(null); |
518afa7c6d2f
Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
472
diff
changeset
|
192 |
if (name != null && name.startsWith(root)) { |
518afa7c6d2f
Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
472
diff
changeset
|
193 |
final String fileName = URLDecoder.decode(name.substring(root.length()), "UTF-8"); |
518afa7c6d2f
Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
472
diff
changeset
|
194 |
final IPath path = new Path(fileName); |
518afa7c6d2f
Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
472
diff
changeset
|
195 |
if (path.segmentCount() > 1) { |
518afa7c6d2f
Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
472
diff
changeset
|
196 |
p = path; |
518afa7c6d2f
Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
472
diff
changeset
|
197 |
} |
518afa7c6d2f
Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
472
diff
changeset
|
198 |
} |
518afa7c6d2f
Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
472
diff
changeset
|
199 |
} catch (UnsupportedEncodingException e) { |
518afa7c6d2f
Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
472
diff
changeset
|
200 |
throw new RuntimeException(e); |
518afa7c6d2f
Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
472
diff
changeset
|
201 |
} |
518afa7c6d2f
Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
472
diff
changeset
|
202 |
return p; |
518afa7c6d2f
Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
472
diff
changeset
|
203 |
} |
518afa7c6d2f
Minor refactoring to make API more clear
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
472
diff
changeset
|
204 |
|
470
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
205 |
private static URI getServerURIForResource(IPath resourcePath, String debugSessionId) { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
206 |
try { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
207 |
String path = encode(WebappManager.WORKSPACE_RESOURCES_CONTEXT + resourcePath); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
208 |
path += debugSessionId == null ? "" : (String.format("?%s=%s", |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
209 |
DebuggerResourceProvider.DEBUG_SESSION_ID_PARAMETER, debugSessionId)); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
210 |
URL url = new URL("http", WebappManager.getHost(), WebappManager.getPort(), path); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
211 |
return url.toURI(); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
212 |
} catch (MalformedURLException e) { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
213 |
PreviewerPlugin.log(e); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
214 |
} catch (URISyntaxException e) { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
215 |
PreviewerPlugin.log(e); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
216 |
} |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
217 |
return null; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
218 |
} |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
219 |
|
483
109da596fa9d
Fixed relevant FindBug messages
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
479
diff
changeset
|
220 |
private transient final Providers providers = new Providers(); |
470
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
221 |
|
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
222 |
private void copyData(InputStream contents, OutputStream ouput) throws IOException { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
223 |
byte[] buf = new byte[4048]; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
224 |
int i; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
225 |
while ((i = contents.read(buf)) >= 0) { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
226 |
ouput.write(buf, 0, i); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
227 |
} |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
228 |
} |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
229 |
|
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
230 |
@SuppressWarnings("unchecked") |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
231 |
@Override |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
232 |
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
233 |
long time = 0; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
234 |
if (PreviewerPlugin.TRACE_SERVLET) { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
235 |
time = System.currentTimeMillis(); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
236 |
} |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
237 |
try { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
238 |
InputStream stream = providers.get(req.getPathInfo(), req.getParameterMap(), req.getSession().getId()); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
239 |
String mimeType = getMimeTypeByExtension(new Path(req.getPathInfo()).getFileExtension()); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
240 |
if (mimeType != null) { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
241 |
resp.setContentType(mimeType); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
242 |
} |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
243 |
if (stream != null) { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
244 |
copyData(stream, resp.getOutputStream()); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
245 |
} else { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
246 |
resp.setStatus(HttpServletResponse.SC_NOT_FOUND); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
247 |
} |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
248 |
} catch (PreviewerException e) { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
249 |
PreviewerPlugin.log(e); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
250 |
throw new ServletException(e); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
251 |
} |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
252 |
if (PreviewerPlugin.TRACE_SERVLET) { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
253 |
System.out.println(MessageFormat.format("Resource {0} was downloaded in {1}", req.getPathInfo(), |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
254 |
System.currentTimeMillis() - time)); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
255 |
} |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
256 |
} |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
257 |
|
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
258 |
@SuppressWarnings("unchecked") |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
259 |
@Override |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
260 |
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
261 |
ServletInputStream inputStream = req.getInputStream(); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
262 |
byte[] buff = new byte[1024]; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
263 |
StringBuilder builder = new StringBuilder(); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
264 |
int l; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
265 |
while ((l = inputStream.read(buff)) > 0) { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
266 |
builder.append(new String(buff, 0, l, "UTF-8")); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
267 |
} |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
268 |
inputStream.close(); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
269 |
JSONObject object = null; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
270 |
try { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
271 |
Object parseResult = new JSONParser().parse(builder.toString()); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
272 |
if (parseResult instanceof JSONObject) { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
273 |
object = (JSONObject) parseResult; |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
274 |
} |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
275 |
} catch (ParseException e) { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
276 |
PreviewerPlugin.log(e); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
277 |
throw new ServletException(e); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
278 |
} |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
279 |
try { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
280 |
providers.post(req.getPathInfo(), req.getParameterMap(), object, req.getSession().getId()); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
281 |
} catch (PreviewerException e) { |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
282 |
throw new ServletException(e); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
283 |
} |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
284 |
resp.setStatus(HttpServletResponse.SC_OK); |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
285 |
} |
d4809db37847
Changed repository layout and renamed project files. This revision is untested and may not run.
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
286 |
} |