| /******************************************************************************* |
| * Copyright (c) 2009, 2010 Oracle. All rights reserved. |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Public License v1.0, which accompanies this distribution |
| * and is available at http://www.eclipse.org/legal/epl-v10.html. |
| * |
| * Contributors: |
| * Oracle - initial API and implementation |
| ******************************************************************************/ |
| package org.eclipse.jpt.jpa.core.internal; |
| |
| import java.util.ArrayList; |
| import org.eclipse.jpt.jpa.core.JpaAnnotationDefinitionProvider; |
| import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; |
| |
| public abstract class AbstractJpaAnnotationDefinitionProvider |
| implements JpaAnnotationDefinitionProvider |
| { |
| protected ArrayList<AnnotationDefinition> typeAnnotationDefinitions; |
| |
| protected ArrayList<AnnotationDefinition> typeMappingAnnotationDefinitions; |
| |
| protected ArrayList<AnnotationDefinition> attributeAnnotationDefinitions; |
| |
| private ArrayList<AnnotationDefinition> packageAnnotationDefinitions; |
| |
| |
| protected AbstractJpaAnnotationDefinitionProvider() { |
| super(); |
| } |
| |
| |
| // ********** type annotation definitions ********** |
| |
| public synchronized Iterable<AnnotationDefinition> getTypeAnnotationDefinitions() { |
| if (this.typeAnnotationDefinitions == null) { |
| this.typeAnnotationDefinitions = this.buildTypeAnnotationDefinitions(); |
| } |
| return this.typeAnnotationDefinitions; |
| } |
| |
| protected ArrayList<AnnotationDefinition> buildTypeAnnotationDefinitions() { |
| ArrayList<AnnotationDefinition> definitions = new ArrayList<AnnotationDefinition>(); |
| this.addTypeAnnotationDefinitionsTo(definitions); |
| return definitions; |
| } |
| |
| protected abstract void addTypeAnnotationDefinitionsTo(ArrayList<AnnotationDefinition> definitions); |
| |
| |
| // ********** type mapping annotation definitions ********** |
| |
| public synchronized Iterable<AnnotationDefinition> getTypeMappingAnnotationDefinitions() { |
| if (this.typeMappingAnnotationDefinitions == null) { |
| this.typeMappingAnnotationDefinitions = this.buildTypeMappingAnnotationDefinitions(); |
| } |
| return this.typeMappingAnnotationDefinitions; |
| } |
| |
| protected ArrayList<AnnotationDefinition> buildTypeMappingAnnotationDefinitions() { |
| ArrayList<AnnotationDefinition> definitions = new ArrayList<AnnotationDefinition>(); |
| this.addTypeMappingAnnotationDefinitionsTo(definitions); |
| return definitions; |
| } |
| |
| protected abstract void addTypeMappingAnnotationDefinitionsTo(ArrayList<AnnotationDefinition> definitions); |
| |
| |
| // ********** attribute annotation definitions ********** |
| |
| public synchronized Iterable<AnnotationDefinition> getAttributeAnnotationDefinitions() { |
| if (this.attributeAnnotationDefinitions == null) { |
| this.attributeAnnotationDefinitions = this.buildAttributeAnnotationDefinitions(); |
| } |
| return this.attributeAnnotationDefinitions; |
| } |
| |
| protected ArrayList<AnnotationDefinition> buildAttributeAnnotationDefinitions() { |
| ArrayList<AnnotationDefinition> definitions = new ArrayList<AnnotationDefinition>(); |
| this.addAttributeAnnotationDefinitionsTo(definitions); |
| return definitions; |
| } |
| |
| protected abstract void addAttributeAnnotationDefinitionsTo(ArrayList<AnnotationDefinition> definitions); |
| |
| |
| // ********** package annotation definitions ********** |
| |
| public synchronized Iterable<AnnotationDefinition> getPackageAnnotationDefinitions() { |
| if (this.packageAnnotationDefinitions == null) { |
| this.packageAnnotationDefinitions = this.buildPackageAnnotationDefinitions(); |
| } |
| return this.packageAnnotationDefinitions; |
| } |
| |
| protected ArrayList<AnnotationDefinition> buildPackageAnnotationDefinitions() { |
| ArrayList<AnnotationDefinition> definitions = new ArrayList<AnnotationDefinition>(); |
| this.addPackageAnnotationDefinitionsTo(definitions); |
| return definitions; |
| } |
| |
| protected abstract void addPackageAnnotationDefinitionsTo(ArrayList<AnnotationDefinition> definitions); |
| } |