List of usage examples for org.apache.wicket RestartResponseException RestartResponseException
public RestartResponseException(final IPageProvider pageProvider, final RedirectPolicy redirectPolicy)
From source file:com.danhaywood.isis.wicket.fullcalendar.collectioncontents.FullCalendarWithEventHandling.java
License:Apache License
@Override protected void onEventClicked(ClickedEvent event, CalendarResponse response) { final String oidStr = (String) event.getEvent().getPayload(); final RootOid oid = RootOidDefault.deString(oidStr, IsisContext.getOidMarshaller()); final ObjectAdapter adapter = IsisContext.getPersistenceSession().getAdapterManager().adapterFor(oid); final PageParameters params = new EntityModel(adapter).asPageParameters(); throw new RestartResponseException(EntityPage.class, params); }
From source file:com.evolveum.midpoint.web.page.self.PageAccountActivation.java
License:Apache License
private void propagatePassword(AjaxRequestTarget target, Form<?> form) { List<ShadowType> shadowsToActivate = getShadowsToActivate(); PasswordTextField passwordPanel = (PasswordTextField) form.get(createComponentPath(ID_PASSWORD)); String value = passwordPanel.getModelObject(); ConnectionEnvironment connEnv = ConnectionEnvironment.create(SchemaConstants.CHANNEL_GUI_USER_URI); UsernamePasswordAuthenticationToken token; try {/*from ww w .ja va2s . c o m*/ token = authenticationEvaluator.authenticate(connEnv, new PasswordAuthenticationContext(userModel.getObject().getName().getOrig(), value)); } catch (Exception ex) { LOGGER.error("Failed to authenticate user, reason {}", ex.getMessage()); getSession().error(getString("PageAccountActivation.authentication.failed")); throw new RestartResponseException(PageAccountActivation.class, getPageParameters()); } if (token == null) { LOGGER.error("Failed to authenticate user"); getSession().error(getString("PageAccountActivation.authentication.failed")); throw new RestartResponseException(PageAccountActivation.class, getPageParameters()); } ProtectedStringType passwordValue = new ProtectedStringType(); passwordValue.setClearValue(value); Collection<ObjectDelta<ShadowType>> passwordDeltas = new ArrayList<>(shadowsToActivate.size()); for (ShadowType shadow : shadowsToActivate) { ObjectDelta<ShadowType> shadowDelta = getPrismContext().deltaFactory().object() .createModificationReplaceProperty(ShadowType.class, shadow.getOid(), SchemaConstants.PATH_PASSWORD_VALUE, passwordValue); shadowDelta.addModificationReplaceProperty(ShadowType.F_LIFECYCLE_STATE, SchemaConstants.LIFECYCLE_PROPOSED); passwordDeltas.add(shadowDelta); } OperationResult result = runPrivileged(new Producer<OperationResult>() { private static final long serialVersionUID = 1L; @Override public OperationResult run() { OperationResult result = new OperationResult(OPERATION_ACTIVATE_SHADOWS); Task task = createAnonymousTask(OPERATION_ACTIVATE_SHADOWS); WebModelServiceUtils.save((Collection) passwordDeltas, null, result, task, PageAccountActivation.this); return result; } }); result.recomputeStatus(); if (!result.isSuccess()) { getSession().error(getString("PageAccountActivation.account.activation.failed")); LOGGER.error("Failed to acitvate accounts, reason: {} ", result.getMessage()); target.add(getFeedbackPanel()); } else { getSession().success(getString("PageAccountActivation.account.activation.successful")); target.add(getFeedbackPanel()); activated = true; } target.add(PageAccountActivation.this); }
From source file:com.gitblit.wicket.pages.BlobPage.java
License:Apache License
public BlobPage(PageParameters params) { super(params); Repository r = getRepository();/*w w w .j a v a2 s . c o m*/ final String blobPath = WicketUtils.getPath(params); String[] encodings = getEncodings(); if (StringUtils.isEmpty(objectId) && StringUtils.isEmpty(blobPath)) { throw new RestartResponseException(TreePage.class, WicketUtils.newRepositoryParameter(repositoryName)); } if (StringUtils.isEmpty(blobPath)) { // blob by objectid add(new BookmarkablePageLink<Void>("blameLink", BlamePage.class, WicketUtils.newPathParameter(repositoryName, objectId, blobPath)).setEnabled(false)); add(new BookmarkablePageLink<Void>("historyLink", HistoryPage.class).setEnabled(false)); String rawUrl = RawServlet.asLink(getContextUrl(), repositoryName, objectId, blobPath); add(new ExternalLink("rawLink", rawUrl)); add(new CommitHeaderPanel("commitHeader", objectId)); add(new PathBreadcrumbsPanel("breadcrumbs", repositoryName, blobPath, objectId)); Component c = new Label("blobText", JGitUtils.getStringContent(r, objectId, encodings)); WicketUtils.setCssClass(c, "plainprint"); add(c); } else { // standard blob view String extension = null; if (blobPath.lastIndexOf('.') > -1) { extension = blobPath.substring(blobPath.lastIndexOf('.') + 1).toLowerCase(); } // see if we should redirect to the doc page MarkupProcessor processor = new MarkupProcessor(app().settings(), app().xssFilter()); for (String ext : processor.getMarkupExtensions()) { if (ext.equals(extension)) { setResponsePage(DocPage.class, params); return; } } RevCommit commit = getCommit(); // blob page links add(new BookmarkablePageLink<Void>("blameLink", BlamePage.class, WicketUtils.newPathParameter(repositoryName, objectId, blobPath))); add(new BookmarkablePageLink<Void>("historyLink", HistoryPage.class, WicketUtils.newPathParameter(repositoryName, objectId, blobPath))); String rawUrl = RawServlet.asLink(getContextUrl(), repositoryName, objectId, blobPath); add(new ExternalLink("rawLink", rawUrl)); add(new CommitHeaderPanel("commitHeader", repositoryName, commit)); add(new PathBreadcrumbsPanel("breadcrumbs", repositoryName, blobPath, objectId)); // Map the extensions to types Map<String, Integer> map = new HashMap<String, Integer>(); for (String ext : app().settings().getStrings(Keys.web.prettyPrintExtensions)) { map.put(ext.toLowerCase(), 1); } for (String ext : app().settings().getStrings(Keys.web.imageExtensions)) { map.put(ext.toLowerCase(), 2); } for (String ext : app().settings().getStrings(Keys.web.binaryExtensions)) { map.put(ext.toLowerCase(), 3); } if (extension != null) { int type = 0; if (map.containsKey(extension)) { type = map.get(extension); } switch (type) { case 2: // image blobs add(new Label("blobText").setVisible(false)); add(new ExternalImage("blobImage", rawUrl)); break; case 3: // binary blobs add(new Label("blobText", "Binary File")); add(new Image("blobImage", "blobImage").setVisible(false)); break; default: // plain text String source = JGitUtils.getStringContent(r, commit.getTree(), blobPath, encodings); String table; if (source == null) { table = missingBlob(blobPath, commit); } else { table = generateSourceView(source, extension, type == 1); addBottomScriptInline("jQuery(prettyPrint);"); } add(new Label("blobText", table).setEscapeModelStrings(false)); add(new Image("blobImage", "blobImage").setVisible(false)); fileExtension = extension; } } else { // plain text String source = JGitUtils.getStringContent(r, commit.getTree(), blobPath, encodings); String table; if (source == null) { table = missingBlob(blobPath, commit); } else { table = generateSourceView(source, null, false); addBottomScriptInline("jQuery(prettyPrint);"); } add(new Label("blobText", table).setEscapeModelStrings(false)); add(new Image("blobImage", "blobImage").setVisible(false)); } } }
From source file:com.gitblit.wicket.pages.EditMilestonePage.java
License:Apache License
public EditMilestonePage(PageParameters params) { super(params); RepositoryModel model = getRepositoryModel(); if (!app().tickets().isAcceptingTicketUpdates(model)) { // ticket service is read-only throw new RestartResponseException(TicketsPage.class, WicketUtils.newOpenTicketsParameter(repositoryName)); }//from w w w. j ava2s .co m UserModel currentUser = GitBlitWebSession.get().getUser(); if (currentUser == null) { currentUser = UserModel.ANONYMOUS; } if (!currentUser.isAuthenticated || !currentUser.canAdmin(model)) { // administration prohibited throw new RestartResponseException(TicketsPage.class, WicketUtils.newOpenTicketsParameter(repositoryName)); } oldName = WicketUtils.getObject(params); if (StringUtils.isEmpty(oldName)) { // milestone not specified throw new RestartResponseException(TicketsPage.class, WicketUtils.newOpenTicketsParameter(repositoryName)); } TicketMilestone tm = app().tickets().getMilestone(getRepositoryModel(), oldName); if (tm == null) { // milestone does not exist throw new RestartResponseException(TicketsPage.class, WicketUtils.newOpenTicketsParameter(repositoryName)); } setStatelessHint(false); setOutputMarkupId(true); Form<Void> form = new Form<Void>("editForm"); add(form); nameModel = Model.of(tm.name); dueModel = Model.of(tm.due); statusModel = Model.of(tm.status); notificationModel = Model.of(true); form.add(new TextField<String>("name", nameModel)); form.add(new Html5DateField("due", dueModel, "yyyy-MM-dd")); form.add(new Label("dueFormat", "yyyy-MM-dd")); form.add(new CheckBox("notify", notificationModel)); addBottomScriptInline( "{var e=document.createElement('input');e.type='date';if(e.type=='date'){$('[name=\"due\"]~.help-inline').hide()}}"); addBottomScript("scripts/wicketHtml5Patch.js"); List<Status> statusChoices = Arrays.asList(Status.Open, Status.Closed); form.add(new DropDownChoice<TicketModel.Status>("status", statusModel, statusChoices)); form.add(new AjaxButton("save") { private static final long serialVersionUID = 1L; @Override protected void onSubmit(AjaxRequestTarget target) { String name = nameModel.getObject(); if (StringUtils.isEmpty(name)) { return; } Date due = dueModel.getObject(); Status status = statusModel.getObject(); boolean rename = !name.equals(oldName); boolean notify = notificationModel.getObject(); UserModel currentUser = GitBlitWebSession.get().getUser(); String createdBy = currentUser.username; TicketMilestone tm = app().tickets().getMilestone(getRepositoryModel(), oldName); tm.setName(name); tm.setDue(due); tm.status = status; boolean success = true; if (rename) { success = app().tickets().renameMilestone(getRepositoryModel(), oldName, name, createdBy, notify); } if (success && app().tickets().updateMilestone(getRepositoryModel(), tm, createdBy)) { redirectTo(TicketsPage.class, WicketUtils.newOpenTicketsParameter(repositoryName)); } else { // TODO error } } }); Button cancel = new Button("cancel") { private static final long serialVersionUID = 1L; @Override public void onSubmit() { setResponsePage(TicketsPage.class, WicketUtils.newOpenTicketsParameter(repositoryName)); } }; cancel.setDefaultFormProcessing(false); form.add(cancel); Link<Void> delete = new Link<Void>("delete") { private static final long serialVersionUID = 1L; @Override public void onClick() { UserModel currentUser = GitBlitWebSession.get().getUser(); String createdBy = currentUser.username; boolean notify = notificationModel.getObject(); if (app().tickets().deleteMilestone(getRepositoryModel(), oldName, createdBy, notify)) { setResponsePage(TicketsPage.class, WicketUtils.newOpenTicketsParameter(repositoryName)); } else { error(MessageFormat.format(getString("gb.milestoneDeleteFailed"), oldName)); } } }; delete.add(new JavascriptEventConfirmation("click", MessageFormat.format(getString("gb.deleteMilestone"), oldName))); form.add(delete); }
From source file:com.gitblit.wicket.pages.NewMilestonePage.java
License:Apache License
public NewMilestonePage(PageParameters params) { super(params); RepositoryModel model = getRepositoryModel(); if (!app().tickets().isAcceptingTicketUpdates(model)) { // ticket service is read-only throw new RestartResponseException(TicketsPage.class, WicketUtils.newOpenTicketsParameter(repositoryName)); }//from w w w. j a v a2 s . c om UserModel currentUser = GitBlitWebSession.get().getUser(); if (currentUser == null) { currentUser = UserModel.ANONYMOUS; } if (!currentUser.isAuthenticated || !currentUser.canAdmin(model)) { // administration prohibited throw new RestartResponseException(TicketsPage.class, WicketUtils.newOpenTicketsParameter(repositoryName)); } setStatelessHint(false); setOutputMarkupId(true); Form<Void> form = new Form<Void>("editForm"); add(form); nameModel = Model.of(""); dueModel = Model.of(new Date(System.currentTimeMillis() + TimeUtils.ONEDAY)); form.add(new TextField<String>("name", nameModel)); form.add(new Html5DateField("due", dueModel, "yyyy-MM-dd")); form.add(new Label("dueFormat", "yyyy-MM-dd")); addBottomScriptInline( "{var e=document.createElement('input');e.type='date';if(e.type=='date'){$('[name=\"due\"]~.help-inline').hide()}}"); addBottomScript("scripts/wicketHtml5Patch.js"); form.add(new AjaxButton("create") { private static final long serialVersionUID = 1L; @Override protected void onSubmit(AjaxRequestTarget target) { String name = nameModel.getObject(); if (StringUtils.isEmpty(name)) { // invalid name return; } TicketMilestone milestone = app().tickets().getMilestone(getRepositoryModel(), name); if (milestone != null) { // milestone already exists return; } Date due = dueModel.getObject(); UserModel currentUser = GitBlitWebSession.get().getUser(); String createdBy = currentUser.username; milestone = app().tickets().createMilestone(getRepositoryModel(), name, createdBy); if (milestone != null) { milestone.due = due; app().tickets().updateMilestone(getRepositoryModel(), milestone, createdBy); redirectTo(TicketsPage.class, WicketUtils.newOpenTicketsParameter(repositoryName)); } else { // TODO error } } }); Button cancel = new Button("cancel") { private static final long serialVersionUID = 1L; @Override public void onSubmit() { setResponsePage(TicketsPage.class, WicketUtils.newOpenTicketsParameter(repositoryName)); } }; cancel.setDefaultFormProcessing(false); form.add(cancel); }
From source file:com.gitblit.wicket.pages.RepositoryPage.java
License:Apache License
public RepositoryPage(PageParameters params) { super(params); repositoryName = WicketUtils.getRepositoryName(params); String root = StringUtils.getFirstPathElement(repositoryName); if (StringUtils.isEmpty(root)) { projectName = app().settings().getString(Keys.web.repositoryRootGroupName, "main"); } else {/*from ww w . j a va2 s. c o m*/ projectName = root; } objectId = WicketUtils.getObject(params); if (StringUtils.isEmpty(repositoryName)) { error(MessageFormat.format(getString("gb.repositoryNotSpecifiedFor"), getPageName()), true); } if (!getRepositoryModel().hasCommits && getClass() != EmptyRepositoryPage.class) { throw new RestartResponseException(EmptyRepositoryPage.class, params); } if (getRepositoryModel().isCollectingGarbage) { error(MessageFormat.format(getString("gb.busyCollectingGarbage"), getRepositoryModel().name), true); } if (objectId != null) { RefModel branch = null; if ((branch = JGitUtils.getBranch(getRepository(), objectId)) != null) { UserModel user = GitBlitWebSession.get().getUser(); if (user == null) { // workaround until get().getUser() is reviewed throughout the app user = UserModel.ANONYMOUS; } boolean canAccess = user.canView(getRepositoryModel(), branch.reference.getName()); if (!canAccess) { error(getString("gb.accessDenied"), true); } } } if (!params.get(PARAM_STAR).isEmpty()) { // set starred state boolean star = params.get(PARAM_STAR).toBoolean(); UserModel user = GitBlitWebSession.get().getUser(); if (user != null && user.isAuthenticated) { UserRepositoryPreferences prefs = user.getPreferences() .getRepositoryPreferences(getRepositoryModel().name); prefs.starred = star; try { app().gitblit().reviseUser(user.username, user); } catch (GitBlitException e) { logger.error("Failed to update user " + user.username, e); error(getString("gb.failedToUpdateUser"), false); } } } showAdmin = false; if (app().settings().getBoolean(Keys.web.authenticateAdminPages, true)) { boolean allowAdmin = app().settings().getBoolean(Keys.web.allowAdministration, false); showAdmin = allowAdmin && GitBlitWebSession.get().canAdmin(); } else { showAdmin = app().settings().getBoolean(Keys.web.allowAdministration, false); } isOwner = GitBlitWebSession.get().isLoggedIn() && (getRepositoryModel().isOwner(GitBlitWebSession.get().getUsername())); // register the available navigation links for this page and user List<NavLink> navLinks = registerNavLinks(); // standard navigation links NavigationPanel navigationPanel = new NavigationPanel("repositoryNavPanel", getRepoNavPageClass(), navLinks); add(navigationPanel); add(new ExternalLink("syndication", SyndicationServlet .asLink(GitBlitRequestUtils.getRelativePathPrefixToContextRoot(), getRepositoryName(), null, 0))); // add floating search form SearchForm searchForm = new SearchForm("searchForm", getRepositoryName()); add(searchForm); searchForm.setTranslatedAttributes(); // set stateless page preference setStatelessHint(true); }
From source file:com.gitblit.wicket.pages.TicketPage.java
License:Apache License
public TicketPage(PageParameters params) { super(params); final UserModel user = GitBlitWebSession.get().getUser() == null ? UserModel.ANONYMOUS : GitBlitWebSession.get().getUser(); final RepositoryModel repository = getRepositoryModel(); final String id = WicketUtils.getObject(params); long ticketId = Long.parseLong(id); ticket = app().tickets().getTicket(repository, ticketId); if (ticket == null) { // ticket not found throw new RestartResponseException(TicketsPage.class, WicketUtils.newRepositoryParameter(repositoryName)); }// w w w .j a v a 2s . c o m final List<Change> revisions = new ArrayList<Change>(); List<Change> comments = new ArrayList<Change>(); List<Change> statusChanges = new ArrayList<Change>(); List<Change> discussion = new ArrayList<Change>(); for (Change change : ticket.changes) { if (change.hasComment() || (change.isStatusChange() && (change.getStatus() != Status.New))) { discussion.add(change); } if (change.hasComment()) { comments.add(change); } if (change.hasPatchset()) { revisions.add(change); } if (change.isStatusChange() && !change.hasPatchset()) { statusChanges.add(change); } } final Change currentRevision = revisions.isEmpty() ? null : revisions.get(revisions.size() - 1); final Patchset currentPatchset = ticket.getCurrentPatchset(); /* * TICKET HEADER */ String href = urlFor(TicketsPage.class, params).toString(); add(new ExternalLink("ticketNumber", href, "#" + ticket.number)); Label headerStatus = new Label("headerStatus", ticket.status.toString()); WicketUtils.setCssClass(headerStatus, TicketsUI.getLozengeClass(ticket.status, false)); add(headerStatus); add(new Label("ticketTitle", ticket.title)); if (currentPatchset == null) { add(new Label("diffstat").setVisible(false)); } else { // calculate the current diffstat of the patchset add(new DiffStatPanel("diffstat", ticket.insertions, ticket.deletions)); } /* * TAB TITLES */ add(new Label("commentCount", "" + comments.size()).setVisible(!comments.isEmpty())); add(new Label("commitCount", "" + (currentPatchset == null ? 0 : currentPatchset.commits)) .setVisible(currentPatchset != null)); /* * TICKET AUTHOR and DATE (DISCUSSION TAB) */ UserModel createdBy = app().users().getUserModel(ticket.createdBy); if (createdBy == null) { add(new Label("whoCreated", ticket.createdBy)); } else { add(new LinkPanel("whoCreated", null, createdBy.getDisplayName(), UserPage.class, WicketUtils.newUsernameParameter(createdBy.username))); } if (ticket.isProposal()) { // clearly indicate this is a change ticket add(new Label("creationMessage", getString("gb.proposedThisChange"))); } else { // standard ticket add(new Label("creationMessage", getString("gb.createdThisTicket"))); } String dateFormat = app().settings().getString(Keys.web.datestampLongFormat, "EEEE, MMMM d, yyyy"); String timestampFormat = app().settings().getString(Keys.web.datetimestampLongFormat, "EEEE, MMMM d, yyyy"); final TimeZone timezone = getTimeZone(); final DateFormat df = new SimpleDateFormat(dateFormat); df.setTimeZone(timezone); final DateFormat tsf = new SimpleDateFormat(timestampFormat); tsf.setTimeZone(timezone); final Calendar cal = Calendar.getInstance(timezone); String fuzzydate; TimeUtils tu = getTimeUtils(); Date createdDate = ticket.created; if (TimeUtils.isToday(createdDate, timezone)) { fuzzydate = tu.today(); } else if (TimeUtils.isYesterday(createdDate, timezone)) { fuzzydate = tu.yesterday(); } else { // calculate a fuzzy time ago date cal.setTime(createdDate); cal.set(Calendar.HOUR_OF_DAY, 0); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MILLISECOND, 0); createdDate = cal.getTime(); fuzzydate = getTimeUtils().timeAgo(createdDate); } Label when = new Label("whenCreated", fuzzydate + ", " + df.format(createdDate)); WicketUtils.setHtmlTooltip(when, tsf.format(ticket.created)); add(when); String exportHref = urlFor(ExportTicketPage.class, params).toString(); add(new ExternalLink("exportJson", exportHref, "json")); /* * RESPONSIBLE (DISCUSSION TAB) */ if (StringUtils.isEmpty(ticket.responsible)) { add(new Label("responsible")); } else { UserModel responsible = app().users().getUserModel(ticket.responsible); if (responsible == null) { add(new Label("responsible", ticket.responsible)); } else { add(new LinkPanel("responsible", null, responsible.getDisplayName(), UserPage.class, WicketUtils.newUsernameParameter(responsible.username))); } } /* * MILESTONE PROGRESS (DISCUSSION TAB) */ if (StringUtils.isEmpty(ticket.milestone)) { add(new Label("milestone")); } else { // link to milestone query TicketMilestone tm = app().tickets().getMilestone(repository, ticket.milestone); if (tm == null) { tm = new TicketMilestone(ticket.milestone); } PageParameters milestoneParameters; if (tm.isOpen()) { milestoneParameters = WicketUtils.newOpenTicketsParameter(repositoryName); } else { milestoneParameters = WicketUtils.newRepositoryParameter(repositoryName); } milestoneParameters.add(Lucene.milestone.name(), ticket.milestone); int progress = 0; int open = 0; int closed = 0; if (tm != null) { progress = tm.getProgress(); open = tm.getOpenTickets(); closed = tm.getClosedTickets(); } Fragment milestoneProgress = new Fragment("milestone", "milestoneProgressFragment", TicketPage.this); milestoneProgress .add(new LinkPanel("link", null, ticket.milestone, TicketsPage.class, milestoneParameters)); Label label = new Label("progress"); WicketUtils.setCssStyle(label, "width:" + progress + "%;"); milestoneProgress.add(label); WicketUtils.setHtmlTooltip(milestoneProgress, MessageFormat.format(getString("gb.milestoneProgress"), open, closed)); add(milestoneProgress); } /* * TICKET DESCRIPTION (DISCUSSION TAB) */ String desc; if (StringUtils.isEmpty(ticket.body)) { desc = getString("gb.noDescriptionGiven"); } else { String bugtraq = bugtraqProcessor().processText(getRepository(), repositoryName, ticket.body); String html = MarkdownUtils.transformGFM(app().settings(), bugtraq, ticket.repository); String safeHtml = app().xssFilter().relaxed(html); desc = safeHtml; } add(new Label("ticketDescription", desc).setEscapeModelStrings(false)); /* * PARTICIPANTS (DISCUSSION TAB) */ if (app().settings().getBoolean(Keys.web.allowGravatar, true)) { // gravatar allowed List<String> participants = ticket.getParticipants(); add(new Label("participantsLabel", MessageFormat.format( getString(participants.size() > 1 ? "gb.nParticipants" : "gb.oneParticipant"), "<b>" + participants.size() + "</b>")).setEscapeModelStrings(false)); ListDataProvider<String> participantsDp = new ListDataProvider<String>(participants); DataView<String> participantsView = new DataView<String>("participants", participantsDp) { private static final long serialVersionUID = 1L; @Override public void populateItem(final Item<String> item) { String username = item.getModelObject(); UserModel user = app().users().getUserModel(username); if (user == null) { user = new UserModel(username); } item.add(new AvatarImage("participant", user.getDisplayName(), user.emailAddress, null, 25, true)); } }; add(participantsView); } else { // gravatar prohibited add(new Label("participantsLabel").setVisible(false)); add(new Label("participants").setVisible(false)); } /* * LARGE STATUS INDICATOR WITH ICON (DISCUSSION TAB->SIDE BAR) */ Fragment ticketStatus = new Fragment("ticketStatus", "ticketStatusFragment", TicketPage.this); Label ticketIcon = TicketsUI.getStateIcon("ticketIcon", ticket); ticketStatus.add(ticketIcon); ticketStatus.add(new Label("ticketStatus", ticket.status.toString())); WicketUtils.setCssClass(ticketStatus, TicketsUI.getLozengeClass(ticket.status, false)); add(ticketStatus); /* * UPDATE FORM (DISCUSSION TAB) */ if (user.canEdit(ticket, repository) && app().tickets().isAcceptingTicketUpdates(repository)) { if (user.canAdmin(ticket, repository) && ticket.isOpen()) { /* * OPEN TICKET */ Fragment controls = new Fragment("controls", "openControlsFragment", TicketPage.this); /* * STATUS */ List<Status> choices = new ArrayList<Status>(); if (ticket.isProposal()) { choices.addAll(Arrays.asList(TicketModel.Status.proposalWorkflow)); } else if (ticket.isBug()) { choices.addAll(Arrays.asList(TicketModel.Status.bugWorkflow)); } else { choices.addAll(Arrays.asList(TicketModel.Status.requestWorkflow)); } choices.remove(ticket.status); ListDataProvider<Status> workflowDp = new ListDataProvider<Status>(choices); DataView<Status> statusView = new DataView<Status>("newStatus", workflowDp) { private static final long serialVersionUID = 1L; @Override public void populateItem(final Item<Status> item) { SimpleAjaxLink<Status> link = new SimpleAjaxLink<Status>("link", item.getModel()) { private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { Status status = getModel().getObject(); Change change = new Change(user.username); change.setField(Field.status, status); if (!ticket.isWatching(user.username)) { change.watch(user.username); } TicketModel update = app().tickets().updateTicket(repository, ticket.number, change); app().tickets().createNotifier().sendMailing(update); redirectTo(TicketsPage.class, getPageParameters()); } }; String css = TicketsUI.getStatusClass(item.getModel().getObject()); WicketUtils.setCssClass(link, css); item.add(link); } }; controls.add(statusView); /* * RESPONSIBLE LIST */ Set<String> userlist = new TreeSet<String>(ticket.getParticipants()); if (UserModel.ANONYMOUS.canPush(getRepositoryModel()) || AuthorizationControl.AUTHENTICATED == getRepositoryModel().authorizationControl) { // authorization is ANONYMOUS or AUTHENTICATED (i.e. all users can be set responsible) userlist.addAll(app().users().getAllUsernames()); } else { // authorization is by NAMED users (users with PUSH permission can be set responsible) for (RegistrantAccessPermission rp : app().repositories() .getUserAccessPermissions(getRepositoryModel())) { if (rp.permission.atLeast(AccessPermission.PUSH)) { userlist.add(rp.registrant); } } } List<TicketResponsible> responsibles = new ArrayList<TicketResponsible>(); if (!StringUtils.isEmpty(ticket.responsible)) { // exclude the current responsible userlist.remove(ticket.responsible); } for (String username : userlist) { UserModel u = app().users().getUserModel(username); if (u != null) { responsibles.add(new TicketResponsible(u)); } } Collections.sort(responsibles); responsibles.add(new TicketResponsible(ESC_NIL, "", "")); ListDataProvider<TicketResponsible> responsibleDp = new ListDataProvider<TicketResponsible>( responsibles); DataView<TicketResponsible> responsibleView = new DataView<TicketResponsible>("newResponsible", responsibleDp) { private static final long serialVersionUID = 1L; @Override public void populateItem(final Item<TicketResponsible> item) { SimpleAjaxLink<TicketResponsible> link = new SimpleAjaxLink<TicketResponsible>("link", item.getModel()) { private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { TicketResponsible responsible = getModel().getObject(); Change change = new Change(user.username); change.setField(Field.responsible, responsible.username); if (!StringUtils.isEmpty(responsible.username)) { if (!ticket.isWatching(responsible.username)) { change.watch(responsible.username); } } if (!ticket.isWatching(user.username)) { change.watch(user.username); } TicketModel update = app().tickets().updateTicket(repository, ticket.number, change); app().tickets().createNotifier().sendMailing(update); redirectTo(TicketsPage.class, getPageParameters()); } }; item.add(link); } }; controls.add(responsibleView); /* * MILESTONE LIST */ List<TicketMilestone> milestones = app().tickets().getMilestones(repository, Status.Open); if (!StringUtils.isEmpty(ticket.milestone)) { for (TicketMilestone milestone : milestones) { if (milestone.name.equals(ticket.milestone)) { milestones.remove(milestone); break; } } } milestones.add(new TicketMilestone(ESC_NIL)); ListDataProvider<TicketMilestone> milestoneDp = new ListDataProvider<TicketMilestone>(milestones); DataView<TicketMilestone> milestoneView = new DataView<TicketMilestone>("newMilestone", milestoneDp) { private static final long serialVersionUID = 1L; @Override public void populateItem(final Item<TicketMilestone> item) { SimpleAjaxLink<TicketMilestone> link = new SimpleAjaxLink<TicketMilestone>("link", item.getModel()) { private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { TicketMilestone milestone = getModel().getObject(); Change change = new Change(user.username); if (NIL.equals(milestone.name) || ESC_NIL.equals(milestone.name)) { change.setField(Field.milestone, ""); } else { change.setField(Field.milestone, milestone.name); } if (!ticket.isWatching(user.username)) { change.watch(user.username); } TicketModel update = app().tickets().updateTicket(repository, ticket.number, change); app().tickets().createNotifier().sendMailing(update); redirectTo(TicketsPage.class, getPageParameters()); } }; item.add(link); } }; controls.add(milestoneView); String editHref = urlFor(EditTicketPage.class, params).toString(); controls.add(new ExternalLink("editLink", editHref, getString("gb.edit"))); add(controls); } else { /* * CLOSED TICKET */ Fragment controls = new Fragment("controls", "closedControlsFragment", TicketPage.this); String editHref = urlFor(EditTicketPage.class, params).toString(); controls.add(new ExternalLink("editLink", editHref, getString("gb.edit"))); add(controls); } } else { add(new Label("controls").setVisible(false)); } /* * TICKET METADATA */ add(new Label("ticketType", ticket.type.toString())); add(new Label("priority", ticket.priority.toString())); add(new Label("severity", ticket.severity.toString())); if (StringUtils.isEmpty(ticket.topic)) { add(new Label("ticketTopic").setVisible(false)); } else { // process the topic using the bugtraq config to link things String topic = bugtraqProcessor().processText(getRepository(), repositoryName, ticket.topic); String safeTopic = app().xssFilter().relaxed(topic); add(new Label("ticketTopic", safeTopic).setEscapeModelStrings(false)); } /* * VOTERS */ List<String> voters = ticket.getVoters(); Label votersCount = new Label("votes", "" + voters.size()); if (voters.size() == 0) { WicketUtils.setCssClass(votersCount, "badge"); } else { WicketUtils.setCssClass(votersCount, "badge badge-info"); } add(votersCount); if (user.isAuthenticated && app().tickets().isAcceptingTicketUpdates(repository)) { Model<String> model; if (ticket.isVoter(user.username)) { model = Model.of(getString("gb.removeVote")); } else { model = Model.of(MessageFormat.format(getString("gb.vote"), ticket.type.toString())); } SimpleAjaxLink<String> link = new SimpleAjaxLink<String>("voteLink", model) { private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { Change change = new Change(user.username); if (ticket.isVoter(user.username)) { change.unvote(user.username); } else { change.vote(user.username); } app().tickets().updateTicket(repository, ticket.number, change); redirectTo(TicketsPage.class, getPageParameters()); } }; add(link); } else { add(new Label("voteLink").setVisible(false)); } /* * WATCHERS */ List<String> watchers = ticket.getWatchers(); Label watchersCount = new Label("watchers", "" + watchers.size()); if (watchers.size() == 0) { WicketUtils.setCssClass(watchersCount, "badge"); } else { WicketUtils.setCssClass(watchersCount, "badge badge-info"); } add(watchersCount); if (user.isAuthenticated && app().tickets().isAcceptingTicketUpdates(repository)) { Model<String> model; if (ticket.isWatching(user.username)) { model = Model.of(getString("gb.stopWatching")); } else { model = Model.of(MessageFormat.format(getString("gb.watch"), ticket.type.toString())); } SimpleAjaxLink<String> link = new SimpleAjaxLink<String>("watchLink", model) { private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { Change change = new Change(user.username); if (ticket.isWatching(user.username)) { change.unwatch(user.username); } else { change.watch(user.username); } app().tickets().updateTicket(repository, ticket.number, change); redirectTo(TicketsPage.class, getPageParameters()); } }; add(link); } else { add(new Label("watchLink").setVisible(false)); } /* * TOPIC & LABELS (DISCUSSION TAB->SIDE BAR) */ ListDataProvider<String> labelsDp = new ListDataProvider<String>(ticket.getLabels()); DataView<String> labelsView = new DataView<String>("labels", labelsDp) { private static final long serialVersionUID = 1L; @Override public void populateItem(final Item<String> item) { final String value = item.getModelObject(); Label label = new Label("label", value); TicketLabel tLabel = app().tickets().getLabel(repository, value); String background = MessageFormat.format("background-color:{0};", tLabel.color); label.add(new AttributeModifier("style", background)); item.add(label); } }; add(labelsView); /* * COMMENTS & STATUS CHANGES (DISCUSSION TAB) */ if (comments.size() == 0) { add(new Label("discussion").setVisible(false)); } else { Fragment discussionFragment = new Fragment("discussion", "discussionFragment", TicketPage.this); ListDataProvider<Change> discussionDp = new ListDataProvider<Change>(discussion); DataView<Change> discussionView = new DataView<Change>("discussion", discussionDp) { private static final long serialVersionUID = 1L; @Override public void populateItem(final Item<Change> item) { final Change entry = item.getModelObject(); if (entry.isMerge()) { /* * MERGE */ String resolvedBy = entry.getString(Field.mergeSha); // identify the merged patch, it is likely the last Patchset mergedPatch = null; for (Change c : revisions) { if (c.patchset.tip.equals(resolvedBy)) { mergedPatch = c.patchset; break; } } String commitLink; if (mergedPatch == null) { // shouldn't happen, but just-in-case int len = app().settings().getInteger(Keys.web.shortCommitIdLength, 6); commitLink = resolvedBy.substring(0, len); } else { // expected result commitLink = mergedPatch.toString(); } Fragment mergeFragment = new Fragment("entry", "mergeFragment", TicketPage.this); mergeFragment.add(new LinkPanel("commitLink", null, commitLink, CommitPage.class, WicketUtils.newObjectParameter(repositoryName, resolvedBy))); mergeFragment.add(new Label("toBranch", MessageFormat.format(getString("gb.toBranch"), "<b>" + ticket.mergeTo + "</b>")) .setEscapeModelStrings(false)); addUserAttributions(mergeFragment, entry, 0); addDateAttributions(mergeFragment, entry); item.add(mergeFragment); } else if (entry.isStatusChange()) { /* * STATUS CHANGE */ Fragment frag = new Fragment("entry", "statusFragment", TicketPage.this); Label status = new Label("statusChange", entry.getStatus().toString()); String css = TicketsUI.getLozengeClass(entry.getStatus(), false); WicketUtils.setCssClass(status, css); frag.add(status); addUserAttributions(frag, entry, avatarWidth); addDateAttributions(frag, entry); item.add(frag); } else { /* * COMMENT */ String bugtraq = bugtraqProcessor().processText(getRepository(), repositoryName, entry.comment.text); String comment = MarkdownUtils.transformGFM(app().settings(), bugtraq, repositoryName); String safeComment = app().xssFilter().relaxed(comment); Fragment frag = new Fragment("entry", "commentFragment", TicketPage.this); Label commentIcon = new Label("commentIcon"); if (entry.comment.src == CommentSource.Email) { WicketUtils.setCssClass(commentIcon, "iconic-mail"); } else { WicketUtils.setCssClass(commentIcon, "iconic-comment-alt2-stroke"); } frag.add(commentIcon); frag.add(new Label("comment", safeComment).setEscapeModelStrings(false)); addUserAttributions(frag, entry, avatarWidth); addDateAttributions(frag, entry); item.add(frag); } } }; discussionFragment.add(discussionView); add(discussionFragment); } /* * ADD COMMENT PANEL */ if (UserModel.ANONYMOUS.equals(user) || !repository.isBare || repository.isFrozen || repository.isMirror) { // prohibit comments for anonymous users, local working copy repos, // frozen repos, and mirrors add(new Label("newComment").setVisible(false)); } else { // permit user to comment Fragment newComment = new Fragment("newComment", "newCommentFragment", TicketPage.this); AvatarImage img = new AvatarImage("newCommentAvatar", user.username, user.emailAddress, "gravatar-round", avatarWidth, true); newComment.add(img); CommentPanel commentPanel = new CommentPanel("commentPanel", user, ticket, null, TicketsPage.class); commentPanel.setRepository(repositoryName); newComment.add(commentPanel); add(newComment); } /* * PATCHSET TAB */ if (currentPatchset == null) { // no patchset available RepositoryUrl repoUrl = getRepositoryUrl(user, repository); boolean canPropose = repoUrl != null && repoUrl.hasPermission() && repoUrl.permission.atLeast(AccessPermission.CLONE) && !UserModel.ANONYMOUS.equals(user); if (ticket.isOpen() && app().tickets().isAcceptingNewPatchsets(repository) && canPropose) { // ticket & repo will accept a proposal patchset // show the instructions for proposing a patchset Fragment changeIdFrag = new Fragment("patchset", "proposeFragment", TicketPage.this); changeIdFrag.add(new Label("proposeInstructions", MarkdownUtils.transformMarkdown(getString("gb.proposeInstructions"))) .setEscapeModelStrings(false)); changeIdFrag .add(new Label("ptWorkflow", MessageFormat.format(getString("gb.proposeWith"), "Barnum"))); changeIdFrag.add(new Label("ptWorkflowSteps", getProposeWorkflow("propose_pt.md", repoUrl.url, ticket.number)) .setEscapeModelStrings(false)); changeIdFrag .add(new Label("gitWorkflow", MessageFormat.format(getString("gb.proposeWith"), "Git"))); changeIdFrag.add(new Label("gitWorkflowSteps", getProposeWorkflow("propose_git.md", repoUrl.url, ticket.number)) .setEscapeModelStrings(false)); add(changeIdFrag); } else { // explain why you can't propose a patchset Fragment fragment = new Fragment("patchset", "canNotProposeFragment", TicketPage.this); String reason = ""; if (ticket.isClosed()) { reason = getString("gb.ticketIsClosed"); } else if (repository.isMirror) { reason = getString("gb.repositoryIsMirror"); } else if (repository.isFrozen) { reason = getString("gb.repositoryIsFrozen"); } else if (!repository.acceptNewPatchsets) { reason = getString("gb.repositoryDoesNotAcceptPatchsets"); } else if (!canPropose) { if (UserModel.ANONYMOUS.equals(user)) { reason = getString("gb.anonymousCanNotPropose"); } else { reason = getString("gb.youDoNotHaveClonePermission"); } } else { reason = getString("gb.serverDoesNotAcceptPatchsets"); } fragment.add(new Label("reason", reason)); add(fragment); } } else { // show current patchset Fragment patchsetFrag = new Fragment("patchset", "patchsetFragment", TicketPage.this); patchsetFrag.add(new Label("commitsInPatchset", MessageFormat.format(getString("gb.commitsInPatchsetN"), currentPatchset.number))); patchsetFrag.add(createMergePanel(user, repository)); if (ticket.isOpen()) { // current revision MarkupContainer panel = createPatchsetPanel("panel", repository, user); patchsetFrag.add(panel); addUserAttributions(patchsetFrag, currentRevision, avatarWidth); addUserAttributions(panel, currentRevision, 0); addDateAttributions(panel, currentRevision); } else { // current revision patchsetFrag.add(new Label("panel").setVisible(false)); } // commits List<RevCommit> commits = JGitUtils.getRevLog(getRepository(), currentPatchset.base, currentPatchset.tip); ListDataProvider<RevCommit> commitsDp = new ListDataProvider<RevCommit>(commits); DataView<RevCommit> commitsView = new DataView<RevCommit>("commit", commitsDp) { private static final long serialVersionUID = 1L; @Override public void populateItem(final Item<RevCommit> item) { RevCommit commit = item.getModelObject(); PersonIdent author = commit.getAuthorIdent(); item.add(new AvatarImage("authorAvatar", author.getName(), author.getEmailAddress(), null, 16, false)); item.add(new Label("author", commit.getAuthorIdent().getName())); item.add(new LinkPanel("commitId", null, getShortObjectId(commit.getName()), CommitPage.class, WicketUtils.newObjectParameter(repositoryName, commit.getName()), true)); item.add(new LinkPanel("diff", "link", getString("gb.diff"), CommitDiffPage.class, WicketUtils.newObjectParameter(repositoryName, commit.getName()), true)); item.add(new Label("title", StringUtils.trimString(commit.getShortMessage(), Constants.LEN_SHORTLOG_REFS))); item.add(WicketUtils.createDateLabel("commitDate", JGitUtils.getAuthorDate(commit), GitBlitWebSession.get().getTimezone(), getTimeUtils(), false)); item.add(new DiffStatPanel("commitDiffStat", 0, 0, true)); } }; patchsetFrag.add(commitsView); add(patchsetFrag); } /* * ACTIVITY TAB */ Fragment revisionHistory = new Fragment("activity", "activityFragment", TicketPage.this); List<Change> events = new ArrayList<Change>(ticket.changes); Collections.sort(events); Collections.reverse(events); ListDataProvider<Change> eventsDp = new ListDataProvider<Change>(events); DataView<Change> eventsView = new DataView<Change>("event", eventsDp) { private static final long serialVersionUID = 1L; @Override public void populateItem(final Item<Change> item) { Change event = item.getModelObject(); addUserAttributions(item, event, 16); if (event.hasPatchset()) { // patchset Patchset patchset = event.patchset; String what; if (event.isStatusChange() && (Status.New == event.getStatus())) { what = getString("gb.proposedThisChange"); } else if (patchset.rev == 1) { what = MessageFormat.format(getString("gb.uploadedPatchsetN"), patchset.number); } else { if (patchset.added == 1) { what = getString("gb.addedOneCommit"); } else { what = MessageFormat.format(getString("gb.addedNCommits"), patchset.added); } } item.add(new Label("what", what)); LinkPanel psr = new LinkPanel("patchsetRevision", null, patchset.number + "-" + patchset.rev, ComparePage.class, WicketUtils.newRangeParameter(repositoryName, patchset.parent == null ? patchset.base : patchset.parent, patchset.tip), true); WicketUtils.setHtmlTooltip(psr, patchset.toString()); WicketUtils.setCssClass(psr, "aui-lozenge aui-lozenge-subtle"); item.add(psr); String typeCss = getPatchsetTypeCss(patchset.type); Label typeLabel = new Label("patchsetType", patchset.type.toString()); if (typeCss == null) { typeLabel.setVisible(false); } else { WicketUtils.setCssClass(typeLabel, typeCss); } item.add(typeLabel); Link<Void> deleteLink = createDeletePatchsetLink(repository, patchset); if (user.canDeleteRef(repository)) { item.add(deleteLink.setVisible(patchset.canDelete)); } else { item.add(deleteLink.setVisible(false)); } // show commit diffstat item.add(new DiffStatPanel("patchsetDiffStat", patchset.insertions, patchset.deletions, patchset.rev > 1)); } else if (event.hasComment()) { // comment item.add(new Label("what", getString("gb.commented"))); item.add(new Label("patchsetRevision").setVisible(false)); item.add(new Label("patchsetType").setVisible(false)); item.add(new Label("deleteRevision").setVisible(false)); item.add(new Label("patchsetDiffStat").setVisible(false)); } else if (event.hasReference()) { // reference switch (event.reference.getSourceType()) { case Commit: { final int shaLen = app().settings().getInteger(Keys.web.shortCommitIdLength, 6); item.add(new Label("what", getString("gb.referencedByCommit"))); LinkPanel psr = new LinkPanel("patchsetRevision", null, event.reference.toString().substring(0, shaLen), CommitPage.class, WicketUtils.newObjectParameter(repositoryName, event.reference.toString()), true); WicketUtils.setHtmlTooltip(psr, event.reference.toString()); WicketUtils.setCssClass(psr, "ticketReference-commit shortsha1"); item.add(psr); } break; case Ticket: { final String text = MessageFormat.format("ticket/{0}", event.reference.ticketId); item.add(new Label("what", getString("gb.referencedByTicket"))); //NOTE: Ideally reference the exact comment using reference.toString, // however anchor hash is used and is escaped resulting in broken link LinkPanel psr = new LinkPanel("patchsetRevision", null, text, TicketsPage.class, WicketUtils.newObjectParameter(repositoryName, event.reference.ticketId.toString()), true); WicketUtils.setCssClass(psr, "ticketReference-comment"); item.add(psr); } break; default: { item.add(new Label("what").setVisible(false)); item.add(new Label("patchsetRevision").setVisible(false)); } } item.add(new Label("patchsetType").setVisible(false)); item.add(new Label("deleteRevision").setVisible(false)); item.add(new Label("patchsetDiffStat").setVisible(false)); } else if (event.hasReview()) { // review String score; switch (event.review.score) { case approved: score = "<span style='color:darkGreen'>" + getScoreDescription(event.review.score) + "</span>"; break; case vetoed: score = "<span style='color:darkRed'>" + getScoreDescription(event.review.score) + "</span>"; break; default: score = getScoreDescription(event.review.score); } item.add(new Label("what", MessageFormat.format(getString("gb.reviewedPatchsetRev"), event.review.patchset, event.review.rev, score)).setEscapeModelStrings(false)); item.add(new Label("patchsetRevision").setVisible(false)); item.add(new Label("patchsetType").setVisible(false)); item.add(new Label("deleteRevision").setVisible(false)); item.add(new Label("patchsetDiffStat").setVisible(false)); } else { // field change item.add(new Label("patchsetRevision").setVisible(false)); item.add(new Label("patchsetType").setVisible(false)); item.add(new Label("deleteRevision").setVisible(false)); item.add(new Label("patchsetDiffStat").setVisible(false)); String what = ""; if (event.isStatusChange()) { switch (event.getStatus()) { case New: if (ticket.isProposal()) { what = getString("gb.proposedThisChange"); } else { what = getString("gb.createdThisTicket"); } break; default: break; } } item.add(new Label("what", what).setVisible(what.length() > 0)); } addDateAttributions(item, event); if (event.hasFieldChanges()) { StringBuilder sb = new StringBuilder(); sb.append("<table class=\"summary\"><tbody>"); for (Map.Entry<Field, String> entry : event.fields.entrySet()) { String value; switch (entry.getKey()) { case body: String body = entry.getValue(); if (event.isStatusChange() && Status.New == event.getStatus() && StringUtils.isEmpty(body)) { // ignore initial empty description continue; } // trim body changes if (StringUtils.isEmpty(body)) { value = "<i>" + ESC_NIL + "</i>"; } else { value = StringUtils.trimString(body, Constants.LEN_SHORTLOG_REFS); } break; case status: // special handling for status Status status = event.getStatus(); String css = TicketsUI.getLozengeClass(status, true); value = String.format("<span class=\"%1$s\">%2$s</span>", css, status.toString()); break; default: value = StringUtils.isEmpty(entry.getValue()) ? ("<i>" + ESC_NIL + "</i>") : StringUtils.escapeForHtml(entry.getValue(), false); break; } sb.append("<tr><th style=\"width:70px;\">"); try { sb.append(getString("gb." + entry.getKey().name())); } catch (Exception e) { sb.append(entry.getKey().name()); } sb.append("</th><td>"); sb.append(value); sb.append("</td></tr>"); } sb.append("</tbody></table>"); String safeHtml = app().xssFilter().relaxed(sb.toString()); item.add(new Label("fields", safeHtml).setEscapeModelStrings(false)); } else { item.add(new Label("fields").setVisible(false)); } } }; revisionHistory.add(eventsView); add(revisionHistory); }
From source file:com.servoy.j2db.server.headlessclient.MainPage.java
License:Open Source License
public MainPage(PageParameters pp) { super();/*from ww w. jav a 2 s. c om*/ if (pp.getString(StartupArguments.PARAM_KEY_SOLUTION) != null || pp.getString(StartupArguments.PARAM_KEY_SHORT_SOLUTION) != null) { throw new RestartResponseException(SolutionLoader.class, pp); } else { throw new RestartResponseException(SelectSolution.class); } }
From source file:com.servoy.j2db.server.headlessclient.WebClientSession.java
License:Open Source License
@SuppressWarnings("nls") public IWebClientApplication startSessionClient(RootObjectMetaData sd, String method, StartupArguments argumentsScope) throws Exception { String firstArgument = argumentsScope.getFirstArgument(); IWebClientApplication webClient = getWebClient(); if (webClient != null) { boolean solutionLoaded = webClient.getSolution() != null; if (solutionLoaded && !webClient.closeSolution(false, null)) { return webClient; // not allowed to close solution? }/*from w w w .ja v a 2s . c o m*/ if (solutionLoaded && isSignedIn() && !Utils.getAsBoolean( Settings.getInstance().getProperty("servoy.allowSolutionBrowsing", "true")) && !sd.getName().equals(keepCredentialsSolutionName)) { webClient.logout(null); } if (!isSignedIn()) { SolutionMetaData smd = (SolutionMetaData) sd; IRepository repository = ApplicationServerRegistry.get().getLocalRepository(); Solution sol = (Solution) repository.getActiveRootObject(smd.getName(), IRepository.SOLUTIONS); if (sol.getLoginSolutionName() == null && sol.getLoginFormID() <= 0 && smd.getMustAuthenticate()) { //signin first throw new RestartResponseAtInterceptPageException(SignIn.class); } } keepCredentialsSolutionName = null; } if (webClient == null || webClient.isShutDown()) { HttpServletRequest req = ((WebRequest) RequestCycle.get().getRequest()).getHttpServletRequest(); httpSession = req.getSession(); webClient = createWebClient(req, credentials, method, firstArgument == null ? null : new Object[] { firstArgument, argumentsScope.toJSMap() }, sd.getName()); webClient.handleArguments(new String[] { sd.getName() }, argumentsScope); if (RequestCycle.get() != null) { // if this is inside a request cycle set the service provider. // will be reset by the detach of the RequestCycle. J2DBGlobals.setServiceProvider(webClient); } setAttribute("servoy_webclient", webClient); } else { webClient.handleArguments(firstArgument != null ? new String[] { sd.getName(), method, firstArgument } : new String[] { sd.getName(), method }, argumentsScope); } webClient.handleClientUserUidChanged(null, ""); // fake first load if (webClient.getSolution() != null) getSolutionLastModifiedTime(webClient.getSolution()); else { if (webClient.getPreferedSolutionNameToLoadOnInit() != null) { Map<String, Object> map = new HashMap<String, Object>(); map.put("s", webClient.getPreferedSolutionNameToLoadOnInit()); map.put("m", webClient.getPreferedSolutionMethodNameToCall()); if (webClient.getPreferedSolutionMethodArguments() != null && webClient.getPreferedSolutionMethodArguments().length > 0) { map.put("a", webClient.getPreferedSolutionMethodArguments()[0]); } throw new RestartResponseException(SolutionLoader.class, new PageParameters(map)); } } return webClient; }
From source file:de.inren.frontend.storehouse.ActionPanel.java
License:Apache License
private Form<String> createAddFolder(String id) { final Form<String> form = new Form<String>(id, Model.of("")); form.add(new TextField<String>("name", form.getModel())); form.add(new Button("submit", Model.of("add")) { @Override// ww w.ja va 2 s . c o m public void onSubmit() { String fname = form.getModel().getObject(); if (!Strings.isEmpty(fname)) { Folder srcFolder = ActionPanel.this.getModel().getObject(); Folder folder = new Folder(); folder.setName(fname); folder.setRoles(srcFolder.getGrantedRoles()); folder.setType(FolderType.FOLDER); folder = folderService.saveFolder(folder); folderService.insertIntoFolder(srcFolder, folder); PageParameters parameters = new PageParameters(); parameters.add("id", folder.getId()); throw new RestartResponseException(FileManagerPage.class, parameters); } } }); return form; }