Commit Graph
100 Commits
Author SHA1 Message Date
cgoldfederandBen McIlwain ae039aa0d8 Remove all vestiges of memcache
Memcache is already off but now it's not in the code anymore.

This includes removing domain creation failfast, since that is actually
slower now than just running the flow - all you gain is a non-transactional
read over a transactional read, but the cost is that you always pay that
read, which is going to drive up latency.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=158183506
2017-06-14 10:28:24 -04:00
cgoldfederandBen McIlwain c9d7e75946 Cache Registrars in memory
This replaces the memcache caching, which we think is overall a bad idea.
We load all registrars at once instead of caching each as needed, so that
the loadAllCached() methods can be cached as well, and therefore will
always produce results consistent with loadByClientIdCached()'s view of the
registrar's values. All of our prod registrars together total 300k of data
right now, so this is hardly worth optimizing further, and in any case this
will likely reduce latency even further since most requests will be
served out of memory.

While I was in the Registrar file I standardized the error messages for incorrect
password and clientId length to be the same format, and cleaned up a few
random things I noticed in the code.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=156151828
2017-05-17 12:26:11 -04:00
cgoldfederandBen McIlwain 275d6ddc10 Disable memcache completely
We've determined that getting correctness semantics right, even
in the few cases that it is possible to do so (see linked bug for
audit) is not worth the bother in terms of highly complicated code
and potential bugs. This CL turns off memcache at the Ofy level
but doesn't rip out the annotations etc. so that we can quickly
turn it back on if this turns out to have been a mistake.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=155227761
2017-05-17 11:35:19 -04:00
cgoldfederandBen McIlwain 608e121a37 Set the premium cache duration in tests to 60s not 60ms
This was causing test flakiness.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=155225717
2017-05-17 11:33:44 -04:00
cgoldfederandBen McIlwain 386d2bc6be Make Registrar.loadByClientId explicitly use memcache
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=154712979
2017-05-03 11:01:54 -04:00
cgoldfederandBen McIlwain d4d02f8977 Add a test for Registrar.loadByClientId not being enrolled in a transaction
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=154470388
2017-05-03 10:52:46 -04:00
cgoldfederandBen McIlwain f1129ea2b1 Make DomainInfoFlow (and application info) explicitly hit memcache
TESTED=For all tests, I added @Cache to DomainBase because otherwise the tests will
    fail. We aren't ready to do this in prod yet, which is why the tests have a TODO
    in them. The new tests fail if you change line 134 in Ofy to not use memcache
    and either use the unchanged original flow code, or use the new
    inlined code and change loadWithMemcache() to load(). They pass with the new
    inlined code that calls loadWithMemcache(), as long as the @Cache is added to
    DomainResource.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=154457655
2017-05-03 10:49:38 -04:00
cgoldfederandBen McIlwain 0267214841 Replace some unnecessary uses of "real" ofy() with Ofy.
Only Ofy itself and its two helpers (AugmentedSaver and
AugmentedDeleter) need to use the real ofy(). All other
callers should be using Ofy. Fixing this even though it
doesn't change anything because I found it baffling to
follow the code while trying to make a small change.

Update: added a presubmit to enforce this.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=154456603
2017-05-03 10:46:28 -04:00
cgoldfederandBen McIlwain 927eb43cbc Un-Ignore a test in DomainApplicationCreateFlowTest
A little injection-foo makes this test possible to run.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=154442134
2017-05-03 10:44:56 -04:00
cgoldfederandBen McIlwain d7da112c19 Put back accidentally deleted assertion
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=154300634
2017-05-03 10:35:44 -04:00
cgoldfederandBen McIlwain 3f9501e469 Remove obsolete comment.
init() is from pre-flattening days

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=154256803
2017-04-26 11:21:35 -04:00
cgoldfederandBen McIlwain 4eba2ea07a Make Registry.get(tld) hit memcache explicitly.
TESTED=The test fails if you change line 134 in Ofy to not use memcache
    and use the unchanged original Registry.get() code. This is the
    expected behavior.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=154226534
