/* | |
* Copyright 2013 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 org.apache.wicket.IRequestTarget; | |
import org.apache.wicket.PageParameters; | |
import org.apache.wicket.RequestCycle; | |
import org.apache.wicket.protocol.http.WebResponse; | |
import org.slf4j.Logger; | |
import org.slf4j.LoggerFactory; | |
import com.gitblit.models.RepositoryModel; | |
import com.gitblit.models.TicketModel; | |
import com.gitblit.tickets.TicketSerializer; | |
import com.gitblit.utils.StringUtils; | |
import com.gitblit.wicket.WicketUtils; | |
public class ExportTicketPage extends SessionPage { | |
private final Logger logger = LoggerFactory.getLogger(getClass().getSimpleName()); | |
String contentType; | |
public ExportTicketPage(final PageParameters params) { | |
super(params); | |
if (!params.containsKey("r")) { | |
error(getString("gb.repositoryNotSpecified")); | |
redirectToInterceptPage(new RepositoriesPage()); | |
} | |
getRequestCycle().setRequestTarget(new IRequestTarget() { | |
@Override | |
public void detach(RequestCycle requestCycle) { | |
} | |
@Override | |
public void respond(RequestCycle requestCycle) { | |
WebResponse response = (WebResponse) requestCycle.getResponse(); | |
final String repositoryName = WicketUtils.getRepositoryName(params); | |
RepositoryModel repository = app().repositories().getRepositoryModel(repositoryName); | |
String objectId = WicketUtils.getObject(params).toLowerCase(); | |
if (objectId.endsWith(".json")) { | |
objectId = objectId.substring(0, objectId.length() - ".json".length()); | |
} | |
long id = Long.parseLong(objectId); | |
TicketModel ticket = app().tickets().getTicket(repository, id); | |
String content = TicketSerializer.serialize(ticket); | |
contentType = "application/json; charset=UTF-8"; | |
response.setContentType(contentType); | |
try { | |
response.getOutputStream().write(content.getBytes("UTF-8")); | |
} catch (Exception e) { | |
logger.error("Failed to write text response", e); | |
} | |
} | |
}); | |
} | |
@Override | |
protected void setHeaders(WebResponse response) { | |
super.setHeaders(response); | |
if (!StringUtils.isEmpty(contentType)) { | |
response.setContentType(contentType); | |
} | |
} | |
} |