You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2015/04/01 00:45:19 UTC
svn commit: r1670509 - in /myfaces/core/trunk/impl/src:
main/java/org/apache/myfaces/config/
main/java/org/apache/myfaces/config/element/
main/java/org/apache/myfaces/config/impl/digester/
main/java/org/apache/myfaces/config/impl/digester/elements/ tes...
Author: lu4242
Date: Tue Mar 31 22:45:18 2015
New Revision: 1670509
URL: http://svn.apache.org/r1670509
Log:
MYFACES-3970 11.4.2.1 topic Each <contract-mapping> element can have one or more <contract> elements.
Added:
myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/config/impl/digister/contracts2.xml
- copied, changed from r1657660, myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/config/impl/digister/csrf-and-contracts.xml
Modified:
myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/FacesConfigurator.java
myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/element/ContractMapping.java
myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/impl/digester/DigesterFacesConfigUnmarshallerImpl.java
myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/impl/digester/elements/ContractMappingImpl.java
myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/config/impl/digister/DigesterFacesConfigUnmarshallerImplTest.java
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/FacesConfigurator.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/FacesConfigurator.java?rev=1670509&r1=1670508&r2=1670509&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/FacesConfigurator.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/FacesConfigurator.java Tue Mar 31 22:45:18 2015
@@ -894,9 +894,25 @@ public class FacesConfigurator
for (ContractMapping mapping : dispenser.getResourceLibraryContractMappings())
{
- String urlPattern = mapping.getUrlPattern();
- String[] contracts = StringUtils.trim(StringUtils.splitShortString(mapping.getContracts(), ' '));
- runtimeConfig.addContractMapping(urlPattern, contracts);
+ if (mapping.getUrlPattern() != null)
+ {
+ // Deprecated way
+ String urlPattern = mapping.getUrlPattern();
+ String[] contracts = StringUtils.trim(StringUtils.splitShortString(mapping.getContracts(), ' '));
+ runtimeConfig.addContractMapping(urlPattern, contracts);
+ }
+ else
+ {
+ List<String> urlMappingsList = mapping.getUrlPatternList();
+ for (String urlPattern: urlMappingsList)
+ {
+ for (String contract : mapping.getContractList())
+ {
+ String[] contracts = StringUtils.trim(StringUtils.splitShortString(contract, ' '));
+ runtimeConfig.addContractMapping(urlPattern, contracts);
+ }
+ }
+ }
}
this.setApplication(application);
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/element/ContractMapping.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/element/ContractMapping.java?rev=1670509&r1=1670508&r2=1670509&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/element/ContractMapping.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/element/ContractMapping.java Tue Mar 31 22:45:18 2015
@@ -19,6 +19,7 @@
package org.apache.myfaces.config.element;
import java.io.Serializable;
+import java.util.List;
/**
*
@@ -26,7 +27,21 @@ import java.io.Serializable;
*/
public abstract class ContractMapping implements Serializable
{
+ /**
+ * @deprecated
+ * @return
+ */
+ @Deprecated
public abstract String getUrlPattern();
+ /**
+ * @deprecated
+ * @return
+ */
+ @Deprecated
public abstract String getContracts();
+
+ public abstract List<String> getUrlPatternList();
+
+ public abstract List<String> getContractList();
}
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/impl/digester/DigesterFacesConfigUnmarshallerImpl.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/impl/digester/DigesterFacesConfigUnmarshallerImpl.java?rev=1670509&r1=1670508&r2=1670509&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/impl/digester/DigesterFacesConfigUnmarshallerImpl.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/impl/digester/DigesterFacesConfigUnmarshallerImpl.java Tue Mar 31 22:45:18 2015
@@ -132,9 +132,9 @@ public class DigesterFacesConfigUnmarsha
digester.addSetNext("faces-config/application/resource-library-contracts/contract-mapping",
"addResourceLibraryContractMapping");
digester.addCallMethod(
- "faces-config/application/resource-library-contracts/contract-mapping/url-pattern", "setUrlPattern", 0);
+ "faces-config/application/resource-library-contracts/contract-mapping/url-pattern", "addUrlPattern", 0);
digester.addCallMethod(
- "faces-config/application/resource-library-contracts/contract-mapping/contracts", "setContracts", 0);
+ "faces-config/application/resource-library-contracts/contract-mapping/contracts", "addContract", 0);
// 2.1 specific start
digester.addCallMethod("faces-config/factory/facelet-cache-factory", "addFaceletCacheFactory", 0);
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/impl/digester/elements/ContractMappingImpl.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/impl/digester/elements/ContractMappingImpl.java?rev=1670509&r1=1670508&r2=1670509&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/impl/digester/elements/ContractMappingImpl.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/impl/digester/elements/ContractMappingImpl.java Tue Mar 31 22:45:18 2015
@@ -18,6 +18,9 @@
*/
package org.apache.myfaces.config.impl.digester.elements;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
import org.apache.myfaces.config.element.ContractMapping;
/**
@@ -26,39 +29,73 @@ import org.apache.myfaces.config.element
*/
public class ContractMappingImpl extends ContractMapping
{
- private String urlPattern;
- private String contracts;
+ private List<String> urlPatternList;
+ private List<String> contractsList;
+
+ private transient List <String> unmodifiableUrlPatternList;
+ private transient List <String> unmodifiableContractsList;
/**
* @return the urlPattern
*/
- public String getUrlPattern()
+ public List<String> getUrlPatternList()
{
- return urlPattern;
+ if (urlPatternList == null)
+ {
+ return Collections.emptyList();
+ }
+ if (unmodifiableUrlPatternList == null)
+ {
+ unmodifiableUrlPatternList =
+ Collections.unmodifiableList(urlPatternList);
+ }
+ return unmodifiableUrlPatternList;
}
/**
- * @param urlPattern the urlPattern to set
+ * @return the contracts
*/
- public void setUrlPattern(String urlPattern)
+ public List<String> getContractList()
{
- this.urlPattern = urlPattern;
+ if (contractsList == null)
+ {
+ return Collections.emptyList();
+ }
+ if (unmodifiableContractsList == null)
+ {
+ unmodifiableContractsList =
+ Collections.unmodifiableList(contractsList);
+ }
+ return unmodifiableContractsList;
}
- /**
- * @return the contracts
- */
- public String getContracts()
+ public void addContract(String contract)
+ {
+ if (contractsList == null)
+ {
+ contractsList = new ArrayList<String>();
+ }
+ contractsList.add(contract);
+ }
+
+ public void addUrlPattern(String urlPattern)
{
- return contracts;
+ if (urlPatternList == null)
+ {
+ urlPatternList = new ArrayList<String>();
+ }
+ urlPatternList.add(urlPattern);
}
- /**
- * @param contracts the contracts to set
- */
- public void setContracts(String contracts)
+ @Override
+ public String getUrlPattern()
{
- this.contracts = contracts;
+ return null;
+ }
+
+ @Override
+ public String getContracts()
+ {
+ return null;
}
-
}
Modified: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/config/impl/digister/DigesterFacesConfigUnmarshallerImplTest.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/config/impl/digister/DigesterFacesConfigUnmarshallerImplTest.java?rev=1670509&r1=1670508&r2=1670509&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/config/impl/digister/DigesterFacesConfigUnmarshallerImplTest.java (original)
+++ myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/config/impl/digister/DigesterFacesConfigUnmarshallerImplTest.java Tue Mar 31 22:45:18 2015
@@ -262,7 +262,25 @@ public class DigesterFacesConfigUnmarsha
assertEquals(1, app.getResourceLibraryContractMappings().size());
ContractMapping mapping = app.getResourceLibraryContractMappings().get(0);
- assertEquals("/files/*.xhtml", mapping.getUrlPattern());
- assertEquals("contractA contractB", mapping.getContracts());
+ assertEquals("/files/*.xhtml", mapping.getUrlPatternList().get(0));
+ assertEquals("contractA contractB", mapping.getContractList().get(0));
}
+
+ public void testContracts2() throws Exception
+ {
+ FacesConfig cfg = _impl.getFacesConfig(getClass().getResourceAsStream(
+ "contracts2.xml"), "contracts2.xml");
+
+ assertNotNull(cfg);
+
+ Application app = cfg.getApplications().get(0);
+ assertNotNull(app);
+ assertEquals(1, app.getResourceLibraryContractMappings().size());
+
+ ContractMapping mapping = app.getResourceLibraryContractMappings().get(0);
+ assertTrue(mapping.getUrlPatternList().contains("/files/*.xhtml"));
+ assertTrue(mapping.getUrlPatternList().contains("/files2/*.xhtml"));
+ assertTrue(mapping.getContractList().contains("contractA"));
+ assertTrue(mapping.getContractList().contains("contractB"));
+ }
}
Copied: myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/config/impl/digister/contracts2.xml (from r1657660, myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/config/impl/digister/csrf-and-contracts.xml)
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/config/impl/digister/contracts2.xml?p2=myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/config/impl/digister/contracts2.xml&p1=myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/config/impl/digister/csrf-and-contracts.xml&r1=1657660&r2=1670509&rev=1670509&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/config/impl/digister/csrf-and-contracts.xml (original)
+++ myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/config/impl/digister/contracts2.xml Tue Mar 31 22:45:18 2015
@@ -23,7 +23,9 @@
<resource-library-contracts>
<contract-mapping>
<url-pattern>/files/*.xhtml</url-pattern>
- <contracts>contractA contractB</contracts>
+ <url-pattern>/files2/*.xhtml</url-pattern>
+ <contracts>contractA</contracts>
+ <contracts>contractB</contracts>
</contract-mapping>
</resource-library-contracts>
</application>