/*
* Copyright 2013 the original author or 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 org.gradle.api.internal.artifacts.ivyservice.resolveengine.result;
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
import org.gradle.api.artifacts.result.ComponentSelectionReason;
import org.gradle.internal.serialize.Decoder;
import org.gradle.internal.serialize.Encoder;
import org.gradle.internal.serialize.Serializer;
import java.io.IOException;
import static org.gradle.api.internal.artifacts.ivyservice.resolveengine.result.VersionSelectionReasons.*;
public class ComponentSelectionReasonSerializer implements Serializer<ComponentSelectionReason> {
private static final BiMap<Byte, ComponentSelectionReason> REASONS = HashBiMap.create(7);
static {
REASONS.put((byte) 1, REQUESTED);
REASONS.put((byte) 2, ROOT);
REASONS.put((byte) 3, FORCED);
REASONS.put((byte) 4, CONFLICT_RESOLUTION);
REASONS.put((byte) 5, SELECTED_BY_RULE);
REASONS.put((byte) 6, CONFLICT_RESOLUTION_BY_RULE);
REASONS.put((byte) 7, COMPOSITE_BUILD);
// update HashBiMap's expectedSize when adding new REASONS
}
public ComponentSelectionReason read(Decoder decoder) throws IOException {
byte id = decoder.readByte();
ComponentSelectionReason out = REASONS.get(id);
if (out == null) {
throw new IllegalArgumentException("Unable to find selection reason with id: " + id);
}
return out;
}
public void write(Encoder encoder, ComponentSelectionReason value) throws IOException {
Byte id = REASONS.inverse().get(value);
if (id == null) {
throw new IllegalArgumentException("Unknown selection reason: " + value);
}
encoder.writeByte(id);
}
}