mirror of
https://github.com/google/nomulus.git
synced 2025-05-07 23:38:21 +02:00
Soy has historically tolerated map accesses on weakly-typed variables. That is, if a template declared a param $p and then did $p['some_key'] in the template body, Soy would treat $p as a map even if it wasn't statically declared as one. This situation is changing with [] There are now two map types, `map` and `legacy_object_map`. We are trying to migrate every template in [] from `legacy_object_map` to `map`, leaving Soy with one (improved) map type. Because the two map types generate different JS code, Soy can no longer allow map accesses on weakly-typed variables. (If $p['some_key'] occurs in a template and the type of $p is unknown, Soy would not know what code to generate.) Every parameter whose static type is unknown (`?`) but which is inferred to be a `legacy_object_map` needs to be migrated to a `map`. We are developing tools for this in [] However, as a first step, we need to migrate the subset of these params that use the legacy SoyDoc syntax to use header param syntax with a static type of `?`. (All params declared in SoyDoc are typed as unknown, and it is a compilation error to mix SoyDoc and header param syntax in the same template, so any template that declares a SoyDoc param that is inferred to be a map needs to migrate to header param syntax.) This CL was prepared by using the tools in [] to create a list of templates declaring SoyDoc params inferred to be legacy_object_maps. This list was then fed to the existing //third_party/java_src/soy/java/com/google/template/soy/tools:ParamMigrator tool. Since this tool migrates whole files instead of individual templates, the resulting CL is a superset of the migration that is actually required. However, since the SoyDoc param syntax has been deprecated for years, and since there is little risk in migrating from one param style to another, I decided to land the superset. This migration falls under the LSC described at https://docs.google.com/document/d/1dAl-rDMp3oL0Zh_iSTaiHICwtcbLbVIy1FQ0wXSAaHs. Tested: TAP --sample for global presubmit queue [] passed FOSS tests ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=188879980
243 lines
7.4 KiB
Text
243 lines
7.4 KiB
Text
// Copyright 2017 The Nomulus Authors. All Rights Reserved.
|
|
//
|
|
// 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.
|
|
|
|
{namespace registry.soy.registrar.domainepp}
|
|
|
|
|
|
/* General Availability. Sunrush down below. */
|
|
/**
|
|
* Domain create request.
|
|
*/
|
|
{template .create stricthtml="false"}
|
|
{@param item: ?}
|
|
{@param clTrid: ?}
|
|
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
|
<command>
|
|
<create>
|
|
<domain:create xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
|
|
<domain:name>{$item['domain:name']}</domain:name>
|
|
{if isNonnull($item['domain:period'])}
|
|
<domain:period unit="y">{$item['domain:period']}</domain:period>
|
|
{/if}
|
|
{if isNonnull($item['domain:ns'])}
|
|
<domain:ns>
|
|
{for $hostObj in $item['domain:ns']['domain:hostObj']}
|
|
<domain:hostObj>{$hostObj.value}</domain:hostObj>
|
|
{/for}
|
|
</domain:ns>
|
|
{/if}
|
|
{if isNonnull($item['domain:registrant'])}
|
|
<domain:registrant>{$item['domain:registrant']}</domain:registrant>
|
|
{/if}
|
|
{if isNonnull($item['domain:contact'])}
|
|
{for $contact in $item['domain:contact']}
|
|
<domain:contact type="{$contact['@type']}">{$contact.value}</domain:contact>
|
|
{/for}
|
|
{/if}
|
|
<domain:authInfo>
|
|
<domain:pw>{$item['domain:authInfo']['domain:pw']}</domain:pw>
|
|
</domain:authInfo>
|
|
</domain:create>
|
|
</create>
|
|
<clTRID>{$clTrid}</clTRID>
|
|
</command>
|
|
</epp>
|
|
{/template}
|
|
|
|
|
|
/**
|
|
* Domain info request.
|
|
*/
|
|
{template .info stricthtml="false"}
|
|
{@param id: ?}
|
|
{@param clTrid: ?}
|
|
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
|
<command>
|
|
<info>
|
|
<domain:info xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
|
|
<domain:name hosts="all">{$id}</domain:name>
|
|
</domain:info>
|
|
</info>
|
|
<clTRID>{$clTrid}</clTRID>
|
|
</command>
|
|
</epp>
|
|
{/template}
|
|
|
|
|
|
/**
|
|
* Domain update request.
|
|
*/
|
|
{template .update stricthtml="false"}
|
|
{@param item: ?}
|
|
{@param clTrid: ?}
|
|
{@param? addHosts: ?} /** list of hostObj to add. */
|
|
{@param? remHosts: ?} /** list of hostObj to remove. */
|
|
{@param? addContacts: ?} /** list of contact to add. */
|
|
{@param? remContacts: ?} /** list of contact to remove. */
|
|
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
|
<command>
|
|
<update>
|
|
<domain:update xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
|
|
<domain:name>{$item['domain:name']}</domain:name>
|
|
{if isNonnull($addHosts) or isNonnull($addContacts)}
|
|
{call .addRem}
|
|
{param isAdd: true /}
|
|
{param hosts: $addHosts /}
|
|
{param contacts: $addContacts /}
|
|
{/call}
|
|
{/if}
|
|
{if isNonnull($remHosts) or isNonnull($remContacts)}
|
|
{call .addRem}
|
|
{param isAdd: false /}
|
|
{param hosts: $remHosts /}
|
|
{param contacts: $remContacts /}
|
|
{/call}
|
|
{/if}
|
|
<domain:chg>
|
|
<domain:registrant>{$item['domain:registrant']}</domain:registrant>
|
|
<domain:authInfo>
|
|
<domain:pw>{$item['domain:authInfo']['domain:pw']}</domain:pw>
|
|
</domain:authInfo>
|
|
</domain:chg>
|
|
</domain:update>
|
|
</update>
|
|
<clTRID>{$clTrid}</clTRID>
|
|
</command>
|
|
</epp>
|
|
{/template}
|
|
|
|
|
|
{template .addRem}
|
|
{@param isAdd: ?}
|
|
{@param? hosts: ?}
|
|
{@param? contacts: ?}
|
|
{let $tagName: $isAdd ? 'domain:add' : 'domain:rem' /}
|
|
<{$tagName}>
|
|
{if isNonnull($hosts)}
|
|
<domain:ns>
|
|
{for $host in $hosts}
|
|
<domain:hostObj>{$host.value}</domain:hostObj>
|
|
{/for}
|
|
</domain:ns>
|
|
{/if}
|
|
{if isNonnull($contacts)}
|
|
{for $contact in $contacts}
|
|
<domain:contact type="{$contact['@type']}">{$contact.value}</domain:contact>
|
|
{/for}
|
|
{/if}
|
|
</{$tagName}>
|
|
{/template}
|
|
|
|
|
|
/* Sunrush. */
|
|
/**
|
|
* Domain create request for sunrush.
|
|
*/
|
|
{template .createSunrush stricthtml="false"}
|
|
{@param item: ?}
|
|
{@param clTrid: ?}
|
|
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
|
<command>
|
|
<create>
|
|
<domain:create xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
|
|
<domain:name>{$item['domain:name']}</domain:name>
|
|
<domain:period unit="y">{$item['domain:period']}</domain:period>
|
|
{if isNonnull($item['domain:ns']['domain:hostObj'][0])}
|
|
<domain:ns>
|
|
<domain:hostObj>{$item['domain:ns']['domain:hostObj'][0]}</domain:hostObj>
|
|
{if isNonnull($item['domain:ns']['domain:hostObj'][1])}
|
|
<domain:hostObj>{$item['domain:ns']['domain:hostObj'][1]}</domain:hostObj>
|
|
{/if}
|
|
</domain:ns>
|
|
{/if}
|
|
<domain:registrant>{$item['domain:registrant']}</domain:registrant>
|
|
<domain:contact type="admin">{$item['domain:contact'][0]}</domain:contact>
|
|
<domain:contact type="tech">{$item['domain:contact'][1]}</domain:contact>
|
|
<domain:authInfo>
|
|
<domain:pw>{$item['domain:pw']}</domain:pw>
|
|
</domain:authInfo>
|
|
</domain:create>
|
|
</create>
|
|
<extension>
|
|
<launch:create xmlns:launch="urn:ietf:params:xml:ns:launch-1.0">
|
|
<launch:phase name="landrush">sunrise</launch:phase>
|
|
{if isNonnull($item['smd:encodedSignedMark'])}
|
|
<smd:encodedSignedMark xmlns:smd="urn:ietf:params:xml:ns:signedMark-1.0"
|
|
encoding="base64">{$item['smd:encodedSignedMark']}</smd:encodedSignedMark>
|
|
{/if}
|
|
</launch:create>
|
|
</extension>
|
|
<clTRID>{$clTrid}</clTRID>
|
|
</command>
|
|
</epp>
|
|
{/template}
|
|
|
|
|
|
/**
|
|
* Domain info request during sunrush.
|
|
*/
|
|
{template .infoSunrush stricthtml="false"}
|
|
{@param name: ?}
|
|
{@param applicationID: ?}
|
|
{@param clTrid: ?}
|
|
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
|
<command>
|
|
<info>
|
|
<domain:info xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
|
|
<domain:name hosts="all">{$name}</domain:name>
|
|
</domain:info>
|
|
</info>
|
|
<extension>
|
|
<launch:info
|
|
xmlns:launch="urn:ietf:params:xml:ns:launch-1.0"
|
|
includeMark="true">
|
|
<launch:phase name="landrush">sunrise</launch:phase>
|
|
<launch:applicationID>{$applicationID}</launch:applicationID>
|
|
</launch:info>
|
|
</extension>
|
|
<clTRID>{$clTrid}</clTRID>
|
|
</command>
|
|
</epp>
|
|
{/template}
|
|
|
|
|
|
/**
|
|
* Domain update request.
|
|
*/
|
|
{template .updateSunrush stricthtml="false"}
|
|
{@param item: ?}
|
|
{@param clTrid: ?}
|
|
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
|
<command>
|
|
<update>
|
|
<domain:update xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
|
|
<domain:name>{$item['domain:name']}</domain:name>
|
|
<domain:chg>
|
|
<domain:registrant>{$item['domain:registrant']}</domain:registrant>
|
|
<domain:authInfo>
|
|
<domain:pw>{$item['domain:authInfo']['domain:pw']}</domain:pw>
|
|
</domain:authInfo>
|
|
</domain:chg>
|
|
</domain:update>
|
|
</update>
|
|
<extension>
|
|
<launch:update xmlns:launch="urn:ietf:params:xml:ns:launch-1.0">
|
|
<launch:phase>sunrise</launch:phase>
|
|
<launch:applicationID>{$item['launch:applicationID']}</launch:applicationID>
|
|
</launch:update>
|
|
</extension>
|
|
<clTRID>{$clTrid}</clTRID>
|
|
</command>
|
|
</epp>
|
|
{/template}
|