diff --git a/impl/pom.xml b/impl/pom.xml index 153d2bf25b..9a21ca29fa 100644 --- a/impl/pom.xml +++ b/impl/pom.xml @@ -46,6 +46,12 @@ + + jakarta.faces + jakarta.faces-api + ${project.version} + + diff --git a/impl/src/main/java/jakarta/faces/webapp/MessageFactory.java b/impl/src/main/java/jakarta/faces/webapp/MessageFactory.java deleted file mode 100644 index 2bd4e5badd..0000000000 --- a/impl/src/main/java/jakarta/faces/webapp/MessageFactory.java +++ /dev/null @@ -1,328 +0,0 @@ -/* - * Copyright (c) 1997, 2020 Oracle and/or its affiliates. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v. 2.0, which is available at - * http://www.eclipse.org/legal/epl-2.0. - * - * This Source Code may also be made available under the following Secondary - * Licenses when the conditions for such availability set forth in the - * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, - * version 2 with the GNU Classpath Exception, which is available at - * https://www.gnu.org/software/classpath/license.html. - * - * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 - */ - -package jakarta.faces.webapp; - -import java.text.MessageFormat; -import java.util.Locale; -import java.util.MissingResourceException; -import java.util.ResourceBundle; - -import jakarta.el.ValueExpression; -import jakarta.faces.FactoryFinder; -import jakarta.faces.application.Application; -import jakarta.faces.application.ApplicationFactory; -import jakarta.faces.application.FacesMessage; -import jakarta.faces.component.UIComponent; -import jakarta.faces.context.FacesContext; - -/** - * - *

- * supported filters: package and protection. - *

- */ - -class MessageFactory { - - private static final String MOJARRA_RESOURCE_BASENAME = "com.sun.faces.resources.Messages"; - - private MessageFactory() { - } - - /** - * @see #getMessage(String, Object...) - * @param severity set a custom severity - */ - static FacesMessage getMessage(String messageId, FacesMessage.Severity severity, Object... params) { - FacesMessage message = getMessage(messageId, params); - message.setSeverity(severity); - return message; - } - - /** - * @see #getMessage(Locale, String, Object...) - * @param severity set a custom severity - */ - static FacesMessage getMessage(Locale locale, String messageId, FacesMessage.Severity severity, Object... params) { - FacesMessage message = getMessage(locale, messageId, params); - message.setSeverity(severity); - return message; - } - - /** - * @see #getMessage(FacesContext, String, Object...) - * @param severity set a custom severity - */ - static FacesMessage getMessage(FacesContext context, String messageId, FacesMessage.Severity severity, Object... params) { - FacesMessage message = getMessage(context, messageId, params); - message.setSeverity(severity); - return message; - } - - /** - *

- * This version of getMessage() is used for localizing implementation specific messages. - *

- * - * @param messageId - the key of the message in the resource bundle - * @param params - substittion parameters - * - * @return a localized FacesMessage with the severity of FacesMessage.SEVERITY_ERROR - */ - static FacesMessage getMessage(String messageId, Object... params) { - Locale locale = null; - FacesContext context = FacesContext.getCurrentInstance(); - // context.getViewRoot() may not have been initialized at this point. - if (context != null && context.getViewRoot() != null) { - locale = context.getViewRoot().getLocale(); - if (locale == null) { - locale = Locale.getDefault(); - } - } else { - locale = Locale.getDefault(); - } - - return getMessage(locale, messageId, params); - } - - /** - *

- * Creates and returns a FacesMessage for the specified Locale. - *

- * - * @param locale - the target Locale - * @param messageId - the key of the message in the resource bundle - * @param params - substittion parameters - * - * @return a localized FacesMessage with the severity of FacesMessage.SEVERITY_ERROR - */ - static FacesMessage getMessage(Locale locale, String messageId, Object... params) { - String summary = null; - String detail = null; - ResourceBundle bundle; - String bundleName; - - // see if we have a user-provided bundle - Application app = getApplication(); - Class appClass = app.getClass(); - if (null != (bundleName = app.getMessageBundle())) { - if (null != (bundle = ResourceBundle.getBundle(bundleName, locale, getCurrentLoader(appClass)))) { - // see if we have a hit - try { - summary = bundle.getString(messageId); - detail = bundle.getString(messageId + "_detail"); - } catch (MissingResourceException e) { - // ignore - } - } - } - - // we couldn't find a summary in the user-provided bundle - if (null == summary) { - // see if we have a summary in the app provided bundle - bundle = ResourceBundle.getBundle(FacesMessage.FACES_MESSAGES, locale, getCurrentLoader(appClass)); - if (null == bundle) { - throw new NullPointerException(); - } - // see if we have a hit - try { - summary = bundle.getString(messageId); - detail = bundle.getString(messageId + "_detail"); - } catch (MissingResourceException e) { - // ignore - } - } - - // no hit found in the standard jakarta.faces.Messages bundle. - // check the Mojarra resources - if (summary == null) { - // see if we have a summary in the app provided bundle - bundle = ResourceBundle.getBundle(MOJARRA_RESOURCE_BASENAME, locale, getCurrentLoader(appClass)); - if (null == bundle) { - throw new NullPointerException(); - } - // see if we have a hit - try { - summary = bundle.getString(messageId); - } catch (MissingResourceException e) { - return null; - } - } - - // At this point, we have a summary and a bundle. - FacesMessage ret = new BindingFacesMessage(locale, summary, detail, params); - ret.setSeverity(FacesMessage.SEVERITY_ERROR); - return ret; - } - - /** - *

- * Creates and returns a FacesMessage for the specified Locale. - *

- * - * @param context - the FacesContext for the current request - * @param messageId - the key of the message in the resource bundle - * @param params - substittion parameters - * - * @return a localized FacesMessage with the severity of FacesMessage.SEVERITY_ERROR - */ - static FacesMessage getMessage(FacesContext context, String messageId, Object... params) { - - if (context == null || messageId == null) { - throw new NullPointerException(" context " + context + " messageId " + messageId); - } - Locale locale; - // viewRoot may not have been initialized at this point. - if (context.getViewRoot() != null) { - locale = context.getViewRoot().getLocale(); - } else { - locale = Locale.getDefault(); - } - - if (null == locale) { - throw new NullPointerException(" locale is null "); - } - - FacesMessage message = getMessage(locale, messageId, params); - if (message != null) { - return message; - } - locale = Locale.getDefault(); - return getMessage(locale, messageId, params); - } - - /** - *

- * Returns the label property from the specified component. - *

- * - * @param context - the FacesContext for the current request - * @param component - the component of interest - * - * @return the label, if any, of the component - */ - static Object getLabel(FacesContext context, UIComponent component) { - - Object o = component.getAttributes().get("label"); - if (o == null || o instanceof String && ((String) o).length() == 0) { - o = component.getValueExpression("label"); - } - // Use the "clientId" if there was no label specified. - if (o == null) { - o = component.getClientId(context); - } - return o; - } - - protected static Application getApplication() { - FacesContext context = FacesContext.getCurrentInstance(); - if (context != null) { - return FacesContext.getCurrentInstance().getApplication(); - } - ApplicationFactory afactory = (ApplicationFactory) FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY); - return afactory.getApplication(); - } - - protected static ClassLoader getCurrentLoader(Class fallbackClass) { - ClassLoader loader = Thread.currentThread().getContextClassLoader(); - if (loader == null) { - loader = fallbackClass.getClassLoader(); - } - return loader; - } - - /** - * This class overrides FacesMessage to provide the evaluation of binding expressions in addition to Strings. It is - * often the case, that a binding expression may reference a localized property value that would be used as a - * substitution parameter in the message. For example: #{bundle.userLabel} "bundle" may not be available - * until the page is rendered. The "late" binding evaluation in getSummary and getDetail allow - * the expression to be evaluated when that property is available. - */ - static class BindingFacesMessage extends FacesMessage { - /** - * - */ - private static final long serialVersionUID = 2026009902326193372L; - BindingFacesMessage(Locale locale, String messageFormat, String detailMessageFormat, - // array of parameters, both Strings and ValueBindings - Object[] parameters) { - - super(messageFormat, detailMessageFormat); - this.locale = locale; - this.parameters = parameters; - if (parameters != null) { - resolvedParameters = new Object[parameters.length]; - } - } - - @Override - public String getSummary() { - String pattern = super.getSummary(); - resolveBindings(); - return getFormattedString(pattern, resolvedParameters); - } - - @Override - public String getDetail() { - String pattern = super.getDetail(); - resolveBindings(); - return getFormattedString(pattern, resolvedParameters); - } - - private void resolveBindings() { - FacesContext context = null; - if (parameters != null) { - for (int i = 0; i < parameters.length; i++) { - Object o = parameters[i]; - if (o instanceof ValueExpression) { - if (context == null) { - context = FacesContext.getCurrentInstance(); - } - o = ((ValueExpression) o).getValue(context.getELContext()); - } - // to avoid 'null' appearing in message - if (o == null) { - o = ""; - } - resolvedParameters[i] = o; - } - } - } - - // fixme: if the locale is null, the output is null!! is it expected? - private String getFormattedString(String msgtext, Object[] params) { - String localizedStr = null; - - if (params == null || msgtext == null) { - return msgtext; - } - StringBuilder b = new StringBuilder(100); - MessageFormat mf = new MessageFormat(msgtext); - if (locale != null) { - mf.setLocale(locale); - b.append(mf.format(params)); - localizedStr = b.toString(); - } - return localizedStr; - } - - private final Locale locale; - private final Object[] parameters; - private Object[] resolvedParameters; - } - -} // end of class MessageFactory diff --git a/impl/src/main/java/jakarta/faces/webapp/TypedCollections.java b/impl/src/main/java/jakarta/faces/webapp/TypedCollections.java deleted file mode 100644 index 197901f5aa..0000000000 --- a/impl/src/main/java/jakarta/faces/webapp/TypedCollections.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright (c) 1997, 2020 Oracle and/or its affiliates. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v. 2.0, which is available at - * http://www.eclipse.org/legal/epl-2.0. - * - * This Source Code may also be made available under the following Secondary - * Licenses when the conditions for such availability set forth in the - * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, - * version 2 with the GNU Classpath Exception, which is available at - * https://www.gnu.org/software/classpath/license.html. - * - * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 - */ - -package jakarta.faces.webapp; - -import java.util.Collection; -import java.util.List; -import java.util.Map; -import java.util.Set; - -class TypedCollections { - - /** - * Dynamically check that the members of the collection are all instances of the given type (or null). - */ - private static boolean checkCollectionMembers(Collection c, Class type) { - for (Object element : c) { - if (element != null && !type.isInstance(element)) { - return false; - } - } - return true; - } - - /** - * Dynamically check that the members of the collection are all instances of the given type (or null), and that the - * collection itself is of the given collection type. - * - * @param the collection's element type - * @param c the collection to cast - * @param type the class of the collection's element type. - * @return the dynamically-type checked collection. - * @throws java.lang.ClassCastException - */ - static > TypedC dynamicallyCastCollection(Collection c, Class type, Class collectionType) { - if (c == null) { - return null; - } - if (!collectionType.isInstance(c)) { - throw new ClassCastException(c.getClass().getName()); - } - assert checkCollectionMembers(c, type) : "The collection contains members with a type other than " + type.getName(); - - return collectionType.cast(c); - } - - /** - * Dynamically check that the members of the list are all instances of the given type (or null). - * - * @param the list's element type - * @param list the list to cast - * @param type the class of the list's element type. - * @return the dynamically-type checked list. - * @throws java.lang.ClassCastException - */ - @SuppressWarnings("unchecked") - static List dynamicallyCastList(List list, Class type) { - return dynamicallyCastCollection(list, type, List.class); - } - - /** - * Dynamically check that the members of the set are all instances of the given type (or null). - * - * @param the set's element type - * @param set the set to cast - * @param type the class of the set's element type. - * @return the dynamically-type checked set. - * @throws java.lang.ClassCastException - */ - @SuppressWarnings("unchecked") - static Set dynamicallyCastSet(Set set, Class type) { - return dynamicallyCastCollection(set, type, Set.class); - } - - /** - * Dynamically check that the keys and values in the map are all instances of the correct types (or null). - * - * @param the map's key type - * @param the map's value type - * @param map the map to cast - * @param keyType the class of the map's key type. - * @param valueType the class of the map's value type. - * @return the dynamically-type checked map. - * @throws java.lang.ClassCastException - */ - @SuppressWarnings("unchecked") - static Map dynamicallyCastMap(Map map, Class keyType, Class valueType) { - if (map == null) { - return null; - } - assert checkCollectionMembers(map.keySet(), keyType) : "The map contains keys with a type other than " + keyType.getName(); - assert checkCollectionMembers(map.values(), valueType) : "The map contains values with a type other than " + valueType.getName(); - - return (Map) map; - } -} diff --git a/impl/src/test/java/jakarta/faces/FacesConfigOrderingTestCase.java b/impl/src/test/java/jakarta/faces/FacesConfigOrderingTestCase.java index c072c4fd98..c5c7187bfb 100644 --- a/impl/src/test/java/jakarta/faces/FacesConfigOrderingTestCase.java +++ b/impl/src/test/java/jakarta/faces/FacesConfigOrderingTestCase.java @@ -16,8 +16,6 @@ package jakarta.faces; -import static com.sun.faces.util.Util.createLocalDocumentBuilderFactory; - import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Arrays; @@ -27,6 +25,10 @@ import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -34,9 +36,6 @@ import com.sun.faces.config.manager.documents.DocumentOrderingWrapper; import jakarta.faces.context.FacesContext; -import junit.framework.Test; -import junit.framework.TestCase; -import junit.framework.TestSuite; public class FacesConfigOrderingTestCase extends TestCase { @@ -392,7 +391,7 @@ private void populateIds(String elementName, List ids, String ns, private Document newDocument() throws ParserConfigurationException { - DocumentBuilderFactory factory = createLocalDocumentBuilderFactory(); + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setValidating(false); factory.setNamespaceAware(true); return factory.newDocumentBuilder().newDocument(); diff --git a/jakarta.faces-api/pom.xml b/jakarta.faces-api/pom.xml new file mode 100644 index 0000000000..833f989ac4 --- /dev/null +++ b/jakarta.faces-api/pom.xml @@ -0,0 +1,56 @@ + + + 4.0.0 + + org.glassfish.mojarra + mojarra-parent + 5.0.0-SNAPSHOT + + jakarta.faces + jakarta.faces-api + jar + + + jakarta.el + jakarta.el-api + 5.0.0 + provided + + + jakarta.enterprise + jakarta.enterprise.cdi-api + 4.0.0 + provided + + + jakarta.servlet + jakarta.servlet-api + 6.0.0 + provided + + + jakarta.validation + jakarta.validation-api + 3.0.1 + provided + + + jakarta.websocket + jakarta.websocket-api + 2.1.0 + provided + + + jakarta.websocket + jakarta.websocket-client-api + 2.1.0 + provided + + + org.powermock + powermock-module-junit4 + 2.0.9 + test + + + diff --git a/impl/src/main/java/jakarta/faces/CurrentThreadToServletContext.java b/jakarta.faces-api/src/main/java/jakarta/faces/CurrentThreadToServletContext.java similarity index 99% rename from impl/src/main/java/jakarta/faces/CurrentThreadToServletContext.java rename to jakarta.faces-api/src/main/java/jakarta/faces/CurrentThreadToServletContext.java index 542a97a157..844b0f8010 100644 --- a/impl/src/main/java/jakarta/faces/CurrentThreadToServletContext.java +++ b/jakarta.faces-api/src/main/java/jakarta/faces/CurrentThreadToServletContext.java @@ -16,8 +16,8 @@ package jakarta.faces; -import static com.sun.faces.util.Util.getContextClassLoader2; -import static com.sun.faces.util.Util.isAnyNull; +import static jakarta.faces.PackageUtils.getContextClassLoader2; +import static jakarta.faces.PackageUtils.isAnyNull; import static java.lang.System.currentTimeMillis; import static java.lang.System.identityHashCode; diff --git a/impl/src/main/java/jakarta/faces/FacesException.java b/jakarta.faces-api/src/main/java/jakarta/faces/FacesException.java similarity index 100% rename from impl/src/main/java/jakarta/faces/FacesException.java rename to jakarta.faces-api/src/main/java/jakarta/faces/FacesException.java diff --git a/impl/src/main/java/jakarta/faces/FacesWrapper.java b/jakarta.faces-api/src/main/java/jakarta/faces/FacesWrapper.java similarity index 100% rename from impl/src/main/java/jakarta/faces/FacesWrapper.java rename to jakarta.faces-api/src/main/java/jakarta/faces/FacesWrapper.java diff --git a/impl/src/main/java/jakarta/faces/FactoryFinder.java b/jakarta.faces-api/src/main/java/jakarta/faces/FactoryFinder.java similarity index 100% rename from impl/src/main/java/jakarta/faces/FactoryFinder.java rename to jakarta.faces-api/src/main/java/jakarta/faces/FactoryFinder.java diff --git a/impl/src/main/java/jakarta/faces/FactoryFinderInstance.java b/jakarta.faces-api/src/main/java/jakarta/faces/FactoryFinderInstance.java similarity index 88% rename from impl/src/main/java/jakarta/faces/FactoryFinderInstance.java rename to jakarta.faces-api/src/main/java/jakarta/faces/FactoryFinderInstance.java index f56aaeab4e..34fa36242f 100644 --- a/impl/src/main/java/jakarta/faces/FactoryFinderInstance.java +++ b/jakarta.faces-api/src/main/java/jakarta/faces/FactoryFinderInstance.java @@ -16,10 +16,10 @@ package jakarta.faces; -import static com.sun.faces.util.Util.generateCreatedBy; -import static com.sun.faces.util.Util.getContextClassLoader2; -import static com.sun.faces.util.Util.isAnyNull; -import static com.sun.faces.util.Util.isOneOf; +import static jakarta.faces.PackageUtils.generateCreatedBy; +import static jakarta.faces.PackageUtils.getContextClassLoader2; +import static jakarta.faces.PackageUtils.isAnyNull; +import static jakarta.faces.PackageUtils.isOneOf; import static jakarta.faces.FactoryFinder.APPLICATION_FACTORY; import static jakarta.faces.FactoryFinder.CLIENT_WINDOW_FACTORY; import static jakarta.faces.FactoryFinder.EXCEPTION_HANDLER_FACTORY; @@ -58,14 +58,14 @@ import java.util.Enumeration; import java.util.List; import java.util.Map; -import java.util.Map.Entry; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.locks.ReentrantReadWriteLock; import java.util.logging.Logger; import java.util.stream.Collectors; -import com.sun.faces.config.ConfigManager; -import com.sun.faces.spi.InjectionProvider; +// RESOLVE THIS +//import com.sun.faces.config.ConfigManager; +//import com.sun.faces.spi.InjectionProvider; import jakarta.faces.context.FacesContext; @@ -199,43 +199,45 @@ Object getFactory(String factoryName) { } } - InjectionProvider getInjectionProvider() { - return (InjectionProvider) factories.get(INJECTION_PROVIDER_KEY); - } +// RESOLVE THIS +// InjectionProvider getInjectionProvider() { +// return (InjectionProvider) factories.get(INJECTION_PROVIDER_KEY); +// } void clearInjectionProvider() { factories.remove(INJECTION_PROVIDER_KEY); } void releaseFactories() { - InjectionProvider provider = getInjectionProvider(); - - if (provider != null) { - lock.writeLock().lock(); - try { - for (Entry entry : factories.entrySet()) { - Object curFactory = entry.getValue(); - - // If the current entry is not the injectionProvider itself - // and the current entry has a non-null value - // and the value is not a string... - if (!INJECTION_PROVIDER_KEY.equals(entry.getKey()) && curFactory != null && !(curFactory instanceof String)) { - try { - provider.invokePreDestroy(curFactory); - } catch (Exception ex) { - logPreDestroyFail(entry.getValue(), ex); - } - } - } - } finally { - factories.clear(); - lock.writeLock().unlock(); - } - - } else { - LOGGER.log(SEVERE, - "Unable to call @PreDestroy annotated methods because no InjectionProvider can be found. Does this container implement the Mojarra Injection SPI?"); - } +// RESOLVE THIS +// InjectionProvider provider = getInjectionProvider(); +// +// if (provider != null) { +// lock.writeLock().lock(); +// try { +// for (Entry entry : factories.entrySet()) { +// Object curFactory = entry.getValue(); +// +// // If the current entry is not the injectionProvider itself +// // and the current entry has a non-null value +// // and the value is not a string... +// if (!INJECTION_PROVIDER_KEY.equals(entry.getKey()) && curFactory != null && !(curFactory instanceof String)) { +// try { +// provider.invokePreDestroy(curFactory); +// } catch (Exception ex) { +// logPreDestroyFail(entry.getValue(), ex); +// } +// } +// } +// } finally { +// factories.clear(); +// lock.writeLock().unlock(); +// } +// +// } else { +// LOGGER.log(SEVERE, +// "Unable to call @PreDestroy annotated methods because no InjectionProvider can be found. Does this container implement the Mojarra Injection SPI?"); +// } } Collection getFactories() { @@ -245,16 +247,19 @@ Collection getFactories() { // -------------------------------------------------------- Private methods private void copyInjectionProviderFromFacesContext(FacesContext facesContext) { - InjectionProvider injectionProvider = null; - if (facesContext != null) { - injectionProvider = (InjectionProvider) facesContext.getAttributes().get(ConfigManager.INJECTION_PROVIDER_KEY); - } - if (injectionProvider != null) { - factories.put(INJECTION_PROVIDER_KEY, injectionProvider); - } else { +// RESOLVE THIS + +// InjectionProvider injectionProvider = null; +// if (facesContext != null) { +// injectionProvider = (InjectionProvider) facesContext.getAttributes().get(ConfigManager.INJECTION_PROVIDER_KEY); +// } +// +// if (injectionProvider != null) { +// factories.put(INJECTION_PROVIDER_KEY, injectionProvider); +// } else { LOGGER.log(SEVERE, "Unable to obtain InjectionProvider from init time FacesContext. Does this container implement the Mojarra Injection SPI?"); - } +// } } /** @@ -465,19 +470,21 @@ private String readLineFromStream(InputStream stream) throws IOException { private void injectImplementation(String implementationName, Object implementation) { if (implementation != null) { - InjectionProvider provider = getInjectionProvider(); - if (provider != null) { - try { - provider.inject(implementation); - provider.invokePostConstruct(implementation); - } catch (Exception e) { - throw new FacesException(implementationName, e); - } - } else { + +// RESOLVE THIS +// InjectionProvider provider = getInjectionProvider(); +// if (provider != null) { +// try { +// provider.inject(implementation); +// provider.invokePostConstruct(implementation); +// } catch (Exception e) { +// throw new FacesException(implementationName, e); +// } +// } else { LOGGER.log(SEVERE, "Unable to inject {0} because no InjectionProvider can be found. Does this container implement the Mojarra Injection SPI?", implementation); } - } +// } } private void logNoFactory(String factoryName) { diff --git a/jakarta.faces-api/src/main/java/jakarta/faces/PackageUtils.java b/jakarta.faces-api/src/main/java/jakarta/faces/PackageUtils.java new file mode 100644 index 0000000000..7302b700db --- /dev/null +++ b/jakarta.faces-api/src/main/java/jakarta/faces/PackageUtils.java @@ -0,0 +1,85 @@ +/* + * Copyright (c) 1997, 2020 Oracle and/or its affiliates. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0, which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * This Source Code may also be made available under the following Secondary + * Licenses when the conditions for such availability set forth in the + * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, + * version 2 with the GNU Classpath Exception, which is available at + * https://www.gnu.org/software/classpath/license.html. + * + * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + */ +package jakarta.faces; + +import jakarta.faces.context.FacesContext; + +class PackageUtils { + + private PackageUtils() { + } + + public static String generateCreatedBy(FacesContext facesContext) { + String applicationContextPath = "unitTest"; + try { + applicationContextPath = facesContext.getExternalContext().getApplicationContextPath(); + } catch (Throwable e) { + // ignore + } + return applicationContextPath + " " + Thread.currentThread().toString() + " " + System.currentTimeMillis(); + } + + /** + *

+ * Identify and return the class loader that is associated with the calling + * web application. + *

+ * + * @throws FacesException if the web application class loader cannot be + * identified + */ + public static ClassLoader getContextClassLoader2() throws FacesException { + // J2EE 1.3 (and later) containers are required to make the + // web application class loader visible through the context + // class loader of the current thread. + ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); + if (classLoader == null) { + throw new FacesException("getContextClassLoader"); + } + + return classLoader; + } + + public static boolean isAnyNull(Object... values) { + for (Object value : values) { + if (value == null) { + return true; + } + } + return false; + } + + /** + * Returns true if the given object equals one of the given + * objects. + * + * @param The generic object type. + * @param object The object to be checked if it equals one of the given + * objects. + * @param objects The argument list of objects to be tested for equality. + * @return true if the given object equals one of the given + * objects. + */ + @SafeVarargs + public static boolean isOneOf(T object, T... objects) { + for (Object other : objects) { + if (object == null ? other == null : object.equals(other)) { + return true; + } + } + return false; + } +} diff --git a/impl/src/main/java/jakarta/faces/ServletContextFacesContextFactory.java b/jakarta.faces-api/src/main/java/jakarta/faces/ServletContextFacesContextFactory.java similarity index 100% rename from impl/src/main/java/jakarta/faces/ServletContextFacesContextFactory.java rename to jakarta.faces-api/src/main/java/jakarta/faces/ServletContextFacesContextFactory.java diff --git a/impl/src/main/java/jakarta/faces/TypedCollections.java b/jakarta.faces-api/src/main/java/jakarta/faces/TypedCollections.java similarity index 100% rename from impl/src/main/java/jakarta/faces/TypedCollections.java rename to jakarta.faces-api/src/main/java/jakarta/faces/TypedCollections.java diff --git a/impl/src/main/java/jakarta/faces/annotation/ApplicationMap.java b/jakarta.faces-api/src/main/java/jakarta/faces/annotation/ApplicationMap.java similarity index 100% rename from impl/src/main/java/jakarta/faces/annotation/ApplicationMap.java rename to jakarta.faces-api/src/main/java/jakarta/faces/annotation/ApplicationMap.java diff --git a/impl/src/main/java/jakarta/faces/annotation/FacesConfig.java b/jakarta.faces-api/src/main/java/jakarta/faces/annotation/FacesConfig.java similarity index 100% rename from impl/src/main/java/jakarta/faces/annotation/FacesConfig.java rename to jakarta.faces-api/src/main/java/jakarta/faces/annotation/FacesConfig.java diff --git a/impl/src/main/java/jakarta/faces/annotation/FlowMap.java b/jakarta.faces-api/src/main/java/jakarta/faces/annotation/FlowMap.java similarity index 100% rename from impl/src/main/java/jakarta/faces/annotation/FlowMap.java rename to jakarta.faces-api/src/main/java/jakarta/faces/annotation/FlowMap.java diff --git a/impl/src/main/java/jakarta/faces/annotation/HeaderMap.java b/jakarta.faces-api/src/main/java/jakarta/faces/annotation/HeaderMap.java similarity index 100% rename from impl/src/main/java/jakarta/faces/annotation/HeaderMap.java rename to jakarta.faces-api/src/main/java/jakarta/faces/annotation/HeaderMap.java diff --git a/impl/src/main/java/jakarta/faces/annotation/HeaderValuesMap.java b/jakarta.faces-api/src/main/java/jakarta/faces/annotation/HeaderValuesMap.java similarity index 100% rename from impl/src/main/java/jakarta/faces/annotation/HeaderValuesMap.java rename to jakarta.faces-api/src/main/java/jakarta/faces/annotation/HeaderValuesMap.java diff --git a/impl/src/main/java/jakarta/faces/annotation/InitParameterMap.java b/jakarta.faces-api/src/main/java/jakarta/faces/annotation/InitParameterMap.java similarity index 100% rename from impl/src/main/java/jakarta/faces/annotation/InitParameterMap.java rename to jakarta.faces-api/src/main/java/jakarta/faces/annotation/InitParameterMap.java diff --git a/impl/src/main/java/jakarta/faces/annotation/ManagedProperty.java b/jakarta.faces-api/src/main/java/jakarta/faces/annotation/ManagedProperty.java similarity index 100% rename from impl/src/main/java/jakarta/faces/annotation/ManagedProperty.java rename to jakarta.faces-api/src/main/java/jakarta/faces/annotation/ManagedProperty.java diff --git a/impl/src/main/java/jakarta/faces/annotation/RequestCookieMap.java b/jakarta.faces-api/src/main/java/jakarta/faces/annotation/RequestCookieMap.java similarity index 100% rename from impl/src/main/java/jakarta/faces/annotation/RequestCookieMap.java rename to jakarta.faces-api/src/main/java/jakarta/faces/annotation/RequestCookieMap.java diff --git a/impl/src/main/java/jakarta/faces/annotation/RequestMap.java b/jakarta.faces-api/src/main/java/jakarta/faces/annotation/RequestMap.java similarity index 100% rename from impl/src/main/java/jakarta/faces/annotation/RequestMap.java rename to jakarta.faces-api/src/main/java/jakarta/faces/annotation/RequestMap.java diff --git a/impl/src/main/java/jakarta/faces/annotation/RequestParameterMap.java b/jakarta.faces-api/src/main/java/jakarta/faces/annotation/RequestParameterMap.java similarity index 100% rename from impl/src/main/java/jakarta/faces/annotation/RequestParameterMap.java rename to jakarta.faces-api/src/main/java/jakarta/faces/annotation/RequestParameterMap.java diff --git a/impl/src/main/java/jakarta/faces/annotation/RequestParameterValuesMap.java b/jakarta.faces-api/src/main/java/jakarta/faces/annotation/RequestParameterValuesMap.java similarity index 100% rename from impl/src/main/java/jakarta/faces/annotation/RequestParameterValuesMap.java rename to jakarta.faces-api/src/main/java/jakarta/faces/annotation/RequestParameterValuesMap.java diff --git a/impl/src/main/java/jakarta/faces/annotation/SessionMap.java b/jakarta.faces-api/src/main/java/jakarta/faces/annotation/SessionMap.java similarity index 100% rename from impl/src/main/java/jakarta/faces/annotation/SessionMap.java rename to jakarta.faces-api/src/main/java/jakarta/faces/annotation/SessionMap.java diff --git a/impl/src/main/java/jakarta/faces/annotation/View.java b/jakarta.faces-api/src/main/java/jakarta/faces/annotation/View.java similarity index 100% rename from impl/src/main/java/jakarta/faces/annotation/View.java rename to jakarta.faces-api/src/main/java/jakarta/faces/annotation/View.java diff --git a/impl/src/main/java/jakarta/faces/annotation/ViewMap.java b/jakarta.faces-api/src/main/java/jakarta/faces/annotation/ViewMap.java similarity index 100% rename from impl/src/main/java/jakarta/faces/annotation/ViewMap.java rename to jakarta.faces-api/src/main/java/jakarta/faces/annotation/ViewMap.java diff --git a/impl/src/main/java/jakarta/faces/application/Application.java b/jakarta.faces-api/src/main/java/jakarta/faces/application/Application.java similarity index 100% rename from impl/src/main/java/jakarta/faces/application/Application.java rename to jakarta.faces-api/src/main/java/jakarta/faces/application/Application.java diff --git a/impl/src/main/java/jakarta/faces/application/ApplicationConfigurationPopulator.java b/jakarta.faces-api/src/main/java/jakarta/faces/application/ApplicationConfigurationPopulator.java similarity index 100% rename from impl/src/main/java/jakarta/faces/application/ApplicationConfigurationPopulator.java rename to jakarta.faces-api/src/main/java/jakarta/faces/application/ApplicationConfigurationPopulator.java diff --git a/impl/src/main/java/jakarta/faces/application/ApplicationFactory.java b/jakarta.faces-api/src/main/java/jakarta/faces/application/ApplicationFactory.java similarity index 100% rename from impl/src/main/java/jakarta/faces/application/ApplicationFactory.java rename to jakarta.faces-api/src/main/java/jakarta/faces/application/ApplicationFactory.java diff --git a/impl/src/main/java/jakarta/faces/application/ApplicationWrapper.java b/jakarta.faces-api/src/main/java/jakarta/faces/application/ApplicationWrapper.java similarity index 100% rename from impl/src/main/java/jakarta/faces/application/ApplicationWrapper.java rename to jakarta.faces-api/src/main/java/jakarta/faces/application/ApplicationWrapper.java diff --git a/impl/src/main/java/jakarta/faces/application/ConfigurableNavigationHandler.java b/jakarta.faces-api/src/main/java/jakarta/faces/application/ConfigurableNavigationHandler.java similarity index 100% rename from impl/src/main/java/jakarta/faces/application/ConfigurableNavigationHandler.java rename to jakarta.faces-api/src/main/java/jakarta/faces/application/ConfigurableNavigationHandler.java diff --git a/impl/src/main/java/jakarta/faces/application/ConfigurableNavigationHandlerWrapper.java b/jakarta.faces-api/src/main/java/jakarta/faces/application/ConfigurableNavigationHandlerWrapper.java similarity index 100% rename from impl/src/main/java/jakarta/faces/application/ConfigurableNavigationHandlerWrapper.java rename to jakarta.faces-api/src/main/java/jakarta/faces/application/ConfigurableNavigationHandlerWrapper.java diff --git a/impl/src/main/java/jakarta/faces/application/FacesMessage.java b/jakarta.faces-api/src/main/java/jakarta/faces/application/FacesMessage.java similarity index 100% rename from impl/src/main/java/jakarta/faces/application/FacesMessage.java rename to jakarta.faces-api/src/main/java/jakarta/faces/application/FacesMessage.java diff --git a/impl/src/main/java/jakarta/faces/application/NavigationCase.java b/jakarta.faces-api/src/main/java/jakarta/faces/application/NavigationCase.java similarity index 100% rename from impl/src/main/java/jakarta/faces/application/NavigationCase.java rename to jakarta.faces-api/src/main/java/jakarta/faces/application/NavigationCase.java diff --git a/impl/src/main/java/jakarta/faces/application/NavigationCaseWrapper.java b/jakarta.faces-api/src/main/java/jakarta/faces/application/NavigationCaseWrapper.java similarity index 100% rename from impl/src/main/java/jakarta/faces/application/NavigationCaseWrapper.java rename to jakarta.faces-api/src/main/java/jakarta/faces/application/NavigationCaseWrapper.java diff --git a/impl/src/main/java/jakarta/faces/application/NavigationHandler.java b/jakarta.faces-api/src/main/java/jakarta/faces/application/NavigationHandler.java similarity index 100% rename from impl/src/main/java/jakarta/faces/application/NavigationHandler.java rename to jakarta.faces-api/src/main/java/jakarta/faces/application/NavigationHandler.java diff --git a/impl/src/main/java/jakarta/faces/application/NavigationHandlerWrapper.java b/jakarta.faces-api/src/main/java/jakarta/faces/application/NavigationHandlerWrapper.java similarity index 100% rename from impl/src/main/java/jakarta/faces/application/NavigationHandlerWrapper.java rename to jakarta.faces-api/src/main/java/jakarta/faces/application/NavigationHandlerWrapper.java diff --git a/impl/src/main/java/jakarta/faces/application/ProjectStage.java b/jakarta.faces-api/src/main/java/jakarta/faces/application/ProjectStage.java similarity index 100% rename from impl/src/main/java/jakarta/faces/application/ProjectStage.java rename to jakarta.faces-api/src/main/java/jakarta/faces/application/ProjectStage.java diff --git a/impl/src/main/java/jakarta/faces/application/ProtectedViewException.java b/jakarta.faces-api/src/main/java/jakarta/faces/application/ProtectedViewException.java similarity index 100% rename from impl/src/main/java/jakarta/faces/application/ProtectedViewException.java rename to jakarta.faces-api/src/main/java/jakarta/faces/application/ProtectedViewException.java diff --git a/impl/src/main/java/jakarta/faces/application/Resource.java b/jakarta.faces-api/src/main/java/jakarta/faces/application/Resource.java similarity index 100% rename from impl/src/main/java/jakarta/faces/application/Resource.java rename to jakarta.faces-api/src/main/java/jakarta/faces/application/Resource.java diff --git a/impl/src/main/java/jakarta/faces/application/ResourceDependencies.java b/jakarta.faces-api/src/main/java/jakarta/faces/application/ResourceDependencies.java similarity index 100% rename from impl/src/main/java/jakarta/faces/application/ResourceDependencies.java rename to jakarta.faces-api/src/main/java/jakarta/faces/application/ResourceDependencies.java diff --git a/impl/src/main/java/jakarta/faces/application/ResourceDependency.java b/jakarta.faces-api/src/main/java/jakarta/faces/application/ResourceDependency.java similarity index 100% rename from impl/src/main/java/jakarta/faces/application/ResourceDependency.java rename to jakarta.faces-api/src/main/java/jakarta/faces/application/ResourceDependency.java diff --git a/impl/src/main/java/jakarta/faces/application/ResourceHandler.java b/jakarta.faces-api/src/main/java/jakarta/faces/application/ResourceHandler.java similarity index 100% rename from impl/src/main/java/jakarta/faces/application/ResourceHandler.java rename to jakarta.faces-api/src/main/java/jakarta/faces/application/ResourceHandler.java diff --git a/impl/src/main/java/jakarta/faces/application/ResourceHandlerWrapper.java b/jakarta.faces-api/src/main/java/jakarta/faces/application/ResourceHandlerWrapper.java similarity index 100% rename from impl/src/main/java/jakarta/faces/application/ResourceHandlerWrapper.java rename to jakarta.faces-api/src/main/java/jakarta/faces/application/ResourceHandlerWrapper.java diff --git a/impl/src/main/java/jakarta/faces/application/ResourceVisitOption.java b/jakarta.faces-api/src/main/java/jakarta/faces/application/ResourceVisitOption.java similarity index 100% rename from impl/src/main/java/jakarta/faces/application/ResourceVisitOption.java rename to jakarta.faces-api/src/main/java/jakarta/faces/application/ResourceVisitOption.java diff --git a/impl/src/main/java/jakarta/faces/application/ResourceWrapper.java b/jakarta.faces-api/src/main/java/jakarta/faces/application/ResourceWrapper.java similarity index 100% rename from impl/src/main/java/jakarta/faces/application/ResourceWrapper.java rename to jakarta.faces-api/src/main/java/jakarta/faces/application/ResourceWrapper.java diff --git a/impl/src/main/java/jakarta/faces/application/SharedUtils.java b/jakarta.faces-api/src/main/java/jakarta/faces/application/SharedUtils.java similarity index 100% rename from impl/src/main/java/jakarta/faces/application/SharedUtils.java rename to jakarta.faces-api/src/main/java/jakarta/faces/application/SharedUtils.java diff --git a/impl/src/main/java/jakarta/faces/application/StateManager.java b/jakarta.faces-api/src/main/java/jakarta/faces/application/StateManager.java similarity index 100% rename from impl/src/main/java/jakarta/faces/application/StateManager.java rename to jakarta.faces-api/src/main/java/jakarta/faces/application/StateManager.java diff --git a/impl/src/main/java/jakarta/faces/application/StateManagerWrapper.java b/jakarta.faces-api/src/main/java/jakarta/faces/application/StateManagerWrapper.java similarity index 100% rename from impl/src/main/java/jakarta/faces/application/StateManagerWrapper.java rename to jakarta.faces-api/src/main/java/jakarta/faces/application/StateManagerWrapper.java diff --git a/impl/src/main/java/jakarta/faces/application/ViewExpiredException.java b/jakarta.faces-api/src/main/java/jakarta/faces/application/ViewExpiredException.java similarity index 100% rename from impl/src/main/java/jakarta/faces/application/ViewExpiredException.java rename to jakarta.faces-api/src/main/java/jakarta/faces/application/ViewExpiredException.java diff --git a/impl/src/main/java/jakarta/faces/application/ViewHandler.java b/jakarta.faces-api/src/main/java/jakarta/faces/application/ViewHandler.java similarity index 100% rename from impl/src/main/java/jakarta/faces/application/ViewHandler.java rename to jakarta.faces-api/src/main/java/jakarta/faces/application/ViewHandler.java diff --git a/impl/src/main/java/jakarta/faces/application/ViewHandlerWrapper.java b/jakarta.faces-api/src/main/java/jakarta/faces/application/ViewHandlerWrapper.java similarity index 100% rename from impl/src/main/java/jakarta/faces/application/ViewHandlerWrapper.java rename to jakarta.faces-api/src/main/java/jakarta/faces/application/ViewHandlerWrapper.java diff --git a/impl/src/main/java/jakarta/faces/application/ViewResource.java b/jakarta.faces-api/src/main/java/jakarta/faces/application/ViewResource.java similarity index 100% rename from impl/src/main/java/jakarta/faces/application/ViewResource.java rename to jakarta.faces-api/src/main/java/jakarta/faces/application/ViewResource.java diff --git a/impl/src/main/java/jakarta/faces/application/ViewVisitOption.java b/jakarta.faces-api/src/main/java/jakarta/faces/application/ViewVisitOption.java similarity index 100% rename from impl/src/main/java/jakarta/faces/application/ViewVisitOption.java rename to jakarta.faces-api/src/main/java/jakarta/faces/application/ViewVisitOption.java diff --git a/impl/src/main/java/jakarta/faces/component/ActionSource.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/ActionSource.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/ActionSource.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/ActionSource.java diff --git a/impl/src/main/java/jakarta/faces/component/ActionSource2.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/ActionSource2.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/ActionSource2.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/ActionSource2.java diff --git a/impl/src/main/java/jakarta/faces/component/AttachedObjectListHolder.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/AttachedObjectListHolder.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/AttachedObjectListHolder.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/AttachedObjectListHolder.java diff --git a/impl/src/main/java/jakarta/faces/component/ComponentStateHelper.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/ComponentStateHelper.java similarity index 98% rename from impl/src/main/java/jakarta/faces/component/ComponentStateHelper.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/ComponentStateHelper.java index 1eda497160..95417a7a7e 100644 --- a/impl/src/main/java/jakarta/faces/component/ComponentStateHelper.java +++ b/jakarta.faces-api/src/main/java/jakarta/faces/component/ComponentStateHelper.java @@ -16,10 +16,10 @@ package jakarta.faces.component; -import static com.sun.faces.facelets.tag.faces.ComponentSupport.MARK_CREATED; -import static com.sun.faces.facelets.tag.faces.ComponentSupport.addToDescendantMarkIdCache; -import static com.sun.faces.util.Util.coalesce; -import static com.sun.faces.util.Util.isEmpty; +import static jakarta.faces.component.PackageUtils.MARK_CREATED; +import static jakarta.faces.component.PackageUtils.addToDescendantMarkIdCache; +import static jakarta.faces.component.PackageUtils.coalesce; +import static jakarta.faces.component.PackageUtils.isEmpty; import static jakarta.faces.component.UIComponentBase.restoreAttachedState; import static jakarta.faces.component.UIComponentBase.saveAttachedState; diff --git a/impl/src/main/java/jakarta/faces/component/ContextCallback.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/ContextCallback.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/ContextCallback.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/ContextCallback.java diff --git a/impl/src/main/java/jakarta/faces/component/Doctype.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/Doctype.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/Doctype.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/Doctype.java diff --git a/impl/src/main/java/jakarta/faces/component/EditableValueHolder.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/EditableValueHolder.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/EditableValueHolder.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/EditableValueHolder.java diff --git a/impl/src/main/java/jakarta/faces/component/FacesComponent.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/FacesComponent.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/FacesComponent.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/FacesComponent.java diff --git a/jakarta.faces-api/src/main/java/jakarta/faces/component/LRUMap.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/LRUMap.java new file mode 100644 index 0000000000..ee78b955ee --- /dev/null +++ b/jakarta.faces-api/src/main/java/jakarta/faces/component/LRUMap.java @@ -0,0 +1,45 @@ +/* + * Copyright (c) 1997, 2020 Oracle and/or its affiliates. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0, which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * This Source Code may also be made available under the following Secondary + * Licenses when the conditions for such availability set forth in the + * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, + * version 2 with the GNU Classpath Exception, which is available at + * https://www.gnu.org/software/classpath/license.html. + * + * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + */ + +package jakarta.faces.component; + +import java.util.LinkedHashMap; +import java.util.Map; + +/** + * A special implementation of {@link java.util.LinkedHashMap} to provide LRU functionality. + */ +class LRUMap extends LinkedHashMap { + + private static final long serialVersionUID = -7137951139094651602L; + private final int maxCapacity; + + // ------------------------------------------------------------ Constructors + + public LRUMap(int maxCapacity) { + super(maxCapacity, 1.0f, true); + this.maxCapacity = maxCapacity; + } + + // ---------------------------------------------- Methods from LinkedHashMap + + @Override + protected boolean removeEldestEntry(Map.Entry eldest) { + return size() > maxCapacity; + } + + // TEST: com.sun.faces.TestLRUMap_local +} diff --git a/impl/src/main/java/jakarta/faces/component/MessageFactory.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/MessageFactory.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/MessageFactory.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/MessageFactory.java diff --git a/impl/src/main/java/jakarta/faces/component/NamingContainer.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/NamingContainer.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/NamingContainer.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/NamingContainer.java diff --git a/jakarta.faces-api/src/main/java/jakarta/faces/component/PackageUtils.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/PackageUtils.java new file mode 100644 index 0000000000..22b70c91a1 --- /dev/null +++ b/jakarta.faces-api/src/main/java/jakarta/faces/component/PackageUtils.java @@ -0,0 +1,421 @@ +/* + * Copyright (c) 1997, 2020 Oracle and/or its affiliates. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0, which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * This Source Code may also be made available under the following Secondary + * Licenses when the conditions for such availability set forth in the + * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, + * version 2 with the GNU Classpath Exception, which is available at + * https://www.gnu.org/software/classpath/license.html. + * + * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + */ +package jakarta.faces.component; + +import jakarta.faces.context.FacesContext; +import jakarta.faces.event.PhaseId; +import jakarta.faces.model.SelectItem; +import static java.lang.Character.isDigit; +import java.lang.reflect.Array; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.function.Consumer; +import java.util.function.Supplier; +import java.util.regex.Pattern; +import java.util.stream.Stream; +import java.util.stream.StreamSupport; + +class PackageUtils { + + public final static String MARK_CREATED = "com.sun.faces.facelets.MARK_ID"; + private final static String MARK_ID_CACHE = "com.sun.faces.facelets.MARK_ID_CACHE"; + private static final String PATTERN_CACHE_KEY = "com.sun.faces.patternCache"; + private static final String CLIENT_ID_NESTED_IN_ITERATOR_PATTERN = "CLIENT_ID_NESTED_IN_ITERATOR_PATTERN"; + + private PackageUtils() { + } + + /** + * Adds all specified otherMarkIds to the mark id cache of this + * component. Changes are propagated up the component tree. + */ + private static void addAllDescendantMarkIds(UIComponent component, Map otherMarkIds) { + getDescendantMarkIdCache(component).putAll(otherMarkIds); + UIComponent parent = component.getParent(); + if (parent != null) { + addAllDescendantMarkIds(parent, otherMarkIds); + } + } + + /** + * Adds the specified markId and its corresponding + * {@link UIComponent} otherComponent to the mark id cache of + * this component. Changes are propagated up the component tree. + */ + private static void addSingleDescendantMarkId(UIComponent component, String markId, UIComponent otherComponent) { + getDescendantMarkIdCache(component).put(markId, otherComponent); + UIComponent parent = component.getParent(); + if (parent != null) { + addSingleDescendantMarkId(parent, markId, otherComponent); + } + } + + /** + * Adds the mark id of the specified {@link UIComponent} + * otherComponent to the mark id cache of this component, + * including all its descendant mark ids. Changes are propagated up the + * component tree. + */ + public static void addToDescendantMarkIdCache(UIComponent component, UIComponent otherComponent) { + String markId = (String) otherComponent.getAttributes().get(MARK_CREATED); + if (markId != null) { + addSingleDescendantMarkId(component, markId, otherComponent); + } + Map otherMarkIds = getDescendantMarkIdCache(otherComponent); + if (!otherMarkIds.isEmpty()) { + addAllDescendantMarkIds(component, otherMarkIds); + } + } + + /** + * @return an unmodifiable Iterator over the passed array of SelectItem + */ + public static Iterator asIterator(T[] items) { + return unmodifiableIterator(Stream.of(items).iterator()); + } + + /** + * Returns the first non-null object of the argument list, or + * null if there is no such element. + * + * @param The generic object type. + * @param objects The argument list of objects to be tested for + * non-null. + * @return The first non-null object of the argument list, or + * null if there is no such element. + */ + @SafeVarargs + public static T coalesce(T... objects) { + for (T object : objects) { + if (object != null) { + return object; + } + } + + return null; + } + + public static List collectSelectItems(FacesContext context, UIComponent component) { + List items = new ArrayList<>(); + + for (UIComponent child : component.getChildren()) { + if (child instanceof UISelectItems) { + createSelectItems(context, child, ((UISelectItems) child).getValue(), SelectItem::new, items::add); + } else if (child instanceof UISelectItem) { + items.add(createSelectItem(child, null, SelectItem::new)); + } + } + return items; + } + + public static void createSelectItems(FacesContext context, UIComponent component, Object values, Supplier supplier, Consumer callback) { + Map attributes = component.getAttributes(); + String var = coalesce((String) attributes.get("var"), "item"); + stream(values).forEach(value -> new ScopedRunner(context).with(var, value).invoke(() -> callback.accept(createSelectItem(component, getItemValue(attributes, value), supplier)))); + } + + public static S createSelectItem(UIComponent component, Object value, Supplier supplier) { + Map attributes = component.getAttributes(); + Object itemValue = getItemValue(attributes, value); + Object itemLabel = attributes.get("itemLabel"); + Object itemEscaped = coalesce(attributes.get("itemEscaped"), attributes.get("itemLabelEscaped")); // f:selectItem || f:selectItems -- TODO: this should be aligned in their APIs. + Object itemDisabled = attributes.get("itemDisabled"); + + S selectItem = supplier.get(); + selectItem.setValue(itemValue); + selectItem.setLabel(String.valueOf(itemLabel != null ? itemLabel : selectItem.getValue())); + selectItem.setEscape(itemEscaped == null || Boolean.parseBoolean(itemEscaped.toString())); + selectItem.setDisabled(itemDisabled != null && Boolean.parseBoolean(itemDisabled.toString())); + return selectItem; + } + + /** + * Extract first numeric segment from given client ID. + *
    + *
  • 'table:1:button' should return 1
  • + *
  • 'table:2' should return 2
  • + *
  • '3:button' should return 3
  • + *
  • '4' should return 4
  • + *
+ * + * @param clientId the client ID + * @param separatorChar the separator character + * @return first numeric segment from given client ID. + * @throws NumberFormatException when given client ID doesn't have any + * numeric segment at all. + */ + public static int extractFirstNumericSegment(String clientId, char separatorChar) { + int nextSeparatorChar = clientId.indexOf(separatorChar); + + while (clientId.length() > 0 && !isDigit(clientId.charAt(0)) && nextSeparatorChar >= 0) { + clientId = clientId.substring(nextSeparatorChar + 1); + nextSeparatorChar = clientId.indexOf(separatorChar); + } + + if (clientId.length() > 0 && isDigit(clientId.charAt(0))) { + String firstNumericSegment = nextSeparatorChar >= 0 ? clientId.substring(0, nextSeparatorChar) : clientId; + return Integer.parseInt(firstNumericSegment); + } + + throw new NumberFormatException("there is no numeric segment"); + } + + @SuppressWarnings("unchecked") + private static Map getDescendantMarkIdCache(UIComponent component) { + Map descendantMarkIdCache = (Map) component.getTransientStateHelper().getTransient(MARK_ID_CACHE); + + if (descendantMarkIdCache == null) { + descendantMarkIdCache = new HashMap(); + component.getTransientStateHelper().putTransient(MARK_ID_CACHE, descendantMarkIdCache); + } + + return descendantMarkIdCache; + } + + /** + * Returns item value attribute, taking into account any value expression + * which actually evaluates to null. + */ + private static Object getItemValue(Map attributes, Object defaultValue) { + Object itemValue = attributes.get("itemValue"); + return itemValue != null || attributes.containsKey("itemValue") ? itemValue : defaultValue; + } + + private static Map getPatternCache(Map appMap) { + @SuppressWarnings("unchecked") + Map result = (Map) appMap.get(PATTERN_CACHE_KEY); + if (result == null) { + result = Collections.synchronizedMap(new LRUMap<>(15)); + appMap.put(PATTERN_CACHE_KEY, result); + } + + return result; + } + + public static boolean isAllNull(Object... values) { + for (Object value : values) { + if (value != null) { + return false; + } + } + + return true; + } + + public static boolean isAnyNull(Object... values) { + for (Object value : values) { + if (value == null) { + return true; + } + } + + return false; + } + + /** + * Returns true if the given value is null or is empty. Types + * of String, Collection, Map, Optional and Array are recognized. If none is + * recognized, then examine the emptiness of the toString() representation + * instead. + * + * @param value The value to be checked on emptiness. + * @return true if the given value is null or is empty. + */ + public static boolean isEmpty(Object value) { + if (value == null) { + return true; + } else if (value instanceof String) { + return ((String) value).isEmpty(); + } else if (value instanceof Collection) { + return ((Collection) value).isEmpty(); + } else if (value instanceof Map) { + return ((Map) value).isEmpty(); + } else if (value instanceof Optional) { + return ((Optional) value).isEmpty(); + } else if (value.getClass().isArray()) { + return Array.getLength(value) == 0; + } else { + return value.toString() == null || value.toString().isEmpty(); + } + } + + public static boolean isNestedInIterator(FacesContext context, UIComponent component) { + UIComponent parent = component.getParent(); + + if (parent == null) { + return false; + } + + for (UIComponent p = parent; p != null; p = p.getParent()) { + if (p instanceof UIData || p.getClass().getName().contains("UIRepeat")) { + return true; + } + } + + // https://github.com/eclipse-ee4j/mojarra/issues/4957 + // We should in long term probably introduce a common interface like UIIterable. + // But this is solid for now as all known implementing components already follow this pattern. + // We could theoretically even remove the above instanceof checks. + Pattern clientIdNestedInIteratorPattern = getPatternCache(context.getExternalContext().getApplicationMap()).computeIfAbsent(CLIENT_ID_NESTED_IN_ITERATOR_PATTERN, k -> { + String separatorChar = Pattern.quote(String.valueOf(UINamingContainer.getSeparatorChar(context))); + return Pattern.compile(".+" + separatorChar + "[0-9]+" + separatorChar + ".+"); + }); + + return clientIdNestedInIteratorPattern.matcher(parent.getClientId(context)).matches(); + } + + /** + * Returns true if the given faces context is + * not {@link FacesContext#isReleased()}, and its current + * phase ID is not {@link PhaseId#RENDER_RESPONSE}. + */ + public static boolean isNotRenderingResponse(FacesContext context) { + return !context.isReleased() && context.getCurrentPhaseId() != PhaseId.RENDER_RESPONSE; + } + + /** + * Returns true if the given object equals one of the given + * objects. + * + * @param The generic object type. + * @param object The object to be checked if it equals one of the given + * objects. + * @param objects The argument list of objects to be tested for equality. + * @return true if the given object equals one of the given + * objects. + */ + @SafeVarargs + public static boolean isOneOf(T object, T... objects) { + for (Object other : objects) { + if (object == null ? other == null : object.equals(other)) { + return true; + } + } + + return false; + } + + /** + * Removes all specified otherMarkIds from the mark id cache of + * this component. Changes are propagated up the component tree. + */ + private static void removeAllDescendantMarkIds(UIComponent component, Map otherMarkIds) { + Map descendantMarkIdCache = getDescendantMarkIdCache(component); + Iterator iterator = otherMarkIds.keySet().iterator(); + while (iterator.hasNext()) { + descendantMarkIdCache.remove(iterator.next()); + } + UIComponent parent = component.getParent(); + if (parent != null) { + removeAllDescendantMarkIds(parent, otherMarkIds); + } + } + + /** + * Removes the mark id of the specified {@link UIComponent} + * otherComponent from the mark id cache of this component, + * including all its descendant mark ids. Changes are propagated up the + * component tree. + */ + public static void removeFromDescendantMarkIdCache(UIComponent component, UIComponent otherComponent) { + String markId = (String) otherComponent.getAttributes().get(MARK_CREATED); + if (markId != null) { + removeSingleDescendantMarkId(component, markId); + } + Map otherMarkIds = getDescendantMarkIdCache(otherComponent); + if (!otherMarkIds.isEmpty()) { + removeAllDescendantMarkIds(component, otherMarkIds); + } + } + + /** + * Removes the specified markId from the mark id cache of this + * component. Changes are propagated up the component tree. + */ + private static void removeSingleDescendantMarkId(UIComponent component, String markId) { + getDescendantMarkIdCache(component).remove(markId); + UIComponent parent = component.getParent(); + if (parent != null) { + removeSingleDescendantMarkId(parent, markId); + } + } + + @SuppressWarnings("unchecked") + public static Stream stream(Object object) { + if (object == null) { + return Stream.empty(); + } else if (object instanceof Stream) { + return (Stream) object; + } else if (object instanceof Collection) { + return ((Collection) object).stream(); // little bonus with sized spliterator... + } else if (object instanceof Enumeration) { // recursive call wrapping in an Iterator (Java 9+) + return stream(((Enumeration) object).asIterator()); + } else if (object instanceof Iterable) { + return (Stream) StreamSupport.stream(((Iterable) object).spliterator(), false); + } else if (object instanceof Map) { + return (Stream) ((Map) object).entrySet().stream(); + } else if (object instanceof int[]) { + return (Stream) Arrays.stream((int[]) object).boxed(); + } else if (object instanceof long[]) { + return (Stream) Arrays.stream((long[]) object).boxed(); + } else if (object instanceof double[]) { + return (Stream) Arrays.stream((double[]) object).boxed(); + } else if (object instanceof Object[]) { + return (Stream) Arrays.stream((Object[]) object); + } else { + return (Stream) Stream.of(object); + } + } + + /** + * @return an Iterator over the passed Iterator with no remove support + */ + public static Iterator unmodifiableIterator(Iterator iterator) { + return new UnmodifiableIterator<>(iterator); + } + + public static class UnmodifiableIterator implements Iterator { + + private final Iterator iterator; + + public UnmodifiableIterator(Iterator iterator) { + this.iterator = iterator; + } + + @Override + public boolean hasNext() { + return iterator.hasNext(); + } + + @Override + public T next() { + return iterator.next(); + } + + @Override + public void remove() { + throw new UnsupportedOperationException(); + } + } +} diff --git a/impl/src/main/java/jakarta/faces/component/PartialStateHolder.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/PartialStateHolder.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/PartialStateHolder.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/PartialStateHolder.java diff --git a/jakarta.faces-api/src/main/java/jakarta/faces/component/ScopedRunner.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/ScopedRunner.java new file mode 100644 index 0000000000..bea520573c --- /dev/null +++ b/jakarta.faces-api/src/main/java/jakarta/faces/component/ScopedRunner.java @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2021 Contributors to Eclipse Foundation. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0, which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * This Source Code may also be made available under the following Secondary + * Licenses when the conditions for such availability set forth in the + * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, + * version 2 with the GNU Classpath Exception, which is available at + * https://www.gnu.org/software/classpath/license.html. + * + * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + */ + +package jakarta.faces.component; + +import java.util.HashMap; +import java.util.Map; + +import jakarta.faces.context.FacesContext; + +/** + * This class helps in letting code run within its own scope. Such scope is defined by specific variables being + * available to EL within it. The request scope is used to store the variables. + * + * @author Arjan Tijms + * + */ +class ScopedRunner { + + private final FacesContext context; + private final Map scopedVariables; + private final Map previousVariables = new HashMap<>(); + + public ScopedRunner(FacesContext context) { + this(context, new HashMap<>()); + } + + public ScopedRunner(FacesContext context, Map scopedVariables) { + this.context = context; + this.scopedVariables = scopedVariables; + } + + /** + * Adds the given variable to this instance. Can be used in a builder-pattern. + * + * @param key the key name of the variable + * @param value the value of the variable + * @return this ScopedRunner, so adding variables and finally calling invoke can be chained. + */ + public ScopedRunner with(String key, Object value) { + scopedVariables.put(key, value); + return this; + } + + /** + * Invokes the callback within the scope of the variables being given in the constructor. + * @param callback The callback. + */ + public void invoke(Runnable callback) { + try { + setNewScope(); + callback.run(); + } finally { + restorePreviousScope(); + } + } + + private void setNewScope() { + previousVariables.clear(); + + Map requestMap = context.getExternalContext().getRequestMap(); + for (Map.Entry entry : scopedVariables.entrySet()) { + Object previousVariable = requestMap.put(entry.getKey(), entry.getValue()); + if (previousVariable != null) { + previousVariables.put(entry.getKey(), previousVariable); + } + } + } + + private void restorePreviousScope() { + try { + Map requestMap = context.getExternalContext().getRequestMap(); + for (Map.Entry entry : scopedVariables.entrySet()) { + Object previousVariable = previousVariables.get(entry.getKey()); + if (previousVariable != null) { + requestMap.put(entry.getKey(), previousVariable); + } else { + requestMap.remove(entry.getKey()); + } + } + } finally { + previousVariables.clear(); + } + } + +} \ No newline at end of file diff --git a/impl/src/main/java/jakarta/faces/component/SelectItemsIterator.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/SelectItemsIterator.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/SelectItemsIterator.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/SelectItemsIterator.java diff --git a/impl/src/main/java/jakarta/faces/component/SelectUtils.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/SelectUtils.java similarity index 98% rename from impl/src/main/java/jakarta/faces/component/SelectUtils.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/SelectUtils.java index 27d0be8f55..92ae492b7d 100644 --- a/impl/src/main/java/jakarta/faces/component/SelectUtils.java +++ b/jakarta.faces-api/src/main/java/jakarta/faces/component/SelectUtils.java @@ -25,7 +25,8 @@ import jakarta.faces.model.SelectItem; import jakarta.faces.model.SelectItemGroup; -import static com.sun.faces.util.CollectionsUtils.asIterator; +// RESOLVE THIS +import static jakarta.faces.component.PackageUtils.asIterator; /** * Contains common utility methods used by both {@link UISelectOne} and {@link UISelectMany}. diff --git a/impl/src/main/java/jakarta/faces/component/SharedUtils.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/SharedUtils.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/SharedUtils.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/SharedUtils.java diff --git a/impl/src/main/java/jakarta/faces/component/StateHelper.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/StateHelper.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/StateHelper.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/StateHelper.java diff --git a/impl/src/main/java/jakarta/faces/component/StateHolder.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/StateHolder.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/StateHolder.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/StateHolder.java diff --git a/impl/src/main/java/jakarta/faces/component/StateHolderSaver.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/StateHolderSaver.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/StateHolderSaver.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/StateHolderSaver.java diff --git a/impl/src/main/java/jakarta/faces/component/TransientStateHelper.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/TransientStateHelper.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/TransientStateHelper.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/TransientStateHelper.java diff --git a/impl/src/main/java/jakarta/faces/component/TransientStateHolder.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/TransientStateHolder.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/TransientStateHolder.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/TransientStateHolder.java diff --git a/impl/src/main/java/jakarta/faces/component/TypedCollections.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/TypedCollections.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/TypedCollections.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/TypedCollections.java diff --git a/impl/src/main/java/jakarta/faces/component/UIColumn.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/UIColumn.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/UIColumn.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/UIColumn.java diff --git a/impl/src/main/java/jakarta/faces/component/UICommand.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/UICommand.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/UICommand.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/UICommand.java diff --git a/impl/src/main/java/jakarta/faces/component/UIComponent.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/UIComponent.java similarity index 99% rename from impl/src/main/java/jakarta/faces/component/UIComponent.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/UIComponent.java index 9035df2301..0ab169e54d 100644 --- a/impl/src/main/java/jakarta/faces/component/UIComponent.java +++ b/jakarta.faces-api/src/main/java/jakarta/faces/component/UIComponent.java @@ -17,10 +17,10 @@ package jakarta.faces.component; -import static com.sun.faces.util.Util.isAnyNull; -import static com.sun.faces.util.Util.isOneOf; +import static jakarta.faces.component.PackageUtils.isAnyNull; +import static jakarta.faces.component.PackageUtils.isOneOf; import static jakarta.faces.application.Resource.COMPONENT_RESOURCE_KEY; -import static jakarta.faces.component.visit.VisitHint.SKIP_TRANSIENT; + import static jakarta.faces.component.visit.VisitHint.SKIP_TRANSIENT; import static jakarta.faces.component.visit.VisitHint.SKIP_UNRENDERED; import static jakarta.faces.component.visit.VisitResult.ACCEPT; import static jakarta.faces.component.visit.VisitResult.COMPLETE; diff --git a/impl/src/main/java/jakarta/faces/component/UIComponentBase.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/UIComponentBase.java similarity index 99% rename from impl/src/main/java/jakarta/faces/component/UIComponentBase.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/UIComponentBase.java index a465224f4a..845dae2088 100644 --- a/impl/src/main/java/jakarta/faces/component/UIComponentBase.java +++ b/jakarta.faces-api/src/main/java/jakarta/faces/component/UIComponentBase.java @@ -17,12 +17,12 @@ package jakarta.faces.component; -import static com.sun.faces.facelets.tag.faces.ComponentSupport.addToDescendantMarkIdCache; -import static com.sun.faces.facelets.tag.faces.ComponentSupport.isNotRenderingResponse; -import static com.sun.faces.facelets.tag.faces.ComponentSupport.removeFromDescendantMarkIdCache; -import static com.sun.faces.util.Util.isAllNull; -import static com.sun.faces.util.Util.isAnyNull; -import static com.sun.faces.util.Util.isEmpty; +import static jakarta.faces.component.PackageUtils.addToDescendantMarkIdCache; +import static jakarta.faces.component.PackageUtils.isNotRenderingResponse; +import static jakarta.faces.component.PackageUtils.removeFromDescendantMarkIdCache; +import static jakarta.faces.component.PackageUtils.isAllNull; +import static jakarta.faces.component.PackageUtils.isAnyNull; +import static jakarta.faces.component.PackageUtils.isEmpty; import static java.beans.Introspector.getBeanInfo; import static java.lang.Boolean.TRUE; import static java.lang.Character.isDigit; diff --git a/impl/src/main/java/jakarta/faces/component/UIData.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/UIData.java similarity index 99% rename from impl/src/main/java/jakarta/faces/component/UIData.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/UIData.java index 16d8dfc235..297bfde29a 100644 --- a/impl/src/main/java/jakarta/faces/component/UIData.java +++ b/jakarta.faces-api/src/main/java/jakarta/faces/component/UIData.java @@ -16,8 +16,9 @@ package jakarta.faces.component; -import static com.sun.faces.util.Util.extractFirstNumericSegment; -import static com.sun.faces.util.Util.isNestedInIterator; +// RESOLVE THIS +import static jakarta.faces.component.PackageUtils.extractFirstNumericSegment; +import static jakarta.faces.component.PackageUtils.isNestedInIterator; import java.io.IOException; import java.io.Serializable; diff --git a/impl/src/main/java/jakarta/faces/component/UIForm.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/UIForm.java similarity index 99% rename from impl/src/main/java/jakarta/faces/component/UIForm.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/UIForm.java index 37d7a8e11e..a153a417d3 100644 --- a/impl/src/main/java/jakarta/faces/component/UIForm.java +++ b/jakarta.faces-api/src/main/java/jakarta/faces/component/UIForm.java @@ -16,7 +16,7 @@ package jakarta.faces.component; -import static com.sun.faces.util.Util.coalesce; +import static jakarta.faces.component.PackageUtils.coalesce; import static jakarta.faces.component.UIViewRoot.UNIQUE_ID_PREFIX; import static jakarta.faces.component.visit.VisitResult.COMPLETE; diff --git a/impl/src/main/java/jakarta/faces/component/UIGraphic.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/UIGraphic.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/UIGraphic.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/UIGraphic.java diff --git a/impl/src/main/java/jakarta/faces/component/UIImportConstants.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/UIImportConstants.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/UIImportConstants.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/UIImportConstants.java diff --git a/impl/src/main/java/jakarta/faces/component/UIInput.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/UIInput.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/UIInput.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/UIInput.java diff --git a/impl/src/main/java/jakarta/faces/component/UIMessage.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/UIMessage.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/UIMessage.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/UIMessage.java diff --git a/impl/src/main/java/jakarta/faces/component/UIMessages.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/UIMessages.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/UIMessages.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/UIMessages.java diff --git a/impl/src/main/java/jakarta/faces/component/UINamingContainer.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/UINamingContainer.java similarity index 99% rename from impl/src/main/java/jakarta/faces/component/UINamingContainer.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/UINamingContainer.java index 668561ba92..fd9c858b06 100644 --- a/impl/src/main/java/jakarta/faces/component/UINamingContainer.java +++ b/jakarta.faces-api/src/main/java/jakarta/faces/component/UINamingContainer.java @@ -16,7 +16,7 @@ package jakarta.faces.component; -import static com.sun.faces.util.Util.coalesce; +import static jakarta.faces.component.PackageUtils.coalesce; import static jakarta.faces.component.UIViewRoot.UNIQUE_ID_PREFIX; import static jakarta.faces.component.visit.VisitResult.COMPLETE; import static java.util.logging.Level.SEVERE; diff --git a/impl/src/main/java/jakarta/faces/component/UIOutcomeTarget.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/UIOutcomeTarget.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/UIOutcomeTarget.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/UIOutcomeTarget.java diff --git a/impl/src/main/java/jakarta/faces/component/UIOutput.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/UIOutput.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/UIOutput.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/UIOutput.java diff --git a/impl/src/main/java/jakarta/faces/component/UIPanel.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/UIPanel.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/UIPanel.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/UIPanel.java diff --git a/impl/src/main/java/jakarta/faces/component/UIParameter.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/UIParameter.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/UIParameter.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/UIParameter.java diff --git a/impl/src/main/java/jakarta/faces/component/UISelectBoolean.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/UISelectBoolean.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/UISelectBoolean.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/UISelectBoolean.java diff --git a/impl/src/main/java/jakarta/faces/component/UISelectItem.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/UISelectItem.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/UISelectItem.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/UISelectItem.java diff --git a/impl/src/main/java/jakarta/faces/component/UISelectItemGroup.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/UISelectItemGroup.java similarity index 94% rename from impl/src/main/java/jakarta/faces/component/UISelectItemGroup.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/UISelectItemGroup.java index c4928eae6c..d0ebeac1f2 100644 --- a/impl/src/main/java/jakarta/faces/component/UISelectItemGroup.java +++ b/jakarta.faces-api/src/main/java/jakarta/faces/component/UISelectItemGroup.java @@ -16,8 +16,8 @@ package jakarta.faces.component; -import static com.sun.faces.util.SelectItemUtils.collectSelectItems; -import static com.sun.faces.util.SelectItemUtils.createSelectItem; +import static jakarta.faces.component.PackageUtils.collectSelectItems; +import static jakarta.faces.component.PackageUtils.createSelectItem; import jakarta.faces.model.SelectItem; import jakarta.faces.model.SelectItemGroup; diff --git a/impl/src/main/java/jakarta/faces/component/UISelectItemGroups.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/UISelectItemGroups.java similarity index 95% rename from impl/src/main/java/jakarta/faces/component/UISelectItemGroups.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/UISelectItemGroups.java index 41cec1fcc2..c13d188720 100644 --- a/impl/src/main/java/jakarta/faces/component/UISelectItemGroups.java +++ b/jakarta.faces-api/src/main/java/jakarta/faces/component/UISelectItemGroups.java @@ -16,8 +16,8 @@ package jakarta.faces.component; -import static com.sun.faces.util.SelectItemUtils.collectSelectItems; -import static com.sun.faces.util.SelectItemUtils.createSelectItems; +import static jakarta.faces.component.PackageUtils.collectSelectItems; +import static jakarta.faces.component.PackageUtils.createSelectItems; import java.util.ArrayList; import java.util.List; diff --git a/impl/src/main/java/jakarta/faces/component/UISelectItems.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/UISelectItems.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/UISelectItems.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/UISelectItems.java diff --git a/impl/src/main/java/jakarta/faces/component/UISelectMany.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/UISelectMany.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/UISelectMany.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/UISelectMany.java diff --git a/impl/src/main/java/jakarta/faces/component/UISelectOne.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/UISelectOne.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/UISelectOne.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/UISelectOne.java diff --git a/impl/src/main/java/jakarta/faces/component/UIViewAction.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/UIViewAction.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/UIViewAction.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/UIViewAction.java diff --git a/impl/src/main/java/jakarta/faces/component/UIViewParameter.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/UIViewParameter.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/UIViewParameter.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/UIViewParameter.java diff --git a/impl/src/main/java/jakarta/faces/component/UIViewRoot.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/UIViewRoot.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/UIViewRoot.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/UIViewRoot.java diff --git a/impl/src/main/java/jakarta/faces/component/UIWebsocket.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/UIWebsocket.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/UIWebsocket.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/UIWebsocket.java diff --git a/impl/src/main/java/jakarta/faces/component/UniqueIdVendor.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/UniqueIdVendor.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/UniqueIdVendor.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/UniqueIdVendor.java diff --git a/impl/src/main/java/jakarta/faces/component/UpdateModelException.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/UpdateModelException.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/UpdateModelException.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/UpdateModelException.java diff --git a/impl/src/main/java/jakarta/faces/component/ValueHolder.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/ValueHolder.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/ValueHolder.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/ValueHolder.java diff --git a/impl/src/main/java/jakarta/faces/component/behavior/AjaxBehavior.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/behavior/AjaxBehavior.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/behavior/AjaxBehavior.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/behavior/AjaxBehavior.java diff --git a/impl/src/main/java/jakarta/faces/component/behavior/Behavior.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/behavior/Behavior.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/behavior/Behavior.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/behavior/Behavior.java diff --git a/impl/src/main/java/jakarta/faces/component/behavior/BehaviorBase.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/behavior/BehaviorBase.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/behavior/BehaviorBase.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/behavior/BehaviorBase.java diff --git a/impl/src/main/java/jakarta/faces/component/behavior/ClientBehavior.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/behavior/ClientBehavior.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/behavior/ClientBehavior.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/behavior/ClientBehavior.java diff --git a/impl/src/main/java/jakarta/faces/component/behavior/ClientBehaviorBase.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/behavior/ClientBehaviorBase.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/behavior/ClientBehaviorBase.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/behavior/ClientBehaviorBase.java diff --git a/impl/src/main/java/jakarta/faces/component/behavior/ClientBehaviorContext.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/behavior/ClientBehaviorContext.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/behavior/ClientBehaviorContext.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/behavior/ClientBehaviorContext.java diff --git a/impl/src/main/java/jakarta/faces/component/behavior/ClientBehaviorHint.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/behavior/ClientBehaviorHint.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/behavior/ClientBehaviorHint.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/behavior/ClientBehaviorHint.java diff --git a/impl/src/main/java/jakarta/faces/component/behavior/ClientBehaviorHolder.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/behavior/ClientBehaviorHolder.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/behavior/ClientBehaviorHolder.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/behavior/ClientBehaviorHolder.java diff --git a/impl/src/main/java/jakarta/faces/component/behavior/FacesBehavior.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/behavior/FacesBehavior.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/behavior/FacesBehavior.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/behavior/FacesBehavior.java diff --git a/impl/src/main/java/jakarta/faces/component/html/HtmlBody.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlBody.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/html/HtmlBody.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlBody.java diff --git a/impl/src/main/java/jakarta/faces/component/html/HtmlColumn.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlColumn.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/html/HtmlColumn.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlColumn.java diff --git a/impl/src/main/java/jakarta/faces/component/html/HtmlCommandButton.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlCommandButton.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/html/HtmlCommandButton.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlCommandButton.java diff --git a/impl/src/main/java/jakarta/faces/component/html/HtmlCommandLink.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlCommandLink.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/html/HtmlCommandLink.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlCommandLink.java diff --git a/impl/src/main/java/jakarta/faces/component/html/HtmlCommandScript.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlCommandScript.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/html/HtmlCommandScript.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlCommandScript.java diff --git a/impl/src/main/java/jakarta/faces/component/html/HtmlComponentUtils.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlComponentUtils.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/html/HtmlComponentUtils.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlComponentUtils.java diff --git a/impl/src/main/java/jakarta/faces/component/html/HtmlDataTable.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlDataTable.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/html/HtmlDataTable.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlDataTable.java diff --git a/impl/src/main/java/jakarta/faces/component/html/HtmlDoctype.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlDoctype.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/html/HtmlDoctype.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlDoctype.java diff --git a/impl/src/main/java/jakarta/faces/component/html/HtmlForm.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlForm.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/html/HtmlForm.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlForm.java diff --git a/impl/src/main/java/jakarta/faces/component/html/HtmlGraphicImage.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlGraphicImage.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/html/HtmlGraphicImage.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlGraphicImage.java diff --git a/impl/src/main/java/jakarta/faces/component/html/HtmlHead.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlHead.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/html/HtmlHead.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlHead.java diff --git a/impl/src/main/java/jakarta/faces/component/html/HtmlInputFile.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlInputFile.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/html/HtmlInputFile.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlInputFile.java diff --git a/impl/src/main/java/jakarta/faces/component/html/HtmlInputHidden.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlInputHidden.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/html/HtmlInputHidden.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlInputHidden.java diff --git a/impl/src/main/java/jakarta/faces/component/html/HtmlInputSecret.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlInputSecret.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/html/HtmlInputSecret.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlInputSecret.java diff --git a/impl/src/main/java/jakarta/faces/component/html/HtmlInputText.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlInputText.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/html/HtmlInputText.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlInputText.java diff --git a/impl/src/main/java/jakarta/faces/component/html/HtmlInputTextarea.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlInputTextarea.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/html/HtmlInputTextarea.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlInputTextarea.java diff --git a/impl/src/main/java/jakarta/faces/component/html/HtmlMessage.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlMessage.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/html/HtmlMessage.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlMessage.java diff --git a/impl/src/main/java/jakarta/faces/component/html/HtmlMessages.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlMessages.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/html/HtmlMessages.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlMessages.java diff --git a/impl/src/main/java/jakarta/faces/component/html/HtmlOutcomeTargetButton.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlOutcomeTargetButton.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/html/HtmlOutcomeTargetButton.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlOutcomeTargetButton.java diff --git a/impl/src/main/java/jakarta/faces/component/html/HtmlOutcomeTargetLink.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlOutcomeTargetLink.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/html/HtmlOutcomeTargetLink.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlOutcomeTargetLink.java diff --git a/impl/src/main/java/jakarta/faces/component/html/HtmlOutputFormat.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlOutputFormat.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/html/HtmlOutputFormat.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlOutputFormat.java diff --git a/impl/src/main/java/jakarta/faces/component/html/HtmlOutputLabel.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlOutputLabel.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/html/HtmlOutputLabel.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlOutputLabel.java diff --git a/impl/src/main/java/jakarta/faces/component/html/HtmlOutputLink.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlOutputLink.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/html/HtmlOutputLink.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlOutputLink.java diff --git a/impl/src/main/java/jakarta/faces/component/html/HtmlOutputText.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlOutputText.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/html/HtmlOutputText.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlOutputText.java diff --git a/impl/src/main/java/jakarta/faces/component/html/HtmlPanelGrid.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlPanelGrid.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/html/HtmlPanelGrid.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlPanelGrid.java diff --git a/impl/src/main/java/jakarta/faces/component/html/HtmlPanelGroup.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlPanelGroup.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/html/HtmlPanelGroup.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlPanelGroup.java diff --git a/impl/src/main/java/jakarta/faces/component/html/HtmlSelectBooleanCheckbox.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlSelectBooleanCheckbox.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/html/HtmlSelectBooleanCheckbox.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlSelectBooleanCheckbox.java diff --git a/impl/src/main/java/jakarta/faces/component/html/HtmlSelectManyCheckbox.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlSelectManyCheckbox.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/html/HtmlSelectManyCheckbox.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlSelectManyCheckbox.java diff --git a/impl/src/main/java/jakarta/faces/component/html/HtmlSelectManyListbox.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlSelectManyListbox.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/html/HtmlSelectManyListbox.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlSelectManyListbox.java diff --git a/impl/src/main/java/jakarta/faces/component/html/HtmlSelectManyMenu.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlSelectManyMenu.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/html/HtmlSelectManyMenu.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlSelectManyMenu.java diff --git a/impl/src/main/java/jakarta/faces/component/html/HtmlSelectOneListbox.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlSelectOneListbox.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/html/HtmlSelectOneListbox.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlSelectOneListbox.java diff --git a/impl/src/main/java/jakarta/faces/component/html/HtmlSelectOneMenu.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlSelectOneMenu.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/html/HtmlSelectOneMenu.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlSelectOneMenu.java diff --git a/impl/src/main/java/jakarta/faces/component/html/HtmlSelectOneRadio.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlSelectOneRadio.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/html/HtmlSelectOneRadio.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/html/HtmlSelectOneRadio.java diff --git a/impl/src/main/java/jakarta/faces/component/html/package-info.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/html/package-info.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/html/package-info.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/html/package-info.java diff --git a/impl/src/main/java/jakarta/faces/component/search/ComponentNotFoundException.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/search/ComponentNotFoundException.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/search/ComponentNotFoundException.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/search/ComponentNotFoundException.java diff --git a/impl/src/main/java/jakarta/faces/component/search/SearchExpressionContext.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/search/SearchExpressionContext.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/search/SearchExpressionContext.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/search/SearchExpressionContext.java diff --git a/impl/src/main/java/jakarta/faces/component/search/SearchExpressionContextFactory.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/search/SearchExpressionContextFactory.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/search/SearchExpressionContextFactory.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/search/SearchExpressionContextFactory.java diff --git a/impl/src/main/java/jakarta/faces/component/search/SearchExpressionHandler.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/search/SearchExpressionHandler.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/search/SearchExpressionHandler.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/search/SearchExpressionHandler.java diff --git a/impl/src/main/java/jakarta/faces/component/search/SearchExpressionHandlerWrapper.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/search/SearchExpressionHandlerWrapper.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/search/SearchExpressionHandlerWrapper.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/search/SearchExpressionHandlerWrapper.java diff --git a/impl/src/main/java/jakarta/faces/component/search/SearchExpressionHint.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/search/SearchExpressionHint.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/search/SearchExpressionHint.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/search/SearchExpressionHint.java diff --git a/impl/src/main/java/jakarta/faces/component/search/SearchKeywordContext.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/search/SearchKeywordContext.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/search/SearchKeywordContext.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/search/SearchKeywordContext.java diff --git a/impl/src/main/java/jakarta/faces/component/search/SearchKeywordResolver.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/search/SearchKeywordResolver.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/search/SearchKeywordResolver.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/search/SearchKeywordResolver.java diff --git a/impl/src/main/java/jakarta/faces/component/search/UntargetableComponent.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/search/UntargetableComponent.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/search/UntargetableComponent.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/search/UntargetableComponent.java diff --git a/impl/src/main/java/jakarta/faces/component/visit/VisitCallback.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/visit/VisitCallback.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/visit/VisitCallback.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/visit/VisitCallback.java diff --git a/impl/src/main/java/jakarta/faces/component/visit/VisitContext.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/visit/VisitContext.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/visit/VisitContext.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/visit/VisitContext.java diff --git a/impl/src/main/java/jakarta/faces/component/visit/VisitContextFactory.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/visit/VisitContextFactory.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/visit/VisitContextFactory.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/visit/VisitContextFactory.java diff --git a/impl/src/main/java/jakarta/faces/component/visit/VisitContextWrapper.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/visit/VisitContextWrapper.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/visit/VisitContextWrapper.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/visit/VisitContextWrapper.java diff --git a/impl/src/main/java/jakarta/faces/component/visit/VisitHint.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/visit/VisitHint.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/visit/VisitHint.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/visit/VisitHint.java diff --git a/impl/src/main/java/jakarta/faces/component/visit/VisitResult.java b/jakarta.faces-api/src/main/java/jakarta/faces/component/visit/VisitResult.java similarity index 100% rename from impl/src/main/java/jakarta/faces/component/visit/VisitResult.java rename to jakarta.faces-api/src/main/java/jakarta/faces/component/visit/VisitResult.java diff --git a/impl/src/main/java/jakarta/faces/context/ExceptionHandler.java b/jakarta.faces-api/src/main/java/jakarta/faces/context/ExceptionHandler.java similarity index 100% rename from impl/src/main/java/jakarta/faces/context/ExceptionHandler.java rename to jakarta.faces-api/src/main/java/jakarta/faces/context/ExceptionHandler.java diff --git a/impl/src/main/java/jakarta/faces/context/ExceptionHandlerFactory.java b/jakarta.faces-api/src/main/java/jakarta/faces/context/ExceptionHandlerFactory.java similarity index 100% rename from impl/src/main/java/jakarta/faces/context/ExceptionHandlerFactory.java rename to jakarta.faces-api/src/main/java/jakarta/faces/context/ExceptionHandlerFactory.java diff --git a/impl/src/main/java/jakarta/faces/context/ExceptionHandlerWrapper.java b/jakarta.faces-api/src/main/java/jakarta/faces/context/ExceptionHandlerWrapper.java similarity index 100% rename from impl/src/main/java/jakarta/faces/context/ExceptionHandlerWrapper.java rename to jakarta.faces-api/src/main/java/jakarta/faces/context/ExceptionHandlerWrapper.java diff --git a/impl/src/main/java/jakarta/faces/context/ExternalContext.java b/jakarta.faces-api/src/main/java/jakarta/faces/context/ExternalContext.java similarity index 100% rename from impl/src/main/java/jakarta/faces/context/ExternalContext.java rename to jakarta.faces-api/src/main/java/jakarta/faces/context/ExternalContext.java diff --git a/impl/src/main/java/jakarta/faces/context/ExternalContextFactory.java b/jakarta.faces-api/src/main/java/jakarta/faces/context/ExternalContextFactory.java similarity index 100% rename from impl/src/main/java/jakarta/faces/context/ExternalContextFactory.java rename to jakarta.faces-api/src/main/java/jakarta/faces/context/ExternalContextFactory.java diff --git a/impl/src/main/java/jakarta/faces/context/ExternalContextWrapper.java b/jakarta.faces-api/src/main/java/jakarta/faces/context/ExternalContextWrapper.java similarity index 100% rename from impl/src/main/java/jakarta/faces/context/ExternalContextWrapper.java rename to jakarta.faces-api/src/main/java/jakarta/faces/context/ExternalContextWrapper.java diff --git a/impl/src/main/java/jakarta/faces/context/FacesContext.java b/jakarta.faces-api/src/main/java/jakarta/faces/context/FacesContext.java similarity index 99% rename from impl/src/main/java/jakarta/faces/context/FacesContext.java rename to jakarta.faces-api/src/main/java/jakarta/faces/context/FacesContext.java index acb0e3edc1..f5733be12f 100644 --- a/impl/src/main/java/jakarta/faces/context/FacesContext.java +++ b/jakarta.faces-api/src/main/java/jakarta/faces/context/FacesContext.java @@ -23,7 +23,8 @@ import java.util.Map; import java.util.concurrent.ConcurrentHashMap; -import com.sun.faces.config.InitFacesContext; +// RESOLVE THIS +// import com.sun.faces.config.InitFacesContext; import jakarta.el.ELContext; import jakarta.faces.FactoryFinder; import jakarta.faces.application.Application; @@ -64,7 +65,8 @@ public abstract class FacesContext { private boolean isCreatedFromValidFactory = true; private static final ConcurrentHashMap threadInitContext = new ConcurrentHashMap<>(2); - private static final ConcurrentHashMap initContextServletContext = new ConcurrentHashMap<>(2); +// RESOLVE THIS +// private static final ConcurrentHashMap initContextServletContext = new ConcurrentHashMap<>(2); /** * Default constructor. diff --git a/impl/src/main/java/jakarta/faces/context/FacesContextFactory.java b/jakarta.faces-api/src/main/java/jakarta/faces/context/FacesContextFactory.java similarity index 100% rename from impl/src/main/java/jakarta/faces/context/FacesContextFactory.java rename to jakarta.faces-api/src/main/java/jakarta/faces/context/FacesContextFactory.java diff --git a/impl/src/main/java/jakarta/faces/context/FacesContextWrapper.java b/jakarta.faces-api/src/main/java/jakarta/faces/context/FacesContextWrapper.java similarity index 100% rename from impl/src/main/java/jakarta/faces/context/FacesContextWrapper.java rename to jakarta.faces-api/src/main/java/jakarta/faces/context/FacesContextWrapper.java diff --git a/impl/src/main/java/jakarta/faces/context/Flash.java b/jakarta.faces-api/src/main/java/jakarta/faces/context/Flash.java similarity index 100% rename from impl/src/main/java/jakarta/faces/context/Flash.java rename to jakarta.faces-api/src/main/java/jakarta/faces/context/Flash.java diff --git a/impl/src/main/java/jakarta/faces/context/FlashFactory.java b/jakarta.faces-api/src/main/java/jakarta/faces/context/FlashFactory.java similarity index 100% rename from impl/src/main/java/jakarta/faces/context/FlashFactory.java rename to jakarta.faces-api/src/main/java/jakarta/faces/context/FlashFactory.java diff --git a/impl/src/main/java/jakarta/faces/context/FlashWrapper.java b/jakarta.faces-api/src/main/java/jakarta/faces/context/FlashWrapper.java similarity index 100% rename from impl/src/main/java/jakarta/faces/context/FlashWrapper.java rename to jakarta.faces-api/src/main/java/jakarta/faces/context/FlashWrapper.java diff --git a/impl/src/main/java/jakarta/faces/context/PartialResponseWriter.java b/jakarta.faces-api/src/main/java/jakarta/faces/context/PartialResponseWriter.java similarity index 100% rename from impl/src/main/java/jakarta/faces/context/PartialResponseWriter.java rename to jakarta.faces-api/src/main/java/jakarta/faces/context/PartialResponseWriter.java diff --git a/impl/src/main/java/jakarta/faces/context/PartialViewContext.java b/jakarta.faces-api/src/main/java/jakarta/faces/context/PartialViewContext.java similarity index 100% rename from impl/src/main/java/jakarta/faces/context/PartialViewContext.java rename to jakarta.faces-api/src/main/java/jakarta/faces/context/PartialViewContext.java diff --git a/impl/src/main/java/jakarta/faces/context/PartialViewContextFactory.java b/jakarta.faces-api/src/main/java/jakarta/faces/context/PartialViewContextFactory.java similarity index 100% rename from impl/src/main/java/jakarta/faces/context/PartialViewContextFactory.java rename to jakarta.faces-api/src/main/java/jakarta/faces/context/PartialViewContextFactory.java diff --git a/impl/src/main/java/jakarta/faces/context/PartialViewContextWrapper.java b/jakarta.faces-api/src/main/java/jakarta/faces/context/PartialViewContextWrapper.java similarity index 100% rename from impl/src/main/java/jakarta/faces/context/PartialViewContextWrapper.java rename to jakarta.faces-api/src/main/java/jakarta/faces/context/PartialViewContextWrapper.java diff --git a/impl/src/main/java/jakarta/faces/context/ResponseStream.java b/jakarta.faces-api/src/main/java/jakarta/faces/context/ResponseStream.java similarity index 100% rename from impl/src/main/java/jakarta/faces/context/ResponseStream.java rename to jakarta.faces-api/src/main/java/jakarta/faces/context/ResponseStream.java diff --git a/impl/src/main/java/jakarta/faces/context/ResponseWriter.java b/jakarta.faces-api/src/main/java/jakarta/faces/context/ResponseWriter.java similarity index 100% rename from impl/src/main/java/jakarta/faces/context/ResponseWriter.java rename to jakarta.faces-api/src/main/java/jakarta/faces/context/ResponseWriter.java diff --git a/impl/src/main/java/jakarta/faces/context/ResponseWriterWrapper.java b/jakarta.faces-api/src/main/java/jakarta/faces/context/ResponseWriterWrapper.java similarity index 100% rename from impl/src/main/java/jakarta/faces/context/ResponseWriterWrapper.java rename to jakarta.faces-api/src/main/java/jakarta/faces/context/ResponseWriterWrapper.java diff --git a/impl/src/main/java/jakarta/faces/convert/BigDecimalConverter.java b/jakarta.faces-api/src/main/java/jakarta/faces/convert/BigDecimalConverter.java similarity index 100% rename from impl/src/main/java/jakarta/faces/convert/BigDecimalConverter.java rename to jakarta.faces-api/src/main/java/jakarta/faces/convert/BigDecimalConverter.java diff --git a/impl/src/main/java/jakarta/faces/convert/BigIntegerConverter.java b/jakarta.faces-api/src/main/java/jakarta/faces/convert/BigIntegerConverter.java similarity index 100% rename from impl/src/main/java/jakarta/faces/convert/BigIntegerConverter.java rename to jakarta.faces-api/src/main/java/jakarta/faces/convert/BigIntegerConverter.java diff --git a/impl/src/main/java/jakarta/faces/convert/BooleanConverter.java b/jakarta.faces-api/src/main/java/jakarta/faces/convert/BooleanConverter.java similarity index 100% rename from impl/src/main/java/jakarta/faces/convert/BooleanConverter.java rename to jakarta.faces-api/src/main/java/jakarta/faces/convert/BooleanConverter.java diff --git a/impl/src/main/java/jakarta/faces/convert/ByteConverter.java b/jakarta.faces-api/src/main/java/jakarta/faces/convert/ByteConverter.java similarity index 100% rename from impl/src/main/java/jakarta/faces/convert/ByteConverter.java rename to jakarta.faces-api/src/main/java/jakarta/faces/convert/ByteConverter.java diff --git a/impl/src/main/java/jakarta/faces/convert/CharacterConverter.java b/jakarta.faces-api/src/main/java/jakarta/faces/convert/CharacterConverter.java similarity index 100% rename from impl/src/main/java/jakarta/faces/convert/CharacterConverter.java rename to jakarta.faces-api/src/main/java/jakarta/faces/convert/CharacterConverter.java diff --git a/impl/src/main/java/jakarta/faces/convert/Converter.java b/jakarta.faces-api/src/main/java/jakarta/faces/convert/Converter.java similarity index 100% rename from impl/src/main/java/jakarta/faces/convert/Converter.java rename to jakarta.faces-api/src/main/java/jakarta/faces/convert/Converter.java diff --git a/impl/src/main/java/jakarta/faces/convert/ConverterException.java b/jakarta.faces-api/src/main/java/jakarta/faces/convert/ConverterException.java similarity index 100% rename from impl/src/main/java/jakarta/faces/convert/ConverterException.java rename to jakarta.faces-api/src/main/java/jakarta/faces/convert/ConverterException.java diff --git a/impl/src/main/java/jakarta/faces/convert/DateTimeConverter.java b/jakarta.faces-api/src/main/java/jakarta/faces/convert/DateTimeConverter.java similarity index 100% rename from impl/src/main/java/jakarta/faces/convert/DateTimeConverter.java rename to jakarta.faces-api/src/main/java/jakarta/faces/convert/DateTimeConverter.java diff --git a/impl/src/main/java/jakarta/faces/convert/DoubleConverter.java b/jakarta.faces-api/src/main/java/jakarta/faces/convert/DoubleConverter.java similarity index 100% rename from impl/src/main/java/jakarta/faces/convert/DoubleConverter.java rename to jakarta.faces-api/src/main/java/jakarta/faces/convert/DoubleConverter.java diff --git a/impl/src/main/java/jakarta/faces/convert/EnumConverter.java b/jakarta.faces-api/src/main/java/jakarta/faces/convert/EnumConverter.java similarity index 100% rename from impl/src/main/java/jakarta/faces/convert/EnumConverter.java rename to jakarta.faces-api/src/main/java/jakarta/faces/convert/EnumConverter.java diff --git a/impl/src/main/java/jakarta/faces/convert/FacesConverter.java b/jakarta.faces-api/src/main/java/jakarta/faces/convert/FacesConverter.java similarity index 100% rename from impl/src/main/java/jakarta/faces/convert/FacesConverter.java rename to jakarta.faces-api/src/main/java/jakarta/faces/convert/FacesConverter.java diff --git a/impl/src/main/java/jakarta/faces/convert/FloatConverter.java b/jakarta.faces-api/src/main/java/jakarta/faces/convert/FloatConverter.java similarity index 100% rename from impl/src/main/java/jakarta/faces/convert/FloatConverter.java rename to jakarta.faces-api/src/main/java/jakarta/faces/convert/FloatConverter.java diff --git a/impl/src/main/java/jakarta/faces/convert/IntegerConverter.java b/jakarta.faces-api/src/main/java/jakarta/faces/convert/IntegerConverter.java similarity index 100% rename from impl/src/main/java/jakarta/faces/convert/IntegerConverter.java rename to jakarta.faces-api/src/main/java/jakarta/faces/convert/IntegerConverter.java diff --git a/impl/src/main/java/jakarta/faces/convert/LongConverter.java b/jakarta.faces-api/src/main/java/jakarta/faces/convert/LongConverter.java similarity index 100% rename from impl/src/main/java/jakarta/faces/convert/LongConverter.java rename to jakarta.faces-api/src/main/java/jakarta/faces/convert/LongConverter.java diff --git a/impl/src/main/java/jakarta/faces/convert/MessageFactory.java b/jakarta.faces-api/src/main/java/jakarta/faces/convert/MessageFactory.java similarity index 100% rename from impl/src/main/java/jakarta/faces/convert/MessageFactory.java rename to jakarta.faces-api/src/main/java/jakarta/faces/convert/MessageFactory.java diff --git a/impl/src/main/java/jakarta/faces/convert/NumberConverter.java b/jakarta.faces-api/src/main/java/jakarta/faces/convert/NumberConverter.java similarity index 100% rename from impl/src/main/java/jakarta/faces/convert/NumberConverter.java rename to jakarta.faces-api/src/main/java/jakarta/faces/convert/NumberConverter.java diff --git a/impl/src/main/java/jakarta/faces/convert/ShortConverter.java b/jakarta.faces-api/src/main/java/jakarta/faces/convert/ShortConverter.java similarity index 100% rename from impl/src/main/java/jakarta/faces/convert/ShortConverter.java rename to jakarta.faces-api/src/main/java/jakarta/faces/convert/ShortConverter.java diff --git a/impl/src/main/java/jakarta/faces/convert/UUIDConverter.java b/jakarta.faces-api/src/main/java/jakarta/faces/convert/UUIDConverter.java similarity index 100% rename from impl/src/main/java/jakarta/faces/convert/UUIDConverter.java rename to jakarta.faces-api/src/main/java/jakarta/faces/convert/UUIDConverter.java diff --git a/impl/src/main/java/jakarta/faces/el/CompositeComponentExpressionHolder.java b/jakarta.faces-api/src/main/java/jakarta/faces/el/CompositeComponentExpressionHolder.java similarity index 100% rename from impl/src/main/java/jakarta/faces/el/CompositeComponentExpressionHolder.java rename to jakarta.faces-api/src/main/java/jakarta/faces/el/CompositeComponentExpressionHolder.java diff --git a/impl/src/main/java/jakarta/faces/event/AbortProcessingException.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/AbortProcessingException.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/AbortProcessingException.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/AbortProcessingException.java diff --git a/impl/src/main/java/jakarta/faces/event/ActionEvent.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/ActionEvent.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/ActionEvent.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/ActionEvent.java diff --git a/impl/src/main/java/jakarta/faces/event/ActionListener.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/ActionListener.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/ActionListener.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/ActionListener.java diff --git a/impl/src/main/java/jakarta/faces/event/ActionListenerWrapper.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/ActionListenerWrapper.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/ActionListenerWrapper.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/ActionListenerWrapper.java diff --git a/impl/src/main/java/jakarta/faces/event/AjaxBehaviorEvent.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/AjaxBehaviorEvent.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/AjaxBehaviorEvent.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/AjaxBehaviorEvent.java diff --git a/impl/src/main/java/jakarta/faces/event/AjaxBehaviorListener.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/AjaxBehaviorListener.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/AjaxBehaviorListener.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/AjaxBehaviorListener.java diff --git a/impl/src/main/java/jakarta/faces/event/BehaviorEvent.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/BehaviorEvent.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/BehaviorEvent.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/BehaviorEvent.java diff --git a/impl/src/main/java/jakarta/faces/event/BehaviorListener.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/BehaviorListener.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/BehaviorListener.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/BehaviorListener.java diff --git a/impl/src/main/java/jakarta/faces/event/ComponentSystemEvent.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/ComponentSystemEvent.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/ComponentSystemEvent.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/ComponentSystemEvent.java diff --git a/impl/src/main/java/jakarta/faces/event/ComponentSystemEventListener.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/ComponentSystemEventListener.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/ComponentSystemEventListener.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/ComponentSystemEventListener.java diff --git a/impl/src/main/java/jakarta/faces/event/ExceptionQueuedEvent.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/ExceptionQueuedEvent.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/ExceptionQueuedEvent.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/ExceptionQueuedEvent.java diff --git a/impl/src/main/java/jakarta/faces/event/ExceptionQueuedEventContext.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/ExceptionQueuedEventContext.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/ExceptionQueuedEventContext.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/ExceptionQueuedEventContext.java diff --git a/impl/src/main/java/jakarta/faces/event/FacesEvent.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/FacesEvent.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/FacesEvent.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/FacesEvent.java diff --git a/impl/src/main/java/jakarta/faces/event/FacesListener.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/FacesListener.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/FacesListener.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/FacesListener.java diff --git a/impl/src/main/java/jakarta/faces/event/ListenerFor.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/ListenerFor.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/ListenerFor.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/ListenerFor.java diff --git a/impl/src/main/java/jakarta/faces/event/ListenersFor.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/ListenersFor.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/ListenersFor.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/ListenersFor.java diff --git a/impl/src/main/java/jakarta/faces/event/MethodExpressionActionListener.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/MethodExpressionActionListener.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/MethodExpressionActionListener.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/MethodExpressionActionListener.java diff --git a/impl/src/main/java/jakarta/faces/event/MethodExpressionValueChangeListener.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/MethodExpressionValueChangeListener.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/MethodExpressionValueChangeListener.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/MethodExpressionValueChangeListener.java diff --git a/impl/src/main/java/jakarta/faces/event/NamedEvent.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/NamedEvent.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/NamedEvent.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/NamedEvent.java diff --git a/impl/src/main/java/jakarta/faces/event/PhaseEvent.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/PhaseEvent.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/PhaseEvent.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/PhaseEvent.java diff --git a/impl/src/main/java/jakarta/faces/event/PhaseId.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/PhaseId.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/PhaseId.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/PhaseId.java diff --git a/impl/src/main/java/jakarta/faces/event/PhaseListener.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/PhaseListener.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/PhaseListener.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/PhaseListener.java diff --git a/impl/src/main/java/jakarta/faces/event/PostAddToViewEvent.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/PostAddToViewEvent.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/PostAddToViewEvent.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/PostAddToViewEvent.java diff --git a/impl/src/main/java/jakarta/faces/event/PostConstructApplicationEvent.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/PostConstructApplicationEvent.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/PostConstructApplicationEvent.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/PostConstructApplicationEvent.java diff --git a/impl/src/main/java/jakarta/faces/event/PostConstructCustomScopeEvent.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/PostConstructCustomScopeEvent.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/PostConstructCustomScopeEvent.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/PostConstructCustomScopeEvent.java diff --git a/impl/src/main/java/jakarta/faces/event/PostConstructViewMapEvent.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/PostConstructViewMapEvent.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/PostConstructViewMapEvent.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/PostConstructViewMapEvent.java diff --git a/impl/src/main/java/jakarta/faces/event/PostKeepFlashValueEvent.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/PostKeepFlashValueEvent.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/PostKeepFlashValueEvent.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/PostKeepFlashValueEvent.java diff --git a/impl/src/main/java/jakarta/faces/event/PostPutFlashValueEvent.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/PostPutFlashValueEvent.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/PostPutFlashValueEvent.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/PostPutFlashValueEvent.java diff --git a/impl/src/main/java/jakarta/faces/event/PostRenderViewEvent.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/PostRenderViewEvent.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/PostRenderViewEvent.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/PostRenderViewEvent.java diff --git a/impl/src/main/java/jakarta/faces/event/PostRestoreStateEvent.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/PostRestoreStateEvent.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/PostRestoreStateEvent.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/PostRestoreStateEvent.java diff --git a/impl/src/main/java/jakarta/faces/event/PostValidateEvent.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/PostValidateEvent.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/PostValidateEvent.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/PostValidateEvent.java diff --git a/impl/src/main/java/jakarta/faces/event/PreClearFlashEvent.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/PreClearFlashEvent.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/PreClearFlashEvent.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/PreClearFlashEvent.java diff --git a/impl/src/main/java/jakarta/faces/event/PreDestroyApplicationEvent.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/PreDestroyApplicationEvent.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/PreDestroyApplicationEvent.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/PreDestroyApplicationEvent.java diff --git a/impl/src/main/java/jakarta/faces/event/PreDestroyCustomScopeEvent.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/PreDestroyCustomScopeEvent.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/PreDestroyCustomScopeEvent.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/PreDestroyCustomScopeEvent.java diff --git a/impl/src/main/java/jakarta/faces/event/PreDestroyViewMapEvent.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/PreDestroyViewMapEvent.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/PreDestroyViewMapEvent.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/PreDestroyViewMapEvent.java diff --git a/impl/src/main/java/jakarta/faces/event/PreRemoveFlashValueEvent.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/PreRemoveFlashValueEvent.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/PreRemoveFlashValueEvent.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/PreRemoveFlashValueEvent.java diff --git a/impl/src/main/java/jakarta/faces/event/PreRemoveFromViewEvent.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/PreRemoveFromViewEvent.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/PreRemoveFromViewEvent.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/PreRemoveFromViewEvent.java diff --git a/impl/src/main/java/jakarta/faces/event/PreRenderComponentEvent.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/PreRenderComponentEvent.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/PreRenderComponentEvent.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/PreRenderComponentEvent.java diff --git a/impl/src/main/java/jakarta/faces/event/PreRenderViewEvent.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/PreRenderViewEvent.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/PreRenderViewEvent.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/PreRenderViewEvent.java diff --git a/impl/src/main/java/jakarta/faces/event/PreValidateEvent.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/PreValidateEvent.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/PreValidateEvent.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/PreValidateEvent.java diff --git a/impl/src/main/java/jakarta/faces/event/ScopeContext.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/ScopeContext.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/ScopeContext.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/ScopeContext.java diff --git a/impl/src/main/java/jakarta/faces/event/SystemEvent.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/SystemEvent.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/SystemEvent.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/SystemEvent.java diff --git a/impl/src/main/java/jakarta/faces/event/SystemEventListener.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/SystemEventListener.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/SystemEventListener.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/SystemEventListener.java diff --git a/impl/src/main/java/jakarta/faces/event/SystemEventListenerHolder.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/SystemEventListenerHolder.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/SystemEventListenerHolder.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/SystemEventListenerHolder.java diff --git a/impl/src/main/java/jakarta/faces/event/ValueChangeEvent.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/ValueChangeEvent.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/ValueChangeEvent.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/ValueChangeEvent.java diff --git a/impl/src/main/java/jakarta/faces/event/ValueChangeListener.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/ValueChangeListener.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/ValueChangeListener.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/ValueChangeListener.java diff --git a/impl/src/main/java/jakarta/faces/event/ViewMapListener.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/ViewMapListener.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/ViewMapListener.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/ViewMapListener.java diff --git a/impl/src/main/java/jakarta/faces/event/WebsocketEvent.java b/jakarta.faces-api/src/main/java/jakarta/faces/event/WebsocketEvent.java similarity index 100% rename from impl/src/main/java/jakarta/faces/event/WebsocketEvent.java rename to jakarta.faces-api/src/main/java/jakarta/faces/event/WebsocketEvent.java diff --git a/impl/src/main/java/jakarta/faces/flow/Flow.java b/jakarta.faces-api/src/main/java/jakarta/faces/flow/Flow.java similarity index 100% rename from impl/src/main/java/jakarta/faces/flow/Flow.java rename to jakarta.faces-api/src/main/java/jakarta/faces/flow/Flow.java diff --git a/impl/src/main/java/jakarta/faces/flow/FlowCallNode.java b/jakarta.faces-api/src/main/java/jakarta/faces/flow/FlowCallNode.java similarity index 100% rename from impl/src/main/java/jakarta/faces/flow/FlowCallNode.java rename to jakarta.faces-api/src/main/java/jakarta/faces/flow/FlowCallNode.java diff --git a/impl/src/main/java/jakarta/faces/flow/FlowHandler.java b/jakarta.faces-api/src/main/java/jakarta/faces/flow/FlowHandler.java similarity index 100% rename from impl/src/main/java/jakarta/faces/flow/FlowHandler.java rename to jakarta.faces-api/src/main/java/jakarta/faces/flow/FlowHandler.java diff --git a/impl/src/main/java/jakarta/faces/flow/FlowHandlerFactory.java b/jakarta.faces-api/src/main/java/jakarta/faces/flow/FlowHandlerFactory.java similarity index 100% rename from impl/src/main/java/jakarta/faces/flow/FlowHandlerFactory.java rename to jakarta.faces-api/src/main/java/jakarta/faces/flow/FlowHandlerFactory.java diff --git a/impl/src/main/java/jakarta/faces/flow/FlowHandlerFactoryWrapper.java b/jakarta.faces-api/src/main/java/jakarta/faces/flow/FlowHandlerFactoryWrapper.java similarity index 100% rename from impl/src/main/java/jakarta/faces/flow/FlowHandlerFactoryWrapper.java rename to jakarta.faces-api/src/main/java/jakarta/faces/flow/FlowHandlerFactoryWrapper.java diff --git a/impl/src/main/java/jakarta/faces/flow/FlowNode.java b/jakarta.faces-api/src/main/java/jakarta/faces/flow/FlowNode.java similarity index 100% rename from impl/src/main/java/jakarta/faces/flow/FlowNode.java rename to jakarta.faces-api/src/main/java/jakarta/faces/flow/FlowNode.java diff --git a/impl/src/main/java/jakarta/faces/flow/FlowScoped.java b/jakarta.faces-api/src/main/java/jakarta/faces/flow/FlowScoped.java similarity index 100% rename from impl/src/main/java/jakarta/faces/flow/FlowScoped.java rename to jakarta.faces-api/src/main/java/jakarta/faces/flow/FlowScoped.java diff --git a/impl/src/main/java/jakarta/faces/flow/MethodCallNode.java b/jakarta.faces-api/src/main/java/jakarta/faces/flow/MethodCallNode.java similarity index 100% rename from impl/src/main/java/jakarta/faces/flow/MethodCallNode.java rename to jakarta.faces-api/src/main/java/jakarta/faces/flow/MethodCallNode.java diff --git a/impl/src/main/java/jakarta/faces/flow/Parameter.java b/jakarta.faces-api/src/main/java/jakarta/faces/flow/Parameter.java similarity index 100% rename from impl/src/main/java/jakarta/faces/flow/Parameter.java rename to jakarta.faces-api/src/main/java/jakarta/faces/flow/Parameter.java diff --git a/impl/src/main/java/jakarta/faces/flow/ReturnNode.java b/jakarta.faces-api/src/main/java/jakarta/faces/flow/ReturnNode.java similarity index 100% rename from impl/src/main/java/jakarta/faces/flow/ReturnNode.java rename to jakarta.faces-api/src/main/java/jakarta/faces/flow/ReturnNode.java diff --git a/impl/src/main/java/jakarta/faces/flow/SwitchCase.java b/jakarta.faces-api/src/main/java/jakarta/faces/flow/SwitchCase.java similarity index 100% rename from impl/src/main/java/jakarta/faces/flow/SwitchCase.java rename to jakarta.faces-api/src/main/java/jakarta/faces/flow/SwitchCase.java diff --git a/impl/src/main/java/jakarta/faces/flow/SwitchNode.java b/jakarta.faces-api/src/main/java/jakarta/faces/flow/SwitchNode.java similarity index 100% rename from impl/src/main/java/jakarta/faces/flow/SwitchNode.java rename to jakarta.faces-api/src/main/java/jakarta/faces/flow/SwitchNode.java diff --git a/impl/src/main/java/jakarta/faces/flow/ViewNode.java b/jakarta.faces-api/src/main/java/jakarta/faces/flow/ViewNode.java similarity index 100% rename from impl/src/main/java/jakarta/faces/flow/ViewNode.java rename to jakarta.faces-api/src/main/java/jakarta/faces/flow/ViewNode.java diff --git a/impl/src/main/java/jakarta/faces/flow/builder/FlowBuilder.java b/jakarta.faces-api/src/main/java/jakarta/faces/flow/builder/FlowBuilder.java similarity index 100% rename from impl/src/main/java/jakarta/faces/flow/builder/FlowBuilder.java rename to jakarta.faces-api/src/main/java/jakarta/faces/flow/builder/FlowBuilder.java diff --git a/impl/src/main/java/jakarta/faces/flow/builder/FlowBuilderParameter.java b/jakarta.faces-api/src/main/java/jakarta/faces/flow/builder/FlowBuilderParameter.java similarity index 100% rename from impl/src/main/java/jakarta/faces/flow/builder/FlowBuilderParameter.java rename to jakarta.faces-api/src/main/java/jakarta/faces/flow/builder/FlowBuilderParameter.java diff --git a/impl/src/main/java/jakarta/faces/flow/builder/FlowCallBuilder.java b/jakarta.faces-api/src/main/java/jakarta/faces/flow/builder/FlowCallBuilder.java similarity index 100% rename from impl/src/main/java/jakarta/faces/flow/builder/FlowCallBuilder.java rename to jakarta.faces-api/src/main/java/jakarta/faces/flow/builder/FlowCallBuilder.java diff --git a/impl/src/main/java/jakarta/faces/flow/builder/FlowDefinition.java b/jakarta.faces-api/src/main/java/jakarta/faces/flow/builder/FlowDefinition.java similarity index 100% rename from impl/src/main/java/jakarta/faces/flow/builder/FlowDefinition.java rename to jakarta.faces-api/src/main/java/jakarta/faces/flow/builder/FlowDefinition.java diff --git a/impl/src/main/java/jakarta/faces/flow/builder/MethodCallBuilder.java b/jakarta.faces-api/src/main/java/jakarta/faces/flow/builder/MethodCallBuilder.java similarity index 100% rename from impl/src/main/java/jakarta/faces/flow/builder/MethodCallBuilder.java rename to jakarta.faces-api/src/main/java/jakarta/faces/flow/builder/MethodCallBuilder.java diff --git a/impl/src/main/java/jakarta/faces/flow/builder/NavigationCaseBuilder.java b/jakarta.faces-api/src/main/java/jakarta/faces/flow/builder/NavigationCaseBuilder.java similarity index 100% rename from impl/src/main/java/jakarta/faces/flow/builder/NavigationCaseBuilder.java rename to jakarta.faces-api/src/main/java/jakarta/faces/flow/builder/NavigationCaseBuilder.java diff --git a/impl/src/main/java/jakarta/faces/flow/builder/NodeBuilder.java b/jakarta.faces-api/src/main/java/jakarta/faces/flow/builder/NodeBuilder.java similarity index 100% rename from impl/src/main/java/jakarta/faces/flow/builder/NodeBuilder.java rename to jakarta.faces-api/src/main/java/jakarta/faces/flow/builder/NodeBuilder.java diff --git a/impl/src/main/java/jakarta/faces/flow/builder/ReturnBuilder.java b/jakarta.faces-api/src/main/java/jakarta/faces/flow/builder/ReturnBuilder.java similarity index 100% rename from impl/src/main/java/jakarta/faces/flow/builder/ReturnBuilder.java rename to jakarta.faces-api/src/main/java/jakarta/faces/flow/builder/ReturnBuilder.java diff --git a/impl/src/main/java/jakarta/faces/flow/builder/SwitchBuilder.java b/jakarta.faces-api/src/main/java/jakarta/faces/flow/builder/SwitchBuilder.java similarity index 100% rename from impl/src/main/java/jakarta/faces/flow/builder/SwitchBuilder.java rename to jakarta.faces-api/src/main/java/jakarta/faces/flow/builder/SwitchBuilder.java diff --git a/impl/src/main/java/jakarta/faces/flow/builder/SwitchCaseBuilder.java b/jakarta.faces-api/src/main/java/jakarta/faces/flow/builder/SwitchCaseBuilder.java similarity index 100% rename from impl/src/main/java/jakarta/faces/flow/builder/SwitchCaseBuilder.java rename to jakarta.faces-api/src/main/java/jakarta/faces/flow/builder/SwitchCaseBuilder.java diff --git a/impl/src/main/java/jakarta/faces/flow/builder/ViewBuilder.java b/jakarta.faces-api/src/main/java/jakarta/faces/flow/builder/ViewBuilder.java similarity index 100% rename from impl/src/main/java/jakarta/faces/flow/builder/ViewBuilder.java rename to jakarta.faces-api/src/main/java/jakarta/faces/flow/builder/ViewBuilder.java diff --git a/impl/src/main/java/jakarta/faces/lifecycle/ClientWindow.java b/jakarta.faces-api/src/main/java/jakarta/faces/lifecycle/ClientWindow.java similarity index 100% rename from impl/src/main/java/jakarta/faces/lifecycle/ClientWindow.java rename to jakarta.faces-api/src/main/java/jakarta/faces/lifecycle/ClientWindow.java diff --git a/impl/src/main/java/jakarta/faces/lifecycle/ClientWindowFactory.java b/jakarta.faces-api/src/main/java/jakarta/faces/lifecycle/ClientWindowFactory.java similarity index 100% rename from impl/src/main/java/jakarta/faces/lifecycle/ClientWindowFactory.java rename to jakarta.faces-api/src/main/java/jakarta/faces/lifecycle/ClientWindowFactory.java diff --git a/impl/src/main/java/jakarta/faces/lifecycle/ClientWindowScoped.java b/jakarta.faces-api/src/main/java/jakarta/faces/lifecycle/ClientWindowScoped.java similarity index 100% rename from impl/src/main/java/jakarta/faces/lifecycle/ClientWindowScoped.java rename to jakarta.faces-api/src/main/java/jakarta/faces/lifecycle/ClientWindowScoped.java diff --git a/impl/src/main/java/jakarta/faces/lifecycle/ClientWindowWrapper.java b/jakarta.faces-api/src/main/java/jakarta/faces/lifecycle/ClientWindowWrapper.java similarity index 100% rename from impl/src/main/java/jakarta/faces/lifecycle/ClientWindowWrapper.java rename to jakarta.faces-api/src/main/java/jakarta/faces/lifecycle/ClientWindowWrapper.java diff --git a/impl/src/main/java/jakarta/faces/lifecycle/Lifecycle.java b/jakarta.faces-api/src/main/java/jakarta/faces/lifecycle/Lifecycle.java similarity index 100% rename from impl/src/main/java/jakarta/faces/lifecycle/Lifecycle.java rename to jakarta.faces-api/src/main/java/jakarta/faces/lifecycle/Lifecycle.java diff --git a/impl/src/main/java/jakarta/faces/lifecycle/LifecycleFactory.java b/jakarta.faces-api/src/main/java/jakarta/faces/lifecycle/LifecycleFactory.java similarity index 100% rename from impl/src/main/java/jakarta/faces/lifecycle/LifecycleFactory.java rename to jakarta.faces-api/src/main/java/jakarta/faces/lifecycle/LifecycleFactory.java diff --git a/impl/src/main/java/jakarta/faces/lifecycle/LifecycleWrapper.java b/jakarta.faces-api/src/main/java/jakarta/faces/lifecycle/LifecycleWrapper.java similarity index 100% rename from impl/src/main/java/jakarta/faces/lifecycle/LifecycleWrapper.java rename to jakarta.faces-api/src/main/java/jakarta/faces/lifecycle/LifecycleWrapper.java diff --git a/impl/src/main/java/jakarta/faces/model/ArrayDataModel.java b/jakarta.faces-api/src/main/java/jakarta/faces/model/ArrayDataModel.java similarity index 100% rename from impl/src/main/java/jakarta/faces/model/ArrayDataModel.java rename to jakarta.faces-api/src/main/java/jakarta/faces/model/ArrayDataModel.java diff --git a/impl/src/main/java/jakarta/faces/model/CollectionDataModel.java b/jakarta.faces-api/src/main/java/jakarta/faces/model/CollectionDataModel.java similarity index 100% rename from impl/src/main/java/jakarta/faces/model/CollectionDataModel.java rename to jakarta.faces-api/src/main/java/jakarta/faces/model/CollectionDataModel.java diff --git a/impl/src/main/java/jakarta/faces/model/DataModel.java b/jakarta.faces-api/src/main/java/jakarta/faces/model/DataModel.java similarity index 100% rename from impl/src/main/java/jakarta/faces/model/DataModel.java rename to jakarta.faces-api/src/main/java/jakarta/faces/model/DataModel.java diff --git a/impl/src/main/java/jakarta/faces/model/DataModelEvent.java b/jakarta.faces-api/src/main/java/jakarta/faces/model/DataModelEvent.java similarity index 100% rename from impl/src/main/java/jakarta/faces/model/DataModelEvent.java rename to jakarta.faces-api/src/main/java/jakarta/faces/model/DataModelEvent.java diff --git a/impl/src/main/java/jakarta/faces/model/DataModelListener.java b/jakarta.faces-api/src/main/java/jakarta/faces/model/DataModelListener.java similarity index 100% rename from impl/src/main/java/jakarta/faces/model/DataModelListener.java rename to jakarta.faces-api/src/main/java/jakarta/faces/model/DataModelListener.java diff --git a/impl/src/main/java/jakarta/faces/model/FacesDataModel.java b/jakarta.faces-api/src/main/java/jakarta/faces/model/FacesDataModel.java similarity index 100% rename from impl/src/main/java/jakarta/faces/model/FacesDataModel.java rename to jakarta.faces-api/src/main/java/jakarta/faces/model/FacesDataModel.java diff --git a/impl/src/main/java/jakarta/faces/model/IterableDataModel.java b/jakarta.faces-api/src/main/java/jakarta/faces/model/IterableDataModel.java similarity index 100% rename from impl/src/main/java/jakarta/faces/model/IterableDataModel.java rename to jakarta.faces-api/src/main/java/jakarta/faces/model/IterableDataModel.java diff --git a/impl/src/main/java/jakarta/faces/model/ListDataModel.java b/jakarta.faces-api/src/main/java/jakarta/faces/model/ListDataModel.java similarity index 100% rename from impl/src/main/java/jakarta/faces/model/ListDataModel.java rename to jakarta.faces-api/src/main/java/jakarta/faces/model/ListDataModel.java diff --git a/impl/src/main/java/jakarta/faces/model/NoRowAvailableException.java b/jakarta.faces-api/src/main/java/jakarta/faces/model/NoRowAvailableException.java similarity index 100% rename from impl/src/main/java/jakarta/faces/model/NoRowAvailableException.java rename to jakarta.faces-api/src/main/java/jakarta/faces/model/NoRowAvailableException.java diff --git a/impl/src/main/java/jakarta/faces/model/ResultSetDataModel.java b/jakarta.faces-api/src/main/java/jakarta/faces/model/ResultSetDataModel.java similarity index 100% rename from impl/src/main/java/jakarta/faces/model/ResultSetDataModel.java rename to jakarta.faces-api/src/main/java/jakarta/faces/model/ResultSetDataModel.java diff --git a/impl/src/main/java/jakarta/faces/model/ScalarDataModel.java b/jakarta.faces-api/src/main/java/jakarta/faces/model/ScalarDataModel.java similarity index 100% rename from impl/src/main/java/jakarta/faces/model/ScalarDataModel.java rename to jakarta.faces-api/src/main/java/jakarta/faces/model/ScalarDataModel.java diff --git a/impl/src/main/java/jakarta/faces/model/SelectItem.java b/jakarta.faces-api/src/main/java/jakarta/faces/model/SelectItem.java similarity index 100% rename from impl/src/main/java/jakarta/faces/model/SelectItem.java rename to jakarta.faces-api/src/main/java/jakarta/faces/model/SelectItem.java diff --git a/impl/src/main/java/jakarta/faces/model/SelectItemGroup.java b/jakarta.faces-api/src/main/java/jakarta/faces/model/SelectItemGroup.java similarity index 100% rename from impl/src/main/java/jakarta/faces/model/SelectItemGroup.java rename to jakarta.faces-api/src/main/java/jakarta/faces/model/SelectItemGroup.java diff --git a/impl/src/main/java/jakarta/faces/push/Push.java b/jakarta.faces-api/src/main/java/jakarta/faces/push/Push.java similarity index 100% rename from impl/src/main/java/jakarta/faces/push/Push.java rename to jakarta.faces-api/src/main/java/jakarta/faces/push/Push.java diff --git a/impl/src/main/java/jakarta/faces/push/PushContext.java b/jakarta.faces-api/src/main/java/jakarta/faces/push/PushContext.java similarity index 100% rename from impl/src/main/java/jakarta/faces/push/PushContext.java rename to jakarta.faces-api/src/main/java/jakarta/faces/push/PushContext.java diff --git a/impl/src/main/java/jakarta/faces/render/ClientBehaviorRenderer.java b/jakarta.faces-api/src/main/java/jakarta/faces/render/ClientBehaviorRenderer.java similarity index 100% rename from impl/src/main/java/jakarta/faces/render/ClientBehaviorRenderer.java rename to jakarta.faces-api/src/main/java/jakarta/faces/render/ClientBehaviorRenderer.java diff --git a/impl/src/main/java/jakarta/faces/render/FacesBehaviorRenderer.java b/jakarta.faces-api/src/main/java/jakarta/faces/render/FacesBehaviorRenderer.java similarity index 100% rename from impl/src/main/java/jakarta/faces/render/FacesBehaviorRenderer.java rename to jakarta.faces-api/src/main/java/jakarta/faces/render/FacesBehaviorRenderer.java diff --git a/impl/src/main/java/jakarta/faces/render/FacesRenderer.java b/jakarta.faces-api/src/main/java/jakarta/faces/render/FacesRenderer.java similarity index 100% rename from impl/src/main/java/jakarta/faces/render/FacesRenderer.java rename to jakarta.faces-api/src/main/java/jakarta/faces/render/FacesRenderer.java diff --git a/impl/src/main/java/jakarta/faces/render/RenderKit.java b/jakarta.faces-api/src/main/java/jakarta/faces/render/RenderKit.java similarity index 100% rename from impl/src/main/java/jakarta/faces/render/RenderKit.java rename to jakarta.faces-api/src/main/java/jakarta/faces/render/RenderKit.java diff --git a/impl/src/main/java/jakarta/faces/render/RenderKitFactory.java b/jakarta.faces-api/src/main/java/jakarta/faces/render/RenderKitFactory.java similarity index 100% rename from impl/src/main/java/jakarta/faces/render/RenderKitFactory.java rename to jakarta.faces-api/src/main/java/jakarta/faces/render/RenderKitFactory.java diff --git a/impl/src/main/java/jakarta/faces/render/RenderKitWrapper.java b/jakarta.faces-api/src/main/java/jakarta/faces/render/RenderKitWrapper.java similarity index 100% rename from impl/src/main/java/jakarta/faces/render/RenderKitWrapper.java rename to jakarta.faces-api/src/main/java/jakarta/faces/render/RenderKitWrapper.java diff --git a/impl/src/main/java/jakarta/faces/render/Renderer.java b/jakarta.faces-api/src/main/java/jakarta/faces/render/Renderer.java similarity index 100% rename from impl/src/main/java/jakarta/faces/render/Renderer.java rename to jakarta.faces-api/src/main/java/jakarta/faces/render/Renderer.java diff --git a/impl/src/main/java/jakarta/faces/render/RendererWrapper.java b/jakarta.faces-api/src/main/java/jakarta/faces/render/RendererWrapper.java similarity index 100% rename from impl/src/main/java/jakarta/faces/render/RendererWrapper.java rename to jakarta.faces-api/src/main/java/jakarta/faces/render/RendererWrapper.java diff --git a/impl/src/main/java/jakarta/faces/render/ResponseStateManager.java b/jakarta.faces-api/src/main/java/jakarta/faces/render/ResponseStateManager.java similarity index 100% rename from impl/src/main/java/jakarta/faces/render/ResponseStateManager.java rename to jakarta.faces-api/src/main/java/jakarta/faces/render/ResponseStateManager.java diff --git a/impl/src/main/java/jakarta/faces/validator/BeanValidator.java b/jakarta.faces-api/src/main/java/jakarta/faces/validator/BeanValidator.java similarity index 100% rename from impl/src/main/java/jakarta/faces/validator/BeanValidator.java rename to jakarta.faces-api/src/main/java/jakarta/faces/validator/BeanValidator.java diff --git a/impl/src/main/java/jakarta/faces/validator/DoubleRangeValidator.java b/jakarta.faces-api/src/main/java/jakarta/faces/validator/DoubleRangeValidator.java similarity index 100% rename from impl/src/main/java/jakarta/faces/validator/DoubleRangeValidator.java rename to jakarta.faces-api/src/main/java/jakarta/faces/validator/DoubleRangeValidator.java diff --git a/impl/src/main/java/jakarta/faces/validator/FacesValidator.java b/jakarta.faces-api/src/main/java/jakarta/faces/validator/FacesValidator.java similarity index 100% rename from impl/src/main/java/jakarta/faces/validator/FacesValidator.java rename to jakarta.faces-api/src/main/java/jakarta/faces/validator/FacesValidator.java diff --git a/impl/src/main/java/jakarta/faces/validator/LengthValidator.java b/jakarta.faces-api/src/main/java/jakarta/faces/validator/LengthValidator.java similarity index 100% rename from impl/src/main/java/jakarta/faces/validator/LengthValidator.java rename to jakarta.faces-api/src/main/java/jakarta/faces/validator/LengthValidator.java diff --git a/impl/src/main/java/jakarta/faces/validator/LongRangeValidator.java b/jakarta.faces-api/src/main/java/jakarta/faces/validator/LongRangeValidator.java similarity index 100% rename from impl/src/main/java/jakarta/faces/validator/LongRangeValidator.java rename to jakarta.faces-api/src/main/java/jakarta/faces/validator/LongRangeValidator.java diff --git a/impl/src/main/java/jakarta/faces/validator/MessageFactory.java b/jakarta.faces-api/src/main/java/jakarta/faces/validator/MessageFactory.java similarity index 100% rename from impl/src/main/java/jakarta/faces/validator/MessageFactory.java rename to jakarta.faces-api/src/main/java/jakarta/faces/validator/MessageFactory.java diff --git a/impl/src/main/java/jakarta/faces/validator/MethodExpressionValidator.java b/jakarta.faces-api/src/main/java/jakarta/faces/validator/MethodExpressionValidator.java similarity index 100% rename from impl/src/main/java/jakarta/faces/validator/MethodExpressionValidator.java rename to jakarta.faces-api/src/main/java/jakarta/faces/validator/MethodExpressionValidator.java diff --git a/impl/src/main/java/jakarta/faces/validator/MultiFieldValidationUtils.java b/jakarta.faces-api/src/main/java/jakarta/faces/validator/MultiFieldValidationUtils.java similarity index 100% rename from impl/src/main/java/jakarta/faces/validator/MultiFieldValidationUtils.java rename to jakarta.faces-api/src/main/java/jakarta/faces/validator/MultiFieldValidationUtils.java diff --git a/impl/src/main/java/jakarta/faces/validator/RegexValidator.java b/jakarta.faces-api/src/main/java/jakarta/faces/validator/RegexValidator.java similarity index 100% rename from impl/src/main/java/jakarta/faces/validator/RegexValidator.java rename to jakarta.faces-api/src/main/java/jakarta/faces/validator/RegexValidator.java diff --git a/impl/src/main/java/jakarta/faces/validator/RequiredValidator.java b/jakarta.faces-api/src/main/java/jakarta/faces/validator/RequiredValidator.java similarity index 100% rename from impl/src/main/java/jakarta/faces/validator/RequiredValidator.java rename to jakarta.faces-api/src/main/java/jakarta/faces/validator/RequiredValidator.java diff --git a/impl/src/main/java/jakarta/faces/validator/Validator.java b/jakarta.faces-api/src/main/java/jakarta/faces/validator/Validator.java similarity index 100% rename from impl/src/main/java/jakarta/faces/validator/Validator.java rename to jakarta.faces-api/src/main/java/jakarta/faces/validator/Validator.java diff --git a/impl/src/main/java/jakarta/faces/validator/ValidatorException.java b/jakarta.faces-api/src/main/java/jakarta/faces/validator/ValidatorException.java similarity index 100% rename from impl/src/main/java/jakarta/faces/validator/ValidatorException.java rename to jakarta.faces-api/src/main/java/jakarta/faces/validator/ValidatorException.java diff --git a/impl/src/main/java/jakarta/faces/view/ActionSource2AttachedObjectHandler.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/ActionSource2AttachedObjectHandler.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/ActionSource2AttachedObjectHandler.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/ActionSource2AttachedObjectHandler.java diff --git a/impl/src/main/java/jakarta/faces/view/ActionSource2AttachedObjectTarget.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/ActionSource2AttachedObjectTarget.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/ActionSource2AttachedObjectTarget.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/ActionSource2AttachedObjectTarget.java diff --git a/impl/src/main/java/jakarta/faces/view/ActionSourceAttachedObjectHandler.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/ActionSourceAttachedObjectHandler.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/ActionSourceAttachedObjectHandler.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/ActionSourceAttachedObjectHandler.java diff --git a/impl/src/main/java/jakarta/faces/view/ActionSourceAttachedObjectTarget.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/ActionSourceAttachedObjectTarget.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/ActionSourceAttachedObjectTarget.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/ActionSourceAttachedObjectTarget.java diff --git a/impl/src/main/java/jakarta/faces/view/AttachedObjectHandler.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/AttachedObjectHandler.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/AttachedObjectHandler.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/AttachedObjectHandler.java diff --git a/impl/src/main/java/jakarta/faces/view/AttachedObjectTarget.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/AttachedObjectTarget.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/AttachedObjectTarget.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/AttachedObjectTarget.java diff --git a/impl/src/main/java/jakarta/faces/view/BehaviorHolderAttachedObjectHandler.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/BehaviorHolderAttachedObjectHandler.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/BehaviorHolderAttachedObjectHandler.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/BehaviorHolderAttachedObjectHandler.java diff --git a/impl/src/main/java/jakarta/faces/view/BehaviorHolderAttachedObjectTarget.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/BehaviorHolderAttachedObjectTarget.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/BehaviorHolderAttachedObjectTarget.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/BehaviorHolderAttachedObjectTarget.java diff --git a/impl/src/main/java/jakarta/faces/view/EditableValueHolderAttachedObjectHandler.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/EditableValueHolderAttachedObjectHandler.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/EditableValueHolderAttachedObjectHandler.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/EditableValueHolderAttachedObjectHandler.java diff --git a/impl/src/main/java/jakarta/faces/view/EditableValueHolderAttachedObjectTarget.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/EditableValueHolderAttachedObjectTarget.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/EditableValueHolderAttachedObjectTarget.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/EditableValueHolderAttachedObjectTarget.java diff --git a/impl/src/main/java/jakarta/faces/view/Location.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/Location.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/Location.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/Location.java diff --git a/impl/src/main/java/jakarta/faces/view/StateManagementStrategy.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/StateManagementStrategy.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/StateManagementStrategy.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/StateManagementStrategy.java diff --git a/impl/src/main/java/jakarta/faces/view/ValueHolderAttachedObjectHandler.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/ValueHolderAttachedObjectHandler.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/ValueHolderAttachedObjectHandler.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/ValueHolderAttachedObjectHandler.java diff --git a/impl/src/main/java/jakarta/faces/view/ValueHolderAttachedObjectTarget.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/ValueHolderAttachedObjectTarget.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/ValueHolderAttachedObjectTarget.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/ValueHolderAttachedObjectTarget.java diff --git a/impl/src/main/java/jakarta/faces/view/ViewDeclarationLanguage.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/ViewDeclarationLanguage.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/ViewDeclarationLanguage.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/ViewDeclarationLanguage.java diff --git a/impl/src/main/java/jakarta/faces/view/ViewDeclarationLanguageFactory.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/ViewDeclarationLanguageFactory.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/ViewDeclarationLanguageFactory.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/ViewDeclarationLanguageFactory.java diff --git a/impl/src/main/java/jakarta/faces/view/ViewDeclarationLanguageWrapper.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/ViewDeclarationLanguageWrapper.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/ViewDeclarationLanguageWrapper.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/ViewDeclarationLanguageWrapper.java diff --git a/impl/src/main/java/jakarta/faces/view/ViewMetadata.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/ViewMetadata.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/ViewMetadata.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/ViewMetadata.java diff --git a/impl/src/main/java/jakarta/faces/view/ViewScoped.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/ViewScoped.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/ViewScoped.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/ViewScoped.java diff --git a/impl/src/main/java/jakarta/faces/view/facelets/AttributeHandler.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/AttributeHandler.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/facelets/AttributeHandler.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/AttributeHandler.java diff --git a/impl/src/main/java/jakarta/faces/view/facelets/BehaviorConfig.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/BehaviorConfig.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/facelets/BehaviorConfig.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/BehaviorConfig.java diff --git a/impl/src/main/java/jakarta/faces/view/facelets/BehaviorHandler.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/BehaviorHandler.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/facelets/BehaviorHandler.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/BehaviorHandler.java diff --git a/impl/src/main/java/jakarta/faces/view/facelets/ComponentConfig.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/ComponentConfig.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/facelets/ComponentConfig.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/ComponentConfig.java diff --git a/impl/src/main/java/jakarta/faces/view/facelets/ComponentHandler.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/ComponentHandler.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/facelets/ComponentHandler.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/ComponentHandler.java diff --git a/impl/src/main/java/jakarta/faces/view/facelets/CompositeFaceletHandler.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/CompositeFaceletHandler.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/facelets/CompositeFaceletHandler.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/CompositeFaceletHandler.java diff --git a/impl/src/main/java/jakarta/faces/view/facelets/ConverterConfig.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/ConverterConfig.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/facelets/ConverterConfig.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/ConverterConfig.java diff --git a/impl/src/main/java/jakarta/faces/view/facelets/ConverterHandler.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/ConverterHandler.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/facelets/ConverterHandler.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/ConverterHandler.java diff --git a/impl/src/main/java/jakarta/faces/view/facelets/DelegatingMetaTagHandler.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/DelegatingMetaTagHandler.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/facelets/DelegatingMetaTagHandler.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/DelegatingMetaTagHandler.java diff --git a/impl/src/main/java/jakarta/faces/view/facelets/Facelet.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/Facelet.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/facelets/Facelet.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/Facelet.java diff --git a/impl/src/main/java/jakarta/faces/view/facelets/FaceletCache.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/FaceletCache.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/facelets/FaceletCache.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/FaceletCache.java diff --git a/impl/src/main/java/jakarta/faces/view/facelets/FaceletCacheFactory.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/FaceletCacheFactory.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/facelets/FaceletCacheFactory.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/FaceletCacheFactory.java diff --git a/impl/src/main/java/jakarta/faces/view/facelets/FaceletContext.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/FaceletContext.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/facelets/FaceletContext.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/FaceletContext.java diff --git a/impl/src/main/java/jakarta/faces/view/facelets/FaceletException.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/FaceletException.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/facelets/FaceletException.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/FaceletException.java diff --git a/impl/src/main/java/jakarta/faces/view/facelets/FaceletHandler.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/FaceletHandler.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/facelets/FaceletHandler.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/FaceletHandler.java diff --git a/impl/src/main/java/jakarta/faces/view/facelets/FaceletsAttachedObjectHandler.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/FaceletsAttachedObjectHandler.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/facelets/FaceletsAttachedObjectHandler.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/FaceletsAttachedObjectHandler.java diff --git a/impl/src/main/java/jakarta/faces/view/facelets/FacetHandler.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/FacetHandler.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/facelets/FacetHandler.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/FacetHandler.java diff --git a/impl/src/main/java/jakarta/faces/view/facelets/MetaRule.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/MetaRule.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/facelets/MetaRule.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/MetaRule.java diff --git a/impl/src/main/java/jakarta/faces/view/facelets/MetaRuleset.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/MetaRuleset.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/facelets/MetaRuleset.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/MetaRuleset.java diff --git a/impl/src/main/java/jakarta/faces/view/facelets/MetaTagHandler.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/MetaTagHandler.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/facelets/MetaTagHandler.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/MetaTagHandler.java diff --git a/impl/src/main/java/jakarta/faces/view/facelets/Metadata.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/Metadata.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/facelets/Metadata.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/Metadata.java diff --git a/impl/src/main/java/jakarta/faces/view/facelets/MetadataTarget.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/MetadataTarget.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/facelets/MetadataTarget.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/MetadataTarget.java diff --git a/impl/src/main/java/jakarta/faces/view/facelets/Tag.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/Tag.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/facelets/Tag.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/Tag.java diff --git a/impl/src/main/java/jakarta/faces/view/facelets/TagAttribute.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/TagAttribute.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/facelets/TagAttribute.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/TagAttribute.java diff --git a/impl/src/main/java/jakarta/faces/view/facelets/TagAttributeException.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/TagAttributeException.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/facelets/TagAttributeException.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/TagAttributeException.java diff --git a/impl/src/main/java/jakarta/faces/view/facelets/TagAttributes.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/TagAttributes.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/facelets/TagAttributes.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/TagAttributes.java diff --git a/impl/src/main/java/jakarta/faces/view/facelets/TagConfig.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/TagConfig.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/facelets/TagConfig.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/TagConfig.java diff --git a/impl/src/main/java/jakarta/faces/view/facelets/TagDecorator.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/TagDecorator.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/facelets/TagDecorator.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/TagDecorator.java diff --git a/impl/src/main/java/jakarta/faces/view/facelets/TagException.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/TagException.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/facelets/TagException.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/TagException.java diff --git a/impl/src/main/java/jakarta/faces/view/facelets/TagHandler.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/TagHandler.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/facelets/TagHandler.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/TagHandler.java diff --git a/impl/src/main/java/jakarta/faces/view/facelets/TagHandlerDelegate.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/TagHandlerDelegate.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/facelets/TagHandlerDelegate.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/TagHandlerDelegate.java diff --git a/impl/src/main/java/jakarta/faces/view/facelets/TagHandlerDelegateFactory.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/TagHandlerDelegateFactory.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/facelets/TagHandlerDelegateFactory.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/TagHandlerDelegateFactory.java diff --git a/impl/src/main/java/jakarta/faces/view/facelets/TextHandler.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/TextHandler.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/facelets/TextHandler.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/TextHandler.java diff --git a/impl/src/main/java/jakarta/faces/view/facelets/ValidatorConfig.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/ValidatorConfig.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/facelets/ValidatorConfig.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/ValidatorConfig.java diff --git a/impl/src/main/java/jakarta/faces/view/facelets/ValidatorHandler.java b/jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/ValidatorHandler.java similarity index 100% rename from impl/src/main/java/jakarta/faces/view/facelets/ValidatorHandler.java rename to jakarta.faces-api/src/main/java/jakarta/faces/view/facelets/ValidatorHandler.java diff --git a/impl/src/main/java/jakarta/faces/webapp/FacesServlet.java b/jakarta.faces-api/src/main/java/jakarta/faces/webapp/FacesServlet.java similarity index 100% rename from impl/src/main/java/jakarta/faces/webapp/FacesServlet.java rename to jakarta.faces-api/src/main/java/jakarta/faces/webapp/FacesServlet.java diff --git a/impl/src/main/resources/jakarta/faces/LogStrings.properties b/jakarta.faces-api/src/main/resources/jakarta/faces/LogStrings.properties similarity index 100% rename from impl/src/main/resources/jakarta/faces/LogStrings.properties rename to jakarta.faces-api/src/main/resources/jakarta/faces/LogStrings.properties diff --git a/impl/src/main/resources/jakarta/faces/LogStrings_de.properties b/jakarta.faces-api/src/main/resources/jakarta/faces/LogStrings_de.properties similarity index 100% rename from impl/src/main/resources/jakarta/faces/LogStrings_de.properties rename to jakarta.faces-api/src/main/resources/jakarta/faces/LogStrings_de.properties diff --git a/impl/src/main/resources/jakarta/faces/LogStrings_es.properties b/jakarta.faces-api/src/main/resources/jakarta/faces/LogStrings_es.properties similarity index 100% rename from impl/src/main/resources/jakarta/faces/LogStrings_es.properties rename to jakarta.faces-api/src/main/resources/jakarta/faces/LogStrings_es.properties diff --git a/impl/src/main/resources/jakarta/faces/LogStrings_fr.properties b/jakarta.faces-api/src/main/resources/jakarta/faces/LogStrings_fr.properties similarity index 100% rename from impl/src/main/resources/jakarta/faces/LogStrings_fr.properties rename to jakarta.faces-api/src/main/resources/jakarta/faces/LogStrings_fr.properties diff --git a/impl/src/main/resources/jakarta/faces/LogStrings_ja.properties b/jakarta.faces-api/src/main/resources/jakarta/faces/LogStrings_ja.properties similarity index 100% rename from impl/src/main/resources/jakarta/faces/LogStrings_ja.properties rename to jakarta.faces-api/src/main/resources/jakarta/faces/LogStrings_ja.properties diff --git a/impl/src/main/resources/jakarta/faces/LogStrings_ko.properties b/jakarta.faces-api/src/main/resources/jakarta/faces/LogStrings_ko.properties similarity index 100% rename from impl/src/main/resources/jakarta/faces/LogStrings_ko.properties rename to jakarta.faces-api/src/main/resources/jakarta/faces/LogStrings_ko.properties diff --git a/impl/src/main/resources/jakarta/faces/LogStrings_pt_BR.properties b/jakarta.faces-api/src/main/resources/jakarta/faces/LogStrings_pt_BR.properties similarity index 100% rename from impl/src/main/resources/jakarta/faces/LogStrings_pt_BR.properties rename to jakarta.faces-api/src/main/resources/jakarta/faces/LogStrings_pt_BR.properties diff --git a/impl/src/main/resources/jakarta/faces/LogStrings_zh_CN.properties b/jakarta.faces-api/src/main/resources/jakarta/faces/LogStrings_zh_CN.properties similarity index 100% rename from impl/src/main/resources/jakarta/faces/LogStrings_zh_CN.properties rename to jakarta.faces-api/src/main/resources/jakarta/faces/LogStrings_zh_CN.properties diff --git a/impl/src/main/resources/jakarta/faces/LogStrings_zh_HK.properties b/jakarta.faces-api/src/main/resources/jakarta/faces/LogStrings_zh_HK.properties similarity index 100% rename from impl/src/main/resources/jakarta/faces/LogStrings_zh_HK.properties rename to jakarta.faces-api/src/main/resources/jakarta/faces/LogStrings_zh_HK.properties diff --git a/impl/src/main/resources/jakarta/faces/LogStrings_zh_TW.properties b/jakarta.faces-api/src/main/resources/jakarta/faces/LogStrings_zh_TW.properties similarity index 100% rename from impl/src/main/resources/jakarta/faces/LogStrings_zh_TW.properties rename to jakarta.faces-api/src/main/resources/jakarta/faces/LogStrings_zh_TW.properties diff --git a/impl/src/main/resources/jakarta/faces/Messages.properties b/jakarta.faces-api/src/main/resources/jakarta/faces/Messages.properties similarity index 100% rename from impl/src/main/resources/jakarta/faces/Messages.properties rename to jakarta.faces-api/src/main/resources/jakarta/faces/Messages.properties diff --git a/impl/src/main/resources/jakarta/faces/Messages_de.properties b/jakarta.faces-api/src/main/resources/jakarta/faces/Messages_de.properties similarity index 100% rename from impl/src/main/resources/jakarta/faces/Messages_de.properties rename to jakarta.faces-api/src/main/resources/jakarta/faces/Messages_de.properties diff --git a/impl/src/main/resources/jakarta/faces/Messages_en.properties b/jakarta.faces-api/src/main/resources/jakarta/faces/Messages_en.properties similarity index 100% rename from impl/src/main/resources/jakarta/faces/Messages_en.properties rename to jakarta.faces-api/src/main/resources/jakarta/faces/Messages_en.properties diff --git a/impl/src/main/resources/jakarta/faces/Messages_es.properties b/jakarta.faces-api/src/main/resources/jakarta/faces/Messages_es.properties similarity index 100% rename from impl/src/main/resources/jakarta/faces/Messages_es.properties rename to jakarta.faces-api/src/main/resources/jakarta/faces/Messages_es.properties diff --git a/impl/src/main/resources/jakarta/faces/Messages_fr.properties b/jakarta.faces-api/src/main/resources/jakarta/faces/Messages_fr.properties similarity index 100% rename from impl/src/main/resources/jakarta/faces/Messages_fr.properties rename to jakarta.faces-api/src/main/resources/jakarta/faces/Messages_fr.properties diff --git a/impl/src/main/resources/jakarta/faces/Messages_ja.properties b/jakarta.faces-api/src/main/resources/jakarta/faces/Messages_ja.properties similarity index 100% rename from impl/src/main/resources/jakarta/faces/Messages_ja.properties rename to jakarta.faces-api/src/main/resources/jakarta/faces/Messages_ja.properties diff --git a/impl/src/main/resources/jakarta/faces/Messages_ko.properties b/jakarta.faces-api/src/main/resources/jakarta/faces/Messages_ko.properties similarity index 100% rename from impl/src/main/resources/jakarta/faces/Messages_ko.properties rename to jakarta.faces-api/src/main/resources/jakarta/faces/Messages_ko.properties diff --git a/impl/src/main/resources/jakarta/faces/Messages_pt_BR.properties b/jakarta.faces-api/src/main/resources/jakarta/faces/Messages_pt_BR.properties similarity index 100% rename from impl/src/main/resources/jakarta/faces/Messages_pt_BR.properties rename to jakarta.faces-api/src/main/resources/jakarta/faces/Messages_pt_BR.properties diff --git a/impl/src/main/resources/jakarta/faces/Messages_zh_CN.properties b/jakarta.faces-api/src/main/resources/jakarta/faces/Messages_zh_CN.properties similarity index 100% rename from impl/src/main/resources/jakarta/faces/Messages_zh_CN.properties rename to jakarta.faces-api/src/main/resources/jakarta/faces/Messages_zh_CN.properties diff --git a/impl/src/main/resources/jakarta/faces/Messages_zh_HK.properties b/jakarta.faces-api/src/main/resources/jakarta/faces/Messages_zh_HK.properties similarity index 100% rename from impl/src/main/resources/jakarta/faces/Messages_zh_HK.properties rename to jakarta.faces-api/src/main/resources/jakarta/faces/Messages_zh_HK.properties diff --git a/impl/src/main/resources/jakarta/faces/Messages_zh_TW.properties b/jakarta.faces-api/src/main/resources/jakarta/faces/Messages_zh_TW.properties similarity index 100% rename from impl/src/main/resources/jakarta/faces/Messages_zh_TW.properties rename to jakarta.faces-api/src/main/resources/jakarta/faces/Messages_zh_TW.properties diff --git a/impl/src/test/java/jakarta/faces/FacesWrapperTestCase.java b/jakarta.faces-api/src/test/java/jakarta/faces/FacesWrapperTestCase.java similarity index 100% rename from impl/src/test/java/jakarta/faces/FacesWrapperTestCase.java rename to jakarta.faces-api/src/test/java/jakarta/faces/FacesWrapperTestCase.java diff --git a/pom.xml b/pom.xml index 09581e2276..cb607d460e 100644 --- a/pom.xml +++ b/pom.xml @@ -51,7 +51,8 @@ impl action rest - + jakarta.faces-api + UTF-8