92 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Java
		
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Java
		
	
	
	
| /*
 | |
|  * Copyright (C) 2015 The Dagger Authors.
 | |
|  *
 | |
|  * 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 dagger.producers.monitoring;
 | |
| 
 | |
| import static com.google.common.base.Preconditions.checkNotNull;
 | |
| 
 | |
| import dagger.producers.Produces;
 | |
| import java.util.Objects;
 | |
| import org.checkerframework.checker.nullness.compatqual.NullableDecl;
 | |
| 
 | |
| /** A token that represents an individual {@linkplain Produces producer method}. */
 | |
| public final class ProducerToken {
 | |
|   @NullableDecl private final Class<?> classToken;
 | |
|   @NullableDecl private final String methodName;
 | |
| 
 | |
|   private ProducerToken(@NullableDecl Class<?> classToken, @NullableDecl String methodName) {
 | |
|     this.classToken = classToken;
 | |
|     this.methodName = methodName;
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|    * Creates a token for a class token that represents the generated factory for a producer method.
 | |
|    *
 | |
|    * <p><b>Do not use this!</b> This is intended to be called by generated code only, and its
 | |
|    * signature may change at any time.
 | |
|    */
 | |
|   public static ProducerToken create(Class<?> classToken) {
 | |
|     return new ProducerToken(checkNotNull(classToken), null);
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|    * Creates a token for a producer method.
 | |
|    *
 | |
|    * <p><b>Do not use this!</b> This is intended to be called by generated code only, and its
 | |
|    * signature may change at any time.
 | |
|    */
 | |
|   public static ProducerToken create(String methodName) {
 | |
|     return new ProducerToken(null, checkNotNull(methodName));
 | |
|   }
 | |
| 
 | |
|   /** Two tokens are equal if they represent the same method. */
 | |
|   @Override
 | |
|   public boolean equals(Object o) {
 | |
|     if (o == this) {
 | |
|       return true;
 | |
|     } else if (o instanceof ProducerToken) {
 | |
|       ProducerToken that = (ProducerToken) o;
 | |
|       return Objects.equals(this.classToken, that.classToken)
 | |
|           && Objects.equals(this.methodName, that.methodName);
 | |
|     } else {
 | |
|       return false;
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   /** Returns an appropriate hash code to match {@link #equals(Object)}. */
 | |
|   @Override
 | |
|   public int hashCode() {
 | |
|     int h = 1;
 | |
|     h *= 1000003;
 | |
|     h ^= Objects.hashCode(this.classToken);
 | |
|     h *= 1000003;
 | |
|     h ^= Objects.hashCode(this.methodName);
 | |
|     return h;
 | |
|   }
 | |
| 
 | |
|   /** Returns a representation of the method. */
 | |
|   @Override
 | |
|   public String toString() {
 | |
|     if (methodName != null) {
 | |
|       return methodName;
 | |
|     } else if (classToken != null) {
 | |
|       return classToken.getCanonicalName();
 | |
|     } else {
 | |
|       throw new IllegalStateException();
 | |
|     }
 | |
|   }
 | |
| }
 |