123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- /*
- * Copyright 2011 gitblit.com.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- package com.gitblit.wicket.pages;
-
- import java.text.MessageFormat;
- import java.util.ArrayList;
- import java.util.List;
-
- import org.apache.wicket.PageParameters;
- import org.apache.wicket.markup.html.basic.Label;
- import org.apache.wicket.markup.html.form.Button;
- import org.apache.wicket.markup.html.form.Form;
- import org.apache.wicket.markup.html.form.TextField;
- import org.apache.wicket.model.CompoundPropertyModel;
-
- import com.gitblit.Constants.FederationProposalResult;
- import com.gitblit.models.FederationProposal;
- import com.gitblit.models.RepositoryModel;
- import com.gitblit.utils.FederationUtils;
- import com.gitblit.utils.StringUtils;
- import com.gitblit.wicket.RequiresAdminRole;
- import com.gitblit.wicket.WicketUtils;
- import com.gitblit.wicket.panels.RepositoriesPanel;
-
- @RequiresAdminRole
- public class SendProposalPage extends RootSubPage {
-
- public String myUrl;
-
- public String destinationUrl;
-
- public String message;
-
- public SendProposalPage(PageParameters params) {
- super(params);
-
- setupPage(getString("gb.sendProposal"), "");
- setStatelessHint(true);
-
- final String token = WicketUtils.getToken(params);
-
- myUrl = WicketUtils.getGitblitURL(getRequest());
- destinationUrl = "https://";
-
- // temporary proposal
- FederationProposal proposal = app().federation().createFederationProposal(myUrl, token);
- if (proposal == null) {
- error(getString("gb.couldNotCreateFederationProposal"), true);
- }
-
- CompoundPropertyModel<SendProposalPage> model = new CompoundPropertyModel<SendProposalPage>(
- this);
-
- Form<SendProposalPage> form = new Form<SendProposalPage>("editForm", model) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onSubmit() {
- // confirm a repository name was entered
- if (StringUtils.isEmpty(myUrl)) {
- error(getString("gb.pleaseSetGitblitUrl"));
- return;
- }
- if (StringUtils.isEmpty(destinationUrl)) {
- error(getString("gb.pleaseSetDestinationUrl"));
- return;
- }
-
- // build new proposal
- FederationProposal proposal = app().federation().createFederationProposal(myUrl, token);
- proposal.url = myUrl;
- proposal.message = message;
- try {
- FederationProposalResult res = FederationUtils
- .propose(destinationUrl, proposal);
- switch (res) {
- case ACCEPTED:
- info(MessageFormat.format(getString("gb.proposalReceived"),
- destinationUrl));
- setResponsePage(RepositoriesPage.class);
- break;
- case NO_POKE:
- error(MessageFormat.format(getString("noGitblitFound"),
- destinationUrl, myUrl));
- break;
- case NO_PROPOSALS:
- error(MessageFormat.format(getString("gb.noProposals"),
- destinationUrl));
- break;
- case FEDERATION_DISABLED:
- error(MessageFormat
- .format(getString("gb.noFederation"),
- destinationUrl));
- break;
- case MISSING_DATA:
- error(MessageFormat.format(getString("gb.proposalFailed"),
- destinationUrl));
- break;
- case ERROR:
- error(MessageFormat.format(getString("gb.proposalError"),
- destinationUrl));
- break;
- }
- } catch (Exception e) {
- if (!StringUtils.isEmpty(e.getMessage())) {
- error(e.getMessage());
- } else {
- error(getString("gb.failedToSendProposal"));
- }
- }
- }
- };
- form.add(new TextField<String>("myUrl"));
- form.add(new TextField<String>("destinationUrl"));
- form.add(new TextField<String>("message"));
- form.add(new Label("tokenType", proposal.tokenType.name()));
- form.add(new Label("token", proposal.token));
-
- form.add(new Button("save"));
- Button cancel = new Button("cancel") {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void onSubmit() {
- setResponsePage(FederationPage.class);
- }
- };
- cancel.setDefaultFormProcessing(false);
- form.add(cancel);
- add(form);
-
- List<RepositoryModel> repositories = new ArrayList<RepositoryModel>(
- proposal.repositories.values());
- RepositoriesPanel repositoriesPanel = new RepositoriesPanel("repositoriesPanel", false,
- false, repositories, false, getAccessRestrictions());
- add(repositoriesPanel);
- }
-
- @Override
- protected Class<? extends BasePage> getRootNavPageClass() {
- return FederationPage.class;
- }
- }
|