2017-04-26 11:18:02 -04:00
cgoldfederandBen McIlwain 9e61f1d6ef Make failfastForCreate for domain and application creates explicitly hit memcache
TESTED=For all tests, I added @Cache to DomainBase because otherwise the tests will
    fail. We aren't ready to do this in prod yet, which is why the tests are still
    marked @Ignore. The new tests fail if you change line 134 in Ofy to not use memcache
    and either use the unchanged original DomainCreateFlow code, or use the new
    inlined code and change loadWithMemcache() to load(). They pass with the new
    inlined code that calls loadWithMemcache(), as long as the @Cache is added to
    DomainResource.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=154224748
2017-04-26 11:16:33 -04:00
cgoldfederandBen McIlwain 51cfc12c1d Add MemcacheHelper to simplify memcache usage in tests
And make two callsites use it.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=154189438
2017-04-26 11:12:17 -04:00
cgoldfederandBen McIlwain 4553422ade Move domainCreateFailfast before cloneAndLinkReferences
This avoids loading all contacts and hosts before the failfast runs

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=154179321
2017-04-26 11:09:23 -04:00
cgoldfederandBen McIlwain b6e50f0467 Turn on memcache in flow tests.
No tests break because of this, but some tests that were previously
intentionally clearing memcache (for example, the test in
DomainInfoFlow that counts datastore calls) are now doing something
that is not a no-op anymore.

Also fix an incorrect comment about memcache in DatastoreHelper.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=154087182
2017-04-26 11:04:56 -04:00
cgoldfederandBen McIlwain c596d23523 Add loadWithMemcache() to Ofy
Also clean up some minor uses of load() to standardize calls.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=154067731
2017-04-26 10:57:41 -04:00
cgoldfederandBen McIlwain 9174855a47 Remove the ofy().load() inside of HostResource.cloneProjectedAtTime
In fact, completely eviscerate cloneProjectedAtTime (to be removed in
a followup CL) in favor of doing the projection of transfers and the
loading of values from the superordinate domain at call sites. This
is one of the issues that blocked the memcache audit work, since the
load inside of cloneProjectedAtTime could not be controlled by the
caller.

Note: fixed a minor bug where a subordinate host created after its superordinate domain was last transferred should have lastTransferTime==null but was previously reporting the domain's lastTransferTime.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=149769125
2017-03-13 11:22:55 -04:00
cgoldfederandBen McIlwain c23bbe35bb Improve handling of lastSubordinateChange and beef up tests
See [] for the comments that led to this.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=147796087
2017-02-17 12:23:36 -05:00
cgoldfederandBen McIlwain ab6e7b177a Fix a comment nit (can't @link to a generic type)
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=147731422
2017-02-17 12:20:45 -05:00
cgoldfederandBen McIlwain a8cf81bca2 Add @Deprecated to remove a warning
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=147478560
2017-02-17 12:10:46 -05:00
cgoldfederandBen McIlwain 135b1f95f4 Fix a javadoc error
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146934558
2017-02-08 17:42:49 -05:00
cgoldfederandBen McIlwain 91049d2c53 Replace 'host.getSubordinateHost() != null' with 'host.isSubordinate()'
This is a cleanup in preparation for the next change that does a lot
of work with subordinate hosts, to make it easier to reason about in
complex code.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146689904
2017-02-06 16:45:23 -05:00
cgoldfederandBen McIlwain 6f00059a80 Make the allowed-on restrictions in StatusValue easier to read
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146671718
2017-02-06 16:45:23 -05:00
cgoldfederandBen McIlwain 223e8c2316 Fix a null check bug in HostUpdateFlow
This bug is about a bad use of Optional.
We were checking == null instead of .isPresent(), so the check
always passed, and we always set a lastSubordinateTime when
updating hosts, even if the host was external and should have
had a null value in that field.

There is almost certainly bad data in prod in the sense
that any external host that was ever updated will have a value
for this field instead of null. However, this is not
consequential as the field is entirely meaningless for
external hosts, and will be properly reset if the host is
ever moved to be internal.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146363178
2017-02-02 17:16:32 -05:00
cgoldfederandBen McIlwain a3baa58cad Fix two deprecated uses of Files methods
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146363008
2017-02-02 17:15:10 -05:00
cgoldfederandBen McIlwain 5d2b83ffe7 Comment and deprecation nits
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146285418
2017-02-02 17:13:47 -05:00
cgoldfederandBen McIlwain f17272b197 Replace more uses of deprecated getHostText() with getHost()
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146266363
2017-02-02 17:11:00 -05:00
cgoldfederandBen McIlwain c366c50d09 Suppress a warning in a test
In general we insist that you assign the return of checkRegistrarConsoleLogin
to something, since it's annotated with @CheckReturnValue, but in this
specific test which should always throw the value is unused, so suppress the
"unused" warning.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146265522
2017-02-02 17:09:36 -05:00
cgoldfederandBen McIlwain 90a1f4a24e Replace more deprecated uses of Files methods
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146260709
2017-02-02 17:08:12 -05:00
cgoldfederandBen McIlwain b35ffd4162 Remove an unused exception
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146259756
2017-02-02 17:06:50 -05:00
cgoldfederandBen McIlwain 1577ab2c26 Remove an unused exception
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146258125
2017-02-02 17:04:06 -05:00
cgoldfederandBen McIlwain e2e37dc9f3 Replace Throwables.propagate and variants with Guava 20 versions
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146250470
2017-02-02 17:01:23 -05:00
cgoldfederandBen McIlwain e04bea39f1 Javadoc fix
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146163449
2017-02-02 16:55:51 -05:00
cgoldfederandBen McIlwain 468f1fb0f8 Fix two Gauava 20 deprecations across the tools package
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146162927
2017-02-02 16:54:28 -05:00
cgoldfederandBen McIlwain 0a2622c6ab Replace deprecated "assignableFrom" with Guava 20 "subtypeOf"
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146161987
2017-02-02 16:51:43 -05:00
cgoldfederandBen McIlwain c50a76294f Fix a deprecated method now that we are on Guava 20
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146160858
2017-02-02 16:50:20 -05:00
cgoldfederandBen McIlwain b71e47a4fb Javadoc fixes
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146160470
2017-02-02 16:48:54 -05:00
cgoldfederandBen McIlwain 7ea3db8980 Fix an annoying Javadoc nit
Even though the outer class is imported, a Javadoc reference to
a nested class needs to be fully qualified (or imported on its
own, which our style guide prohibits).

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146160210
2017-02-02 16:47:28 -05:00
cgoldfederandBen McIlwain 50c5f856a2 Document StatusValue better and add per-resource restrictions
This generalizes the "LINKED can't be anywhere" idea into more
targeted restrictions.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146158204
2017-02-02 16:46:02 -05:00
cgoldfederandBen McIlwain ddffbb0b61 Remove unnecessary filter on LINKED
We already have an @OnLoad in EppResource that removes LINKED
from any status values, so there's no reason to filter in info.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146146501
2017-02-02 16:41:39 -05:00
cgoldfederandBen McIlwain e15f75854f Remove empty method
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146146386
2017-02-02 16:40:10 -05:00
cgoldfederandBen McIlwain 565497a6d4 Change DomainInfoFlowCustomLogic to use the new resData objects
Warning: This is a breaking change to custom logic for domain info.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146033749
2017-02-02 16:23:41 -05:00
cgoldfederandBen McIlwain 0b1781b110 Make LINKED into a virtual status value
* Remove LINKED when loading an EppResource
* Enforce that you can't add it to a resource
* Ignore LINKED on xjc import of contacts and hosts

After running ResaveAllEppResourcesAction we will no
longer have persisted LINKED statuses in datastore.

In the process of writing this I discovered that RDAP
treats LINKED like any other status value and returns
the persisted value rather than the derived one. Since
this is an existing bug and is orthogonal to the changes
in this CL, I am addressing it in a separate CL.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=145585227
2017-01-30 15:03:53 -05:00
cgoldfederandBen McIlwain 4a730e0c9e Handle LINKED correctly in RDAP
LINKED is a virtual status that needs to be computed on the fly
when creating an RDAP response.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=145583415
2017-01-30 15:03:53 -05:00
cgoldfederandBen McIlwain 8071a1bdb5 Remove buildWithoutImplicitStatusValues
This was used in DomainInfoFlow to return a DomainResource with no
nameservers without making INACTIVE show up. It was nominally used
in DomainApplicationInfoFlow for the same reason, but that's just
an artifact of the old flow hierarchy since applications never have
INACTIVE set anyways. In either case, now that we have the DomainInfo
return object instead of returning DomainResource directly from the
flow, it's better handled within the flow.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=145582317
2017-01-30 15:03:53 -05:00
cgoldfederandBen McIlwain 78c07c0ebd Remove an unused parameter in DomainApplicationInfoFlow
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=145435546
2017-01-25 12:25:41 -05:00
cgoldfederandBen McIlwain d5160213e5 Get rid of cloneWithLinkedStatus
Now that we return an Info object rather than the resource itself,
there's no reason for the cloning pattern.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=145426484
2017-01-25 12:25:05 -05:00
cgoldfederandBen McIlwain 2bb61b82f4 Simplify the logic for checking for finding linked contacts/hosts.
This is preparatory refactoring for the next CL, which gets rid
of cloneWithLinkedStatus

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=145424322
2017-01-25 12:25:05 -05:00
cgoldfederandBen McIlwain 15ba52988b Remove LINKED from the disallowed statuses for contact/host delete
LINKED is supposed to be a virtual status that gets added/removed
when needed. It's mistakenly been persisted to datastore on many
resources, but the persisted value is meaningless and may not
represent reality at all. There is no reason to check for LINKED
status before kicking off a delete, since the smoke test and
[] will catch all actual linked objects, and the LINKED
status can be causing false positives for objects that are no
longer LINKED.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=145422457
2017-01-25 12:25:05 -05:00
cgoldfederandBen McIlwain 4e34fd53f4 Update documentation about manually creating RDE commands
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144451211
2017-01-18 11:05:06 -05:00
cgoldfederandBen McIlwain b0bcc1bb3d Create *InfoData objects instead of reusing *Resource objects
This is probably best from a code-cleanliness perspective anyways,
but the rationale is that tightly coupling the resources to the
info responses was a straightjacket that required all status
values and fields to be directly available on the resource. With
this change, I already was able to get rid of the preMarshal()
hackery, and I will be able to get rid of cloneWithLinkedStatus()
and most of the contents of cloneProjectedAtTime() for non-domains.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144252924
2017-01-12 14:11:51 -05:00
cgoldfederandBen McIlwain 96a71ded91 Fix some comment typos
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144238812
2017-01-12 14:10:24 -05:00
cgoldfederandBen McIlwain 0859cde790 Fix the TestServer filter support added in []
In the previous CL I added filter support for the test server, but
even though I could verify that filters were being run when debugging,
in practice the side effects of the filters (notably, ObjectifyFilter
clearing the session cache) were somehow not present in tests (and
therefore causing new as-yet unsubmitted tests that rely on proper
session caching to break).

Investigating further, the way TestServer works is that it creates
a wrapper Servlet for each route, and in that wrapper just pushes
a future onto a queue and waits on it. The actual target servlet
is run within the queue, not within the wrapper servlet's context.
I had added filters to the *wrapper* servlet, which meant that even
though they were invoked before adding the task to the queue, they
were not invoked in the process of actually running the task.

In this CL I pushed the filters into the task itself, just like the
target servlet.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144123637
2017-01-12 14:02:55 -05:00
cgoldfederandBen McIlwain 5b9219fbdd Add filter support to the test server
The lack of ObjectifyFilter means that in any tests using
RegistryTestServer the Objectify session cache persists
between "requests" in the same test method. This is wrong
but had not caused any failures because we didn't assert
anything that mattered. However, a CL I'm working on
asserts that there is a creationTime on a created resource,
which is set automatically on Datastore save, and therefore
is still null in the session cache's version of the resource
if you don't clear it before the next command. Fixing it here
separately from that CL.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=141939330
2016-12-13 18:00:15 -05:00
cgoldfederandBen McIlwain 9129c74201 Cleanup HostInfoFlowTest by removing unclear boolean param
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=140399843
2016-11-28 17:44:37 -05:00
cgoldfederandBen McIlwain f5d0de61f2 Fix bad javadoc
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=140389732
2016-11-28 17:43:10 -05:00
cgoldfederandBen McIlwain bc491fda75 Remove useless status in DomainDeleteFlow
Domains can't have LINKED status.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=140389416
2016-11-28 17:41:40 -05:00
cgoldfederandBen McIlwain bcceb87c9b Fix typo in test name
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=140373464
2016-11-28 17:38:46 -05:00
cgoldfederandBen McIlwain 5bac24186f Add the ability to dump the history of a single resource
This would have saved me 2+ hours yesterday of mucking around
in datastore and manually copying out the xml bytes so that
I could base64decode them.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=139472542
2016-11-28 11:25:06 -05:00
cgoldfederandBen McIlwain 419a04bc26 Command to resave datastore entities by websafe key
While I am doing this, promote LoadAndResaveEntityCommand from
javascrap to the main tool since it's repeatedly been useful, and
rename it and update its documentation to better reflect the
difference between that command and the one I am adding.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=139460841
2016-11-28 11:23:29 -05:00
cgoldfederandBen McIlwain 438eeb5e38 When resolving a transfer to SERVER_CANCELLED (on delete) still pass in a time
Currently we pass in null. However, from the spec:

<domain:acDate> element that contains the date and time of a
      required or completed response.  For a PENDING request, the value
      identifies the date and time by which a response is required
      before an automated response action will be taken by the server.
      For all other status types, the value identifies the date and time
      when the request was completed."
          - https://tools.ietf.org/html/rfc5731#page-16, section 3.1.3

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=139363370
2016-11-16 17:08:14 -05:00
cgoldfederandBen McIlwain fdc8ceb6bb Scope down lastTransferTime to only ContactResource, DomainResource
and HostResource.

DomainApplication is not transferable and has no need for this
field. HostResource needs it because it can be transferred with
a domain.

This is all in service of removing the ofy().load() inside of
host's cloneProjectedAtTime.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=139346925
2016-11-16 17:05:13 -05:00
cgoldfederandBen McIlwain 84009eaccb Scope down TransferData to only ContactResource and DomainResource
HostResource and DomainApplication are not transferable, (or at
least, not directly in the case of hosts) and have no need for
the TransferData field. In a flat-flow world, we can push it down
to where it's actually used.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=139201423
2016-11-15 13:47:28 -05:00
cgoldfederandBen McIlwain d5104df453 Fix two ErrorProne warnings in TypeUtils
1) Prefer .getConstructor().newInstance() over .newInstance()
   because otherwise checked exceptions can be propagated from
   the constructor even though they aren't declared.
2) Use the type T in the parameters to instantiate().

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=138874730
2016-11-15 10:50:39 -05:00
cgoldfederandBen McIlwain 1abd0e1123 Remove FieldExposers, since GAE reflection works normally
Calling setAccessible() cross-package used to fail in
the custom security manager. It never shouldn have failed,
and now it works correctly (not sure when it was fixed) so
remove these trampolines.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=138549703
2016-11-10 11:32:07 -05:00
cgoldfederandBen McIlwain ec73b5ec1c Minor comment fix
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=138119838
2016-11-10 11:16:55 -05:00
cgoldfederandBen McIlwain 8256120b3a Simplify the fee extensions.
I added shared base classes to all of the Fee extension types that
make it possible to fully ignore the version in the flows. (You
ask for a FeeCreateCommandExtension, for example, and you get one
without having to worry about which). This is an improvement over
the old code that asked you to provide a list of possible fee
extensions and then ask for the first one in preference order.

As part of this I was able to make the Fee implementation a bit
simpler as well.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=137992390
2016-11-10 11:09:23 -05:00
cgoldfederandBen McIlwain 2dd703ef3a Refactor authInfo validation
1) Don't do ofy().load() inside a model class (in DomainAuthInfo)
2) Move the one use of verify into the one caller in ResourceFlowUtils
3) Hosts don't support authInfo, so remove useless code

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=137984809
2016-11-10 11:07:54 -05:00
cgoldfederandBen McIlwain 053538b1b5 Turn Flow into an interface and inject all its fields
This concludes your flow flattening experience. Please
fill out a flow flattening satisfaction survey before
exiting.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=137903095
2016-11-02 15:19:34 -04:00
cgoldfederandBen McIlwain b3a166b0c4 Remove an unnecessary constructor
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=137539751
2016-11-02 15:19:34 -04:00
cgoldfederandBen McIlwain 1dbc5f6bb0 Replace command.applyTo() with inlined builder operations
These are much easier to understand.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=137446273
2016-11-02 15:19:34 -04:00
cgoldfederandBen McIlwain b84d7f1fb5 Remove LoggedInFlow
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=137444791
2016-11-02 15:19:34 -04:00
cgoldfederandBen McIlwain 198558901d Remove old json logging from flows
This was meant for log replay and has long been ignored/useless.
As part of this, remove execution time from EppResponse since this
was the only thing consuming it.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=137293734
2016-11-02 15:19:34 -04:00
cgoldfederandBen McIlwain 475203532e Flatten the domain and application create flows
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=136601151
2016-10-19 13:08:33 -04:00
cgoldfederandBen McIlwain 17475fe7e8 Remove spurious @Nullable
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=136160050
2016-10-14 17:00:33 -04:00
cgoldfederandBen McIlwain 064026a4a5 Use an empty interval instead of null to signal no LRP
This removes the need for some null checks

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=136146549
2016-10-14 17:00:33 -04:00
cgoldfederandBen McIlwain 70afce13fe Remove the fallback trid logic in DomainAllocateFlow.
There are no applications extant that predate the creationTrid field.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=136047561
2016-10-14 16:58:07 -04:00
cgoldfederandBen McIlwain c59227bb76 Remove useless createdRepoId from logging
It is no longer needed since we don't do log-replay and it's
annoying to support in the flat flows.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=135805088
2016-10-14 16:58:07 -04:00
cgoldfederandBen McIlwain 2d518ed666 Move thrown.expect() right before the throwing statement
aka regexing for fun and profit.

This also makes sure that there are no statements after the
throwing statement, since these would be dead code. There
were a surprising number of places with assertions after
the throw, and none of these are actually triggered in tests
ever. When I found these, I replaced them with try/catch/rethrow
which makes the assertions actually happen:

before:

// This is the ExceptionRule that checks EppException marshaling
thrown.expect(FooException.class);
doThrowingThing();
assertSomething();  // Dead code!

after:

try {
  doThrowingThing();
  assertWithMessage("...").fail();
} catch (FooException e) {
  assertSomething();
  // For EppExceptions:
  assertAboutEppExceptins().that(e).marshalsToXml();
}

To make this work, I added EppExceptionSubject.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=135793407
2016-10-14 16:58:07 -04:00
cgoldfederandBen McIlwain f3a0b78145 Move thrown.expect() right before the throwing statement
aka regexing for fun and profit.

This also makes sure that there are no statements after the
throwing statement, since these would be dead code. There
were a surprising number of places with assertions after
the throw, and none of these are actually triggered in tests
ever. When I found these, I replaced them with try/catch/rethrow
which makes the assertions actually happen:

before:

// This is the ExceptionRule that checks EppException marshaling
thrown.expect(FooException.class);
doThrowingThing();
assertSomething();  // Dead code!

after:

try {
  doThrowingThing();
  assertWithMessage("...").fail();
} catch (FooException e) {
  assertSomething();
  // For EppExceptions:
  assertAboutEppExceptins().that(e).marshalsToXml();
}

To make this work, I added EppExceptionSubject.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=135793407
2016-10-11 11:27:54 -04:00
cgoldfederandBen McIlwain cb8320ff40 Change @DoNotHydrate to work on fields, not types.
There was a circular reference when hydrating a domain with a
subordinate host, since the host references the domain. To fix
this, I redid @DoNotHydrate to be the way it should have been,
rather than the hack I had originally submitted. I also beefed
up the unit tests of the epp resource types to check for cycles.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=135792416
2016-10-11 11:27:54 -04:00
cgoldfederandBen McIlwain 049c636966 Add a missing verification to DomainApplicationUpdateFlow.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=135712711
2016-10-11 11:27:53 -04:00
cgoldfederandBen McIlwain fabbf8871c Fix more deprecated methods in truth tests
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=135481064
2016-10-07 15:29:49 -04:00
cgoldfederandBen McIlwain a09d48a4a5 Decentralize how registry phase checks are done in flows
Very few flows actually check the phase. Push the checks down to the leaf
flows so that we can remove the inherited code from ResourceFlow and replace
it with utility methods. In the process, document and test two places that
throw the exception but did not previously test it.

This introduces a temporary hack in BaseDomainCreateFlow that does something
specific for DomainApplicationCreateFlow. It will go away literally tomorrow
when I flatten that flow.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=135480538
2016-10-07 15:29:48 -04:00
cgoldfederandBen McIlwain 940fadff8a Move thrown.expect() right before runFlow() in one test file
This is how it should be in every test, but we used to not be
so careful about this. I had to touch this file anyways, so
I fixed it here.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=135387267
2016-10-07 15:29:47 -04:00
cgoldfederandBen McIlwain 886d6f8e17 Flatten the domain and domain application update flows
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=135282371
2016-10-07 14:34:06 -04:00
cgoldfederandBen McIlwain 099242e318 Flatten the domain restore flow
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=134299792
2016-10-03 15:34:34 -04:00
cgoldfederandBen McIlwain afb2811704 Flatten the domain renew flow
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=134120002
2016-09-26 13:45:39 -04:00
cgoldfederandBen McIlwain 8d4234090e Mark DomainDeleteFlow final like all the other flows
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=134101058
2016-09-26 13:33:43 -04:00
cgoldfederandBen McIlwain dbb3977bcf Delete some of the old hierarchical flow files
These have already been totally replaced by flattened flows.
There are a few left that will get deleted when the remaining
flat flows go in.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=134077510
2016-09-26 13:29:46 -04:00
cgoldfederandBen McIlwain 863eac3b11 Flatten the domain delete flows
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=133989378
2016-09-26 13:23:26 -04:00
cgoldfederandBen McIlwain 096877f03e Unify two exceptions that mean the same thing
These were historically separate due to the old flow
structure, but now they should be one exception.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=133984858
2016-09-26 13:21:54 -04:00
cgoldfederandBen McIlwain 025a4ae012 Flatten the domain check flows
Also pull out a small bit of common functionality across contact and host checks.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=133977324
2016-09-26 13:17:04 -04:00
cgoldfederandBen McIlwain 740d49e22e Contact authInfo should not be visible to all registrars in <info> flows
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=133960014
2016-09-22 14:30:05 -04:00
cgoldfederandBen McIlwain 0564bcdbc9 Add javadoc to contact/host flows and mark them final
Also make minor javadoc tweaks to domain transfer flows
to match what we are changing in contact/host flows.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=133955677
2016-09-22 14:30:05 -04:00
cgoldfederandBen McIlwain a69fc769af Flatten the domain info flows
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=133955573
2016-09-22 14:30:05 -04:00
cgoldfederandBen McIlwain 1b34f1e326 Flatten the domain transfer flows
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=133906420
2016-09-22 14:30:05 -04:00
cgoldfederandBen McIlwain aed3c0f0d0 Fix nits on flows:
Rename existingResource flows variable to be specific to EPP resource type and replace some explicit checks with helper methods.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=133774229
2016-09-22 14:12:34 -04:00
cgoldfederandBen McIlwain df70da48a2 Minor cleanups in host flows
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=133760258
2016-09-22 14:10:56 -04:00