All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.hibernate.boot.model.process.internal.ManagedResourcesImpl Maven / Gradle / Ivy

There is a newer version: 7.0.0.Alpha1
Show newest version
/*
 * Hibernate, Relational Persistence for Idiomatic Java
 *
 * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
 * See the lgpl.txt file in the root directory or .
 */
package org.hibernate.boot.model.process.internal;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.hibernate.boot.AttributeConverterInfo;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.jaxb.spi.Binding;
import org.hibernate.boot.model.process.spi.ManagedResources;
import org.hibernate.boot.spi.BootstrapContext;
import org.hibernate.boot.spi.MetadataBuildingOptions;
import org.hibernate.cfg.AttributeConverterDefinition;

/**
 * @author Steve Ebersole
 */
public class ManagedResourcesImpl implements ManagedResources {
	private Map attributeConverterInfoMap = new HashMap<>();
	private Set annotatedClassReferences = new LinkedHashSet();
	private Set annotatedClassNames = new LinkedHashSet();
	private Set annotatedPackageNames = new LinkedHashSet();
	private List mappingFileBindings = new ArrayList();

	public static ManagedResourcesImpl baseline(MetadataSources sources, BootstrapContext bootstrapContext) {
		final ManagedResourcesImpl impl = new ManagedResourcesImpl();
		bootstrapContext.getAttributeConverters().forEach( impl::addAttributeConverterDefinition );
		impl.annotatedClassReferences.addAll( sources.getAnnotatedClasses() );
		impl.annotatedClassNames.addAll( sources.getAnnotatedClassNames() );
		impl.annotatedPackageNames.addAll( sources.getAnnotatedPackages() );
		impl.mappingFileBindings.addAll( sources.getXmlBindings() );
		return impl;
	}

	private ManagedResourcesImpl() {
	}

	@Override
	public Collection getAttributeConverterDefinitions() {
		return Collections.unmodifiableCollection( attributeConverterInfoMap.values() );
	}

	@Override
	public Collection getAnnotatedClassReferences() {
		return Collections.unmodifiableSet( annotatedClassReferences );
	}

	@Override
	public Collection getAnnotatedClassNames() {
		return Collections.unmodifiableSet( annotatedClassNames );
	}

	@Override
	public Collection getAnnotatedPackageNames() {
		return Collections.unmodifiableSet( annotatedPackageNames );
	}

	@Override
	public Collection getXmlMappingBindings() {
		return Collections.unmodifiableList( mappingFileBindings );
	}


	// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	// package private

	void addAttributeConverterDefinition(AttributeConverterInfo converterInfo) {
		attributeConverterInfoMap.put( converterInfo.getConverterClass(), converterInfo );
	}

	void addAnnotatedClassReference(Class annotatedClassReference) {
		annotatedClassReferences.add( annotatedClassReference );
	}

	void addAnnotatedClassName(String annotatedClassName) {
		annotatedClassNames.add( annotatedClassName );
	}

	void addAnnotatedPackageName(String annotatedPackageName) {
		annotatedPackageNames.add( annotatedPackageName );
	}

	void addXmlBinding(Binding binding) {
		mappingFileBindings.add( binding );
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy