Skip to content

Commit

Permalink
Merge pull request #6022 from eclipse/jetty-10.0.x-better-xml-path-re…
Browse files Browse the repository at this point in the history
…solution

Issue #6021 - PoC for resolvePath within XmlConfiguration
  • Loading branch information
joakime committed Mar 3, 2021
2 parents 23c1ef3 + 6d2ea3d commit 1cb0a49
Show file tree
Hide file tree
Showing 20 changed files with 210 additions and 59 deletions.
10 changes: 4 additions & 6 deletions jetty-deploy/src/main/config/etc/jetty-deploy.xml
Expand Up @@ -40,12 +40,10 @@
<Arg>
<New id="webappprovider" class="org.eclipse.jetty.deploy.providers.WebAppProvider">
<Set name="monitoredDirName">
<Property>
<Name>jetty.deploy.monitoredPath</Name>
<Default>
<Property name="jetty.base" default="." />/<Property name="jetty.deploy.monitoredDir" default="webapps"/>
</Default>
</Property>
<Call name="resolvePath" class="org.eclipse.jetty.xml.XmlConfiguration">
<Arg><Property name="jetty.base"/></Arg>
<Arg><Property name="jetty.deploy.monitoredDir" default="webapps" /></Arg>
</Call>
</Set>
<Set name="defaultsDescriptor">
<Property>
Expand Down
Expand Up @@ -7,12 +7,10 @@
<Arg>
<New class="org.eclipse.jetty.deploy.bindings.GlobalWebappConfigBinding">
<Set name="jettyXml">
<Property>
<Name>jetty.deploy.webappCommonConfig</Name>
<Default>
<Property name="jetty.base"/>/etc/webapp-common.xml
</Default>
</Property>
<Call name="resolvePath" class="org.eclipse.jetty.xml.XmlConfiguration">
<Arg><Property name="jetty.base"/></Arg>
<Arg><Property name="jetty.deploy.webappCommonConfig" default="etc/webapp-common.xml"/></Arg>
</Call>
</Set>
</New>
</Arg>
Expand Down
2 changes: 1 addition & 1 deletion jetty-home/src/main/resources/modules/hawtio/hawtio.xml
Expand Up @@ -6,7 +6,7 @@
<Arg>
<New class="org.eclipse.jetty.webapp.WebAppContext">
<Set name="contextPath">/hawtio</Set>
<Set name="war"><Property name="jetty.base" default="."/>/lib/hawtio/hawtio.war</Set>
<Set name="war"><Property name="jetty.base"/>/lib/hawtio/hawtio.war</Set>
<Set name="extractWAR">true</Set>
<Set name="copyWebDir">false</Set>
<Set name="defaultsDescriptor"><Property name="jetty.home" default="."/>/etc/webdefault.xml</Set>
Expand Down
2 changes: 1 addition & 1 deletion jetty-home/src/main/resources/modules/jamon/jamon.xml
Expand Up @@ -20,7 +20,7 @@
<Arg>
<New class="org.eclipse.jetty.webapp.WebAppContext">
<Set name="contextPath">/jamon</Set>
<Set name="war"><Property name="jetty.base" default="."/>/lib/jamon/jamon.war</Set>
<Set name="war"><Property name="jetty.base"/>/lib/jamon/jamon.war</Set>
<Set name="extractWAR">true</Set>
<Set name="copyWebDir">false</Set>
<Set name="defaultsDescriptor"><Property name="jetty.home" default="."/>/etc/webdefault.xml</Set>
Expand Down
2 changes: 1 addition & 1 deletion jetty-home/src/main/resources/modules/jolokia/jolokia.xml
Expand Up @@ -6,7 +6,7 @@
<Arg>
<New class="org.eclipse.jetty.webapp.WebAppContext">
<Set name="contextPath">/jolokia</Set>
<Set name="war"><Property name="jetty.base" default="."/>/lib/jolokia/jolokia.war</Set>
<Set name="war"><Property name="jetty.base"/>/lib/jolokia/jolokia.war</Set>
<Set name="extractWAR">true</Set>
<Set name="copyWebDir">false</Set>
<Set name="defaultsDescriptor"><Property name="jetty.home" default="."/>/etc/webdefault.xml</Set>
Expand Down
Expand Up @@ -39,7 +39,7 @@

<New id="cacheMgr" class="org.infinispan.manager.DefaultCacheManager">
<Arg>
<Property name="jetty.base" default="."/>/etc/infinispan.xml
<Property name="jetty.base"/>/etc/infinispan.xml
</Arg>
<Get id="defaultConfig" name="defaultCacheConfiguration"/>
</New>
Expand Down
Expand Up @@ -7,7 +7,7 @@
<!-- Get a reference to the default local cache. -->
<!-- ===================================================================== -->
<New id="cacheMgr" class="org.infinispan.manager.DefaultCacheManager">
<Arg><Property name="jetty.base" default="."/>/etc/infinispan.xml</Arg>
<Arg><Property name="jetty.base"/>/etc/infinispan.xml</Arg>
<Get id="cache" name="cache"></Get>
</New>

Expand Down
Expand Up @@ -20,21 +20,21 @@
</Call>
</Call>
</New>

<New id="properties" class="java.util.Properties">
<Call name="load">
<Arg>
<New class="java.io.FileInputStream">
<Arg><Property name="jetty.base" default="."/>/resources/hotrod-client.properties</Arg>
</New>
<New class="java.io.FileInputStream">
<Arg><Property name="jetty.base"/>/resources/hotrod-client.properties</Arg>
</New>
</Arg>
</Call>
<Call name="put">
<Arg><Get class="org.hibernate.search.cfg.Environment" name="MODEL_MAPPING"/></Arg>
<Arg><Ref refid="mapping"/></Arg>
</Call>
</New>


<!-- ===================================================================== -->
<!-- Convert properties to configuration. -->
Expand All @@ -49,15 +49,15 @@
</Arg>
</Call>
<Call id="config" name="build"/>
</New>
</New>

<!-- ===================================================================== -->
<!-- Get a reference to the remote cachemanager. -->
<!-- ===================================================================== -->
<New id="remoteCacheManager" class="org.infinispan.client.hotrod.RemoteCacheManager">
<Arg><Ref refid="config"/></Arg>
</New>

<!-- ===================================================================== -->
<!-- Set up custom session serialization. -->
<!-- ===================================================================== -->
Expand All @@ -84,7 +84,7 @@
</Arg>
</Call>
</Call>

<!-- ===================================================================== -->
<!-- Get a reference to the remote cache. -->
<!-- ===================================================================== -->
Expand All @@ -93,10 +93,10 @@
<Arg><Property name="jetty.session.infinispan.remoteCacheName" default="sessions"/></Arg>
</Call>
</Ref>

<!-- ===================================================================== -->
<!-- Set queryMgrFactory reference to RemoteQueryManagerFactory -->
<!-- ===================================================================== -->
<New id="queryMgrFactory" class="org.eclipse.jetty.session.infinispan.RemoteQueryManagerFactory"/>
</Configure>
<New id="queryMgrFactory" class="org.eclipse.jetty.session.infinispan.RemoteQueryManagerFactory"/>

</Configure>
Expand Up @@ -19,7 +19,7 @@
<Arg>my.proto</Arg>
<Arg>
<New class="java.io.File">
<Arg><Property name="jetty.base" default="."/>/etc/my.proto</Arg>
<Arg><Property name="jetty.base"/>/etc/my.proto</Arg>
</New>
</Arg>
</Call>
Expand Down
Expand Up @@ -10,7 +10,7 @@
<Call name="load">
<Arg>
<New class="java.io.FileInputStream">
<Arg><Property name="jetty.base" default="."/>/resources/hotrod-client.properties</Arg>
<Arg><Property name="jetty.base"/>/resources/hotrod-client.properties</Arg>
</New>
</Arg>
</Call>
Expand Down
7 changes: 6 additions & 1 deletion jetty-jaas/src/main/config/etc/jetty-jaas.xml
Expand Up @@ -10,7 +10,12 @@
<!-- ======================================================== -->
<Call class="java.lang.System" name="setProperty">
<Arg>java.security.auth.login.config</Arg>
<Arg><Property name="jetty.base" default="." />/<Property name="jetty.jaas.login.conf" default="etc/login.conf"/></Arg>
<Arg>
<Call name="resolvePath" class="org.eclipse.jetty.xml.XmlConfiguration">
<Arg><Property name="jetty.base"/></Arg>
<Arg><Property name="jetty.jaas.login.conf" default="etc/login.conf" /></Arg>
</Call>
</Arg>
</Call>

