/*
* Copyright (c) 2015 Tada AB and other contributors, as listed below.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the The BSD 3-Clause License
* which accompanies this distribution, and is available at
* http://opensource.org/licenses/BSD-3-Clause
*
* Contributors:
* Tada AB
* Purdue University
*/
/**
* <p>Not strictly part of the API, this package contains the compiler extension
* itself that recognizes
* {@linkplain org.postgresql.pljava.annotation PL/Java annotations} and
* generates the deployment descriptor. It is part of this module so that the
* <code>pljava-api</code> jar will be all that is needed on the class path
* when compiling PL/Java code, even with annotations.
*
* <p><strong>Limitation note:</strong> A Java bug introoduced in Java 7
* required a workaround that was added here in
* <a href="https://github.com/tada/pljava/pull/42">pull #42</a>. The workaround
* has a limitation: if you are compiling Java sources that also use other
* annotations and other annotation processors, and if those other processors
* can write new Java files and cause more than one round of compilation, they
* must not include <code>org.postgresql.pljava.annotation</code> annotations
* in those files. This code needs to find all such annotations in round 1.
*
* <p>If Oracle fixes the underlying bug, the limitation can be removed.
* Oracle's bug site suggests that won't happen until Java 9, if then.
*/
package org.postgresql.pljava.sqlgen;