From 077d23176a8f098766bf492081ae5ab9acb2d285 Mon Sep 17 00:00:00 2001 From: Carsten Lenz <clenz2@csc.com> Date: Fri, 13 Jun 2014 08:26:23 -0400 Subject: [PATCH] Add german translation of welcome.mkd --- src/main/java/com/gitblit/wicket/pages/RawPage.java | 84 +++++++++++++++++++++++++++++++++-------- 1 files changed, 67 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/gitblit/wicket/pages/RawPage.java b/src/main/java/com/gitblit/wicket/pages/RawPage.java index d322e95..c435747 100644 --- a/src/main/java/com/gitblit/wicket/pages/RawPage.java +++ b/src/main/java/com/gitblit/wicket/pages/RawPage.java @@ -18,20 +18,23 @@ import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; +import java.text.MessageFormat; import java.util.HashMap; import java.util.Map; + +import javax.servlet.http.HttpServletResponse; import org.apache.wicket.IRequestTarget; import org.apache.wicket.PageParameters; import org.apache.wicket.RequestCycle; import org.apache.wicket.protocol.http.WebRequest; import org.apache.wicket.protocol.http.WebResponse; +import org.apache.wicket.protocol.http.servlet.AbortWithWebErrorCodeException; import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.revwalk.RevCommit; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.gitblit.GitBlit; import com.gitblit.Keys; import com.gitblit.models.RepositoryModel; import com.gitblit.models.UserModel; @@ -44,9 +47,11 @@ private final Logger logger = LoggerFactory.getLogger(getClass().getSimpleName()); + String contentType; + public RawPage(final PageParameters params) { super(params); - + if (!params.containsKey("r")) { error(getString("gb.repositoryNotSpecified")); redirectToInterceptPage(new RepositoriesPage()); @@ -64,19 +69,20 @@ final String repositoryName = WicketUtils.getRepositoryName(params); final String objectId = WicketUtils.getObject(params); final String blobPath = WicketUtils.getPath(params); - String[] encodings = GitBlit.getEncodings(); + + String[] encodings = getEncodings(); GitBlitWebSession session = GitBlitWebSession.get(); UserModel user = session.getUser(); - - RepositoryModel model = GitBlit.self().getRepositoryModel(user, repositoryName); + + RepositoryModel model = app().repositories().getRepositoryModel(user, repositoryName); if (model == null) { // user does not have permission error(getString("gb.canNotLoadRepository") + " " + repositoryName); redirectToInterceptPage(new RepositoriesPage()); return; } - - Repository r = GitBlit.self().getRepository(repositoryName); + + Repository r = app().repositories().getRepository(repositoryName); if (r == null) { error(getString("gb.canNotLoadRepository") + " " + repositoryName); redirectToInterceptPage(new RepositoriesPage()); @@ -86,7 +92,14 @@ if (StringUtils.isEmpty(blobPath)) { // objectid referenced raw view byte [] binary = JGitUtils.getByteContent(r, objectId); - response.setContentType("application/octet-stream"); + if (binary == null) { + final String objectNotFound = MessageFormat.format("Raw page failed to find object {0} in {1}", + objectId, repositoryName); + logger.error(objectNotFound); + throw new AbortWithWebErrorCodeException(HttpServletResponse.SC_NOT_FOUND, objectNotFound); + } + contentType = "application/octet-stream"; + response.setContentType(contentType); response.setContentLength(binary.length); try { response.getOutputStream().write(binary); @@ -96,6 +109,12 @@ } else { // standard raw blob view RevCommit commit = JGitUtils.getCommit(r, objectId); + if (commit == null) { + final String commitNotFound = MessageFormat.format("Raw page failed to find commit {0} in {1}", + objectId, repositoryName); + logger.error(commitNotFound); + throw new AbortWithWebErrorCodeException(HttpServletResponse.SC_NOT_FOUND, commitNotFound); + } String filename = blobPath; if (blobPath.indexOf('/') > -1) { @@ -109,12 +128,15 @@ // Map the extensions to types Map<String, Integer> map = new HashMap<String, Integer>(); - for (String ext : GitBlit.getStrings(Keys.web.imageExtensions)) { + for (String ext : app().settings().getStrings(Keys.web.imageExtensions)) { map.put(ext.toLowerCase(), 2); } - for (String ext : GitBlit.getStrings(Keys.web.binaryExtensions)) { + for (String ext : app().settings().getStrings(Keys.web.binaryExtensions)) { map.put(ext.toLowerCase(), 3); } + + final String blobNotFound = MessageFormat.format("Raw page failed to find blob {0} in {1} @ {2}", + blobPath, repositoryName, objectId); if (extension != null) { int type = 0; @@ -125,7 +147,12 @@ case 2: // image blobs byte[] image = JGitUtils.getByteContent(r, commit.getTree(), blobPath, true); - response.setContentType("image/" + extension.toLowerCase()); + if (image == null) { + logger.error(blobNotFound); + throw new AbortWithWebErrorCodeException(HttpServletResponse.SC_NOT_FOUND, blobNotFound); + } + contentType = "image/" + extension.toLowerCase(); + response.setContentType(contentType); response.setContentLength(image.length); try { response.getOutputStream().write(image); @@ -136,13 +163,18 @@ case 3: // binary blobs (download) byte[] binary = JGitUtils.getByteContent(r, commit.getTree(), blobPath, true); + if (binary == null) { + logger.error(blobNotFound); + throw new AbortWithWebErrorCodeException(HttpServletResponse.SC_NOT_FOUND, blobNotFound); + } + contentType = "application/octet-stream"; response.setContentLength(binary.length); - response.setContentType("application/octet-stream; charset=UTF-8"); - + response.setContentType(contentType); + try { WebRequest request = (WebRequest) requestCycle.getRequest(); String userAgent = request.getHttpServletRequest().getHeader("User-Agent"); - + if (userAgent != null && userAgent.indexOf("MSIE 5.5") > -1) { response.setHeader("Content-Disposition", "filename=\"" + URLEncoder.encode(filename, "UTF-8") + "\""); @@ -157,7 +189,7 @@ catch (UnsupportedEncodingException e) { response.setHeader("Content-Disposition", "attachment; filename=\"" + filename + "\""); } - + try { response.getOutputStream().write(binary); } catch (IOException e) { @@ -168,7 +200,12 @@ // plain text String content = JGitUtils.getStringContent(r, commit.getTree(), blobPath, encodings); - response.setContentType("text/plain; charset=UTF-8"); + if (content == null) { + logger.error(blobNotFound); + throw new AbortWithWebErrorCodeException(HttpServletResponse.SC_NOT_FOUND, blobNotFound); + } + contentType = "text/plain; charset=UTF-8"; + response.setContentType(contentType); try { response.getOutputStream().write(content.getBytes("UTF-8")); } catch (Exception e) { @@ -180,7 +217,12 @@ // plain text String content = JGitUtils.getStringContent(r, commit.getTree(), blobPath, encodings); - response.setContentType("text/plain; charset=UTF-8"); + if (content == null) { + logger.error(blobNotFound); + throw new AbortWithWebErrorCodeException(HttpServletResponse.SC_NOT_FOUND, blobNotFound); + } + contentType = "text/plain; charset=UTF-8"; + response.setContentType(contentType); try { response.getOutputStream().write(content.getBytes("UTF-8")); } catch (Exception e) { @@ -192,4 +234,12 @@ } }); } + + @Override + protected void setHeaders(WebResponse response) { + super.setHeaders(response); + if (!StringUtils.isEmpty(contentType)) { + response.setContentType(contentType); + } + } } -- Gitblit v1.9.1