</Configure>
7 changes: 6 additions & 1 deletion jetty-keystore/src/main/config/etc/jetty-test-keystore.xml
Expand Up @@ -3,7 +3,12 @@

<Configure id="Server" class="org.eclipse.jetty.server.Server">
<Call class="org.eclipse.jetty.keystore.KeystoreGenerator" name="generateTestKeystore">
<Arg><Property name="jetty.base" default="." />/<Property name="jetty.sslContext.keyStorePath" default="etc/keystore.p12" /></Arg>
<Arg>
<Call name="resolvePath" class="org.eclipse.jetty.xml.XmlConfiguration">
<Arg><Property name="jetty.base"/></Arg>
<Arg><Property name="jetty.sslContext.keyStorePath" default="etc/keystore.p12" /></Arg>
</Call>
</Arg>
<Arg><Property name="jetty.sslContext.keyStorePassword" /></Arg>
</Call>
</Configure>
3 changes: 0 additions & 3 deletions jetty-keystore/src/main/config/modules/test-keystore.mod
Expand Up @@ -27,6 +27,3 @@ jetty.webapp.addServerClasses+=,${jetty.base.uri}/lib/bouncycastle/
jetty.sslContext.keyStorePath?=etc/test-keystore.p12
jetty.sslContext.keyStoreType?=PKCS12
jetty.sslContext.keyStorePassword?=OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4
jetty.sslContext.trustStorePath?=etc/test-keystore.p12
jetty.sslContext.trustStoreType?=PKCS12
jetty.sslContext.keyStorePassword?=OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4
2 changes: 1 addition & 1 deletion jetty-maven-plugin/src/main/resources/maven.xml
Expand Up @@ -7,7 +7,7 @@
<Arg>
<Ref refid="wac" />
</Arg>
<Arg><Property name="jetty.base" default="."/>/etc/maven.props</Arg>
<Arg><Property name="jetty.base"/>/etc/maven.props</Arg>
<Arg>
<Ref refid="Server" />
</Arg>
Expand Down
4 changes: 2 additions & 2 deletions jetty-osgi/test-jetty-osgi/src/test/config/etc/jetty-ssl.xml
Expand Up @@ -31,9 +31,9 @@
<!-- ============================================================= -->
<New id="sslContextFactory" class="org.eclipse.jetty.util.ssl.SslContextFactory$Server">
<Set name="Provider"><SystemProperty name="jetty.sslContext.provider"/></Set>
<Set name="KeyStorePath"><Property name="jetty.base" default="."/>/<Property name="jetty.sslContext.keyStorePath" default="etc/keystore.p12"/></Set>
<Set name="KeyStorePath"><Property name="jetty.base"/>/<Property name="jetty.sslContext.keyStorePath" default="etc/keystore.p12"/></Set>
<Set name="KeyStorePassword"><Property name="jetty.sslContext.keyStorePassword" default="OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4"/></Set>
<Set name="TrustStorePath"><Property name="jetty.base" default="."/>/<Property name="jetty.sslContext.trustStorePath" default="etc/keystore.p12"/></Set>
<Set name="TrustStorePath"><Property name="jetty.base"/>/<Property name="jetty.sslContext.trustStorePath" default="etc/keystore.p12"/></Set>
<Set name="TrustStorePassword"><Property name="jetty.sslContext.trustStorePassword" default="OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4"/></Set>
<Set name="NeedClientAuth" property="jetty.sslContext.needClientAuth"/>
<Set name="WantClientAuth" property="jetty.sslContext.wantClientAuth"/>
Expand Down
11 changes: 6 additions & 5 deletions jetty-server/src/main/config/etc/jetty-requestlog.xml
Expand Up @@ -15,11 +15,12 @@
<!-- Writer -->
<Arg>
<New class="org.eclipse.jetty.server.AsyncRequestLogWriter">
<Arg><Property name="jetty.base" default="." />/<Property>
<Name>jetty.requestlog.filePath</Name>
<Default><Property name="jetty.requestlog.dir" default="logs"/>/yyyy_mm_dd.request.log</Default>
</Property></Arg>
<Arg/>
<Arg>
<Call name="resolvePath" class="org.eclipse.jetty.xml.XmlConfiguration">
<Arg><Property name="jetty.base"/></Arg>
<Arg><Property name="jetty.requestlog.dir" default="logs" />/yyyy_mm_dd.request.log</Arg>
</Call>
</Arg>

