Shri Javadekar
af245d67fe
JCLOUDS-334. Return correct status while creating containers in Swift.
...
BlobStore.createContainerInLocation is supposed to return True if the
container was newly created and False if the container already
existed. This commit makes that happen for Swift blobstores.
2013-10-07 21:48:57 -07:00
Andrew Gaul
f1fc63ab76
Add whitespace around keywords and braces
2013-09-30 09:39:29 -07:00
Andrew Gaul
06b8cd7ac5
JCLOUDS-305. Disable S3 virtual host buckets for generic S3
...
Not all S3-compatible providers support virtual host buckets and thus
we should disable this feature by default. Continue to enable virtual
host buckets for AWS-S3 which supports this although this feature
suffers from DNS settling issues. Ran ran integration tests against
AWS-S3 and Scality using its S3 API.
2013-09-27 16:22:42 -07:00
Niraj Tolia
73464c3877
[JCLOUDS-302] Remove unnecessary String construction in HttpUtils
2013-09-27 16:15:20 -07:00
Adrian Cole
9f12b6309d
JCLOUDS-303. unwrap should permit subtypes
2013-09-27 15:58:25 -07:00
Niraj Tolia
e8ef5c0665
[JCLOUDS-301] Reduce reflection overhead of Invokable.getParameters()
...
By caching the results from Invokable.getParameters(), this commit
improves request signing performance (GETs and PUTs) for S3 by >
3X. These performance problems were seen in production and diagnosed
using the YourKit profiler.
2013-09-27 07:49:09 -07:00
Andrew Gaul
3e5aa78521
Upgrade to Guava 15.0
...
Release notes:
https://code.google.com/p/guava-libraries/wiki/Release15
2013-09-09 10:54:43 -07:00
Andrew Gaul
310a898bc3
Upgrade to Guava 15.0-rc1
...
Release notes:
https://code.google.com/p/guava-libraries/wiki/Release15
2013-09-04 19:56:00 -07:00
Andrew Gaul
d8490f872d
Enable some Xlint warnings
...
Also address a handful of warnings.
2013-09-04 19:45:44 -07:00
Andrew Gaul
5261f760b7
Support Integer.MAX_VALUE size PUTs
...
Previously jclouds enforced Integer.MAX_VALUE - 1 size. Tested
against Atmos Online.
2013-08-28 13:52:06 -07:00
Diwaker Gupta
12f29fd8a9
JCLOUDS-217: Only decode strings that are actually encoded.
...
* Update HttpRequestTests to account for change in urlDecode.
* Related to JCLOUDS-200
2013-08-27 22:03:48 -04:00
Diwaker Gupta
622aec5566
Modify Strings2.urlDecode to input a string.
...
This is consistent with urlEncode. Also consistently use urlDecoder in
DecodingMultimap for values.
2013-08-22 20:43:32 -04:00
Ignasi Barrera
d8fe0c9c21
Added method to generate the AuthorizationException with only a message
2013-08-07 00:09:04 +02:00
Ignasi Barrera
4621176516
Generalized the Arg0ToPagedIterable to propagate all args
...
Generalized the Arg0ToPagedIterable to allow to propagating
all arguments. This will help building PagedIterables for
api methods that require more than one argument to be invoked.
2013-07-25 10:31:09 +02:00
Andrew Gaul
ac58a70e32
Do not eagerly check for existence in FilePayload
...
This is a TOCTOU violation and FilePayload.getInput already propagates
this. This commit allows external callers like jclouds-cli to
introspect on the exception type, returning a more friendly error
message in some situations.
2013-07-15 23:34:12 -07:00
Diwaker Gupta
d52f460562
Introduce StripExpectHeader filter and a property to control it.
...
Some providers (specifically HP Cloud and Google Cloud Storage) do not
properly support Expect: 100-continue headers. JDK7 is stricter in its
handling of the Expect header than JDK6 -- in particular, it expects
servers to properly respond to an expect header and times out only if a
prior timeout did not exist on the underlying HTTP connection. As a
result, JDK7 tests against these providers hang and fail.
This commit introduces a new filter -- appropriate called
StripExpectHeader -- that is controlled by the property
jclouds.strip-expect-header. The property defaults to false to preserve
existing behavior but allows applications to tweak Expect header
handling.
Tested by running HPCS live tests with JDK7 -- previously most of these
tests would fail with timeouts.
Closes JCLOUDS-181
2013-07-11 15:04:05 -07:00
zack-shoylev
1178f47cd7
Upgrade to gson 2.2.4
...
https://issues.apache.org/jira/browse/JCLOUDS-117
2013-07-11 13:52:32 -07:00
Andrew Gaul
60e9062894
Checkstyle fixes
2013-07-09 14:09:44 -07:00
JoshVote
8db0218cf7
JCLOUDS-126 - Support and tests for region selection in swift-keystone BlobStore
2013-07-03 13:44:46 -07:00
Andrew Bayer
5f524ee6c9
JCLOUDS-101 - Add SecurityGroupExtension for compute
...
- Adds the SecurityGroupExtension to compute, with tests and stub
support.
- Gets everything else to actually build against this.
- Unifies on compute's IpPermission/IpProtocol, eliminating EC2's.
- Converters from EC2/Nova/CloudStack SecurityGroup (and rules, for
the latter two) to the compute SecurityGroup (and rules, etc).
- EC2SecurityGroupExtension and tests.
- AWSEC2SecurityGroupExtension and tests - depends on JCLOUDS-99.
2013-06-26 14:59:01 -07:00
Andrew Gaul
1a6be0eb67
Do not repeat array type in initializers
2013-06-18 21:02:50 -07:00
Anton Panasenko
ff3405c967
JCLOUDS-127: Added a method to check if the context is open
...
- Added isOpen in Context interface
- Refactoring Closer class:
- method close can only call once
- method close is threadsafe
- added method getState
2013-06-18 00:31:51 +02:00
Andrew Bayer
32ea520f34
Add license headers to src/test/resources where possible, more fine-grained RAT exclusions
2013-06-12 16:45:29 -07:00
Andrew Gaul
d113b0ba63
Remove Strings2.replaceAll(String, Pattern, String)
...
Replace with direct calls to
Pattern.matcher(String).replaceAll(String).
2013-06-03 14:41:27 -07:00
Andrew Gaul
64e9a4e4c6
Remove Strings2.replaceAll(String, char, String)
...
String.replace(String, String) serves this purpose better.
2013-06-03 14:41:18 -07:00
Ignasi Barrera
334bd36730
JCLOUDS-82: Added method to get the underlying Api from a View
2013-05-27 22:13:25 +02:00
Andrew Phillips
653c946ec2
JCLOUDS-75: Support '-incubating' release versions
2013-05-21 13:49:31 -04:00
adriancole
ed2f18a1af
JCLOUDS-31. updated to ASF headers via mvn com.mycila.maven-license-plugin:maven-license-plugin:format
2013-05-16 21:30:37 -07:00
adriancole
fa10fc4838
JCLOUDS-31. remove malformed, duplicate, or unnecessary headers
2013-05-16 21:30:32 -07:00
Andrew Phillips
7cf8d611af
JCLOUDS-52: Updating JcloudsVersion to search under org.apache.jclouds
...
Group ID changed from org.jclouds with JCLOUDS-15
2013-05-16 13:37:13 -04:00
Andrew Bayer
7923009eb5
JCLOUDS-37. Fix RAT violations in incubator-jclouds, master branch
2013-05-13 19:17:50 -07:00
Andrew Bayer
446ac67884
JCLOUDS-30. Switch to 2 space indents for POM files.
2013-05-13 12:04:43 -07:00
Andrew Bayer
259b04ff1c
JCLOUDS-16. Switch groupId to org.apache.jclouds, change parent POM, remove old distributionManagement content, add ASF repos.
2013-05-13 12:04:42 -07:00
Andrew Gaul
ddfb8e58a5
JCLOUDS-27: Allow repeatable Payload with InputSupplier input
...
This allows HTTP retries to work. Also remove duplicated calls to
ByteStreams.slice.
2013-05-10 15:48:03 -07:00
Everett Toews
2bbd03939f
Removed trystack-nova provider.
2013-04-26 10:54:49 -05:00
Andrew Gaul
fff2fa6e05
Address Checkstyle violations
...
This commit requires temporarily disabling some checks.
2013-04-17 16:21:21 -07:00
Andrew Gaul
04fad88fd3
Remove duplicate Utils getters
...
Rename callers as required.
2013-04-12 16:24:37 -07:00
Andrew Gaul
4037585e42
Deprecate ExecutorService getters
2013-04-12 14:08:52 -07:00
adriancole
fbe9f945e7
rename bindMappedApi -> bindSyncToAsyncApi
2013-04-10 08:57:32 -07:00
adriancole
7db3af1b1e
renamed ignored exception to ignored
2013-04-10 08:15:57 -07:00
adriancole
5bc0678a1c
naming convention and warning feedback from issue #1511
2013-04-10 08:13:13 -07:00
adriancole
61067d3683
Deprecated remaining code related to RestContext, RestApiMetadata, and RestClientModule for ApiContext, HttpApiMetadata, HttpApiModule
2013-04-09 22:07:43 -07:00
adriancole
053197fe61
deprecated all top-level Async apis and clients
2013-04-09 10:18:31 -07:00
adriancole
36dd831b84
moved all code off use of RestContext except CloudStackContext, which will use it until 1.7
2013-04-09 09:23:31 -07:00
adriancole
8771f75d50
added apiVersion field to BaseContextLiveTest so that CloudStack tests don't need to rely on as much injection
2013-04-09 09:23:30 -07:00
adriancole
4d0e6ae699
added type token means for buildApi() as it is in fact used
2013-04-09 09:23:26 -07:00
adriancole
8f68de0018
added temporary workaround for AutoCloseable which will be deleted in jclouds 1.7
2013-04-08 17:11:33 -07:00
adriancole
88871c9fe9
issue #1501 : add Closeable annotation to all top-level apis
2013-04-08 16:13:09 -07:00
adriancole
4ced43566b
issue #1501 : allow Closeable, top-level apis to be used as opposed to RestContext
2013-04-08 15:14:59 -07:00
Ioannis Canellos
a03d4183ae
Add @Inject to the Compute class.
2013-04-05 01:51:43 +03:00
Adrian Cole
3e9c3dc6e6
Merge pull request #1490 from maginatics/do-slice-string-cast
...
Cast String Payloads to String
2013-04-03 17:56:45 -07:00
Adrian Cole
0f1675cc18
Merge pull request #1489 from maginatics/remove-input-suppliers
...
Remove InputSuppliers.of(String)
2013-04-03 17:55:25 -07:00
Adrian Cole
366a728b08
Merge pull request #1480 from maginatics/http-put-zero-content-length
...
Emit Content-Length: 0 for empty PUTs
2013-04-03 17:21:20 -07:00
Andrew Gaul
be1da2501e
Remove InputSuppliers.of(String)
...
Callers rarely want this functionality and should call
ByteStreams.newInputStreamSupplier when they do.
2013-04-03 15:52:43 -07:00
Andrew Gaul
10d29f5ef2
Cast String Payloads to String
2013-04-03 15:51:44 -07:00
Adrian Cole
d938349229
Merge pull request #1488 from maginatics/remove-input-suppliers-of-input-stream
...
Remove InputSuppliers.of(InputStream)
2013-04-03 15:39:58 -07:00
Andrew Gaul
648e6c2a8a
Remove InputSuppliers.of(InputStream)
...
This method breaks the contract of an InputSupplier since every call
to getInput returns the same InputStream instance. This is
particularly dangerous when one of the callers mutates or closes the
InputStream which causes all others callers to fail.
2013-04-03 13:19:42 -07:00
Andrew Gaul
843ed57c8a
Emit Content-Length: 0 for empty PUTs
...
HttpUrlConnection reverts Content-Length: 0 on PUT without
doOutput(true), similar to POST. This commit allows Azure container
create to succeed. Closes #1420 .
2013-04-01 13:42:59 -07:00
Andrew Phillips
db4e4af931
Not making methods of core Java classes accessible in Reflection2
2013-03-30 17:00:43 -04:00
Andrew Gaul
eb2a9b6ed5
Correct HttpAsyncClient.put Javadoc
2013-03-27 12:44:29 -07:00
Everett Toews
870c7d8450
PaginatedCollection for Rackspace style pagination.
2013-03-25 14:22:32 -05:00
adriancole
cd79a9d876
HttpUrlConnection reverts Content-Length=0 on POST unless doOutput is set to true
2013-03-24 20:58:29 -07:00
Adrian Cole
254aafb157
Merge pull request #1449 from zack-shoylev/windows-fix
...
Fixes running maven tests on windows.
2013-03-22 15:18:26 -07:00
zack-shoylev
b19b4d701a
Fixes running maven tests on windows. The tests and the private key
...
builder code were not all properly using
System.getProperty("line.separator") and were instead in some cases just
using "\n"
lineSeparator variable shortened
jclouds formatting applied
reverts and refixes formatting changes
This should fix some missing changes
2013-03-22 21:15:56 +00:00
Dies Koper
7a5cc9e2af
add PROPERTY_PROXY_FOR_SOCKETS constant to allow ssh connections to bypass HTTP proxies
2013-03-19 18:16:05 +11:00
Andrew Gaul
9132c7880c
Upgrade to Guava 14.0.1
...
Release notes:
https://code.google.com/p/guava-libraries/wiki/Release14
2013-03-15 21:20:23 -07:00
adriancole
6f9794dedb
correct order of List<Byte> gson registration and filled missing test
2013-03-14 09:44:28 -07:00
Andrew Gaul
371db8d18f
Address Xlint warnings
2013-03-13 22:23:19 -07:00
Adrian Cole
168121f9b3
Merge pull request #1422 from maginatics/filebackedoutputstream-reset
...
Call FileBackedOutputStream.reset on InputStream.close
2013-03-13 18:21:22 -07:00
adriancole
ef2718629f
make it possible to deserialize into ctors that have immutable collection parameters
2013-03-13 12:22:41 -07:00
adriancole
8932e9fd81
pass absent instead of null to ctor parameters of type Optional
2013-03-13 11:07:17 -07:00
Andrew Gaul
2d44332559
Call FileBackedOutputStream.reset on InputStream.close
...
This ensures that we delete temporary files created by Wire logging.
2013-03-13 10:43:41 -07:00
adriancole
92bfb8224f
fix issue #1409 : regression where we broke streaming payloads
2013-03-12 11:35:31 -07:00
Adrian Cole
d3bb6d6e69
Merge pull request #1406 from maginatics/null-http-response
...
Annotate possibly null return value
2013-03-11 15:47:24 -07:00
Adrian Cole
e1b3ded0d0
Merge pull request #1408 from maginatics/null-payload
...
Annotate possibly null return value
2013-03-11 15:46:23 -07:00
Andrew Gaul
395116ebf1
Annotate possibly null return value
2013-03-10 15:59:19 -07:00
Andrew Gaul
5a69e01cfd
Annotate possibly null return value
2013-03-10 15:43:49 -07:00
Adrian Cole
fb69ae0fa9
bump master to 1.7.0-SNAPSHOT
2013-03-08 23:02:40 -08:00
Everett Toews
5ad9867e27
Initial commit for the Rackspace DNS API.
2013-03-06 16:02:39 -06:00
Everett Toews
bbede1bd0a
Updated Javadoc for PagedIterable. Removed example that was out-of-date. Changed example to something that actually returns PagedIterable.
2013-03-06 11:51:41 -06:00
adriancole
c31145e42e
[maven-release-plugin] prepare for next development iteration
2013-03-04 06:13:59 -08:00
adriancole
0eb3ee8091
[maven-release-plugin] prepare release jclouds-1.6.0-alpha.4
2013-03-04 06:13:57 -08:00
adriancole
4f2c64681a
do not send payload when method doesn't send payload
2013-03-03 17:22:23 -08:00
Adrian Cole
8e881bd5c2
remove default add of Expect 100 Continue header
2013-03-03 12:24:28 -08:00
Andrew Gaul
ac60647057
Upgrade to Guava 14.0
...
Release notes:
https://code.google.com/p/guava-libraries/wiki/Release14
2013-02-26 10:07:53 -08:00
Adrian Cole
d9c4cf2d39
consider @FormParam on @Delegate calls
2013-02-24 23:14:13 -08:00
Adrian Cole
1338daec50
added function to grab first arg during pagination
2013-02-24 12:34:00 -08:00
Adrian Cole
86d5d69128
Merge pull request #1344 from maginatics/findbugs
...
Address FindBugs complaints
2013-02-22 12:19:09 -08:00
Andrew Gaul
ec4cdfda05
Address FindBugs complaints
2013-02-22 09:29:22 -08:00
Andrew Gaul
2b7d2ded4d
Upgrade to Guava 14.0-rc3
2013-02-21 18:25:27 -08:00
adriancole
ebf96596c5
@Delegate considers @PayloadParam
2013-02-21 11:44:03 -08:00
adriancole
67d74528db
RedirectionRetryHandler ignored PROPERTY_MAX_REDIRECTS on backoff
2013-02-19 01:39:11 -08:00
adriancole
89fda8ee28
[maven-release-plugin] prepare for next development iteration
2013-02-04 17:30:46 -08:00
adriancole
2b0ad28f26
[maven-release-plugin] prepare release jclouds-1.6.0-alpha.2
2013-02-04 17:30:44 -08:00
adriancole
6c658f6450
fix issue #1297 put with zero length payload
2013-02-04 10:32:03 -08:00
adriancole
267069755e
[maven-release-plugin] prepare for next development iteration
2013-02-02 08:41:53 -08:00
adriancole
7c924b312f
[maven-release-plugin] prepare release jclouds-1.6.0-alpha.1
2013-02-02 08:41:51 -08:00
adriancole
865005afd9
fix issue #1289 bug in zero length put
2013-02-01 15:09:31 -08:00
adriancole
ece2c962a0
worked around issue where GET can become POST
2013-01-31 17:43:49 -08:00
Adrian Cole
6a80aa4313
unwrap UncheckedExecutionException
2013-01-31 11:55:36 -08:00
adriancole
fd3a5a3b9a
decoupled InvokeHttpMethod, which allows circular dependencies in cloudstack to resolve
2013-01-30 12:51:17 -08:00
Adrian Cole
55a10d4c5d
allow SelectJson to specify multiple field names, in case the server renamed something
2013-01-30 09:03:50 -08:00
adriancole
878313582a
issue #1089 synchronous commands no longer spawn threads unless a timeout is specified
2013-01-29 04:08:42 -08:00
Dies Koper
17451c3e49
Core, compute: improved poll retry timeout comments
2013-01-28 16:15:47 +11:00
Andrew Phillips
2a1fc363e0
Moving the complex test for 93e2f24c62
into a separate file and allowing it to run in parallel with other tests
2013-01-24 23:13:14 -05:00
Andrew Phillips
4c5cef1be4
Updated implementation comment in Reflection2
2013-01-24 21:41:09 -05:00
Andrew Gaul
fb93f774aa
Remove unneeded Predicate
...
Inspired by:
https://code.google.com/p/guava-libraries/wiki/FunctionalExplained#Caveats
2013-01-24 16:55:01 -08:00
Adrian Cole
92c64bc856
Merge pull request #1230 from jclouds/use-system-line-sep-in-tests
...
Making core tests run on Windows
2013-01-24 08:20:19 -08:00
Andrew Phillips
66bab1342c
Using checkArgument instead of throwing an IllegalArgException directly
2013-01-24 02:00:32 -05:00
Andrew Phillips
93e2f24c62
Ignoring synthetic methods to always return the nearest method with the most specific return type from Reflection2.method
2013-01-24 01:59:01 -05:00
Adrian Cole
cafd3f9b08
Merge pull request #1232 from dkoper/master
...
makes fgcp live tests (at least most of them) pass again, and added @Named annotation on async api methods
2013-01-23 10:20:18 -08:00
Dies Koper
494adcaeda
Fgcp: changed broken base64 logic and added unit tests
2013-01-23 18:29:40 +11:00
Andrew Phillips
5914436ae0
Making test assertions use the system line separator rather than always '\n'
2013-01-22 21:37:35 -05:00
adriancole
2aea1355a1
added ability to set field exclusion policies for json serialization
2013-01-22 17:12:08 -08:00
Andrew Gaul
af963df92d
Use Map.entrySet where possible
...
Improves run-time efficiency and addresses FindBugs warnings.
2013-01-21 23:59:42 -08:00
adriancole
847561ee00
ensure identity/credential properties are not needed when using credential supplier
2013-01-21 10:02:46 -08:00
Adrian Cole
d5f7f8b07e
refactored json internals to use Reflections2
2013-01-20 23:13:22 -08:00
Adrian Cole
a625127fd2
added ability to look up constructors as Invokables
2013-01-20 23:13:22 -08:00
Everett Toews
242d3e07be
The Connection API for Rackspace Cloud Load Balancers.
2013-01-20 19:51:06 -06:00
Andrew Gaul
70af02d9d9
Space optimize Strings2.toStringAndClose
...
Avoid creating a byte array before creating a String. This reduces
peak memory usage when parsing large JSON responses such as listing a
container.
2013-01-19 22:57:01 -08:00
Adrian Cole
58a986997b
removed all compile warnings in core except json package
2013-01-19 20:39:47 -08:00
Adrian Cole
c5e3b24d3e
decoupled ProxyConfig and introduced PROPERTY_PROXY_TYPE
2013-01-19 20:06:18 -08:00
Adrian Cole
e27d9e94fe
fix issue #1205 : removed copied in tests from Suppliers.memoize as current code is no longer a derivative of that
2013-01-19 19:49:00 -08:00
Adrian Cole
58f0f577d0
centralize construction of invokables
2013-01-19 17:17:06 -08:00
Adrian Cole
4980367991
centralize TypeToken creation
2013-01-19 11:31:55 -08:00
adriancole
dc4ca1efbd
removed deprecated methods which were easy to do
2013-01-19 08:32:45 -08:00
adriancole
04fe89b75a
update to guava 14.0-rc2
2013-01-18 16:02:25 -08:00
adriancole
b3901deeb9
rewrote aws config to use standard op names
2013-01-16 10:54:17 -08:00
adriancole
95b1849199
process timeouts based on @Named annotations
2013-01-16 10:54:00 -08:00
Adrian Cole
a7e4564c8e
support changing credentials at runtime
2013-01-15 22:26:24 -08:00
Adrian Cole
b07984435f
unwound a few stack traces by making DelegatesToInvocationFunction an invocation handler directly
2013-01-13 22:41:06 -08:00
Adrian Cole
f18d3b433f
Merge pull request #1177 from jclouds/retryablepredicate-highlander
...
There can be only one retryable predicate; use Predicates2.retry
2013-01-13 22:07:42 -08:00
Adrian Cole
3ac6f475e7
unwound dependencies relating to ssh keys and crypt
2013-01-13 20:53:59 -08:00
Adrian Cole
a49a060152
There can be only one retryable predicate; use Predicates2.retry decorator
2013-01-13 20:30:34 -08:00
Adrian Cole
6a8ac673aa
fixed hanging test
2013-01-13 20:27:44 -08:00
Adrian Cole
713a498c22
removed custom version of guava Futures, awkward DescribedFuture, and migrated to native ListenableFuture
2013-01-13 09:29:24 -08:00
Adrian Cole
547f574eea
got rid of custom MoreExecutors.sameThreadExecutor
2013-01-12 15:47:58 -08:00
Adrian Cole
f1819fe8b9
decorating cacheloader only used in s3
2013-01-12 15:47:51 -08:00
Adrian Cole
45bb35971e
replaced usage of checkNotEmpty with checkNotNull(emptyToNull
2013-01-12 15:20:11 -08:00
Adrian Cole
0e4c10e29f
PasswordGenerator only used in scriptbuilder
2013-01-12 14:09:58 -08:00
Adrian Cole
015fbf22a2
removed redundant retrying assertion code
2013-01-12 14:04:47 -08:00
Adrian Cole
cca73d8a69
removed function only used once and only accessing a single if branch
2013-01-12 13:47:07 -08:00
Adrian Cole
60ab6d8e26
Merge pull request #1169 from jclouds/ucdetector
...
cleaned up code references detected as unnecessary by UEC plugin
2013-01-12 13:11:47 -08:00
Adrian Cole
d57197c103
cleaned up code references detected as unnecessary by UEC plugin
2013-01-12 12:31:00 -08:00
Adrian Cole
2f5e38d237
equals doesn't check null
2013-01-12 08:01:31 -08:00
Adrian Cole
21f6431f50
masked field
2013-01-12 07:55:49 -08:00
Adrian Cole
a7389ac9eb
equals on different types
2013-01-12 07:49:01 -08:00
Adrian Cole
202b9be5e5
refactored tests and internal code due to removing custom guava code
2013-01-08 22:23:47 -08:00
Adrian Cole
d38ae1420d
Updated invokable to include enclosing type and started refactoring SyncProxy
2013-01-08 00:32:17 -08:00
Adrian Cole
3089111621
refactored internal code and tests to use FunctionalReflection
2013-01-07 00:36:31 -08:00