Make BranchResource and TagResource extend a common class

Add a new abstract class, RefResource, that defines access methods to
get the ref name and revision.

Make both BranchResource and TagResource derive from RefResource, and
add the missing implementations in TagResource.

This will make it easier to consolidate common code that can be used
for both branch and tag related endpoints.

Change-Id: Ib44d621e34ce2b1077349db0037d960155b790e0
This commit is contained in:
David Pursehouse
2016-12-02 22:13:20 +09:00
parent 3ea9a7e380
commit eff1643099
3 changed files with 50 additions and 6 deletions

View File

@@ -19,7 +19,7 @@ import com.google.gerrit.extensions.restapi.RestView;
import com.google.gerrit.reviewdb.client.Branch;
import com.google.inject.TypeLiteral;
public class BranchResource extends ProjectResource {
public class BranchResource extends RefResource {
public static final TypeLiteral<RestView<BranchResource>> BRANCH_KIND =
new TypeLiteral<RestView<BranchResource>>() {};
@@ -38,10 +38,12 @@ public class BranchResource extends ProjectResource {
return new Branch.NameKey(getNameKey(), branchInfo.ref);
}
@Override
public String getRef() {
return branchInfo.ref;
}
@Override
public String getRevision() {
return branchInfo.revision;
}

View File

@@ -0,0 +1,32 @@
// Copyright (C) 2016 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.server.project;
public abstract class RefResource extends ProjectResource {
public RefResource(ProjectControl control) {
super(control);
}
/**
* @return the ref's name
*/
public abstract String getRef();
/**
* @return the ref's revision
*/
public abstract String getRevision();
}

View File

@@ -18,18 +18,28 @@ import com.google.gerrit.extensions.api.projects.TagInfo;
import com.google.gerrit.extensions.restapi.RestView;
import com.google.inject.TypeLiteral;
public class TagResource extends ProjectResource {
public class TagResource extends RefResource {
public static final TypeLiteral<RestView<TagResource>> TAG_KIND =
new TypeLiteral<RestView<TagResource>>() {};
private final TagInfo tag;
private final TagInfo tagInfo;
public TagResource(ProjectControl control, TagInfo tag) {
public TagResource(ProjectControl control, TagInfo tagInfo) {
super(control);
this.tag = tag;
this.tagInfo = tagInfo;
}
public TagInfo getTagInfo() {
return tag;
return tagInfo;
}
@Override
public String getRef() {
return tagInfo.ref;
}
@Override
public String getRevision() {
return tagInfo.revision;
}
}