<Set name="filenameDateFormat"><Property name="jetty.requestlog.filenameDateFormat" default="yyyy_MM_dd"/></Set>
<Set name="retainDays"><Property name="jetty.requestlog.retainDays" default="90"/></Set>
Expand Down
18 changes: 8 additions & 10 deletions jetty-server/src/main/config/etc/jetty-ssl-context.xml
Expand Up @@ -6,22 +6,20 @@
<New id="sslContextFactory" class="org.eclipse.jetty.util.ssl.SslContextFactory$Server">
<Set name="Provider" property="jetty.sslContext.provider" />
<Set name="KeyStorePath">
<Property name="jetty.sslContext.keyStoreAbsolutePath">
<Default>
<Property name="jetty.base" default="." />/<Property name="jetty.sslContext.keyStorePath" deprecated="jetty.keystore" default="etc/keystore"/>
</Default>
</Property>
<Call name="resolvePath" class="org.eclipse.jetty.xml.XmlConfiguration">
<Arg><Property name="jetty.base"/></Arg>
<Arg><Property name="jetty.sslContext.keyStorePath" deprecated="jetty.sslContext.keyStoreAbsolutePath,jetty.keystore" default="etc/keystore.p12" /></Arg>
</Call>
</Set>
<Set name="KeyStorePassword"><Property name="jetty.sslContext.keyStorePassword" /></Set>
<Set name="KeyStoreType" property="jetty.sslContext.keyStoreType" />
<Set name="KeyStoreProvider" property="jetty.sslContext.keyStoreProvider" />
<Set name="KeyManagerPassword"><Property name="jetty.sslContext.keyManagerPassword" /></Set>
<Set name="TrustStorePath">
<Property name="jetty.sslContext.trustStoreAbsolutePath">
<Default>
<Property name="jetty.base" default="." />/<Property name="jetty.sslContext.trustStorePath" deprecated="jetty.truststore" default="etc/keystore"/>
</Default>
</Property>
<Call name="resolvePath" class="org.eclipse.jetty.xml.XmlConfiguration">
<Arg><Property name="jetty.base"/></Arg>
<Arg><Property name="jetty.sslContext.trustStorePath" deprecated="jetty.sslContext.trustStoreAbsolutePath,jetty.truststore" /></Arg>
</Call>
</Set>
<Set name="TrustStorePassword" property="jetty.sslContext.trustStorePassword" />
<Set name="TrustStoreType" property="jetty.sslContext.trustStoreType" />
Expand Down
Expand Up @@ -708,13 +708,20 @@ public String getTrustStorePath()
*/
public void setTrustStorePath(String trustStorePath)
{
try
if (StringUtil.isEmpty(trustStorePath))
{
_trustStoreResource = Resource.newResource(trustStorePath);
_trustStoreResource = null;
}
catch (Exception e)
else
{
throw new IllegalArgumentException(e);
try
{
_trustStoreResource = Resource.newResource(trustStorePath);
}
catch (Exception e)
{
throw new IllegalArgumentException(e);
}
}
}

Expand Down
Expand Up @@ -331,6 +331,22 @@ public void initializeDefaults(Object object)
{
}

/**
* Utility method to resolve a provided path against a directory.
*
* @param dir the directory (should be a directory reference, does not have to exist)
* @param destPath the destination path (can be relative or absolute, syntax depends on OS + FileSystem in use,
* and does not need to exist)
* @return String to resolved and normalized path, or null if dir or destPath is empty.
*/
public static String resolvePath(String dir, String destPath)
{
if (StringUtil.isEmpty(dir) || StringUtil.isEmpty(destPath))
return null;

return Paths.get(dir).resolve(destPath).normalize().toString();
}

private static class JettyXmlConfiguration implements ConfigurationProcessor
{
XmlParser.Node _root;
Expand Down

0 comments on commit 1cb0a49

Please sign in to comment.