/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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.apache.atlas.repository.converters; import com.google.inject.Inject; import com.google.inject.Singleton; import org.apache.atlas.AtlasErrorCode; import org.apache.atlas.exception.AtlasBaseException; import org.apache.atlas.model.TypeCategory; import org.apache.atlas.type.AtlasTypeRegistry; import java.util.HashMap; import java.util.Map; @Singleton public class AtlasFormatConverters { private final Map<TypeCategory, AtlasFormatConverter> registry = new HashMap<>(); @Inject public AtlasFormatConverters(AtlasTypeRegistry typeRegistry) { registerConverter(new AtlasPrimitiveFormatConverter(this, typeRegistry)); registerConverter(new AtlasEnumFormatConverter(this, typeRegistry)); registerConverter(new AtlasStructFormatConverter(this, typeRegistry)); registerConverter(new AtlasClassificationFormatConverter(this, typeRegistry)); registerConverter(new AtlasEntityFormatConverter(this, typeRegistry)); registerConverter(new AtlasArrayFormatConverter(this, typeRegistry)); registerConverter(new AtlasMapFormatConverter(this, typeRegistry)); registerConverter(new AtlasObjectIdConverter(this, typeRegistry)); } private void registerConverter(AtlasFormatConverter converter) { registry.put(converter.getTypeCategory(), converter); if (converter.getTypeCategory() == TypeCategory.ENTITY) { registry.put(TypeCategory.OBJECT_ID_TYPE, converter); } } public AtlasFormatConverter getConverter(TypeCategory typeCategory) throws AtlasBaseException { AtlasFormatConverter ret = registry.get(typeCategory); if (ret == null) { throw new AtlasBaseException(AtlasErrorCode.INTERNAL_ERROR, "Could not find the converter for this type " + typeCategory); } return ret; } }