Index: src/org/jboss/tools/hibernate/jpt/core/internal/context/persistence/HibernateJarFileRef.java =================================================================== --- src/org/jboss/tools/hibernate/jpt/core/internal/context/persistence/HibernateJarFileRef.java (revision 0) +++ src/org/jboss/tools/hibernate/jpt/core/internal/context/persistence/HibernateJarFileRef.java (revision 0) @@ -0,0 +1,71 @@ +/******************************************************************************* + * Copyright (c) 2012 Red Hat, Inc. + * Distributed under license by Red Hat, Inc. All rights reserved. + * This program is 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 + * + * Contributor: + * Red Hat, Inc. - initial API and implementation + ******************************************************************************/ +package org.jboss.tools.hibernate.jpt.core.internal.context.persistence; + +import java.util.List; + +import org.eclipse.core.runtime.Path; +import org.eclipse.jdt.core.JavaModelException; +import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; +import org.eclipse.jpt.jpa.core.internal.context.persistence.AbstractJarFileRef; +import org.eclipse.jpt.jpa.core.resource.persistence.XmlJarFileRef; +import org.eclipse.wst.validation.internal.provisional.core.IMessage; +import org.eclipse.wst.validation.internal.provisional.core.IReporter; + +/** + * + * @author Dmitry Geraskov (geraskov@gmail.com) + * + */ +public class HibernateJarFileRef extends AbstractJarFileRef { + + /** + * @param parent + * @param xmlJarFileRef + */ + public HibernateJarFileRef(PersistenceUnit parent, + XmlJarFileRef xmlJarFileRef) { + super(parent, xmlJarFileRef); + } + + /** + * Checks if there is a project we depend on with the name of the required jar + * @return + */ + protected boolean checkProjectsInClassPath(){ + try { + String[] requiredProjectNames = getJpaProject().getJavaProject().getRequiredProjectNames(); + String jarFileWithoutExtension = new Path(getFileName()).lastSegment(); + if (jarFileWithoutExtension.toLowerCase().endsWith(".jar")){ + jarFileWithoutExtension = jarFileWithoutExtension.substring(0, jarFileWithoutExtension.length() - 4); + } + for (String requiredProjectName : requiredProjectNames) { + if (requiredProjectName.equalsIgnoreCase(jarFileWithoutExtension)){ + return true; + } + } + } catch (JavaModelException e) { + e.printStackTrace(); + } + return false; + } + + @Override + public void validate(List messages, IReporter reporter) { + if (this.jarFile == null && getFileName() != null) { + if (checkProjectsInClassPath()){ + return; + } + } + super.validate(messages, reporter); + } + +} Index: src/org/jboss/tools/hibernate/jpt/core/internal/context/persistence/HibernatePersistenceXmlContextNodeFactory.java =================================================================== --- src/org/jboss/tools/hibernate/jpt/core/internal/context/persistence/HibernatePersistenceXmlContextNodeFactory.java (revision 41199) +++ src/org/jboss/tools/hibernate/jpt/core/internal/context/persistence/HibernatePersistenceXmlContextNodeFactory.java (working copy) @@ -11,10 +11,12 @@ package org.jboss.tools.hibernate.jpt.core.internal.context.persistence; import org.eclipse.jpt.jpa.core.context.persistence.ClassRef; +import org.eclipse.jpt.jpa.core.context.persistence.JarFileRef; import org.eclipse.jpt.jpa.core.context.persistence.Persistence; import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; import org.eclipse.jpt.jpa.core.context.persistence.PersistenceXml; import org.eclipse.jpt.jpa.core.internal.context.persistence.GenericPersistenceXmlContextNodeFactory; +import org.eclipse.jpt.jpa.core.resource.persistence.XmlJarFileRef; import org.eclipse.jpt.jpa.core.resource.persistence.XmlJavaClassRef; import org.eclipse.jpt.jpa.core.resource.persistence.XmlPersistence; import org.eclipse.jpt.jpa.core.resource.persistence.XmlPersistenceUnit; @@ -50,4 +52,9 @@ XmlJavaClassRef classRef) { return new HibernateClassRef(parent, classRef); } + + @Override + public JarFileRef buildJarFileRef(PersistenceUnit parent, XmlJarFileRef xmlJarFileRef) { + return new HibernateJarFileRef(parent, xmlJarFileRef); + } } Index: src/org/jboss/tools/hibernate/jpt/core/internal/context/persistence/jpa2/Hibernate2_0PersistenceXmlContextNodeFactory.java =================================================================== --- src/org/jboss/tools/hibernate/jpt/core/internal/context/persistence/jpa2/Hibernate2_0PersistenceXmlContextNodeFactory.java (revision 41199) +++ src/org/jboss/tools/hibernate/jpt/core/internal/context/persistence/jpa2/Hibernate2_0PersistenceXmlContextNodeFactory.java (working copy) @@ -11,16 +11,19 @@ package org.jboss.tools.hibernate.jpt.core.internal.context.persistence.jpa2; import org.eclipse.jpt.jpa.core.context.persistence.ClassRef; +import org.eclipse.jpt.jpa.core.context.persistence.JarFileRef; import org.eclipse.jpt.jpa.core.context.persistence.Persistence; import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; import org.eclipse.jpt.jpa.core.context.persistence.PersistenceXml; import org.eclipse.jpt.jpa.core.internal.jpa2.context.persistence.Generic2_0PersistenceXmlContextNodeFactory; +import org.eclipse.jpt.jpa.core.resource.persistence.XmlJarFileRef; import org.eclipse.jpt.jpa.core.resource.persistence.XmlJavaClassRef; import org.eclipse.jpt.jpa.core.resource.persistence.XmlPersistence; import org.eclipse.jpt.jpa.core.resource.persistence.XmlPersistenceUnit; import org.jboss.tools.hibernate.jpt.core.internal.context.HibernatePersistenceUnit; import org.jboss.tools.hibernate.jpt.core.internal.context.basic.HibernatePersistenceUnitProperties; import org.jboss.tools.hibernate.jpt.core.internal.context.persistence.HibernateClassRef; +import org.jboss.tools.hibernate.jpt.core.internal.context.persistence.HibernateJarFileRef; import org.jboss.tools.hibernate.jpt.core.internal.context.persistence.HibernatePersistence; import org.jboss.tools.hibernate.jpt.core.internal.context.persistence.HibernatePersistenceUnitPropertiesBuilder; @@ -53,4 +56,9 @@ XmlJavaClassRef classRef) { return new HibernateClassRef(parent, classRef); } + + @Override + public JarFileRef buildJarFileRef(PersistenceUnit parent, XmlJarFileRef xmlJarFileRef) { + return new HibernateJarFileRef(parent, xmlJarFileRef); + } }