Ok, will do.

On Wed, Feb 9, 2011 at 11:58 AM, Howard Lewis Ship <[email protected]> wrote:
> If you are committing to trunk, you are @since 5.3.0.  I suppose
> @since 5.3 would be sufficient, I kind of like the extra precision.
>
> The 5.2.5 was becuase I committed a back fix to 5.2.5 and then
> cherrypicked it onto trunk.
>
> I may be looking at a couple of additional small changes for 5.2.5 and
> then seeing about a release.
>
> On Wed, Feb 9, 2011 at 11:37 AM, Kalle Korhonen
> <[email protected]> wrote:
>> On Wed, Feb 9, 2011 at 12:10 AM, Igor Drobiazko
>> <[email protected]> wrote:
>>> Hi Kalle,
>>> congrats to your first commit. You should import Tapestry code formatting
>>> into your IDE. Please see here:
>>> http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/support/?pathrev=1068758
>>
>> Thanks Igor, meant to ask about that.
>>
>>> Regarding the change. Wouldn't it be better to set defaults for new symbols
>>> to hostport = 80 and hostport-secure=443?
>>
>> That's certainly up for discussion. I didn't want to change the
>> current behavior without any consensus. It'd almost make sense to use
>> those as the defaults, but it could cause some unexpected surprises in
>> development environments (interestingly BaseUrlSourceImpl doesn't
>> honor tapestry.secure-enabled, another issue there?). Perhaps you
>> could do something more complex, such as contribute 80 and 443 when
>> production mode is on, but not at that time when contributing factory
>> defaults. Ties to the larger discussion about better supporting dev,
>> test, production profiles, but probably best to leave that for another
>> issue, don't you think?
>>
>> One more thing - which value should I have used for @since? 5.3.0? (I
>> used 5.2.5 for now following Howard's lead on another new symbol, but
>> didn't check if his was actually merged into 5.2 maintenance branch).
>>
>> Kalle
>>
>>
>>> On Wed, Feb 9, 2011 at 7:25 AM, <[email protected]> wrote:
>>>
>>>> Author: kaosko
>>>> Date: Wed Feb  9 06:25:01 2011
>>>> New Revision: 1068758
>>>>
>>>> URL: http://svn.apache.org/viewvc?rev=1068758&view=rev
>>>> Log:
>>>> Complete - issue TAP5-1414: Add HOSTNAME symbol to SymbolConstants, use in
>>>> BaseUrlSource
>>>> https://issues.apache.org/jira/browse/TAP5-1414
>>>> - added HOSTNAME, HOSTPORT and HOSTPORT_SECURE symbols to SymbolConstants
>>>> - contributed defaults for the new symbols (defaults won't change existing
>>>> behavior)
>>>> - added javadoc
>>>> - modified BaseURLSourceImpl to use the new symbols
>>>> - added new test class for testing BaseURLSourceImpl
>>>>
>>>> Added:
>>>>
>>>>  tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BaseURLSourceImplTest.java
>>>> Modified:
>>>>
>>>>  tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/SymbolConstants.java
>>>>
>>>>  tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/BaseURLSourceImpl.java
>>>>
>>>>  tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/BaseURLSource.java
>>>>
>>>>  tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
>>>>
>>>> Modified:
>>>> tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/SymbolConstants.java
>>>> URL:
>>>> http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/SymbolConstants.java?rev=1068758&r1=1068757&r2=1068758&view=diff
>>>>
>>>> ==============================================================================
>>>> ---
>>>> tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/SymbolConstants.java
>>>> (original)
>>>> +++
>>>> tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/SymbolConstants.java
>>>> Wed Feb  9 06:25:01 2011
>>>> @@ -334,4 +334,29 @@ public class SymbolConstants
>>>>      * @since 5.2.5
>>>>      */
>>>>     public static final String COMPONENT_RENDER_TRACING_ENABLED =
>>>> "tapestry.component-render-tracing-enabled";
>>>> +
>>>> +    /**
>>>> +     * The hostname that application should use when constructing an
>>>> absolute URL. The default is "", i.e. an empty string,
>>>> +     * in which case system will use request.getServerName(). Not the same
>>>> as environment variable HOSTNAME, but you can also
>>>> +     * contribute "$HOSTNAME" as the value to make it the same as the
>>>> environment variable HOSTNAME.
>>>> +     *
>>>> +     * @since 5.2.5
>>>> +     */
>>>> +    public static final String HOSTNAME = "tapestry.hostname";
>>>> +
>>>> +    /**
>>>> +     * The hostport that application should use when constructing an
>>>> absolute URL. The default is "0", i.e. use the port value from
>>>> +     * the request.
>>>> +     *
>>>> +     * @since 5.2.5
>>>> +     */
>>>> +    public static final String HOSTPORT = "tapestry.hostport";
>>>> +
>>>> +    /**
>>>> +     * The secure (https) hostport that application should use when
>>>> constructing an absolute URL. The default is "0", i.e. use
>>>> +     * the value from the request.
>>>> +     *
>>>> +     * @since 5.2.5
>>>> +     */
>>>> +    public static final String HOSTPORT_SECURE =
>>>> "tapestry.hostport-secure";
>>>>  }
>>>>
>>>> Modified:
>>>> tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/BaseURLSourceImpl.java
>>>> URL:
>>>> http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/BaseURLSourceImpl.java?rev=1068758&r1=1068757&r2=1068758&view=diff
>>>>
>>>> ==============================================================================
>>>> ---
>>>> tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/BaseURLSourceImpl.java
>>>> (original)
>>>> +++
>>>> tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/BaseURLSourceImpl.java
>>>> Wed Feb  9 06:25:01 2011
>>>> @@ -14,26 +14,44 @@
>>>>
>>>>  package org.apache.tapestry5.internal.services;
>>>>
>>>> +import org.apache.tapestry5.SymbolConstants;
>>>> +import org.apache.tapestry5.ioc.annotations.Inject;
>>>> +import org.apache.tapestry5.ioc.annotations.Symbol;
>>>>  import org.apache.tapestry5.services.BaseURLSource;
>>>>  import org.apache.tapestry5.services.Request;
>>>>
>>>>  public class BaseURLSourceImpl implements BaseURLSource
>>>>  {
>>>>     private final Request request;
>>>> +
>>>> +    private String hostname;
>>>> +    private int hostPort;
>>>> +    private int secureHostPort;
>>>>
>>>> -    public BaseURLSourceImpl(Request request)
>>>> +    public BaseURLSourceImpl(Request request, @Inject
>>>> @Symbol(SymbolConstants.HOSTNAME) String hostname,
>>>> +           @Symbol(SymbolConstants.HOSTPORT) int hostPort,
>>>> @Symbol(SymbolConstants.HOSTPORT_SECURE) int secureHostPort)
>>>>     {
>>>>         this.request = request;
>>>> +        this.hostname = hostname;
>>>> +        this.hostPort = hostPort;
>>>> +        this.secureHostPort = secureHostPort;
>>>>     }
>>>>
>>>>     public String getBaseURL(boolean secure)
>>>>     {
>>>> -        int port = request.getServerPort();
>>>> +        int port = secure ? secureHostPort : hostPort;
>>>> +        String portSuffix = "";
>>>>
>>>> -        int schemeDefaultPort = request.isSecure() ? 443 : 80;
>>>> -
>>>> -        String portSuffix = port == schemeDefaultPort ? "" : ":" + port;
>>>> -
>>>> -        return String.format("%s://%s%s", secure ? "https" : "http",
>>>> request.getServerName(), portSuffix);
>>>> +        if (port <= 0) {
>>>> +            port = request.getServerPort();
>>>> +            int schemeDefaultPort = request.isSecure() ? 443 : 80;
>>>> +            portSuffix = port == schemeDefaultPort ? "" : ":" + port;
>>>> +        }
>>>> +        else if (secure && port != 443) portSuffix = ":" + port;
>>>> +        else if (port != 80) portSuffix = ":" + port;
>>>> +
>>>> +        String hostname = "".equals(this.hostname) ?
>>>> request.getServerName() : this.hostname.startsWith("$") ?
>>>> System.getenv(this.hostname.substring(1)) : this.hostname;
>>>> +
>>>> +        return String.format("%s://%s%s", secure ? "https" : "http",
>>>> hostname, portSuffix);
>>>>     }
>>>>  }
>>>>
>>>> Modified:
>>>> tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/BaseURLSource.java
>>>> URL:
>>>> http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/BaseURLSource.java?rev=1068758&r1=1068757&r2=1068758&view=diff
>>>>
>>>> ==============================================================================
>>>> ---
>>>> tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/BaseURLSource.java
>>>> (original)
>>>> +++
>>>> tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/BaseURLSource.java
>>>> Wed Feb  9 06:25:01 2011
>>>> @@ -24,7 +24,17 @@ import org.apache.tapestry5.ioc.services
>>>>  * necessary to do a bit more, since <code>getServerName()</code> will
>>>> often be the name of the internal server (not
>>>>  * visible to the client web browser), and a hard-coded name of a server
>>>> that <em>is</em> visible to the web browser
>>>>  * is needed. Further, in testing, non-default ports are often used. In
>>>> those cases, an overriding contribution to the
>>>> - * {@link ServiceOverride} service will allow a custom implementation to
>>>> supercede the default version.
>>>> + * {@link ServiceOverride} service will allow a custom implementation to
>>>> supercede the default version. You may also
>>>> + * contribute application specific values for the following {@link
>>>> org.apache.tapestry5.SymbolConstants}:
>>>> + * {@link org.apache.tapestry5.SymbolConstants#HOSTNAME}, {@link
>>>> org.apache.tapestry5.SymbolConstants#HOSTPORT} and
>>>> + * {@link org.apache.tapestry5.SymbolConstants#HOSTPORT_SECURE} to alter
>>>> the behavior of the default BaseURLSource
>>>> + * implementation. The default values for the SymbolConstants require
>>>> {@link org.apache.tapestry5.services.Request}
>>>> + * context to be available. If you contribute specific values for the
>>>> specified SymbolConstants, it's safe to use
>>>> + * the default implementation of this service outside of request context,
>>>> for example in a batch job. For
>>>> + * {@link org.apache.tapestry5.SymbolConstants#HOSTNAME}, a value starting
>>>> with a dollar sign ($) will be resolved
>>>> + * using {@link java.langSystem#getEnv()} - contributing "$HOSTNAME" for
>>>> {@link org.apache.tapestry5.SymbolConstants#HOSTNAME}
>>>> + * is the most sensible choice for a dynamic value that doesn't use
>>>> + * {@link org.apache.tapestry5.services.Request#getServerName()}.
>>>>  */
>>>>  public interface BaseURLSource
>>>>  {
>>>>
>>>> Modified:
>>>> tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
>>>> URL:
>>>> http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java?rev=1068758&r1=1068757&r2=1068758&view=diff
>>>>
>>>> ==============================================================================
>>>> ---
>>>> tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
>>>> (original)
>>>> +++
>>>> tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
>>>> Wed Feb  9 06:25:01 2011
>>>> @@ -2450,6 +2450,11 @@ public final class TapestryModule
>>>>         configuration.add(InternalSymbols.PRE_SELECTED_FORM_NAMES,
>>>> "reset,submit,select,id,method,action,onsubmit");
>>>>
>>>>         configuration.add(SymbolConstants.COMPONENT_RENDER_TRACING_ENABLED,
>>>> "false");
>>>> +
>>>> +        // The default values denote "use values from request"
>>>> +        configuration.add(SymbolConstants.HOSTNAME, "");
>>>> +        configuration.add(SymbolConstants.HOSTPORT, "0");
>>>> +        configuration.add(SymbolConstants.HOSTPORT_SECURE, "0");
>>>>     }
>>>>
>>>>     /**
>>>>
>>>> Added:
>>>> tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BaseURLSourceImplTest.java
>>>> URL:
>>>> http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BaseURLSourceImplTest.java?rev=1068758&view=auto
>>>>
>>>> ==============================================================================
>>>> ---
>>>> tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BaseURLSourceImplTest.java
>>>> (added)
>>>> +++
>>>> tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BaseURLSourceImplTest.java
>>>> Wed Feb  9 06:25:01 2011
>>>> @@ -0,0 +1,74 @@
>>>> +// Copyright 2008, 2010, 2011 The Apache Software Foundation
>>>> +//
>>>> +// Licensed under the Apache License, Version 2.0 (the "License");
>>>> +// you may not use this file except in compliance with the License.
>>>> +// You may obtain a copy of the License at
>>>> +//
>>>> +// http://www.apache.org/licenses/LICENSE-2.0
>>>> +//
>>>> +// Unless required by applicable law or agreed to in writing, software
>>>> +// distributed under the License is distributed on an "AS IS" BASIS,
>>>> +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>>>> implied.
>>>> +// See the License for the specific language governing permissions and
>>>> +// limitations under the License.
>>>> +
>>>> +package org.apache.tapestry5.internal.services;
>>>> +
>>>> +import org.apache.tapestry5.internal.test.InternalBaseTestCase;
>>>> +import org.apache.tapestry5.services.BaseURLSource;
>>>> +import org.apache.tapestry5.services.Request;
>>>> +import org.testng.annotations.BeforeMethod;
>>>> +import org.testng.annotations.Test;
>>>> +
>>>> +
>>>> +public class BaseURLSourceImplTest extends InternalBaseTestCase {
>>>> +    private Request request;
>>>> +
>>>> +    @BeforeMethod
>>>> +    public void setUp() {
>>>> +       request = mockRequest();
>>>> +    }
>>>> +
>>>> +    @Test
>>>> +    public void getBaseURLFromRequest() {
>>>> +        expect(request.getServerName()).andReturn("localhost").once();
>>>> +        expect(request.getServerPort()).andReturn(80).once();
>>>> +        expect(request.isSecure()).andReturn(false).once();
>>>> +        replay();
>>>> +        BaseURLSource baseURLSource = new BaseURLSourceImpl(request,
>>>> "localhost", 0, 0);
>>>> +        assertEquals(baseURLSource.getBaseURL(false), "http://localhost
>>>> ");
>>>> +    }
>>>> +
>>>> +    @Test
>>>> +    public void getBaseURLWithContributedHostname() {
>>>> +        expect(request.getServerPort()).andReturn(80).once();
>>>> +        expect(request.isSecure()).andReturn(false).once();
>>>> +        replay();
>>>> +        BaseURLSource baseURLSource = new BaseURLSourceImpl(request, "
>>>> my.server.com", 0, 0);
>>>> +        assertEquals(baseURLSource.getBaseURL(false), "
>>>> http://my.server.com";);
>>>> +    }
>>>> +
>>>> +    @Test
>>>> +    public void getBaseURLWithEnvHostname() {
>>>> +        expect(request.getServerPort()).andReturn(80).once();
>>>> +        expect(request.isSecure()).andReturn(false).once();
>>>> +        replay();
>>>> +        BaseURLSource baseURLSource = new BaseURLSourceImpl(request,
>>>> "$HOSTNAME", 0, 0);
>>>> +        assertEquals(baseURLSource.getBaseURL(false), "http://"; +
>>>> System.getenv("HOSTNAME"));
>>>> +    }
>>>> +
>>>> +    @Test
>>>> +    public void getBaseURLWithContributedValuesDontUseRequest() {
>>>> +        replay();
>>>> +        BaseURLSource baseURLSource = new BaseURLSourceImpl(request,
>>>> "localhost", 80, 443);
>>>> +        assertEquals(baseURLSource.getBaseURL(false), "http://localhost
>>>> ");
>>>> +    }
>>>> +
>>>> +    @Test
>>>> +    public void getBaseURLWithContributedNonStandardSecurePort() {
>>>> +        replay();
>>>> +        BaseURLSource baseURLSource = new BaseURLSourceImpl(request,
>>>> "localhost", 80, 8443);
>>>> +        assertEquals(baseURLSource.getBaseURL(true), "
>>>> https://localhost:8443";);
>>>> +    }
>>>> +
>>>> +}
>>>>
>>>>
>>>>
>>>
>>>
>>> --
>>> Best regards,
>>>
>>> Igor Drobiazko
>>> http://tapestry5.de
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
>>
>>
>
>
>
> --
> Howard M. Lewis Ship
>
> Creator of Apache Tapestry
>
> The source for Tapestry training, mentoring and support. Contact me to
> learn how I can get you up and productive in Tapestry fast!
>
> (971) 678-5210
> http://howardlewisship.com
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to