Dissolve gerrit-httpd top-level directory
Change-Id: I287b29b893c6f561dbbf6fa04dc714b4b7f48d54
This commit is contained in:
committed by
Dave Borowitz
parent
3675f601fa
commit
a84dbc81bf
56
java/com/google/gerrit/httpd/resources/Resource.java
Normal file
56
java/com/google/gerrit/httpd/resources/Resource.java
Normal file
@@ -0,0 +1,56 @@
|
||||
// Copyright (C) 2012 The Android Open Source Project
|
||||
//
|
||||
// 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.google.gerrit.httpd.resources;
|
||||
|
||||
import com.google.gwtexpui.server.CacheHeaders;
|
||||
import java.io.IOException;
|
||||
import java.io.Serializable;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
public abstract class Resource implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public static final Resource NOT_FOUND =
|
||||
new Resource() {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
public int weigh() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void send(HttpServletRequest req, HttpServletResponse res) throws IOException {
|
||||
CacheHeaders.setNotCacheable(res);
|
||||
res.sendError(HttpServletResponse.SC_NOT_FOUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isUnchanged(long latestModifiedDate) {
|
||||
return false;
|
||||
}
|
||||
|
||||
protected Object readResolve() {
|
||||
return NOT_FOUND;
|
||||
}
|
||||
};
|
||||
|
||||
public abstract boolean isUnchanged(long latestModifiedDate);
|
||||
|
||||
public abstract int weigh();
|
||||
|
||||
public abstract void send(HttpServletRequest req, HttpServletResponse res) throws IOException;
|
||||
}
|
||||
19
java/com/google/gerrit/httpd/resources/ResourceKey.java
Normal file
19
java/com/google/gerrit/httpd/resources/ResourceKey.java
Normal file
@@ -0,0 +1,19 @@
|
||||
// Copyright (C) 2014 The Android Open Source Project
|
||||
//
|
||||
// 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.google.gerrit.httpd.resources;
|
||||
|
||||
public interface ResourceKey {
|
||||
int weigh();
|
||||
}
|
||||
24
java/com/google/gerrit/httpd/resources/ResourceWeigher.java
Normal file
24
java/com/google/gerrit/httpd/resources/ResourceWeigher.java
Normal file
@@ -0,0 +1,24 @@
|
||||
// Copyright (C) 2012 The Android Open Source Project
|
||||
//
|
||||
// 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.google.gerrit.httpd.resources;
|
||||
|
||||
import com.google.common.cache.Weigher;
|
||||
|
||||
public class ResourceWeigher implements Weigher<ResourceKey, Resource> {
|
||||
@Override
|
||||
public int weigh(ResourceKey key, Resource value) {
|
||||
return key.weigh() + value.weigh();
|
||||
}
|
||||
}
|
||||
76
java/com/google/gerrit/httpd/resources/SmallResource.java
Normal file
76
java/com/google/gerrit/httpd/resources/SmallResource.java
Normal file
@@ -0,0 +1,76 @@
|
||||
// Copyright (C) 2012 The Android Open Source Project
|
||||
//
|
||||
// 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.google.gerrit.httpd.resources;
|
||||
|
||||
import com.google.common.net.HttpHeaders;
|
||||
import com.google.gerrit.common.Nullable;
|
||||
import java.io.IOException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
public final class SmallResource extends Resource {
|
||||
private static final long serialVersionUID = 1L;
|
||||
private final byte[] data;
|
||||
private String contentType;
|
||||
private String characterEncoding;
|
||||
private long lastModified;
|
||||
|
||||
public SmallResource(byte[] data) {
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
public SmallResource setLastModified(long when) {
|
||||
this.lastModified = when;
|
||||
return this;
|
||||
}
|
||||
|
||||
public SmallResource setContentType(String contentType) {
|
||||
this.contentType = contentType;
|
||||
return this;
|
||||
}
|
||||
|
||||
public SmallResource setCharacterEncoding(@Nullable String enc) {
|
||||
this.characterEncoding = enc;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int weigh() {
|
||||
return contentType.length() * 2 + data.length;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void send(HttpServletRequest req, HttpServletResponse res) throws IOException {
|
||||
if (0 < lastModified) {
|
||||
long ifModifiedSince = req.getDateHeader(HttpHeaders.IF_MODIFIED_SINCE);
|
||||
if (ifModifiedSince > 0 && ifModifiedSince == lastModified) {
|
||||
res.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
|
||||
return;
|
||||
}
|
||||
res.setDateHeader("Last-Modified", lastModified);
|
||||
}
|
||||
res.setContentType(contentType);
|
||||
if (characterEncoding != null) {
|
||||
res.setCharacterEncoding(characterEncoding);
|
||||
}
|
||||
res.setContentLength(data.length);
|
||||
res.getOutputStream().write(data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isUnchanged(long lastModified) {
|
||||
return this.lastModified == lastModified;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user