RESTAdapter Class
The REST adapter allows your store to communicate with an HTTP server by transmitting JSON via XHR. Most Ember.js apps that consume a JSON API should use the REST adapter.
This adapter is designed around the idea that the JSON exchanged with the server should be conventional.
Success and failure
The REST adapter will consider a success any response with a status code of the 2xx family ("Success"), as well as 304 ("Not Modified"). Any other status code will be considered a failure.
On success, the request promise will be resolved with the full response payload.
Failed responses with status code 422 ("Unprocessable Entity") will be
considered "invalid". The response will be discarded, except for the
errors
key. The request promise will be rejected with a InvalidError
.
This error object will encapsulate the saved errors
value.
Any other status codes will be treated as an "adapter error". The request
promise will be rejected, similarly to the "invalid" case, but with
an instance of AdapterError
instead.
JSON Structure
The REST adapter expects the JSON returned from your server to follow these conventions.
Object Root
The JSON payload should be an object that contains the record inside a
root property. For example, in response to a GET
request for
/posts/1
, the JSON should look like this:
{
"posts": {
"id": 1,
"title": "I'm Running to Reform the W3C's Tag",
"author": "Yehuda Katz"
}
}
Similarly, in response to a GET
request for /posts
, the JSON should
look like this:
{
"posts": [
{
"id": 1,
"title": "I'm Running to Reform the W3C's Tag",
"author": "Yehuda Katz"
},
{
"id": 2,
"title": "Rails is omakase",
"author": "D2H"
}
]
}
Note that the object root can be pluralized for both a single-object response
and an array response: the REST adapter is not strict on this. Further, if the
HTTP server responds to a GET
request to /posts/1
(e.g. the response to a
findRecord
query) with more than one object in the array, Ember Data will
only display the object with the matching ID.
Conventional Names
Attribute names in your JSON payload should be the camelCased versions of the attributes in your Ember.js models.
For example, if you have a Person
model:
import Model, { attr } from '@ember-data/model';
export default Model.extend({
firstName: attr('string'),
lastName: attr('string'),
occupation: attr('string')
});
The JSON returned should look like this:
{
"people": {
"id": 5,
"firstName": "Zaphod",
"lastName": "Beeblebrox",
"occupation": "President"
}
}
Relationships
Relationships are usually represented by ids to the record in the relationship. The related records can then be sideloaded in the response under a key for the type.
{
"posts": {
"id": 5,
"title": "I'm Running to Reform the W3C's Tag",
"author": "Yehuda Katz",
"comments": [1, 2]
},
"comments": [{
"id": 1,
"author": "User 1",
"message": "First!",
}, {
"id": 2,
"author": "User 2",
"message": "Good Luck!",
}]
}
If the records in the relationship are not known when the response
is serialized it's also possible to represent the relationship as a
URL using the links
key in the response. Ember Data will fetch
this URL to resolve the relationship when it is accessed for the
first time.
{
"posts": {
"id": 5,
"title": "I'm Running to Reform the W3C's Tag",
"author": "Yehuda Katz",
"links": {
"comments": "/posts/5/comments"
}
}
}
Errors
If a response is considered a failure, the JSON payload is expected to include
a top-level key errors
, detailing any specific issues. For example:
{
"errors": {
"msg": "Something went wrong"
}
}
This adapter does not make any assumptions as to the format of the errors
object. It will simply be passed along as is, wrapped in an instance
of InvalidError
or AdapterError
. The serializer can interpret it
afterwards.
Customization
Endpoint path customization
Endpoint paths can be prefixed with a namespace
by setting the namespace
property on the adapter:
import RESTAdapter from '@ember-data/adapter/rest';
export default RESTAdapter.extend({
namespace: 'api/1'
});
Requests for the Person
model would now target /api/1/people/1
.
Host customization
An adapter can target other hosts by setting the host
property.
import RESTAdapter from '@ember-data/adapter/rest';
export default RESTAdapter.extend({
host: 'https://api.example.com'
});
Headers customization
Some APIs require HTTP headers, e.g. to provide an API key. Arbitrary
headers can be set as key/value pairs on the RESTAdapter
's headers
object and Ember Data will send them along with each ajax request.
import RESTAdapter from '@ember-data/adapter/rest';
import { computed } from '@ember/object';
export default RESTAdapter.extend({
headers: computed(function() {
return {
'API_KEY': 'secret key',
'ANOTHER_HEADER': 'Some header value'
};
}
});
headers
can also be used as a computed property to support dynamic
headers. In the example below, the session
object has been
injected into an adapter by Ember's container.
import RESTAdapter from '@ember-data/adapter/rest';
import { computed } from '@ember/object';
export default RESTAdapter.extend({
headers: computed('session.authToken', function() {
return {
'API_KEY': this.get('session.authToken'),
'ANOTHER_HEADER': 'Some header value'
};
})
});
In some cases, your dynamic headers may require data from some
object outside of Ember's observer system (for example
document.cookie
). You can use the
volatile
function to set the property into a non-cached mode causing the headers to
be recomputed with every request.
import RESTAdapter from '@ember-data/adapter/rest';
import { get } from '@ember/object';
import { computed } from '@ember/object';
export default RESTAdapter.extend({
headers: computed(function() {
return {
'API_KEY': get(document.cookie.match(/apiKey\=([^;]*)/), '1'),
'ANOTHER_HEADER': 'Some header value'
};
}).volatile()
});
Constructor
RESTAdapter
()
Item Index
Methods
- _ajaxRequest
- _buildURL
- _najaxRequest
- ajax
- ajaxOptions
- buildURL
- createRecord
- deleteRecord
- findAll
- findBelongsTo
- findHasMany
- findMany
- findRecord
- generatedDetailedMessage
- generateIdForRecord
- groupRecordsForFindMany
- handleResponse
- isInvalid
- isSuccess
- normalizeErrorResponse
- parseErrorResponse
- pathForType
- query
- queryRecord
- serialize
- shouldBackgroundReloadAll
- shouldBackgroundReloadRecord
- shouldReloadAll
- shouldReloadRecord
- sortQueryParams
- updateRecord
- urlForCreateRecord
- urlForDeleteRecord
- urlForFindAll
- urlForFindBelongsTo
- urlForFindHasMany
- urlForFindMany
- urlForFindRecord
- urlForQuery
- urlForQueryRecord
- urlForUpdateRecord
- urlPrefix
Properties
- coalesceFindRequests
- defaultSerializer deprecated
- headers
- host
- namespace
Methods
_ajaxRequest
-
options
Parameters:
-
options
ObjectjQuery ajax options to be used for the ajax request
_najaxRequest
-
options
Parameters:
-
options
ObjectjQuery ajax options to be used for the najax request
ajax
-
url
-
type
-
options
Takes a URL, an HTTP method and a hash of data, and makes an HTTP request.
When the server responds with a payload, Ember Data will call into extractSingle
or extractArray
(depending on whether the original query was for one record or
many records).
By default, ajax
method has the following behavior:
- It sets the response
dataType
to"json"
- If the HTTP method is not
"GET"
, it sets theContent-Type
to beapplication/json; charset=utf-8
- If the HTTP method is not
"GET"
, it stringifies the data passed in. The data is the serialized record in the case of a save. - Registers success and failure handlers.
Returns:
promise
ajaxOptions
-
url
-
type
-
options
Returns:
buildURL
-
modelName
-
id
-
snapshot
-
requestType
-
query
Builds a URL for a given type and optional ID.
By default, it pluralizes the type's name (for example, 'post' becomes 'posts' and 'person' becomes 'people'). To override the pluralization see pathForType.
If an ID is specified, it adds the ID to the path generated
for the type, separated by a /
.
When called by RESTAdapter.findMany()
the id
and snapshot
parameters
will be arrays of ids and snapshots.
Parameters:
Returns:
url
createRecord
-
store
-
type
-
snapshot
Called by the store when a newly created record is
saved via the save
method on a model record instance.
The createRecord
method serializes the record and makes an Ajax (HTTP POST) request
to a URL computed by buildURL
.
See serialize
for information on how to customize the serialized form
of a record.
Returns:
promise
deleteRecord
-
store
-
type
-
snapshot
Called by the store when a record is deleted.
The deleteRecord
method makes an Ajax (HTTP DELETE) request to a URL computed by buildURL
.
Returns:
promise
findAll
-
store
-
type
-
neverSet
-
snapshotRecordArray
Called by the store in order to fetch a JSON array for all of the records for a given type.
The findAll
method makes an Ajax (HTTP GET) request to a URL computed by buildURL
, and returns a
promise for the resulting payload.
Parameters:
-
store
Store -
type
Model -
neverSet
Undefineda value is never provided to this argument
-
snapshotRecordArray
SnapshotRecordArray
Returns:
promise
findBelongsTo
-
store
-
snapshot
-
url
-
relationship
Called by the store in order to fetch the JSON for the unloaded record in a
belongs-to relationship that was originally specified as a URL (inside of
links
).
For example, if your original payload looks like this:
{
"person": {
"id": 1,
"name": "Tom Dale",
"links": { "group": "/people/1/group" }
}
}
This method will be called with the parent record and /people/1/group
.
The findBelongsTo
method will make an Ajax (HTTP GET) request to the originally specified URL.
The format of your links
value will influence the final request URL via the urlPrefix
method:
-
Links beginning with
//
,http://
,https://
, will be used as is, with no further manipulation. -
Links beginning with a single
/
will have the current adapter'shost
value prepended to it. -
Links with no beginning
/
will have a parentURL prepended to it, via the current adapter'sbuildURL
.
Parameters:
Returns:
promise
findHasMany
-
store
-
snapshot
-
url
-
relationship
Called by the store in order to fetch a JSON array for
the unloaded records in a has-many relationship that were originally
specified as a URL (inside of links
).
For example, if your original payload looks like this:
{
"post": {
"id": 1,
"title": "Rails is omakase",
"links": { "comments": "/posts/1/comments" }
}
}
This method will be called with the parent record and /posts/1/comments
.
The findHasMany
method will make an Ajax (HTTP GET) request to the originally specified URL.
The format of your links
value will influence the final request URL via the urlPrefix
method:
-
Links beginning with
//
,http://
,https://
, will be used as is, with no further manipulation. -
Links beginning with a single
/
will have the current adapter'shost
value prepended to it. -
Links with no beginning
/
will have a parentURL prepended to it, via the current adapter'sbuildURL
.
Parameters:
Returns:
promise
findMany
-
store
-
type
-
ids
-
snapshots
Called by the store in order to fetch several records together if coalesceFindRequests
is true
For example, if the original payload looks like:
{
"id": 1,
"title": "Rails is omakase",
"comments": [ 1, 2, 3 ]
}
The IDs will be passed as a URL-encoded Array of IDs, in this form:
ids[]=1&ids[]=2&ids[]=3
Many servers, such as Rails and PHP, will automatically convert this URL-encoded array into an Array for you on the server-side. If you want to encode the IDs, differently, just override this (one-line) method.
The findMany
method makes an Ajax (HTTP GET) request to a URL computed by buildURL
, and returns a
promise for the resulting payload.
Returns:
promise
findRecord
-
store
-
type
-
id
-
snapshot
Called by the store in order to fetch the JSON for a given type and ID.
The findRecord
method makes an Ajax request to a URL computed by
buildURL
, and returns a promise for the resulting payload.
This method performs an HTTP GET
request with the id provided as part of the query string.
Returns:
promise
generatedDetailedMessage
-
status
-
headers
-
payload
-
requestData
Generates a detailed ("friendly") error message, with plenty of information for debugging (good luck!)
Parameters:
-
status
Number -
headers
Object -
payload
Object -
requestData
Object
Returns:
detailed error message
generateIdForRecord
-
store
-
type
-
inputProperties
If the globally unique IDs for your records should be generated on the client,
implement the generateIdForRecord()
method. This method will be invoked
each time you create a new record, and the value returned from it will be
assigned to the record's primaryKey
.
Most traditional REST-like HTTP APIs will not use this method. Instead, the ID
of the record will be set by the server, and your adapter will update the store
with the new ID when it calls didCreateRecord()
. Only implement this method if
you intend to generate record IDs on the client-side.
The generateIdForRecord()
method will be invoked with the requesting store as
the first parameter and the newly created record as the second parameter:
import Adapter from '@ember-data/adapter';
import { v4 } from 'uuid';
export default Adapter.extend({
generateIdForRecord(store, type, inputProperties) {
return v4();
}
});
Parameters:
Returns:
id
groupRecordsForFindMany
-
store
-
snapshots
Organize records into groups, each of which is to be passed to separate
calls to findMany
.
This implementation groups together records that have the same base URL but
differing ids. For example /comments/1
and /comments/2
will be grouped together
because we know findMany can coalesce them together as /comments?ids[]=1&ids[]=2
It also supports urls where ids are passed as a query param, such as /comments?id=1
but not those where there is more than 1 query param such as /comments?id=2&name=David
Currently only the query param of id
is supported. If you need to support others, please
override this or the _stripIDFromURL
method.
It does not group records that have differing base urls, such as for example: /posts/1/comments/2
and /posts/2/comments/3
Parameters:
-
store
Store -
snapshots
Array
Returns:
an array of arrays of records, each of which is to be
loaded separately by findMany
.
handleResponse
-
status
-
headers
-
payload
-
requestData
Takes an ajax response, and returns the json payload or an error.
By default this hook just returns the json payload passed to it. You might want to override it in two cases:
-
Your API might return useful results in the response headers. Response headers are passed in as the second argument.
-
Your API might return errors as successful responses with status code 200 and an Errors text or object. You can return a
InvalidError
or aAdapterError
(or a sub class) from this hook and it will automatically reject the promise and put your record into the invalid or error state.
Returning a InvalidError
from this method will cause the
record to transition into the invalid
state and make the
errors
object available on the record. When returning an
InvalidError
the store will attempt to normalize the error data
returned from the server using the serializer's extractErrors
method.
Parameters:
-
status
Number -
headers
Object -
payload
Object -
requestData
Object- the original request information
Returns:
response
isInvalid
-
status
-
headers
-
payload
Default handleResponse
implementation uses this hook to decide if the
response is an invalid error.
Parameters:
-
status
Number -
headers
Object -
payload
Object
Returns:
isSuccess
-
status
-
headers
-
payload
Default handleResponse
implementation uses this hook to decide if the
response is a success.
Parameters:
-
status
Number -
headers
Object -
payload
Object
Returns:
normalizeErrorResponse
-
status
-
headers
-
payload
Parameters:
-
status
Number -
headers
Object -
payload
Object
Returns:
errors payload
pathForType
-
modelName
Determines the pathname for a given type.
By default, it pluralizes the type's name (for example, 'post' becomes 'posts' and 'person' becomes 'people').
Pathname customization
For example, if you have an object LineItem
with an
endpoint of /line_items/
.
import RESTAdapter from '@ember-data/adapter/rest';
import { decamelize } from '@ember/string';
import { pluralize } from 'ember-inflector';
export default RESTAdapter.extend({
pathForType: function(modelName) {
var decamelized = decamelize(modelName);
return pluralize(decamelized);
}
});
Parameters:
-
modelName
String
Returns:
path
query
-
store
-
type
-
query
Called by the store in order to fetch a JSON array for the records that match a particular query.
The query
method makes an Ajax (HTTP GET) request to a URL
computed by buildURL
, and returns a promise for the resulting
payload.
The query
argument is a simple JavaScript object that will be passed directly
to the server as parameters.
Returns:
promise
queryRecord
-
store
-
type
-
query
Called by the store in order to fetch a JSON object for the record that matches a particular query.
The queryRecord
method makes an Ajax (HTTP GET) request to a URL
computed by buildURL
, and returns a promise for the resulting
payload.
The query
argument is a simple JavaScript object that will be passed directly
to the server as parameters.
Returns:
promise
serialize
-
snapshot
-
options
Proxies to the serializer's serialize
method.
Example
import Adapter from '@ember-data/adapter';
export default Adapter.extend({
createRecord(store, type, snapshot) {
let data = this.serialize(snapshot, { includeId: true });
let url = /${type.modelName}
;
// ...
}
});
Parameters:
-
snapshot
Snapshot -
options
Object
Returns:
serialized snapshot
shouldBackgroundReloadAll
-
store
-
snapshotRecordArray
This method is used by the store to determine if the store should
reload a record array after the store.findAll
method resolves
with a cached record array.
This method is only checked by the store when the store is returning a cached record array.
If this method returns true
the store will re-fetch all records
from the adapter.
For example, if you do not want to fetch complex data over a mobile
connection, or if the network is down, you can implement
shouldBackgroundReloadAll
as follows:
shouldBackgroundReloadAll(store, snapshotArray) {
let { downlink, effectiveType } = navigator.connection;
return downlink > 0 && effectiveType === '4g';
}
By default this method returns true
, indicating that a background reload
should always be triggered.
Parameters:
-
store
Store -
snapshotRecordArray
SnapshotRecordArray
Returns:
shouldBackgroundReloadRecord
-
store
-
snapshot
This method is used by the store to determine if the store should
reload a record after the store.findRecord
method resolves a
cached record.
This method is only checked by the store when the store is returning a cached record.
If this method returns true
the store will re-fetch a record from
the adapter.
For example, if you do not want to fetch complex data over a mobile
connection, or if the network is down, you can implement
shouldBackgroundReloadRecord
as follows:
shouldBackgroundReloadRecord(store, snapshot) {
let { downlink, effectiveType } = navigator.connection;
return downlink > 0 && effectiveType === '4g';
}
By default, this hook returns true
so the data for the record is updated
in the background.
Returns:
shouldReloadAll
-
store
-
snapshotRecordArray
This method is used by the store to determine if the store should
reload all records from the adapter when records are requested by
store.findAll
.
If this method returns true
, the store will re-fetch all records from
the adapter. If this method returns false
, the store will resolve
immediately using the cached records.
For example, if you are building an events ticketing system, in which users can only reserve tickets for 20 minutes at a time, and want to ensure that in each route you have data that is no more than 20 minutes old you could write:
shouldReloadAll(store, snapshotArray) {
let snapshots = snapshotArray.snapshots();
return snapshots.any((ticketSnapshot) => {
let lastAccessedAt = ticketSnapshot.attr('lastAccessedAt');
let timeDiff = moment().diff(lastAccessedAt, 'minutes');
if (timeDiff > 20) {
return true;
} else {
return false;
}
});
}
This method would ensure that whenever you do store.findAll('ticket')
you
will always get a list of tickets that are no more than 20 minutes old. In
case a cached version is more than 20 minutes old, findAll
will not
resolve until you fetched the latest versions.
By default, this method returns true
if the passed snapshotRecordArray
is empty (meaning that there are no records locally available yet),
otherwise, it returns false
.
Note that, with default settings, shouldBackgroundReloadAll
will always
re-fetch all the records in the background even if shouldReloadAll
returns
false
. You can override shouldBackgroundReloadAll
if this does not suit
your use case.
Parameters:
-
store
Store -
snapshotRecordArray
SnapshotRecordArray
Returns:
shouldReloadRecord
-
store
-
snapshot
This method is used by the store to determine if the store should
reload a record from the adapter when a record is requested by
store.findRecord
.
If this method returns true
, the store will re-fetch a record from
the adapter. If this method returns false
, the store will resolve
immediately using the cached record.
For example, if you are building an events ticketing system, in which users can only reserve tickets for 20 minutes at a time, and want to ensure that in each route you have data that is no more than 20 minutes old you could write:
shouldReloadRecord(store, ticketSnapshot) {
let lastAccessedAt = ticketSnapshot.attr('lastAccessedAt');
let timeDiff = moment().diff(lastAccessedAt, 'minutes');
if (timeDiff > 20) {
return true;
} else {
return false;
}
}
This method would ensure that whenever you do store.findRecord('ticket', id)
you will always get a ticket that is no more than 20 minutes old. In
case the cached version is more than 20 minutes old, findRecord
will not
resolve until you fetched the latest version.
By default this hook returns false
, as most UIs should not block user
interactions while waiting on data update.
Note that, with default settings, shouldBackgroundReloadRecord
will always
re-fetch the records in the background even if shouldReloadRecord
returns
false
. You can override shouldBackgroundReloadRecord
if this does not
suit your use case.
Returns:
sortQueryParams
-
obj
By default, the RESTAdapter will send the query params sorted alphabetically to the server.
For example:
store.query('posts', { sort: 'price', category: 'pets' });
will generate a requests like this /posts?category=pets&sort=price
, even if the
parameters were specified in a different order.
That way the generated URL will be deterministic and that simplifies caching mechanisms in the backend.
Setting sortQueryParams
to a falsey value will respect the original order.
In case you want to sort the query parameters with a different criteria, set
sortQueryParams
to your custom sort function.
import RESTAdapter from '@ember-data/adapter/rest';
export default RESTAdapter.extend({
sortQueryParams(params) {
let sortedKeys = Object.keys(params).sort().reverse();
let len = sortedKeys.length, newParams = {};
for (let i = 0; i < len; i++) {
newParams[sortedKeys[i]] = params[sortedKeys[i]];
}
return newParams;
}
});
Parameters:
-
obj
Object
Returns:
updateRecord
-
store
-
type
-
snapshot
Called by the store when an existing record is saved
via the save
method on a model record instance.
The updateRecord
method serializes the record and makes an Ajax (HTTP PUT) request
to a URL computed by buildURL
.
See serialize
for information on how to customize the serialized form
of a record.
Returns:
promise
urlForCreateRecord
-
modelName
-
snapshot
Builds a URL for a record.save()
call when the record was created
locally using store.createRecord()
.
Example:
import RESTAdapter from '@ember-data/adapter/rest';
export default RESTAdapter.extend({
urlForCreateRecord(modelName, snapshot) {
return this._super(...arguments) + '/new';
}
});
Returns:
url
urlForDeleteRecord
-
id
-
modelName
-
snapshot
Builds a URL for a record.save()
call when the record has been deleted locally.
Example:
import RESTAdapter from '@ember-data/adapter/rest';
export default RESTAdapter.extend({
urlForDeleteRecord(id, modelName, snapshot) {
return this._super(...arguments) + '/destroy';
}
});
Returns:
url
urlForFindAll
-
modelName
-
snapshot
Builds a URL for a store.findAll(type)
call.
Example:
import JSONAPIAdapter from '@ember-data/adapter/json-api';
export default JSONAPIAdapter.extend({
urlForFindAll(modelName, snapshot) {
return 'data/comments.json';
}
});
Parameters:
-
modelName
String -
snapshot
SnapshotRecordArray
Returns:
url
urlForFindBelongsTo
-
id
-
modelName
-
snapshot
Builds a URL for fetching an async belongsTo
relationship when a url
is not provided by the server.
Example:
import JSONAPIAdapter from '@ember-data/adapter/json-api';
export default JSONAPIAdapter.extend({
urlForFindBelongsTo(id, modelName, snapshot) {
let baseUrl = this.buildURL(modelName, id);
return ${baseUrl}/relationships
;
}
});
Returns:
url
urlForFindHasMany
-
id
-
modelName
-
snapshot
Builds a URL for fetching an async hasMany
relationship when a URL
is not provided by the server.
Example:
import JSONAPIAdapter from '@ember-data/adapter/json-api';
export default JSONAPIAdapter.extend({
urlForFindHasMany(id, modelName, snapshot) {
let baseUrl = this.buildURL(modelName, id);
return ${baseUrl}/relationships
;
}
});
Returns:
url
urlForFindMany
-
ids
-
modelName
-
snapshots
Builds a URL for coalescing multiple store.findRecord(type, id)
records into 1 request when the adapter's coalesceFindRequests
property is true
.
Example:
import RESTAdapter from '@ember-data/adapter/rest';
export default RESTAdapter.extend({
urlForFindMany(ids, modelName) {
let baseUrl = this.buildURL();
return ${baseUrl}/coalesce
;
}
});
Parameters:
-
ids
Array -
modelName
String -
snapshots
Array
Returns:
url
urlForFindRecord
-
id
-
modelName
-
snapshot
Builds a URL for a store.findRecord(type, id)
call.
Example:
import JSONAPIAdapter from '@ember-data/adapter/json-api';
export default JSONAPIAdapter.extend({
urlForFindRecord(id, modelName, snapshot) {
let baseUrl = this.buildURL(modelName, id, snapshot);
return ${baseUrl}/users/${snapshot.adapterOptions.user_id}/playlists/${id}
;
}
});
Returns:
url
urlForQuery
-
query
-
modelName
Builds a URL for a store.query(type, query)
call.
Example:
import RESTAdapter from '@ember-data/adapter/rest';
export default RESTAdapter.extend({
host: 'https://api.github.com',
urlForQuery (query, modelName) {
switch(modelName) {
case 'repo':
return https://api.github.com/orgs/${query.orgId}/repos
;
default:
return this._super(...arguments);
}
}
});
Parameters:
-
query
Object -
modelName
String
Returns:
url
urlForQueryRecord
-
query
-
modelName
Builds a URL for a store.queryRecord(type, query)
call.
Example:
import RESTAdapter from '@ember-data/adapter/rest';
export default RESTAdapter.extend({
urlForQueryRecord({ slug }, modelName) {
let baseUrl = this.buildURL();
return ${baseUrl}/${encodeURIComponent(slug)}
;
}
});
Parameters:
-
query
Object -
modelName
String
Returns:
url
urlForUpdateRecord
-
id
-
modelName
-
snapshot
Builds a URL for a record.save()
call when the record has been updated locally.
Example:
import RESTAdapter from '@ember-data/adapter/rest';
export default RESTAdapter.extend({
urlForUpdateRecord(id, modelName, snapshot) {
return /${id}/feed?access_token=${snapshot.adapterOptions.token}
;
}
});
Returns:
url
Properties
coalesceFindRequests
Boolean
By default the RESTAdapter will send each find request coming from a store.find
or from accessing a relationship separately to the server. If your server supports passing
ids as a query string, you can set coalesceFindRequests to true to coalesce all find requests
within a single runloop.
For example, if you have an initial payload of:
{
post: {
id: 1,
comments: [1, 2]
}
}
By default calling post.get('comments')
will trigger the following requests(assuming the
comments haven't been loaded before):
GET /comments/1
GET /comments/2
If you set coalesceFindRequests to true
it will instead trigger the following request:
GET /comments?ids[]=1&ids[]=2
Setting coalesceFindRequests to true
also works for store.find
requests and belongsTo
relationships accessed within the same runloop. If you set coalesceFindRequests: true
store.findRecord('comment', 1);
store.findRecord('comment', 2);
will also send a request to: GET /comments?ids[]=1&ids[]=2
Note: Requests coalescing rely on URL building strategy. So if you override buildURL
in your app
groupRecordsForFindMany
more likely should be overridden as well in order for coalescing to work.
defaultSerializer
String
deprecated
If you would like your adapter to use a custom serializer you can
set the defaultSerializer
property to be the name of the custom
serializer.
Note the defaultSerializer
serializer has a lower priority than
a model specific serializer (i.e. PostSerializer
) or the
application
serializer.
import Adapter from '@ember-data/adapter';
export default Adapter.extend({
defaultSerializer: 'django'
});
headers
Object
Some APIs require HTTP headers, e.g. to provide an API
key. Arbitrary headers can be set as key/value pairs on the
RESTAdapter
's headers
object and Ember Data will send them
along with each ajax request. For dynamic headers see headers
customization.
import RESTAdapter from '@ember-data/adapter/rest';
import { computed } from '@ember/object';
export default RESTAdapter.extend({
headers: computed(function() {
return {
'API_KEY': 'secret key',
'ANOTHER_HEADER': 'Some header value'
};
})
});
host
String
An adapter can target other hosts by setting the host
property.
import RESTAdapter from '@ember-data/adapter/rest';
export default RESTAdapter.extend({
host: 'https://api.example.com'
});
Requests for the Post
model would now target https://api.example.com/post/
.
namespace
String
Endpoint paths can be prefixed with a namespace
by setting the namespace
property on the adapter:
import RESTAdapter from '@ember-data/adapter/rest';
export default RESTAdapter.extend({
namespace: 'api/1'
});
Requests for the Post
model would now target /api/1/post/
.


Messages that have been in Trash more than 30 days will be automatically deleted.
No conversations in Trash.


Current year:
Choose between total emissions or emissions per capita
Click on a country to see its trends by year


Home
Your Packages
Ship
Track
About Us
WTF !?
The Crew
...
...
Login
Planet Express.
Our crew is replaceable.
Your package isn't.
WTF? »


- s - Variable in class com.model.player.Player
-
- save(Board, File) - Method in interface com.controller.GameBoard
-
save board's information into file
- saveHistory(File) - Method in class com.model.board.Board
-
save to history to the file
- screen - Static variable in class com.view.gui.lib.DimensionUtilities
-
Screen information
- get size screen.getW
and screen.getH
- serialVersionUID - Static variable in class com.model.history.BoardHistory
-
use serialVersionUID from JDK 1.0.2 for interoperability
- setCol(int) - Method in class com.model.player.Location
-
Set the new column (x-axis).
- setHeader(String) - Method in class com.view.gui.panel.InputPanel
-
set header of panel
- setKey(K) - Method in class com.model.implementation.Pair
-
- setRow(int) - Method in class com.model.player.Location
-
Set the new row (y-axis).
- setSymbol(Location, Symbol) - Method in class com.model.board.Board
-
set new symbol in to the board at
location
.
- SettingPage - Class in com.view.gui
-
- SettingPage() - Constructor for class com.view.gui.SettingPage
-
- setValue(V) - Method in class com.model.implementation.Pair
-
- Shape - Class in com.model.board.shape
-
This class is for creating board size.
- Shape(int, int) - Constructor for class com.model.board.shape.Shape
-
create the shape with any size by parameters.
- Shape() - Constructor for class com.model.board.shape.Shape
-
- Shape.NegativeShapeException - Exception in com.model.board.shape
-
if Shape in negative number
- size - Variable in class com.model.board.Board
-
- SpringUtilities - Class in com.view.gui.lib
-
A 1.4 file that provides utility methods for
creating form- or grid-style layouts with SpringLayout.
- SpringUtilities() - Constructor for class com.view.gui.lib.SpringUtilities
-
- Square - Class in com.model.board.shape
-
The Board Size with square shape (Both row and column are equal).
- Square(int) - Constructor for class com.model.board.shape.Square
-
- Square() - Constructor for class com.model.board.shape.Square
-
- start() - Method in interface com.controller.GameBoard
-
The state of game is playing
- start() - Method in class com.controller.OXGame
-
- State() - Constructor for enum com.controller.GameBoard.State
-
- state - Variable in class com.controller.OXGame
-
- Symbol - Enum in com.model.player
-
The enum that represent the symbol of each player.
- Symbol() - Constructor for enum com.model.player.Symbol
-
- symbol - Static variable in class com.view.gui.SettingPage
-
- SymbolPanel - Class in com.view.gui.panel
-
symbol combobox that will get all valid symbol and create the commobox of them.
- SymbolPanel() - Constructor for class com.view.gui.panel.SymbolPanel
-
create new panel


Nursing students stage sit-in
They demand better facilities
by Staff ReporterThe students of SI-MET College of Nursing, Malampuzha, staged a sit-in on the campus on Monday demanding better facilities.
About 650 students of BSc Nursing and Post-BSc Nursing programmes took part in the day-long agitation.
They alleged that the college authorities were siphoning off the PTA funds without spending it for development. They demanded that hostel facilities be improved. The students warned that they would launch an agitation if the authorities did not heed their demands.


HTML5 Boilerplate homepage | Documentation table of contents
This is an intentional use of protocol-relative URLs
N.B. Using a protocol-relative URL for files that exist on a CDN is
problematic when you try to view your local files directly in the browser. The
browser will attempt to fetch the file from your local file system. We
recommend that you use a local server to test your pages (or Dropbox). This can
be done using Python 2.x by running python -m SimpleHTTPServer
or Python 3.x
with python -m http.server
from your local directory, using Ruby by installing
and running asdf, and by installing any one of
XAMPP, MAMP, or WAMP.
max-age=3600
compares to the specific
version of max-age=31536000
, which means you won't get the benefits of
long-term caching.head
.The advantage to placing it in the head
is that you will track a user's
pageview even if they leave the page before it has been fully loaded. However,
putting the code at the bottom keeps all the scripts together and reinforces
that scripts at the bottom are the right move.
You can use Initializr to create a custom build that includes HTML5 Boilerplate with Twitter Bootstrap.
Read more about how HTML5 Boilerplate and Twitter Bootstrap complement each other.
If this is occurring, it is because a user has the Skype browser extension installed.
Use the following CSS to prevent Skype from formatting the numbers on your page:
span.skype_pnh_container {
display: none !important;
}
span.skype_pnh_print_container {
display: inline !important;
}
No. You don't normally replace the foundations of a house once it has been built. There is nothing stopping you from trying to work in the latest changes but you'll have to assess the costs/benefits of doing so.
Please ask for help on StackOverflow.


Exchanges
_aggregate
- Messages In
-
- Octets In
-
- Routed
-
- Dropped
-
- Size dropped
-
- No Route
-
- No Exchange
-
| User |
Address |
Tx (to Client) |
|
Rx (from Client) |
| Msgs | Octets |
Msgs | Octets |
Routed |
Dropped |
Size Dropped |
No Route |
No Exchange |
Prefix
Program
Invocations
Approximate Latency


Traffic¶
MONSTeR currently supports 3 traffic models:
- Video streaming
- Web browsing
- Full buffer
The first 2 models are generated from realistic traffic sources, while the full buffer model is primarily included for testing and benchmarking. All the traces used in MONSTeR consist of timestamps in seconds and a corresponding packet size in bits. The traces are generated for approximately 600 seconds. If the simulation is longer than that, then the TrafficGenerator will just restart at the beginning of the source.
Video streaming¶
The video streaming trace is based on the sampling of the popular Big buck bunny video*. The version used is the MP4-encoded 1920x1080 availble here . The sampling is done using FFmpeg .
Web browsing¶
The web browsing model is based on a browsing session of CNN. The trace has been captured with the following setup:
- Date and time: 2018.05.02 at 09.30 CET
- Device: Samsung SM-G950F
- Browser: FireFox v.59.0.2
- Monitoring app: tPacketCapture 2.0.1, Taosoftware co.,LTD
- Network: LTE-A
The trace has been generated for 102 seconds of browsing and then replicated 6 times. During the 102 seconds the following actions were performed:
- At
t = 0
the website was intiially requested - At
t = 39 s
the first article on the main page was requested. - At
t = 56 s
the second article was requested. - At
t = 84 s
the third article was requested. - At
t = 102 s
the capture ended with the third article fully rendered.
In all cases, the following step had not been taken until the page was fully rendered in the browser.
Full buffer¶
The full buffer traffic model differs from the previous 2 ones as it is a non-realistic model. This traffic model simply ensures constant 10000000 bits every traffic timeslot of 0.1 seconds.
-
class
traffic.
trafficGeneratorBulk
¶ trafficGeneratorBulk - This is used to create traffic generators in bulk, assign UEs to traffic generators and starting time to UEs
[Users, TrafficGenerators] = trafficGeneratorBulk(Users, Param)
Traffic Generator¶
-
class
traffic.
TrafficGenerator
(trafficModel, associatedUeIds, Param)¶ This class is used to handle the generation of the traffic in the network A TrafficGenerator object is created for each type of traffic profile used in the simulation A traffic profile is made of:
TrafficType: a traffic type (e.g. video streaming or full buffer) ArrivalMode: a process for the arrival mode (e.g. Poisson) TrafficSource: a traffic source with the data used to create packets AssociatedUeIds: an array of UE IDs that are associated with this traffic generator -
getStartingTime
(ueId)¶ Get starting time is used to get the starting time for an individual UE
UeId: UE ID
-
updateTransmissionQueue
(User, simTime)¶ Update transmission queue is used to update the data in the queue for a specific user
Parameters: - User (
ue.UserEquipment
) – User is the UE - simTime – is the current simulation time
- User (
-


--- layout: post title: My Boxee Remote OR How Cool is Open Source! date: 2011-07-12 12:00:00 permalink: /2011/07/My-Boxee-Remote-OR-How-Cool-is-Open-Source disqus_url: http://evendanan.net/2011/07/My-Boxee-Remote-OR-How-Cool-is-Open-Source categories: [android] tags: [boxee] ---
For the last year I've been using Boxee as my media center application, and it rulez!!11! I encourage you all to try it out. But this is not the point of this post. I'm going to talk about remote controlling Boxee.
My Boxee is installed on a Linux machine, and I controlled it with Supware's Boxee Remote, a simple gesture based remote control: swipes (navigating) or a tap (select). As you can understand, you don't need to look at the remote UI, or to remember where each action button is located on the UI: just swipe! And with Boxee exceptional UI/UX the whole experience has totally won the WAF!
For a few months everything went great. Some remote crashes from time to time, but all in all, it was good. And then my curious side got the best of me: I found out that Supware's remote is actually open-sourced, which was the incentive to start hacking it. I fixed a few issues, and added some too and sent a patch to Supware. But it was not integrated very well, mostly because the guy had a new daughter (CONGRATS!), and had very little time to play with a working project.
How hard is it to write my own Boxee remote? Not so much!
I took Supware's code for reference, browsed Boxee's official iPhone remote control code,
browsed XBMC code and API and read Boxee
remote API.
Coded for a few hours (took base64 code from iharder),
and that's it! I have my own version!
Currently, this remote App is not published to the Market here. It is available at my Github account.


Welcome to Ship Underground! Your source of professor reviews at Shippensburg University!
Simply click on the Professors tab in the navbar to get started!


The purpose of this lab was to capture a subject in focus from a short distance away, with an out of focus background. The subject must show a degree of detail to create a successful shallow depth of field shot. For this shot, a shutter speed of 1/40 seconds was used, an ISO of 100 with a f-stop 4.2 for aperture. This relatively slower shutter speed allowed for the background to appear blurred or out of focus with the subject appearing very clear and in plenty of detail. The aperture of f4.2 adds to the detail of this shot, giving sharpness to the small details on the pinecone. The ISO level of 100 is in relation to light sensitivity, this low ISO means that the object will appear clear. A high ISO would mean the object would appear brighter but would also add a level of distortion the background.


Previous | Contents | Index | Next
You're given a grid with several black squares, and a list of numbers. Your objective is to fill every empty square with a digit, so each number appears once in the grid when reading from left-to-right or from top-to-bottom.
This is an implementation of Nansuke, which was invented by Nikoli. It's sometimes known as Number Skeleton.
More information: https://www.nikoli.co.jp/en/puzzles/nansuke/
Crossing uses the same control scheme as Solo.
Left-click to select a cell, then type a number on your keyboard to enter it. Press Backspace or Space to clear a cell.
Right-click a cell, then type a number to add a pencil mark. Pencil marks can be used for any purpose.
You can also use the arrow keys to move the selected cell around. Press Enter to toggle between entering number and entering pencil marks.
These parameters are available from the 'Custom...' option on the 'Type' menu.


"FALLOW-GROUND" The expression, “Break up your fallow ground”(Hos. 10:12; Jeremiah 4:3) means, “Do not sow your seed among thorns”, i.e., break off all your evil habits; clear your hearts of weeds, in order that they may be prepared for the seed of righteousness. Land was allowed to lie fallow that it might become more fruitful; but when in this condition, it soon became overgrown with thorns and weeds. The cultivator of the soil was careful to “break up” his fallow ground, i.e., to clear the field of weeds, before sowing seed in it.  Land was allowed to lie fallow that it might become more fruitful; but when in this condition, it soon became overgrown with thorns and weeds. The cultivator of the soil was careful to “break up” his fallow ground, i.e., to clear the field of weeds, before sowing seed in it.


Since I announced Codeine, I mainly worked on live code diagnostics and code completion.
Live diagnostics are now working well.
I modified Codeine's console area to provide live diagnostics, as well as the output console.
The whole stuff now looks like this:
On the right, you can select the output console, or the code diagnostics (here with a well formed code).
Diagnostics are provided in real-time:
In that example, I didn't include the necessary C library headers, hence the errors.
Code completion is more complex, but it's now beginning to work:
Code-completion results still needs to be filtered, and the final output will of course provide useful infos, just as xCode autocompletion.
So stay tuned. I'll keep posting here updates about Codeine. : )


Mayor! Mayor! v1.2 Update Log
April 2, 2018
(Beginning of Log History)
Update Description
Hello everyone! This is the first update log for Mayor! Mayor! Thanks for reading this. The are a lot of changes with this update. Most of them are bug-related and just general QoL stuff, but there are also several major changes as well. The most notable change is that the 2-cost cities no longer have all of the buildings available to construct. I decided that granting all of the buildings so quickly and in a single map was detrimental to the fun of the game and the challenge behind the different objectives. Read below for the other changes.
Updates
- Updated available building lists for Dolina, Amrhein, and Montagne. Previously built buildings that are no longer allowed in those cities have been refunded 1.25 times their original cost.
- Swapped menu locations of Plainsfield and Hillsboro
- Visual Update made to Hotel and Hospital so that it is less confusing that their "road" doesn't count as an actual road.
- Updated Neighborhood so that it only requires a road on one side and only connects to the road on that side. This change was also made to avoid confusion around roads being on building tiles.
- Added a building count to the objectives list for objectives that require a certain number of buildings so users do not have to count themselves.
- Updated effect description text for Arcade and Bank to better reflect the buildings they truly effect.
- Changed Bus Station so that it gains earnings for all other Bus Stations but can not be placed within 5 spaces of other bus stations. Also changed UI to display error message if need be.
- Changed Bus Station text to better describe its new functionality.
- Changed the City Hall and Monument buildings so that only one instance of each is allowed to be built. Also updated UI to display error message if need be.
- Updated City Hall and Monument effect descriptions to reflect singleton changes.
- Added Settings option to toggle on/off a set of buttons that will rotate the in-game view.
Balancing Changes
- Buffed the Library by making its cost and population requirement to be comparable with the Book Store. (Cost: $10,000, Pop. Need: 10,000).
- Nerfed the Fast-Food Restaurant, Sandwich Shop, and Pizzeria by upping their population need to 5000 from 3000.
- Buffed the Grocery Store by reducing its cost to $20,000 from $40,000.
- Buffed Brewery, Chinese Restaurant, Italian Restaurant, an Mexican Restaurant by reducing their cost to $10,000 from $20,000.
- Nerfed Brewery, Chinese Restaurant, Italian Restaurant, and Mexican Restaurant by reducing their earnings to $80 from $100.
- Buffed the Supercenter by reducing its cost from $200,000 to $100,000.
- Nerfed the Bus Station's effect by reducing its bonus earnings to $5 for each other Bus Station instead of $10.
- Buffed the Bus Station by reducing its cost to $7500 from $10000.
Bug Fixes
- Fixed Arcade effect description text from "2 spaces away" to "4 spaces away" to reflect the actual effect.
- Fixed an issue where the earnings logo was not being set properly for "pay-reward" buildings in the build menu (i.e., Research Center)
- Fixed text issue where "pay-reward" buildings had effect text that displayed "Unique" twice.
- Fixed a bug where the building "ghost's" rotation would be different than that of the previously placed building when Repositioning a building via the Edit Menu.
- Fixed visual issues with the grid tile so that the red tile mesh does not clip with the road.
- Fixed a bug where the Arcade would always display its bonus symbol even if its effect was not activated.
- Fixed a bug where a building's road direction arrows could be displayed incorrectly if the building was facing a non-existent tile (i.e., off the grid or onto a non-available tile).


Overview
Package
Class
Use
Tree
Deprecated
Index
Help
PREV PACKAGE
NEXT PACKAGE
FRAMES
NO FRAMES
All Classes
Package org.jclouds.vcloud.director.v1_5.domain
Class Summary
AbstractVAppType
Represents a base type for VAppType and VmType.
AbstractVAppType.Builder<B extends AbstractVAppType.Builder<B>>
AccessSetting
Specifies who can access the resource.
AccessSetting.Builder
AccessSettings
A list of access settings for a resource.
AccessSettings.Builder
AdminCatalog
Admin representation of the container for meta data (key-value pair) associated to different entities in the system.
AdminCatalog.Builder<B extends AdminCatalog.Builder<B>>
AdminOrg
The AdminOrg represents an administrative view of an organization.
AdminOrg.Builder<B extends AdminOrg.Builder<B>>
AdminVdc
Provides an administrative view of a vDC.
AdminVdc.Builder<T extends AdminVdc.Builder<T>>
Capabilities
Collection of supported hardware capabilities.
Capabilities.Builder
CapacityType<T extends CapacityType<T>>
Represents a capacity of a given resource.
CapacityType.Builder<T extends CapacityType<T>>
CapacityWithUsage
Represents a capacity and usage of a given resource.
CapacityWithUsage.Builder
CaptureVAppParams
Represents the parameters for capturing a vApp to a vApp template.
CaptureVAppParams.Builder<B extends CaptureVAppParams.Builder<B>>
Catalog
Container for references to
VAppTemplate
and
Media
objects.
Catalog.Builder<B extends Catalog.Builder<B>>
CatalogItem
Contains a reference to a VappTemplate or Media object and related metadata.
CatalogItem.Builder<B extends CatalogItem.Builder<B>>
CatalogItems
Represents a list of catalog item references.
CatalogItems.Builder
CatalogReference
CatalogReference.Builder<B extends CatalogReference.Builder<B>>
CatalogsList
Container for ReferenceType elements that reference catalogs.
CatalogsList.Builder
CatalogType
Container for references to VappTemplate and Media objects.
CatalogType.Builder<B extends CatalogType.Builder<B>>
CloneMediaParams
Represents parameters for copying a media resource and optionally deleting the source.
CloneMediaParams.Builder<B extends CloneMediaParams.Builder<B>>
CloneVAppParams
Represents parameters for copying a vApp and optionally deleting the source.
CloneVAppParams.Builder<B extends CloneVAppParams.Builder<B>>
CloneVAppTemplateParams
Represents parameters for copying a vApp template and optionally deleting the source.
CloneVAppTemplateParams.Builder<B extends CloneVAppTemplateParams.Builder<B>>
ComposeVAppParams
Represents vApp composition parameters.
ComposeVAppParams.Builder<B extends ComposeVAppParams.Builder<B>>
ComputeCapacity
Represents a compute capacity with units.
ComputeCapacity.Builder
ControlAccessParams
Used to control access to resources.
ControlAccessParams.Builder
CustomizationSection
Represents a vApp template customization settings section.
CustomizationSection.Builder<B extends CustomizationSection.Builder<B>>
CustomOrgLdapSettings
Used when OrgLdapMode=CUSTOM to define connection details for the organization's LDAP service.
CustomOrgLdapSettings.AuthenticationMechanism
CustomOrgLdapSettings.Builder<T extends CustomOrgLdapSettings.Builder<T>>
CustomOrgLdapSettings.ConcreteBuilder
CustomOrgLdapSettings.ConnectorType
DeployVAppParams
Represents vApp/VM deployment parameters.
DeployVAppParams.Builder
DhcpService
Represents a DHCP network service.
DhcpService.Builder
Entity
An entity.
Entity.Builder<B extends Entity.Builder<B>>
EntityType
Basic entity type in the vCloud object model.
EntityType.Builder<B extends EntityType.Builder<B>>
Error
The standard error message type used in the vCloud REST API.
Error.Builder
ExternalNetwork
Admin representation of external network.
ExternalNetwork.Builder<T extends ExternalNetwork.Builder<T>>
File
Represents a file to be transferred (uploaded or downloaded).
File.Builder<B extends File.Builder<B>>
FirewallRule
Represents a firewall rule.
FirewallRule.Builder
FirewallRuleProtocols
Java class for anonymous complex type.
FirewallRuleProtocols.Builder
FirewallService
Represents a network firewall service.
FirewallService.Builder
Group
Represents group in the system.
Group.Builder<B extends Group.Builder<B>>
GroupsList
Container for ReferenceType elements that reference groups.
GroupsList.Builder
GuestCustomizationSection
Represents a guest customization settings.
GuestCustomizationSection.Builder<B extends GuestCustomizationSection.Builder<B>>
InstantiateOvfParams
Represents vApp instantiation from OVF parameters
InstantiateOvfParams.Builder<B extends InstantiateOvfParams.Builder<B>>
InstantiateVAppParams
Parameters for Instantiating a vApp
InstantiateVAppParams.Builder<B extends InstantiateVAppParams.Builder<B>>
InstantiateVAppParamsType
Represents vApp instantiation parameters.
InstantiateVAppParamsType.Builder<B extends InstantiateVAppParamsType.Builder<B>>
InstantiateVAppTemplateParams
Represents vApp template instantiation parameters.
InstantiateVAppTemplateParams.Builder<B extends InstantiateVAppTemplateParams.Builder<B>>
InstantiationParams
Represents a list of ovf:Section to configure for instantiating a VApp.
InstantiationParams.Builder
IpAddresses
A list of IpAddresses.
IpAddresses.Builder
IpRange
Represents a range of IP addresses, start and end inclusive.
IpRange.Builder
IpRanges
A list of IpAddresses.
IpRanges.Builder
IpScope
Specify network settings like gateway, network mask, DNS servers, IP ranges, etc.
IpScope.Builder
IpsecVpnLocalPeer
Gives more details of local peer end point.
IpsecVpnLocalPeer.Builder
IpsecVpnManagedPeerType<T extends IpsecVpnManagedPeerType<T>>
IpsecVpnManagedPeerType.Builder<T extends IpsecVpnManagedPeerType<T>>
IpsecVpnPeerType<T extends IpsecVpnPeerType<T>>
IpsecVpnRemotePeer
Gives more details of remote peer end point.
IpsecVpnRemotePeer.Builder
IpsecVpnService
Represents an IPSec-VPN network service.
IpsecVpnService.Builder
IpsecVpnThirdPartyPeer
Gives more details of third party peer end point.
IpsecVpnThirdPartyPeer.Builder
IpsecVpnTunnel
Represents details of an IPSec-VPN tunnel.
IpsecVpnTunnel.Builder
IpsecVpnUnmanagedPeerType<T extends IpsecVpnUnmanagedPeerType<T>>
LeaseSettingsSection
Represents the lease settings section for a vApp.
LeaseSettingsSection.Builder<B extends LeaseSettingsSection.Builder<B>>
Link
A link.
Link.Builder<B extends Link.Builder<B>>
Link.Rel
Media
Represents a media.
Media.Builder<B extends Media.Builder<B>>
Media.ImageType
MediaInsertOrEjectParams
Represents parameters for inserting/ejecting media to VM.
MediaInsertOrEjectParams.Builder
Metadata
Represents a set of metadata
Metadata.Builder<B extends Metadata.Builder<B>>
MetadataEntry
Represents a metadata entry
MetadataEntry.Builder<B extends MetadataEntry.Builder<B>>
MetadataValue
Represents a metadata entry
MetadataValue.Builder<B extends MetadataValue.Builder<B>>
NatOneToOneBasicRule
Represents the NAT basic rule for one to one mapping of internal and external IP addresses from a network.
NatOneToOneBasicRule.Builder
NatOneToOneVmRule
Represents the NAT rule for one to one mapping of VM NIC and external IP addresses from a network.
NatOneToOneVmRule.Builder
NatPortForwardingRule
Represents the NAT rule for port forwarding between internal IP/port and external IP/port.
NatPortForwardingRule.Builder
NatRule
Represents a NAT rule.
NatRule.Builder
NatService
Represents a NAT network service.
NatService.Builder
NatVmRule
Represents the NAT rule for port forwarding between VM NIC/port and external IP/port.
NatVmRule.Builder
Network
Network.Builder<T extends Network.Builder<T>>
Network.FenceMode
NetworkAssignment
Represents mapping between a VM and vApp network.
NetworkAssignment.Builder
NetworkConfigSection
Represents the network config section of a vApp.
NetworkConfigSection.Builder<B extends NetworkConfigSection.Builder<B>>
NetworkConfiguration
Returns a network configuration
NetworkConfiguration.Builder
NetworkConnection
Represents a network connection.
NetworkConnection.Builder
NetworkConnectionSection
Represents a list of network cards existing in a VM.
NetworkConnectionSection.Builder<B extends NetworkConnectionSection.Builder<B>>
NetworkFeatures
Represents features of a network.
NetworkFeatures.Builder
Networks
Container for ReferenceType elements that reference ExternalNetwork objects.
Networks.Builder
NetworkServiceType<T extends NetworkServiceType<T>>
Represents a network service
NetworkServiceType.Builder<T extends NetworkServiceType<T>>
Org
Represents an organization.
Org.Builder<B extends Org.Builder<B>>
OrgEmailSettings
Defines the email settings for an organization.
OrgEmailSettings.Builder<B extends OrgEmailSettings.Builder<B>>
OrgGeneralSettings
Defines general org settings.
OrgGeneralSettings.Builder<B extends OrgGeneralSettings.Builder<B>>
OrgLdapGroupAttributes
Defines how a group is imported from LDAP.
OrgLdapGroupAttributes.Builder
OrgLdapSettings
Base settings for LDAP connection
OrgLdapSettings.Builder<B extends OrgLdapSettings.Builder<B>>
OrgLdapSettings.LdapMode
OrgLdapUserAttributes
Defines how LDAP attributes are used when importing a user.
OrgLdapUserAttributes.Builder
OrgLeaseSettings
Defines default lease durations and policies for an organization.
OrgLeaseSettings.Builder<B extends OrgLeaseSettings.Builder<B>>
OrgList
A list of organizations.
OrgList.Builder
OrgNetwork
OrgNetwork.Builder<T extends OrgNetwork.Builder<T>>
OrgPasswordPolicySettings
Java class for OrgPasswordPolicySettings complex type.
OrgPasswordPolicySettings.Builder<B extends OrgPasswordPolicySettings.Builder<B>>
OrgSettings
Describes various settings for some organization.
OrgSettings.Builder<B extends OrgSettings.Builder<B>>
OrgVAppTemplateLeaseSettings
Defines default lease policies for vAppTemplate on organization level.
OrgVAppTemplateLeaseSettings.Builder<B extends OrgVAppTemplateLeaseSettings.Builder<B>>
Owner
Represents the owner of this entity.
Owner.Builder<B extends Owner.Builder<B>>
ParamsType
A basic type used to specify parameters for operations.
ParamsType.Builder<B extends ParamsType.Builder<B>>
ProductSectionList
Essentially a container with a list of product sections.
ProductSectionList.Builder<B extends ProductSectionList.Builder<B>>
Property
Contains key/value pair as property.
Property.Builder
PublishCatalogParams
Parameters used when publishing catalogs.
PublishCatalogParams.Builder
RasdItemsList
Represents a list of RASD items.
RasdItemsList.Builder<B extends RasdItemsList.Builder<B>>
RecomposeVAppParams
Represents vApp re-composition parameters.
RecomposeVAppParams.Builder<B extends RecomposeVAppParams.Builder<B>>
Reference
A reference to a resource.
Reference.Builder<B extends Reference.Builder<B>>
References
This is the container for returned elements in referenceView
References.Builder<T extends References.Builder<T>>
RelocateParams
Parameters to be used for vm relocation.
RelocateParams.Builder
Resource
A resource.
Resource.Builder<B extends Resource.Builder<B>>
ResourceEntityType
Base type that represents a resource entity such as a vApp template or virtual media.
ResourceEntityType.Builder<B extends ResourceEntityType.Builder<B>>
ResourceType
The base type for all objects in the vCloud model.
ResourceType.Builder<B extends ResourceType.Builder<B>>
RoleReference
RoleReference.Builder<B extends RoleReference.Builder<B>>
RoleReferences
Container for ReferenceType elements that reference RoleType objects.
RoleReferences.Builder<B extends RoleReferences.Builder<B>>
RouterInfo
Specifies router information.
RouterInfo.Builder
RuntimeInfoSection
Runtime information for a specific vm
RuntimeInfoSection.Builder<B extends RuntimeInfoSection.Builder<B>>
ScreenTicket
The ticket for accessing the console of a VM.
ScreenTicket.Builder
Session
Returns a representation of the current session that can serve as a single entry point to the system, as it provides user, admin, and extension (sysadmin) entry links depending on the privileges of the current user.
Session.Builder
SessionWithToken
Session and its corresponding token
SessionWithToken.Builder
SmtpServerSettings
Specifies connection details for the organization s SMTP server.
SmtpServerSettings.Builder
SourcedCompositionItemParam
Represents a composition item.
SourcedCompositionItemParam.Builder
StaticRoute
Java class for StaticRoute complex type.
StaticRoute.Builder
StaticRoutingService
Represents Static Routing network service.
StaticRoutingService.Builder
SyslogServerSettings
Syslog server settings.
SyslogServerSettings.Builder
Task
Represents an asynchronous or long-running task in the vCloud environment.
Task.Builder<B extends Task.Builder<B>>
Task.Status
TasksList
Task List
TasksList.Builder<B extends TasksList.Builder<B>>
UndeployVAppParams
Represents vApp/VM undeployment parameters.
UndeployVAppParams.Builder
UploadVAppTemplateParams
Represents vApp Template upload parameters.
UploadVAppTemplateParams.Builder<B extends UploadVAppTemplateParams.Builder<B>>
User
Represents users in the vCloud system.
User.Builder<B extends User.Builder<B>>
UsersList
Container for ReferenceType elements that reference users.
UsersList.Builder
VApp
Represents a vApp.
VApp.Builder<B extends VApp.Builder<B>>
VAppChildren
Represents vApp children.
VAppChildren.Builder
VAppCreationParams
Represents vApp creation parameters.
VAppCreationParams.Builder<B extends VAppCreationParams.Builder<B>>
VAppCreationParamsType
Represents vApp creation parameters.
VAppCreationParamsType.Builder<B extends VAppCreationParamsType.Builder<B>>
VAppNetwork
Represents a vApp network.
VAppNetwork.Builder<B extends VAppNetwork.Builder<B>>
VAppNetworkConfiguration
Represents a VApp network configuration.
VAppNetworkConfiguration.Builder<B extends VAppNetworkConfiguration.Builder<B>>
VAppReference
VAppReference.Builder<B extends VAppReference.Builder<B>>
VAppTemplate
Represents a vApp template.
VAppTemplate.Builder<B extends VAppTemplate.Builder<B>>
VAppTemplateChildren
Represents vApp template children.
VAppTemplateChildren.Builder
Vdc
Represents a virtual data center (vDC).
Vdc.Builder<B extends Vdc.Builder<B>>
Vdcs
Represents a list of references to virtual data centers.
Vdcs.Builder
Vm
Represents a VM.
Vm.Builder<B extends Vm.Builder<B>>
VmPendingQuestion
Represents a question which vSphere issued for a VM in a stuck state(WAITING_FOR_INPUT).
VmPendingQuestion.Builder<B extends VmPendingQuestion.Builder<B>>
VmQuestionAnswer
Represents a VM answer to a question when the VM is in a stuck (WAITING_FOR_INPUT) state.
VmQuestionAnswer.Builder
VmQuestionAnswerChoice
Represents a pair of ID and text of an answer choice of a VM question.
VmQuestionAnswerChoice.Builder
VMWareTools
VMWareTools.Builder
Enum Summary
Error.Code
NetworkConnection.IpAddressAllocationMode
ResourceEntityType.Status
Overview
Package
Class
Use
Tree
Deprecated
Index
Help
PREV PACKAGE
NEXT PACKAGE
FRAMES
NO FRAMES
All Classes
Copyright © 2009-2012
jclouds
. All Rights Reserved.


--- layout: post title: new Blog() date: 2013-09-16 23:01:11.000000000 +00:00 categories: - Announcements tags: [] status: publish type: post published: true meta: _publicize_pending: '1' _knews_automated: '0' author: login: maxhorstmann display_name: Max first_name: '' last_name: '' ---
So, I'm starting a new blog. Specifically, another coding blog. My previous personal blog has been quiet for a while and also wasn't very focused. It's time for a clean start. Expect me to write about
Thanks for stopping by and stay tuned!


Crisis on Infinite Earths Photos Gather Three Clark Kents for the First Time
by Jim JohnsonThe CW has released several publicity photos from the second chapter of its upcoming "Crisis on Infinite Earths" event, revealing three incarnations of Clark Kent/Superman slated to appear in the Arrowverse crossover.
None of different versions are seen together, but all photos are scenes from the upcoming December 9 episode of Batwoman. One photo shows Smallville's Tom Welling as Clark, and another features Supergirl's Tyler Hoechlin as Clark on what appears to be the same set. The two photos portend these two incarnations at least stand to meet early on in the crossover.
Click the button below to start this article in quick view.
Hoechlin is also seen as Superman in another shot, as is DC's Legends of Tomorrow's Brandon Routh. Routh appears as both Clark and the Kingdom Come incarnation of the Man of Steel, and the photos seem to be from scenes taking place inside the offices of The Daily Planet. It appears from the photos collectively that Hoechlin and Routh will meet face-to-face as their respective versions of Superman.
The Flash's Candice Patton and Supergirl's Elizabeth Tulloch are also featured as their respective characters, Iris West Allen and Lois Lane. Another features Kevin Conroy in his role as Kingdom Come's Bruce Wayne. The collection of publicity stills also contains Ruby Rose as Kate Kane, confirming that she's not being completely crowded out of her own show.
"Crisis on Infinite Earths" begins Sunday, Dec. 8 and 8 p.m. ET/PT on Supergirl, then continues in Batwoman on Monday, Dec. 9 at 8 p.m. ET/PT and in The Flash on Tuesday, Dec. 10 at 8 p.m. ET/PT. After the winter hiatus, the crossover will conclude on Tuesday, Jan. 14 in Arrow at 8 p.m. ET/PT and in DC's Legends of Tomorrow at 9 p.m. ET/PT.
https://schema.orgBreadcrumbListListItem1Homehttps://www.cbr.com/ListItem2TVhttps://www.cbr.com/category/tv/ListItem3TV Newshttps://www.cbr.com/category/tv/news-tv/ListItem4Crisis on Infinite Earths Photos Gather Three Clark Kents for the First Timehttps://www.cbr.com/crisis-on-infinite-earths-superman-clark-kent-photos/


| FRAMEWORK | ||
|---|---|---|
| When should we use 3C's framework and 4P's framework? | 58 views | 80 likes |
| When should we use 3C's framework and 4P's framework? | 58 views | 80 likes |
| When should we use 3C's framework and 4P's framework? | 58 views | 80 likes |
| INTERVIEW SKILL & TIPS | ||
|---|---|---|
| When should we use 3C's framework and 4P's framework? | 58 views | 80 likes |
| When should we use 3C's framework and 4P's framework? | 58 views | 80 likes |
| When should we use 3C's framework and 4P's framework? | 58 views | 80 likes |
| SPECFIC CASES | ||
|---|---|---|
| When should we use 3C's framework and 4P's framework? | 58 views | 80 likes |
| When should we use 3C's framework and 4P's framework? | 58 views | 80 likes |
| When should we use 3C's framework and 4P's framework? | 58 views | 80 likes |
| OTHERS | ||
|---|---|---|
| When should we use 3C's framework and 4P's framework? | 58 views | 80 likes |
| When should we use 3C's framework and 4P's framework? | 58 views | 80 likes |
| When should we use 3C's framework and 4P's framework? | 58 views | 80 likes |


| Package | Description |
|---|---|
| starkcoder.failfast.fails | |
| starkcoder.failfast.fails.objects | |
| starkcoder.failfast.fails.objects.strings |
| Class and Description |
|---|
| IObjectStringDefaultFail
Fail specification throwing an exception when a default check asserts.
|
| IObjectStringEmptyFail
Fail specification throwing an exception when an empty check asserts.
|
| IObjectStringEqualsFail
Fail specification throwing an exception when an equals check asserts.
|
| IObjectStringFailer
Specification grouping all String fail specifications.
|
| IObjectStringGreaterFail
Fail specification throwing an exception when a greater check asserts.
|
| IObjectStringGreaterOrEqualsFail
Fail specification throwing an exception when a greater or equals check asserts.
|
| IObjectStringLessFail
Fail specification throwing an exception when a less check asserts.
|
| IObjectStringLessOrEqualsFail
Fail specification throwing an exception when a less or equals check asserts.
|
| IObjectStringMatchingFail
Fail specification throwing an exception when a regex check asserts.
|
| IObjectStringNotDefaultFail
Fail specification throwing an exception when a not-default check asserts.
|
| IObjectStringNotEmptyFail
Fail specification throwing an exception when a not-empty check asserts.
|
| IObjectStringNotEqualsFail
Fail specification throwing an exception when a not-equals check asserts.
|
| IObjectStringNotMatchingFail
Fail specification throwing an exception when a regex check does NOT assert.
|
| IObjectStringNotNullAndNotEmptyFail
Fail specification throwing an exception when a not-null-and-not-empty check asserts.
|
| IObjectStringNotNullFail
Fail specification throwing an exception when a not-null check asserts.
|
| IObjectStringNotSameFail
Fail specification throwing an exception when a not-same check asserts.
|
| IObjectStringNullFail
Fail specification throwing an exception when a null check asserts.
|
| IObjectStringNullOrEmptyFail
Fail specification throwing an exception when a null-or-empty check asserts.
|
| IObjectStringSameFail
Fail specification throwing an exception when a same check asserts.
|
| IObjectStringWithoutPostfixFail
Fail specification throwing an exception when a non-postfix check asserts.
|
| IObjectStringWithoutPrefixFail
Fail specification throwing an exception when a non-prefix check asserts.
|
| IObjectStringWithoutSubstringFail
Fail specification throwing an exception when a non-substring check asserts.
|
| IObjectStringWithPostfixFail
Fail specification throwing an exception when a postfix check asserts.
|
| IObjectStringWithPrefixFail
Fail specification throwing an exception when a prefix check asserts.
|
| IObjectStringWithSubstringFail
Fail specification throwing an exception when a substring check asserts.
|
| Class and Description |
|---|
| IObjectStringDefaultFail
Fail specification throwing an exception when a default check asserts.
|
| IObjectStringEmptyFail
Fail specification throwing an exception when an empty check asserts.
|
| IObjectStringEqualsFail
Fail specification throwing an exception when an equals check asserts.
|
| IObjectStringFailer
Specification grouping all String fail specifications.
|
| IObjectStringGreaterFail
Fail specification throwing an exception when a greater check asserts.
|
| IObjectStringGreaterOrEqualsFail
Fail specification throwing an exception when a greater or equals check asserts.
|
| IObjectStringLessFail
Fail specification throwing an exception when a less check asserts.
|
| IObjectStringLessOrEqualsFail
Fail specification throwing an exception when a less or equals check asserts.
|
| IObjectStringMatchingFail
Fail specification throwing an exception when a regex check asserts.
|
| IObjectStringNotDefaultFail
Fail specification throwing an exception when a not-default check asserts.
|
| IObjectStringNotEmptyFail
Fail specification throwing an exception when a not-empty check asserts.
|
| IObjectStringNotEqualsFail
Fail specification throwing an exception when a not-equals check asserts.
|
| IObjectStringNotMatchingFail
Fail specification throwing an exception when a regex check does NOT assert.
|
| IObjectStringNotNullAndNotEmptyFail
Fail specification throwing an exception when a not-null-and-not-empty check asserts.
|
| IObjectStringNotNullFail
Fail specification throwing an exception when a not-null check asserts.
|
| IObjectStringNotSameFail
Fail specification throwing an exception when a not-same check asserts.
|
| IObjectStringNullFail
Fail specification throwing an exception when a null check asserts.
|
| IObjectStringNullOrEmptyFail
Fail specification throwing an exception when a null-or-empty check asserts.
|
| IObjectStringSameFail
Fail specification throwing an exception when a same check asserts.
|
| IObjectStringWithoutPostfixFail
Fail specification throwing an exception when a non-postfix check asserts.
|
| IObjectStringWithoutPrefixFail
Fail specification throwing an exception when a non-prefix check asserts.
|
| IObjectStringWithoutSubstringFail
Fail specification throwing an exception when a non-substring check asserts.
|
| IObjectStringWithPostfixFail
Fail specification throwing an exception when a postfix check asserts.
|
| IObjectStringWithPrefixFail
Fail specification throwing an exception when a prefix check asserts.
|
| IObjectStringWithSubstringFail
Fail specification throwing an exception when a substring check asserts.
|
| Class and Description |
|---|
| IObjectStringDefaultFail
Fail specification throwing an exception when a default check asserts.
|
| IObjectStringEmptyFail
Fail specification throwing an exception when an empty check asserts.
|
| IObjectStringEqualsFail
Fail specification throwing an exception when an equals check asserts.
|
| IObjectStringGreaterFail
Fail specification throwing an exception when a greater check asserts.
|
| IObjectStringGreaterOrEqualsFail
Fail specification throwing an exception when a greater or equals check asserts.
|
| IObjectStringLessFail
Fail specification throwing an exception when a less check asserts.
|
| IObjectStringLessOrEqualsFail
Fail specification throwing an exception when a less or equals check asserts.
|
| IObjectStringMatchingFail
Fail specification throwing an exception when a regex check asserts.
|
| IObjectStringNotDefaultFail
Fail specification throwing an exception when a not-default check asserts.
|
| IObjectStringNotEmptyFail
Fail specification throwing an exception when a not-empty check asserts.
|
| IObjectStringNotEqualsFail
Fail specification throwing an exception when a not-equals check asserts.
|
| IObjectStringNotMatchingFail
Fail specification throwing an exception when a regex check does NOT assert.
|
| IObjectStringNotNullAndNotEmptyFail
Fail specification throwing an exception when a not-null-and-not-empty check asserts.
|
| IObjectStringNotNullFail
Fail specification throwing an exception when a not-null check asserts.
|
| IObjectStringNotSameFail
Fail specification throwing an exception when a not-same check asserts.
|
| IObjectStringNullFail
Fail specification throwing an exception when a null check asserts.
|
| IObjectStringNullOrEmptyFail
Fail specification throwing an exception when a null-or-empty check asserts.
|
| IObjectStringSameFail
Fail specification throwing an exception when a same check asserts.
|
| IObjectStringWithoutPostfixFail
Fail specification throwing an exception when a non-postfix check asserts.
|
| IObjectStringWithoutPrefixFail
Fail specification throwing an exception when a non-prefix check asserts.
|
| IObjectStringWithoutSubstringFail
Fail specification throwing an exception when a non-substring check asserts.
|
| IObjectStringWithPostfixFail
Fail specification throwing an exception when a postfix check asserts.
|
| IObjectStringWithPrefixFail
Fail specification throwing an exception when a prefix check asserts.
|
| IObjectStringWithSubstringFail
Fail specification throwing an exception when a substring check asserts.
|
The MIT License (MIT) - Copyright © 2014-2015 Keld Oelykke. All Rights Reserved.


--- layout: default hero-message: Volunteer hero-image: url(../assets/images/stock-images/volunteer.jpg) ---
We are looking for professors and industry professionals to volunteer at our events. You can help us by being a judge at our Design Reviews and/or Final Competition.
Please contact us at<EMAIL_ADDRESS>We require each high school team to give a presentation to a panel of professors and industry professionals during the first few weeks of the competition season. The purpose of the reviews is to encourage high school students to present their ideas and to receive feedback on their design.
At Final Competition, teams can earn awards for superior mechanical, electrical, and software robot design. We invite professors and industry professionals to judge these designs and decide on an award winner in each category.


IBV cells OpenUrl virus IAV influenza human TMPRSS Fig. CrossRef fusion expression trypsin cell cleavage temperature activation Abstract FREE Text protease A/H Virol TTSP protein viral hemagglutinin levels KLK membrane replication HEKT MDCK data proteases B/Vic Calu- acidic knockdown HA, TTSPs polykaryons transfected different A/HN HA. Influenza cells, cleaved high similar (A) Science exposed host HeLa activated canine day expressed using TMPRSS, higher min produced spread (see Klenk SEM Web adaptation avian cells. compared efficiency high-content respiratory role Experiment Panel airway followed infection medium number post proteins proved pseudoparticles range seasonal seen set-up. showed (for B/Victoria Cell infected low pandemic tissue viruses western (B) (C) B/Yam assay band blot figure generated imaging mean plasmid plasmids preference trypsin, virus. (in Biol Data Download Figure Garten Open P-value Suzuki TMPRSS. Table activate broad carrying control data-hide-link-title=""> data-icon-position="" efficient efficiently epithelial formation fusion. growth healthy mRNA new performed polykaryon relative shown tab °C. -well Böttcher-Friebertshäuser RNA activity cooler exogenous lung measured particles receiving serine viruses. °C, A). B). C). HAs, IBV, IBV. Russell [[#xB]] absence containing exhibits expressing human-adapted indicated lines mice normalized p.i. plus presence required siRNA target total trypsin. van (B, (B/Yam) (Thermo (i.e. (ordinary ;<;div ANOVA, Fisher IAV, IAVs Kawaoka Matrosovich Microbiol PCR Pöhlmann S). Virology Viruses [[#xB]]C abundant acid-stability analysis cell-cell contrast, encoding head humans incubated intrinsic later, measure neuraminidase one-way plasmid, plates receptor samples showing state test). transport type xmlns=";http://www.w.org//xhtml";>;<;span µg/ml (Fig. ****≤ Barclay Chem D). Expression FCS Figs GEO HBE Hence, KLK, NP. Nakajima PBS Polykaryon Pseudoparticles ST/matriptase Sci Scientific). Steinhauer Watanabe Yang above. activating added additional airways appears assess assessed consistent control. determined distinct effect entry function fusion-competent gene hemagglutinin. identified induce inhibitors left lower mildly p.i., panel particle producer proteases. quantified reduced related residue results sequences single superior temperature-sensitive temperatures transduction transfection, treated treatment trigger used versus virulence zoonotic <;em>;versus<;/em>; (D) (N= (normalized (to ****[[#x]] ***≤ Activation B/Yamagata Bertram Besides, Canine Chen Dunnett[[#x]]s Dunnett’s Gen HA-activating Host IAV. KLKs Liu Reed Representative S), TMPRSSD/HAT TMPRSSD/HAT, TTSP- Takeda Virus Zhang achieve activates activator adaptive airways, airways. analyzed antibody applied bands blocked blots broader buffer cause caused change clathrin coding contained culture days demonstrated did difference dispensable donors epithelium. evolution experiments factor features folding haemagglutinin highly humans, i.e. impact increased intensity involved just kidney line lineage lineages long luminescence matriptase method mice. monobasic nasal observation pCAGEN pCAGEN-HA pH. polymerase present primary pronounced protease, protein. proteolytic provided pseudotypes rely replaced require requires reverse severe significant sites strains study subtypes support surface sustained tested tract transduced transmissibility trypsin: upper values viability