/******************************************************************************* * Copyright (c) 2008, 2012 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.eclipselink.core.internal.context.java; import java.util.List; import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.jpa.core.context.java.JavaJpaContextNode; import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute; import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaManyToManyMapping; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkJoinFetch; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkManyToManyMapping; import org.eclipse.jpt.jpa.eclipselink.core.context.java.EclipseLinkJavaConvertibleMapping; import org.eclipse.jpt.jpa.eclipselink.core.context.java.JavaEclipseLinkConverterContainer; import org.eclipse.wst.validation.internal.provisional.core.IMessage; import org.eclipse.wst.validation.internal.provisional.core.IReporter; public class JavaEclipseLinkManyToManyMapping extends AbstractJavaManyToManyMapping implements EclipseLinkManyToManyMapping, EclipseLinkJavaConvertibleMapping { protected final JavaEclipseLinkJoinFetch joinFetch; protected final JavaEclipseLinkConverterContainer converterContainer; public JavaEclipseLinkManyToManyMapping(JavaPersistentAttribute parent) { super(parent); this.joinFetch = new JavaEclipseLinkJoinFetch(this); this.converterContainer = this.buildConverterContainer(); } // ********** synchronize/update ********** @Override public void synchronizeWithResourceModel() { super.synchronizeWithResourceModel(); this.joinFetch.synchronizeWithResourceModel(); this.converterContainer.synchronizeWithResourceModel(); } @Override public void update() { super.update(); this.joinFetch.update(); this.converterContainer.update(); } // ********** join fetch ********** public EclipseLinkJoinFetch getJoinFetch() { return this.joinFetch; } // ********** converters ********** public JavaEclipseLinkConverterContainer getConverterContainer() { return this.converterContainer; } protected JavaEclipseLinkConverterContainer buildConverterContainer() { return new JavaEclipseLinkConverterContainerImpl(this); } // ********** converter container parent adapter ********** public JavaJpaContextNode getConverterContainerParent() { return this; // no adapter } public JavaResourceAnnotatedElement getJavaResourceAnnotatedElement() { return this.getResourceAttribute(); } public boolean parentSupportsConverters() { return ! this.getPersistentAttribute().isVirtual(); } // ********** validation ********** @Override public void validate(List messages, IReporter reporter, CompilationUnit astRoot) { super.validate(messages, reporter, astRoot); this.joinFetch.validate(messages, reporter, astRoot); } }