Skip to content

Instantly share code, notes, and snippets.

@bradmac
bradmac / MiltonJetty.java
Last active December 12, 2015 09:28
Shows how to run embedded jetty with a custom milton filter
public static void runWithJetty() {
Server server = new Server();
HttpManagerBuilderEnt builder = new HttpManagerBuilderEnt();
builder.setEnableExpectContinue(false);
HttpManager httpManager = builder.buildHttpManager();
JettyServletUtil jetty = new JettyServletUtil(server, serviceConfig, configuration);
int port = serviceConfig.getPort() + kWebdavPortOffset;
int sslPort = serviceConfig.hasSslPort() ? port + 1 : 0;
ServletContextHandler context = jetty.configureServer("webdavapp",port,sslPort);
MyVeryOwnMiltonFilter miltonFilter = new MyVeryOwnMiltonFilter(context, server);
@bradmac
bradmac / MyVeryOwnMiltonFilter.java
Created February 10, 2013 22:48
Shows how to create a Milton2 servlet filter. This is useful for embedding in jetty etc, where you dont want to use web.xml for configuration
/*
* Copyright 2013 McEvoy Software Ltd.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
public class PlanetResource extends AbstractResource implements GetableResource, ReplaceableResource, MoveableResource, CopyableResource, DeletableResource{
private static org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(PlanetResource.class);
private final SolarSystemResource parent;
private final Planet planet;
public PlanetResource(SolarSystemResource parent, Planet planet) {
this.parent = parent;
this.planet = planet;
}
public class PlanetResource extends AbstractResource implements GetableResource, ReplaceableResource, MoveableResource, CopyableResource{
private static org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(PlanetResource.class);
private final SolarSystemResource parent;
private final Planet planet;
public PlanetResource(SolarSystemResource parent, Planet planet) {
this.parent = parent;
this.planet = planet;
}
public class GalaxyResource extends AbstractResource implements CollectionResource, MakeCollectionableResource, MoveableResource {
private static org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(GalaxyResource.class);
private ArrayList<Resource> children;
private final RootUniverseResource parent;
private final Galaxy galaxy;
public GalaxyResource(RootUniverseResource parent, Galaxy galaxy) {
this.parent = parent;
this.galaxy = galaxy;
public class RootUniverseResource extends AbstractResource implements MakeCollectionableResource {
private static org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(RootUniverseResource.class);
private final UniverseDao universeDao;
private ArrayList<Resource> children;
public RootUniverseResource(UniverseDao universeDao) {
this.universeDao = universeDao;
}
public class PlanetResource extends AbstractResource implements GetableResource, ReplaceableResource, MoveableResource{
private static org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(PlanetResource.class);
private final SolarSystemResource parent;
private final Planet planet;
public PlanetResource(SolarSystemResource parent, Planet planet) {
this.parent = parent;
this.planet = planet;
}
public class SolarSystemResource extends AbstractResource implements CollectionResource, MoveableResource, PutableResource {
private static org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(SolarSystemResource.class);
private ArrayList<Resource> children;
private final GalaxyResource parent;
private final SolarSystem solarSystem;
public SolarSystemResource(GalaxyResource parent, SolarSystem solarSystem) {
this.parent = parent;
this.solarSystem = solarSystem;
@Override
public void sendContent(OutputStream out, Range range, Map<String, String> params, String contentType) throws IOException {
Properties props = new Properties();
if( planet.getType() == null ) {
props.setProperty("type", "");
} else {
props.setProperty("type", planet.getType());
}
props.setProperty("radius", planet.getRadius() + "" );
props.setProperty("yearLength", planet.getYearLength() + "" );
public interface GetableResource extends Resource {
public void sendContent( OutputStream out, Range range, Map<String,String> params, String contentType ) throws IOException, NotAuthorizedException, BadRequestException, NotFoundException;
Long getMaxAgeSeconds(Auth auth);
String getContentType(String accepts);
Long getContentLength();
}