James Moger
2011-12-28 abeaaf77673e9e764fe68e398eeda1e3c3c22ea5
commit | author | age
f13c4c 1 /*
JM 2  * Copyright 2011 gitblit.com.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
5fe7df 16 package com.gitblit.wicket;
JM 17
18 import org.apache.wicket.Application;
19 import org.apache.wicket.Page;
20 import org.apache.wicket.Request;
21 import org.apache.wicket.Response;
22 import org.apache.wicket.Session;
2a7306 23 import org.apache.wicket.markup.html.WebPage;
5fe7df 24 import org.apache.wicket.protocol.http.WebApplication;
JM 25
fc948c 26 import com.gitblit.GitBlit;
155bf7 27 import com.gitblit.Keys;
6e6f9f 28 import com.gitblit.wicket.pages.ActivityPage;
716745 29 import com.gitblit.wicket.pages.BlamePage;
608ece 30 import com.gitblit.wicket.pages.BlobDiffPage;
5fe7df 31 import com.gitblit.wicket.pages.BlobPage;
232890 32 import com.gitblit.wicket.pages.BranchesPage;
608ece 33 import com.gitblit.wicket.pages.CommitDiffPage;
94b96b 34 import com.gitblit.wicket.pages.CommitPage;
c1c3c6 35 import com.gitblit.wicket.pages.DocsPage;
831469 36 import com.gitblit.wicket.pages.FederationRegistrationPage;
797322 37 import com.gitblit.wicket.pages.GravatarProfilePage;
f602a2 38 import com.gitblit.wicket.pages.HistoryPage;
698678 39 import com.gitblit.wicket.pages.LogPage;
531cd2 40 import com.gitblit.wicket.pages.MarkdownPage;
716745 41 import com.gitblit.wicket.pages.MetricsPage;
608ece 42 import com.gitblit.wicket.pages.PatchPage;
JM 43 import com.gitblit.wicket.pages.RawPage;
44 import com.gitblit.wicket.pages.RepositoriesPage;
a7571b 45 import com.gitblit.wicket.pages.ReviewProposalPage;
98ce17 46 import com.gitblit.wicket.pages.SearchPage;
5fe7df 47 import com.gitblit.wicket.pages.SummaryPage;
JM 48 import com.gitblit.wicket.pages.TagPage;
49 import com.gitblit.wicket.pages.TagsPage;
9802a7 50 import com.gitblit.wicket.pages.TicketPage;
98ce17 51 import com.gitblit.wicket.pages.TicketsPage;
5fe7df 52 import com.gitblit.wicket.pages.TreePage;
JM 53
54 public class GitBlitWebApp extends WebApplication {
55
56     @Override
57     public void init() {
58         super.init();
59
94b96b 60         // Setup page authorization mechanism
2a7306 61         boolean useAuthentication = GitBlit.getBoolean(Keys.web.authenticateViewPages, false)
JM 62                 || GitBlit.getBoolean(Keys.web.authenticateAdminPages, false);
b55030 63         if (useAuthentication) {
94b96b 64             AuthorizationStrategy authStrategy = new AuthorizationStrategy();
JM 65             getSecuritySettings().setAuthorizationStrategy(authStrategy);
66             getSecuritySettings().setUnauthorizedComponentInstantiationListener(authStrategy);
67         }
68
5fe7df 69         // Grab Browser info (like timezone, etc)
2a7306 70         if (GitBlit.getBoolean(Keys.web.useClientTimezone, false)) {
94b96b 71             getRequestCycleSettings().setGatherExtendedBrowserInfo(true);
JM 72         }
5fe7df 73
850794 74         // configure the resource cache duration to 90 days for deployment
JM 75         if (!GitBlit.isDebugMode()) {
76             getResourceSettings().setDefaultCacheDuration(90 * 86400);
77         }
78
232890 79         // setup the standard gitweb-ish urls
2a7306 80         mount("/summary", SummaryPage.class, "r");
JM 81         mount("/log", LogPage.class, "r", "h");
82         mount("/tags", TagsPage.class, "r");
83         mount("/branches", BranchesPage.class, "r");
84         mount("/commit", CommitPage.class, "r", "h");
85         mount("/tag", TagPage.class, "r", "h");
86         mount("/tree", TreePage.class, "r", "h", "f");
87         mount("/blob", BlobPage.class, "r", "h", "f");
88         mount("/raw", RawPage.class, "r", "h", "f");
89         mount("/blobdiff", BlobDiffPage.class, "r", "h", "f");
90         mount("/commitdiff", CommitDiffPage.class, "r", "h");
91         mount("/patch", PatchPage.class, "r", "h", "f");
92         mount("/history", HistoryPage.class, "r", "h", "f");
93         mount("/search", SearchPage.class);
424fe1 94         mount("/metrics", MetricsPage.class, "r");
716745 95         mount("/blame", BlamePage.class, "r", "h", "f");
008322 96
9802a7 97         // setup ticket urls
2a7306 98         mount("/tickets", TicketsPage.class, "r");
JM 99         mount("/ticket", TicketPage.class, "r", "h", "f");
94b96b 100
531cd2 101         // setup the markdown urls
2a7306 102         mount("/docs", DocsPage.class, "r");
JM 103         mount("/markdown", MarkdownPage.class, "r", "h", "f");
104
831469 105         // federation urls
dd9ae7 106         mount("/proposal", ReviewProposalPage.class, "t");
831469 107         mount("/registration", FederationRegistrationPage.class, "u", "n");
797322 108
6e6f9f 109         mount("/activity", ActivityPage.class, "r", "h");
797322 110         mount("/gravatar", GravatarProfilePage.class, "h");
2a7306 111     }
JM 112
113     private void mount(String location, Class<? extends WebPage> clazz, String... parameters) {
114         if (parameters == null) {
115             parameters = new String[] {};
116         }
b01ca0 117         if (!GitBlit.getBoolean(Keys.web.mountParameters, true)) {
JM 118             parameters = new String[] {};
119         }
7e5ee5 120         mount(new GitblitParamUrlCodingStrategy(location, clazz, parameters));
5fe7df 121     }
JM 122
123     @Override
124     public Class<? extends Page> getHomePage() {
125         return RepositoriesPage.class;
126     }
127
128     @Override
129     public final Session newSession(Request request, Response response) {
130         return new GitBlitWebSession(request);
131     }
132
133     @Override
134     public final String getConfigurationType() {
8c9a20 135         if (GitBlit.isDebugMode()) {
5fe7df 136             return Application.DEVELOPMENT;
2a7306 137         }
5fe7df 138         return Application.DEPLOYMENT;
JM 139     }
140
141     public static GitBlitWebApp get() {
142         return (GitBlitWebApp) WebApplication.get();
143     }
144 }