001/* 002 * Copyright (C) 2012 Facebook, Inc. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); you may 005 * not use this file except in compliance with the License. You may obtain 006 * a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 012 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 013 * License for the specific language governing permissions and limitations 014 * under the License. 015 */ 016package com.facebook.swift.codec.metadata; 017 018import com.facebook.swift.codec.ThriftEnum; 019 020import javax.annotation.concurrent.NotThreadSafe; 021 022@NotThreadSafe 023public class ThriftEnumMetadataBuilder<T extends Enum<T>> 024{ 025 private final Class<T> enumClass; 026 private final String enumName; 027 028 public ThriftEnumMetadataBuilder(Class<T> enumClass) 029 { 030 this.enumClass = enumClass; 031 this.enumName = extractEnumName(enumClass); 032 } 033 034 public ThriftEnumMetadata<T> build() 035 { 036 return new ThriftEnumMetadata<>(enumName, enumClass); 037 } 038 039 private String extractEnumName(Class<T> enumClass) 040 { 041 ThriftEnum annotation = enumClass.getAnnotation(ThriftEnum.class); 042 if (annotation == null) { 043 return enumClass.getSimpleName(); 044 } 045 else if (!annotation.value().isEmpty()) { 046 return annotation.value(); 047 } 048 else { 049 return enumClass.getSimpleName(); 050 } 051 } 052}