Merge branch 'master' into vpc

This commit is contained in:
Alena Prokharchyk 2012-08-07 11:37:45 -07:00
commit 95449da4be
741 changed files with 571 additions and 168592 deletions

17
.gitignore vendored
View File

@ -1,3 +1,20 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
build/replace.properties
build/build.number
bin/

142
KEYS Normal file
View File

@ -0,0 +1,142 @@
This file contains the PGP keys of various developers.
Users: pgp < KEYS
gpg --import KEYS
Developers:
pgp -kxa <your name> and append it to this file.
(pgpk -ll <your name> && pgpk -xa <your name>)
>> this file.
(gpg --list-sigs <your name>
&& gpg --armor --export <your name>) >>
this file.
Type Bits/KeyID Date User ID
pub 4096R/CC56CEA8 2012-08-06 [expires: 2016-08-06]
uid Chip Childers <chipchilders@apache.org>
sig 3 CC56CEA8 2012-08-06 Chip Childers <chipchilders@apache.org>
sub 4096R/A99A5D58 2012-08-06 [expires: 2016-08-06]
sig CC56CEA8 2012-08-06 Chip Childers <chipchilders@apache.org>
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG/MacGPG2 v2.0.18 (Darwin)
Comment: GPGTools - http://gpgtools.org
mQINBFAgC58BEADAGUUl5EP3pNsVbZMHejGbImIDvbNCkuGCmiVoC154k7FO7YjH
PnbB7kyzfyfsj8eA+mgHHvbzOTk/7dDeaudL561FfsTSxyeVt1ctzBYh9z2V2EMa
9mv48c226QXRf/GInzLS1iD1bOPq9H5RywW4h1u/JqT9KiuBuwowliDlHRornQRg
dhxnjITO6xOhQajqfVXQ1Kz3DcbU9OydfPLKshbfRJC6U5dhGk4AGWKsAJHJDlzj
SPswcJrkuDo0GB9o+nPYrKFRJZy5AyDtr7gmRz6EiGjlZWIf38KxfeNcE6oQPP+7
9Exlx1ZnWT5Uv/8yU2lgtzhi7/zHw+uB6Ujh0+zCcVgS2Y9ldsA7T0b/Tvlp/Yz4
hYUMVI6tPPSgehIzRMT4Ym4AcOG/0h5YtecSrOdHIl00htfr1Nj9vIAv8FurebVR
fnfaYbJNKgN3MJLdMSvmlaxvZipIZ6EbWU2BUl7mtZR8zsIoMJedxx9w38UBwdhp
jlxtH5ibZP/WKmIf2hqB4sYrwDioZailjRreNlC5drkljcOGoofXgu/Ahu6dZGHu
4sVH/g+8YhQt7zVs6ytaGLTud33NAELSn15DRrfxQm2sEFhHFKW8Lg0LvjB1RtiM
l2CmFCXk0MMi9IrU4/7q9E7teatztPBcF6Y+Afs16MqUfR81elyPF7YQlQARAQAB
tCdDaGlwIENoaWxkZXJzIDxjaGlwY2hpbGRlcnNAYXBhY2hlLm9yZz6JAj0EEwEC
ACcCGy8FCQeGH4ACHgECF4AFAlAgEF0FCwkIBwMFFQoJCAsFFgIDAQAACgkQw6OS
dcxWzqg0eBAAoHiNFFPNR0zdOELqz0luaTaNNUEit+LBHB1eA63hwY4PplfkOCg+
UT2lojkZtsiNYuPi++Sub11+HQpVf4uDAGy5VtyIUl/tO3qRmULcJJwoXrYqHxd9
xrrWYRhasKGNqPEB873UxMPgWVZYcKPRgwZKXUgLl7Dub5iCSVN/lCto5D45R8jA
RzeTjkNvyA+ZPUiblCuKZPSqd4WCN5MRG4muN3+5hwCL6xyrXIvsPkaZXQqhjw0Q
89PUSHhruoHzAi41lscXPF1ap93qvJ4QO12YM9GCQxLRyUOJStLj2OugOjVN/d0q
1ryuBo8ND/W/gYjzIPAQ2U5qkQEjQB/vfuIGl8Gn8s5XA9KtXHqVwz2hbGMpIoCM
0+27JEikrQOitfw86f0aWT1kaceMti7N2ECDEwjsnFf0Uz8dEJ2eInKZrlwgmM0S
/K2gf8/9pbhZ1X9LDYkATCqPzFRLyOuJeHNwcxSDPiWAALoPN57jLJ1702XjGcQt
NBf1p+ylXmdzZjcUz9mKHIEEX7unwp74AVEOyIXuLlyScDR9qTSHhVzCpWQntl6u
0WQmbaoLdAfhu5b80raMdnAbyGQIVtNV4RU0dP8IowkE7cHekHb3NE12K7n3Yx+d
msIXAMsvWx5scfS0HAqIauaA/Sg26lXwj6w60KB+wE1xA2VAWGunSP25Ag0EUCAL
nwEQAOQptLWHnr8uzTZlaRr1N6Aabvz3cLFXf4HCJdWMx9vShPuwWZqrJw4CAnVj
hZA/7NgyBXfBVfcW4Yno0KkHkpKsYy1pYUXIeBDX1FTLZ5H4o7Yv79RaHNl3kgX8
OodIMGvAee2z4twkniO/u9mnjy1i56hoeQLRVfZZ25Rnlr5PnRdFcqBjMC91i6nr
XdS47Lb1Ttln0yPYtN9j5sD09HZiuCY/b685nB/UlxKhTsE2XfPjZFuBznnOl01/
FLX8Nn/SeEySdI0gOlzLXU3EAnp0k1OLDXMXC8/EQ/bB4VIwuS4Vu3RmKA0kikgm
nKeuPOTfCpBzzyo/NXCop1Ik/iKgVkp12wRwMp/K5fDg88ib+A8Naxdu25dQCUxH
pJJJ+KwhNf/UKVGpUZOMDAYmUCfisNbulOeS0RMKNzwMXaZzQSvquO8GSlnQ0aal
7Jjl/X/x1boS1dfMAlEeC7jQOm4O4HqSGPEIdoyNbUKupFjytYq3HZ/WMF79kyFh
Xx7khOjiCtopc/sAasFCMa+55/OBN6FThQ4f97UdlyEVxnMADnqOH5uQH5oJ5Vck
k35JOAXWY2fbZSkvKLj7hUZhIx5ja7l4uEnAkM2SxXS+mW9oRfX+pxRAEziUMSaZ
VuGcHkiO/E8viWxtKWbkQw5Ii6OpNLy9wF7YiVSXr7b27lm5ABEBAAGJBEQEGAEC
AA8FAlAgC58CGy4FCQeGH4ACKQkQw6OSdcxWzqjBXSAEGQECAAYFAlAgC58ACgkQ
lD2YH6maXVgyUhAAhWGhG52edHVMELz4wWaqiMKKNPM6GKsI0ZvmaroF0EWt1n9U
TGDyXK+VX/7WXIhqWPdsT390zmwV0bAdXdziPoeQ7DlEz74IRzMBsyEZwMtZ5Q83
JGDmhjCr3NBVgckzZOl0JXtzyQovtLvCN88WCUIuNaZ2GI6VG8wS3prsKOL9hRNx
y4NNPpCW/QB1/N4A3QlBdKSGyTKCg9VsMwvtZmBdupRipzj2X2DsTOr16TGU4OVW
GNkZ8rUIC6vG7iQctLO8efml3heQU06HJoT+uTZMfXyd7wxHc6SOAENy4ezF62Fd
O9+rtZkE3u0oiW5HUEO4DcE+ufA+Rz/pK6RV65AArb3j6yeX7/VefTGev4SyV+dU
9gplLiXgNEgTfr70uBg+cGV5nxUp0O7ooHMn1g2CnVIkBdPts2rU0wwI5JipsJJ0
DpK+1x51D7cpUcQ4u/oWtUGHPMVIxXjDWVfwzs9QGy4H0/lqD8LOStuWkeY2IC08
1ErnY/1TWhmXX7pieh0Zjn1uxi49nxJ9qW0u70CTSzJzz+/17G+f1n9rauKJqVOy
HIGU1TgJ7DjPiwvmMllfQFpRNf/5SV0/tjvsnjzN5YCjN4YaEbVajc9H/Wi8bVNg
ANb5v5FLuhAi04DO0k3bWewd9KE3H7I2uQNaNck/iuYEL6ImAPMA0GUzIbbkxA/+
Mp4fBbo/i4JpDXEvg8Umeg0wx+otI2ogYFREZjYBWH8txMfGXKVjIfBsFclCm47v
H9wDJ7ISeOR1atWDjHYBE4J2JNqJJREIecztFPQBTo+YUgP6/zDO2RxeZRGYP1rO
+Eld5++kbFEWgi1kWxTKwMlomcoP6hdabA8v8KNZLxRGrKYfE+JMU+PHrfBvO2Ql
4BZ1kmmTaWmGXrgQgpJeWiirF8Ptg2Mq8rCfXnFbOp89ZRNyFDV2Fgyw3BPbPPXE
aygCwpRgHgUrp32gBAGdsdghNn8kN0DFygZKE0kRc6hR7ALiQWoTbA/G/BJjpJQt
RhR4k58e2kWh1uuyFaxcB+Vp/6HXYIe6o8fhX8jwVM47WbINFGbvaz1gGpGzJCY1
HJBwTMu5IgQ8n69Gs7DCDTVqBOqiDKtdQyZBheWCsIJUkvBHtxkUb7K0kcIA3Fet
46k2GFOEkHCxbKpjeFhcW4atmEShOViiGKVR+g689feVQB6+mI9O4fXmsGO4Zq/k
mEku0Eg95q3+ugVpz8DLctnlvIHVdf6RPieojBKbqPu/34iJqenHmeQUy1TkRKIx
ZEX2mjtW/Tz5VnUX/MUFA67sGIpGJMsvr2sk3Zyovl7GVfsq5K2UqK5pRc2rO8zt
QHVJ58ybqkmx2NgDgmi1gvsoV51mn6TTVs1S/stCtW4=
=eCNG
-----END PGP PUBLIC KEY BLOCK-----
Type Bits/KeyID Date User ID
pub 4096R/DB3ECA42 2012-08-07 [expires: 2017-08-06]
uid Wido den Hollander <wido@widodh.nl>
sig 3 DB3ECA42 2012-08-07 Wido den Hollander <wido@widodh.nl>
sub 4096R/50E9D98F 2012-08-07
sig DB3ECA42 2012-08-07 Wido den Hollander <wido@widodh.nl>
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.11 (GNU/Linux)
mQINBFAg4ogBEADPUAOmj/KdLjp5Wz8oW5+fnx3gnhVABh1Xg5Uf36tDCLogSMya
Y9S8lZb8PgvtkK6fOqUCoViUvXAWM5/k7JbIv70cWGc+M4XgZTnI6GWlz08EkzNT
/DX4Y+OAks602KYLXVepI4SdpCKaZJK14Az48cfzFEZDmzMuNtS/sQhXQZSXe7pu
7pBPpQ2GP1aYqGRBYTkMD9fjQAM2U3qJ/5K0AzeIciOI6QxD+h2fIBMnu+XV0g0C
2SG6UVy1RBVYzylWZ1p63brFtskjDnPoXrjXOx3iUxV/pEH7nKziHDolMShp+bni
Cnw5QcrqkBQls84d+cdteJ40ZzoyiWg0isIsxLMA2L71WkziJZkigqqQ8O/HI4Dl
3/mz1I5R2hphorkBPVc5ZAirhB38FqLgW1eH0rd/TJR428APYkbh6QnWRCLfGl7C
UsdYmpUaNjFZFrHCBoyA9p8pNzsJuZBVIBa+xheJk71HT5zeAk+uDPuNJH0Tc5qc
E7XRxaaj0QQxBlmkgdW0kMIO93jjrCTuzmgJMAEym1KSPiQTJmr0fUuxLEL7gTy3
a0I9sEnhbyn+yl6KZp0Ey/pZ8UOLD4TBwx1r1kXWXD7evTs0CCoPeyP0GRyjlhqH
WLlhEH2MtSWn+0SQIHiGh8XNh7ToySCquk1jslV89aX/sezRLJuly0k2hwARAQAB
tCNXaWRvIGRlbiBIb2xsYW5kZXIgPHdpZG9Ad2lkb2RoLm5sPokCPgQTAQIAKAIb
AwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AFAlAg6F4FCQlmrtgACgkQAZtYLds+
ykLICxAAlSVW5i3yIuBhnjIpCPPkOtABJEz2zImyl3VNJ/JuRT1nOmcvsu39MALj
m93qsVvZOulyiYHMKg61QWHRXHimqdJe7wUH64Fm/Gf85jqzf6Db0HFCyR4ADHKH
8XFNNiGctutPAwDeUaUGFYE3RtDEU105z/SovfzFrLOSLQ9o1+48T0Dm5iCezHr1
3AF7HJpbQ9D0ng5CTEK2YhYHAS6rPf48MJ949WQoSrLt1X3WEu62Bgcuwa8Ph9AM
7Y4K+uVNWNft+xK+SJml0pkYBTwc+tIXhT6tirnFa731g5wKDLIpTc5OWYvirO3w
EO+G0kuZsDRyQTqCo1DBax30xVazNKQ1/OTDZpVAkkejCqrh7UY4tc2C2FL+9V0b
I6oeysYZpO23CC92Qe5NESavWOUGl9v3rzRCON2rkkDEi8jFCKGsJIoL8S6LjeDn
b0JASbXhYhZMmZY1QwSKvlbnhQkxPb0Ww3jALQV31AWTwN9ACS0/gwh1+gCE+zvm
paoD3yGyZZbTOUx4jQq0diMpDRsxboqsKzPpUMCL7w1YNQpPH4KHNiFGJzLsL1LF
+kwXVLq0hJjblKr0H5hfbBLODG1ZgOC5GkkcMcM73PDq4zOKgGW8O+yrkPc2Rx0/
ZAP117yP5RlgL2LLA1H0EgS2TKZanM9MxwBhS+YAV/e+hWEPpCa5Ag0EUCDiiAEQ
AKnpED7QljHFLNrzftOF67EOcCeu/tew+gaok135taDgsKW7FMfjF+uQje0nloM8
482TSFRJAp74fFiKjNUPXcGNaUU2XwDiSDsnuzqRStzJ58jxVcGbnV8nHCw4X+0w
BQVo+PCaj5f8HAFdiZ4EHRC/P3BuH9QLNEY9zziPw0LG5vn+0Lr0DTsdWQl2vWWc
SIUNd+QnQ0icnSY3FLdxyscqHkUCOtu7NxI5WzdjtaFvgxZbPYJQHfm7B3OAJmg7
/Gn4YSbN2p78sYLKfKu7YoYG1+wP8cJMHgYM03b7WQgHqII/v6RCNRDtT1k1Hfw2
Dxid3IWkd8JUlwJFvnAL2sBgHqAt4xtooRkHcAnbcH9cO88ULgqWIfIEYosd/3/v
qvWTKZb/9B0p61gq6yOGOs1swAEWDdkkAAZJK6O0O5x/7J005uX3W9H8J2DqJQYK
jvp8Fph1sv0HVb+AfxhEtS/wfw34iaebNANMy5e369kt9oBXISubksQwgKFqPcsE
xteeyEhZ3qZUBmcTjl9PjrgFn2fMXoMRF9DB19dDFXISvg3tyJ+FCe+/Kppn6u+a
X7e0AltGLMBmfs1rcTPkmAFJglL5zi994iIXDv7/KWxX9QQC5BRICm5pSL8inWoO
6mU0cD5F9FrmkrfEVV+Ajmy/cH9UIiOJijdK7e/ImxShABEBAAGJAh8EGAECAAkF
AlAg4ogCGwwACgkQAZtYLds+ykI73Q//fYNKhEAvrFyF2d8OwVqHhzifIqsRycOg
D0Ib3tOkeNgwZYI+x6QIiYFHQalcMUFhwUea7RKYkW17Rhpj6W5hj7ie5x6cvtzI
5CeArcvoBj0KIRGUvsRl9XplXdaBhmBGibvEQBac2oCIVCBtTbsjkQlXPs+Q2SaJ
kyL8rbdmt06Tsc3iwN+ZjPGIluifaacvurJH8tntCWdhnFKwSwfsa3ZfJwuf3O2Q
J1q7JwYOwQbTR3K5CAyZ0HVYksiIoUqy6IzYvNmilAx2hkVCm2HjWXEvTwjSd709
yXBbm7X9JkB0RYSzpHEBqL1aB7GMe/pCeGLgcGRoA0ZyYXMoM7/gnE/ZCDG2fWGm
JZZ0LJ8QVlZq4nG4lkco7mZqDOycyA68nfbpGaSXhJ7iKbdk4DT0OMr//RlHsiif
AZFM2ppJ5cOmJ9USMkgyHziS6zexM0bYzzPJsLgoq2rjelmzE0pu7NoIcOu3KlkS
HCLDLqIZEYg7EySBVgqJ67FlnpAMY1IaUJN4rYQ4LQEq0uUfmmhZnlp4qQQnZjFR
MrkLZNjHiv8v6JGklVurAQstvZBQXrUUH+/JhJM0U6gsPzgsn4DlpxFyr3nM1aaJ
uHR4OoUFg2G1Hbm7k4eb1SFT1jPEe3is4Oc8t1ORRfSBIH0FfLF1ylLFpSma5q+3
HpWraBFdP78=
=I9dG
-----END PGP PUBLIC KEY BLOCK-----

View File

@ -26,9 +26,7 @@ under the License.
<classpathentry combineaccessrules="false" kind="src" path="/server"/>
<classpathentry combineaccessrules="false" kind="src" path="/utils"/>
<classpathentry combineaccessrules="false" kind="src" path="/agent"/>
<classpathentry combineaccessrules="false" kind="src" path="/console"/>
<classpathentry combineaccessrules="false" kind="src" path="/console-proxy"/>
<classpathentry combineaccessrules="false" kind="src" path="/console-viewer"/>
<classpathentry combineaccessrules="false" kind="src" path="/deps"/>
<classpathentry combineaccessrules="false" kind="src" path="/setup"/>
<classpathentry combineaccessrules="false" kind="src" path="/test"/>

View File

@ -22,64 +22,64 @@ under the License.
<classpathentry kind="src" path="test"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry combineaccessrules="false" kind="src" path="/deps"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/antlr-2.7.6.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/apache-log4j-extras-1.0.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/axiom-api-1.2.8.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/axiom-impl-1.2.8.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/axis2-1.5.1.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/axis2-adb-1.5.1.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/axis2-ant-plugin-1.5.1.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/axis2-jaxbri-1.5.1.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/axis2-jaxws-1.5.1.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/axis2-jibx-1.5.1.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/axis2-json-1.5.1.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/axis2-kernel-1.5.1.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/axis2-transport-http-1.5.1.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/axis2-transport-local-1.5.1.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/cloud-gson.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/commons-codec-1.4.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/commons-collections-3.1.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/commons-fileupload-1.2.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/commons-httpclient-3.1.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/commons-io-1.4.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/commons-logging-1.1.1.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/dom4j-1.6.1.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/hibernate3.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/httpcore-4.0.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/javassist-3.9.0.GA.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/jaxb-api-2.1.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/jaxb-impl-2.1.7.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/jaxb-xjc-2.1.7.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/jsch-0.1.42.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/json_simple-1.1.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/jta-1.1.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/junit-4.8.1.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/log4j-1.2.15.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/mail-1.4.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/mysql-connector-java-5.1.7-bin.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/neethi-2.0.4.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/slf4j-api-1.5.11.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/slf4j-jdk14-1.5.11.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/woden-api-1.0M8.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/woden-impl-dom-1.0M8.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/xercesImpl.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/xml-apis.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/XmlSchema-1.4.3.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/rampart-lib/bcprov-jdk16-145.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/rampart-lib/commons-collections-3.1.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/rampart-lib/joda-time-1.5.2.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/rampart-lib/opensaml-1.1.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/rampart-lib/opensaml-2.2.3.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/rampart-lib/openws-1.2.2.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/rampart-lib/rampart-core-1.5.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/rampart-lib/rampart-policy-1.5.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/rampart-lib/rampart-trust-1.5.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/rampart-lib/slf4j-api-1.5.11.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/rampart-lib/slf4j-jdk14-1.5.11.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/rampart-lib/velocity-1.5.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/rampart-lib/wss4j-1.5.8.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/rampart-lib/xmlsec-1.4.2.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/awsapi-lib/rampart-lib/xmltooling-1.2.0.jar"/>
<classpathentry kind="lib" path="/Users/john1/qgit/deps/cloudbridge-lib/servlet-api.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/antlr-2.7.6.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/apache-log4j-extras-1.0.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/axiom-api-1.2.8.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/axiom-impl-1.2.8.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/axis2-1.5.1.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/axis2-adb-1.5.1.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/axis2-ant-plugin-1.5.1.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/axis2-jaxbri-1.5.1.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/axis2-jaxws-1.5.1.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/axis2-jibx-1.5.1.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/axis2-json-1.5.1.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/axis2-kernel-1.5.1.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/axis2-transport-http-1.5.1.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/axis2-transport-local-1.5.1.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/cloud-gson.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/commons-codec-1.4.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/commons-collections-3.1.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/commons-fileupload-1.2.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/commons-httpclient-3.1.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/commons-io-1.4.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/commons-logging-1.1.1.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/dom4j-1.6.1.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/hibernate3.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/httpcore-4.0.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/javassist-3.9.0.GA.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/jaxb-api-2.1.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/jaxb-impl-2.1.7.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/jaxb-xjc-2.1.7.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/jsch-0.1.42.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/json_simple-1.1.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/jta-1.1.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/junit-4.8.1.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/log4j-1.2.15.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/mail-1.4.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/mysql-connector-java-5.1.7-bin.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/neethi-2.0.4.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/slf4j-api-1.5.11.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/slf4j-jdk14-1.5.11.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/woden-api-1.0M8.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/woden-impl-dom-1.0M8.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/xercesImpl.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/xml-apis.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/XmlSchema-1.4.3.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/rampart-lib/bcprov-jdk16-145.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/rampart-lib/commons-collections-3.1.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/rampart-lib/joda-time-1.5.2.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/rampart-lib/opensaml-1.1.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/rampart-lib/opensaml-2.2.3.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/rampart-lib/openws-1.2.2.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/rampart-lib/rampart-core-1.5.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/rampart-lib/rampart-policy-1.5.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/rampart-lib/rampart-trust-1.5.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/rampart-lib/slf4j-api-1.5.11.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/rampart-lib/slf4j-jdk14-1.5.11.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/rampart-lib/velocity-1.5.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/rampart-lib/wss4j-1.5.8.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/rampart-lib/xmlsec-1.4.2.jar"/>
<classpathentry kind="lib" path="/deps/awsapi-lib/rampart-lib/xmltooling-1.2.0.jar"/>
<classpathentry kind="lib" path="/deps/cloud-servlet-api.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>

File diff suppressed because it is too large Load Diff

View File

@ -1,607 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema
xmlns:tns="http://s3.amazonaws.com/doc/2006-03-01/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
targetNamespace="http://s3.amazonaws.com/doc/2006-03-01/">
<xsd:element name="CreateBucket">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Bucket" type="xsd:string"/>
<xsd:element name="AccessControlList" type="tns:AccessControlList" minOccurs="0"/>
<xsd:element name="AWSAccessKeyId" type="xsd:string" minOccurs="0"/>
<xsd:element name="Timestamp" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="Signature" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="MetadataEntry">
<xsd:sequence>
<xsd:element name="Name" type="xsd:string"/>
<xsd:element name="Value" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="CreateBucketResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="CreateBucketReturn" type="tns:CreateBucketResult"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="Status">
<xsd:sequence>
<xsd:element name="Code" type="xsd:int"/>
<xsd:element name="Description" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Result">
<xsd:sequence>
<xsd:element name="Status" type="tns:Status"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CreateBucketResult">
<xsd:sequence>
<xsd:element name="BucketName" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="DeleteBucket">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Bucket" type="xsd:string"/>
<xsd:element name="AWSAccessKeyId" type="xsd:string" minOccurs="0"/>
<xsd:element name="Timestamp" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="Signature" type="xsd:string" minOccurs="0"/>
<xsd:element name="Credential" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="DeleteBucketResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="DeleteBucketResponse" type="tns:Status"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="BucketLoggingStatus">
<xsd:sequence>
<xsd:element name="LoggingEnabled" type="tns:LoggingSettings" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="LoggingSettings">
<xsd:sequence>
<xsd:element name="TargetBucket" type="xsd:string"/>
<xsd:element name="TargetPrefix" type="xsd:string"/>
<xsd:element name="TargetGrants" type="tns:AccessControlList" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="GetBucketLoggingStatus">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Bucket" type="xsd:string"/>
<xsd:element name="AWSAccessKeyId" type="xsd:string" minOccurs="0"/>
<xsd:element name="Timestamp" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="Signature" type="xsd:string" minOccurs="0"/>
<xsd:element name="Credential" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetBucketLoggingStatusResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="GetBucketLoggingStatusResponse" type="tns:BucketLoggingStatus"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="SetBucketLoggingStatus">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Bucket" type="xsd:string"/>
<xsd:element name="AWSAccessKeyId" type="xsd:string" minOccurs="0"/>
<xsd:element name="Timestamp" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="Signature" type="xsd:string" minOccurs="0"/>
<xsd:element name="Credential" type="xsd:string" minOccurs="0"/>
<xsd:element name="BucketLoggingStatus" type="tns:BucketLoggingStatus"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="SetBucketLoggingStatusResponse">
<xsd:complexType>
<xsd:sequence/>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetObjectAccessControlPolicy">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Bucket" type="xsd:string"/>
<xsd:element name="Key" type="xsd:string"/>
<xsd:element name="AWSAccessKeyId" type="xsd:string" minOccurs="0"/>
<xsd:element name="Timestamp" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="Signature" type="xsd:string" minOccurs="0"/>
<xsd:element name="Credential" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetObjectAccessControlPolicyResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="GetObjectAccessControlPolicyResponse" type="tns:AccessControlPolicy"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetBucketAccessControlPolicy">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Bucket" type="xsd:string"/>
<xsd:element name="AWSAccessKeyId" type="xsd:string" minOccurs="0"/>
<xsd:element name="Timestamp" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="Signature" type="xsd:string" minOccurs="0"/>
<xsd:element name="Credential" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetBucketAccessControlPolicyResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="GetBucketAccessControlPolicyResponse" type="tns:AccessControlPolicy"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType abstract="true" name="Grantee"/>
<xsd:complexType name="User" abstract="true">
<xsd:complexContent>
<xsd:extension base="tns:Grantee"/>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="AmazonCustomerByEmail">
<xsd:complexContent>
<xsd:extension base="tns:User">
<xsd:sequence>
<xsd:element name="EmailAddress" type="xsd:string"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="CanonicalUser">
<xsd:complexContent>
<xsd:extension base="tns:User">
<xsd:sequence>
<xsd:element name="ID" type="xsd:string"/>
<xsd:element name="DisplayName" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="Group">
<xsd:complexContent>
<xsd:extension base="tns:Grantee">
<xsd:sequence>
<xsd:element name="URI" type="xsd:string"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:simpleType name="Permission">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="READ"/>
<xsd:enumeration value="WRITE"/>
<xsd:enumeration value="READ_ACP"/>
<xsd:enumeration value="WRITE_ACP"/>
<xsd:enumeration value="FULL_CONTROL"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="StorageClass">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="STANDARD"/>
<xsd:enumeration value="UNKNOWN"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="Grant">
<xsd:sequence>
<xsd:element name="Grantee" type="tns:Grantee"/>
<xsd:element name="Permission" type="tns:Permission"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="AccessControlList">
<xsd:sequence>
<xsd:element name="Grant" type="tns:Grant" minOccurs="0" maxOccurs="100"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CreateBucketConfiguration">
<xsd:sequence>
<xsd:element name="LocationConstraint" type="tns:LocationConstraint"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="LocationConstraint">
<xsd:simpleContent>
<xsd:extension base="xsd:string"/>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="AccessControlPolicy">
<xsd:sequence>
<xsd:element name="Owner" type="tns:CanonicalUser"/>
<xsd:element name="AccessControlList" type="tns:AccessControlList"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="SetObjectAccessControlPolicy">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Bucket" type="xsd:string"/>
<xsd:element name="Key" type="xsd:string"/>
<xsd:element name="AccessControlList" type="tns:AccessControlList"/>
<xsd:element name="AWSAccessKeyId" type="xsd:string" minOccurs="0"/>
<xsd:element name="Timestamp" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="Signature" type="xsd:string" minOccurs="0"/>
<xsd:element name="Credential" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="SetObjectAccessControlPolicyResponse">
<xsd:complexType>
<xsd:sequence/>
</xsd:complexType>
</xsd:element>
<xsd:element name="SetBucketAccessControlPolicy">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Bucket" type="xsd:string"/>
<xsd:element name="AccessControlList" type="tns:AccessControlList" minOccurs="0"/>
<xsd:element name="AWSAccessKeyId" type="xsd:string" minOccurs="0"/>
<xsd:element name="Timestamp" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="Signature" type="xsd:string" minOccurs="0"/>
<xsd:element name="Credential" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="SetBucketAccessControlPolicyResponse">
<xsd:complexType>
<xsd:sequence/>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetObject">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Bucket" type="xsd:string"/>
<xsd:element name="Key" type="xsd:string"/>
<xsd:element name="GetMetadata" type="xsd:boolean"/>
<xsd:element name="GetData" type="xsd:boolean"/>
<xsd:element name="InlineData" type="xsd:boolean"/>
<xsd:element name="AWSAccessKeyId" type="xsd:string" minOccurs="0"/>
<xsd:element name="Timestamp" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="Signature" type="xsd:string" minOccurs="0"/>
<xsd:element name="Credential" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetObjectResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="GetObjectResponse" type="tns:GetObjectResult"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="GetObjectResult">
<xsd:complexContent>
<xsd:extension base="tns:Result">
<xsd:sequence>
<xsd:element name="Metadata" type="tns:MetadataEntry" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="Data" type="xsd:base64Binary" nillable="true"/>
<xsd:element name="LastModified" type="xsd:dateTime"/>
<xsd:element name="ETag" type="xsd:string"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="GetObjectExtended">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Bucket" type="xsd:string"/>
<xsd:element name="Key" type="xsd:string"/>
<xsd:element name="GetMetadata" type="xsd:boolean"/>
<xsd:element name="GetData" type="xsd:boolean"/>
<xsd:element name="InlineData" type="xsd:boolean"/>
<xsd:element name="ByteRangeStart" type="xsd:long" minOccurs="0"/>
<xsd:element name="ByteRangeEnd" type="xsd:long" minOccurs="0"/>
<xsd:element name="IfModifiedSince" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="IfUnmodifiedSince" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="IfMatch" type="xsd:string" minOccurs="0" maxOccurs="100"/>
<xsd:element name="IfNoneMatch" type="xsd:string" minOccurs="0" maxOccurs="100"/>
<xsd:element name="ReturnCompleteObjectOnConditionFailure" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="AWSAccessKeyId" type="xsd:string" minOccurs="0"/>
<xsd:element name="Timestamp" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="Signature" type="xsd:string" minOccurs="0"/>
<xsd:element name="Credential" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetObjectExtendedResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="GetObjectResponse" type="tns:GetObjectResult"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="PutObject">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Bucket" type="xsd:string"/>
<xsd:element name="Key" type="xsd:string"/>
<xsd:element name="Metadata" type="tns:MetadataEntry" minOccurs="0" maxOccurs="100"/>
<xsd:element name="ContentLength" type="xsd:long"/>
<xsd:element name="AccessControlList" type="tns:AccessControlList" minOccurs="0"/>
<xsd:element name="StorageClass" type="tns:StorageClass" minOccurs="0"/>
<xsd:element name="AWSAccessKeyId" type="xsd:string" minOccurs="0"/>
<xsd:element name="Timestamp" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="Signature" type="xsd:string" minOccurs="0"/>
<xsd:element name="Credential" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="PutObjectResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="PutObjectResponse" type="tns:PutObjectResult"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="PutObjectResult">
<xsd:sequence>
<xsd:element name="ETag" type="xsd:string"/>
<xsd:element name="LastModified" type="xsd:dateTime"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="PutObjectInline">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Bucket" type="xsd:string"/>
<xsd:element name="Key" type="xsd:string"/>
<xsd:element minOccurs="0" maxOccurs="100" name="Metadata" type="tns:MetadataEntry"/>
<xsd:element name="Data" type="xsd:base64Binary"/>
<xsd:element name="ContentLength" type="xsd:long"/>
<xsd:element name="AccessControlList" type="tns:AccessControlList" minOccurs="0"/>
<xsd:element name="StorageClass" type="tns:StorageClass" minOccurs="0"/>
<xsd:element name="AWSAccessKeyId" type="xsd:string" minOccurs="0"/>
<xsd:element name="Timestamp" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="Signature" type="xsd:string" minOccurs="0"/>
<xsd:element name="Credential" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="PutObjectInlineResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="PutObjectInlineResponse" type="tns:PutObjectResult"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="DeleteObject">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Bucket" type="xsd:string"/>
<xsd:element name="Key" type="xsd:string"/>
<xsd:element name="AWSAccessKeyId" type="xsd:string" minOccurs="0"/>
<xsd:element name="Timestamp" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="Signature" type="xsd:string" minOccurs="0"/>
<xsd:element name="Credential" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="DeleteObjectResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="DeleteObjectResponse" type="tns:Status"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ListBucket">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Bucket" type="xsd:string"/>
<xsd:element name="Prefix" type="xsd:string" minOccurs="0"/>
<xsd:element name="Marker" type="xsd:string" minOccurs="0"/>
<xsd:element name="MaxKeys" type="xsd:int" minOccurs="0"/>
<xsd:element name="Delimiter" type="xsd:string" minOccurs="0"/>
<xsd:element name="AWSAccessKeyId" type="xsd:string" minOccurs="0"/>
<xsd:element name="Timestamp" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="Signature" type="xsd:string" minOccurs="0"/>
<xsd:element name="Credential" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ListBucketResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ListBucketResponse" type="tns:ListBucketResult"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="ListEntry">
<xsd:sequence>
<xsd:element name="Key" type="xsd:string"/>
<xsd:element name="LastModified" type="xsd:dateTime"/>
<xsd:element name="ETag" type="xsd:string"/>
<xsd:element name="Size" type="xsd:long"/>
<xsd:element name="Owner" type="tns:CanonicalUser" minOccurs="0"/>
<xsd:element name="StorageClass" type="tns:StorageClass"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="PrefixEntry">
<xsd:sequence>
<xsd:element name="Prefix" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ListBucketResult">
<xsd:sequence>
<xsd:element name="Metadata" type="tns:MetadataEntry" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="Name" type="xsd:string"/>
<xsd:element name="Prefix" type="xsd:string"/>
<xsd:element name="Marker" type="xsd:string"/>
<xsd:element name="NextMarker" type="xsd:string" minOccurs="0"/>
<xsd:element name="MaxKeys" type="xsd:int"/>
<xsd:element name="Delimiter" type="xsd:string" minOccurs="0"/>
<xsd:element name="IsTruncated" type="xsd:boolean"/>
<xsd:element name="Contents" type="tns:ListEntry" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="CommonPrefixes" type="tns:PrefixEntry" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="ListAllMyBuckets">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="AWSAccessKeyId" type="xsd:string" minOccurs="0"/>
<xsd:element name="Timestamp" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="Signature" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ListAllMyBucketsResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ListAllMyBucketsResponse" type="tns:ListAllMyBucketsResult"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="ListAllMyBucketsEntry">
<xsd:sequence>
<xsd:element name="Name" type="xsd:string"/>
<xsd:element name="CreationDate" type="xsd:dateTime"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ListAllMyBucketsResult">
<xsd:sequence>
<xsd:element name="Owner" type="tns:CanonicalUser"/>
<xsd:element name="Buckets" type="tns:ListAllMyBucketsList"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ListAllMyBucketsList">
<xsd:sequence>
<xsd:element name="Bucket" type="tns:ListAllMyBucketsEntry" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="PostResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Location" type="xsd:anyURI"/>
<xsd:element name="Bucket" type="xsd:string"/>
<xsd:element name="Key" type="xsd:string"/>
<xsd:element name="ETag" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:simpleType name="MetadataDirective">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="COPY"/>
<xsd:enumeration value="REPLACE"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:element name="CopyObject">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="SourceBucket" type="xsd:string"/>
<xsd:element name="SourceKey" type="xsd:string"/>
<xsd:element name="DestinationBucket" type="xsd:string"/>
<xsd:element name="DestinationKey" type="xsd:string"/>
<xsd:element name="MetadataDirective" type="tns:MetadataDirective" minOccurs="0"/>
<xsd:element name="Metadata" type="tns:MetadataEntry" minOccurs="0" maxOccurs="100"/>
<xsd:element name="AccessControlList" type="tns:AccessControlList" minOccurs="0"/>
<xsd:element name="CopySourceIfModifiedSince" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="CopySourceIfUnmodifiedSince" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="CopySourceIfMatch" type="xsd:string" minOccurs="0" maxOccurs="100"/>
<xsd:element name="CopySourceIfNoneMatch" type="xsd:string" minOccurs="0" maxOccurs="100"/>
<xsd:element name="StorageClass" type="tns:StorageClass" minOccurs="0"/>
<xsd:element name="AWSAccessKeyId" type="xsd:string" minOccurs="0"/>
<xsd:element name="Timestamp" type="xsd:dateTime" minOccurs="0"/>
<xsd:element name="Signature" type="xsd:string" minOccurs="0"/>
<xsd:element name="Credential" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="CopyObjectResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="CopyObjectResult" type="tns:CopyObjectResult" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="CopyObjectResult">
<xsd:sequence>
<xsd:element name="LastModified" type="xsd:dateTime"/>
<xsd:element name="ETag" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="RequestPaymentConfiguration">
<xsd:sequence>
<xsd:element name="Payer" type="tns:Payer" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="Payer">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="BucketOwner"/>
<xsd:enumeration value="Requester"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>

File diff suppressed because it is too large Load Diff

View File

@ -1,370 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions
targetNamespace="http://s3.amazonaws.com/doc/2006-03-01/"
xmlns:tns="http://s3.amazonaws.com/doc/2006-03-01/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<wsdl:types>
<xsd:schema
elementFormDefault="qualified"
targetNamespace="http://s3.amazonaws.com/doc/2006-03-01/">
<xsd:include schemaLocation="http://s3.amazonaws.com/doc/2006-03-01/AmazonS3.xsd"/>
</xsd:schema>
</wsdl:types>
<wsdl:message name="PutObjectRequest">
<wsdl:part element="tns:PutObject" name="parameters"/>
</wsdl:message>
<wsdl:message name="PutObjectInlineResponse">
<wsdl:part element="tns:PutObjectInlineResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="CreateBucketResponse">
<wsdl:part element="tns:CreateBucketResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="GetObjectExtendedResponse">
<wsdl:part element="tns:GetObjectExtendedResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="GetObjectRequest">
<wsdl:part element="tns:GetObject" name="parameters"/>
</wsdl:message>
<wsdl:message name="GetObjectAccessControlPolicyRequest">
<wsdl:part element="tns:GetObjectAccessControlPolicy" name="parameters"/>
</wsdl:message>
<wsdl:message name="GetBucketAccessControlPolicyRequest">
<wsdl:part element="tns:GetBucketAccessControlPolicy" name="parameters"/>
</wsdl:message>
<wsdl:message name="SetObjectAccessControlPolicyRequest">
<wsdl:part element="tns:SetObjectAccessControlPolicy" name="parameters"/>
</wsdl:message>
<wsdl:message name="SetBucketAccessControlPolicyRequest">
<wsdl:part element="tns:SetBucketAccessControlPolicy" name="parameters"/>
</wsdl:message>
<wsdl:message name="GetBucketLoggingStatusRequest">
<wsdl:part element="tns:GetBucketLoggingStatus" name="parameters"/>
</wsdl:message>
<wsdl:message name="SetBucketLoggingStatusRequest">
<wsdl:part element="tns:SetBucketLoggingStatus" name="parameters"/>
</wsdl:message>
<wsdl:message name="ListBucketResponse">
<wsdl:part element="tns:ListBucketResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="ListAllMyBucketsResponse">
<wsdl:part element="tns:ListAllMyBucketsResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="GetObjectExtendedRequest">
<wsdl:part element="tns:GetObjectExtended" name="parameters"/>
</wsdl:message>
<wsdl:message name="PutObjectResponse">
<wsdl:part element="tns:PutObjectResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="PutObjectInlineRequest">
<wsdl:part element="tns:PutObjectInline" name="parameters"/>
</wsdl:message>
<wsdl:message name="DeleteObjectResponse">
<wsdl:part element="tns:DeleteObjectResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="DeleteBucketRequest">
<wsdl:part element="tns:DeleteBucket" name="parameters"/>
</wsdl:message>
<wsdl:message name="ListBucketRequest">
<wsdl:part element="tns:ListBucket" name="parameters"/>
</wsdl:message>
<wsdl:message name="ListAllMyBucketsRequest">
<wsdl:part element="tns:ListAllMyBuckets" name="parameters"/>
</wsdl:message>
<wsdl:message name="GetObjectResponse">
<wsdl:part element="tns:GetObjectResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="GetObjectAccessControlPolicyResponse">
<wsdl:part element="tns:GetObjectAccessControlPolicyResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="GetBucketAccessControlPolicyResponse">
<wsdl:part element="tns:GetBucketAccessControlPolicyResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="SetObjectAccessControlPolicyResponse">
<wsdl:part element="tns:SetObjectAccessControlPolicyResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="SetBucketAccessControlPolicyResponse">
<wsdl:part element="tns:SetBucketAccessControlPolicyResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="SetBucketLoggingStatusResponse">
<wsdl:part element="tns:SetBucketLoggingStatusResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="GetBucketLoggingStatusResponse">
<wsdl:part element="tns:GetBucketLoggingStatusResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="CreateBucketRequest">
<wsdl:part element="tns:CreateBucket" name="parameters"/>
</wsdl:message>
<wsdl:message name="DeleteObjectRequest">
<wsdl:part element="tns:DeleteObject" name="parameters"/>
</wsdl:message>
<wsdl:message name="DeleteBucketResponse">
<wsdl:part element="tns:DeleteBucketResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="CopyObjectRequest">
<wsdl:part element="tns:CopyObject" name="parameters"/>
</wsdl:message>
<wsdl:message name="CopyObjectResponse">
<wsdl:part element="tns:CopyObjectResponse" name="parameters"/>
</wsdl:message>
<wsdl:portType name="AmazonS3">
<wsdl:operation name="CreateBucket">
<wsdl:input message="tns:CreateBucketRequest" name="CreateBucketRequest"/>
<wsdl:output message="tns:CreateBucketResponse" name="CreateBucketResponse"/>
</wsdl:operation>
<wsdl:operation name="DeleteBucket">
<wsdl:input message="tns:DeleteBucketRequest" name="DeleteBucketRequest"/>
<wsdl:output message="tns:DeleteBucketResponse" name="DeleteBucketResponse"/>
</wsdl:operation>
<wsdl:operation name="GetObjectAccessControlPolicy">
<wsdl:input message="tns:GetObjectAccessControlPolicyRequest" name="GetObjectAccessControlPolicyRequest"/>
<wsdl:output message="tns:GetObjectAccessControlPolicyResponse" name="GetObjectAccessControlPolicyResponse"/>
</wsdl:operation>
<wsdl:operation name="GetBucketAccessControlPolicy">
<wsdl:input message="tns:GetBucketAccessControlPolicyRequest" name="GetBucketAccessControlPolicyRequest"/>
<wsdl:output message="tns:GetBucketAccessControlPolicyResponse" name="GetBucketAccessControlPolicyResponse"/>
</wsdl:operation>
<wsdl:operation name="SetObjectAccessControlPolicy">
<wsdl:input message="tns:SetObjectAccessControlPolicyRequest" name="SetObjectAccessControlPolicyRequest"/>
<wsdl:output message="tns:SetObjectAccessControlPolicyResponse" name="SetObjectAccessControlPolicyResponse"/>
</wsdl:operation>
<wsdl:operation name="SetBucketAccessControlPolicy">
<wsdl:input message="tns:SetBucketAccessControlPolicyRequest" name="SetBucketAccessControlPolicyRequest"/>
<wsdl:output message="tns:SetBucketAccessControlPolicyResponse" name="SetBucketAccessControlPolicyResponse"/>
</wsdl:operation>
<wsdl:operation name="GetObject">
<wsdl:input message="tns:GetObjectRequest" name="GetObjectRequest"/>
<wsdl:output message="tns:GetObjectResponse" name="GetObjectResponse"/>
</wsdl:operation>
<wsdl:operation name="GetObjectExtended">
<wsdl:input message="tns:GetObjectExtendedRequest" name="GetObjectExtendedRequest"/>
<wsdl:output message="tns:GetObjectExtendedResponse" name="GetObjectExtendedResponse"/>
</wsdl:operation>
<wsdl:operation name="PutObject">
<wsdl:input message="tns:PutObjectRequest" name="PutObjectRequest"/>
<wsdl:output message="tns:PutObjectResponse" name="PutObjectResponse"/>
</wsdl:operation>
<wsdl:operation name="PutObjectInline">
<wsdl:input message="tns:PutObjectInlineRequest" name="PutObjectInlineRequest"/>
<wsdl:output message="tns:PutObjectInlineResponse" name="PutObjectInlineResponse"/>
</wsdl:operation>
<wsdl:operation name="DeleteObject">
<wsdl:input message="tns:DeleteObjectRequest" name="DeleteObjectRequest"/>
<wsdl:output message="tns:DeleteObjectResponse" name="DeleteObjectResponse"/>
</wsdl:operation>
<wsdl:operation name="ListBucket">
<wsdl:input message="tns:ListBucketRequest" name="ListBucketRequest"/>
<wsdl:output message="tns:ListBucketResponse" name="ListBucketResponse"/>
</wsdl:operation>
<wsdl:operation name="ListAllMyBuckets">
<wsdl:input message="tns:ListAllMyBucketsRequest" name="ListAllMyBucketsRequest"/>
<wsdl:output message="tns:ListAllMyBucketsResponse" name="ListAllMyBucketsResponse"/>
</wsdl:operation>
<wsdl:operation name="GetBucketLoggingStatus">
<wsdl:input message="tns:GetBucketLoggingStatusRequest" name="GetBucketLoggingStatusRequest"/>
<wsdl:output message="tns:GetBucketLoggingStatusResponse" name="GetBucketLoggingStatusResponse"/>
</wsdl:operation>
<wsdl:operation name="SetBucketLoggingStatus">
<wsdl:input message="tns:SetBucketLoggingStatusRequest" name="SetBucketLoggingStatusRequest"/>
<wsdl:output message="tns:SetBucketLoggingStatusResponse" name="SetBucketLoggingStatusResponse"/>
</wsdl:operation>
<wsdl:operation name="CopyObject">
<wsdl:input message="tns:CopyObjectRequest" name="CopyObjectRequest"/>
<wsdl:output message="tns:CopyObjectResponse" name="CopyObjectResponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="AmazonS3SoapBinding" type="tns:AmazonS3">
<wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="CreateBucket">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="CreateBucketRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="CreateBucketResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="DeleteBucket">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="DeleteBucketRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="DeleteBucketResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetObjectAccessControlPolicy">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="GetObjectAccessControlPolicyRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="GetObjectAccessControlPolicyResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetBucketAccessControlPolicy">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="GetBucketAccessControlPolicyRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="GetBucketAccessControlPolicyResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="SetObjectAccessControlPolicy">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="SetObjectAccessControlPolicyRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="SetObjectAccessControlPolicyResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="SetBucketAccessControlPolicy">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="SetBucketAccessControlPolicyRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="SetBucketAccessControlPolicyResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetObject">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="GetObjectRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="GetObjectResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetObjectExtended">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="GetObjectExtendedRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="GetObjectExtendedResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="PutObject">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="PutObjectRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="PutObjectResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="PutObjectInline">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="PutObjectInlineRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="PutObjectInlineResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="DeleteObject">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="DeleteObjectRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="DeleteObjectResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="ListBucket">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="ListBucketRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="ListBucketResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="ListAllMyBuckets">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="ListAllMyBucketsRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="ListAllMyBucketsResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="SetBucketLoggingStatus">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="SetBucketLoggingStatusRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="SetBucketLoggingStatusResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetBucketLoggingStatus">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="GetBucketLoggingStatusRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="GetBucketLoggingStatusResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="CopyObject">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="CopyObjectRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="CopyObjectResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="AmazonS3">
<wsdl:port binding="tns:AmazonS3SoapBinding" name="AmazonS3">
<wsdlsoap:address location="http://s3.cloud.com/soap"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

View File

@ -19,7 +19,7 @@ under the License.
-->
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="test"/>
<classpathentry excluding="com/cloud/hypervisor/vmware/util/TestVmwareUtil.java" kind="src" path="test"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry combineaccessrules="false" kind="src" path="/deps"/>
<classpathentry combineaccessrules="false" kind="src" path="/utils"/>

View File

@ -1,98 +0,0 @@
/*
* The contents of this file are subject to the "END USER LICENSE AGREEMENT FOR F5
* Software Development Kit for iControl"; you may not use this file except in
* compliance with the License. The License is included in the iControl
* Software Development Kit.
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
* the License for the specific language governing rights and limitations
* under the License.
*
* The Original Code is iControl Code and related documentation
* distributed by F5.
*
* Portions created by F5 are Copyright (C) 1996-2004 F5 Networks
* Inc. All Rights Reserved. iControl (TM) is a registered trademark of
* F5 Networks, Inc.
*
* Alternatively, the contents of this file may be used under the terms
* of the GNU General Public License (the "GPL"), in which case the
* provisions of GPL are applicable instead of those above. If you wish
* to allow use of your version of this file only under the terms of the
* GPL and not to allow others to use your version of this file under the
* License, indicate your decision by deleting the provisions above and
* replace them with the notice and other provisions required by the GPL.
* If you do not delete the provisions above, a recipient may use your
* version of this file under either the License or the GPL.
*/
package com.cloud.network.resource;
import java.security.AccessController;
import java.security.InvalidAlgorithmParameterException;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.PrivilegedAction;
import java.security.Security;
import java.security.cert.X509Certificate;
import javax.net.ssl.ManagerFactoryParameters;
import javax.net.ssl.TrustManager;
import javax.net.ssl.TrustManagerFactorySpi;
import javax.net.ssl.X509TrustManager;
public final class XTrustProvider extends java.security.Provider
{
private final static String NAME = "XTrustJSSE";
private final static String INFO =
"XTrust JSSE Provider (implements trust factory with truststore validation disabled)";
private final static double VERSION = 1.0D;
public XTrustProvider()
{
super(NAME, VERSION, INFO);
AccessController.doPrivileged(new PrivilegedAction()
{
public Object run()
{
put("TrustManagerFactory." + TrustManagerFactoryImpl.getAlgorithm(),
TrustManagerFactoryImpl.class.getName());
return null;
}
});
}
public static void install()
{
if(Security.getProvider(NAME) == null)
{
Security.insertProviderAt(new XTrustProvider(), 2);
Security.setProperty("ssl.TrustManagerFactory.algorithm",
TrustManagerFactoryImpl.getAlgorithm());
}
}
public final static class TrustManagerFactoryImpl extends TrustManagerFactorySpi
{
public TrustManagerFactoryImpl() { }
public static String getAlgorithm() { return "XTrust509"; }
protected void engineInit(KeyStore keystore) throws KeyStoreException { }
protected void engineInit(ManagerFactoryParameters mgrparams)
throws InvalidAlgorithmParameterException
{
throw new InvalidAlgorithmParameterException(
XTrustProvider.NAME + " does not use ManagerFactoryParameters");
}
protected TrustManager[] engineGetTrustManagers()
{
return new TrustManager[] { new X509TrustManager()
{
public X509Certificate[] getAcceptedIssuers() { return null; }
public void checkClientTrusted(X509Certificate[] certs, String authType) { }
public void checkServerTrusted(X509Certificate[] certs, String authType) { }
}};
}
}
}

View File

@ -297,7 +297,7 @@ public class DownloadManagerImpl implements DownloadManager {
}
byte[] md5sum = digest.digest();
BigInteger bigInt = new BigInteger(1, md5sum);
checksum = String.format("%032x",bigInt);
checksum = String.format("%032x",bigInt.toString(16));
return checksum;
}catch(IOException e) {
return null;

View File

@ -123,9 +123,7 @@
<para>Name - We'll use Cluster1</para>
</listitem>
<listitem>
<para>Hypervisor - If this is the first cluster, you may have already been prompted for which hypervisor you were going to use, in which case this will
be a read-only field. Otherwise choose KVM
</para>
<para>Hypervisor - Choose KVM</para>
</listitem>
</orderedlist>
</para>
@ -140,15 +138,15 @@
<listitem>
<para>Password - enter the operating system password for the root user</para>
</listitem>
<listitem>
<para>Host tags - This is an optional field and we will leave it blank</para>
</listitem>
</orderedlist>
</para>
<section id="Runbook-config-cluster-pristorage">
<title>Primary Storage</title>
<para>With you cluster now setup - you should be prompted for primary storage information. Choose NFS as the storage type and then enter the following values in the fields:
<orderedlist>
<listitem>
<para>Name - We'll use 'Primary1'</para>
</listitem>
<listitem>
<para>Server - We'll be using the IP address <replaceable>172.16.10.</replaceable>2</para>
</listitem>

View File

@ -155,6 +155,7 @@ import com.cloud.agent.api.to.VirtualMachineTO;
import com.cloud.agent.api.to.VolumeTO;
import com.cloud.hypervisor.kvm.resource.KVMHABase.NfsStoragePool;
import com.cloud.hypervisor.kvm.resource.LibvirtVMDef.ConsoleDef;
import com.cloud.hypervisor.kvm.resource.LibvirtVMDef.CpuTuneDef;
import com.cloud.hypervisor.kvm.resource.LibvirtVMDef.DevicesDef;
import com.cloud.hypervisor.kvm.resource.LibvirtVMDef.DiskDef;
import com.cloud.hypervisor.kvm.resource.LibvirtVMDef.DiskDef.diskProtocol;
@ -2477,6 +2478,10 @@ public class LibvirtComputingResource extends ServerResourceBase implements
grd.setVcpuNum(vmTO.getCpus());
vm.addComp(grd);
CpuTuneDef ctd = new CpuTuneDef();
ctd.setShares(vmTO.getCpus() * vmTO.getSpeed());
vm.addComp(ctd);
FeaturesDef features = new FeaturesDef();
features.addFeatures("pae");
features.addFeatures("apic");
@ -2552,9 +2557,6 @@ public class LibvirtComputingResource extends ServerResourceBase implements
s_logger.debug("starting " + vmName + ": " + vm.toString());
startDomain(conn, vmName, vm.toString());
Script.runSimpleBashScript("virsh schedinfo " + vmName
+ " --set cpu_shares=" + vmSpec.getCpus()
* vmSpec.getSpeed());
NicTO[] nics = vmSpec.getNics();
for (NicTO nic : nics) {

View File

@ -35,7 +35,7 @@ public class LibvirtVMDef {
}
enum bootOrder {
HARDISK("hd"), CDROM("cdrom"), FLOOPY("fd"), NETWORK("network");
HARDISK("hd"), CDROM("cdrom"), FLOPPY("fd"), NETWORK("network");
String _order;
bootOrder(String order) {
@ -323,7 +323,7 @@ public class LibvirtVMDef {
public static class DiskDef {
enum deviceType {
FLOOPY("floopy"), DISK("disk"), CDROM("cdrom");
FLOPPY("floppy"), DISK("disk"), CDROM("cdrom");
String _type;
deviceType(String type) {
@ -752,6 +752,29 @@ public class LibvirtVMDef {
}
}
public static class CpuTuneDef {
private int _shares = 0;
public void setShares(int shares) {
_shares = shares;
}
public int getShares() {
return _shares;
}
@Override
public String toString() {
StringBuilder cpuTuneBuilder = new StringBuilder();
cpuTuneBuilder.append("<cputune>\n");
if (_shares > 0) {
cpuTuneBuilder.append("<shares>" + _shares + "</shares>\n");
}
cpuTuneBuilder.append("</cputune>\n");
return cpuTuneBuilder.toString();
}
}
public static class SerialDef {
private final String _type;
private final String _source;

View File

@ -25,5 +25,6 @@ under the License.
<classpathentry combineaccessrules="false" kind="src" path="/server"/>
<classpathentry combineaccessrules="false" kind="src" path="/api"/>
<classpathentry combineaccessrules="false" kind="src" path="/deps"/>
<classpathentry combineaccessrules="false" kind="src" path="/ovs"/>
<classpathentry kind="output" path="bin"/>
</classpath>

View File

@ -134,8 +134,6 @@ public class F5BigIpResource implements ServerResource {
@Override
public boolean configure(String name, Map<String, Object> params) throws ConfigurationException {
try {
XTrustProvider.install();
_name = (String) params.get("name");
if (_name == null) {
throw new ConfigurationException("Unable to find name");

View File

@ -19,7 +19,6 @@ under the License.
-->
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk1.6.0_31"/>
<classpathentry combineaccessrules="false" kind="src" path="/agent"/>
<classpathentry combineaccessrules="false" kind="src" path="/core"/>
<classpathentry combineaccessrules="false" kind="src" path="/deps"/>

View File

@ -1,96 +0,0 @@
Summary
=======
1) templates/committerVote.txt
1a) request lazy consensus from IPMC
2) templates/committerInvite.txt
after they accept, then do:
3) templates/committerAccept.txt ... the normal process for dev-to-pmc
4) wait until we see that receipt of CLA is recorded
5) template/committerCreate.txt
5a) now wait until root says it is done
5b) chair to enable their svn access
6) template/committerDone.txt
7 template/committerAnnounce.txt
8) add them to the cloudstack-developers group in Jira.
Discussion
==========
We do the vote on the private mailing list to enable a frank discussion.
Start a separate Vote thread for each new person. This makes it much
easier to review the mail archives.
In most cases, we will be inviting people to go straight from developer
to PPMC member. However, there may be extraordinary cases where we want
limited work-related commit access. This will be resolved during the vote
discussion. http://forrest.apache.org/guidelines.html#elect (yes, I know
this is not the CloudStack project, we need to create our own guidelines)
We need to be sure that they are committed people that we can work with.
They will be our peers. We will have already observed that they are
committed to the project and graceful toward users and other developers.
Don't wait too long before proposing and don't be too hasty. There is a
trade-off and something about timeliness. A point is reached where it
becomes obvious that we should invite them. This encourages them and keeps
them enthusiastic. If we leave it too long, then we risk them becoming
disillusioned.
On the PPMC list we can each say exactly what we feel about each person,
with no holds barred. Keep the discussion concise. The praise part can
be done later in public.
See the end of this document for some guidelines to help you to assess a
candidate.
Let the Vote thread run for one week.
A positive result is achieved by Consensus Approval
http://forrest.apache.org/guidelines.html#approvals
i.e. at least 3 +1 votes and no vetoes.
Any veto must be accompanied by reasoning and be prepared to defend it.
Other members can attempt to encourage them to change.
New PPMC members can be either quiet or active as they choose. If we find
that certain people lapse and don't ever contribute, then we can take steps
to retire them.
After a positive result, we give them a chance to decline in private.
They can post a reply to the PPMC mailing list.
After we reach a decision on the PPMC list, and after the steps above,
we will announce it on the dev list. We can then each follow up with
our praise in public.
There are template emails for each stage of the process at ./templates/
These may need tweaks for each case. Also remember that these templates
are just a guide, especially the announcement one.
Other notes about the process are at
http://incubator.apache.org/guides/ppmc.html
http://www.apache.org/dev/pmc.html#newcommitter
------------------------------------------------------------------------
Guidelines for assessing candidates
-----------------------------------
When voting, you need to make up your own mind, perhaps search mailing lists
and Jira, etc. The following are some tips that we developed on the private@
list. It seems that each time we discuss someone, then new ideas arise about
what we should look for, e.g. private@ archives early July 2006.
Also consider http://forrest.apache.org/committed.html
0) Ability to work co-operatively with peers. Ability to be a mentor.
- How do we evaluate? By the interactions they have through mail. By how
they respond to criticism. By how they participate in decision-making process.
1) Community - How do we evaluate? By the interactions they have through mail.
2) Committment - How do we evaluate? By time, by sticking through tough
issues, by helping on not-so-fun tasks as well.
3) Personal skill/ability - How do we evaluate? A solid general understanding
of CloudStack. Quality of discussion in mail. Patches easy to apply with only
a cursory review.

View File

@ -1,3 +0,0 @@
This folder contains items of relevance to the management of the Apache CloudStack (incubating) project.
The contents of this folder and its subfolders are not required to run or work with CloudStack.

View File

@ -1,47 +0,0 @@
This is the followup email after they have accepted.
------------------------------------------------------------------------
To: JoeBloggs@foo.net
Cc: cloudstack-private@incubator.apache.org
Subject: Re: invitation to become CloudStack committer
Welcome. Here are the next steps. After that we will make
an announcement to the cloudstack-dev list.
You need to send a Contributor License Agreement to the ASF.
Normally you would send an Individual CLA. If you also make
contributions done in work time or using work resources then
see the Corporate CLA. Ask us if you have any issues.
http://www.apache.org/licenses/#clas
You need to choose a preferred ASF user name and alternatives.
In order to ensure it is available you can view a list of taken ids at
http://www.apache.org/~jim/committers.html
Please notify us when you have submitted the CLA and by what means
you did so. This will enable us to monitor its progress.
We will arrange for your Apache user account when the CLA has
been recorded.
After that is done, please make followup replies to the cloudstack-dev list.
We generally discuss everything there and keep this cloudstack-private@ list
for occasional matters which must be private.
The developer section of the website describes the roles
and provides other resources:
http://www.apache.org/foundation/how-it-works.html
http://www.apache.org/dev/
The incubator also has some useful information for new committers
in incubating projects:
http://incubator.apache.org/guides/committer.html
In the absence of our own guidelines document we are currently
using those developed at Apache Forrest:
http://forrest.apache.org/guidelines.html
Yours,
The Apache CloudStack PPMC
------------------------------------------------------------------------

View File

@ -1,23 +0,0 @@
This is the email to announce to cloudstack-dev after the
followup acceptance.
Replace the Joe Blogs in the subject, the ### in the body.
------------------------------------------------------------
To: cloudstack-dev@incubator.apache.org
Subject: new committer: ###Joe Bloggs
The Podling Project Management Committee (PPMC) for Apache CloudStack
has asked #### ####### to become a committer and we are pleased to
announce that they have accepted.
### add specific details here ###
Being a committer enables easier contribution to the
project since there is no need to go via the patch
submission process. This should enable better productivity.
Please join me in congratulating #########
--#####Name####
on behalf of the CloudStack PPMC

View File

@ -1,38 +0,0 @@
Account creation email for new committers.
Follow the instructions at:
http://www.apache.org/dev/pmc.html#newcommitter
Email is to be sent to root *after* the CLA is registered.
The PMC needs to monitor iclas.txt to be sure that the CLA
is properly received before sending this email. See above.
Don't forget to add their name/email in the email headers
and add the date/Message-Id of the PMC vote summary.
If the new member is already a committer, then just need
to ask root to add them to the UNIX groups.
IPMC member updates the authorization file to add the new
committer to both the committer-? section and the podling
section of the file https://svn.apache.org/repos/infra/infrastructure/trunk/subversion/authorization/asf-authorization
New PMC members need to be acknowledged by the IPMC,
after their account is created.
------------------------ snip ------------------------------
To: root@apache.org
Cc: cloudstack-private@incubator.apache.org, ###JoeBloggs@foo.net
Subject: account request: ###Joe Bloggs
Full name: ...
Preferred userid: ... [please provide acceptable alternates!]
Forwarding email address: ...
Requested UNIX groups: cloudstack
The receipt of the ICLA was recorded yesterday.
The vote was conducted on the cloudstack-private@incubator list
around YYYY-MM-DD ###
Message-Id: ###

View File

@ -1,45 +0,0 @@
After the committer account is established.
------------------------------------------------------------
To: cloudstack-private@incubator.apache.org, ###JoeBloggs@foo.net
Subject: account request: ###Joe Bloggs
####, as you know, the ASF Infrastructure has set up your
committer account as the username '####'.
Please follow the instructions to set up your SSH,
svn password, svn configuration, mail forwarding, etc.
http://www.apache.org/dev/#committers
Please subscribe to the CloudStack Podling Project Management
Committee mailing list private-cloudstack@incubator.apcahe.org.
You should also join the general@incubator@apache.org list.
You have commit access to specific sections of the
ASF repository, as follows:
CloudStack has various resources at:
https://git-wip-us.apache.org/repos/asf/incubator-cloudstack.git
The general "committers" at:
https://svn.apache.org/repos/private/committers
As per the documentation mentioned above, you need
to 'svn switch" previous checkouts to now use https.
If you have any questions during this phase, then please
see the following resources:
Apache developer's pages: http://www.apache.org/dev/
Apache Incubator site: http://incubator.apache.org/
Incubator Committers Guide: http://incubator.apache.org/guides/committer.html
Naturally, if you don't understand anything be sure to
ask us on the CloudStack dev mailing list. Documentation is
maintained by volunteers and hence can be out-of-date and
incomplete.
One of us will announce you to the dev list soon.

View File

@ -1,38 +0,0 @@
This is the invitation email, sent after a positive result
from the vote for a new committer.
Don't send this until there has been 72 hours for a lazy consensus
on private@incubator.apache.org.
Don't forget we need to forward this mail to
private@incubator.apache.org
------------------------------------------------------------
To: JoeBloggs@foo.net
Cc: cloudstack-private@incubator.apache.org
Subject: invitation to become CloudStack committer: Joe Bloggs #####
Hello #####, the Apache CloudStack Podling Project Management Committee
would like to invite you to become a CloudStack committer. We value
your contributions and are aware that you are committed to the project.
Being a committer enables you to more easily make changes and so
not need to go via the patch submission process. This should
enable you to be more productive.
While this does not mean that you need to participate any more
than you already do, it does tend to make one even more committed.
Hence you will probably find that you spend more time here.
Of course, you can decline and instead remain as a developer,
contributing as you do now.
This personal email is also providing a chance for you to decline
in private. Either way, please let us know in reply only to the
cloudstack-private@incubator.apache.org list. If you agree, then we will announce
on the cloudstack-dev@ list after the account is established.
Yours,
The Apache CloudStack PPMC
------------------------------------------------------------------------

View File

@ -1,26 +0,0 @@
This is the email to commence a vote for a new committer.
We do this on the CloudStack Private mailing list, so as to enable
a frank discussion.
Pay special attention that the IPMC gets copied on this email
------------------------------------------------------------
To: cloudstack-private@incubator.apache.org
Cc: private@incubator.apache.org
Subject: [Vote] new CloudStack committer: Joe Bloggs
[ add the reasons behind your nomination here ]
Voting ends one week from today, i.e. midnight UTC on YYYY-MM-DD
http://www.timeanddate.com/counters/customcounter.html?year=YYYY&month=MM&day=DD
[ ] +1 approve
[ ] +0 no opinion
[ ] -1 disapprove (and reason why)
See voting guidelines (we need some of those so this is a TODO)
https://svn.apache.org/repos/private/pmc/forrest/pmc-member-vote.txt
(yes, this links to the Apache Forrest Guidelines, we don't have our own yet)
------------------------------------------------------------

View File

@ -1,33 +0,0 @@
This is the email to end a vote for a new PPMC member.
We do this on the CloudStack Private mailing list as that
is where the vote is held..
Remember that this also needs to be forwarded to
private@incubator.apache.org and a 72 hour period for lazy
consensus must follow before moving on to the next stage
(committerInvite.txt).
------------------------------------------------------------
To: cloudstack-private@incubator.apache.org
cc: private@incubator.apache.org
Subject: [RESULT] [Vote] new CloudStack committer: Joe Bloggs
The vote has now closed. The results are:
Binding Votes:
+1 [TOTAL BINDING +1 VOTES]
0 [TOTAL BINDING +0/-0 VOTES]
-1 [TOTAL BINDING -1 VOTES]
The following mentors provided votes:
[If three binding +1 and no binding -1]
The vote passes, we now need lazy consensus approval from the IPMC. This email
calls for that consensus.
Consensus period ends 72 hours from now, i.e. XYZ UTC on YYYY-MM-DD
http://www.timeanddate.com/counters/customcounter.html?year=YYYY&month=MM&day=DD&hour=0&min=0&sec=0&p0=0
------------------------------------------------------------

View File

@ -19,7 +19,7 @@ under the License.
-->
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="test"/>
<classpathentry excluding="com/cloud/agent/manager/ResourceManagerTest.java|com/cloud/network/dao/ElbVmMapDaoTest.java" kind="src" path="test"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry combineaccessrules="false" kind="src" path="/utils"/>
<classpathentry combineaccessrules="false" kind="src" path="/core"/>

View File

@ -3409,6 +3409,9 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager
//VV 2: check if account/domain is with in resource limits to create a new vm
_resourceLimitMgr.checkResourceLimit(newAccount, ResourceType.user_vm);
//VV 3: check if volumes are with in resource limits
_resourceLimitMgr.checkResourceLimit(newAccount, ResourceType.volume, _volsDao.findByInstance(cmd.getVmId()).size());
// VV 4: Check if new owner can use the vm template
VirtualMachineTemplate template = _templateDao.findById(vm.getTemplateId());
if (!template.isPublicTemplate()) {

View File

@ -35,9 +35,9 @@ cd ~/builddevcloud/veewee
bundle install
rake install
bundle exec vagrant basebox define 'devcloudbase' 'ubuntu-12.04-server-i386'
wget --no-check-certificate -O ./definitions/devcloudbase/definition.rb https://git-wip-us.apache.org/repos/asf\?p\=incubator-cloudstack.git\;a\=blob_plain\;f\=tools/devcloud/veewee/definition.rb\;hb\=HEAD
wget --no-check-certificate -O ./definitions/devcloudbase/postinstall.sh https://git-wip-us.apache.org/repos/asf\?p\=incubator-cloudstack.git\;a\=blob_plain\;f\=tools/devcloud/veewee/postinstall.sh\;hb\=HEAD
wget --no-check-certificate -O ./definitions/devcloudbase/preseed.cfg https://git-wip-us.apache.org/repos/asf\?p\=incubator-cloudstack.git\;a\=blob_plain\;f\=tools/devcloud/veewee/preseed.cfg\;hb\=HEAD
wget --no-check-certificate -O ./definitions/devcloudbase/definition.rb "https://git-wip-us.apache.org/repos/asf?p=incubator-cloudstack.git;a=blob_plain;f=tools/devcloud/veewee/definition.rb;hb=HEAD"
wget --no-check-certificate -O ./definitions/devcloudbase/postinstall.sh "https://git-wip-us.apache.org/repos/asf?p=incubator-cloudstack.git;a=blob_plain;f=tools/devcloud/veewee/postinstall.sh;hb=HEAD"
wget --no-check-certificate -O ./definitions/devcloudbase/preseed.cfg "https://git-wip-us.apache.org/repos/asf?p=incubator-cloudstack.git;a=blob_plain;f=tools/devcloud/veewee/preseed.cfg;hb=HEAD"
bundle exec vagrant basebox build 'devcloudbase' -f -a -n
# possibly use -r here too ^
bundle exec vagrant basebox export 'devcloudbase' -f

View File

@ -0,0 +1,22 @@
#!/bin/sh
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
export CATALINA_HOME=/opt/cloudstack/apache-tomcat-6.0.32
cd /opt/cloudstack/incubator-cloudstack/
/usr/bin/ant clean-all build-all deploy-server deploydb

View File

@ -289,16 +289,25 @@ class puppet-devcloud {
ensure => latest,
}
file { '/opt/cloudstack/buildcloudstack.sh':
ensure => 'file',
source => 'puppet:///modules/puppet-devcloud/builddevcloud.sh',
mode => '777',
owner => '0',
group => '0',
}
exec { "build_cloudstack":
require => [
Package['ant'],
Exec["catalina_home"],
File['/opt/cloudstack/incubator-cloudstack/dist'],
File['/opt/cloudstack/incubator-cloudstack/target'],
Package['mkisofs']
Package['mkisofs'],
File['/opt/cloudstack/buildcloudstack.sh']
],
command => "/usr/bin/ant clean-all build-all deploy-server deploydb",
cwd => "/opt/cloudstack/incubator-cloudstack/",
command => "/opt/cloudstack/buildcloudstack.sh",
cwd => "/opt/cloudstack/",
timeout => '0',
}

View File

@ -1 +1,18 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
v0.1.0 Tuesday, April 10 2012 -- Packaging Marvin

View File

@ -1,2 +1,20 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
include *.txt
recursive-include docs *.txt
recursive-include docs *.txt

View File

@ -1 +1,20 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
Can be found at : http://wiki.cloudstack.org/display/QA/Testing+with+python

View File

@ -1 +1,18 @@
#Marvin - The cloudstack test client
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#Marvin - The cloudstack test client

View File

@ -1,131 +0,0 @@
'''
PyMySQL: A pure-Python drop-in replacement for MySQLdb.
Copyright (c) 2010 PyMySQL contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
'''
VERSION = (0, 4, None)
from constants import FIELD_TYPE
from converters import escape_dict, escape_sequence, escape_string
from err import Warning, Error, InterfaceError, DataError, \
DatabaseError, OperationalError, IntegrityError, InternalError, \
NotSupportedError, ProgrammingError, MySQLError
from times import Date, Time, Timestamp, \
DateFromTicks, TimeFromTicks, TimestampFromTicks
import sys
try:
frozenset
except NameError:
from sets import ImmutableSet as frozenset
try:
from sets import BaseSet as set
except ImportError:
from sets import Set as set
threadsafety = 1
apilevel = "2.0"
paramstyle = "format"
class DBAPISet(frozenset):
def __ne__(self, other):
if isinstance(other, set):
return super(DBAPISet, self).__ne__(self, other)
else:
return other not in self
def __eq__(self, other):
if isinstance(other, frozenset):
return frozenset.__eq__(self, other)
else:
return other in self
def __hash__(self):
return frozenset.__hash__(self)
STRING = DBAPISet([FIELD_TYPE.ENUM, FIELD_TYPE.STRING,
FIELD_TYPE.VAR_STRING])
BINARY = DBAPISet([FIELD_TYPE.BLOB, FIELD_TYPE.LONG_BLOB,
FIELD_TYPE.MEDIUM_BLOB, FIELD_TYPE.TINY_BLOB])
NUMBER = DBAPISet([FIELD_TYPE.DECIMAL, FIELD_TYPE.DOUBLE, FIELD_TYPE.FLOAT,
FIELD_TYPE.INT24, FIELD_TYPE.LONG, FIELD_TYPE.LONGLONG,
FIELD_TYPE.TINY, FIELD_TYPE.YEAR])
DATE = DBAPISet([FIELD_TYPE.DATE, FIELD_TYPE.NEWDATE])
TIME = DBAPISet([FIELD_TYPE.TIME])
TIMESTAMP = DBAPISet([FIELD_TYPE.TIMESTAMP, FIELD_TYPE.DATETIME])
DATETIME = TIMESTAMP
ROWID = DBAPISet()
def Binary(x):
"""Return x as a binary type."""
return str(x)
def Connect(*args, **kwargs):
"""
Connect to the database; see connections.Connection.__init__() for
more information.
"""
from connections import Connection
return Connection(*args, **kwargs)
def get_client_info(): # for MySQLdb compatibility
return '%s.%s.%s' % VERSION
connect = Connection = Connect
# we include a doctored version_info here for MySQLdb compatibility
version_info = (1,2,2,"final",0)
NULL = "NULL"
__version__ = get_client_info()
def thread_safe():
return True # match MySQLdb.thread_safe()
def install_as_MySQLdb():
"""
After this function is called, any application that imports MySQLdb or
_mysql will unwittingly actually use
"""
sys.modules["MySQLdb"] = sys.modules["_mysql"] = sys.modules["pymysql"]
__all__ = [
'BINARY', 'Binary', 'Connect', 'Connection', 'DATE', 'Date',
'Time', 'Timestamp', 'DateFromTicks', 'TimeFromTicks', 'TimestampFromTicks',
'DataError', 'DatabaseError', 'Error', 'FIELD_TYPE', 'IntegrityError',
'InterfaceError', 'InternalError', 'MySQLError', 'NULL', 'NUMBER',
'NotSupportedError', 'DBAPISet', 'OperationalError', 'ProgrammingError',
'ROWID', 'STRING', 'TIME', 'TIMESTAMP', 'Warning', 'apilevel', 'connect',
'connections', 'constants', 'converters', 'cursors',
'escape_dict', 'escape_sequence', 'escape_string', 'get_client_info',
'paramstyle', 'threadsafety', 'version_info',
"install_as_MySQLdb",
"NULL","__version__",
]

View File

@ -1,174 +0,0 @@
MBLENGTH = {
8:1,
33:3,
88:2,
91:2
}
class Charset:
def __init__(self, id, name, collation, is_default):
self.id, self.name, self.collation = id, name, collation
self.is_default = is_default == 'Yes'
class Charsets:
def __init__(self):
self._by_id = {}
def add(self, c):
self._by_id[c.id] = c
def by_id(self, id):
return self._by_id[id]
def by_name(self, name):
for c in self._by_id.values():
if c.name == name and c.is_default:
return c
_charsets = Charsets()
"""
Generated with:
mysql -N -s -e "select id, character_set_name, collation_name, is_default
from information_schema.collations order by id;" | python -c "import sys
for l in sys.stdin.readlines():
id, name, collation, is_default = l.split(chr(9))
print '_charsets.add(Charset(%s, \'%s\', \'%s\', \'%s\'))' \
% (id, name, collation, is_default.strip())
"
"""
_charsets.add(Charset(1, 'big5', 'big5_chinese_ci', 'Yes'))
_charsets.add(Charset(2, 'latin2', 'latin2_czech_cs', ''))
_charsets.add(Charset(3, 'dec8', 'dec8_swedish_ci', 'Yes'))
_charsets.add(Charset(4, 'cp850', 'cp850_general_ci', 'Yes'))
_charsets.add(Charset(5, 'latin1', 'latin1_german1_ci', ''))
_charsets.add(Charset(6, 'hp8', 'hp8_english_ci', 'Yes'))
_charsets.add(Charset(7, 'koi8r', 'koi8r_general_ci', 'Yes'))
_charsets.add(Charset(8, 'latin1', 'latin1_swedish_ci', 'Yes'))
_charsets.add(Charset(9, 'latin2', 'latin2_general_ci', 'Yes'))
_charsets.add(Charset(10, 'swe7', 'swe7_swedish_ci', 'Yes'))
_charsets.add(Charset(11, 'ascii', 'ascii_general_ci', 'Yes'))
_charsets.add(Charset(12, 'ujis', 'ujis_japanese_ci', 'Yes'))
_charsets.add(Charset(13, 'sjis', 'sjis_japanese_ci', 'Yes'))
_charsets.add(Charset(14, 'cp1251', 'cp1251_bulgarian_ci', ''))
_charsets.add(Charset(15, 'latin1', 'latin1_danish_ci', ''))
_charsets.add(Charset(16, 'hebrew', 'hebrew_general_ci', 'Yes'))
_charsets.add(Charset(18, 'tis620', 'tis620_thai_ci', 'Yes'))
_charsets.add(Charset(19, 'euckr', 'euckr_korean_ci', 'Yes'))
_charsets.add(Charset(20, 'latin7', 'latin7_estonian_cs', ''))
_charsets.add(Charset(21, 'latin2', 'latin2_hungarian_ci', ''))
_charsets.add(Charset(22, 'koi8u', 'koi8u_general_ci', 'Yes'))
_charsets.add(Charset(23, 'cp1251', 'cp1251_ukrainian_ci', ''))
_charsets.add(Charset(24, 'gb2312', 'gb2312_chinese_ci', 'Yes'))
_charsets.add(Charset(25, 'greek', 'greek_general_ci', 'Yes'))
_charsets.add(Charset(26, 'cp1250', 'cp1250_general_ci', 'Yes'))
_charsets.add(Charset(27, 'latin2', 'latin2_croatian_ci', ''))
_charsets.add(Charset(28, 'gbk', 'gbk_chinese_ci', 'Yes'))
_charsets.add(Charset(29, 'cp1257', 'cp1257_lithuanian_ci', ''))
_charsets.add(Charset(30, 'latin5', 'latin5_turkish_ci', 'Yes'))
_charsets.add(Charset(31, 'latin1', 'latin1_german2_ci', ''))
_charsets.add(Charset(32, 'armscii8', 'armscii8_general_ci', 'Yes'))
_charsets.add(Charset(33, 'utf8', 'utf8_general_ci', 'Yes'))
_charsets.add(Charset(34, 'cp1250', 'cp1250_czech_cs', ''))
_charsets.add(Charset(35, 'ucs2', 'ucs2_general_ci', 'Yes'))
_charsets.add(Charset(36, 'cp866', 'cp866_general_ci', 'Yes'))
_charsets.add(Charset(37, 'keybcs2', 'keybcs2_general_ci', 'Yes'))
_charsets.add(Charset(38, 'macce', 'macce_general_ci', 'Yes'))
_charsets.add(Charset(39, 'macroman', 'macroman_general_ci', 'Yes'))
_charsets.add(Charset(40, 'cp852', 'cp852_general_ci', 'Yes'))
_charsets.add(Charset(41, 'latin7', 'latin7_general_ci', 'Yes'))
_charsets.add(Charset(42, 'latin7', 'latin7_general_cs', ''))
_charsets.add(Charset(43, 'macce', 'macce_bin', ''))
_charsets.add(Charset(44, 'cp1250', 'cp1250_croatian_ci', ''))
_charsets.add(Charset(47, 'latin1', 'latin1_bin', ''))
_charsets.add(Charset(48, 'latin1', 'latin1_general_ci', ''))
_charsets.add(Charset(49, 'latin1', 'latin1_general_cs', ''))
_charsets.add(Charset(50, 'cp1251', 'cp1251_bin', ''))
_charsets.add(Charset(51, 'cp1251', 'cp1251_general_ci', 'Yes'))
_charsets.add(Charset(52, 'cp1251', 'cp1251_general_cs', ''))
_charsets.add(Charset(53, 'macroman', 'macroman_bin', ''))
_charsets.add(Charset(57, 'cp1256', 'cp1256_general_ci', 'Yes'))
_charsets.add(Charset(58, 'cp1257', 'cp1257_bin', ''))
_charsets.add(Charset(59, 'cp1257', 'cp1257_general_ci', 'Yes'))
_charsets.add(Charset(63, 'binary', 'binary', 'Yes'))
_charsets.add(Charset(64, 'armscii8', 'armscii8_bin', ''))
_charsets.add(Charset(65, 'ascii', 'ascii_bin', ''))
_charsets.add(Charset(66, 'cp1250', 'cp1250_bin', ''))
_charsets.add(Charset(67, 'cp1256', 'cp1256_bin', ''))
_charsets.add(Charset(68, 'cp866', 'cp866_bin', ''))
_charsets.add(Charset(69, 'dec8', 'dec8_bin', ''))
_charsets.add(Charset(70, 'greek', 'greek_bin', ''))
_charsets.add(Charset(71, 'hebrew', 'hebrew_bin', ''))
_charsets.add(Charset(72, 'hp8', 'hp8_bin', ''))
_charsets.add(Charset(73, 'keybcs2', 'keybcs2_bin', ''))
_charsets.add(Charset(74, 'koi8r', 'koi8r_bin', ''))
_charsets.add(Charset(75, 'koi8u', 'koi8u_bin', ''))
_charsets.add(Charset(77, 'latin2', 'latin2_bin', ''))
_charsets.add(Charset(78, 'latin5', 'latin5_bin', ''))
_charsets.add(Charset(79, 'latin7', 'latin7_bin', ''))
_charsets.add(Charset(80, 'cp850', 'cp850_bin', ''))
_charsets.add(Charset(81, 'cp852', 'cp852_bin', ''))
_charsets.add(Charset(82, 'swe7', 'swe7_bin', ''))
_charsets.add(Charset(83, 'utf8', 'utf8_bin', ''))
_charsets.add(Charset(84, 'big5', 'big5_bin', ''))
_charsets.add(Charset(85, 'euckr', 'euckr_bin', ''))
_charsets.add(Charset(86, 'gb2312', 'gb2312_bin', ''))
_charsets.add(Charset(87, 'gbk', 'gbk_bin', ''))
_charsets.add(Charset(88, 'sjis', 'sjis_bin', ''))
_charsets.add(Charset(89, 'tis620', 'tis620_bin', ''))
_charsets.add(Charset(90, 'ucs2', 'ucs2_bin', ''))
_charsets.add(Charset(91, 'ujis', 'ujis_bin', ''))
_charsets.add(Charset(92, 'geostd8', 'geostd8_general_ci', 'Yes'))
_charsets.add(Charset(93, 'geostd8', 'geostd8_bin', ''))
_charsets.add(Charset(94, 'latin1', 'latin1_spanish_ci', ''))
_charsets.add(Charset(95, 'cp932', 'cp932_japanese_ci', 'Yes'))
_charsets.add(Charset(96, 'cp932', 'cp932_bin', ''))
_charsets.add(Charset(97, 'eucjpms', 'eucjpms_japanese_ci', 'Yes'))
_charsets.add(Charset(98, 'eucjpms', 'eucjpms_bin', ''))
_charsets.add(Charset(99, 'cp1250', 'cp1250_polish_ci', ''))
_charsets.add(Charset(128, 'ucs2', 'ucs2_unicode_ci', ''))
_charsets.add(Charset(129, 'ucs2', 'ucs2_icelandic_ci', ''))
_charsets.add(Charset(130, 'ucs2', 'ucs2_latvian_ci', ''))
_charsets.add(Charset(131, 'ucs2', 'ucs2_romanian_ci', ''))
_charsets.add(Charset(132, 'ucs2', 'ucs2_slovenian_ci', ''))
_charsets.add(Charset(133, 'ucs2', 'ucs2_polish_ci', ''))
_charsets.add(Charset(134, 'ucs2', 'ucs2_estonian_ci', ''))
_charsets.add(Charset(135, 'ucs2', 'ucs2_spanish_ci', ''))
_charsets.add(Charset(136, 'ucs2', 'ucs2_swedish_ci', ''))
_charsets.add(Charset(137, 'ucs2', 'ucs2_turkish_ci', ''))
_charsets.add(Charset(138, 'ucs2', 'ucs2_czech_ci', ''))
_charsets.add(Charset(139, 'ucs2', 'ucs2_danish_ci', ''))
_charsets.add(Charset(140, 'ucs2', 'ucs2_lithuanian_ci', ''))
_charsets.add(Charset(141, 'ucs2', 'ucs2_slovak_ci', ''))
_charsets.add(Charset(142, 'ucs2', 'ucs2_spanish2_ci', ''))
_charsets.add(Charset(143, 'ucs2', 'ucs2_roman_ci', ''))
_charsets.add(Charset(144, 'ucs2', 'ucs2_persian_ci', ''))
_charsets.add(Charset(145, 'ucs2', 'ucs2_esperanto_ci', ''))
_charsets.add(Charset(146, 'ucs2', 'ucs2_hungarian_ci', ''))
_charsets.add(Charset(192, 'utf8', 'utf8_unicode_ci', ''))
_charsets.add(Charset(193, 'utf8', 'utf8_icelandic_ci', ''))
_charsets.add(Charset(194, 'utf8', 'utf8_latvian_ci', ''))
_charsets.add(Charset(195, 'utf8', 'utf8_romanian_ci', ''))
_charsets.add(Charset(196, 'utf8', 'utf8_slovenian_ci', ''))
_charsets.add(Charset(197, 'utf8', 'utf8_polish_ci', ''))
_charsets.add(Charset(198, 'utf8', 'utf8_estonian_ci', ''))
_charsets.add(Charset(199, 'utf8', 'utf8_spanish_ci', ''))
_charsets.add(Charset(200, 'utf8', 'utf8_swedish_ci', ''))
_charsets.add(Charset(201, 'utf8', 'utf8_turkish_ci', ''))
_charsets.add(Charset(202, 'utf8', 'utf8_czech_ci', ''))
_charsets.add(Charset(203, 'utf8', 'utf8_danish_ci', ''))
_charsets.add(Charset(204, 'utf8', 'utf8_lithuanian_ci', ''))
_charsets.add(Charset(205, 'utf8', 'utf8_slovak_ci', ''))
_charsets.add(Charset(206, 'utf8', 'utf8_spanish2_ci', ''))
_charsets.add(Charset(207, 'utf8', 'utf8_roman_ci', ''))
_charsets.add(Charset(208, 'utf8', 'utf8_persian_ci', ''))
_charsets.add(Charset(209, 'utf8', 'utf8_esperanto_ci', ''))
_charsets.add(Charset(210, 'utf8', 'utf8_hungarian_ci', ''))
def charset_by_name(name):
return _charsets.by_name(name)
def charset_by_id(id):
return _charsets.by_id(id)

View File

@ -1,928 +0,0 @@
# Python implementation of the MySQL client-server protocol
# http://forge.mysql.com/wiki/MySQL_Internals_ClientServer_Protocol
try:
import hashlib
sha_new = lambda *args, **kwargs: hashlib.new("sha1", *args, **kwargs)
except ImportError:
import sha
sha_new = sha.new
import socket
try:
import ssl
SSL_ENABLED = True
except ImportError:
SSL_ENABLED = False
import struct
import sys
import os
import ConfigParser
try:
import cStringIO as StringIO
except ImportError:
import StringIO
from charset import MBLENGTH, charset_by_name, charset_by_id
from cursors import Cursor
from constants import FIELD_TYPE, FLAG
from constants import SERVER_STATUS
from constants.CLIENT import *
from constants.COMMAND import *
from util import join_bytes, byte2int, int2byte
from converters import escape_item, encoders, decoders
from err import raise_mysql_exception, Warning, Error, \
InterfaceError, DataError, DatabaseError, OperationalError, \
IntegrityError, InternalError, NotSupportedError, ProgrammingError
DEBUG = False
NULL_COLUMN = 251
UNSIGNED_CHAR_COLUMN = 251
UNSIGNED_SHORT_COLUMN = 252
UNSIGNED_INT24_COLUMN = 253
UNSIGNED_INT64_COLUMN = 254
UNSIGNED_CHAR_LENGTH = 1
UNSIGNED_SHORT_LENGTH = 2
UNSIGNED_INT24_LENGTH = 3
UNSIGNED_INT64_LENGTH = 8
DEFAULT_CHARSET = 'latin1'
def dump_packet(data):
def is_ascii(data):
if byte2int(data) >= 65 and byte2int(data) <= 122: #data.isalnum():
return data
return '.'
print "packet length %d" % len(data)
print "method call[1]: %s" % sys._getframe(1).f_code.co_name
print "method call[2]: %s" % sys._getframe(2).f_code.co_name
print "method call[3]: %s" % sys._getframe(3).f_code.co_name
print "method call[4]: %s" % sys._getframe(4).f_code.co_name
print "method call[5]: %s" % sys._getframe(5).f_code.co_name
print "-" * 88
dump_data = [data[i:i+16] for i in xrange(len(data)) if i%16 == 0]
for d in dump_data:
print ' '.join(map(lambda x:"%02X" % byte2int(x), d)) + \
' ' * (16 - len(d)) + ' ' * 2 + \
' '.join(map(lambda x:"%s" % is_ascii(x), d))
print "-" * 88
print ""
def _scramble(password, message):
if password == None or len(password) == 0:
return int2byte(0)
if DEBUG: print 'password=' + password
stage1 = sha_new(password).digest()
stage2 = sha_new(stage1).digest()
s = sha_new()
s.update(message)
s.update(stage2)
result = s.digest()
return _my_crypt(result, stage1)
def _my_crypt(message1, message2):
length = len(message1)
result = struct.pack('B', length)
for i in xrange(length):
x = (struct.unpack('B', message1[i:i+1])[0] ^ \
struct.unpack('B', message2[i:i+1])[0])
result += struct.pack('B', x)
return result
# old_passwords support ported from libmysql/password.c
SCRAMBLE_LENGTH_323 = 8
class RandStruct_323(object):
def __init__(self, seed1, seed2):
self.max_value = 0x3FFFFFFFL
self.seed1 = seed1 % self.max_value
self.seed2 = seed2 % self.max_value
def my_rnd(self):
self.seed1 = (self.seed1 * 3L + self.seed2) % self.max_value
self.seed2 = (self.seed1 + self.seed2 + 33L) % self.max_value
return float(self.seed1) / float(self.max_value)
def _scramble_323(password, message):
hash_pass = _hash_password_323(password)
hash_message = _hash_password_323(message[:SCRAMBLE_LENGTH_323])
hash_pass_n = struct.unpack(">LL", hash_pass)
hash_message_n = struct.unpack(">LL", hash_message)
rand_st = RandStruct_323(hash_pass_n[0] ^ hash_message_n[0],
hash_pass_n[1] ^ hash_message_n[1])
outbuf = StringIO.StringIO()
for _ in xrange(min(SCRAMBLE_LENGTH_323, len(message))):
outbuf.write(int2byte(int(rand_st.my_rnd() * 31) + 64))
extra = int2byte(int(rand_st.my_rnd() * 31))
out = outbuf.getvalue()
outbuf = StringIO.StringIO()
for c in out:
outbuf.write(int2byte(byte2int(c) ^ byte2int(extra)))
return outbuf.getvalue()
def _hash_password_323(password):
nr = 1345345333L
add = 7L
nr2 = 0x12345671L
for c in [byte2int(x) for x in password if x not in (' ', '\t')]:
nr^= (((nr & 63)+add)*c)+ (nr << 8) & 0xFFFFFFFF
nr2= (nr2 + ((nr2 << 8) ^ nr)) & 0xFFFFFFFF
add= (add + c) & 0xFFFFFFFF
r1 = nr & ((1L << 31) - 1L) # kill sign bits
r2 = nr2 & ((1L << 31) - 1L)
# pack
return struct.pack(">LL", r1, r2)
def pack_int24(n):
return struct.pack('BBB', n&0xFF, (n>>8)&0xFF, (n>>16)&0xFF)
def unpack_uint16(n):
return struct.unpack('<H', n[0:2])[0]
# TODO: stop using bit-shifting in these functions...
# TODO: rename to "uint" to make it clear they're unsigned...
def unpack_int24(n):
return struct.unpack('B',n[0])[0] + (struct.unpack('B', n[1])[0] << 8) +\
(struct.unpack('B',n[2])[0] << 16)
def unpack_int32(n):
return struct.unpack('B',n[0])[0] + (struct.unpack('B', n[1])[0] << 8) +\
(struct.unpack('B',n[2])[0] << 16) + (struct.unpack('B', n[3])[0] << 24)
def unpack_int64(n):
return struct.unpack('B',n[0])[0] + (struct.unpack('B', n[1])[0]<<8) +\
(struct.unpack('B',n[2])[0] << 16) + (struct.unpack('B',n[3])[0]<<24)+\
(struct.unpack('B',n[4])[0] << 32) + (struct.unpack('B',n[5])[0]<<40)+\
(struct.unpack('B',n[6])[0] << 48) + (struct.unpack('B',n[7])[0]<<56)
def defaulterrorhandler(connection, cursor, errorclass, errorvalue):
err = errorclass, errorvalue
if DEBUG:
raise
if cursor:
cursor.messages.append(err)
else:
connection.messages.append(err)
del cursor
del connection
if not issubclass(errorclass, Error):
raise Error(errorclass, errorvalue)
else:
raise errorclass, errorvalue
class MysqlPacket(object):
"""Representation of a MySQL response packet. Reads in the packet
from the network socket, removes packet header and provides an interface
for reading/parsing the packet results."""
def __init__(self, connection):
self.connection = connection
self.__position = 0
self.__recv_packet()
def __recv_packet(self):
"""Parse the packet header and read entire packet payload into buffer."""
packet_header = self.connection.rfile.read(4)
if len(packet_header) < 4:
raise OperationalError(2013, "Lost connection to MySQL server during query")
if DEBUG: dump_packet(packet_header)
packet_length_bin = packet_header[:3]
self.__packet_number = byte2int(packet_header[3])
# TODO: check packet_num is correct (+1 from last packet)
bin_length = packet_length_bin + int2byte(0) # pad little-endian number
bytes_to_read = struct.unpack('<I', bin_length)[0]
recv_data = self.connection.rfile.read(bytes_to_read)
if len(recv_data) < bytes_to_read:
raise OperationalError(2013, "Lost connection to MySQL server during query")
if DEBUG: dump_packet(recv_data)
self.__data = recv_data
def packet_number(self): return self.__packet_number
def get_all_data(self): return self.__data
def read(self, size):
"""Read the first 'size' bytes in packet and advance cursor past them."""
result = self.peek(size)
self.advance(size)
return result
def read_all(self):
"""Read all remaining data in the packet.
(Subsequent read() or peek() will return errors.)
"""
result = self.__data[self.__position:]
self.__position = None # ensure no subsequent read() or peek()
return result
def advance(self, length):
"""Advance the cursor in data buffer 'length' bytes."""
new_position = self.__position + length
if new_position < 0 or new_position > len(self.__data):
raise Exception('Invalid advance amount (%s) for cursor. '
'Position=%s' % (length, new_position))
self.__position = new_position
def rewind(self, position=0):
"""Set the position of the data buffer cursor to 'position'."""
if position < 0 or position > len(self.__data):
raise Exception("Invalid position to rewind cursor to: %s." % position)
self.__position = position
def peek(self, size):
"""Look at the first 'size' bytes in packet without moving cursor."""
result = self.__data[self.__position:(self.__position+size)]
if len(result) != size:
error = ('Result length not requested length:\n'
'Expected=%s. Actual=%s. Position: %s. Data Length: %s'
% (size, len(result), self.__position, len(self.__data)))
if DEBUG:
print error
self.dump()
raise AssertionError(error)
return result
def get_bytes(self, position, length=1):
"""Get 'length' bytes starting at 'position'.
Position is start of payload (first four packet header bytes are not
included) starting at index '0'.
No error checking is done. If requesting outside end of buffer
an empty string (or string shorter than 'length') may be returned!
"""
return self.__data[position:(position+length)]
def read_length_coded_binary(self):
"""Read a 'Length Coded Binary' number from the data buffer.
Length coded numbers can be anywhere from 1 to 9 bytes depending
on the value of the first byte.
"""
c = byte2int(self.read(1))
if c == NULL_COLUMN:
return None
if c < UNSIGNED_CHAR_COLUMN:
return c
elif c == UNSIGNED_SHORT_COLUMN:
return unpack_uint16(self.read(UNSIGNED_SHORT_LENGTH))
elif c == UNSIGNED_INT24_COLUMN:
return unpack_int24(self.read(UNSIGNED_INT24_LENGTH))
elif c == UNSIGNED_INT64_COLUMN:
# TODO: what was 'longlong'? confirm it wasn't used?
return unpack_int64(self.read(UNSIGNED_INT64_LENGTH))
def read_length_coded_string(self):
"""Read a 'Length Coded String' from the data buffer.
A 'Length Coded String' consists first of a length coded
(unsigned, positive) integer represented in 1-9 bytes followed by
that many bytes of binary data. (For example "cat" would be "3cat".)
"""
length = self.read_length_coded_binary()
if length is None:
return None
return self.read(length)
def is_ok_packet(self):
return byte2int(self.get_bytes(0)) == 0
def is_eof_packet(self):
return byte2int(self.get_bytes(0)) == 254 # 'fe'
def is_resultset_packet(self):
field_count = byte2int(self.get_bytes(0))
return field_count >= 1 and field_count <= 250
def is_error_packet(self):
return byte2int(self.get_bytes(0)) == 255
def check_error(self):
if self.is_error_packet():
self.rewind()
self.advance(1) # field_count == error (we already know that)
errno = unpack_uint16(self.read(2))
if DEBUG: print "errno = %d" % errno
raise_mysql_exception(self.__data)
def dump(self):
dump_packet(self.__data)
class FieldDescriptorPacket(MysqlPacket):
"""A MysqlPacket that represents a specific column's metadata in the result.
Parsing is automatically done and the results are exported via public
attributes on the class such as: db, table_name, name, length, type_code.
"""
def __init__(self, *args):
MysqlPacket.__init__(self, *args)
self.__parse_field_descriptor()
def __parse_field_descriptor(self):
"""Parse the 'Field Descriptor' (Metadata) packet.
This is compatible with MySQL 4.1+ (not compatible with MySQL 4.0).
"""
self.catalog = self.read_length_coded_string()
self.db = self.read_length_coded_string()
self.table_name = self.read_length_coded_string()
self.org_table = self.read_length_coded_string()
self.name = self.read_length_coded_string().decode(self.connection.charset)
self.org_name = self.read_length_coded_string()
self.advance(1) # non-null filler
self.charsetnr = struct.unpack('<H', self.read(2))[0]
self.length = struct.unpack('<I', self.read(4))[0]
self.type_code = byte2int(self.read(1))
self.flags = struct.unpack('<H', self.read(2))[0]
self.scale = byte2int(self.read(1)) # "decimals"
self.advance(2) # filler (always 0x00)
# 'default' is a length coded binary and is still in the buffer?
# not used for normal result sets...
def description(self):
"""Provides a 7-item tuple compatible with the Python PEP249 DB Spec."""
desc = []
desc.append(self.name)
desc.append(self.type_code)
desc.append(None) # TODO: display_length; should this be self.length?
desc.append(self.get_column_length()) # 'internal_size'
desc.append(self.get_column_length()) # 'precision' # TODO: why!?!?
desc.append(self.scale)
# 'null_ok' -- can this be True/False rather than 1/0?
# if so just do: desc.append(bool(self.flags % 2 == 0))
if self.flags % 2 == 0:
desc.append(1)
else:
desc.append(0)
return tuple(desc)
def get_column_length(self):
if self.type_code == FIELD_TYPE.VAR_STRING:
mblen = MBLENGTH.get(self.charsetnr, 1)
return self.length // mblen
return self.length
def __str__(self):
return ('%s %s.%s.%s, type=%s'
% (self.__class__, self.db, self.table_name, self.name,
self.type_code))
class Connection(object):
"""
Representation of a socket with a mysql server.
The proper way to get an instance of this class is to call
connect()."""
errorhandler = defaulterrorhandler
def __init__(self, host="localhost", user=None, passwd="",
db=None, port=3306, unix_socket=None,
charset='', sql_mode=None,
read_default_file=None, conv=decoders, use_unicode=None,
client_flag=0, cursorclass=Cursor, init_command=None,
connect_timeout=None, ssl=None, read_default_group=None,
compress=None, named_pipe=None):
"""
Establish a connection to the MySQL database. Accepts several
arguments:
host: Host where the database server is located
user: Username to log in as
passwd: Password to use.
db: Database to use, None to not use a particular one.
port: MySQL port to use, default is usually OK.
unix_socket: Optionally, you can use a unix socket rather than TCP/IP.
charset: Charset you want to use.
sql_mode: Default SQL_MODE to use.
read_default_file: Specifies my.cnf file to read these parameters from under the [client] section.
conv: Decoders dictionary to use instead of the default one. This is used to provide custom marshalling of types. See converters.
use_unicode: Whether or not to default to unicode strings. This option defaults to true for Py3k.
client_flag: Custom flags to send to MySQL. Find potential values in constants.CLIENT.
cursorclass: Custom cursor class to use.
init_command: Initial SQL statement to run when connection is established.
connect_timeout: Timeout before throwing an exception when connecting.
ssl: A dict of arguments similar to mysql_ssl_set()'s parameters. For now the capath and cipher arguments are not supported.
read_default_group: Group to read from in the configuration file.
compress; Not supported
named_pipe: Not supported
"""
if use_unicode is None and sys.version_info[0] > 2:
use_unicode = True
if compress or named_pipe:
raise NotImplementedError, "compress and named_pipe arguments are not supported"
if ssl and (ssl.has_key('capath') or ssl.has_key('cipher')):
raise NotImplementedError, 'ssl options capath and cipher are not supported'
self.ssl = False
if ssl:
if not SSL_ENABLED:
raise NotImplementedError, "ssl module not found"
self.ssl = True
client_flag |= SSL
for k in ('key', 'cert', 'ca'):
v = None
if ssl.has_key(k):
v = ssl[k]
setattr(self, k, v)
if read_default_group and not read_default_file:
if sys.platform.startswith("win"):
read_default_file = "c:\\my.ini"
else:
read_default_file = "/etc/my.cnf"
if read_default_file:
if not read_default_group:
read_default_group = "client"
cfg = ConfigParser.RawConfigParser()
cfg.read(os.path.expanduser(read_default_file))
def _config(key, default):
try:
return cfg.get(read_default_group,key)
except:
return default
user = _config("user",user)
passwd = _config("password",passwd)
host = _config("host", host)
db = _config("db",db)
unix_socket = _config("socket",unix_socket)
port = _config("port", port)
charset = _config("default-character-set", charset)
self.host = host
self.port = port
self.user = user
self.password = passwd
self.db = db
self.unix_socket = unix_socket
if charset:
self.charset = charset
self.use_unicode = True
else:
self.charset = DEFAULT_CHARSET
self.use_unicode = False
if use_unicode is not None:
self.use_unicode = use_unicode
client_flag |= CAPABILITIES
client_flag |= MULTI_STATEMENTS
if self.db:
client_flag |= CONNECT_WITH_DB
self.client_flag = client_flag
self.cursorclass = cursorclass
self.connect_timeout = connect_timeout
self._connect()
self.messages = []
self.set_charset(charset)
self.encoders = encoders
self.decoders = conv
self._result = None
self._affected_rows = 0
self.host_info = "Not connected"
self.autocommit(False)
if sql_mode is not None:
c = self.cursor()
c.execute("SET sql_mode=%s", (sql_mode,))
self.commit()
if init_command is not None:
c = self.cursor()
c.execute(init_command)
self.commit()
def close(self):
''' Send the quit message and close the socket '''
if self.socket is None:
raise Error("Already closed")
send_data = struct.pack('<i',1) + int2byte(COM_QUIT)
self.wfile.write(send_data)
self.wfile.close()
self.rfile.close()
self.socket.close()
self.socket = None
self.rfile = None
self.wfile = None
def autocommit(self, value):
''' Set whether or not to commit after every execute() '''
try:
self._execute_command(COM_QUERY, "SET AUTOCOMMIT = %s" % \
self.escape(value))
self.read_packet()
except:
exc,value,tb = sys.exc_info()
self.errorhandler(None, exc, value)
def commit(self):
''' Commit changes to stable storage '''
try:
self._execute_command(COM_QUERY, "COMMIT")
self.read_packet()
except:
exc,value,tb = sys.exc_info()
self.errorhandler(None, exc, value)
def rollback(self):
''' Roll back the current transaction '''
try:
self._execute_command(COM_QUERY, "ROLLBACK")
self.read_packet()
except:
exc,value,tb = sys.exc_info()
self.errorhandler(None, exc, value)
def escape(self, obj):
''' Escape whatever value you pass to it '''
return escape_item(obj, self.charset)
def literal(self, obj):
''' Alias for escape() '''
return escape_item(obj, self.charset)
def cursor(self, cursor=None):
''' Create a new cursor to execute queries with '''
if cursor:
return cursor(self)
return self.cursorclass(self)
def __enter__(self):
''' Context manager that returns a Cursor '''
return self.cursor()
def __exit__(self, exc, value, traceback):
''' On successful exit, commit. On exception, rollback. '''
if exc:
self.rollback()
else:
self.commit()
# The following methods are INTERNAL USE ONLY (called from Cursor)
def query(self, sql):
if DEBUG:
print "sending query: %s" % sql
self._execute_command(COM_QUERY, sql)
self._affected_rows = self._read_query_result()
return self._affected_rows
def next_result(self):
self._affected_rows = self._read_query_result()
return self._affected_rows
def affected_rows(self):
return self._affected_rows
def kill(self, thread_id):
arg = struct.pack('<I', thread_id)
try:
self._execute_command(COM_PROCESS_KILL, arg)
except:
exc,value,tb = sys.exc_info()
self.errorhandler(None, exc, value)
return
pkt = self.read_packet()
return pkt.is_ok_packet()
def ping(self, reconnect=True):
''' Check if the server is alive '''
try:
self._execute_command(COM_PING, "")
except:
if reconnect:
self._connect()
return self.ping(False)
else:
exc,value,tb = sys.exc_info()
self.errorhandler(None, exc, value)
return
pkt = self.read_packet()
return pkt.is_ok_packet()
def set_charset(self, charset):
try:
if charset:
self._execute_command(COM_QUERY, "SET NAMES %s" %
self.escape(charset))
self.read_packet()
self.charset = charset
except:
exc,value,tb = sys.exc_info()
self.errorhandler(None, exc, value)
def _connect(self):
try:
if self.unix_socket and (self.host == 'localhost' or self.host == '127.0.0.1'):
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
t = sock.gettimeout()
sock.settimeout(self.connect_timeout)
sock.connect(self.unix_socket)
sock.settimeout(t)
self.host_info = "Localhost via UNIX socket"
if DEBUG: print 'connected using unix_socket'
else:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
t = sock.gettimeout()
sock.settimeout(self.connect_timeout)
sock.connect((self.host, self.port))
sock.settimeout(t)
self.host_info = "socket %s:%d" % (self.host, self.port)
if DEBUG: print 'connected using socket'
self.socket = sock
self.rfile = self.socket.makefile("rb")
self.wfile = self.socket.makefile("wb")
self._get_server_information()
self._request_authentication()
except socket.error, e:
raise OperationalError(2003, "Can't connect to MySQL server on %r (%s)" % (self.host, e.args[0]))
def read_packet(self, packet_type=MysqlPacket):
"""Read an entire "mysql packet" in its entirety from the network
and return a MysqlPacket type that represents the results."""
packet = packet_type(self)
packet.check_error()
return packet
def _read_query_result(self):
result = MySQLResult(self)
result.read()
self._result = result
return result.affected_rows
def insert_id(self):
if self._result:
return self._result.insert_id
else:
return 0
def _send_command(self, command, sql):
#send_data = struct.pack('<i', len(sql) + 1) + command + sql
# could probably be more efficient, at least it's correct
if not self.socket:
self.errorhandler(None, InterfaceError, "(0, '')")
if isinstance(sql, unicode):
sql = sql.encode(self.charset)
prelude = struct.pack('<i', len(sql)+1) + int2byte(command)
self.wfile.write(prelude + sql)
self.wfile.flush()
if DEBUG: dump_packet(prelude + sql)
def _execute_command(self, command, sql):
self._send_command(command, sql)
def _request_authentication(self):
self._send_authentication()
def _send_authentication(self):
self.client_flag |= CAPABILITIES
if self.server_version.startswith('5'):
self.client_flag |= MULTI_RESULTS
if self.user is None:
raise ValueError, "Did not specify a username"
charset_id = charset_by_name(self.charset).id
self.user = self.user.encode(self.charset)
data_init = struct.pack('<i', self.client_flag) + struct.pack("<I", 1) + \
int2byte(charset_id) + int2byte(0)*23
next_packet = 1
if self.ssl:
data = pack_int24(len(data_init)) + int2byte(next_packet) + data_init
next_packet += 1
if DEBUG: dump_packet(data)
self.wfile.write(data)
self.wfile.flush()
self.socket = ssl.wrap_self.socketet(self.socket, keyfile=self.key,
certfile=self.cert,
ssl_version=ssl.PROTOCOL_TLSv1,
cert_reqs=ssl.CERT_REQUIRED,
ca_certs=self.ca)
self.rfile = self.socket.makefile("rb")
self.wfile = self.socket.makefile("wb")
data = data_init + self.user+int2byte(0) + _scramble(self.password.encode(self.charset), self.salt)
if self.db:
self.db = self.db.encode(self.charset)
data += self.db + int2byte(0)
data = pack_int24(len(data)) + int2byte(next_packet) + data
next_packet += 2
if DEBUG: dump_packet(data)
self.wfile.write(data)
self.wfile.flush()
auth_packet = MysqlPacket(self)
auth_packet.check_error()
if DEBUG: auth_packet.dump()
# if old_passwords is enabled the packet will be 1 byte long and
# have the octet 254
if auth_packet.is_eof_packet():
# send legacy handshake
#raise NotImplementedError, "old_passwords are not supported. Check to see if mysqld was started with --old-passwords, if old-passwords=1 in a my.cnf file, or if there are some short hashes in your mysql.user table."
# TODO: is this the correct charset?
data = _scramble_323(self.password.encode(self.charset), self.salt.encode(self.charset)) + int2byte(0)
data = pack_int24(len(data)) + int2byte(next_packet) + data
self.wfile.write(data)
self.wfile.flush()
auth_packet = MysqlPacket(self)
auth_packet.check_error()
if DEBUG: auth_packet.dump()
# _mysql support
def thread_id(self):
return self.server_thread_id[0]
def character_set_name(self):
return self.charset
def get_host_info(self):
return self.host_info
def get_proto_info(self):
return self.protocol_version
def _get_server_information(self):
i = 0
packet = MysqlPacket(self)
data = packet.get_all_data()
if DEBUG: dump_packet(data)
#packet_len = byte2int(data[i:i+1])
#i += 4
self.protocol_version = byte2int(data[i:i+1])
i += 1
server_end = data.find(int2byte(0), i)
# TODO: is this the correct charset? should it be default_charset?
self.server_version = data[i:server_end].decode(self.charset)
i = server_end + 1
self.server_thread_id = struct.unpack('<h', data[i:i+2])
i += 4
self.salt = data[i:i+8]
i += 9
if len(data) >= i + 1:
i += 1
self.server_capabilities = struct.unpack('<h', data[i:i+2])[0]
i += 1
self.server_language = byte2int(data[i:i+1])
self.server_charset = charset_by_id(self.server_language).name
i += 16
if len(data) >= i+12-1:
rest_salt = data[i:i+12]
self.salt += rest_salt
def get_server_info(self):
return self.server_version
Warning = Warning
Error = Error
InterfaceError = InterfaceError
DatabaseError = DatabaseError
DataError = DataError
OperationalError = OperationalError
IntegrityError = IntegrityError
InternalError = InternalError
ProgrammingError = ProgrammingError
NotSupportedError = NotSupportedError
# TODO: move OK and EOF packet parsing/logic into a proper subclass
# of MysqlPacket like has been done with FieldDescriptorPacket.
class MySQLResult(object):
def __init__(self, connection):
from weakref import proxy
self.connection = proxy(connection)
self.affected_rows = None
self.insert_id = None
self.server_status = 0
self.warning_count = 0
self.message = None
self.field_count = 0
self.description = None
self.rows = None
self.has_next = None
def read(self):
self.first_packet = self.connection.read_packet()
# TODO: use classes for different packet types?
if self.first_packet.is_ok_packet():
self._read_ok_packet()
else:
self._read_result_packet()
def _read_ok_packet(self):
self.first_packet.advance(1) # field_count (always '0')
self.affected_rows = self.first_packet.read_length_coded_binary()
self.insert_id = self.first_packet.read_length_coded_binary()
self.server_status = struct.unpack('<H', self.first_packet.read(2))[0]
self.warning_count = struct.unpack('<H', self.first_packet.read(2))[0]
self.message = self.first_packet.read_all()
def _read_result_packet(self):
self.field_count = byte2int(self.first_packet.read(1))
self._get_descriptions()
self._read_rowdata_packet()
# TODO: implement this as an iteratable so that it is more
# memory efficient and lower-latency to client...
def _read_rowdata_packet(self):
"""Read a rowdata packet for each data row in the result set."""
rows = []
while True:
packet = self.connection.read_packet()
if packet.is_eof_packet():
self.warning_count = packet.read(2)
server_status = struct.unpack('<h', packet.read(2))[0]
self.has_next = (server_status
& SERVER_STATUS.SERVER_MORE_RESULTS_EXISTS)
break
row = []
for field in self.fields:
if field.type_code in self.connection.decoders:
converter = self.connection.decoders[field.type_code]
if DEBUG: print "DEBUG: field=%s, converter=%s" % (field, converter)
data = packet.read_length_coded_string()
converted = None
if data != None:
converted = converter(self.connection, field, data)
row.append(converted)
rows.append(tuple(row))
self.affected_rows = len(rows)
self.rows = tuple(rows)
if DEBUG: self.rows
def _get_descriptions(self):
"""Read a column descriptor packet for each column in the result."""
self.fields = []
description = []
for i in xrange(self.field_count):
field = self.connection.read_packet(FieldDescriptorPacket)
self.fields.append(field)
description.append(field.description())
eof_packet = self.connection.read_packet()
assert eof_packet.is_eof_packet(), 'Protocol error, expecting EOF'
self.description = tuple(description)

View File

@ -1,20 +0,0 @@
LONG_PASSWORD = 1
FOUND_ROWS = 1 << 1
LONG_FLAG = 1 << 2
CONNECT_WITH_DB = 1 << 3
NO_SCHEMA = 1 << 4
COMPRESS = 1 << 5
ODBC = 1 << 6
LOCAL_FILES = 1 << 7
IGNORE_SPACE = 1 << 8
PROTOCOL_41 = 1 << 9
INTERACTIVE = 1 << 10
SSL = 1 << 11
IGNORE_SIGPIPE = 1 << 12
TRANSACTIONS = 1 << 13
SECURE_CONNECTION = 1 << 15
MULTI_STATEMENTS = 1 << 16
MULTI_RESULTS = 1 << 17
CAPABILITIES = LONG_PASSWORD|LONG_FLAG|TRANSACTIONS| \
PROTOCOL_41|SECURE_CONNECTION

View File

@ -1,23 +0,0 @@
COM_SLEEP = 0x00
COM_QUIT = 0x01
COM_INIT_DB = 0x02
COM_QUERY = 0x03
COM_FIELD_LIST = 0x04
COM_CREATE_DB = 0x05
COM_DROP_DB = 0x06
COM_REFRESH = 0x07
COM_SHUTDOWN = 0x08
COM_STATISTICS = 0x09
COM_PROCESS_INFO = 0x0a
COM_CONNECT = 0x0b
COM_PROCESS_KILL = 0x0c
COM_DEBUG = 0x0d
COM_PING = 0x0e
COM_TIME = 0x0f
COM_DELAYED_INSERT = 0x10
COM_CHANGE_USER = 0x11
COM_BINLOG_DUMP = 0x12
COM_TABLE_DUMP = 0x13
COM_CONNECT_OUT = 0x14
COM_REGISTER_SLAVE = 0x15

View File

@ -1,472 +0,0 @@
ERROR_FIRST = 1000
HASHCHK = 1000
NISAMCHK = 1001
NO = 1002
YES = 1003
CANT_CREATE_FILE = 1004
CANT_CREATE_TABLE = 1005
CANT_CREATE_DB = 1006
DB_CREATE_EXISTS = 1007
DB_DROP_EXISTS = 1008
DB_DROP_DELETE = 1009
DB_DROP_RMDIR = 1010
CANT_DELETE_FILE = 1011
CANT_FIND_SYSTEM_REC = 1012
CANT_GET_STAT = 1013
CANT_GET_WD = 1014
CANT_LOCK = 1015
CANT_OPEN_FILE = 1016
FILE_NOT_FOUND = 1017
CANT_READ_DIR = 1018
CANT_SET_WD = 1019
CHECKREAD = 1020
DISK_FULL = 1021
DUP_KEY = 1022
ERROR_ON_CLOSE = 1023
ERROR_ON_READ = 1024
ERROR_ON_RENAME = 1025
ERROR_ON_WRITE = 1026
FILE_USED = 1027
FILSORT_ABORT = 1028
FORM_NOT_FOUND = 1029
GET_ERRNO = 1030
ILLEGAL_HA = 1031
KEY_NOT_FOUND = 1032
NOT_FORM_FILE = 1033
NOT_KEYFILE = 1034
OLD_KEYFILE = 1035
OPEN_AS_READONLY = 1036
OUTOFMEMORY = 1037
OUT_OF_SORTMEMORY = 1038
UNEXPECTED_EOF = 1039
CON_COUNT_ERROR = 1040
OUT_OF_RESOURCES = 1041
BAD_HOST_ERROR = 1042
HANDSHAKE_ERROR = 1043
DBACCESS_DENIED_ERROR = 1044
ACCESS_DENIED_ERROR = 1045
NO_DB_ERROR = 1046
UNKNOWN_COM_ERROR = 1047
BAD_NULL_ERROR = 1048
BAD_DB_ERROR = 1049
TABLE_EXISTS_ERROR = 1050
BAD_TABLE_ERROR = 1051
NON_UNIQ_ERROR = 1052
SERVER_SHUTDOWN = 1053
BAD_FIELD_ERROR = 1054
WRONG_FIELD_WITH_GROUP = 1055
WRONG_GROUP_FIELD = 1056
WRONG_SUM_SELECT = 1057
WRONG_VALUE_COUNT = 1058
TOO_LONG_IDENT = 1059
DUP_FIELDNAME = 1060
DUP_KEYNAME = 1061
DUP_ENTRY = 1062
WRONG_FIELD_SPEC = 1063
PARSE_ERROR = 1064
EMPTY_QUERY = 1065
NONUNIQ_TABLE = 1066
INVALID_DEFAULT = 1067
MULTIPLE_PRI_KEY = 1068
TOO_MANY_KEYS = 1069
TOO_MANY_KEY_PARTS = 1070
TOO_LONG_KEY = 1071
KEY_COLUMN_DOES_NOT_EXITS = 1072
BLOB_USED_AS_KEY = 1073
TOO_BIG_FIELDLENGTH = 1074
WRONG_AUTO_KEY = 1075
READY = 1076
NORMAL_SHUTDOWN = 1077
GOT_SIGNAL = 1078
SHUTDOWN_COMPLETE = 1079
FORCING_CLOSE = 1080
IPSOCK_ERROR = 1081
NO_SUCH_INDEX = 1082
WRONG_FIELD_TERMINATORS = 1083
BLOBS_AND_NO_TERMINATED = 1084
TEXTFILE_NOT_READABLE = 1085
FILE_EXISTS_ERROR = 1086
LOAD_INFO = 1087
ALTER_INFO = 1088
WRONG_SUB_KEY = 1089
CANT_REMOVE_ALL_FIELDS = 1090
CANT_DROP_FIELD_OR_KEY = 1091
INSERT_INFO = 1092
UPDATE_TABLE_USED = 1093
NO_SUCH_THREAD = 1094
KILL_DENIED_ERROR = 1095
NO_TABLES_USED = 1096
TOO_BIG_SET = 1097
NO_UNIQUE_LOGFILE = 1098
TABLE_NOT_LOCKED_FOR_WRITE = 1099
TABLE_NOT_LOCKED = 1100
BLOB_CANT_HAVE_DEFAULT = 1101
WRONG_DB_NAME = 1102
WRONG_TABLE_NAME = 1103
TOO_BIG_SELECT = 1104
UNKNOWN_ERROR = 1105
UNKNOWN_PROCEDURE = 1106
WRONG_PARAMCOUNT_TO_PROCEDURE = 1107
WRONG_PARAMETERS_TO_PROCEDURE = 1108
UNKNOWN_TABLE = 1109
FIELD_SPECIFIED_TWICE = 1110
INVALID_GROUP_FUNC_USE = 1111
UNSUPPORTED_EXTENSION = 1112
TABLE_MUST_HAVE_COLUMNS = 1113
RECORD_FILE_FULL = 1114
UNKNOWN_CHARACTER_SET = 1115
TOO_MANY_TABLES = 1116
TOO_MANY_FIELDS = 1117
TOO_BIG_ROWSIZE = 1118
STACK_OVERRUN = 1119
WRONG_OUTER_JOIN = 1120
NULL_COLUMN_IN_INDEX = 1121
CANT_FIND_UDF = 1122
CANT_INITIALIZE_UDF = 1123
UDF_NO_PATHS = 1124
UDF_EXISTS = 1125
CANT_OPEN_LIBRARY = 1126
CANT_FIND_DL_ENTRY = 1127
FUNCTION_NOT_DEFINED = 1128
HOST_IS_BLOCKED = 1129
HOST_NOT_PRIVILEGED = 1130
PASSWORD_ANONYMOUS_USER = 1131
PASSWORD_NOT_ALLOWED = 1132
PASSWORD_NO_MATCH = 1133
UPDATE_INFO = 1134
CANT_CREATE_THREAD = 1135
WRONG_VALUE_COUNT_ON_ROW = 1136
CANT_REOPEN_TABLE = 1137
INVALID_USE_OF_NULL = 1138
REGEXP_ERROR = 1139
MIX_OF_GROUP_FUNC_AND_FIELDS = 1140
NONEXISTING_GRANT = 1141
TABLEACCESS_DENIED_ERROR = 1142
COLUMNACCESS_DENIED_ERROR = 1143
ILLEGAL_GRANT_FOR_TABLE = 1144
GRANT_WRONG_HOST_OR_USER = 1145
NO_SUCH_TABLE = 1146
NONEXISTING_TABLE_GRANT = 1147
NOT_ALLOWED_COMMAND = 1148
SYNTAX_ERROR = 1149
DELAYED_CANT_CHANGE_LOCK = 1150
TOO_MANY_DELAYED_THREADS = 1151
ABORTING_CONNECTION = 1152
NET_PACKET_TOO_LARGE = 1153
NET_READ_ERROR_FROM_PIPE = 1154
NET_FCNTL_ERROR = 1155
NET_PACKETS_OUT_OF_ORDER = 1156
NET_UNCOMPRESS_ERROR = 1157
NET_READ_ERROR = 1158
NET_READ_INTERRUPTED = 1159
NET_ERROR_ON_WRITE = 1160
NET_WRITE_INTERRUPTED = 1161
TOO_LONG_STRING = 1162
TABLE_CANT_HANDLE_BLOB = 1163
TABLE_CANT_HANDLE_AUTO_INCREMENT = 1164
DELAYED_INSERT_TABLE_LOCKED = 1165
WRONG_COLUMN_NAME = 1166
WRONG_KEY_COLUMN = 1167
WRONG_MRG_TABLE = 1168
DUP_UNIQUE = 1169
BLOB_KEY_WITHOUT_LENGTH = 1170
PRIMARY_CANT_HAVE_NULL = 1171
TOO_MANY_ROWS = 1172
REQUIRES_PRIMARY_KEY = 1173
NO_RAID_COMPILED = 1174
UPDATE_WITHOUT_KEY_IN_SAFE_MODE = 1175
KEY_DOES_NOT_EXITS = 1176
CHECK_NO_SUCH_TABLE = 1177
CHECK_NOT_IMPLEMENTED = 1178
CANT_DO_THIS_DURING_AN_TRANSACTION = 1179
ERROR_DURING_COMMIT = 1180
ERROR_DURING_ROLLBACK = 1181
ERROR_DURING_FLUSH_LOGS = 1182
ERROR_DURING_CHECKPOINT = 1183
NEW_ABORTING_CONNECTION = 1184
DUMP_NOT_IMPLEMENTED = 1185
FLUSH_MASTER_BINLOG_CLOSED = 1186
INDEX_REBUILD = 1187
MASTER = 1188
MASTER_NET_READ = 1189
MASTER_NET_WRITE = 1190
FT_MATCHING_KEY_NOT_FOUND = 1191
LOCK_OR_ACTIVE_TRANSACTION = 1192
UNKNOWN_SYSTEM_VARIABLE = 1193
CRASHED_ON_USAGE = 1194
CRASHED_ON_REPAIR = 1195
WARNING_NOT_COMPLETE_ROLLBACK = 1196
TRANS_CACHE_FULL = 1197
SLAVE_MUST_STOP = 1198
SLAVE_NOT_RUNNING = 1199
BAD_SLAVE = 1200
MASTER_INFO = 1201
SLAVE_THREAD = 1202
TOO_MANY_USER_CONNECTIONS = 1203
SET_CONSTANTS_ONLY = 1204
LOCK_WAIT_TIMEOUT = 1205
LOCK_TABLE_FULL = 1206
READ_ONLY_TRANSACTION = 1207
DROP_DB_WITH_READ_LOCK = 1208
CREATE_DB_WITH_READ_LOCK = 1209
WRONG_ARGUMENTS = 1210
NO_PERMISSION_TO_CREATE_USER = 1211
UNION_TABLES_IN_DIFFERENT_DIR = 1212
LOCK_DEADLOCK = 1213
TABLE_CANT_HANDLE_FT = 1214
CANNOT_ADD_FOREIGN = 1215
NO_REFERENCED_ROW = 1216
ROW_IS_REFERENCED = 1217
CONNECT_TO_MASTER = 1218
QUERY_ON_MASTER = 1219
ERROR_WHEN_EXECUTING_COMMAND = 1220
WRONG_USAGE = 1221
WRONG_NUMBER_OF_COLUMNS_IN_SELECT = 1222
CANT_UPDATE_WITH_READLOCK = 1223
MIXING_NOT_ALLOWED = 1224
DUP_ARGUMENT = 1225
USER_LIMIT_REACHED = 1226
SPECIFIC_ACCESS_DENIED_ERROR = 1227
LOCAL_VARIABLE = 1228
GLOBAL_VARIABLE = 1229
NO_DEFAULT = 1230
WRONG_VALUE_FOR_VAR = 1231
WRONG_TYPE_FOR_VAR = 1232
VAR_CANT_BE_READ = 1233
CANT_USE_OPTION_HERE = 1234
NOT_SUPPORTED_YET = 1235
MASTER_FATAL_ERROR_READING_BINLOG = 1236
SLAVE_IGNORED_TABLE = 1237
INCORRECT_GLOBAL_LOCAL_VAR = 1238
WRONG_FK_DEF = 1239
KEY_REF_DO_NOT_MATCH_TABLE_REF = 1240
OPERAND_COLUMNS = 1241
SUBQUERY_NO_1_ROW = 1242
UNKNOWN_STMT_HANDLER = 1243
CORRUPT_HELP_DB = 1244
CYCLIC_REFERENCE = 1245
AUTO_CONVERT = 1246
ILLEGAL_REFERENCE = 1247
DERIVED_MUST_HAVE_ALIAS = 1248
SELECT_REDUCED = 1249
TABLENAME_NOT_ALLOWED_HERE = 1250
NOT_SUPPORTED_AUTH_MODE = 1251
SPATIAL_CANT_HAVE_NULL = 1252
COLLATION_CHARSET_MISMATCH = 1253
SLAVE_WAS_RUNNING = 1254
SLAVE_WAS_NOT_RUNNING = 1255
TOO_BIG_FOR_UNCOMPRESS = 1256
ZLIB_Z_MEM_ERROR = 1257
ZLIB_Z_BUF_ERROR = 1258
ZLIB_Z_DATA_ERROR = 1259
CUT_VALUE_GROUP_CONCAT = 1260
WARN_TOO_FEW_RECORDS = 1261
WARN_TOO_MANY_RECORDS = 1262
WARN_NULL_TO_NOTNULL = 1263
WARN_DATA_OUT_OF_RANGE = 1264
WARN_DATA_TRUNCATED = 1265
WARN_USING_OTHER_HANDLER = 1266
CANT_AGGREGATE_2COLLATIONS = 1267
DROP_USER = 1268
REVOKE_GRANTS = 1269
CANT_AGGREGATE_3COLLATIONS = 1270
CANT_AGGREGATE_NCOLLATIONS = 1271
VARIABLE_IS_NOT_STRUCT = 1272
UNKNOWN_COLLATION = 1273
SLAVE_IGNORED_SSL_PARAMS = 1274
SERVER_IS_IN_SECURE_AUTH_MODE = 1275
WARN_FIELD_RESOLVED = 1276
BAD_SLAVE_UNTIL_COND = 1277
MISSING_SKIP_SLAVE = 1278
UNTIL_COND_IGNORED = 1279
WRONG_NAME_FOR_INDEX = 1280
WRONG_NAME_FOR_CATALOG = 1281
WARN_QC_RESIZE = 1282
BAD_FT_COLUMN = 1283
UNKNOWN_KEY_CACHE = 1284
WARN_HOSTNAME_WONT_WORK = 1285
UNKNOWN_STORAGE_ENGINE = 1286
WARN_DEPRECATED_SYNTAX = 1287
NON_UPDATABLE_TABLE = 1288
FEATURE_DISABLED = 1289
OPTION_PREVENTS_STATEMENT = 1290
DUPLICATED_VALUE_IN_TYPE = 1291
TRUNCATED_WRONG_VALUE = 1292
TOO_MUCH_AUTO_TIMESTAMP_COLS = 1293
INVALID_ON_UPDATE = 1294
UNSUPPORTED_PS = 1295
GET_ERRMSG = 1296
GET_TEMPORARY_ERRMSG = 1297
UNKNOWN_TIME_ZONE = 1298
WARN_INVALID_TIMESTAMP = 1299
INVALID_CHARACTER_STRING = 1300
WARN_ALLOWED_PACKET_OVERFLOWED = 1301
CONFLICTING_DECLARATIONS = 1302
SP_NO_RECURSIVE_CREATE = 1303
SP_ALREADY_EXISTS = 1304
SP_DOES_NOT_EXIST = 1305
SP_DROP_FAILED = 1306
SP_STORE_FAILED = 1307
SP_LILABEL_MISMATCH = 1308
SP_LABEL_REDEFINE = 1309
SP_LABEL_MISMATCH = 1310
SP_UNINIT_VAR = 1311
SP_BADSELECT = 1312
SP_BADRETURN = 1313
SP_BADSTATEMENT = 1314
UPDATE_LOG_DEPRECATED_IGNORED = 1315
UPDATE_LOG_DEPRECATED_TRANSLATED = 1316
QUERY_INTERRUPTED = 1317
SP_WRONG_NO_OF_ARGS = 1318
SP_COND_MISMATCH = 1319
SP_NORETURN = 1320
SP_NORETURNEND = 1321
SP_BAD_CURSOR_QUERY = 1322
SP_BAD_CURSOR_SELECT = 1323
SP_CURSOR_MISMATCH = 1324
SP_CURSOR_ALREADY_OPEN = 1325
SP_CURSOR_NOT_OPEN = 1326
SP_UNDECLARED_VAR = 1327
SP_WRONG_NO_OF_FETCH_ARGS = 1328
SP_FETCH_NO_DATA = 1329
SP_DUP_PARAM = 1330
SP_DUP_VAR = 1331
SP_DUP_COND = 1332
SP_DUP_CURS = 1333
SP_CANT_ALTER = 1334
SP_SUBSELECT_NYI = 1335
STMT_NOT_ALLOWED_IN_SF_OR_TRG = 1336
SP_VARCOND_AFTER_CURSHNDLR = 1337
SP_CURSOR_AFTER_HANDLER = 1338
SP_CASE_NOT_FOUND = 1339
FPARSER_TOO_BIG_FILE = 1340
FPARSER_BAD_HEADER = 1341
FPARSER_EOF_IN_COMMENT = 1342
FPARSER_ERROR_IN_PARAMETER = 1343
FPARSER_EOF_IN_UNKNOWN_PARAMETER = 1344
VIEW_NO_EXPLAIN = 1345
FRM_UNKNOWN_TYPE = 1346
WRONG_OBJECT = 1347
NONUPDATEABLE_COLUMN = 1348
VIEW_SELECT_DERIVED = 1349
VIEW_SELECT_CLAUSE = 1350
VIEW_SELECT_VARIABLE = 1351
VIEW_SELECT_TMPTABLE = 1352
VIEW_WRONG_LIST = 1353
WARN_VIEW_MERGE = 1354
WARN_VIEW_WITHOUT_KEY = 1355
VIEW_INVALID = 1356
SP_NO_DROP_SP = 1357
SP_GOTO_IN_HNDLR = 1358
TRG_ALREADY_EXISTS = 1359
TRG_DOES_NOT_EXIST = 1360
TRG_ON_VIEW_OR_TEMP_TABLE = 1361
TRG_CANT_CHANGE_ROW = 1362
TRG_NO_SUCH_ROW_IN_TRG = 1363
NO_DEFAULT_FOR_FIELD = 1364
DIVISION_BY_ZERO = 1365
TRUNCATED_WRONG_VALUE_FOR_FIELD = 1366
ILLEGAL_VALUE_FOR_TYPE = 1367
VIEW_NONUPD_CHECK = 1368
VIEW_CHECK_FAILED = 1369
PROCACCESS_DENIED_ERROR = 1370
RELAY_LOG_FAIL = 1371
PASSWD_LENGTH = 1372
UNKNOWN_TARGET_BINLOG = 1373
IO_ERR_LOG_INDEX_READ = 1374
BINLOG_PURGE_PROHIBITED = 1375
FSEEK_FAIL = 1376
BINLOG_PURGE_FATAL_ERR = 1377
LOG_IN_USE = 1378
LOG_PURGE_UNKNOWN_ERR = 1379
RELAY_LOG_INIT = 1380
NO_BINARY_LOGGING = 1381
RESERVED_SYNTAX = 1382
WSAS_FAILED = 1383
DIFF_GROUPS_PROC = 1384
NO_GROUP_FOR_PROC = 1385
ORDER_WITH_PROC = 1386
LOGGING_PROHIBIT_CHANGING_OF = 1387
NO_FILE_MAPPING = 1388
WRONG_MAGIC = 1389
PS_MANY_PARAM = 1390
KEY_PART_0 = 1391
VIEW_CHECKSUM = 1392
VIEW_MULTIUPDATE = 1393
VIEW_NO_INSERT_FIELD_LIST = 1394
VIEW_DELETE_MERGE_VIEW = 1395
CANNOT_USER = 1396
XAER_NOTA = 1397
XAER_INVAL = 1398
XAER_RMFAIL = 1399
XAER_OUTSIDE = 1400
XAER_RMERR = 1401
XA_RBROLLBACK = 1402
NONEXISTING_PROC_GRANT = 1403
PROC_AUTO_GRANT_FAIL = 1404
PROC_AUTO_REVOKE_FAIL = 1405
DATA_TOO_LONG = 1406
SP_BAD_SQLSTATE = 1407
STARTUP = 1408
LOAD_FROM_FIXED_SIZE_ROWS_TO_VAR = 1409
CANT_CREATE_USER_WITH_GRANT = 1410
WRONG_VALUE_FOR_TYPE = 1411
TABLE_DEF_CHANGED = 1412
SP_DUP_HANDLER = 1413
SP_NOT_VAR_ARG = 1414
SP_NO_RETSET = 1415
CANT_CREATE_GEOMETRY_OBJECT = 1416
FAILED_ROUTINE_BREAK_BINLOG = 1417
BINLOG_UNSAFE_ROUTINE = 1418
BINLOG_CREATE_ROUTINE_NEED_SUPER = 1419
EXEC_STMT_WITH_OPEN_CURSOR = 1420
STMT_HAS_NO_OPEN_CURSOR = 1421
COMMIT_NOT_ALLOWED_IN_SF_OR_TRG = 1422
NO_DEFAULT_FOR_VIEW_FIELD = 1423
SP_NO_RECURSION = 1424
TOO_BIG_SCALE = 1425
TOO_BIG_PRECISION = 1426
M_BIGGER_THAN_D = 1427
WRONG_LOCK_OF_SYSTEM_TABLE = 1428
CONNECT_TO_FOREIGN_DATA_SOURCE = 1429
QUERY_ON_FOREIGN_DATA_SOURCE = 1430
FOREIGN_DATA_SOURCE_DOESNT_EXIST = 1431
FOREIGN_DATA_STRING_INVALID_CANT_CREATE = 1432
FOREIGN_DATA_STRING_INVALID = 1433
CANT_CREATE_FEDERATED_TABLE = 1434
TRG_IN_WRONG_SCHEMA = 1435
STACK_OVERRUN_NEED_MORE = 1436
TOO_LONG_BODY = 1437
WARN_CANT_DROP_DEFAULT_KEYCACHE = 1438
TOO_BIG_DISPLAYWIDTH = 1439
XAER_DUPID = 1440
DATETIME_FUNCTION_OVERFLOW = 1441
CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG = 1442
VIEW_PREVENT_UPDATE = 1443
PS_NO_RECURSION = 1444
SP_CANT_SET_AUTOCOMMIT = 1445
MALFORMED_DEFINER = 1446
VIEW_FRM_NO_USER = 1447
VIEW_OTHER_USER = 1448
NO_SUCH_USER = 1449
FORBID_SCHEMA_CHANGE = 1450
ROW_IS_REFERENCED_2 = 1451
NO_REFERENCED_ROW_2 = 1452
SP_BAD_VAR_SHADOW = 1453
TRG_NO_DEFINER = 1454
OLD_FILE_FORMAT = 1455
SP_RECURSION_LIMIT = 1456
SP_PROC_TABLE_CORRUPT = 1457
SP_WRONG_NAME = 1458
TABLE_NEEDS_UPGRADE = 1459
SP_NO_AGGREGATE = 1460
MAX_PREPARED_STMT_COUNT_REACHED = 1461
VIEW_RECURSIVE = 1462
NON_GROUPING_FIELD_USED = 1463
TABLE_CANT_HANDLE_SPKEYS = 1464
NO_TRIGGERS_ON_SYSTEM_SCHEMA = 1465
USERNAME = 1466
HOSTNAME = 1467
WRONG_STRING_LENGTH = 1468
ERROR_LAST = 1468

View File

@ -1,32 +0,0 @@
DECIMAL = 0
TINY = 1
SHORT = 2
LONG = 3
FLOAT = 4
DOUBLE = 5
NULL = 6
TIMESTAMP = 7
LONGLONG = 8
INT24 = 9
DATE = 10
TIME = 11
DATETIME = 12
YEAR = 13
NEWDATE = 14
VARCHAR = 15
BIT = 16
NEWDECIMAL = 246
ENUM = 247
SET = 248
TINY_BLOB = 249
MEDIUM_BLOB = 250
LONG_BLOB = 251
BLOB = 252
VAR_STRING = 253
STRING = 254
GEOMETRY = 255
CHAR = TINY
INTERVAL = ENUM

View File

@ -1,15 +0,0 @@
NOT_NULL = 1
PRI_KEY = 2
UNIQUE_KEY = 4
MULTIPLE_KEY = 8
BLOB = 16
UNSIGNED = 32
ZEROFILL = 64
BINARY = 128
ENUM = 256
AUTO_INCREMENT = 512
TIMESTAMP = 1024
SET = 2048
PART_KEY = 16384
GROUP = 32767
UNIQUE = 65536

View File

@ -1,12 +0,0 @@
SERVER_STATUS_IN_TRANS = 1
SERVER_STATUS_AUTOCOMMIT = 2
SERVER_MORE_RESULTS_EXISTS = 8
SERVER_QUERY_NO_GOOD_INDEX_USED = 16
SERVER_QUERY_NO_INDEX_USED = 32
SERVER_STATUS_CURSOR_EXISTS = 64
SERVER_STATUS_LAST_ROW_SENT = 128
SERVER_STATUS_DB_DROPPED = 256
SERVER_STATUS_NO_BACKSLASH_ESCAPES = 512
SERVER_STATUS_METADATA_CHANGED = 1024

View File

@ -1,348 +0,0 @@
import re
import datetime
import time
import sys
from constants import FIELD_TYPE, FLAG
from charset import charset_by_id
PYTHON3 = sys.version_info[0] > 2
try:
set
except NameError:
try:
from sets import BaseSet as set
except ImportError:
from sets import Set as set
ESCAPE_REGEX = re.compile(r"[\0\n\r\032\'\"\\]")
ESCAPE_MAP = {'\0': '\\0', '\n': '\\n', '\r': '\\r', '\032': '\\Z',
'\'': '\\\'', '"': '\\"', '\\': '\\\\'}
def escape_item(val, charset):
if type(val) in [tuple, list, set]:
return escape_sequence(val, charset)
if type(val) is dict:
return escape_dict(val, charset)
if PYTHON3 and hasattr(val, "decode") and not isinstance(val, unicode):
# deal with py3k bytes
val = val.decode(charset)
encoder = encoders[type(val)]
val = encoder(val)
if type(val) is str:
return val
val = val.encode(charset)
return val
def escape_dict(val, charset):
n = {}
for k, v in val.items():
quoted = escape_item(v, charset)
n[k] = quoted
return n
def escape_sequence(val, charset):
n = []
for item in val:
quoted = escape_item(item, charset)
n.append(quoted)
return "(" + ",".join(n) + ")"
def escape_set(val, charset):
val = map(lambda x: escape_item(x, charset), val)
return ','.join(val)
def escape_bool(value):
return str(int(value))
def escape_object(value):
return str(value)
escape_int = escape_long = escape_object
def escape_float(value):
return ('%.15g' % value)
def escape_string(value):
return ("'%s'" % ESCAPE_REGEX.sub(
lambda match: ESCAPE_MAP.get(match.group(0)), value))
def escape_unicode(value):
return escape_string(value)
def escape_None(value):
return 'NULL'
def escape_timedelta(obj):
seconds = int(obj.seconds) % 60
minutes = int(obj.seconds // 60) % 60
hours = int(obj.seconds // 3600) % 24 + int(obj.days) * 24
return escape_string('%02d:%02d:%02d' % (hours, minutes, seconds))
def escape_time(obj):
s = "%02d:%02d:%02d" % (int(obj.hour), int(obj.minute),
int(obj.second))
if obj.microsecond:
s += ".%f" % obj.microsecond
return escape_string(s)
def escape_datetime(obj):
return escape_string(obj.strftime("%Y-%m-%d %H:%M:%S"))
def escape_date(obj):
return escape_string(obj.strftime("%Y-%m-%d"))
def escape_struct_time(obj):
return escape_datetime(datetime.datetime(*obj[:6]))
def convert_datetime(connection, field, obj):
"""Returns a DATETIME or TIMESTAMP column value as a datetime object:
>>> datetime_or_None('2007-02-25 23:06:20')
datetime.datetime(2007, 2, 25, 23, 6, 20)
>>> datetime_or_None('2007-02-25T23:06:20')
datetime.datetime(2007, 2, 25, 23, 6, 20)
Illegal values are returned as None:
>>> datetime_or_None('2007-02-31T23:06:20') is None
True
>>> datetime_or_None('0000-00-00 00:00:00') is None
True
"""
if not isinstance(obj, unicode):
obj = obj.decode(connection.charset)
if ' ' in obj:
sep = ' '
elif 'T' in obj:
sep = 'T'
else:
return convert_date(connection, field, obj)
try:
ymd, hms = obj.split(sep, 1)
return datetime.datetime(*[ int(x) for x in ymd.split('-')+hms.split(':') ])
except ValueError:
return convert_date(connection, field, obj)
def convert_timedelta(connection, field, obj):
"""Returns a TIME column as a timedelta object:
>>> timedelta_or_None('25:06:17')
datetime.timedelta(1, 3977)
>>> timedelta_or_None('-25:06:17')
datetime.timedelta(-2, 83177)
Illegal values are returned as None:
>>> timedelta_or_None('random crap') is None
True
Note that MySQL always returns TIME columns as (+|-)HH:MM:SS, but
can accept values as (+|-)DD HH:MM:SS. The latter format will not
be parsed correctly by this function.
"""
from math import modf
try:
if not isinstance(obj, unicode):
obj = obj.decode(connection.charset)
hours, minutes, seconds = tuple([int(x) for x in obj.split(':')])
tdelta = datetime.timedelta(
hours = int(hours),
minutes = int(minutes),
seconds = int(seconds),
microseconds = int(modf(float(seconds))[0]*1000000),
)
return tdelta
except ValueError:
return None
def convert_time(connection, field, obj):
"""Returns a TIME column as a time object:
>>> time_or_None('15:06:17')
datetime.time(15, 6, 17)
Illegal values are returned as None:
>>> time_or_None('-25:06:17') is None
True
>>> time_or_None('random crap') is None
True
Note that MySQL always returns TIME columns as (+|-)HH:MM:SS, but
can accept values as (+|-)DD HH:MM:SS. The latter format will not
be parsed correctly by this function.
Also note that MySQL's TIME column corresponds more closely to
Python's timedelta and not time. However if you want TIME columns
to be treated as time-of-day and not a time offset, then you can
use set this function as the converter for FIELD_TYPE.TIME.
"""
from math import modf
try:
hour, minute, second = obj.split(':')
return datetime.time(hour=int(hour), minute=int(minute),
second=int(second),
microsecond=int(modf(float(second))[0]*1000000))
except ValueError:
return None
def convert_date(connection, field, obj):
"""Returns a DATE column as a date object:
>>> date_or_None('2007-02-26')
datetime.date(2007, 2, 26)
Illegal values are returned as None:
>>> date_or_None('2007-02-31') is None
True
>>> date_or_None('0000-00-00') is None
True
"""
try:
if not isinstance(obj, unicode):
obj = obj.decode(connection.charset)
return datetime.date(*[ int(x) for x in obj.split('-', 2) ])
except ValueError:
return None
def convert_mysql_timestamp(connection, field, timestamp):
"""Convert a MySQL TIMESTAMP to a Timestamp object.
MySQL >= 4.1 returns TIMESTAMP in the same format as DATETIME:
>>> mysql_timestamp_converter('2007-02-25 22:32:17')
datetime.datetime(2007, 2, 25, 22, 32, 17)
MySQL < 4.1 uses a big string of numbers:
>>> mysql_timestamp_converter('20070225223217')
datetime.datetime(2007, 2, 25, 22, 32, 17)
Illegal values are returned as None:
>>> mysql_timestamp_converter('2007-02-31 22:32:17') is None
True
>>> mysql_timestamp_converter('00000000000000') is None
True
"""
if not isinstance(timestamp, unicode):
timestamp = timestamp.decode(connection.charset)
if timestamp[4] == '-':
return convert_datetime(connection, field, timestamp)
timestamp += "0"*(14-len(timestamp)) # padding
year, month, day, hour, minute, second = \
int(timestamp[:4]), int(timestamp[4:6]), int(timestamp[6:8]), \
int(timestamp[8:10]), int(timestamp[10:12]), int(timestamp[12:14])
try:
return datetime.datetime(year, month, day, hour, minute, second)
except ValueError:
return None
def convert_set(s):
return set(s.split(","))
def convert_bit(connection, field, b):
#b = "\x00" * (8 - len(b)) + b # pad w/ zeroes
#return struct.unpack(">Q", b)[0]
#
# the snippet above is right, but MySQLdb doesn't process bits,
# so we shouldn't either
return b
def convert_characters(connection, field, data):
field_charset = charset_by_id(field.charsetnr).name
if field.flags & FLAG.SET:
return convert_set(data.decode(field_charset))
if field.flags & FLAG.BINARY:
return data
if connection.use_unicode:
data = data.decode(field_charset)
elif connection.charset != field_charset:
data = data.decode(field_charset)
data = data.encode(connection.charset)
return data
def convert_int(connection, field, data):
return int(data)
def convert_long(connection, field, data):
return long(data)
def convert_float(connection, field, data):
return float(data)
encoders = {
bool: escape_bool,
int: escape_int,
long: escape_long,
float: escape_float,
str: escape_string,
unicode: escape_unicode,
tuple: escape_sequence,
list:escape_sequence,
set:escape_sequence,
dict:escape_dict,
type(None):escape_None,
datetime.date: escape_date,
datetime.datetime : escape_datetime,
datetime.timedelta : escape_timedelta,
datetime.time : escape_time,
time.struct_time : escape_struct_time,
}
decoders = {
FIELD_TYPE.BIT: convert_bit,
FIELD_TYPE.TINY: convert_int,
FIELD_TYPE.SHORT: convert_int,
FIELD_TYPE.LONG: convert_long,
FIELD_TYPE.FLOAT: convert_float,
FIELD_TYPE.DOUBLE: convert_float,
FIELD_TYPE.DECIMAL: convert_float,
FIELD_TYPE.NEWDECIMAL: convert_float,
FIELD_TYPE.LONGLONG: convert_long,
FIELD_TYPE.INT24: convert_int,
FIELD_TYPE.YEAR: convert_int,
FIELD_TYPE.TIMESTAMP: convert_mysql_timestamp,
FIELD_TYPE.DATETIME: convert_datetime,
FIELD_TYPE.TIME: convert_timedelta,
FIELD_TYPE.DATE: convert_date,
FIELD_TYPE.SET: convert_set,
FIELD_TYPE.BLOB: convert_characters,
FIELD_TYPE.TINY_BLOB: convert_characters,
FIELD_TYPE.MEDIUM_BLOB: convert_characters,
FIELD_TYPE.LONG_BLOB: convert_characters,
FIELD_TYPE.STRING: convert_characters,
FIELD_TYPE.VAR_STRING: convert_characters,
FIELD_TYPE.VARCHAR: convert_characters,
#FIELD_TYPE.BLOB: str,
#FIELD_TYPE.STRING: str,
#FIELD_TYPE.VAR_STRING: str,
#FIELD_TYPE.VARCHAR: str
}
conversions = decoders # for MySQLdb compatibility
try:
# python version > 2.3
from decimal import Decimal
def convert_decimal(connection, field, data):
data = data.decode(connection.charset)
return Decimal(data)
decoders[FIELD_TYPE.DECIMAL] = convert_decimal
decoders[FIELD_TYPE.NEWDECIMAL] = convert_decimal
def escape_decimal(obj):
return unicode(obj)
encoders[Decimal] = escape_decimal
except ImportError:
pass

View File

@ -1,297 +0,0 @@
# -*- coding: utf-8 -*-
import struct
import re
try:
import cStringIO as StringIO
except ImportError:
import StringIO
from err import Warning, Error, InterfaceError, DataError, \
DatabaseError, OperationalError, IntegrityError, InternalError, \
NotSupportedError, ProgrammingError
insert_values = re.compile(r'\svalues\s*(\(.+\))', re.IGNORECASE)
class Cursor(object):
'''
This is the object you use to interact with the database.
'''
def __init__(self, connection):
'''
Do not create an instance of a Cursor yourself. Call
connections.Connection.cursor().
'''
from weakref import proxy
self.connection = proxy(connection)
self.description = None
self.rownumber = 0
self.rowcount = -1
self.arraysize = 1
self._executed = None
self.messages = []
self.errorhandler = connection.errorhandler
self._has_next = None
self._rows = ()
def __del__(self):
'''
When this gets GC'd close it.
'''
self.close()
def close(self):
'''
Closing a cursor just exhausts all remaining data.
'''
if not self.connection:
return
try:
while self.nextset():
pass
except:
pass
self.connection = None
def _get_db(self):
if not self.connection:
self.errorhandler(self, ProgrammingError, "cursor closed")
return self.connection
def _check_executed(self):
if not self._executed:
self.errorhandler(self, ProgrammingError, "execute() first")
def setinputsizes(self, *args):
"""Does nothing, required by DB API."""
def setoutputsizes(self, *args):
"""Does nothing, required by DB API."""
def nextset(self):
''' Get the next query set '''
if self._executed:
self.fetchall()
del self.messages[:]
if not self._has_next:
return None
connection = self._get_db()
connection.next_result()
self._do_get_result()
return True
def execute(self, query, args=None):
''' Execute a query '''
from sys import exc_info
conn = self._get_db()
charset = conn.charset
del self.messages[:]
# TODO: make sure that conn.escape is correct
if args is not None:
if isinstance(args, tuple) or isinstance(args, list):
escaped_args = tuple(conn.escape(arg) for arg in args)
elif isinstance(args, dict):
escaped_args = dict((key, conn.escape(val)) for (key, val) in args.items())
else:
#If it's not a dictionary let's try escaping it anyways.
#Worst case it will throw a Value error
escaped_args = conn.escape(args)
query = query % escaped_args
if isinstance(query, unicode):
query = query.encode(charset)
result = 0
try:
result = self._query(query)
except:
exc, value, tb = exc_info()
del tb
self.messages.append((exc,value))
self.errorhandler(self, exc, value)
self._executed = query
return result
def executemany(self, query, args):
''' Run several data against one query '''
del self.messages[:]
#conn = self._get_db()
if not args:
return
#charset = conn.charset
#if isinstance(query, unicode):
# query = query.encode(charset)
self.rowcount = sum([ self.execute(query, arg) for arg in args ])
return self.rowcount
def callproc(self, procname, args=()):
"""Execute stored procedure procname with args
procname -- string, name of procedure to execute on server
args -- Sequence of parameters to use with procedure
Returns the original args.
Compatibility warning: PEP-249 specifies that any modified
parameters must be returned. This is currently impossible
as they are only available by storing them in a server
variable and then retrieved by a query. Since stored
procedures return zero or more result sets, there is no
reliable way to get at OUT or INOUT parameters via callproc.
The server variables are named @_procname_n, where procname
is the parameter above and n is the position of the parameter
(from zero). Once all result sets generated by the procedure
have been fetched, you can issue a SELECT @_procname_0, ...
query using .execute() to get any OUT or INOUT values.
Compatibility warning: The act of calling a stored procedure
itself creates an empty result set. This appears after any
result sets generated by the procedure. This is non-standard
behavior with respect to the DB-API. Be sure to use nextset()
to advance through all result sets; otherwise you may get
disconnected.
"""
conn = self._get_db()
for index, arg in enumerate(args):
q = "SET @_%s_%d=%s" % (procname, index, conn.escape(arg))
if isinstance(q, unicode):
q = q.encode(conn.charset)
self._query(q)
self.nextset()
q = "CALL %s(%s)" % (procname,
','.join(['@_%s_%d' % (procname, i)
for i in range(len(args))]))
if isinstance(q, unicode):
q = q.encode(conn.charset)
self._query(q)
self._executed = q
return args
def fetchone(self):
''' Fetch the next row '''
self._check_executed()
if self._rows is None or self.rownumber >= len(self._rows):
return None
result = self._rows[self.rownumber]
self.rownumber += 1
return result
def fetchmany(self, size=None):
''' Fetch several rows '''
self._check_executed()
end = self.rownumber + (size or self.arraysize)
result = self._rows[self.rownumber:end]
if self._rows is None:
return None
self.rownumber = min(end, len(self._rows))
return result
def fetchall(self):
''' Fetch all the rows '''
self._check_executed()
if self._rows is None:
return None
if self.rownumber:
result = self._rows[self.rownumber:]
else:
result = self._rows
self.rownumber = len(self._rows)
return result
def scroll(self, value, mode='relative'):
self._check_executed()
if mode == 'relative':
r = self.rownumber + value
elif mode == 'absolute':
r = value
else:
self.errorhandler(self, ProgrammingError,
"unknown scroll mode %s" % mode)
if r < 0 or r >= len(self._rows):
self.errorhandler(self, IndexError, "out of range")
self.rownumber = r
def _query(self, q):
conn = self._get_db()
self._last_executed = q
conn.query(q)
self._do_get_result()
return self.rowcount
def _do_get_result(self):
conn = self._get_db()
self.rowcount = conn._result.affected_rows
self.rownumber = 0
self.description = conn._result.description
self.lastrowid = conn._result.insert_id
self._rows = conn._result.rows
self._has_next = conn._result.has_next
def __iter__(self):
return iter(self.fetchone, None)
Warning = Warning
Error = Error
InterfaceError = InterfaceError
DatabaseError = DatabaseError
DataError = DataError
OperationalError = OperationalError
IntegrityError = IntegrityError
InternalError = InternalError
ProgrammingError = ProgrammingError
NotSupportedError = NotSupportedError
class DictCursor(Cursor):
"""A cursor which returns results as a dictionary"""
def execute(self, query, args=None):
result = super(DictCursor, self).execute(query, args)
if self.description:
self._fields = [ field[0] for field in self.description ]
return result
def fetchone(self):
''' Fetch the next row '''
self._check_executed()
if self._rows is None or self.rownumber >= len(self._rows):
return None
result = dict(zip(self._fields, self._rows[self.rownumber]))
self.rownumber += 1
return result
def fetchmany(self, size=None):
''' Fetch several rows '''
self._check_executed()
if self._rows is None:
return None
end = self.rownumber + (size or self.arraysize)
result = [ dict(zip(self._fields, r)) for r in self._rows[self.rownumber:end] ]
self.rownumber = min(end, len(self._rows))
return tuple(result)
def fetchall(self):
''' Fetch all the rows '''
self._check_executed()
if self._rows is None:
return None
if self.rownumber:
result = [ dict(zip(self._fields, r)) for r in self._rows[self.rownumber:] ]
else:
result = [ dict(zip(self._fields, r)) for r in self._rows ]
self.rownumber = len(self._rows)
return tuple(result)

View File

@ -1,147 +0,0 @@
import struct
try:
StandardError, Warning
except ImportError:
try:
from exceptions import StandardError, Warning
except ImportError:
import sys
e = sys.modules['exceptions']
StandardError = e.StandardError
Warning = e.Warning
from constants import ER
import sys
class MySQLError(StandardError):
"""Exception related to operation with MySQL."""
class Warning(Warning, MySQLError):
"""Exception raised for important warnings like data truncations
while inserting, etc."""
class Error(MySQLError):
"""Exception that is the base class of all other error exceptions
(not Warning)."""
class InterfaceError(Error):
"""Exception raised for errors that are related to the database
interface rather than the database itself."""
class DatabaseError(Error):
"""Exception raised for errors that are related to the
database."""
class DataError(DatabaseError):
"""Exception raised for errors that are due to problems with the
processed data like division by zero, numeric value out of range,
etc."""
class OperationalError(DatabaseError):
"""Exception raised for errors that are related to the database's
operation and not necessarily under the control of the programmer,
e.g. an unexpected disconnect occurs, the data source name is not
found, a transaction could not be processed, a memory allocation
error occurred during processing, etc."""
class IntegrityError(DatabaseError):
"""Exception raised when the relational integrity of the database
is affected, e.g. a foreign key check fails, duplicate key,
etc."""
class InternalError(DatabaseError):
"""Exception raised when the database encounters an internal
error, e.g. the cursor is not valid anymore, the transaction is
out of sync, etc."""
class ProgrammingError(DatabaseError):
"""Exception raised for programming errors, e.g. table not found
or already exists, syntax error in the SQL statement, wrong number
of parameters specified, etc."""
class NotSupportedError(DatabaseError):
"""Exception raised in case a method or database API was used
which is not supported by the database, e.g. requesting a
.rollback() on a connection that does not support transaction or
has transactions turned off."""
error_map = {}
def _map_error(exc, *errors):
for error in errors:
error_map[error] = exc
_map_error(ProgrammingError, ER.DB_CREATE_EXISTS, ER.SYNTAX_ERROR,
ER.PARSE_ERROR, ER.NO_SUCH_TABLE, ER.WRONG_DB_NAME,
ER.WRONG_TABLE_NAME, ER.FIELD_SPECIFIED_TWICE,
ER.INVALID_GROUP_FUNC_USE, ER.UNSUPPORTED_EXTENSION,
ER.TABLE_MUST_HAVE_COLUMNS, ER.CANT_DO_THIS_DURING_AN_TRANSACTION)
_map_error(DataError, ER.WARN_DATA_TRUNCATED, ER.WARN_NULL_TO_NOTNULL,
ER.WARN_DATA_OUT_OF_RANGE, ER.NO_DEFAULT, ER.PRIMARY_CANT_HAVE_NULL,
ER.DATA_TOO_LONG, ER.DATETIME_FUNCTION_OVERFLOW)
_map_error(IntegrityError, ER.DUP_ENTRY, ER.NO_REFERENCED_ROW,
ER.NO_REFERENCED_ROW_2, ER.ROW_IS_REFERENCED, ER.ROW_IS_REFERENCED_2,
ER.CANNOT_ADD_FOREIGN)
_map_error(NotSupportedError, ER.WARNING_NOT_COMPLETE_ROLLBACK,
ER.NOT_SUPPORTED_YET, ER.FEATURE_DISABLED, ER.UNKNOWN_STORAGE_ENGINE)
_map_error(OperationalError, ER.DBACCESS_DENIED_ERROR, ER.ACCESS_DENIED_ERROR,
ER.TABLEACCESS_DENIED_ERROR, ER.COLUMNACCESS_DENIED_ERROR)
del _map_error, ER
def _get_error_info(data):
errno = struct.unpack('<h', data[1:3])[0]
if sys.version_info[0] == 3:
is_41 = data[3] == ord("#")
else:
is_41 = data[3] == "#"
if is_41:
# version 4.1
sqlstate = data[4:9].decode("utf8")
errorvalue = data[9:].decode("utf8")
return (errno, sqlstate, errorvalue)
else:
# version 4.0
return (errno, None, data[3:].decode("utf8"))
def _check_mysql_exception(errinfo):
errno, sqlstate, errorvalue = errinfo
errorclass = error_map.get(errno, None)
if errorclass:
raise errorclass, (errno,errorvalue)
# couldn't find the right error number
raise InternalError, (errno, errorvalue)
def raise_mysql_exception(data):
errinfo = _get_error_info(data)
_check_mysql_exception(errinfo)

View File

@ -1,13 +0,0 @@
from pymysql.tests.test_issues import *
from pymysql.tests.test_example import *
from pymysql.tests.test_basic import *
from pymysql.tests.test_DictCursor import *
import sys
if sys.version_info[0] == 2:
# MySQLdb tests were designed for Python 3
from pymysql.tests.thirdparty import *
if __name__ == "__main__":
import unittest
unittest.main()

View File

@ -1,20 +0,0 @@
import pymysql
import unittest
class PyMySQLTestCase(unittest.TestCase):
# Edit this to suit your test environment.
databases = [
{"host":"localhost","user":"root",
"passwd":"","db":"test_pymysql", "use_unicode": True},
{"host":"localhost","user":"root","passwd":"","db":"test_pymysql2"}]
def setUp(self):
self.connections = []
for params in self.databases:
self.connections.append(pymysql.connect(**params))
def tearDown(self):
for connection in self.connections:
connection.close()

View File

@ -1,56 +0,0 @@
from pymysql.tests import base
import pymysql.cursors
import datetime
class TestDictCursor(base.PyMySQLTestCase):
def test_DictCursor(self):
#all assert test compare to the structure as would come out from MySQLdb
conn = self.connections[0]
c = conn.cursor(pymysql.cursors.DictCursor)
# create a table ane some data to query
c.execute("""CREATE TABLE dictcursor (name char(20), age int , DOB datetime)""")
data = (("bob",21,"1990-02-06 23:04:56"),
("jim",56,"1955-05-09 13:12:45"),
("fred",100,"1911-09-12 01:01:01"))
bob = {'name':'bob','age':21,'DOB':datetime.datetime(1990, 02, 6, 23, 04, 56)}
jim = {'name':'jim','age':56,'DOB':datetime.datetime(1955, 05, 9, 13, 12, 45)}
fred = {'name':'fred','age':100,'DOB':datetime.datetime(1911, 9, 12, 1, 1, 1)}
try:
c.executemany("insert into dictcursor values (%s,%s,%s)", data)
# try an update which should return no rows
c.execute("update dictcursor set age=20 where name='bob'")
bob['age'] = 20
# pull back the single row dict for bob and check
c.execute("SELECT * from dictcursor where name='bob'")
r = c.fetchone()
self.assertEqual(bob,r,"fetchone via DictCursor failed")
# same again, but via fetchall => tuple)
c.execute("SELECT * from dictcursor where name='bob'")
r = c.fetchall()
self.assertEqual((bob,),r,"fetch a 1 row result via fetchall failed via DictCursor")
# same test again but iterate over the
c.execute("SELECT * from dictcursor where name='bob'")
for r in c:
self.assertEqual(bob, r,"fetch a 1 row result via iteration failed via DictCursor")
# get all 3 row via fetchall
c.execute("SELECT * from dictcursor")
r = c.fetchall()
self.assertEqual((bob,jim,fred), r, "fetchall failed via DictCursor")
#same test again but do a list comprehension
c.execute("SELECT * from dictcursor")
r = [x for x in c]
self.assertEqual([bob,jim,fred], r, "list comprehension failed via DictCursor")
# get all 2 row via fetchmany
c.execute("SELECT * from dictcursor")
r = c.fetchmany(2)
self.assertEqual((bob,jim), r, "fetchmany failed via DictCursor")
finally:
c.execute("drop table dictcursor")
__all__ = ["TestDictCursor"]
if __name__ == "__main__":
import unittest
unittest.main()

View File

@ -1,193 +0,0 @@
from pymysql.tests import base
from pymysql import util
import time
import datetime
class TestConversion(base.PyMySQLTestCase):
def test_datatypes(self):
""" test every data type """
conn = self.connections[0]
c = conn.cursor()
c.execute("create table test_datatypes (b bit, i int, l bigint, f real, s varchar(32), u varchar(32), bb blob, d date, dt datetime, ts timestamp, td time, t time, st datetime)")
try:
# insert values
v = (True, -3, 123456789012, 5.7, "hello'\" world", u"Espa\xc3\xb1ol", "binary\x00data".encode(conn.charset), datetime.date(1988,2,2), datetime.datetime.now(), datetime.timedelta(5,6), datetime.time(16,32), time.localtime())
c.execute("insert into test_datatypes (b,i,l,f,s,u,bb,d,dt,td,t,st) values (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)", v)
c.execute("select b,i,l,f,s,u,bb,d,dt,td,t,st from test_datatypes")
r = c.fetchone()
self.assertEqual(util.int2byte(1), r[0])
self.assertEqual(v[1:8], r[1:8])
# mysql throws away microseconds so we need to check datetimes
# specially. additionally times are turned into timedeltas.
self.assertEqual(datetime.datetime(*v[8].timetuple()[:6]), r[8])
self.assertEqual(v[9], r[9]) # just timedeltas
self.assertEqual(datetime.timedelta(0, 60 * (v[10].hour * 60 + v[10].minute)), r[10])
self.assertEqual(datetime.datetime(*v[-1][:6]), r[-1])
c.execute("delete from test_datatypes")
# check nulls
c.execute("insert into test_datatypes (b,i,l,f,s,u,bb,d,dt,td,t,st) values (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)", [None] * 12)
c.execute("select b,i,l,f,s,u,bb,d,dt,td,t,st from test_datatypes")
r = c.fetchone()
self.assertEqual(tuple([None] * 12), r)
c.execute("delete from test_datatypes")
# check sequence type
c.execute("insert into test_datatypes (i, l) values (2,4), (6,8), (10,12)")
c.execute("select l from test_datatypes where i in %s order by i", ((2,6),))
r = c.fetchall()
self.assertEqual(((4,),(8,)), r)
finally:
c.execute("drop table test_datatypes")
def test_dict(self):
""" test dict escaping """
conn = self.connections[0]
c = conn.cursor()
c.execute("create table test_dict (a integer, b integer, c integer)")
try:
c.execute("insert into test_dict (a,b,c) values (%(a)s, %(b)s, %(c)s)", {"a":1,"b":2,"c":3})
c.execute("select a,b,c from test_dict")
self.assertEqual((1,2,3), c.fetchone())
finally:
c.execute("drop table test_dict")
def test_string(self):
conn = self.connections[0]
c = conn.cursor()
c.execute("create table test_dict (a text)")
test_value = "I am a test string"
try:
c.execute("insert into test_dict (a) values (%s)", test_value)
c.execute("select a from test_dict")
self.assertEqual((test_value,), c.fetchone())
finally:
c.execute("drop table test_dict")
def test_integer(self):
conn = self.connections[0]
c = conn.cursor()
c.execute("create table test_dict (a integer)")
test_value = 12345
try:
c.execute("insert into test_dict (a) values (%s)", test_value)
c.execute("select a from test_dict")
self.assertEqual((test_value,), c.fetchone())
finally:
c.execute("drop table test_dict")
def test_big_blob(self):
""" test tons of data """
conn = self.connections[0]
c = conn.cursor()
c.execute("create table test_big_blob (b blob)")
try:
data = "pymysql" * 1024
c.execute("insert into test_big_blob (b) values (%s)", (data,))
c.execute("select b from test_big_blob")
self.assertEqual(data.encode(conn.charset), c.fetchone()[0])
finally:
c.execute("drop table test_big_blob")
class TestCursor(base.PyMySQLTestCase):
# this test case does not work quite right yet, however,
# we substitute in None for the erroneous field which is
# compatible with the DB-API 2.0 spec and has not broken
# any unit tests for anything we've tried.
#def test_description(self):
# """ test description attribute """
# # result is from MySQLdb module
# r = (('Host', 254, 11, 60, 60, 0, 0),
# ('User', 254, 16, 16, 16, 0, 0),
# ('Password', 254, 41, 41, 41, 0, 0),
# ('Select_priv', 254, 1, 1, 1, 0, 0),
# ('Insert_priv', 254, 1, 1, 1, 0, 0),
# ('Update_priv', 254, 1, 1, 1, 0, 0),
# ('Delete_priv', 254, 1, 1, 1, 0, 0),
# ('Create_priv', 254, 1, 1, 1, 0, 0),
# ('Drop_priv', 254, 1, 1, 1, 0, 0),
# ('Reload_priv', 254, 1, 1, 1, 0, 0),
# ('Shutdown_priv', 254, 1, 1, 1, 0, 0),
# ('Process_priv', 254, 1, 1, 1, 0, 0),
# ('File_priv', 254, 1, 1, 1, 0, 0),
# ('Grant_priv', 254, 1, 1, 1, 0, 0),
# ('References_priv', 254, 1, 1, 1, 0, 0),
# ('Index_priv', 254, 1, 1, 1, 0, 0),
# ('Alter_priv', 254, 1, 1, 1, 0, 0),
# ('Show_db_priv', 254, 1, 1, 1, 0, 0),
# ('Super_priv', 254, 1, 1, 1, 0, 0),
# ('Create_tmp_table_priv', 254, 1, 1, 1, 0, 0),
# ('Lock_tables_priv', 254, 1, 1, 1, 0, 0),
# ('Execute_priv', 254, 1, 1, 1, 0, 0),
# ('Repl_slave_priv', 254, 1, 1, 1, 0, 0),
# ('Repl_client_priv', 254, 1, 1, 1, 0, 0),
# ('Create_view_priv', 254, 1, 1, 1, 0, 0),
# ('Show_view_priv', 254, 1, 1, 1, 0, 0),
# ('Create_routine_priv', 254, 1, 1, 1, 0, 0),
# ('Alter_routine_priv', 254, 1, 1, 1, 0, 0),
# ('Create_user_priv', 254, 1, 1, 1, 0, 0),
# ('Event_priv', 254, 1, 1, 1, 0, 0),
# ('Trigger_priv', 254, 1, 1, 1, 0, 0),
# ('ssl_type', 254, 0, 9, 9, 0, 0),
# ('ssl_cipher', 252, 0, 65535, 65535, 0, 0),
# ('x509_issuer', 252, 0, 65535, 65535, 0, 0),
# ('x509_subject', 252, 0, 65535, 65535, 0, 0),
# ('max_questions', 3, 1, 11, 11, 0, 0),
# ('max_updates', 3, 1, 11, 11, 0, 0),
# ('max_connections', 3, 1, 11, 11, 0, 0),
# ('max_user_connections', 3, 1, 11, 11, 0, 0))
# conn = self.connections[0]
# c = conn.cursor()
# c.execute("select * from mysql.user")
#
# self.assertEqual(r, c.description)
def test_fetch_no_result(self):
""" test a fetchone() with no rows """
conn = self.connections[0]
c = conn.cursor()
c.execute("create table test_nr (b varchar(32))")
try:
data = "pymysql"
c.execute("insert into test_nr (b) values (%s)", (data,))
self.assertEqual(None, c.fetchone())
finally:
c.execute("drop table test_nr")
def test_aggregates(self):
""" test aggregate functions """
conn = self.connections[0]
c = conn.cursor()
try:
c.execute('create table test_aggregates (i integer)')
for i in xrange(0, 10):
c.execute('insert into test_aggregates (i) values (%s)', (i,))
c.execute('select sum(i) from test_aggregates')
r, = c.fetchone()
self.assertEqual(sum(range(0,10)), r)
finally:
c.execute('drop table test_aggregates')
def test_single_tuple(self):
""" test a single tuple """
conn = self.connections[0]
c = conn.cursor()
try:
c.execute("create table mystuff (id integer primary key)")
c.execute("insert into mystuff (id) values (1)")
c.execute("insert into mystuff (id) values (2)")
c.execute("select id from mystuff where id in %s", ((1,),))
self.assertEqual([(1,)], list(c.fetchall()))
finally:
c.execute("drop table mystuff")
__all__ = ["TestConversion","TestCursor"]
if __name__ == "__main__":
import unittest
unittest.main()

View File

@ -1,32 +0,0 @@
import pymysql
from pymysql.tests import base
class TestExample(base.PyMySQLTestCase):
def test_example(self):
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='', db='mysql')
cur = conn.cursor()
cur.execute("SELECT Host,User FROM user")
# print cur.description
# r = cur.fetchall()
# print r
# ...or...
u = False
for r in cur.fetchall():
u = u or conn.user in r
self.assertTrue(u)
cur.close()
conn.close()
__all__ = ["TestExample"]
if __name__ == "__main__":
import unittest
unittest.main()

View File

@ -1,268 +0,0 @@
import pymysql
from pymysql.tests import base
import sys
try:
import imp
reload = imp.reload
except AttributeError:
pass
import datetime
class TestOldIssues(base.PyMySQLTestCase):
def test_issue_3(self):
""" undefined methods datetime_or_None, date_or_None """
conn = self.connections[0]
c = conn.cursor()
c.execute("create table issue3 (d date, t time, dt datetime, ts timestamp)")
try:
c.execute("insert into issue3 (d, t, dt, ts) values (%s,%s,%s,%s)", (None, None, None, None))
c.execute("select d from issue3")
self.assertEqual(None, c.fetchone()[0])
c.execute("select t from issue3")
self.assertEqual(None, c.fetchone()[0])
c.execute("select dt from issue3")
self.assertEqual(None, c.fetchone()[0])
c.execute("select ts from issue3")
self.assertTrue(isinstance(c.fetchone()[0], datetime.datetime))
finally:
c.execute("drop table issue3")
def test_issue_4(self):
""" can't retrieve TIMESTAMP fields """
conn = self.connections[0]
c = conn.cursor()
c.execute("create table issue4 (ts timestamp)")
try:
c.execute("insert into issue4 (ts) values (now())")
c.execute("select ts from issue4")
self.assertTrue(isinstance(c.fetchone()[0], datetime.datetime))
finally:
c.execute("drop table issue4")
def test_issue_5(self):
""" query on information_schema.tables fails """
con = self.connections[0]
cur = con.cursor()
cur.execute("select * from information_schema.tables")
def test_issue_6(self):
""" exception: TypeError: ord() expected a character, but string of length 0 found """
conn = pymysql.connect(host="localhost",user="root",passwd="",db="mysql")
c = conn.cursor()
c.execute("select * from user")
conn.close()
def test_issue_8(self):
""" Primary Key and Index error when selecting data """
conn = self.connections[0]
c = conn.cursor()
c.execute("""CREATE TABLE `test` (`station` int(10) NOT NULL DEFAULT '0', `dh`
datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `echeance` int(1) NOT NULL
DEFAULT '0', `me` double DEFAULT NULL, `mo` double DEFAULT NULL, PRIMARY
KEY (`station`,`dh`,`echeance`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;""")
try:
self.assertEqual(0, c.execute("SELECT * FROM test"))
c.execute("ALTER TABLE `test` ADD INDEX `idx_station` (`station`)")
self.assertEqual(0, c.execute("SELECT * FROM test"))
finally:
c.execute("drop table test")
def test_issue_9(self):
""" sets DeprecationWarning in Python 2.6 """
try:
reload(pymysql)
except DeprecationWarning:
self.fail()
def test_issue_10(self):
""" Allocate a variable to return when the exception handler is permissive """
conn = self.connections[0]
conn.errorhandler = lambda cursor, errorclass, errorvalue: None
cur = conn.cursor()
cur.execute( "create table t( n int )" )
cur.execute( "create table t( n int )" )
def test_issue_13(self):
""" can't handle large result fields """
conn = self.connections[0]
cur = conn.cursor()
try:
cur.execute("create table issue13 (t text)")
# ticket says 18k
size = 18*1024
cur.execute("insert into issue13 (t) values (%s)", ("x" * size,))
cur.execute("select t from issue13")
# use assert_ so that obscenely huge error messages don't print
r = cur.fetchone()[0]
self.assert_("x" * size == r)
finally:
cur.execute("drop table issue13")
def test_issue_14(self):
""" typo in converters.py """
self.assertEqual('1', pymysql.converters.escape_item(1, "utf8"))
self.assertEqual('1', pymysql.converters.escape_item(1L, "utf8"))
self.assertEqual('1', pymysql.converters.escape_object(1))
self.assertEqual('1', pymysql.converters.escape_object(1L))
def test_issue_15(self):
""" query should be expanded before perform character encoding """
conn = self.connections[0]
c = conn.cursor()
c.execute("create table issue15 (t varchar(32))")
try:
c.execute("insert into issue15 (t) values (%s)", (u'\xe4\xf6\xfc',))
c.execute("select t from issue15")
self.assertEqual(u'\xe4\xf6\xfc', c.fetchone()[0])
finally:
c.execute("drop table issue15")
def test_issue_16(self):
""" Patch for string and tuple escaping """
conn = self.connections[0]
c = conn.cursor()
c.execute("create table issue16 (name varchar(32) primary key, email varchar(32))")
try:
c.execute("insert into issue16 (name, email) values ('pete', 'floydophone')")
c.execute("select email from issue16 where name=%s", ("pete",))
self.assertEqual("floydophone", c.fetchone()[0])
finally:
c.execute("drop table issue16")
def test_issue_17(self):
""" could not connect mysql use passwod """
conn = self.connections[0]
host = self.databases[0]["host"]
db = self.databases[0]["db"]
c = conn.cursor()
# grant access to a table to a user with a password
try:
c.execute("create table issue17 (x varchar(32) primary key)")
c.execute("insert into issue17 (x) values ('hello, world!')")
c.execute("grant all privileges on %s.issue17 to 'issue17user'@'%%' identified by '1234'" % db)
conn.commit()
conn2 = pymysql.connect(host=host, user="issue17user", passwd="1234", db=db)
c2 = conn2.cursor()
c2.execute("select x from issue17")
self.assertEqual("hello, world!", c2.fetchone()[0])
finally:
c.execute("drop table issue17")
def _uni(s, e):
# hack for py3
if sys.version_info[0] > 2:
return unicode(bytes(s, sys.getdefaultencoding()), e)
else:
return unicode(s, e)
class TestNewIssues(base.PyMySQLTestCase):
def test_issue_34(self):
try:
pymysql.connect(host="localhost", port=1237, user="root")
self.fail()
except pymysql.OperationalError, e:
self.assertEqual(2003, e.args[0])
except:
self.fail()
def test_issue_33(self):
conn = pymysql.connect(host="localhost", user="root", db=self.databases[0]["db"], charset="utf8")
c = conn.cursor()
try:
c.execute(_uni("create table hei\xc3\x9fe (name varchar(32))", "utf8"))
c.execute(_uni("insert into hei\xc3\x9fe (name) values ('Pi\xc3\xb1ata')", "utf8"))
c.execute(_uni("select name from hei\xc3\x9fe", "utf8"))
self.assertEqual(_uni("Pi\xc3\xb1ata","utf8"), c.fetchone()[0])
finally:
c.execute(_uni("drop table hei\xc3\x9fe", "utf8"))
# Will fail without manual intervention:
#def test_issue_35(self):
#
# conn = self.connections[0]
# c = conn.cursor()
# print "sudo killall -9 mysqld within the next 10 seconds"
# try:
# c.execute("select sleep(10)")
# self.fail()
# except pymysql.OperationalError, e:
# self.assertEqual(2013, e.args[0])
def test_issue_36(self):
conn = self.connections[0]
c = conn.cursor()
# kill connections[0]
original_count = c.execute("show processlist")
kill_id = None
for id,user,host,db,command,time,state,info in c.fetchall():
if info == "show processlist":
kill_id = id
break
# now nuke the connection
conn.kill(kill_id)
# make sure this connection has broken
try:
c.execute("show tables")
self.fail()
except:
pass
# check the process list from the other connection
self.assertEqual(original_count - 1, self.connections[1].cursor().execute("show processlist"))
del self.connections[0]
def test_issue_37(self):
conn = self.connections[0]
c = conn.cursor()
self.assertEqual(1, c.execute("SELECT @foo"))
self.assertEqual((None,), c.fetchone())
self.assertEqual(0, c.execute("SET @foo = 'bar'"))
c.execute("set @foo = 'bar'")
def test_issue_38(self):
conn = self.connections[0]
c = conn.cursor()
datum = "a" * 1024 * 1023 # reduced size for most default mysql installs
try:
c.execute("create table issue38 (id integer, data mediumblob)")
c.execute("insert into issue38 values (1, %s)", (datum,))
finally:
c.execute("drop table issue38")
def disabled_test_issue_54(self):
conn = self.connections[0]
c = conn.cursor()
big_sql = "select * from issue54 where "
big_sql += " and ".join("%d=%d" % (i,i) for i in xrange(0, 100000))
try:
c.execute("create table issue54 (id integer primary key)")
c.execute("insert into issue54 (id) values (7)")
c.execute(big_sql)
self.assertEquals(7, c.fetchone()[0])
finally:
c.execute("drop table issue54")
class TestGitHubIssues(base.PyMySQLTestCase):
def test_issue_66(self):
conn = self.connections[0]
c = conn.cursor()
self.assertEquals(0, conn.insert_id())
try:
c.execute("create table issue66 (id integer primary key auto_increment, x integer)")
c.execute("insert into issue66 (x) values (1)")
c.execute("insert into issue66 (x) values (1)")
self.assertEquals(2, conn.insert_id())
finally:
c.execute("drop table issue66")
__all__ = ["TestOldIssues", "TestNewIssues", "TestGitHubIssues"]
if __name__ == "__main__":
import unittest
unittest.main()

View File

@ -1,5 +0,0 @@
from test_MySQLdb import *
if __name__ == "__main__":
import unittest
unittest.main()

View File

@ -1,7 +0,0 @@
from test_MySQLdb_capabilities import test_MySQLdb as test_capabilities
from test_MySQLdb_nonstandard import *
from test_MySQLdb_dbapi20 import test_MySQLdb as test_dbapi2
if __name__ == "__main__":
import unittest
unittest.main()

View File

@ -1,292 +0,0 @@
#!/usr/bin/env python -O
""" Script to test database capabilities and the DB-API interface
for functionality and memory leaks.
Adapted from a script by M-A Lemburg.
"""
from time import time
import array
import unittest
class DatabaseTest(unittest.TestCase):
db_module = None
connect_args = ()
connect_kwargs = dict(use_unicode=True, charset="utf8")
create_table_extra = "ENGINE=INNODB CHARACTER SET UTF8"
rows = 10
debug = False
def setUp(self):
import gc
db = self.db_module.connect(*self.connect_args, **self.connect_kwargs)
self.connection = db
self.cursor = db.cursor()
self.BLOBText = ''.join([chr(i) for i in range(256)] * 100);
self.BLOBUText = u''.join([unichr(i) for i in range(16834)])
self.BLOBBinary = self.db_module.Binary(''.join([chr(i) for i in range(256)] * 16))
leak_test = True
def tearDown(self):
if self.leak_test:
import gc
del self.cursor
orphans = gc.collect()
self.assertFalse(orphans, "%d orphaned objects found after deleting cursor" % orphans)
del self.connection
orphans = gc.collect()
self.assertFalse(orphans, "%d orphaned objects found after deleting connection" % orphans)
def table_exists(self, name):
try:
self.cursor.execute('select * from %s where 1=0' % name)
except:
return False
else:
return True
def quote_identifier(self, ident):
return '"%s"' % ident
def new_table_name(self):
i = id(self.cursor)
while True:
name = self.quote_identifier('tb%08x' % i)
if not self.table_exists(name):
return name
i = i + 1
def create_table(self, columndefs):
""" Create a table using a list of column definitions given in
columndefs.
generator must be a function taking arguments (row_number,
col_number) returning a suitable data object for insertion
into the table.
"""
self.table = self.new_table_name()
self.cursor.execute('CREATE TABLE %s (%s) %s' %
(self.table,
',\n'.join(columndefs),
self.create_table_extra))
def check_data_integrity(self, columndefs, generator):
# insert
self.create_table(columndefs)
insert_statement = ('INSERT INTO %s VALUES (%s)' %
(self.table,
','.join(['%s'] * len(columndefs))))
data = [ [ generator(i,j) for j in range(len(columndefs)) ]
for i in range(self.rows) ]
if self.debug:
print data
self.cursor.executemany(insert_statement, data)
self.connection.commit()
# verify
self.cursor.execute('select * from %s' % self.table)
l = self.cursor.fetchall()
if self.debug:
print l
self.assertEquals(len(l), self.rows)
try:
for i in range(self.rows):
for j in range(len(columndefs)):
self.assertEquals(l[i][j], generator(i,j))
finally:
if not self.debug:
self.cursor.execute('drop table %s' % (self.table))
def test_transactions(self):
columndefs = ( 'col1 INT', 'col2 VARCHAR(255)')
def generator(row, col):
if col == 0: return row
else: return ('%i' % (row%10))*255
self.create_table(columndefs)
insert_statement = ('INSERT INTO %s VALUES (%s)' %
(self.table,
','.join(['%s'] * len(columndefs))))
data = [ [ generator(i,j) for j in range(len(columndefs)) ]
for i in range(self.rows) ]
self.cursor.executemany(insert_statement, data)
# verify
self.connection.commit()
self.cursor.execute('select * from %s' % self.table)
l = self.cursor.fetchall()
self.assertEquals(len(l), self.rows)
for i in range(self.rows):
for j in range(len(columndefs)):
self.assertEquals(l[i][j], generator(i,j))
delete_statement = 'delete from %s where col1=%%s' % self.table
self.cursor.execute(delete_statement, (0,))
self.cursor.execute('select col1 from %s where col1=%s' % \
(self.table, 0))
l = self.cursor.fetchall()
self.assertFalse(l, "DELETE didn't work")
self.connection.rollback()
self.cursor.execute('select col1 from %s where col1=%s' % \
(self.table, 0))
l = self.cursor.fetchall()
self.assertTrue(len(l) == 1, "ROLLBACK didn't work")
self.cursor.execute('drop table %s' % (self.table))
def test_truncation(self):
columndefs = ( 'col1 INT', 'col2 VARCHAR(255)')
def generator(row, col):
if col == 0: return row
else: return ('%i' % (row%10))*((255-self.rows/2)+row)
self.create_table(columndefs)
insert_statement = ('INSERT INTO %s VALUES (%s)' %
(self.table,
','.join(['%s'] * len(columndefs))))
try:
self.cursor.execute(insert_statement, (0, '0'*256))
except Warning:
if self.debug: print self.cursor.messages
except self.connection.DataError:
pass
else:
self.fail("Over-long column did not generate warnings/exception with single insert")
self.connection.rollback()
try:
for i in range(self.rows):
data = []
for j in range(len(columndefs)):
data.append(generator(i,j))
self.cursor.execute(insert_statement,tuple(data))
except Warning:
if self.debug: print self.cursor.messages
except self.connection.DataError:
pass
else:
self.fail("Over-long columns did not generate warnings/exception with execute()")
self.connection.rollback()
try:
data = [ [ generator(i,j) for j in range(len(columndefs)) ]
for i in range(self.rows) ]
self.cursor.executemany(insert_statement, data)
except Warning:
if self.debug: print self.cursor.messages
except self.connection.DataError:
pass
else:
self.fail("Over-long columns did not generate warnings/exception with executemany()")
self.connection.rollback()
self.cursor.execute('drop table %s' % (self.table))
def test_CHAR(self):
# Character data
def generator(row,col):
return ('%i' % ((row+col) % 10)) * 255
self.check_data_integrity(
('col1 char(255)','col2 char(255)'),
generator)
def test_INT(self):
# Number data
def generator(row,col):
return row*row
self.check_data_integrity(
('col1 INT',),
generator)
def test_DECIMAL(self):
# DECIMAL
def generator(row,col):
from decimal import Decimal
return Decimal("%d.%02d" % (row, col))
self.check_data_integrity(
('col1 DECIMAL(5,2)',),
generator)
def test_DATE(self):
ticks = time()
def generator(row,col):
return self.db_module.DateFromTicks(ticks+row*86400-col*1313)
self.check_data_integrity(
('col1 DATE',),
generator)
def test_TIME(self):
ticks = time()
def generator(row,col):
return self.db_module.TimeFromTicks(ticks+row*86400-col*1313)
self.check_data_integrity(
('col1 TIME',),
generator)
def test_DATETIME(self):
ticks = time()
def generator(row,col):
return self.db_module.TimestampFromTicks(ticks+row*86400-col*1313)
self.check_data_integrity(
('col1 DATETIME',),
generator)
def test_TIMESTAMP(self):
ticks = time()
def generator(row,col):
return self.db_module.TimestampFromTicks(ticks+row*86400-col*1313)
self.check_data_integrity(
('col1 TIMESTAMP',),
generator)
def test_fractional_TIMESTAMP(self):
ticks = time()
def generator(row,col):
return self.db_module.TimestampFromTicks(ticks+row*86400-col*1313+row*0.7*col/3.0)
self.check_data_integrity(
('col1 TIMESTAMP',),
generator)
def test_LONG(self):
def generator(row,col):
if col == 0:
return row
else:
return self.BLOBUText # 'BLOB Text ' * 1024
self.check_data_integrity(
('col1 INT', 'col2 LONG'),
generator)
def test_TEXT(self):
def generator(row,col):
if col == 0:
return row
else:
return self.BLOBUText[:5192] # 'BLOB Text ' * 1024
self.check_data_integrity(
('col1 INT', 'col2 TEXT'),
generator)
def test_LONG_BYTE(self):
def generator(row,col):
if col == 0:
return row
else:
return self.BLOBBinary # 'BLOB\000Binary ' * 1024
self.check_data_integrity(
('col1 INT','col2 LONG BYTE'),
generator)
def test_BLOB(self):
def generator(row,col):
if col == 0:
return row
else:
return self.BLOBBinary # 'BLOB\000Binary ' * 1024
self.check_data_integrity(
('col1 INT','col2 BLOB'),
generator)

View File

@ -1,853 +0,0 @@
#!/usr/bin/env python
''' Python DB API 2.0 driver compliance unit test suite.
This software is Public Domain and may be used without restrictions.
"Now we have booze and barflies entering the discussion, plus rumours of
DBAs on drugs... and I won't tell you what flashes through my mind each
time I read the subject line with 'Anal Compliance' in it. All around
this is turning out to be a thoroughly unwholesome unit test."
-- Ian Bicking
'''
__rcs_id__ = '$Id$'
__version__ = '$Revision$'[11:-2]
__author__ = 'Stuart Bishop <zen@shangri-la.dropbear.id.au>'
import unittest
import time
# $Log$
# Revision 1.1.2.1 2006/02/25 03:44:32 adustman
# Generic DB-API unit test module
#
# Revision 1.10 2003/10/09 03:14:14 zenzen
# Add test for DB API 2.0 optional extension, where database exceptions
# are exposed as attributes on the Connection object.
#
# Revision 1.9 2003/08/13 01:16:36 zenzen
# Minor tweak from Stefan Fleiter
#
# Revision 1.8 2003/04/10 00:13:25 zenzen
# Changes, as per suggestions by M.-A. Lemburg
# - Add a table prefix, to ensure namespace collisions can always be avoided
#
# Revision 1.7 2003/02/26 23:33:37 zenzen
# Break out DDL into helper functions, as per request by David Rushby
#
# Revision 1.6 2003/02/21 03:04:33 zenzen
# Stuff from Henrik Ekelund:
# added test_None
# added test_nextset & hooks
#
# Revision 1.5 2003/02/17 22:08:43 zenzen
# Implement suggestions and code from Henrik Eklund - test that cursor.arraysize
# defaults to 1 & generic cursor.callproc test added
#
# Revision 1.4 2003/02/15 00:16:33 zenzen
# Changes, as per suggestions and bug reports by M.-A. Lemburg,
# Matthew T. Kromer, Federico Di Gregorio and Daniel Dittmar
# - Class renamed
# - Now a subclass of TestCase, to avoid requiring the driver stub
# to use multiple inheritance
# - Reversed the polarity of buggy test in test_description
# - Test exception heirarchy correctly
# - self.populate is now self._populate(), so if a driver stub
# overrides self.ddl1 this change propogates
# - VARCHAR columns now have a width, which will hopefully make the
# DDL even more portible (this will be reversed if it causes more problems)
# - cursor.rowcount being checked after various execute and fetchXXX methods
# - Check for fetchall and fetchmany returning empty lists after results
# are exhausted (already checking for empty lists if select retrieved
# nothing
# - Fix bugs in test_setoutputsize_basic and test_setinputsizes
#
class DatabaseAPI20Test(unittest.TestCase):
''' Test a database self.driver for DB API 2.0 compatibility.
This implementation tests Gadfly, but the TestCase
is structured so that other self.drivers can subclass this
test case to ensure compiliance with the DB-API. It is
expected that this TestCase may be expanded in the future
if ambiguities or edge conditions are discovered.
The 'Optional Extensions' are not yet being tested.
self.drivers should subclass this test, overriding setUp, tearDown,
self.driver, connect_args and connect_kw_args. Class specification
should be as follows:
import dbapi20
class mytest(dbapi20.DatabaseAPI20Test):
[...]
Don't 'import DatabaseAPI20Test from dbapi20', or you will
confuse the unit tester - just 'import dbapi20'.
'''
# The self.driver module. This should be the module where the 'connect'
# method is to be found
driver = None
connect_args = () # List of arguments to pass to connect
connect_kw_args = {} # Keyword arguments for connect
table_prefix = 'dbapi20test_' # If you need to specify a prefix for tables
ddl1 = 'create table %sbooze (name varchar(20))' % table_prefix
ddl2 = 'create table %sbarflys (name varchar(20))' % table_prefix
xddl1 = 'drop table %sbooze' % table_prefix
xddl2 = 'drop table %sbarflys' % table_prefix
lowerfunc = 'lower' # Name of stored procedure to convert string->lowercase
# Some drivers may need to override these helpers, for example adding
# a 'commit' after the execute.
def executeDDL1(self,cursor):
cursor.execute(self.ddl1)
def executeDDL2(self,cursor):
cursor.execute(self.ddl2)
def setUp(self):
''' self.drivers should override this method to perform required setup
if any is necessary, such as creating the database.
'''
pass
def tearDown(self):
''' self.drivers should override this method to perform required cleanup
if any is necessary, such as deleting the test database.
The default drops the tables that may be created.
'''
con = self._connect()
try:
cur = con.cursor()
for ddl in (self.xddl1,self.xddl2):
try:
cur.execute(ddl)
con.commit()
except self.driver.Error:
# Assume table didn't exist. Other tests will check if
# execute is busted.
pass
finally:
con.close()
def _connect(self):
try:
return self.driver.connect(
*self.connect_args,**self.connect_kw_args
)
except AttributeError:
self.fail("No connect method found in self.driver module")
def test_connect(self):
con = self._connect()
con.close()
def test_apilevel(self):
try:
# Must exist
apilevel = self.driver.apilevel
# Must equal 2.0
self.assertEqual(apilevel,'2.0')
except AttributeError:
self.fail("Driver doesn't define apilevel")
def test_threadsafety(self):
try:
# Must exist
threadsafety = self.driver.threadsafety
# Must be a valid value
self.assertTrue(threadsafety in (0,1,2,3))
except AttributeError:
self.fail("Driver doesn't define threadsafety")
def test_paramstyle(self):
try:
# Must exist
paramstyle = self.driver.paramstyle
# Must be a valid value
self.assertTrue(paramstyle in (
'qmark','numeric','named','format','pyformat'
))
except AttributeError:
self.fail("Driver doesn't define paramstyle")
def test_Exceptions(self):
# Make sure required exceptions exist, and are in the
# defined heirarchy.
self.assertTrue(issubclass(self.driver.Warning,StandardError))
self.assertTrue(issubclass(self.driver.Error,StandardError))
self.assertTrue(
issubclass(self.driver.InterfaceError,self.driver.Error)
)
self.assertTrue(
issubclass(self.driver.DatabaseError,self.driver.Error)
)
self.assertTrue(
issubclass(self.driver.OperationalError,self.driver.Error)
)
self.assertTrue(
issubclass(self.driver.IntegrityError,self.driver.Error)
)
self.assertTrue(
issubclass(self.driver.InternalError,self.driver.Error)
)
self.assertTrue(
issubclass(self.driver.ProgrammingError,self.driver.Error)
)
self.assertTrue(
issubclass(self.driver.NotSupportedError,self.driver.Error)
)
def test_ExceptionsAsConnectionAttributes(self):
# OPTIONAL EXTENSION
# Test for the optional DB API 2.0 extension, where the exceptions
# are exposed as attributes on the Connection object
# I figure this optional extension will be implemented by any
# driver author who is using this test suite, so it is enabled
# by default.
con = self._connect()
drv = self.driver
self.assertTrue(con.Warning is drv.Warning)
self.assertTrue(con.Error is drv.Error)
self.assertTrue(con.InterfaceError is drv.InterfaceError)
self.assertTrue(con.DatabaseError is drv.DatabaseError)
self.assertTrue(con.OperationalError is drv.OperationalError)
self.assertTrue(con.IntegrityError is drv.IntegrityError)
self.assertTrue(con.InternalError is drv.InternalError)
self.assertTrue(con.ProgrammingError is drv.ProgrammingError)
self.assertTrue(con.NotSupportedError is drv.NotSupportedError)
def test_commit(self):
con = self._connect()
try:
# Commit must work, even if it doesn't do anything
con.commit()
finally:
con.close()
def test_rollback(self):
con = self._connect()
# If rollback is defined, it should either work or throw
# the documented exception
if hasattr(con,'rollback'):
try:
con.rollback()
except self.driver.NotSupportedError:
pass
def test_cursor(self):
con = self._connect()
try:
cur = con.cursor()
finally:
con.close()
def test_cursor_isolation(self):
con = self._connect()
try:
# Make sure cursors created from the same connection have
# the documented transaction isolation level
cur1 = con.cursor()
cur2 = con.cursor()
self.executeDDL1(cur1)
cur1.execute("insert into %sbooze values ('Victoria Bitter')" % (
self.table_prefix
))
cur2.execute("select name from %sbooze" % self.table_prefix)
booze = cur2.fetchall()
self.assertEqual(len(booze),1)
self.assertEqual(len(booze[0]),1)
self.assertEqual(booze[0][0],'Victoria Bitter')
finally:
con.close()
def test_description(self):
con = self._connect()
try:
cur = con.cursor()
self.executeDDL1(cur)
self.assertEqual(cur.description,None,
'cursor.description should be none after executing a '
'statement that can return no rows (such as DDL)'
)
cur.execute('select name from %sbooze' % self.table_prefix)
self.assertEqual(len(cur.description),1,
'cursor.description describes too many columns'
)
self.assertEqual(len(cur.description[0]),7,
'cursor.description[x] tuples must have 7 elements'
)
self.assertEqual(cur.description[0][0].lower(),'name',
'cursor.description[x][0] must return column name'
)
self.assertEqual(cur.description[0][1],self.driver.STRING,
'cursor.description[x][1] must return column type. Got %r'
% cur.description[0][1]
)
# Make sure self.description gets reset
self.executeDDL2(cur)
self.assertEqual(cur.description,None,
'cursor.description not being set to None when executing '
'no-result statements (eg. DDL)'
)
finally:
con.close()
def test_rowcount(self):
con = self._connect()
try:
cur = con.cursor()
self.executeDDL1(cur)
self.assertEqual(cur.rowcount,-1,
'cursor.rowcount should be -1 after executing no-result '
'statements'
)
cur.execute("insert into %sbooze values ('Victoria Bitter')" % (
self.table_prefix
))
self.assertTrue(cur.rowcount in (-1,1),
'cursor.rowcount should == number or rows inserted, or '
'set to -1 after executing an insert statement'
)
cur.execute("select name from %sbooze" % self.table_prefix)
self.assertTrue(cur.rowcount in (-1,1),
'cursor.rowcount should == number of rows returned, or '
'set to -1 after executing a select statement'
)
self.executeDDL2(cur)
self.assertEqual(cur.rowcount,-1,
'cursor.rowcount not being reset to -1 after executing '
'no-result statements'
)
finally:
con.close()
lower_func = 'lower'
def test_callproc(self):
con = self._connect()
try:
cur = con.cursor()
if self.lower_func and hasattr(cur,'callproc'):
r = cur.callproc(self.lower_func,('FOO',))
self.assertEqual(len(r),1)
self.assertEqual(r[0],'FOO')
r = cur.fetchall()
self.assertEqual(len(r),1,'callproc produced no result set')
self.assertEqual(len(r[0]),1,
'callproc produced invalid result set'
)
self.assertEqual(r[0][0],'foo',
'callproc produced invalid results'
)
finally:
con.close()
def test_close(self):
con = self._connect()
try:
cur = con.cursor()
finally:
con.close()
# cursor.execute should raise an Error if called after connection
# closed
self.assertRaises(self.driver.Error,self.executeDDL1,cur)
# connection.commit should raise an Error if called after connection'
# closed.'
self.assertRaises(self.driver.Error,con.commit)
# connection.close should raise an Error if called more than once
self.assertRaises(self.driver.Error,con.close)
def test_execute(self):
con = self._connect()
try:
cur = con.cursor()
self._paraminsert(cur)
finally:
con.close()
def _paraminsert(self,cur):
self.executeDDL1(cur)
cur.execute("insert into %sbooze values ('Victoria Bitter')" % (
self.table_prefix
))
self.assertTrue(cur.rowcount in (-1,1))
if self.driver.paramstyle == 'qmark':
cur.execute(
'insert into %sbooze values (?)' % self.table_prefix,
("Cooper's",)
)
elif self.driver.paramstyle == 'numeric':
cur.execute(
'insert into %sbooze values (:1)' % self.table_prefix,
("Cooper's",)
)
elif self.driver.paramstyle == 'named':
cur.execute(
'insert into %sbooze values (:beer)' % self.table_prefix,
{'beer':"Cooper's"}
)
elif self.driver.paramstyle == 'format':
cur.execute(
'insert into %sbooze values (%%s)' % self.table_prefix,
("Cooper's",)
)
elif self.driver.paramstyle == 'pyformat':
cur.execute(
'insert into %sbooze values (%%(beer)s)' % self.table_prefix,
{'beer':"Cooper's"}
)
else:
self.fail('Invalid paramstyle')
self.assertTrue(cur.rowcount in (-1,1))
cur.execute('select name from %sbooze' % self.table_prefix)
res = cur.fetchall()
self.assertEqual(len(res),2,'cursor.fetchall returned too few rows')
beers = [res[0][0],res[1][0]]
beers.sort()
self.assertEqual(beers[0],"Cooper's",
'cursor.fetchall retrieved incorrect data, or data inserted '
'incorrectly'
)
self.assertEqual(beers[1],"Victoria Bitter",
'cursor.fetchall retrieved incorrect data, or data inserted '
'incorrectly'
)
def test_executemany(self):
con = self._connect()
try:
cur = con.cursor()
self.executeDDL1(cur)
largs = [ ("Cooper's",) , ("Boag's",) ]
margs = [ {'beer': "Cooper's"}, {'beer': "Boag's"} ]
if self.driver.paramstyle == 'qmark':
cur.executemany(
'insert into %sbooze values (?)' % self.table_prefix,
largs
)
elif self.driver.paramstyle == 'numeric':
cur.executemany(
'insert into %sbooze values (:1)' % self.table_prefix,
largs
)
elif self.driver.paramstyle == 'named':
cur.executemany(
'insert into %sbooze values (:beer)' % self.table_prefix,
margs
)
elif self.driver.paramstyle == 'format':
cur.executemany(
'insert into %sbooze values (%%s)' % self.table_prefix,
largs
)
elif self.driver.paramstyle == 'pyformat':
cur.executemany(
'insert into %sbooze values (%%(beer)s)' % (
self.table_prefix
),
margs
)
else:
self.fail('Unknown paramstyle')
self.assertTrue(cur.rowcount in (-1,2),
'insert using cursor.executemany set cursor.rowcount to '
'incorrect value %r' % cur.rowcount
)
cur.execute('select name from %sbooze' % self.table_prefix)
res = cur.fetchall()
self.assertEqual(len(res),2,
'cursor.fetchall retrieved incorrect number of rows'
)
beers = [res[0][0],res[1][0]]
beers.sort()
self.assertEqual(beers[0],"Boag's",'incorrect data retrieved')
self.assertEqual(beers[1],"Cooper's",'incorrect data retrieved')
finally:
con.close()
def test_fetchone(self):
con = self._connect()
try:
cur = con.cursor()
# cursor.fetchone should raise an Error if called before
# executing a select-type query
self.assertRaises(self.driver.Error,cur.fetchone)
# cursor.fetchone should raise an Error if called after
# executing a query that cannnot return rows
self.executeDDL1(cur)
self.assertRaises(self.driver.Error,cur.fetchone)
cur.execute('select name from %sbooze' % self.table_prefix)
self.assertEqual(cur.fetchone(),None,
'cursor.fetchone should return None if a query retrieves '
'no rows'
)
self.assertTrue(cur.rowcount in (-1,0))
# cursor.fetchone should raise an Error if called after
# executing a query that cannnot return rows
cur.execute("insert into %sbooze values ('Victoria Bitter')" % (
self.table_prefix
))
self.assertRaises(self.driver.Error,cur.fetchone)
cur.execute('select name from %sbooze' % self.table_prefix)
r = cur.fetchone()
self.assertEqual(len(r),1,
'cursor.fetchone should have retrieved a single row'
)
self.assertEqual(r[0],'Victoria Bitter',
'cursor.fetchone retrieved incorrect data'
)
self.assertEqual(cur.fetchone(),None,
'cursor.fetchone should return None if no more rows available'
)
self.assertTrue(cur.rowcount in (-1,1))
finally:
con.close()
samples = [
'Carlton Cold',
'Carlton Draft',
'Mountain Goat',
'Redback',
'Victoria Bitter',
'XXXX'
]
def _populate(self):
''' Return a list of sql commands to setup the DB for the fetch
tests.
'''
populate = [
"insert into %sbooze values ('%s')" % (self.table_prefix,s)
for s in self.samples
]
return populate
def test_fetchmany(self):
con = self._connect()
try:
cur = con.cursor()
# cursor.fetchmany should raise an Error if called without
#issuing a query
self.assertRaises(self.driver.Error,cur.fetchmany,4)
self.executeDDL1(cur)
for sql in self._populate():
cur.execute(sql)
cur.execute('select name from %sbooze' % self.table_prefix)
r = cur.fetchmany()
self.assertEqual(len(r),1,
'cursor.fetchmany retrieved incorrect number of rows, '
'default of arraysize is one.'
)
cur.arraysize=10
r = cur.fetchmany(3) # Should get 3 rows
self.assertEqual(len(r),3,
'cursor.fetchmany retrieved incorrect number of rows'
)
r = cur.fetchmany(4) # Should get 2 more
self.assertEqual(len(r),2,
'cursor.fetchmany retrieved incorrect number of rows'
)
r = cur.fetchmany(4) # Should be an empty sequence
self.assertEqual(len(r),0,
'cursor.fetchmany should return an empty sequence after '
'results are exhausted'
)
self.assertTrue(cur.rowcount in (-1,6))
# Same as above, using cursor.arraysize
cur.arraysize=4
cur.execute('select name from %sbooze' % self.table_prefix)
r = cur.fetchmany() # Should get 4 rows
self.assertEqual(len(r),4,
'cursor.arraysize not being honoured by fetchmany'
)
r = cur.fetchmany() # Should get 2 more
self.assertEqual(len(r),2)
r = cur.fetchmany() # Should be an empty sequence
self.assertEqual(len(r),0)
self.assertTrue(cur.rowcount in (-1,6))
cur.arraysize=6
cur.execute('select name from %sbooze' % self.table_prefix)
rows = cur.fetchmany() # Should get all rows
self.assertTrue(cur.rowcount in (-1,6))
self.assertEqual(len(rows),6)
self.assertEqual(len(rows),6)
rows = [r[0] for r in rows]
rows.sort()
# Make sure we get the right data back out
for i in range(0,6):
self.assertEqual(rows[i],self.samples[i],
'incorrect data retrieved by cursor.fetchmany'
)
rows = cur.fetchmany() # Should return an empty list
self.assertEqual(len(rows),0,
'cursor.fetchmany should return an empty sequence if '
'called after the whole result set has been fetched'
)
self.assertTrue(cur.rowcount in (-1,6))
self.executeDDL2(cur)
cur.execute('select name from %sbarflys' % self.table_prefix)
r = cur.fetchmany() # Should get empty sequence
self.assertEqual(len(r),0,
'cursor.fetchmany should return an empty sequence if '
'query retrieved no rows'
)
self.assertTrue(cur.rowcount in (-1,0))
finally:
con.close()
def test_fetchall(self):
con = self._connect()
try:
cur = con.cursor()
# cursor.fetchall should raise an Error if called
# without executing a query that may return rows (such
# as a select)
self.assertRaises(self.driver.Error, cur.fetchall)
self.executeDDL1(cur)
for sql in self._populate():
cur.execute(sql)
# cursor.fetchall should raise an Error if called
# after executing a a statement that cannot return rows
self.assertRaises(self.driver.Error,cur.fetchall)
cur.execute('select name from %sbooze' % self.table_prefix)
rows = cur.fetchall()
self.assertTrue(cur.rowcount in (-1,len(self.samples)))
self.assertEqual(len(rows),len(self.samples),
'cursor.fetchall did not retrieve all rows'
)
rows = [r[0] for r in rows]
rows.sort()
for i in range(0,len(self.samples)):
self.assertEqual(rows[i],self.samples[i],
'cursor.fetchall retrieved incorrect rows'
)
rows = cur.fetchall()
self.assertEqual(
len(rows),0,
'cursor.fetchall should return an empty list if called '
'after the whole result set has been fetched'
)
self.assertTrue(cur.rowcount in (-1,len(self.samples)))
self.executeDDL2(cur)
cur.execute('select name from %sbarflys' % self.table_prefix)
rows = cur.fetchall()
self.assertTrue(cur.rowcount in (-1,0))
self.assertEqual(len(rows),0,
'cursor.fetchall should return an empty list if '
'a select query returns no rows'
)
finally:
con.close()
def test_mixedfetch(self):
con = self._connect()
try:
cur = con.cursor()
self.executeDDL1(cur)
for sql in self._populate():
cur.execute(sql)
cur.execute('select name from %sbooze' % self.table_prefix)
rows1 = cur.fetchone()
rows23 = cur.fetchmany(2)
rows4 = cur.fetchone()
rows56 = cur.fetchall()
self.assertTrue(cur.rowcount in (-1,6))
self.assertEqual(len(rows23),2,
'fetchmany returned incorrect number of rows'
)
self.assertEqual(len(rows56),2,
'fetchall returned incorrect number of rows'
)
rows = [rows1[0]]
rows.extend([rows23[0][0],rows23[1][0]])
rows.append(rows4[0])
rows.extend([rows56[0][0],rows56[1][0]])
rows.sort()
for i in range(0,len(self.samples)):
self.assertEqual(rows[i],self.samples[i],
'incorrect data retrieved or inserted'
)
finally:
con.close()
def help_nextset_setUp(self,cur):
''' Should create a procedure called deleteme
that returns two result sets, first the
number of rows in booze then "name from booze"
'''
raise NotImplementedError,'Helper not implemented'
#sql="""
# create procedure deleteme as
# begin
# select count(*) from booze
# select name from booze
# end
#"""
#cur.execute(sql)
def help_nextset_tearDown(self,cur):
'If cleaning up is needed after nextSetTest'
raise NotImplementedError,'Helper not implemented'
#cur.execute("drop procedure deleteme")
def test_nextset(self):
con = self._connect()
try:
cur = con.cursor()
if not hasattr(cur,'nextset'):
return
try:
self.executeDDL1(cur)
sql=self._populate()
for sql in self._populate():
cur.execute(sql)
self.help_nextset_setUp(cur)
cur.callproc('deleteme')
numberofrows=cur.fetchone()
assert numberofrows[0]== len(self.samples)
assert cur.nextset()
names=cur.fetchall()
assert len(names) == len(self.samples)
s=cur.nextset()
assert s == None,'No more return sets, should return None'
finally:
self.help_nextset_tearDown(cur)
finally:
con.close()
def test_nextset(self):
raise NotImplementedError,'Drivers need to override this test'
def test_arraysize(self):
# Not much here - rest of the tests for this are in test_fetchmany
con = self._connect()
try:
cur = con.cursor()
self.assertTrue(hasattr(cur,'arraysize'),
'cursor.arraysize must be defined'
)
finally:
con.close()
def test_setinputsizes(self):
con = self._connect()
try:
cur = con.cursor()
cur.setinputsizes( (25,) )
self._paraminsert(cur) # Make sure cursor still works
finally:
con.close()
def test_setoutputsize_basic(self):
# Basic test is to make sure setoutputsize doesn't blow up
con = self._connect()
try:
cur = con.cursor()
cur.setoutputsize(1000)
cur.setoutputsize(2000,0)
self._paraminsert(cur) # Make sure the cursor still works
finally:
con.close()
def test_setoutputsize(self):
# Real test for setoutputsize is driver dependant
raise NotImplementedError,'Driver need to override this test'
def test_None(self):
con = self._connect()
try:
cur = con.cursor()
self.executeDDL1(cur)
cur.execute('insert into %sbooze values (NULL)' % self.table_prefix)
cur.execute('select name from %sbooze' % self.table_prefix)
r = cur.fetchall()
self.assertEqual(len(r),1)
self.assertEqual(len(r[0]),1)
self.assertEqual(r[0][0],None,'NULL value not returned as None')
finally:
con.close()
def test_Date(self):
d1 = self.driver.Date(2002,12,25)
d2 = self.driver.DateFromTicks(time.mktime((2002,12,25,0,0,0,0,0,0)))
# Can we assume this? API doesn't specify, but it seems implied
# self.assertEqual(str(d1),str(d2))
def test_Time(self):
t1 = self.driver.Time(13,45,30)
t2 = self.driver.TimeFromTicks(time.mktime((2001,1,1,13,45,30,0,0,0)))
# Can we assume this? API doesn't specify, but it seems implied
# self.assertEqual(str(t1),str(t2))
def test_Timestamp(self):
t1 = self.driver.Timestamp(2002,12,25,13,45,30)
t2 = self.driver.TimestampFromTicks(
time.mktime((2002,12,25,13,45,30,0,0,0))
)
# Can we assume this? API doesn't specify, but it seems implied
# self.assertEqual(str(t1),str(t2))
def test_Binary(self):
b = self.driver.Binary('Something')
b = self.driver.Binary('')
def test_STRING(self):
self.assertTrue(hasattr(self.driver,'STRING'),
'module.STRING must be defined'
)
def test_BINARY(self):
self.assertTrue(hasattr(self.driver,'BINARY'),
'module.BINARY must be defined.'
)
def test_NUMBER(self):
self.assertTrue(hasattr(self.driver,'NUMBER'),
'module.NUMBER must be defined.'
)
def test_DATETIME(self):
self.assertTrue(hasattr(self.driver,'DATETIME'),
'module.DATETIME must be defined.'
)
def test_ROWID(self):
self.assertTrue(hasattr(self.driver,'ROWID'),
'module.ROWID must be defined.'
)

View File

@ -1,115 +0,0 @@
#!/usr/bin/env python
import capabilities
import unittest
import pymysql
from pymysql.tests import base
import warnings
warnings.filterwarnings('error')
class test_MySQLdb(capabilities.DatabaseTest):
db_module = pymysql
connect_args = ()
connect_kwargs = base.PyMySQLTestCase.databases[0].copy()
connect_kwargs.update(dict(read_default_file='~/.my.cnf',
use_unicode=True,
charset='utf8', sql_mode="ANSI,STRICT_TRANS_TABLES,TRADITIONAL"))
create_table_extra = "ENGINE=INNODB CHARACTER SET UTF8"
leak_test = False
def quote_identifier(self, ident):
return "`%s`" % ident
def test_TIME(self):
from datetime import timedelta
def generator(row,col):
return timedelta(0, row*8000)
self.check_data_integrity(
('col1 TIME',),
generator)
def test_TINYINT(self):
# Number data
def generator(row,col):
v = (row*row) % 256
if v > 127:
v = v-256
return v
self.check_data_integrity(
('col1 TINYINT',),
generator)
def test_stored_procedures(self):
db = self.connection
c = self.cursor
try:
self.create_table(('pos INT', 'tree CHAR(20)'))
c.executemany("INSERT INTO %s (pos,tree) VALUES (%%s,%%s)" % self.table,
list(enumerate('ash birch cedar larch pine'.split())))
db.commit()
c.execute("""
CREATE PROCEDURE test_sp(IN t VARCHAR(255))
BEGIN
SELECT pos FROM %s WHERE tree = t;
END
""" % self.table)
db.commit()
c.callproc('test_sp', ('larch',))
rows = c.fetchall()
self.assertEquals(len(rows), 1)
self.assertEquals(rows[0][0], 3)
c.nextset()
finally:
c.execute("DROP PROCEDURE IF EXISTS test_sp")
c.execute('drop table %s' % (self.table))
def test_small_CHAR(self):
# Character data
def generator(row,col):
i = ((row+1)*(col+1)+62)%256
if i == 62: return ''
if i == 63: return None
return chr(i)
self.check_data_integrity(
('col1 char(1)','col2 char(1)'),
generator)
def test_bug_2671682(self):
from pymysql.constants import ER
try:
self.cursor.execute("describe some_non_existent_table");
except self.connection.ProgrammingError, msg:
self.assertTrue(msg.args[0] == ER.NO_SUCH_TABLE)
def test_insert_values(self):
from pymysql.cursors import insert_values
query = """INSERT FOO (a, b, c) VALUES (a, b, c)"""
matched = insert_values.search(query)
self.assertTrue(matched)
values = matched.group(1)
self.assertTrue(values == "(a, b, c)")
def test_ping(self):
self.connection.ping()
def test_literal_int(self):
self.assertTrue("2" == self.connection.literal(2))
def test_literal_float(self):
self.assertTrue("3.1415" == self.connection.literal(3.1415))
def test_literal_string(self):
self.assertTrue("'foo'" == self.connection.literal("foo"))
if __name__ == '__main__':
if test_MySQLdb.leak_test:
import gc
gc.enable()
gc.set_debug(gc.DEBUG_LEAK)
unittest.main()

View File

@ -1,205 +0,0 @@
#!/usr/bin/env python
import dbapi20
import unittest
import pymysql
from pymysql.tests import base
class test_MySQLdb(dbapi20.DatabaseAPI20Test):
driver = pymysql
connect_args = ()
connect_kw_args = base.PyMySQLTestCase.databases[0].copy()
connect_kw_args.update(dict(read_default_file='~/.my.cnf',
charset='utf8',
sql_mode="ANSI,STRICT_TRANS_TABLES,TRADITIONAL"))
def test_setoutputsize(self): pass
def test_setoutputsize_basic(self): pass
def test_nextset(self): pass
"""The tests on fetchone and fetchall and rowcount bogusly
test for an exception if the statement cannot return a
result set. MySQL always returns a result set; it's just that
some things return empty result sets."""
def test_fetchall(self):
con = self._connect()
try:
cur = con.cursor()
# cursor.fetchall should raise an Error if called
# without executing a query that may return rows (such
# as a select)
self.assertRaises(self.driver.Error, cur.fetchall)
self.executeDDL1(cur)
for sql in self._populate():
cur.execute(sql)
# cursor.fetchall should raise an Error if called
# after executing a a statement that cannot return rows
## self.assertRaises(self.driver.Error,cur.fetchall)
cur.execute('select name from %sbooze' % self.table_prefix)
rows = cur.fetchall()
self.assertTrue(cur.rowcount in (-1,len(self.samples)))
self.assertEqual(len(rows),len(self.samples),
'cursor.fetchall did not retrieve all rows'
)
rows = [r[0] for r in rows]
rows.sort()
for i in range(0,len(self.samples)):
self.assertEqual(rows[i],self.samples[i],
'cursor.fetchall retrieved incorrect rows'
)
rows = cur.fetchall()
self.assertEqual(
len(rows),0,
'cursor.fetchall should return an empty list if called '
'after the whole result set has been fetched'
)
self.assertTrue(cur.rowcount in (-1,len(self.samples)))
self.executeDDL2(cur)
cur.execute('select name from %sbarflys' % self.table_prefix)
rows = cur.fetchall()
self.assertTrue(cur.rowcount in (-1,0))
self.assertEqual(len(rows),0,
'cursor.fetchall should return an empty list if '
'a select query returns no rows'
)
finally:
con.close()
def test_fetchone(self):
con = self._connect()
try:
cur = con.cursor()
# cursor.fetchone should raise an Error if called before
# executing a select-type query
self.assertRaises(self.driver.Error,cur.fetchone)
# cursor.fetchone should raise an Error if called after
# executing a query that cannnot return rows
self.executeDDL1(cur)
## self.assertRaises(self.driver.Error,cur.fetchone)
cur.execute('select name from %sbooze' % self.table_prefix)
self.assertEqual(cur.fetchone(),None,
'cursor.fetchone should return None if a query retrieves '
'no rows'
)
self.assertTrue(cur.rowcount in (-1,0))
# cursor.fetchone should raise an Error if called after
# executing a query that cannnot return rows
cur.execute("insert into %sbooze values ('Victoria Bitter')" % (
self.table_prefix
))
## self.assertRaises(self.driver.Error,cur.fetchone)
cur.execute('select name from %sbooze' % self.table_prefix)
r = cur.fetchone()
self.assertEqual(len(r),1,
'cursor.fetchone should have retrieved a single row'
)
self.assertEqual(r[0],'Victoria Bitter',
'cursor.fetchone retrieved incorrect data'
)
## self.assertEqual(cur.fetchone(),None,
## 'cursor.fetchone should return None if no more rows available'
## )
self.assertTrue(cur.rowcount in (-1,1))
finally:
con.close()
# Same complaint as for fetchall and fetchone
def test_rowcount(self):
con = self._connect()
try:
cur = con.cursor()
self.executeDDL1(cur)
## self.assertEqual(cur.rowcount,-1,
## 'cursor.rowcount should be -1 after executing no-result '
## 'statements'
## )
cur.execute("insert into %sbooze values ('Victoria Bitter')" % (
self.table_prefix
))
## self.assertTrue(cur.rowcount in (-1,1),
## 'cursor.rowcount should == number or rows inserted, or '
## 'set to -1 after executing an insert statement'
## )
cur.execute("select name from %sbooze" % self.table_prefix)
self.assertTrue(cur.rowcount in (-1,1),
'cursor.rowcount should == number of rows returned, or '
'set to -1 after executing a select statement'
)
self.executeDDL2(cur)
## self.assertEqual(cur.rowcount,-1,
## 'cursor.rowcount not being reset to -1 after executing '
## 'no-result statements'
## )
finally:
con.close()
def test_callproc(self):
pass # performed in test_MySQL_capabilities
def help_nextset_setUp(self,cur):
''' Should create a procedure called deleteme
that returns two result sets, first the
number of rows in booze then "name from booze"
'''
sql="""
create procedure deleteme()
begin
select count(*) from %(tp)sbooze;
select name from %(tp)sbooze;
end
""" % dict(tp=self.table_prefix)
cur.execute(sql)
def help_nextset_tearDown(self,cur):
'If cleaning up is needed after nextSetTest'
cur.execute("drop procedure deleteme")
def test_nextset(self):
from warnings import warn
con = self._connect()
try:
cur = con.cursor()
if not hasattr(cur,'nextset'):
return
try:
self.executeDDL1(cur)
sql=self._populate()
for sql in self._populate():
cur.execute(sql)
self.help_nextset_setUp(cur)
cur.callproc('deleteme')
numberofrows=cur.fetchone()
assert numberofrows[0]== len(self.samples)
assert cur.nextset()
names=cur.fetchall()
assert len(names) == len(self.samples)
s=cur.nextset()
if s:
empty = cur.fetchall()
self.assertEquals(len(empty), 0,
"non-empty result set after other result sets")
#warn("Incompatibility: MySQL returns an empty result set for the CALL itself",
# Warning)
#assert s == None,'No more return sets, should return None'
finally:
self.help_nextset_tearDown(cur)
finally:
con.close()
if __name__ == '__main__':
unittest.main()

View File

@ -1,90 +0,0 @@
import unittest
import pymysql
_mysql = pymysql
from pymysql.constants import FIELD_TYPE
from pymysql.tests import base
class TestDBAPISet(unittest.TestCase):
def test_set_equality(self):
self.assertTrue(pymysql.STRING == pymysql.STRING)
def test_set_inequality(self):
self.assertTrue(pymysql.STRING != pymysql.NUMBER)
def test_set_equality_membership(self):
self.assertTrue(FIELD_TYPE.VAR_STRING == pymysql.STRING)
def test_set_inequality_membership(self):
self.assertTrue(FIELD_TYPE.DATE != pymysql.STRING)
class CoreModule(unittest.TestCase):
"""Core _mysql module features."""
def test_NULL(self):
"""Should have a NULL constant."""
self.assertEqual(_mysql.NULL, 'NULL')
def test_version(self):
"""Version information sanity."""
self.assertTrue(isinstance(_mysql.__version__, str))
self.assertTrue(isinstance(_mysql.version_info, tuple))
self.assertEqual(len(_mysql.version_info), 5)
def test_client_info(self):
self.assertTrue(isinstance(_mysql.get_client_info(), str))
def test_thread_safe(self):
self.assertTrue(isinstance(_mysql.thread_safe(), int))
class CoreAPI(unittest.TestCase):
"""Test _mysql interaction internals."""
def setUp(self):
kwargs = base.PyMySQLTestCase.databases[0].copy()
kwargs["read_default_file"] = "~/.my.cnf"
self.conn = _mysql.connect(**kwargs)
def tearDown(self):
self.conn.close()
def test_thread_id(self):
tid = self.conn.thread_id()
self.assertTrue(isinstance(tid, int),
"thread_id didn't return an int.")
self.assertRaises(TypeError, self.conn.thread_id, ('evil',),
"thread_id shouldn't accept arguments.")
def test_affected_rows(self):
self.assertEquals(self.conn.affected_rows(), 0,
"Should return 0 before we do anything.")
#def test_debug(self):
## FIXME Only actually tests if you lack SUPER
#self.assertRaises(pymysql.OperationalError,
#self.conn.dump_debug_info)
def test_charset_name(self):
self.assertTrue(isinstance(self.conn.character_set_name(), str),
"Should return a string.")
def test_host_info(self):
self.assertTrue(isinstance(self.conn.get_host_info(), str),
"Should return a string.")
def test_proto_info(self):
self.assertTrue(isinstance(self.conn.get_proto_info(), int),
"Should return an int.")
def test_server_info(self):
self.assertTrue(isinstance(self.conn.get_server_info(), basestring),
"Should return an str.")
if __name__ == "__main__":
unittest.main()

View File

@ -1,16 +0,0 @@
from time import localtime
from datetime import date, datetime, time, timedelta
Date = date
Time = time
TimeDelta = timedelta
Timestamp = datetime
def DateFromTicks(ticks):
return date(*localtime(ticks)[:3])
def TimeFromTicks(ticks):
return time(*localtime(ticks)[3:6])
def TimestampFromTicks(ticks):
return datetime(*localtime(ticks)[:6])

View File

@ -1,19 +0,0 @@
import struct
def byte2int(b):
if isinstance(b, int):
return b
else:
return struct.unpack("!B", b)[0]
def int2byte(i):
return struct.pack("!B", i)
def join_bytes(bs):
if len(bs) == 0:
return ""
else:
rv = bs[0]
for b in bs[1:]:
rv += b
return rv

View File

@ -0,0 +1,18 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.

View File

@ -0,0 +1,18 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.

View File

@ -1,3 +1,21 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
[globals]
#global settings in cloudstack
expunge.delay=60

View File

@ -1,3 +1,22 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#!/usr/bin/env python
try:
import unittest2 as unittest

View File

@ -0,0 +1,18 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.

View File

@ -1,3 +1,21 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
[globals]
#global settings in cloudstack
expunge.delay=60

View File

@ -0,0 +1,18 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.

View File

@ -1,3 +1,22 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
{
"zones": [
{

View File

@ -1,3 +1,21 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
[globals]
expunge.delay=60
expunge.interval=60

View File

@ -0,0 +1,18 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.

View File

@ -0,0 +1,18 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.

View File

@ -34,9 +34,10 @@ setup(name="Marvin",
long_description="Marvin is the cloudstack testclient written around the python unittest framework",
platforms=("Any",),
url="http://jenkins.cloudstack.org:8080/job/marvin",
packages=["marvin", "marvin.cloudstackAPI", "marvin.sandbox", "marvin.sandbox.advanced", "marvin.sandbox.basic", "marvin.pymysql", "marvin.pymysql.constants", "marvin.pymysql.tests"],
packages=["marvin", "marvin.cloudstackAPI", "marvin.sandbox", "marvin.sandbox.advanced", "marvin.sandbox.basic"],
license="LICENSE.txt",
install_requires=[
"pymysql",
"paramiko",
"nose",
"unittest-xml-reporting"

View File

@ -1,21 +0,0 @@
The MIT License
Copyright (c) 2007 Mockito contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

View File

@ -1,11 +0,0 @@
Mockito license - MIT.
Libraries used:
Cglib - Apache License 2.0
ASM - BSD license
Mockito all distribution:
Objenesis - MIT license
Hamcrest - BSD license

View File

@ -1,11 +0,0 @@
To use mockito either:
- put 'mockito-all-x.jar' on your path (runtime dependencies: Objenesis and Hamcrest-core are expanded into single, 'all' jar)
- or put all jars from 'separate-jars' folder on your path. You need mockito-core, objenesis and hamcrest-core.
Instead of hamcrest-core you might use latest junit that includes hamcrest-core in the jar.
All jars (even the dependencies) contain java source inside.
However, for convenience of some IDEs there are also source distributions in 'sources' folder
springsource distributions of hamcrest/objenesis are used only because they are OSGI-fied

View File

@ -1,506 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.5.0_22) on Mon May 24 23:03:27 CEST 2010 -->
<TITLE>
All Classes (Mockito API)
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<BODY BGCOLOR="white">
<FONT size="+1" CLASS="FrameHeadingFont">
<B>All Classes</B></FONT>
<BR>
<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="org/mockito/internal/creation/AbstractMockitoMethodProxy.html" title="class in org.mockito.internal.creation" target="classFrame">AbstractMockitoMethodProxy</A>
<BR>
<A HREF="org/mockito/internal/util/reflection/AccessibilityChanger.html" title="class in org.mockito.internal.util.reflection" target="classFrame">AccessibilityChanger</A>
<BR>
<A HREF="org/mockito/AdditionalMatchers.html" title="class in org.mockito" target="classFrame">AdditionalMatchers</A>
<BR>
<A HREF="org/mockito/internal/invocation/AllInvocationsFinder.html" title="class in org.mockito.internal.invocation" target="classFrame">AllInvocationsFinder</A>
<BR>
<A HREF="org/mockito/internal/matchers/And.html" title="class in org.mockito.internal.matchers" target="classFrame">And</A>
<BR>
<A HREF="org/mockito/configuration/AnnotationEngine.html" title="interface in org.mockito.configuration" target="classFrame"><I>AnnotationEngine</I></A>
<BR>
<A HREF="org/mockito/stubbing/Answer.html" title="interface in org.mockito.stubbing" target="classFrame"><I>Answer</I></A>
<BR>
<A HREF="org/mockito/internal/stubbing/answers/AnswerReturnValuesAdapter.html" title="class in org.mockito.internal.stubbing.answers" target="classFrame">AnswerReturnValuesAdapter</A>
<BR>
<A HREF="org/mockito/Answers.html" title="enum in org.mockito" target="classFrame">Answers</A>
<BR>
<A HREF="org/mockito/internal/stubbing/defaultanswers/Answers.html" title="enum in org.mockito.internal.stubbing.defaultanswers" target="classFrame">Answers</A>
<BR>
<A HREF="org/mockito/internal/stubbing/answers/AnswersValidator.html" title="class in org.mockito.internal.stubbing.answers" target="classFrame">AnswersValidator</A>
<BR>
<A HREF="org/mockito/internal/matchers/Any.html" title="class in org.mockito.internal.matchers" target="classFrame">Any</A>
<BR>
<A HREF="org/mockito/internal/matchers/AnyVararg.html" title="class in org.mockito.internal.matchers" target="classFrame">AnyVararg</A>
<BR>
<A HREF="org/mockito/ArgumentCaptor.html" title="class in org.mockito" target="classFrame">ArgumentCaptor</A>
<BR>
<A HREF="org/mockito/ArgumentMatcher.html" title="class in org.mockito" target="classFrame">ArgumentMatcher</A>
<BR>
<A HREF="org/mockito/internal/progress/ArgumentMatcherStorage.html" title="interface in org.mockito.internal.progress" target="classFrame"><I>ArgumentMatcherStorage</I></A>
<BR>
<A HREF="org/mockito/internal/progress/ArgumentMatcherStorageImpl.html" title="class in org.mockito.internal.progress" target="classFrame">ArgumentMatcherStorageImpl</A>
<BR>
<A HREF="org/mockito/internal/verification/argumentmatching/ArgumentMatchingTool.html" title="class in org.mockito.internal.verification.argumentmatching" target="classFrame">ArgumentMatchingTool</A>
<BR>
<A HREF="org/mockito/exceptions/verification/ArgumentsAreDifferent.html" title="class in org.mockito.exceptions.verification" target="classFrame">ArgumentsAreDifferent</A>
<BR>
<A HREF="org/mockito/exceptions/verification/junit/ArgumentsAreDifferent.html" title="class in org.mockito.exceptions.verification.junit" target="classFrame">ArgumentsAreDifferent</A>
<BR>
<A HREF="org/mockito/internal/invocation/ArgumentsComparator.html" title="class in org.mockito.internal.invocation" target="classFrame">ArgumentsComparator</A>
<BR>
<A HREF="org/mockito/internal/matchers/ArrayEquals.html" title="class in org.mockito.internal.matchers" target="classFrame">ArrayEquals</A>
<BR>
<A HREF="org/mockito/internal/util/ArrayUtils.html" title="class in org.mockito.internal.util" target="classFrame">ArrayUtils</A>
<BR>
<A HREF="org/mockito/internal/verification/AtLeast.html" title="class in org.mockito.internal.verification" target="classFrame">AtLeast</A>
<BR>
<A HREF="org/mockito/internal/verification/checkers/AtLeastDiscrepancy.html" title="class in org.mockito.internal.verification.checkers" target="classFrame">AtLeastDiscrepancy</A>
<BR>
<A HREF="org/mockito/internal/verification/checkers/AtLeastXNumberOfInvocationsChecker.html" title="class in org.mockito.internal.verification.checkers" target="classFrame">AtLeastXNumberOfInvocationsChecker</A>
<BR>
<A HREF="org/mockito/internal/verification/checkers/AtLeastXNumberOfInvocationsInOrderChecker.html" title="class in org.mockito.internal.verification.checkers" target="classFrame">AtLeastXNumberOfInvocationsInOrderChecker</A>
<BR>
<A HREF="org/mockito/internal/verification/AtMost.html" title="class in org.mockito.internal.verification" target="classFrame">AtMost</A>
<BR>
<A HREF="org/mockito/internal/stubbing/BaseStubbing.html" title="class in org.mockito.internal.stubbing" target="classFrame">BaseStubbing</A>
<BR>
<A HREF="org/mockito/BDDMockito.html" title="class in org.mockito" target="classFrame">BDDMockito</A>
<BR>
<A HREF="org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="interface in org.mockito" target="classFrame"><I>BDDMockito.BDDMyOngoingStubbing</I></A>
<BR>
<A HREF="org/mockito/BDDMockito.BDDOngoingStubbingImpl.html" title="class in org.mockito" target="classFrame">BDDMockito.BDDOngoingStubbingImpl</A>
<BR>
<A HREF="org/mockito/BDDMockito.BDDStubber.html" title="interface in org.mockito" target="classFrame"><I>BDDMockito.BDDStubber</I></A>
<BR>
<A HREF="org/mockito/BDDMockito.BDDStubberImpl.html" title="class in org.mockito" target="classFrame">BDDMockito.BDDStubberImpl</A>
<BR>
<A HREF="org/mockito/internal/stubbing/answers/CallsRealMethods.html" title="class in org.mockito.internal.stubbing.answers" target="classFrame">CallsRealMethods</A>
<BR>
<A HREF="org/mockito/Captor.html" title="annotation in org.mockito" target="classFrame">Captor</A>
<BR>
<A HREF="org/mockito/internal/invocation/CapturesArgumensFromInvocation.html" title="interface in org.mockito.internal.invocation" target="classFrame"><I>CapturesArgumensFromInvocation</I></A>
<BR>
<A HREF="org/mockito/internal/matchers/CapturesArguments.html" title="interface in org.mockito.internal.matchers" target="classFrame"><I>CapturesArguments</I></A>
<BR>
<A HREF="org/mockito/internal/matchers/CapturingMatcher.html" title="class in org.mockito.internal.matchers" target="classFrame">CapturingMatcher</A>
<BR>
<A HREF="org/mockito/internal/creation/cglib/CGLIBHacker.html" title="class in org.mockito.internal.creation.cglib" target="classFrame">CGLIBHacker</A>
<BR>
<A HREF="org/mockito/internal/invocation/realmethod/CGLIBProxyRealMethod.html" title="class in org.mockito.internal.invocation.realmethod" target="classFrame">CGLIBProxyRealMethod</A>
<BR>
<A HREF="org/mockito/internal/creation/jmock/ClassImposterizer.html" title="class in org.mockito.internal.creation.jmock" target="classFrame">ClassImposterizer</A>
<BR>
<A HREF="org/mockito/internal/creation/jmock/ClassImposterizer.ClassWithSuperclassToWorkAroundCglibBug.html" title="class in org.mockito.internal.creation.jmock" target="classFrame">ClassImposterizer.ClassWithSuperclassToWorkAroundCglibBug</A>
<BR>
<A HREF="org/mockito/internal/creation/ClassNameFinder.html" title="class in org.mockito.internal.creation" target="classFrame">ClassNameFinder</A>
<BR>
<A HREF="org/mockito/internal/configuration/ClassPathLoader.html" title="class in org.mockito.internal.configuration" target="classFrame">ClassPathLoader</A>
<BR>
<A HREF="org/mockito/internal/stubbing/answers/ClonesArguments.html" title="class in org.mockito.internal.stubbing.answers" target="classFrame">ClonesArguments</A>
<BR>
<A HREF="org/mockito/internal/listeners/CollectCreatedMocks.html" title="class in org.mockito.internal.listeners" target="classFrame">CollectCreatedMocks</A>
<BR>
<A HREF="org/mockito/internal/matchers/CompareEqual.html" title="class in org.mockito.internal.matchers" target="classFrame">CompareEqual</A>
<BR>
<A HREF="org/mockito/internal/matchers/CompareTo.html" title="class in org.mockito.internal.matchers" target="classFrame">CompareTo</A>
<BR>
<A HREF="org/mockito/internal/exceptions/base/ConditionalStackTraceFilter.html" title="class in org.mockito.internal.exceptions.base" target="classFrame">ConditionalStackTraceFilter</A>
<BR>
<A HREF="org/mockito/internal/stubbing/ConsecutiveStubbing.html" title="class in org.mockito.internal.stubbing" target="classFrame">ConsecutiveStubbing</A>
<BR>
<A HREF="org/mockito/internal/util/ConsoleMockitoLogger.html" title="class in org.mockito.internal.util" target="classFrame">ConsoleMockitoLogger</A>
<BR>
<A HREF="org/mockito/runners/ConsoleSpammingMockitoJUnitRunner.html" title="class in org.mockito.runners" target="classFrame">ConsoleSpammingMockitoJUnitRunner</A>
<BR>
<A HREF="org/mockito/internal/matchers/Contains.html" title="class in org.mockito.internal.matchers" target="classFrame">Contains</A>
<BR>
<A HREF="org/mockito/internal/matchers/ContainsExtraTypeInformation.html" title="interface in org.mockito.internal.matchers" target="classFrame"><I>ContainsExtraTypeInformation</I></A>
<BR>
<A HREF="org/mockito/internal/util/Decamelizer.html" title="class in org.mockito.internal.util" target="classFrame">Decamelizer</A>
<BR>
<A HREF="org/mockito/internal/configuration/DefaultAnnotationEngine.html" title="class in org.mockito.internal.configuration" target="classFrame">DefaultAnnotationEngine</A>
<BR>
<A HREF="org/mockito/internal/configuration/DefaultInjectionEngine.html" title="class in org.mockito.internal.configuration" target="classFrame">DefaultInjectionEngine</A>
<BR>
<A HREF="org/mockito/configuration/DefaultMockitoConfiguration.html" title="class in org.mockito.configuration" target="classFrame">DefaultMockitoConfiguration</A>
<BR>
<A HREF="org/mockito/internal/creation/DelegatingMethod.html" title="class in org.mockito.internal.creation" target="classFrame">DelegatingMethod</A>
<BR>
<A HREF="org/mockito/internal/creation/DelegatingMockitoMethodProxy.html" title="class in org.mockito.internal.creation" target="classFrame">DelegatingMockitoMethodProxy</A>
<BR>
<A HREF="org/mockito/stubbing/DeprecatedOngoingStubbing.html" title="interface in org.mockito.stubbing" target="classFrame"><I>DeprecatedOngoingStubbing</I></A>
<BR>
<A HREF="org/mockito/exceptions/Discrepancy.html" title="class in org.mockito.exceptions" target="classFrame">Discrepancy</A>
<BR>
<A HREF="org/mockito/internal/stubbing/answers/DoesNothing.html" title="class in org.mockito.internal.stubbing.answers" target="classFrame">DoesNothing</A>
<BR>
<A HREF="org/mockito/internal/matchers/EndsWith.html" title="class in org.mockito.internal.matchers" target="classFrame">EndsWith</A>
<BR>
<A HREF="org/mockito/internal/matchers/Equality.html" title="class in org.mockito.internal.matchers" target="classFrame">Equality</A>
<BR>
<A HREF="org/mockito/internal/matchers/Equals.html" title="class in org.mockito.internal.matchers" target="classFrame">Equals</A>
<BR>
<A HREF="org/mockito/internal/matchers/EqualsWithDelta.html" title="class in org.mockito.internal.matchers" target="classFrame">EqualsWithDelta</A>
<BR>
<A HREF="org/mockito/internal/exceptions/ExceptionIncludingMockitoWarnings.html" title="class in org.mockito.internal.exceptions" target="classFrame">ExceptionIncludingMockitoWarnings</A>
<BR>
<A HREF="org/mockito/internal/util/reflection/FieldCopier.html" title="class in org.mockito.internal.util.reflection" target="classFrame">FieldCopier</A>
<BR>
<A HREF="org/mockito/internal/util/reflection/FieldReader.html" title="class in org.mockito.internal.util.reflection" target="classFrame">FieldReader</A>
<BR>
<A HREF="org/mockito/internal/util/reflection/FieldSetter.html" title="class in org.mockito.internal.util.reflection" target="classFrame">FieldSetter</A>
<BR>
<A HREF="org/mockito/internal/invocation/realmethod/FilteredCGLIBProxyRealMethod.html" title="class in org.mockito.internal.invocation.realmethod" target="classFrame">FilteredCGLIBProxyRealMethod</A>
<BR>
<A HREF="org/mockito/internal/matchers/Find.html" title="class in org.mockito.internal.matchers" target="classFrame">Find</A>
<BR>
<A HREF="org/mockito/internal/debugging/FindingsListener.html" title="interface in org.mockito.internal.debugging" target="classFrame"><I>FindingsListener</I></A>
<BR>
<A HREF="org/mockito/internal/runners/util/FrameworkUsageValidator.html" title="class in org.mockito.internal.runners.util" target="classFrame">FrameworkUsageValidator</A>
<BR>
<A HREF="org/mockito/internal/util/reflection/GenericMaster.html" title="class in org.mockito.internal.util.reflection" target="classFrame">GenericMaster</A>
<BR>
<A HREF="org/mockito/internal/configuration/GlobalConfiguration.html" title="class in org.mockito.internal.configuration" target="classFrame">GlobalConfiguration</A>
<BR>
<A HREF="org/mockito/internal/stubbing/defaultanswers/GloballyConfiguredAnswer.html" title="class in org.mockito.internal.stubbing.defaultanswers" target="classFrame">GloballyConfiguredAnswer</A>
<BR>
<A HREF="org/mockito/internal/matchers/GreaterOrEqual.html" title="class in org.mockito.internal.matchers" target="classFrame">GreaterOrEqual</A>
<BR>
<A HREF="org/mockito/internal/matchers/GreaterThan.html" title="class in org.mockito.internal.matchers" target="classFrame">GreaterThan</A>
<BR>
<A HREF="org/mockito/internal/progress/HandyReturnValues.html" title="class in org.mockito.internal.progress" target="classFrame">HandyReturnValues</A>
<BR>
<A HREF="org/mockito/internal/invocation/realmethod/HasCGLIBMethodProxy.html" title="interface in org.mockito.internal.invocation.realmethod" target="classFrame"><I>HasCGLIBMethodProxy</I></A>
<BR>
<A HREF="org/mockito/internal/util/IdentitySet.html" title="class in org.mockito.internal.util" target="classFrame">IdentitySet</A>
<BR>
<A HREF="org/mockito/configuration/IMockitoConfiguration.html" title="interface in org.mockito.configuration" target="classFrame"><I>IMockitoConfiguration</I></A>
<BR>
<A HREF="org/mockito/internal/configuration/InjectingAnnotationEngine.html" title="class in org.mockito.internal.configuration" target="classFrame">InjectingAnnotationEngine</A>
<BR>
<A HREF="org/mockito/InjectMocks.html" title="annotation in org.mockito" target="classFrame">InjectMocks</A>
<BR>
<A HREF="org/mockito/InOrder.html" title="interface in org.mockito" target="classFrame"><I>InOrder</I></A>
<BR>
<A HREF="org/mockito/internal/verification/api/InOrderContext.html" title="interface in org.mockito.internal.verification.api" target="classFrame"><I>InOrderContext</I></A>
<BR>
<A HREF="org/mockito/internal/verification/InOrderContextImpl.html" title="class in org.mockito.internal.verification" target="classFrame">InOrderContextImpl</A>
<BR>
<A HREF="org/mockito/internal/InOrderImpl.html" title="class in org.mockito.internal" target="classFrame">InOrderImpl</A>
<BR>
<A HREF="org/mockito/internal/verification/InOrderWrapper.html" title="class in org.mockito.internal.verification" target="classFrame">InOrderWrapper</A>
<BR>
<A HREF="org/mockito/internal/matchers/InstanceOf.html" title="class in org.mockito.internal.matchers" target="classFrame">InstanceOf</A>
<BR>
<A HREF="org/mockito/exceptions/misusing/InvalidUseOfMatchersException.html" title="class in org.mockito.exceptions.misusing" target="classFrame">InvalidUseOfMatchersException</A>
<BR>
<A HREF="org/mockito/internal/invocation/Invocation.html" title="class in org.mockito.internal.invocation" target="classFrame">Invocation</A>
<BR>
<A HREF="org/mockito/internal/stubbing/InvocationContainer.html" title="interface in org.mockito.internal.stubbing" target="classFrame"><I>InvocationContainer</I></A>
<BR>
<A HREF="org/mockito/internal/stubbing/InvocationContainerImpl.html" title="class in org.mockito.internal.stubbing" target="classFrame">InvocationContainerImpl</A>
<BR>
<A HREF="org/mockito/internal/invocation/InvocationMarker.html" title="class in org.mockito.internal.invocation" target="classFrame">InvocationMarker</A>
<BR>
<A HREF="org/mockito/internal/invocation/InvocationMatcher.html" title="class in org.mockito.internal.invocation" target="classFrame">InvocationMatcher</A>
<BR>
<A HREF="org/mockito/invocation/InvocationOnMock.html" title="interface in org.mockito.invocation" target="classFrame"><I>InvocationOnMock</I></A>
<BR>
<A HREF="org/mockito/internal/invocation/InvocationsFinder.html" title="class in org.mockito.internal.invocation" target="classFrame">InvocationsFinder</A>
<BR>
<A HREF="org/mockito/internal/progress/IOngoingStubbing.html" title="interface in org.mockito.internal.progress" target="classFrame"><I>IOngoingStubbing</I></A>
<BR>
<A HREF="org/mockito/internal/runners/JUnit44RunnerImpl.html" title="class in org.mockito.internal.runners" target="classFrame">JUnit44RunnerImpl</A>
<BR>
<A HREF="org/mockito/internal/runners/JUnit45AndHigherRunnerImpl.html" title="class in org.mockito.internal.runners" target="classFrame">JUnit45AndHigherRunnerImpl</A>
<BR>
<A HREF="org/mockito/internal/util/junit/JUnitFailureHacker.html" title="class in org.mockito.internal.util.junit" target="classFrame">JUnitFailureHacker</A>
<BR>
<A HREF="org/mockito/exceptions/verification/junit/JUnitTool.html" title="class in org.mockito.exceptions.verification.junit" target="classFrame">JUnitTool</A>
<BR>
<A HREF="org/mockito/internal/util/reflection/LenientCopyTool.html" title="class in org.mockito.internal.util.reflection" target="classFrame">LenientCopyTool</A>
<BR>
<A HREF="org/mockito/internal/matchers/LessOrEqual.html" title="class in org.mockito.internal.matchers" target="classFrame">LessOrEqual</A>
<BR>
<A HREF="org/mockito/internal/matchers/LessThan.html" title="class in org.mockito.internal.matchers" target="classFrame">LessThan</A>
<BR>
<A HREF="org/mockito/internal/util/ListUtil.html" title="class in org.mockito.internal.util" target="classFrame">ListUtil</A>
<BR>
<A HREF="org/mockito/internal/util/ListUtil.Filter.html" title="interface in org.mockito.internal.util" target="classFrame"><I>ListUtil.Filter</I></A>
<BR>
<A HREF="org/mockito/internal/debugging/Localized.html" title="class in org.mockito.internal.debugging" target="classFrame">Localized</A>
<BR>
<A HREF="org/mockito/internal/matchers/LocalizedMatcher.html" title="class in org.mockito.internal.matchers" target="classFrame">LocalizedMatcher</A>
<BR>
<A HREF="org/mockito/internal/debugging/Location.html" title="class in org.mockito.internal.debugging" target="classFrame">Location</A>
<BR>
<A HREF="org/mockito/internal/debugging/LoggingListener.html" title="class in org.mockito.internal.debugging" target="classFrame">LoggingListener</A>
<BR>
<A HREF="org/mockito/internal/matchers/MatcherDecorator.html" title="interface in org.mockito.internal.matchers" target="classFrame"><I>MatcherDecorator</I></A>
<BR>
<A HREF="org/mockito/Matchers.html" title="class in org.mockito" target="classFrame">Matchers</A>
<BR>
<A HREF="org/mockito/internal/invocation/MatchersBinder.html" title="class in org.mockito.internal.invocation" target="classFrame">MatchersBinder</A>
<BR>
<A HREF="org/mockito/internal/matchers/MatchersPrinter.html" title="class in org.mockito.internal.matchers" target="classFrame">MatchersPrinter</A>
<BR>
<A HREF="org/mockito/internal/matchers/Matches.html" title="class in org.mockito.internal.matchers" target="classFrame">Matches</A>
<BR>
<A HREF="org/mockito/internal/creation/MethodInterceptorFilter.html" title="class in org.mockito.internal.creation" target="classFrame">MethodInterceptorFilter</A>
<BR>
<A HREF="org/mockito/internal/verification/checkers/MissingInvocationChecker.html" title="class in org.mockito.internal.verification.checkers" target="classFrame">MissingInvocationChecker</A>
<BR>
<A HREF="org/mockito/internal/verification/checkers/MissingInvocationInOrderChecker.html" title="class in org.mockito.internal.verification.checkers" target="classFrame">MissingInvocationInOrderChecker</A>
<BR>
<A HREF="org/mockito/exceptions/misusing/MissingMethodInvocationException.html" title="class in org.mockito.exceptions.misusing" target="classFrame">MissingMethodInvocationException</A>
<BR>
<A HREF="org/mockito/Mock.html" title="annotation in org.mockito" target="classFrame">Mock</A>
<BR>
<A HREF="org/mockito/internal/verification/MockAwareVerificationMode.html" title="class in org.mockito.internal.verification" target="classFrame">MockAwareVerificationMode</A>
<BR>
<A HREF="org/mockito/internal/util/MockCreationValidator.html" title="class in org.mockito.internal.util" target="classFrame">MockCreationValidator</A>
<BR>
<A HREF="org/mockito/internal/MockHandler.html" title="class in org.mockito.internal" target="classFrame">MockHandler</A>
<BR>
<A HREF="org/mockito/internal/MockHandlerInterface.html" title="interface in org.mockito.internal" target="classFrame"><I>MockHandlerInterface</I></A>
<BR>
<A HREF="org/mockito/internal/progress/MockingProgress.html" title="interface in org.mockito.internal.progress" target="classFrame"><I>MockingProgress</I></A>
<BR>
<A HREF="org/mockito/internal/progress/MockingProgressImpl.html" title="class in org.mockito.internal.progress" target="classFrame">MockingProgressImpl</A>
<BR>
<A HREF="org/mockito/internal/listeners/MockingProgressListener.html" title="interface in org.mockito.internal.listeners" target="classFrame"><I>MockingProgressListener</I></A>
<BR>
<A HREF="org/mockito/internal/listeners/MockingStartedListener.html" title="interface in org.mockito.internal.listeners" target="classFrame"><I>MockingStartedListener</I></A>
<BR>
<A HREF="org/mockito/Mockito.html" title="class in org.mockito" target="classFrame">Mockito</A>
<BR>
<A HREF="org/mockito/MockitoAnnotations.html" title="class in org.mockito" target="classFrame">MockitoAnnotations</A>
<BR>
<A HREF="org/mockito/MockitoAnnotations.Mock.html" title="annotation in org.mockito" target="classFrame">MockitoAnnotations.Mock</A>
<BR>
<A HREF="org/mockito/exceptions/base/MockitoAssertionError.html" title="class in org.mockito.exceptions.base" target="classFrame">MockitoAssertionError</A>
<BR>
<A HREF="org/mockito/exceptions/misusing/MockitoConfigurationException.html" title="class in org.mockito.exceptions.misusing" target="classFrame">MockitoConfigurationException</A>
<BR>
<A HREF="org/mockito/internal/MockitoCore.html" title="class in org.mockito.internal" target="classFrame">MockitoCore</A>
<BR>
<A HREF="org/mockito/MockitoDebugger.html" title="interface in org.mockito" target="classFrame"><I>MockitoDebugger</I></A>
<BR>
<A HREF="org/mockito/internal/debugging/MockitoDebuggerImpl.html" title="class in org.mockito.internal.debugging" target="classFrame">MockitoDebuggerImpl</A>
<BR>
<A HREF="org/mockito/exceptions/base/MockitoException.html" title="class in org.mockito.exceptions.base" target="classFrame">MockitoException</A>
<BR>
<A HREF="org/mockito/internal/MockitoInvocationHandler.html" title="interface in org.mockito.internal" target="classFrame"><I>MockitoInvocationHandler</I></A>
<BR>
<A HREF="org/mockito/runners/MockitoJUnit44Runner.html" title="class in org.mockito.runners" target="classFrame">MockitoJUnit44Runner</A>
<BR>
<A HREF="org/mockito/runners/MockitoJUnitRunner.html" title="class in org.mockito.runners" target="classFrame">MockitoJUnitRunner</A>
<BR>
<A HREF="org/mockito/internal/util/MockitoLogger.html" title="interface in org.mockito.internal.util" target="classFrame"><I>MockitoLogger</I></A>
<BR>
<A HREF="org/mockito/internal/invocation/MockitoMethod.html" title="interface in org.mockito.internal.invocation" target="classFrame"><I>MockitoMethod</I></A>
<BR>
<A HREF="org/mockito/internal/creation/MockitoMethodProxy.html" title="interface in org.mockito.internal.creation" target="classFrame"><I>MockitoMethodProxy</I></A>
<BR>
<A HREF="org/mockito/internal/creation/cglib/MockitoNamingPolicy.html" title="class in org.mockito.internal.creation.cglib" target="classFrame">MockitoNamingPolicy</A>
<BR>
<A HREF="org/mockito/internal/util/MockName.html" title="class in org.mockito.internal.util" target="classFrame">MockName</A>
<BR>
<A HREF="org/mockito/MockSettings.html" title="interface in org.mockito" target="classFrame"><I>MockSettings</I></A>
<BR>
<A HREF="org/mockito/internal/creation/MockSettingsImpl.html" title="class in org.mockito.internal.creation" target="classFrame">MockSettingsImpl</A>
<BR>
<A HREF="org/mockito/internal/util/MockUtil.html" title="class in org.mockito.internal.util" target="classFrame">MockUtil</A>
<BR>
<A HREF="org/mockito/exceptions/verification/NeverWantedButInvoked.html" title="class in org.mockito.exceptions.verification" target="classFrame">NeverWantedButInvoked</A>
<BR>
<A HREF="org/mockito/exceptions/verification/NoInteractionsWanted.html" title="class in org.mockito.exceptions.verification" target="classFrame">NoInteractionsWanted</A>
<BR>
<A HREF="org/mockito/internal/verification/NoMoreInteractions.html" title="class in org.mockito.internal.verification" target="classFrame">NoMoreInteractions</A>
<BR>
<A HREF="org/mockito/internal/matchers/Not.html" title="class in org.mockito.internal.matchers" target="classFrame">Not</A>
<BR>
<A HREF="org/mockito/exceptions/misusing/NotAMockException.html" title="class in org.mockito.exceptions.misusing" target="classFrame">NotAMockException</A>
<BR>
<A HREF="org/mockito/internal/matchers/NotNull.html" title="class in org.mockito.internal.matchers" target="classFrame">NotNull</A>
<BR>
<A HREF="org/mockito/internal/matchers/Null.html" title="class in org.mockito.internal.matchers" target="classFrame">Null</A>
<BR>
<A HREF="org/mockito/exceptions/misusing/NullInsteadOfMockException.html" title="class in org.mockito.exceptions.misusing" target="classFrame">NullInsteadOfMockException</A>
<BR>
<A HREF="org/mockito/internal/verification/checkers/NumberOfInvocationsChecker.html" title="class in org.mockito.internal.verification.checkers" target="classFrame">NumberOfInvocationsChecker</A>
<BR>
<A HREF="org/mockito/internal/verification/checkers/NumberOfInvocationsInOrderChecker.html" title="class in org.mockito.internal.verification.checkers" target="classFrame">NumberOfInvocationsInOrderChecker</A>
<BR>
<A HREF="org/mockito/internal/util/ObjectMethodsGuru.html" title="class in org.mockito.internal.util" target="classFrame">ObjectMethodsGuru</A>
<BR>
<A HREF="org/mockito/stubbing/OngoingStubbing.html" title="interface in org.mockito.stubbing" target="classFrame"><I>OngoingStubbing</I></A>
<BR>
<A HREF="org/mockito/internal/stubbing/OngoingStubbingImpl.html" title="class in org.mockito.internal.stubbing" target="classFrame">OngoingStubbingImpl</A>
<BR>
<A HREF="org/mockito/internal/verification/Only.html" title="class in org.mockito.internal.verification" target="classFrame">Only</A>
<BR>
<A HREF="org/mockito/internal/matchers/Or.html" title="class in org.mockito.internal.matchers" target="classFrame">Or</A>
<BR>
<A HREF="org/mockito/exceptions/Pluralizer.html" title="class in org.mockito.exceptions" target="classFrame">Pluralizer</A>
<BR>
<A HREF="org/mockito/internal/util/Primitives.html" title="class in org.mockito.internal.util" target="classFrame">Primitives</A>
<BR>
<A HREF="org/mockito/exceptions/PrintableInvocation.html" title="interface in org.mockito.exceptions" target="classFrame"><I>PrintableInvocation</I></A>
<BR>
<A HREF="org/mockito/internal/reporting/PrintingFriendlyInvocation.html" title="interface in org.mockito.internal.reporting" target="classFrame"><I>PrintingFriendlyInvocation</I></A>
<BR>
<A HREF="org/mockito/internal/reporting/PrintSettings.html" title="class in org.mockito.internal.reporting" target="classFrame">PrintSettings</A>
<BR>
<A HREF="org/mockito/internal/invocation/realmethod/RealMethod.html" title="interface in org.mockito.internal.invocation.realmethod" target="classFrame"><I>RealMethod</I></A>
<BR>
<A HREF="org/mockito/internal/matchers/apachecommons/ReflectionEquals.html" title="class in org.mockito.internal.matchers.apachecommons" target="classFrame">ReflectionEquals</A>
<BR>
<A HREF="org/mockito/internal/verification/RegisteredInvocations.html" title="class in org.mockito.internal.verification" target="classFrame">RegisteredInvocations</A>
<BR>
<A HREF="org/mockito/internal/util/RemoveFirstLine.html" title="class in org.mockito.internal.util" target="classFrame">RemoveFirstLine</A>
<BR>
<A HREF="org/mockito/exceptions/Reporter.html" title="class in org.mockito.exceptions" target="classFrame">Reporter</A>
<BR>
<A HREF="org/mockito/internal/stubbing/answers/Returns.html" title="class in org.mockito.internal.stubbing.answers" target="classFrame">Returns</A>
<BR>
<A HREF="org/mockito/internal/stubbing/defaultanswers/ReturnsDeepStubs.html" title="class in org.mockito.internal.stubbing.defaultanswers" target="classFrame">ReturnsDeepStubs</A>
<BR>
<A HREF="org/mockito/stubbing/answers/ReturnsElementsOf.html" title="class in org.mockito.stubbing.answers" target="classFrame">ReturnsElementsOf</A>
<BR>
<A HREF="org/mockito/internal/stubbing/defaultanswers/ReturnsEmptyValues.html" title="class in org.mockito.internal.stubbing.defaultanswers" target="classFrame">ReturnsEmptyValues</A>
<BR>
<A HREF="org/mockito/internal/stubbing/defaultanswers/ReturnsMocks.html" title="class in org.mockito.internal.stubbing.defaultanswers" target="classFrame">ReturnsMocks</A>
<BR>
<A HREF="org/mockito/internal/stubbing/defaultanswers/ReturnsMoreEmptyValues.html" title="class in org.mockito.internal.stubbing.defaultanswers" target="classFrame">ReturnsMoreEmptyValues</A>
<BR>
<A HREF="org/mockito/internal/stubbing/defaultanswers/ReturnsSmartNulls.html" title="class in org.mockito.internal.stubbing.defaultanswers" target="classFrame">ReturnsSmartNulls</A>
<BR>
<A HREF="org/mockito/ReturnValues.html" title="interface in org.mockito" target="classFrame"><I>ReturnValues</I></A>
<BR>
<A HREF="org/mockito/internal/runners/RunnerFactory.html" title="class in org.mockito.internal.runners" target="classFrame">RunnerFactory</A>
<BR>
<A HREF="org/mockito/internal/runners/RunnerImpl.html" title="interface in org.mockito.internal.runners" target="classFrame"><I>RunnerImpl</I></A>
<BR>
<A HREF="org/mockito/internal/runners/util/RunnerProvider.html" title="class in org.mockito.internal.runners.util" target="classFrame">RunnerProvider</A>
<BR>
<A HREF="org/mockito/internal/matchers/Same.html" title="class in org.mockito.internal.matchers" target="classFrame">Same</A>
<BR>
<A HREF="org/mockito/internal/exceptions/util/ScenarioPrinter.html" title="class in org.mockito.internal.exceptions.util" target="classFrame">ScenarioPrinter</A>
<BR>
<A HREF="org/mockito/internal/creation/jmock/SearchingClassLoader.html" title="class in org.mockito.internal.creation.jmock" target="classFrame">SearchingClassLoader</A>
<BR>
<A HREF="org/mockito/internal/progress/SequenceNumber.html" title="class in org.mockito.internal.progress" target="classFrame">SequenceNumber</A>
<BR>
<A HREF="org/mockito/internal/invocation/SerializableMethod.html" title="class in org.mockito.internal.invocation" target="classFrame">SerializableMethod</A>
<BR>
<A HREF="org/mockito/internal/creation/SerializableMockitoMethodProxy.html" title="class in org.mockito.internal.creation" target="classFrame">SerializableMockitoMethodProxy</A>
<BR>
<A HREF="org/mockito/internal/creation/jmock/SerializableNoOp.html" title="class in org.mockito.internal.creation.jmock" target="classFrame">SerializableNoOp</A>
<BR>
<A HREF="org/mockito/internal/util/SimpleMockitoLogger.html" title="class in org.mockito.internal.util" target="classFrame">SimpleMockitoLogger</A>
<BR>
<A HREF="org/mockito/exceptions/verification/SmartNullPointerException.html" title="class in org.mockito.exceptions.verification" target="classFrame">SmartNullPointerException</A>
<BR>
<A HREF="org/mockito/internal/reporting/SmartPrinter.html" title="class in org.mockito.internal.reporting" target="classFrame">SmartPrinter</A>
<BR>
<A HREF="org/mockito/Spy.html" title="annotation in org.mockito" target="classFrame">Spy</A>
<BR>
<A HREF="org/mockito/internal/configuration/SpyAnnotationEngine.html" title="class in org.mockito.internal.configuration" target="classFrame">SpyAnnotationEngine</A>
<BR>
<A HREF="org/mockito/internal/exceptions/base/StackTraceFilter.html" title="class in org.mockito.internal.exceptions.base" target="classFrame">StackTraceFilter</A>
<BR>
<A HREF="org/mockito/internal/matchers/StartsWith.html" title="class in org.mockito.internal.matchers" target="classFrame">StartsWith</A>
<BR>
<A HREF="org/mockito/internal/util/StringJoiner.html" title="class in org.mockito.internal.util" target="classFrame">StringJoiner</A>
<BR>
<A HREF="org/mockito/internal/stubbing/StubbedInvocationMatcher.html" title="class in org.mockito.internal.stubbing" target="classFrame">StubbedInvocationMatcher</A>
<BR>
<A HREF="org/mockito/stubbing/Stubber.html" title="interface in org.mockito.stubbing" target="classFrame"><I>Stubber</I></A>
<BR>
<A HREF="org/mockito/internal/stubbing/StubberImpl.html" title="class in org.mockito.internal.stubbing" target="classFrame">StubberImpl</A>
<BR>
<A HREF="org/mockito/internal/invocation/StubInfo.html" title="class in org.mockito.internal.invocation" target="classFrame">StubInfo</A>
<BR>
<A HREF="org/mockito/internal/runners/util/TestMethodsFinder.html" title="class in org.mockito.internal.runners.util" target="classFrame">TestMethodsFinder</A>
<BR>
<A HREF="org/mockito/internal/progress/ThreadSafeMockingProgress.html" title="class in org.mockito.internal.progress" target="classFrame">ThreadSafeMockingProgress</A>
<BR>
<A HREF="org/mockito/internal/stubbing/answers/ThrowsException.html" title="class in org.mockito.internal.stubbing.answers" target="classFrame">ThrowsException</A>
<BR>
<A HREF="org/mockito/verification/Timeout.html" title="class in org.mockito.verification" target="classFrame">Timeout</A>
<BR>
<A HREF="org/mockito/internal/verification/Times.html" title="class in org.mockito.internal.verification" target="classFrame">Times</A>
<BR>
<A HREF="org/mockito/exceptions/verification/TooLittleActualInvocations.html" title="class in org.mockito.exceptions.verification" target="classFrame">TooLittleActualInvocations</A>
<BR>
<A HREF="org/mockito/exceptions/verification/TooManyActualInvocations.html" title="class in org.mockito.exceptions.verification" target="classFrame">TooManyActualInvocations</A>
<BR>
<A HREF="org/mockito/exceptions/misusing/UnfinishedStubbingException.html" title="class in org.mockito.exceptions.misusing" target="classFrame">UnfinishedStubbingException</A>
<BR>
<A HREF="org/mockito/exceptions/misusing/UnfinishedVerificationException.html" title="class in org.mockito.exceptions.misusing" target="classFrame">UnfinishedVerificationException</A>
<BR>
<A HREF="org/mockito/internal/invocation/UnusedStubsFinder.html" title="class in org.mockito.internal.invocation" target="classFrame">UnusedStubsFinder</A>
<BR>
<A HREF="org/mockito/internal/matchers/VarargMatcher.html" title="interface in org.mockito.internal.matchers" target="classFrame"><I>VarargMatcher</I></A>
<BR>
<A HREF="org/mockito/runners/VerboseMockitoJUnitRunner.html" title="class in org.mockito.runners" target="classFrame">VerboseMockitoJUnitRunner</A>
<BR>
<A HREF="org/mockito/internal/exceptions/VerificationAwareInvocation.html" title="interface in org.mockito.internal.exceptions" target="classFrame"><I>VerificationAwareInvocation</I></A>
<BR>
<A HREF="org/mockito/internal/verification/api/VerificationData.html" title="interface in org.mockito.internal.verification.api" target="classFrame"><I>VerificationData</I></A>
<BR>
<A HREF="org/mockito/internal/verification/VerificationDataImpl.html" title="class in org.mockito.internal.verification" target="classFrame">VerificationDataImpl</A>
<BR>
<A HREF="org/mockito/internal/verification/api/VerificationDataInOrder.html" title="interface in org.mockito.internal.verification.api" target="classFrame"><I>VerificationDataInOrder</I></A>
<BR>
<A HREF="org/mockito/internal/verification/api/VerificationDataInOrderImpl.html" title="class in org.mockito.internal.verification.api" target="classFrame">VerificationDataInOrderImpl</A>
<BR>
<A HREF="org/mockito/exceptions/verification/VerificationInOrderFailure.html" title="class in org.mockito.exceptions.verification" target="classFrame">VerificationInOrderFailure</A>
<BR>
<A HREF="org/mockito/internal/verification/api/VerificationInOrderMode.html" title="interface in org.mockito.internal.verification.api" target="classFrame"><I>VerificationInOrderMode</I></A>
<BR>
<A HREF="org/mockito/verification/VerificationMode.html" title="interface in org.mockito.verification" target="classFrame"><I>VerificationMode</I></A>
<BR>
<A HREF="org/mockito/internal/verification/VerificationModeFactory.html" title="class in org.mockito.internal.verification" target="classFrame">VerificationModeFactory</A>
<BR>
<A HREF="org/mockito/verification/VerificationWithTimeout.html" title="interface in org.mockito.verification" target="classFrame"><I>VerificationWithTimeout</I></A>
<BR>
<A HREF="org/mockito/internal/verification/VerificationWithTimeoutImpl.html" title="class in org.mockito.internal.verification" target="classFrame">VerificationWithTimeoutImpl</A>
<BR>
<A HREF="org/mockito/stubbing/VoidMethodStubbable.html" title="interface in org.mockito.stubbing" target="classFrame"><I>VoidMethodStubbable</I></A>
<BR>
<A HREF="org/mockito/internal/stubbing/VoidMethodStubbableImpl.html" title="class in org.mockito.internal.stubbing" target="classFrame">VoidMethodStubbableImpl</A>
<BR>
<A HREF="org/mockito/exceptions/verification/WantedButNotInvoked.html" title="class in org.mockito.exceptions.verification" target="classFrame">WantedButNotInvoked</A>
<BR>
<A HREF="org/mockito/internal/debugging/WarningsCollector.html" title="class in org.mockito.internal.debugging" target="classFrame">WarningsCollector</A>
<BR>
<A HREF="org/mockito/internal/debugging/WarningsFinder.html" title="class in org.mockito.internal.debugging" target="classFrame">WarningsFinder</A>
<BR>
<A HREF="org/mockito/internal/debugging/WarningsPrinterImpl.html" title="class in org.mockito.internal.debugging" target="classFrame">WarningsPrinterImpl</A>
<BR>
<A HREF="org/mockito/internal/util/reflection/Whitebox.html" title="class in org.mockito.internal.util.reflection" target="classFrame">Whitebox</A>
<BR>
<A HREF="org/mockito/exceptions/misusing/WrongTypeOfReturnValue.html" title="class in org.mockito.exceptions.misusing" target="classFrame">WrongTypeOfReturnValue</A>
<BR>
</FONT></TD>
</TR>
</TABLE>
</BODY>
</HTML>

View File

@ -1,506 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.5.0_22) on Mon May 24 23:03:27 CEST 2010 -->
<TITLE>
All Classes (Mockito API)
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<BODY BGCOLOR="white">
<FONT size="+1" CLASS="FrameHeadingFont">
<B>All Classes</B></FONT>
<BR>
<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="org/mockito/internal/creation/AbstractMockitoMethodProxy.html" title="class in org.mockito.internal.creation">AbstractMockitoMethodProxy</A>
<BR>
<A HREF="org/mockito/internal/util/reflection/AccessibilityChanger.html" title="class in org.mockito.internal.util.reflection">AccessibilityChanger</A>
<BR>
<A HREF="org/mockito/AdditionalMatchers.html" title="class in org.mockito">AdditionalMatchers</A>
<BR>
<A HREF="org/mockito/internal/invocation/AllInvocationsFinder.html" title="class in org.mockito.internal.invocation">AllInvocationsFinder</A>
<BR>
<A HREF="org/mockito/internal/matchers/And.html" title="class in org.mockito.internal.matchers">And</A>
<BR>
<A HREF="org/mockito/configuration/AnnotationEngine.html" title="interface in org.mockito.configuration"><I>AnnotationEngine</I></A>
<BR>
<A HREF="org/mockito/stubbing/Answer.html" title="interface in org.mockito.stubbing"><I>Answer</I></A>
<BR>
<A HREF="org/mockito/internal/stubbing/answers/AnswerReturnValuesAdapter.html" title="class in org.mockito.internal.stubbing.answers">AnswerReturnValuesAdapter</A>
<BR>
<A HREF="org/mockito/Answers.html" title="enum in org.mockito">Answers</A>
<BR>
<A HREF="org/mockito/internal/stubbing/defaultanswers/Answers.html" title="enum in org.mockito.internal.stubbing.defaultanswers">Answers</A>
<BR>
<A HREF="org/mockito/internal/stubbing/answers/AnswersValidator.html" title="class in org.mockito.internal.stubbing.answers">AnswersValidator</A>
<BR>
<A HREF="org/mockito/internal/matchers/Any.html" title="class in org.mockito.internal.matchers">Any</A>
<BR>
<A HREF="org/mockito/internal/matchers/AnyVararg.html" title="class in org.mockito.internal.matchers">AnyVararg</A>
<BR>
<A HREF="org/mockito/ArgumentCaptor.html" title="class in org.mockito">ArgumentCaptor</A>
<BR>
<A HREF="org/mockito/ArgumentMatcher.html" title="class in org.mockito">ArgumentMatcher</A>
<BR>
<A HREF="org/mockito/internal/progress/ArgumentMatcherStorage.html" title="interface in org.mockito.internal.progress"><I>ArgumentMatcherStorage</I></A>
<BR>
<A HREF="org/mockito/internal/progress/ArgumentMatcherStorageImpl.html" title="class in org.mockito.internal.progress">ArgumentMatcherStorageImpl</A>
<BR>
<A HREF="org/mockito/internal/verification/argumentmatching/ArgumentMatchingTool.html" title="class in org.mockito.internal.verification.argumentmatching">ArgumentMatchingTool</A>
<BR>
<A HREF="org/mockito/exceptions/verification/ArgumentsAreDifferent.html" title="class in org.mockito.exceptions.verification">ArgumentsAreDifferent</A>
<BR>
<A HREF="org/mockito/exceptions/verification/junit/ArgumentsAreDifferent.html" title="class in org.mockito.exceptions.verification.junit">ArgumentsAreDifferent</A>
<BR>
<A HREF="org/mockito/internal/invocation/ArgumentsComparator.html" title="class in org.mockito.internal.invocation">ArgumentsComparator</A>
<BR>
<A HREF="org/mockito/internal/matchers/ArrayEquals.html" title="class in org.mockito.internal.matchers">ArrayEquals</A>
<BR>
<A HREF="org/mockito/internal/util/ArrayUtils.html" title="class in org.mockito.internal.util">ArrayUtils</A>
<BR>
<A HREF="org/mockito/internal/verification/AtLeast.html" title="class in org.mockito.internal.verification">AtLeast</A>
<BR>
<A HREF="org/mockito/internal/verification/checkers/AtLeastDiscrepancy.html" title="class in org.mockito.internal.verification.checkers">AtLeastDiscrepancy</A>
<BR>
<A HREF="org/mockito/internal/verification/checkers/AtLeastXNumberOfInvocationsChecker.html" title="class in org.mockito.internal.verification.checkers">AtLeastXNumberOfInvocationsChecker</A>
<BR>
<A HREF="org/mockito/internal/verification/checkers/AtLeastXNumberOfInvocationsInOrderChecker.html" title="class in org.mockito.internal.verification.checkers">AtLeastXNumberOfInvocationsInOrderChecker</A>
<BR>
<A HREF="org/mockito/internal/verification/AtMost.html" title="class in org.mockito.internal.verification">AtMost</A>
<BR>
<A HREF="org/mockito/internal/stubbing/BaseStubbing.html" title="class in org.mockito.internal.stubbing">BaseStubbing</A>
<BR>
<A HREF="org/mockito/BDDMockito.html" title="class in org.mockito">BDDMockito</A>
<BR>
<A HREF="org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="interface in org.mockito"><I>BDDMockito.BDDMyOngoingStubbing</I></A>
<BR>
<A HREF="org/mockito/BDDMockito.BDDOngoingStubbingImpl.html" title="class in org.mockito">BDDMockito.BDDOngoingStubbingImpl</A>
<BR>
<A HREF="org/mockito/BDDMockito.BDDStubber.html" title="interface in org.mockito"><I>BDDMockito.BDDStubber</I></A>
<BR>
<A HREF="org/mockito/BDDMockito.BDDStubberImpl.html" title="class in org.mockito">BDDMockito.BDDStubberImpl</A>
<BR>
<A HREF="org/mockito/internal/stubbing/answers/CallsRealMethods.html" title="class in org.mockito.internal.stubbing.answers">CallsRealMethods</A>
<BR>
<A HREF="org/mockito/Captor.html" title="annotation in org.mockito">Captor</A>
<BR>
<A HREF="org/mockito/internal/invocation/CapturesArgumensFromInvocation.html" title="interface in org.mockito.internal.invocation"><I>CapturesArgumensFromInvocation</I></A>
<BR>
<A HREF="org/mockito/internal/matchers/CapturesArguments.html" title="interface in org.mockito.internal.matchers"><I>CapturesArguments</I></A>
<BR>
<A HREF="org/mockito/internal/matchers/CapturingMatcher.html" title="class in org.mockito.internal.matchers">CapturingMatcher</A>
<BR>
<A HREF="org/mockito/internal/creation/cglib/CGLIBHacker.html" title="class in org.mockito.internal.creation.cglib">CGLIBHacker</A>
<BR>
<A HREF="org/mockito/internal/invocation/realmethod/CGLIBProxyRealMethod.html" title="class in org.mockito.internal.invocation.realmethod">CGLIBProxyRealMethod</A>
<BR>
<A HREF="org/mockito/internal/creation/jmock/ClassImposterizer.html" title="class in org.mockito.internal.creation.jmock">ClassImposterizer</A>
<BR>
<A HREF="org/mockito/internal/creation/jmock/ClassImposterizer.ClassWithSuperclassToWorkAroundCglibBug.html" title="class in org.mockito.internal.creation.jmock">ClassImposterizer.ClassWithSuperclassToWorkAroundCglibBug</A>
<BR>
<A HREF="org/mockito/internal/creation/ClassNameFinder.html" title="class in org.mockito.internal.creation">ClassNameFinder</A>
<BR>
<A HREF="org/mockito/internal/configuration/ClassPathLoader.html" title="class in org.mockito.internal.configuration">ClassPathLoader</A>
<BR>
<A HREF="org/mockito/internal/stubbing/answers/ClonesArguments.html" title="class in org.mockito.internal.stubbing.answers">ClonesArguments</A>
<BR>
<A HREF="org/mockito/internal/listeners/CollectCreatedMocks.html" title="class in org.mockito.internal.listeners">CollectCreatedMocks</A>
<BR>
<A HREF="org/mockito/internal/matchers/CompareEqual.html" title="class in org.mockito.internal.matchers">CompareEqual</A>
<BR>
<A HREF="org/mockito/internal/matchers/CompareTo.html" title="class in org.mockito.internal.matchers">CompareTo</A>
<BR>
<A HREF="org/mockito/internal/exceptions/base/ConditionalStackTraceFilter.html" title="class in org.mockito.internal.exceptions.base">ConditionalStackTraceFilter</A>
<BR>
<A HREF="org/mockito/internal/stubbing/ConsecutiveStubbing.html" title="class in org.mockito.internal.stubbing">ConsecutiveStubbing</A>
<BR>
<A HREF="org/mockito/internal/util/ConsoleMockitoLogger.html" title="class in org.mockito.internal.util">ConsoleMockitoLogger</A>
<BR>
<A HREF="org/mockito/runners/ConsoleSpammingMockitoJUnitRunner.html" title="class in org.mockito.runners">ConsoleSpammingMockitoJUnitRunner</A>
<BR>
<A HREF="org/mockito/internal/matchers/Contains.html" title="class in org.mockito.internal.matchers">Contains</A>
<BR>
<A HREF="org/mockito/internal/matchers/ContainsExtraTypeInformation.html" title="interface in org.mockito.internal.matchers"><I>ContainsExtraTypeInformation</I></A>
<BR>
<A HREF="org/mockito/internal/util/Decamelizer.html" title="class in org.mockito.internal.util">Decamelizer</A>
<BR>
<A HREF="org/mockito/internal/configuration/DefaultAnnotationEngine.html" title="class in org.mockito.internal.configuration">DefaultAnnotationEngine</A>
<BR>
<A HREF="org/mockito/internal/configuration/DefaultInjectionEngine.html" title="class in org.mockito.internal.configuration">DefaultInjectionEngine</A>
<BR>
<A HREF="org/mockito/configuration/DefaultMockitoConfiguration.html" title="class in org.mockito.configuration">DefaultMockitoConfiguration</A>
<BR>
<A HREF="org/mockito/internal/creation/DelegatingMethod.html" title="class in org.mockito.internal.creation">DelegatingMethod</A>
<BR>
<A HREF="org/mockito/internal/creation/DelegatingMockitoMethodProxy.html" title="class in org.mockito.internal.creation">DelegatingMockitoMethodProxy</A>
<BR>
<A HREF="org/mockito/stubbing/DeprecatedOngoingStubbing.html" title="interface in org.mockito.stubbing"><I>DeprecatedOngoingStubbing</I></A>
<BR>
<A HREF="org/mockito/exceptions/Discrepancy.html" title="class in org.mockito.exceptions">Discrepancy</A>
<BR>
<A HREF="org/mockito/internal/stubbing/answers/DoesNothing.html" title="class in org.mockito.internal.stubbing.answers">DoesNothing</A>
<BR>
<A HREF="org/mockito/internal/matchers/EndsWith.html" title="class in org.mockito.internal.matchers">EndsWith</A>
<BR>
<A HREF="org/mockito/internal/matchers/Equality.html" title="class in org.mockito.internal.matchers">Equality</A>
<BR>
<A HREF="org/mockito/internal/matchers/Equals.html" title="class in org.mockito.internal.matchers">Equals</A>
<BR>
<A HREF="org/mockito/internal/matchers/EqualsWithDelta.html" title="class in org.mockito.internal.matchers">EqualsWithDelta</A>
<BR>
<A HREF="org/mockito/internal/exceptions/ExceptionIncludingMockitoWarnings.html" title="class in org.mockito.internal.exceptions">ExceptionIncludingMockitoWarnings</A>
<BR>
<A HREF="org/mockito/internal/util/reflection/FieldCopier.html" title="class in org.mockito.internal.util.reflection">FieldCopier</A>
<BR>
<A HREF="org/mockito/internal/util/reflection/FieldReader.html" title="class in org.mockito.internal.util.reflection">FieldReader</A>
<BR>
<A HREF="org/mockito/internal/util/reflection/FieldSetter.html" title="class in org.mockito.internal.util.reflection">FieldSetter</A>
<BR>
<A HREF="org/mockito/internal/invocation/realmethod/FilteredCGLIBProxyRealMethod.html" title="class in org.mockito.internal.invocation.realmethod">FilteredCGLIBProxyRealMethod</A>
<BR>
<A HREF="org/mockito/internal/matchers/Find.html" title="class in org.mockito.internal.matchers">Find</A>
<BR>
<A HREF="org/mockito/internal/debugging/FindingsListener.html" title="interface in org.mockito.internal.debugging"><I>FindingsListener</I></A>
<BR>
<A HREF="org/mockito/internal/runners/util/FrameworkUsageValidator.html" title="class in org.mockito.internal.runners.util">FrameworkUsageValidator</A>
<BR>
<A HREF="org/mockito/internal/util/reflection/GenericMaster.html" title="class in org.mockito.internal.util.reflection">GenericMaster</A>
<BR>
<A HREF="org/mockito/internal/configuration/GlobalConfiguration.html" title="class in org.mockito.internal.configuration">GlobalConfiguration</A>
<BR>
<A HREF="org/mockito/internal/stubbing/defaultanswers/GloballyConfiguredAnswer.html" title="class in org.mockito.internal.stubbing.defaultanswers">GloballyConfiguredAnswer</A>
<BR>
<A HREF="org/mockito/internal/matchers/GreaterOrEqual.html" title="class in org.mockito.internal.matchers">GreaterOrEqual</A>
<BR>
<A HREF="org/mockito/internal/matchers/GreaterThan.html" title="class in org.mockito.internal.matchers">GreaterThan</A>
<BR>
<A HREF="org/mockito/internal/progress/HandyReturnValues.html" title="class in org.mockito.internal.progress">HandyReturnValues</A>
<BR>
<A HREF="org/mockito/internal/invocation/realmethod/HasCGLIBMethodProxy.html" title="interface in org.mockito.internal.invocation.realmethod"><I>HasCGLIBMethodProxy</I></A>
<BR>
<A HREF="org/mockito/internal/util/IdentitySet.html" title="class in org.mockito.internal.util">IdentitySet</A>
<BR>
<A HREF="org/mockito/configuration/IMockitoConfiguration.html" title="interface in org.mockito.configuration"><I>IMockitoConfiguration</I></A>
<BR>
<A HREF="org/mockito/internal/configuration/InjectingAnnotationEngine.html" title="class in org.mockito.internal.configuration">InjectingAnnotationEngine</A>
<BR>
<A HREF="org/mockito/InjectMocks.html" title="annotation in org.mockito">InjectMocks</A>
<BR>
<A HREF="org/mockito/InOrder.html" title="interface in org.mockito"><I>InOrder</I></A>
<BR>
<A HREF="org/mockito/internal/verification/api/InOrderContext.html" title="interface in org.mockito.internal.verification.api"><I>InOrderContext</I></A>
<BR>
<A HREF="org/mockito/internal/verification/InOrderContextImpl.html" title="class in org.mockito.internal.verification">InOrderContextImpl</A>
<BR>
<A HREF="org/mockito/internal/InOrderImpl.html" title="class in org.mockito.internal">InOrderImpl</A>
<BR>
<A HREF="org/mockito/internal/verification/InOrderWrapper.html" title="class in org.mockito.internal.verification">InOrderWrapper</A>
<BR>
<A HREF="org/mockito/internal/matchers/InstanceOf.html" title="class in org.mockito.internal.matchers">InstanceOf</A>
<BR>
<A HREF="org/mockito/exceptions/misusing/InvalidUseOfMatchersException.html" title="class in org.mockito.exceptions.misusing">InvalidUseOfMatchersException</A>
<BR>
<A HREF="org/mockito/internal/invocation/Invocation.html" title="class in org.mockito.internal.invocation">Invocation</A>
<BR>
<A HREF="org/mockito/internal/stubbing/InvocationContainer.html" title="interface in org.mockito.internal.stubbing"><I>InvocationContainer</I></A>
<BR>
<A HREF="org/mockito/internal/stubbing/InvocationContainerImpl.html" title="class in org.mockito.internal.stubbing">InvocationContainerImpl</A>
<BR>
<A HREF="org/mockito/internal/invocation/InvocationMarker.html" title="class in org.mockito.internal.invocation">InvocationMarker</A>
<BR>
<A HREF="org/mockito/internal/invocation/InvocationMatcher.html" title="class in org.mockito.internal.invocation">InvocationMatcher</A>
<BR>
<A HREF="org/mockito/invocation/InvocationOnMock.html" title="interface in org.mockito.invocation"><I>InvocationOnMock</I></A>
<BR>
<A HREF="org/mockito/internal/invocation/InvocationsFinder.html" title="class in org.mockito.internal.invocation">InvocationsFinder</A>
<BR>
<A HREF="org/mockito/internal/progress/IOngoingStubbing.html" title="interface in org.mockito.internal.progress"><I>IOngoingStubbing</I></A>
<BR>
<A HREF="org/mockito/internal/runners/JUnit44RunnerImpl.html" title="class in org.mockito.internal.runners">JUnit44RunnerImpl</A>
<BR>
<A HREF="org/mockito/internal/runners/JUnit45AndHigherRunnerImpl.html" title="class in org.mockito.internal.runners">JUnit45AndHigherRunnerImpl</A>
<BR>
<A HREF="org/mockito/internal/util/junit/JUnitFailureHacker.html" title="class in org.mockito.internal.util.junit">JUnitFailureHacker</A>
<BR>
<A HREF="org/mockito/exceptions/verification/junit/JUnitTool.html" title="class in org.mockito.exceptions.verification.junit">JUnitTool</A>
<BR>
<A HREF="org/mockito/internal/util/reflection/LenientCopyTool.html" title="class in org.mockito.internal.util.reflection">LenientCopyTool</A>
<BR>
<A HREF="org/mockito/internal/matchers/LessOrEqual.html" title="class in org.mockito.internal.matchers">LessOrEqual</A>
<BR>
<A HREF="org/mockito/internal/matchers/LessThan.html" title="class in org.mockito.internal.matchers">LessThan</A>
<BR>
<A HREF="org/mockito/internal/util/ListUtil.html" title="class in org.mockito.internal.util">ListUtil</A>
<BR>
<A HREF="org/mockito/internal/util/ListUtil.Filter.html" title="interface in org.mockito.internal.util"><I>ListUtil.Filter</I></A>
<BR>
<A HREF="org/mockito/internal/debugging/Localized.html" title="class in org.mockito.internal.debugging">Localized</A>
<BR>
<A HREF="org/mockito/internal/matchers/LocalizedMatcher.html" title="class in org.mockito.internal.matchers">LocalizedMatcher</A>
<BR>
<A HREF="org/mockito/internal/debugging/Location.html" title="class in org.mockito.internal.debugging">Location</A>
<BR>
<A HREF="org/mockito/internal/debugging/LoggingListener.html" title="class in org.mockito.internal.debugging">LoggingListener</A>
<BR>
<A HREF="org/mockito/internal/matchers/MatcherDecorator.html" title="interface in org.mockito.internal.matchers"><I>MatcherDecorator</I></A>
<BR>
<A HREF="org/mockito/Matchers.html" title="class in org.mockito">Matchers</A>
<BR>
<A HREF="org/mockito/internal/invocation/MatchersBinder.html" title="class in org.mockito.internal.invocation">MatchersBinder</A>
<BR>
<A HREF="org/mockito/internal/matchers/MatchersPrinter.html" title="class in org.mockito.internal.matchers">MatchersPrinter</A>
<BR>
<A HREF="org/mockito/internal/matchers/Matches.html" title="class in org.mockito.internal.matchers">Matches</A>
<BR>
<A HREF="org/mockito/internal/creation/MethodInterceptorFilter.html" title="class in org.mockito.internal.creation">MethodInterceptorFilter</A>
<BR>
<A HREF="org/mockito/internal/verification/checkers/MissingInvocationChecker.html" title="class in org.mockito.internal.verification.checkers">MissingInvocationChecker</A>
<BR>
<A HREF="org/mockito/internal/verification/checkers/MissingInvocationInOrderChecker.html" title="class in org.mockito.internal.verification.checkers">MissingInvocationInOrderChecker</A>
<BR>
<A HREF="org/mockito/exceptions/misusing/MissingMethodInvocationException.html" title="class in org.mockito.exceptions.misusing">MissingMethodInvocationException</A>
<BR>
<A HREF="org/mockito/Mock.html" title="annotation in org.mockito">Mock</A>
<BR>
<A HREF="org/mockito/internal/verification/MockAwareVerificationMode.html" title="class in org.mockito.internal.verification">MockAwareVerificationMode</A>
<BR>
<A HREF="org/mockito/internal/util/MockCreationValidator.html" title="class in org.mockito.internal.util">MockCreationValidator</A>
<BR>
<A HREF="org/mockito/internal/MockHandler.html" title="class in org.mockito.internal">MockHandler</A>
<BR>
<A HREF="org/mockito/internal/MockHandlerInterface.html" title="interface in org.mockito.internal"><I>MockHandlerInterface</I></A>
<BR>
<A HREF="org/mockito/internal/progress/MockingProgress.html" title="interface in org.mockito.internal.progress"><I>MockingProgress</I></A>
<BR>
<A HREF="org/mockito/internal/progress/MockingProgressImpl.html" title="class in org.mockito.internal.progress">MockingProgressImpl</A>
<BR>
<A HREF="org/mockito/internal/listeners/MockingProgressListener.html" title="interface in org.mockito.internal.listeners"><I>MockingProgressListener</I></A>
<BR>
<A HREF="org/mockito/internal/listeners/MockingStartedListener.html" title="interface in org.mockito.internal.listeners"><I>MockingStartedListener</I></A>
<BR>
<A HREF="org/mockito/Mockito.html" title="class in org.mockito">Mockito</A>
<BR>
<A HREF="org/mockito/MockitoAnnotations.html" title="class in org.mockito">MockitoAnnotations</A>
<BR>
<A HREF="org/mockito/MockitoAnnotations.Mock.html" title="annotation in org.mockito">MockitoAnnotations.Mock</A>
<BR>
<A HREF="org/mockito/exceptions/base/MockitoAssertionError.html" title="class in org.mockito.exceptions.base">MockitoAssertionError</A>
<BR>
<A HREF="org/mockito/exceptions/misusing/MockitoConfigurationException.html" title="class in org.mockito.exceptions.misusing">MockitoConfigurationException</A>
<BR>
<A HREF="org/mockito/internal/MockitoCore.html" title="class in org.mockito.internal">MockitoCore</A>
<BR>
<A HREF="org/mockito/MockitoDebugger.html" title="interface in org.mockito"><I>MockitoDebugger</I></A>
<BR>
<A HREF="org/mockito/internal/debugging/MockitoDebuggerImpl.html" title="class in org.mockito.internal.debugging">MockitoDebuggerImpl</A>
<BR>
<A HREF="org/mockito/exceptions/base/MockitoException.html" title="class in org.mockito.exceptions.base">MockitoException</A>
<BR>
<A HREF="org/mockito/internal/MockitoInvocationHandler.html" title="interface in org.mockito.internal"><I>MockitoInvocationHandler</I></A>
<BR>
<A HREF="org/mockito/runners/MockitoJUnit44Runner.html" title="class in org.mockito.runners">MockitoJUnit44Runner</A>
<BR>
<A HREF="org/mockito/runners/MockitoJUnitRunner.html" title="class in org.mockito.runners">MockitoJUnitRunner</A>
<BR>
<A HREF="org/mockito/internal/util/MockitoLogger.html" title="interface in org.mockito.internal.util"><I>MockitoLogger</I></A>
<BR>
<A HREF="org/mockito/internal/invocation/MockitoMethod.html" title="interface in org.mockito.internal.invocation"><I>MockitoMethod</I></A>
<BR>
<A HREF="org/mockito/internal/creation/MockitoMethodProxy.html" title="interface in org.mockito.internal.creation"><I>MockitoMethodProxy</I></A>
<BR>
<A HREF="org/mockito/internal/creation/cglib/MockitoNamingPolicy.html" title="class in org.mockito.internal.creation.cglib">MockitoNamingPolicy</A>
<BR>
<A HREF="org/mockito/internal/util/MockName.html" title="class in org.mockito.internal.util">MockName</A>
<BR>
<A HREF="org/mockito/MockSettings.html" title="interface in org.mockito"><I>MockSettings</I></A>
<BR>
<A HREF="org/mockito/internal/creation/MockSettingsImpl.html" title="class in org.mockito.internal.creation">MockSettingsImpl</A>
<BR>
<A HREF="org/mockito/internal/util/MockUtil.html" title="class in org.mockito.internal.util">MockUtil</A>
<BR>
<A HREF="org/mockito/exceptions/verification/NeverWantedButInvoked.html" title="class in org.mockito.exceptions.verification">NeverWantedButInvoked</A>
<BR>
<A HREF="org/mockito/exceptions/verification/NoInteractionsWanted.html" title="class in org.mockito.exceptions.verification">NoInteractionsWanted</A>
<BR>
<A HREF="org/mockito/internal/verification/NoMoreInteractions.html" title="class in org.mockito.internal.verification">NoMoreInteractions</A>
<BR>
<A HREF="org/mockito/internal/matchers/Not.html" title="class in org.mockito.internal.matchers">Not</A>
<BR>
<A HREF="org/mockito/exceptions/misusing/NotAMockException.html" title="class in org.mockito.exceptions.misusing">NotAMockException</A>
<BR>
<A HREF="org/mockito/internal/matchers/NotNull.html" title="class in org.mockito.internal.matchers">NotNull</A>
<BR>
<A HREF="org/mockito/internal/matchers/Null.html" title="class in org.mockito.internal.matchers">Null</A>
<BR>
<A HREF="org/mockito/exceptions/misusing/NullInsteadOfMockException.html" title="class in org.mockito.exceptions.misusing">NullInsteadOfMockException</A>
<BR>
<A HREF="org/mockito/internal/verification/checkers/NumberOfInvocationsChecker.html" title="class in org.mockito.internal.verification.checkers">NumberOfInvocationsChecker</A>
<BR>
<A HREF="org/mockito/internal/verification/checkers/NumberOfInvocationsInOrderChecker.html" title="class in org.mockito.internal.verification.checkers">NumberOfInvocationsInOrderChecker</A>
<BR>
<A HREF="org/mockito/internal/util/ObjectMethodsGuru.html" title="class in org.mockito.internal.util">ObjectMethodsGuru</A>
<BR>
<A HREF="org/mockito/stubbing/OngoingStubbing.html" title="interface in org.mockito.stubbing"><I>OngoingStubbing</I></A>
<BR>
<A HREF="org/mockito/internal/stubbing/OngoingStubbingImpl.html" title="class in org.mockito.internal.stubbing">OngoingStubbingImpl</A>
<BR>
<A HREF="org/mockito/internal/verification/Only.html" title="class in org.mockito.internal.verification">Only</A>
<BR>
<A HREF="org/mockito/internal/matchers/Or.html" title="class in org.mockito.internal.matchers">Or</A>
<BR>
<A HREF="org/mockito/exceptions/Pluralizer.html" title="class in org.mockito.exceptions">Pluralizer</A>
<BR>
<A HREF="org/mockito/internal/util/Primitives.html" title="class in org.mockito.internal.util">Primitives</A>
<BR>
<A HREF="org/mockito/exceptions/PrintableInvocation.html" title="interface in org.mockito.exceptions"><I>PrintableInvocation</I></A>
<BR>
<A HREF="org/mockito/internal/reporting/PrintingFriendlyInvocation.html" title="interface in org.mockito.internal.reporting"><I>PrintingFriendlyInvocation</I></A>
<BR>
<A HREF="org/mockito/internal/reporting/PrintSettings.html" title="class in org.mockito.internal.reporting">PrintSettings</A>
<BR>
<A HREF="org/mockito/internal/invocation/realmethod/RealMethod.html" title="interface in org.mockito.internal.invocation.realmethod"><I>RealMethod</I></A>
<BR>
<A HREF="org/mockito/internal/matchers/apachecommons/ReflectionEquals.html" title="class in org.mockito.internal.matchers.apachecommons">ReflectionEquals</A>
<BR>
<A HREF="org/mockito/internal/verification/RegisteredInvocations.html" title="class in org.mockito.internal.verification">RegisteredInvocations</A>
<BR>
<A HREF="org/mockito/internal/util/RemoveFirstLine.html" title="class in org.mockito.internal.util">RemoveFirstLine</A>
<BR>
<A HREF="org/mockito/exceptions/Reporter.html" title="class in org.mockito.exceptions">Reporter</A>
<BR>
<A HREF="org/mockito/internal/stubbing/answers/Returns.html" title="class in org.mockito.internal.stubbing.answers">Returns</A>
<BR>
<A HREF="org/mockito/internal/stubbing/defaultanswers/ReturnsDeepStubs.html" title="class in org.mockito.internal.stubbing.defaultanswers">ReturnsDeepStubs</A>
<BR>
<A HREF="org/mockito/stubbing/answers/ReturnsElementsOf.html" title="class in org.mockito.stubbing.answers">ReturnsElementsOf</A>
<BR>
<A HREF="org/mockito/internal/stubbing/defaultanswers/ReturnsEmptyValues.html" title="class in org.mockito.internal.stubbing.defaultanswers">ReturnsEmptyValues</A>
<BR>
<A HREF="org/mockito/internal/stubbing/defaultanswers/ReturnsMocks.html" title="class in org.mockito.internal.stubbing.defaultanswers">ReturnsMocks</A>
<BR>
<A HREF="org/mockito/internal/stubbing/defaultanswers/ReturnsMoreEmptyValues.html" title="class in org.mockito.internal.stubbing.defaultanswers">ReturnsMoreEmptyValues</A>
<BR>
<A HREF="org/mockito/internal/stubbing/defaultanswers/ReturnsSmartNulls.html" title="class in org.mockito.internal.stubbing.defaultanswers">ReturnsSmartNulls</A>
<BR>
<A HREF="org/mockito/ReturnValues.html" title="interface in org.mockito"><I>ReturnValues</I></A>
<BR>
<A HREF="org/mockito/internal/runners/RunnerFactory.html" title="class in org.mockito.internal.runners">RunnerFactory</A>
<BR>
<A HREF="org/mockito/internal/runners/RunnerImpl.html" title="interface in org.mockito.internal.runners"><I>RunnerImpl</I></A>
<BR>
<A HREF="org/mockito/internal/runners/util/RunnerProvider.html" title="class in org.mockito.internal.runners.util">RunnerProvider</A>
<BR>
<A HREF="org/mockito/internal/matchers/Same.html" title="class in org.mockito.internal.matchers">Same</A>
<BR>
<A HREF="org/mockito/internal/exceptions/util/ScenarioPrinter.html" title="class in org.mockito.internal.exceptions.util">ScenarioPrinter</A>
<BR>
<A HREF="org/mockito/internal/creation/jmock/SearchingClassLoader.html" title="class in org.mockito.internal.creation.jmock">SearchingClassLoader</A>
<BR>
<A HREF="org/mockito/internal/progress/SequenceNumber.html" title="class in org.mockito.internal.progress">SequenceNumber</A>
<BR>
<A HREF="org/mockito/internal/invocation/SerializableMethod.html" title="class in org.mockito.internal.invocation">SerializableMethod</A>
<BR>
<A HREF="org/mockito/internal/creation/SerializableMockitoMethodProxy.html" title="class in org.mockito.internal.creation">SerializableMockitoMethodProxy</A>
<BR>
<A HREF="org/mockito/internal/creation/jmock/SerializableNoOp.html" title="class in org.mockito.internal.creation.jmock">SerializableNoOp</A>
<BR>
<A HREF="org/mockito/internal/util/SimpleMockitoLogger.html" title="class in org.mockito.internal.util">SimpleMockitoLogger</A>
<BR>
<A HREF="org/mockito/exceptions/verification/SmartNullPointerException.html" title="class in org.mockito.exceptions.verification">SmartNullPointerException</A>
<BR>
<A HREF="org/mockito/internal/reporting/SmartPrinter.html" title="class in org.mockito.internal.reporting">SmartPrinter</A>
<BR>
<A HREF="org/mockito/Spy.html" title="annotation in org.mockito">Spy</A>
<BR>
<A HREF="org/mockito/internal/configuration/SpyAnnotationEngine.html" title="class in org.mockito.internal.configuration">SpyAnnotationEngine</A>
<BR>
<A HREF="org/mockito/internal/exceptions/base/StackTraceFilter.html" title="class in org.mockito.internal.exceptions.base">StackTraceFilter</A>
<BR>
<A HREF="org/mockito/internal/matchers/StartsWith.html" title="class in org.mockito.internal.matchers">StartsWith</A>
<BR>
<A HREF="org/mockito/internal/util/StringJoiner.html" title="class in org.mockito.internal.util">StringJoiner</A>
<BR>
<A HREF="org/mockito/internal/stubbing/StubbedInvocationMatcher.html" title="class in org.mockito.internal.stubbing">StubbedInvocationMatcher</A>
<BR>
<A HREF="org/mockito/stubbing/Stubber.html" title="interface in org.mockito.stubbing"><I>Stubber</I></A>
<BR>
<A HREF="org/mockito/internal/stubbing/StubberImpl.html" title="class in org.mockito.internal.stubbing">StubberImpl</A>
<BR>
<A HREF="org/mockito/internal/invocation/StubInfo.html" title="class in org.mockito.internal.invocation">StubInfo</A>
<BR>
<A HREF="org/mockito/internal/runners/util/TestMethodsFinder.html" title="class in org.mockito.internal.runners.util">TestMethodsFinder</A>
<BR>
<A HREF="org/mockito/internal/progress/ThreadSafeMockingProgress.html" title="class in org.mockito.internal.progress">ThreadSafeMockingProgress</A>
<BR>
<A HREF="org/mockito/internal/stubbing/answers/ThrowsException.html" title="class in org.mockito.internal.stubbing.answers">ThrowsException</A>
<BR>
<A HREF="org/mockito/verification/Timeout.html" title="class in org.mockito.verification">Timeout</A>
<BR>
<A HREF="org/mockito/internal/verification/Times.html" title="class in org.mockito.internal.verification">Times</A>
<BR>
<A HREF="org/mockito/exceptions/verification/TooLittleActualInvocations.html" title="class in org.mockito.exceptions.verification">TooLittleActualInvocations</A>
<BR>
<A HREF="org/mockito/exceptions/verification/TooManyActualInvocations.html" title="class in org.mockito.exceptions.verification">TooManyActualInvocations</A>
<BR>
<A HREF="org/mockito/exceptions/misusing/UnfinishedStubbingException.html" title="class in org.mockito.exceptions.misusing">UnfinishedStubbingException</A>
<BR>
<A HREF="org/mockito/exceptions/misusing/UnfinishedVerificationException.html" title="class in org.mockito.exceptions.misusing">UnfinishedVerificationException</A>
<BR>
<A HREF="org/mockito/internal/invocation/UnusedStubsFinder.html" title="class in org.mockito.internal.invocation">UnusedStubsFinder</A>
<BR>
<A HREF="org/mockito/internal/matchers/VarargMatcher.html" title="interface in org.mockito.internal.matchers"><I>VarargMatcher</I></A>
<BR>
<A HREF="org/mockito/runners/VerboseMockitoJUnitRunner.html" title="class in org.mockito.runners">VerboseMockitoJUnitRunner</A>
<BR>
<A HREF="org/mockito/internal/exceptions/VerificationAwareInvocation.html" title="interface in org.mockito.internal.exceptions"><I>VerificationAwareInvocation</I></A>
<BR>
<A HREF="org/mockito/internal/verification/api/VerificationData.html" title="interface in org.mockito.internal.verification.api"><I>VerificationData</I></A>
<BR>
<A HREF="org/mockito/internal/verification/VerificationDataImpl.html" title="class in org.mockito.internal.verification">VerificationDataImpl</A>
<BR>
<A HREF="org/mockito/internal/verification/api/VerificationDataInOrder.html" title="interface in org.mockito.internal.verification.api"><I>VerificationDataInOrder</I></A>
<BR>
<A HREF="org/mockito/internal/verification/api/VerificationDataInOrderImpl.html" title="class in org.mockito.internal.verification.api">VerificationDataInOrderImpl</A>
<BR>
<A HREF="org/mockito/exceptions/verification/VerificationInOrderFailure.html" title="class in org.mockito.exceptions.verification">VerificationInOrderFailure</A>
<BR>
<A HREF="org/mockito/internal/verification/api/VerificationInOrderMode.html" title="interface in org.mockito.internal.verification.api"><I>VerificationInOrderMode</I></A>
<BR>
<A HREF="org/mockito/verification/VerificationMode.html" title="interface in org.mockito.verification"><I>VerificationMode</I></A>
<BR>
<A HREF="org/mockito/internal/verification/VerificationModeFactory.html" title="class in org.mockito.internal.verification">VerificationModeFactory</A>
<BR>
<A HREF="org/mockito/verification/VerificationWithTimeout.html" title="interface in org.mockito.verification"><I>VerificationWithTimeout</I></A>
<BR>
<A HREF="org/mockito/internal/verification/VerificationWithTimeoutImpl.html" title="class in org.mockito.internal.verification">VerificationWithTimeoutImpl</A>
<BR>
<A HREF="org/mockito/stubbing/VoidMethodStubbable.html" title="interface in org.mockito.stubbing"><I>VoidMethodStubbable</I></A>
<BR>
<A HREF="org/mockito/internal/stubbing/VoidMethodStubbableImpl.html" title="class in org.mockito.internal.stubbing">VoidMethodStubbableImpl</A>
<BR>
<A HREF="org/mockito/exceptions/verification/WantedButNotInvoked.html" title="class in org.mockito.exceptions.verification">WantedButNotInvoked</A>
<BR>
<A HREF="org/mockito/internal/debugging/WarningsCollector.html" title="class in org.mockito.internal.debugging">WarningsCollector</A>
<BR>
<A HREF="org/mockito/internal/debugging/WarningsFinder.html" title="class in org.mockito.internal.debugging">WarningsFinder</A>
<BR>
<A HREF="org/mockito/internal/debugging/WarningsPrinterImpl.html" title="class in org.mockito.internal.debugging">WarningsPrinterImpl</A>
<BR>
<A HREF="org/mockito/internal/util/reflection/Whitebox.html" title="class in org.mockito.internal.util.reflection">Whitebox</A>
<BR>
<A HREF="org/mockito/exceptions/misusing/WrongTypeOfReturnValue.html" title="class in org.mockito.exceptions.misusing">WrongTypeOfReturnValue</A>
<BR>
</FONT></TD>
</TR>
</TABLE>
</BODY>
</HTML>

View File

@ -1,142 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.5.0_22) on Mon May 24 23:03:20 CEST 2010 -->
<TITLE>
Constant Field Values (Mockito API)
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
<SCRIPT type="text/javascript">
function windowTitle()
{
parent.document.title="Constant Field Values (Mockito API)";
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>
</HEAD>
<BODY BGCOLOR="white" onload="windowTitle();">
<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Use</FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="index.html?constant-values.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="constant-values.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->
<HR>
<CENTER>
<H1>
Constant Field Values</H1>
</CENTER>
<HR SIZE="4" NOSHADE>
<B>Contents</B><UL>
</UL>
<HR>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Use</FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="index.html?constant-values.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="constant-values.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
</BODY>
</HTML>

View File

@ -1,316 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.5.0_22) on Mon May 24 23:03:27 CEST 2010 -->
<TITLE>
Deprecated List (Mockito API)
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
<SCRIPT type="text/javascript">
function windowTitle()
{
parent.document.title="Deprecated List (Mockito API)";
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>
</HEAD>
<BODY BGCOLOR="white" onload="windowTitle();">
<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Use</FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Deprecated</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="index.html?deprecated-list.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="deprecated-list.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->
<HR>
<CENTER>
<H2>
<B>Deprecated API</B></H2>
</CENTER>
<HR SIZE="4" NOSHADE>
<B>Contents</B><UL>
<LI><A HREF="#interface">Deprecated Interfaces</A>
<LI><A HREF="#class">Deprecated Classes</A>
<LI><A HREF="#enum">Deprecated Enums</A>
<LI><A HREF="#annotation_type">Deprecated Annotation Types</A>
<LI><A HREF="#method">Deprecated Methods</A>
<LI><A HREF="#constructor">Deprecated Constructors</A>
</UL>
<A NAME="interface"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Deprecated Interfaces</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><A HREF="org/mockito/ReturnValues.html" title="interface in org.mockito">org.mockito.ReturnValues</A>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I><b>Instead, please use <A HREF="org/mockito/stubbing/Answer.html" title="interface in org.mockito.stubbing"><CODE>Answer</CODE></A> interface</b>
<p>
In rare cases your code might not compile with recent deprecation & changes.
Very sorry for inconvenience but it had to be done in order to keep framework consistent.
<p>
Why it is deprecated? ReturnValues is being replaced by Answer
for better consistency & interoperability of the framework.
Answer interface has been in Mockito for a while and it has the same responsibility as ReturnValues.
There's no point in mainting exactly the same interfaces.
<p>
Configures return values for an unstubbed invocation
<p>
Can be used in <A HREF="org/mockito/Mockito.html#mock(java.lang.Class, org.mockito.ReturnValues)"><CODE>Mockito.mock(Class, ReturnValues)</CODE></A></I>&nbsp;</TD>
</TR>
</TABLE>
&nbsp;
<P>
<A NAME="class"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Deprecated Classes</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><A HREF="org/mockito/runners/MockitoJUnit44Runner.html" title="class in org.mockito.runners">org.mockito.runners.MockitoJUnit44Runner</A>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
</TABLE>
&nbsp;
<P>
<A NAME="enum"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Deprecated Enums</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><A HREF="org/mockito/internal/stubbing/defaultanswers/Answers.html" title="enum in org.mockito.internal.stubbing.defaultanswers">org.mockito.internal.stubbing.defaultanswers.Answers</A>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>- please use Answers from top Mockito package: <A HREF="org/mockito/Answers.html" title="enum in org.mockito"><CODE>Answers</CODE></A>
<p>
<b>WARNING</b> Those answers no longer are used by the framework!!! Please use <A HREF="org/mockito/Answers.html" title="enum in org.mockito"><CODE>Answers</CODE></A>
<p>
See <A HREF="org/mockito/Mockito.html" title="class in org.mockito"><CODE>Mockito</CODE></A> for more information.</I>&nbsp;</TD>
</TR>
</TABLE>
&nbsp;
<P>
<A NAME="annotation_type"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Deprecated Annotation Types</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><A HREF="org/mockito/MockitoAnnotations.Mock.html" title="annotation in org.mockito">org.mockito.MockitoAnnotations.Mock</A>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
</TABLE>
&nbsp;
<P>
<A NAME="method"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Deprecated Methods</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><A HREF="org/mockito/configuration/AnnotationEngine.html#createMockFor(java.lang.annotation.Annotation, java.lang.reflect.Field)">org.mockito.configuration.AnnotationEngine.createMockFor(Annotation, Field)</A>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>Please use AnnotationProcessor 'execute' method instead that is more robust
<p>
Creates mock, ArgumentCaptor or wraps field instance in spy object.
Only if of correct annotation type.</I>&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><A HREF="org/mockito/configuration/IMockitoConfiguration.html#getReturnValues()">org.mockito.configuration.IMockitoConfiguration.getReturnValues()</A>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I><b>Please use <A HREF="org/mockito/configuration/IMockitoConfiguration.html#getDefaultAnswer()"><CODE>IMockitoConfiguration.getDefaultAnswer()</CODE></A></b>
<p>
Steps:
<p>
1. Leave the implementation of getReturnValues() method empty - it's not going to be used anyway.
<p>
2. Implement getDefaultAnswer() instead.
<p>
In rare cases your code might not compile with recent deprecation & changes.
Very sorry for inconvenience but it had to be done in order to keep framework consistent.
<p>
See javadoc <A HREF="org/mockito/ReturnValues.html" title="interface in org.mockito"><CODE>ReturnValues</CODE></A> for info why this method was deprecated
<p>
Allows configuring the default return values of unstubbed invocations
<p>
See javadoc for <A HREF="org/mockito/configuration/IMockitoConfiguration.html" title="interface in org.mockito.configuration"><CODE>IMockitoConfiguration</CODE></A></I>&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><A HREF="org/mockito/configuration/DefaultMockitoConfiguration.html#getReturnValues()">org.mockito.configuration.DefaultMockitoConfiguration.getReturnValues()</A>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><A HREF="org/mockito/Mockito.html#mock(java.lang.Class, org.mockito.ReturnValues)">org.mockito.Mockito.mock(Class<T>, ReturnValues)</A>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I><b>Please use mock(Foo.class, defaultAnswer);</b>
<p>
See <A HREF="org/mockito/Mockito.html#mock(java.lang.Class, org.mockito.stubbing.Answer)"><CODE>Mockito.mock(Class, Answer)</CODE></A>
<p>
Why it is deprecated? ReturnValues is being replaced by Answer
for better consistency & interoperability of the framework.
Answer interface has been in Mockito for a while and it has the same responsibility as ReturnValues.
There's no point in mainting exactly the same interfaces.
<p>
Creates mock with a specified strategy for its return values.
It's quite advanced feature and typically you don't need it to write decent tests.
However it can be helpful when working with legacy systems.
<p>
Obviously return values are used only when you don't stub the method call.
<pre>
Foo mock = mock(Foo.class, Mockito.RETURNS_SMART_NULLS);
Foo mockTwo = mock(Foo.class, new YourOwnReturnValues());
</pre>
<p>See examples in javadoc for <A HREF="org/mockito/Mockito.html" title="class in org.mockito"><CODE>Mockito</CODE></A> class</p></I>&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><A HREF="org/mockito/Mockito.html#stubVoid(T)">org.mockito.Mockito.stubVoid(T)</A>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>Use <A HREF="org/mockito/Mockito.html#doThrow(java.lang.Throwable)"><CODE>Mockito.doThrow(Throwable)</CODE></A> method for stubbing voids</I>&nbsp;</TD>
</TR>
</TABLE>
&nbsp;
<P>
<A NAME="constructor"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Deprecated Constructors</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><A HREF="org/mockito/ArgumentCaptor.html#ArgumentCaptor()">org.mockito.ArgumentCaptor()</A>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I><b>Please use factory method <A HREF="org/mockito/ArgumentCaptor.html#forClass(java.lang.Class)"><CODE>ArgumentCaptor.forClass(Class)</CODE></A> to create captors</b>
<p>
This is required to avoid NullPointerExceptions when autoUnboxing primitive types.
See issue 99.
<p>
Example:
<pre>
ArgumentCaptor&lt;Person&gt; argument = ArgumentCaptor.forClass(Person.class);
verify(mock).doSomething(argument.capture());
assertEquals("John", argument.getValue().getName());
</pre></I>&nbsp;</TD>
</TR>
</TABLE>
&nbsp;
<P>
<HR>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Use</FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Deprecated</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="index.html?deprecated-list.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="deprecated-list.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
</BODY>
</HTML>

View File

@ -1,219 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.5.0_22) on Mon May 24 23:03:27 CEST 2010 -->
<TITLE>
API Help (Mockito API)
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
<SCRIPT type="text/javascript">
function windowTitle()
{
parent.document.title="API Help (Mockito API)";
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>
</HEAD>
<BODY BGCOLOR="white" onload="windowTitle();">
<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Use</FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Help</B></FONT>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="index.html?help-doc.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="help-doc.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->
<HR>
<CENTER>
<H1>
How This API Document Is Organized</H1>
</CENTER>
This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.<H3>
Overview</H3>
<BLOCKQUOTE>
<P>
The <A HREF="overview-summary.html">Overview</A> page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.</BLOCKQUOTE>
<H3>
Package</H3>
<BLOCKQUOTE>
<P>
Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain four categories:<UL>
<LI>Interfaces (italic)<LI>Classes<LI>Enums<LI>Exceptions<LI>Errors<LI>Annotation Types</UL>
</BLOCKQUOTE>
<H3>
Class/Interface</H3>
<BLOCKQUOTE>
<P>
Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:<UL>
<LI>Class inheritance diagram<LI>Direct Subclasses<LI>All Known Subinterfaces<LI>All Known Implementing Classes<LI>Class/interface declaration<LI>Class/interface description
<P>
<LI>Nested Class Summary<LI>Field Summary<LI>Constructor Summary<LI>Method Summary
<P>
<LI>Field Detail<LI>Constructor Detail<LI>Method Detail</UL>
Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.</BLOCKQUOTE>
</BLOCKQUOTE>
<H3>
Annotation Type</H3>
<BLOCKQUOTE>
<P>
Each annotation type has its own separate page with the following sections:<UL>
<LI>Annotation Type declaration<LI>Annotation Type description<LI>Required Element Summary<LI>Optional Element Summary<LI>Element Detail</UL>
</BLOCKQUOTE>
</BLOCKQUOTE>
<H3>
Enum</H3>
<BLOCKQUOTE>
<P>
Each enum has its own separate page with the following sections:<UL>
<LI>Enum declaration<LI>Enum description<LI>Enum Constant Summary<LI>Enum Constant Detail</UL>
</BLOCKQUOTE>
<H3>
Use</H3>
<BLOCKQUOTE>
Each documented package, class and interface has its own Use page. This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its Use page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the "Use" link in the navigation bar.</BLOCKQUOTE>
<H3>
Tree (Class Hierarchy)</H3>
<BLOCKQUOTE>
There is a <A HREF="overview-tree.html">Class Hierarchy</A> page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with <code>java.lang.Object</code>. The interfaces do not inherit from <code>java.lang.Object</code>.<UL>
<LI>When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.<LI>When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.</UL>
</BLOCKQUOTE>
<H3>
Deprecated API</H3>
<BLOCKQUOTE>
The <A HREF="deprecated-list.html">Deprecated API</A> page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.</BLOCKQUOTE>
<H3>
Index</H3>
<BLOCKQUOTE>
The <A HREF="index-all.html">Index</A> contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.</BLOCKQUOTE>
<H3>
Prev/Next</H3>
These links take you to the next or previous class, interface, package, or related page.<H3>
Frames/No Frames</H3>
These links show and hide the HTML frames. All pages are available with or without frames.
<P>
<H3>
Serialized Form</H3>
Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description.
<P>
<H3>
Constant Field Values</H3>
The <a href="constant-values.html">Constant Field Values</a> page lists the static final fields and their values.
<P>
<FONT SIZE="-1">
<EM>
This help file applies to API documentation generated using the standard doclet.</EM>
</FONT>
<BR>
<HR>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Use</FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Help</B></FONT>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="index.html?help-doc.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="help-doc.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
</BODY>
</HTML>

File diff suppressed because one or more lines are too long

View File

@ -1,39 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc on Mon May 24 23:03:27 CEST 2010-->
<TITLE>
Mockito API
</TITLE>
<SCRIPT type="text/javascript">
targetPage = "" + window.location.search;
if (targetPage != "" && targetPage != "undefined")
targetPage = targetPage.substring(1);
if (targetPage.indexOf(":") != -1)
targetPage = "undefined";
function loadFrames() {
if (targetPage != "" && targetPage != "undefined")
top.classFrame.location = top.targetPage;
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>
</HEAD>
<FRAMESET cols="20%,80%" title="" onLoad="top.loadFrames()">
<FRAMESET rows="30%,70%" title="" onLoad="top.loadFrames()">
<FRAME src="overview-frame.html" name="packageListFrame" title="All Packages">
<FRAME src="allclasses-frame.html" name="packageFrame" title="All classes and interfaces (except non-static nested types)">
</FRAMESET>
<FRAME src="overview-summary.html" name="classFrame" title="Package, class and interface descriptions" scrolling="yes">
<NOFRAMES>
<H2>
Frame Alert</H2>
<P>
This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
<BR>
Link to<A HREF="overview-summary.html">Non-frame version.</A>
</NOFRAMES>
</FRAMESET>
</HTML>

File diff suppressed because it is too large Load Diff

View File

@ -1,397 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.5.0_22) on Mon May 24 23:03:13 CEST 2010 -->
<TITLE>
Answers (Mockito API)
</TITLE>
<META NAME="keywords" CONTENT="org.mockito.Answers class">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../stylesheet.css" TITLE="Style">
<SCRIPT type="text/javascript">
function windowTitle()
{
parent.document.title="Answers (Mockito API)";
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>
</HEAD>
<BODY BGCOLOR="white" onload="windowTitle();">
<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/Answers.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../org/mockito/AdditionalMatchers.html" title="class in org.mockito"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../org/mockito/ArgumentCaptor.html" title="class in org.mockito"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../index.html?org/mockito/Answers.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="Answers.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#enum_constant_summary">ENUM CONSTANTS</A>&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#enum_constant_detail">ENUM CONSTANTS</A>&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->
<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
org.mockito</FONT>
<BR>
Enum Answers</H2>
<PRE>
java.lang.Object
<IMG SRC="../../resources/inherit.gif" ALT="extended by ">java.lang.Enum&lt;<A HREF="../../org/mockito/Answers.html" title="enum in org.mockito">Answers</A>&gt;
<IMG SRC="../../resources/inherit.gif" ALT="extended by "><B>org.mockito.Answers</B>
</PRE>
<DL>
<DT><B>All Implemented Interfaces:</B> <DD>java.io.Serializable, java.lang.Comparable&lt;<A HREF="../../org/mockito/Answers.html" title="enum in org.mockito">Answers</A>&gt;</DD>
</DL>
<HR>
<DL>
<DT><PRE>public enum <B>Answers</B><DT>extends java.lang.Enum&lt;<A HREF="../../org/mockito/Answers.html" title="enum in org.mockito">Answers</A>&gt;</DL>
</PRE>
<P>
Enumeration of pre-configured mock answers
<p>
You can use it to pass extra parameters to &#064;Mock annotation, see more info here: <A HREF="../../org/mockito/Mock.html" title="annotation in org.mockito"><CODE>Mock</CODE></A>
<p>
Example:
<pre>
&#064;Mock(answer = RETURNS_DEEP_STUBS) UserProvider userProvider;
</pre>
<b>This is not the full list</b> of Answers available in Mockito. Some interesting answers can be found in org.mockito.stubbing.answers package.
<P>
<P>
<HR>
<P>
<!-- =========== ENUM CONSTANT SUMMARY =========== -->
<A NAME="enum_constant_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Enum Constant Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../org/mockito/Answers.html#CALLS_REAL_METHODS">CALLS_REAL_METHODS</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../org/mockito/Answers.html#RETURNS_DEEP_STUBS">RETURNS_DEEP_STUBS</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../org/mockito/Answers.html#RETURNS_DEFAULTS">RETURNS_DEFAULTS</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../org/mockito/Answers.html#RETURNS_MOCKS">RETURNS_MOCKS</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../org/mockito/Answers.html#RETURNS_SMART_NULLS">RETURNS_SMART_NULLS</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
</TABLE>
&nbsp;
<!-- ========== METHOD SUMMARY =========== -->
<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Method Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../org/mockito/stubbing/Answer.html" title="interface in org.mockito.stubbing">Answer</A>&lt;java.lang.Object&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/Answers.html#get()">get</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../org/mockito/Answers.html" title="enum in org.mockito">Answers</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/Answers.html#valueOf(java.lang.String)">valueOf</A></B>(java.lang.String&nbsp;name)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the enum constant of this type with the specified name.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../org/mockito/Answers.html" title="enum in org.mockito">Answers</A>[]</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/Answers.html#values()">values</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns an array containing the constants of this enum type, in
the order they're declared.</TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Enum"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class java.lang.Enum</B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>clone, compareTo, equals, getDeclaringClass, hashCode, name, ordinal, toString, valueOf</CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class java.lang.Object</B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>finalize, getClass, notify, notifyAll, wait, wait, wait</CODE></TD>
</TR>
</TABLE>
&nbsp;
<P>
<!-- ============ ENUM CONSTANT DETAIL =========== -->
<A NAME="enum_constant_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Enum Constant Detail</B></FONT></TH>
</TR>
</TABLE>
<A NAME="RETURNS_DEFAULTS"><!-- --></A><H3>
RETURNS_DEFAULTS</H3>
<PRE>
public static final <A HREF="../../org/mockito/Answers.html" title="enum in org.mockito">Answers</A> <B>RETURNS_DEFAULTS</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>
<A NAME="RETURNS_SMART_NULLS"><!-- --></A><H3>
RETURNS_SMART_NULLS</H3>
<PRE>
public static final <A HREF="../../org/mockito/Answers.html" title="enum in org.mockito">Answers</A> <B>RETURNS_SMART_NULLS</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>
<A NAME="RETURNS_MOCKS"><!-- --></A><H3>
RETURNS_MOCKS</H3>
<PRE>
public static final <A HREF="../../org/mockito/Answers.html" title="enum in org.mockito">Answers</A> <B>RETURNS_MOCKS</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>
<A NAME="RETURNS_DEEP_STUBS"><!-- --></A><H3>
RETURNS_DEEP_STUBS</H3>
<PRE>
public static final <A HREF="../../org/mockito/Answers.html" title="enum in org.mockito">Answers</A> <B>RETURNS_DEEP_STUBS</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>
<A NAME="CALLS_REAL_METHODS"><!-- --></A><H3>
CALLS_REAL_METHODS</H3>
<PRE>
public static final <A HREF="../../org/mockito/Answers.html" title="enum in org.mockito">Answers</A> <B>CALLS_REAL_METHODS</B></PRE>
<DL>
<DL>
</DL>
</DL>
<!-- ============ METHOD DETAIL ========== -->
<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Method Detail</B></FONT></TH>
</TR>
</TABLE>
<A NAME="values()"><!-- --></A><H3>
values</H3>
<PRE>
public static final <A HREF="../../org/mockito/Answers.html" title="enum in org.mockito">Answers</A>[] <B>values</B>()</PRE>
<DL>
<DD>Returns an array containing the constants of this enum type, in
the order they're declared. This method may be used to iterate
over the constants as follows:
<pre>
for(Answers c : Answers.values())
System.out.println(c);
</pre>
<P>
<DD><DL>
<DT><B>Returns:</B><DD>an array containing the constants of this enum type, in
the order they're declared</DL>
</DD>
</DL>
<HR>
<A NAME="valueOf(java.lang.String)"><!-- --></A><H3>
valueOf</H3>
<PRE>
public static <A HREF="../../org/mockito/Answers.html" title="enum in org.mockito">Answers</A> <B>valueOf</B>(java.lang.String&nbsp;name)</PRE>
<DL>
<DD>Returns the enum constant of this type with the specified name.
The string must match <I>exactly</I> an identifier used to declare an
enum constant in this type. (Extraneous whitespace characters are
not permitted.)
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>name</CODE> - the name of the enum constant to be returned.
<DT><B>Returns:</B><DD>the enum constant with the specified name
<DT><B>Throws:</B>
<DD><CODE>java.lang.IllegalArgumentException</CODE> - if this enum type has no constant
with the specified name</DL>
</DD>
</DL>
<HR>
<A NAME="get()"><!-- --></A><H3>
get</H3>
<PRE>
public <A HREF="../../org/mockito/stubbing/Answer.html" title="interface in org.mockito.stubbing">Answer</A>&lt;java.lang.Object&gt; <B>get</B>()</PRE>
<DL>
<DD><DL>
</DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/Answers.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../org/mockito/AdditionalMatchers.html" title="class in org.mockito"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../org/mockito/ArgumentCaptor.html" title="class in org.mockito"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../index.html?org/mockito/Answers.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="Answers.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#enum_constant_summary">ENUM CONSTANTS</A>&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#enum_constant_detail">ENUM CONSTANTS</A>&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
</BODY>
</HTML>

View File

@ -1,397 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.5.0_22) on Mon May 24 23:03:13 CEST 2010 -->
<TITLE>
ArgumentCaptor (Mockito API)
</TITLE>
<META NAME="keywords" CONTENT="org.mockito.ArgumentCaptor class">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../stylesheet.css" TITLE="Style">
<SCRIPT type="text/javascript">
function windowTitle()
{
parent.document.title="ArgumentCaptor (Mockito API)";
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>
</HEAD>
<BODY BGCOLOR="white" onload="windowTitle();">
<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/ArgumentCaptor.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../org/mockito/Answers.html" title="enum in org.mockito"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../org/mockito/ArgumentMatcher.html" title="class in org.mockito"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../index.html?org/mockito/ArgumentCaptor.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="ArgumentCaptor.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->
<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
org.mockito</FONT>
<BR>
Class ArgumentCaptor&lt;T&gt;</H2>
<PRE>
java.lang.Object
<IMG SRC="../../resources/inherit.gif" ALT="extended by "><B>org.mockito.ArgumentCaptor&lt;T&gt;</B>
</PRE>
<HR>
<DL>
<DT><PRE>public class <B>ArgumentCaptor&lt;T&gt;</B><DT>extends java.lang.Object</DL>
</PRE>
<P>
Use it to capture argument values for further assertions.
<p>
Mockito verifies argument values in natural java style: by using an equals() method.
This is also the recommended way of matching arguments because it makes tests clean & simple.
In some situations though, it is helpful to assert on certain arguments after the actual verification.
For example:
<pre>
ArgumentCaptor&lt;Person&gt; argument = ArgumentCaptor.forClass(Person.class);
verify(mock).doSomething(argument.capture());
assertEquals("John", argument.getValue().getName());
</pre>
<p>
<b>Warning:</b> it is recommended to use ArgumentCaptor with verification <b>but not</b> with stubbing.
Using ArgumentCaptor with stubbing may decrease test readability because captor is created outside of assert (aka verify or 'then') block.
Also it may reduce defect localization because if stubbed method was not called then no argument is captured.
<p>
In a way ArgumentCaptor is related to custom argument matchers (see javadoc for <A HREF="../../org/mockito/ArgumentMatcher.html" title="class in org.mockito"><CODE>ArgumentMatcher</CODE></A> class).
Both techniques can be used for making sure certain arguments where passed to mocks.
However, ArgumentCaptor may be a better fit if:
<ul>
<li>custom argument matcher is not likely to be reused</li>
<li>you just need it to assert on argument values to complete verification</li>
</ul>
Custom argument matchers via <A HREF="../../org/mockito/ArgumentMatcher.html" title="class in org.mockito"><CODE>ArgumentMatcher</CODE></A> are usually better for stubbing.
<p>
There is an <b>annotation</b> that you might find useful: &#64;<A HREF="../../org/mockito/Captor.html" title="annotation in org.mockito"><CODE>Captor</CODE></A>
<p>
See the full documentation on Mockito in javadoc for <A HREF="../../org/mockito/Mockito.html" title="class in org.mockito"><CODE>Mockito</CODE></A> class.
<P>
<P>
<HR>
<P>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../org/mockito/ArgumentCaptor.html#ArgumentCaptor()">ArgumentCaptor</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I><b>Please use factory method <A HREF="../../org/mockito/ArgumentCaptor.html#forClass(java.lang.Class)"><CODE>forClass(Class)</CODE></A> to create captors</b>
<p>
This is required to avoid NullPointerExceptions when autoUnboxing primitive types.
See issue 99.
<p>
Example:
<pre>
ArgumentCaptor&lt;Person&gt; argument = ArgumentCaptor.forClass(Person.class);
verify(mock).doSomething(argument.capture());
assertEquals("John", argument.getValue().getName());
</pre></I></TD>
</TR>
</TABLE>
&nbsp;
<!-- ========== METHOD SUMMARY =========== -->
<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Method Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../org/mockito/ArgumentCaptor.html" title="type parameter in ArgumentCaptor">T</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/ArgumentCaptor.html#capture()">capture</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Use it to capture the argument.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY="">
<TR ALIGN="right" VALIGN="">
<TD NOWRAP><FONT SIZE="-1">
<CODE>&lt;T&gt; <A HREF="../../org/mockito/ArgumentCaptor.html" title="class in org.mockito">ArgumentCaptor</A>&lt;T&gt;</CODE></FONT></TD>
</TR>
</TABLE>
</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/ArgumentCaptor.html#forClass(java.lang.Class)">forClass</A></B>(java.lang.Class&lt;T&gt;&nbsp;clazz)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.util.List&lt;<A HREF="../../org/mockito/ArgumentCaptor.html" title="type parameter in ArgumentCaptor">T</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/ArgumentCaptor.html#getAllValues()">getAllValues</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns all captured values.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../org/mockito/ArgumentCaptor.html" title="type parameter in ArgumentCaptor">T</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/ArgumentCaptor.html#getValue()">getValue</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the captured value of the argument.</TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class java.lang.Object</B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
</TR>
</TABLE>
&nbsp;
<P>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Constructor Detail</B></FONT></TH>
</TR>
</TABLE>
<A NAME="ArgumentCaptor()"><!-- --></A><H3>
ArgumentCaptor</H3>
<PRE>
<FONT SIZE="-1">@Deprecated
</FONT>public <B>ArgumentCaptor</B>()</PRE>
<DL>
<DD><B>Deprecated.</B>&nbsp;<I><b>Please use factory method <A HREF="../../org/mockito/ArgumentCaptor.html#forClass(java.lang.Class)"><CODE>forClass(Class)</CODE></A> to create captors</b>
<p>
This is required to avoid NullPointerExceptions when autoUnboxing primitive types.
See issue 99.
<p>
Example:
<pre>
ArgumentCaptor&lt;Person&gt; argument = ArgumentCaptor.forClass(Person.class);
verify(mock).doSomething(argument.capture());
assertEquals("John", argument.getValue().getName());
</pre></I>
<P>
</DL>
<!-- ============ METHOD DETAIL ========== -->
<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Method Detail</B></FONT></TH>
</TR>
</TABLE>
<A NAME="capture()"><!-- --></A><H3>
capture</H3>
<PRE>
public <A HREF="../../org/mockito/ArgumentCaptor.html" title="type parameter in ArgumentCaptor">T</A> <B>capture</B>()</PRE>
<DL>
<DD>Use it to capture the argument. This method <b>must be used inside of verification</b>.
<p>
Internally, this method registers a special implementation of an <A HREF="../../org/mockito/ArgumentMatcher.html" title="class in org.mockito"><CODE>ArgumentMatcher</CODE></A>.
This argument matcher stores the argument value so that you can use it later to perform assertions.
<p>
See examples in javadoc for <A HREF="../../org/mockito/ArgumentCaptor.html" title="class in org.mockito"><CODE>ArgumentCaptor</CODE></A> class.
<P>
<DD><DL>
<DT><B>Returns:</B><DD>null</DL>
</DD>
</DL>
<HR>
<A NAME="getValue()"><!-- --></A><H3>
getValue</H3>
<PRE>
public <A HREF="../../org/mockito/ArgumentCaptor.html" title="type parameter in ArgumentCaptor">T</A> <B>getValue</B>()</PRE>
<DL>
<DD>Returns the captured value of the argument.
<p>
If the method was called multiple times then it returns the latest captured value
<p>
See examples in javadoc for <A HREF="../../org/mockito/ArgumentCaptor.html" title="class in org.mockito"><CODE>ArgumentCaptor</CODE></A> class.
<P>
<DD><DL>
<DT><B>Returns:</B><DD>captured argument value</DL>
</DD>
</DL>
<HR>
<A NAME="getAllValues()"><!-- --></A><H3>
getAllValues</H3>
<PRE>
public java.util.List&lt;<A HREF="../../org/mockito/ArgumentCaptor.html" title="type parameter in ArgumentCaptor">T</A>&gt; <B>getAllValues</B>()</PRE>
<DL>
<DD>Returns all captured values. Use it in case the verified method was called multiple times.
<p>
Example:
<pre>
ArgumentCaptor&lt;Person&gt; peopleCaptor = ArgumentCaptor.forClass(Person.class);
verify(mock, times(2)).doSomething(peopleCaptor.capture());
List&lt;Person&gt; capturedPeople = peopleCaptor.getAllValues();
assertEquals("John", capturedPeople.get(0).getName());
assertEquals("Jane", capturedPeople.get(1).getName());
</pre>
See more examples in javadoc for <A HREF="../../org/mockito/ArgumentCaptor.html" title="class in org.mockito"><CODE>ArgumentCaptor</CODE></A> class.
<P>
<DD><DL>
<DT><B>Returns:</B><DD>captured argument value</DL>
</DD>
</DL>
<HR>
<A NAME="forClass(java.lang.Class)"><!-- --></A><H3>
forClass</H3>
<PRE>
public static &lt;T&gt; <A HREF="../../org/mockito/ArgumentCaptor.html" title="class in org.mockito">ArgumentCaptor</A>&lt;T&gt; <B>forClass</B>(java.lang.Class&lt;T&gt;&nbsp;clazz)</PRE>
<DL>
<DD><DL>
</DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/ArgumentCaptor.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../org/mockito/Answers.html" title="enum in org.mockito"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../org/mockito/ArgumentMatcher.html" title="class in org.mockito"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../index.html?org/mockito/ArgumentCaptor.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="ArgumentCaptor.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
</BODY>
</HTML>

View File

@ -1,338 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.5.0_22) on Mon May 24 23:03:13 CEST 2010 -->
<TITLE>
ArgumentMatcher (Mockito API)
</TITLE>
<META NAME="keywords" CONTENT="org.mockito.ArgumentMatcher class">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../stylesheet.css" TITLE="Style">
<SCRIPT type="text/javascript">
function windowTitle()
{
parent.document.title="ArgumentMatcher (Mockito API)";
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>
</HEAD>
<BODY BGCOLOR="white" onload="windowTitle();">
<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/ArgumentMatcher.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../org/mockito/ArgumentCaptor.html" title="class in org.mockito"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../org/mockito/BDDMockito.html" title="class in org.mockito"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../index.html?org/mockito/ArgumentMatcher.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="ArgumentMatcher.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->
<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
org.mockito</FONT>
<BR>
Class ArgumentMatcher&lt;T&gt;</H2>
<PRE>
java.lang.Object
<IMG SRC="../../resources/inherit.gif" ALT="extended by ">org.hamcrest.BaseMatcher&lt;T&gt;
<IMG SRC="../../resources/inherit.gif" ALT="extended by "><B>org.mockito.ArgumentMatcher&lt;T&gt;</B>
</PRE>
<DL>
<DT><DT><B>Type Parameters:</B><DD><CODE>T</CODE> - type of argument</DL>
<DL>
<DT><B>All Implemented Interfaces:</B> <DD>org.hamcrest.Matcher&lt;T&gt;, org.hamcrest.SelfDescribing</DD>
</DL>
<DL>
<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../org/mockito/internal/matchers/And.html" title="class in org.mockito.internal.matchers">And</A>, <A HREF="../../org/mockito/internal/matchers/Any.html" title="class in org.mockito.internal.matchers">Any</A>, <A HREF="../../org/mockito/internal/matchers/AnyVararg.html" title="class in org.mockito.internal.matchers">AnyVararg</A>, <A HREF="../../org/mockito/internal/matchers/CapturingMatcher.html" title="class in org.mockito.internal.matchers">CapturingMatcher</A>, <A HREF="../../org/mockito/internal/matchers/CompareTo.html" title="class in org.mockito.internal.matchers">CompareTo</A>, <A HREF="../../org/mockito/internal/matchers/Contains.html" title="class in org.mockito.internal.matchers">Contains</A>, <A HREF="../../org/mockito/internal/matchers/EndsWith.html" title="class in org.mockito.internal.matchers">EndsWith</A>, <A HREF="../../org/mockito/internal/matchers/Equals.html" title="class in org.mockito.internal.matchers">Equals</A>, <A HREF="../../org/mockito/internal/matchers/EqualsWithDelta.html" title="class in org.mockito.internal.matchers">EqualsWithDelta</A>, <A HREF="../../org/mockito/internal/matchers/Find.html" title="class in org.mockito.internal.matchers">Find</A>, <A HREF="../../org/mockito/internal/matchers/InstanceOf.html" title="class in org.mockito.internal.matchers">InstanceOf</A>, <A HREF="../../org/mockito/internal/matchers/Matches.html" title="class in org.mockito.internal.matchers">Matches</A>, <A HREF="../../org/mockito/internal/matchers/Not.html" title="class in org.mockito.internal.matchers">Not</A>, <A HREF="../../org/mockito/internal/matchers/NotNull.html" title="class in org.mockito.internal.matchers">NotNull</A>, <A HREF="../../org/mockito/internal/matchers/Null.html" title="class in org.mockito.internal.matchers">Null</A>, <A HREF="../../org/mockito/internal/matchers/Or.html" title="class in org.mockito.internal.matchers">Or</A>, <A HREF="../../org/mockito/internal/matchers/apachecommons/ReflectionEquals.html" title="class in org.mockito.internal.matchers.apachecommons">ReflectionEquals</A>, <A HREF="../../org/mockito/internal/matchers/Same.html" title="class in org.mockito.internal.matchers">Same</A>, <A HREF="../../org/mockito/internal/matchers/StartsWith.html" title="class in org.mockito.internal.matchers">StartsWith</A></DD>
</DL>
<HR>
<DL>
<DT><PRE>public abstract class <B>ArgumentMatcher&lt;T&gt;</B><DT>extends org.hamcrest.BaseMatcher&lt;T&gt;</DL>
</PRE>
<P>
Allows creating customized argument matchers.
<p>
ArgumentMatcher is an hamcrest <CODE>Matcher</CODE> with predefined describeTo() method.
In case of failure, ArgumentMatcher generates description based on <b>decamelized class name</b> - to promote meaningful class names.
For example <b>StringWithStrongLanguage</b> matcher will generate 'String with strong language' description.
You can always override describeTo() method and provide detailed description.
<p>
Use <A HREF="../../org/mockito/Matchers.html#argThat(org.hamcrest.Matcher)"><CODE>Matchers.argThat(org.hamcrest.Matcher<T>)</CODE></A> method and pass an instance of hamcrest <CODE>Matcher</CODE>, e.g:
<pre>
class IsListOfTwoElements extends ArgumentMatcher&lt;List&gt; {
public boolean matches(Object list) {
return ((List) list).size() == 2;
}
}
List mock = mock(List.class);
when(mock.addAll(argThat(new IsListOfTwoElements()))).thenReturn(true);
mock.addAll(Arrays.asList(&quot;one&quot;, &quot;two&quot;));
verify(mock).addAll(argThat(new IsListOfTwoElements()));
</pre>
To keep it readable you may want to extract method, e.g:
<pre>
verify(mock).addAll(<b>argThat(new IsListOfTwoElements())</b>);
//becomes
verify(mock).addAll(<b>listOfTwoElements()</b>);
</pre>
<b>Warning:</b> Be reasonable with using complicated argument matching, especially custom argument matchers, as it can make the test less readable.
Sometimes it's better to implement equals() for arguments that are passed to mocks
(Mockito naturally uses equals() for argument matching).
This can make the test cleaner.
<p>
Also, <b>sometimes <A HREF="../../org/mockito/ArgumentCaptor.html" title="class in org.mockito"><CODE>ArgumentCaptor</CODE></A> may be a better fit</b> than custom matcher.
For example, if custom argument matcher is not likely to be reused
or you just need it to assert on argument values to complete verification of behavior.
<p>
Read more about other matchers in javadoc for <A HREF="../../org/mockito/Matchers.html" title="class in org.mockito"><CODE>Matchers</CODE></A> class
<P>
<P>
<HR>
<P>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../org/mockito/ArgumentMatcher.html#ArgumentMatcher()">ArgumentMatcher</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
</TABLE>
&nbsp;
<!-- ========== METHOD SUMMARY =========== -->
<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Method Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/ArgumentMatcher.html#describeTo(org.hamcrest.Description)">describeTo</A></B>(org.hamcrest.Description&nbsp;description)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>abstract &nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/ArgumentMatcher.html#matches(java.lang.Object)">matches</A></B>(java.lang.Object&nbsp;argument)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns whether this matcher accepts the given argument.</TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_org.hamcrest.BaseMatcher"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class org.hamcrest.BaseMatcher</B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>_dont_implement_Matcher___instead_extend_BaseMatcher_, toString</CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class java.lang.Object</B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</CODE></TD>
</TR>
</TABLE>
&nbsp;
<P>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Constructor Detail</B></FONT></TH>
</TR>
</TABLE>
<A NAME="ArgumentMatcher()"><!-- --></A><H3>
ArgumentMatcher</H3>
<PRE>
public <B>ArgumentMatcher</B>()</PRE>
<DL>
</DL>
<!-- ============ METHOD DETAIL ========== -->
<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Method Detail</B></FONT></TH>
</TR>
</TABLE>
<A NAME="matches(java.lang.Object)"><!-- --></A><H3>
matches</H3>
<PRE>
public abstract boolean <B>matches</B>(java.lang.Object&nbsp;argument)</PRE>
<DL>
<DD>Returns whether this matcher accepts the given argument.
<p>
The method should <b>never</b> assert if the argument doesn't match. It
should only return false.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>argument</CODE> - the argument
<DT><B>Returns:</B><DD>whether this matcher accepts the given argument.</DL>
</DD>
</DL>
<HR>
<A NAME="describeTo(org.hamcrest.Description)"><!-- --></A><H3>
describeTo</H3>
<PRE>
public void <B>describeTo</B>(org.hamcrest.Description&nbsp;description)</PRE>
<DL>
<DD><DL>
</DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/ArgumentMatcher.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../org/mockito/ArgumentCaptor.html" title="class in org.mockito"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../org/mockito/BDDMockito.html" title="class in org.mockito"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../index.html?org/mockito/ArgumentMatcher.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="ArgumentMatcher.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
</BODY>
</HTML>

View File

@ -1,301 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.5.0_22) on Mon May 24 23:03:13 CEST 2010 -->
<TITLE>
BDDMockito.BDDMyOngoingStubbing (Mockito API)
</TITLE>
<META NAME="keywords" CONTENT="org.mockito.BDDMockito.BDDMyOngoingStubbing interface">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../stylesheet.css" TITLE="Style">
<SCRIPT type="text/javascript">
function windowTitle()
{
parent.document.title="BDDMockito.BDDMyOngoingStubbing (Mockito API)";
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>
</HEAD>
<BODY BGCOLOR="white" onload="windowTitle();">
<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/BDDMockito.BDDMyOngoingStubbing.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../org/mockito/BDDMockito.html" title="class in org.mockito"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../org/mockito/BDDMockito.BDDOngoingStubbingImpl.html" title="class in org.mockito"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../index.html?org/mockito/BDDMockito.BDDMyOngoingStubbing.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="BDDMockito.BDDMyOngoingStubbing.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->
<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
org.mockito</FONT>
<BR>
Interface BDDMockito.BDDMyOngoingStubbing&lt;T&gt;</H2>
<DL>
<DT><B>All Known Implementing Classes:</B> <DD><A HREF="../../org/mockito/BDDMockito.BDDOngoingStubbingImpl.html" title="class in org.mockito">BDDMockito.BDDOngoingStubbingImpl</A></DD>
</DL>
<DL>
<DT><B>Enclosing class:</B><DD><A HREF="../../org/mockito/BDDMockito.html" title="class in org.mockito">BDDMockito</A></DD>
</DL>
<HR>
<DL>
<DT><PRE>public static interface <B>BDDMockito.BDDMyOngoingStubbing&lt;T&gt;</B></DL>
</PRE>
<P>
See original <A HREF="../../org/mockito/stubbing/OngoingStubbing.html" title="interface in org.mockito.stubbing"><CODE>OngoingStubbing</CODE></A>
<P>
<P>
<HR>
<P>
<!-- ========== METHOD SUMMARY =========== -->
<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Method Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="interface in org.mockito">BDDMockito.BDDMyOngoingStubbing</A>&lt;<A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="type parameter in BDDMockito.BDDMyOngoingStubbing">T</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html#willAnswer(org.mockito.stubbing.Answer)">willAnswer</A></B>(<A HREF="../../org/mockito/stubbing/Answer.html" title="interface in org.mockito.stubbing">Answer</A>&lt;?&gt;&nbsp;answer)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;See original <A HREF="../../org/mockito/stubbing/OngoingStubbing.html#thenAnswer(org.mockito.stubbing.Answer)"><CODE>OngoingStubbing.thenAnswer(Answer)</CODE></A></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="interface in org.mockito">BDDMockito.BDDMyOngoingStubbing</A>&lt;<A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="type parameter in BDDMockito.BDDMyOngoingStubbing">T</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html#willCallRealMethod()">willCallRealMethod</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;See original <A HREF="../../org/mockito/stubbing/OngoingStubbing.html#thenCallRealMethod()"><CODE>OngoingStubbing.thenCallRealMethod()</CODE></A></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="interface in org.mockito">BDDMockito.BDDMyOngoingStubbing</A>&lt;<A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="type parameter in BDDMockito.BDDMyOngoingStubbing">T</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html#willReturn(T)">willReturn</A></B>(<A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="type parameter in BDDMockito.BDDMyOngoingStubbing">T</A>&nbsp;value)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;See original <A HREF="../../org/mockito/stubbing/OngoingStubbing.html#thenReturn(T)"><CODE>OngoingStubbing.thenReturn(Object)</CODE></A></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="interface in org.mockito">BDDMockito.BDDMyOngoingStubbing</A>&lt;<A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="type parameter in BDDMockito.BDDMyOngoingStubbing">T</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html#willReturn(T, T...)">willReturn</A></B>(<A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="type parameter in BDDMockito.BDDMyOngoingStubbing">T</A>&nbsp;value,
<A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="type parameter in BDDMockito.BDDMyOngoingStubbing">T</A>...&nbsp;values)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;See original <A HREF="../../org/mockito/stubbing/OngoingStubbing.html#thenReturn(T, T...)"><CODE>OngoingStubbing.thenReturn(Object, Object...)</CODE></A></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="interface in org.mockito">BDDMockito.BDDMyOngoingStubbing</A>&lt;<A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="type parameter in BDDMockito.BDDMyOngoingStubbing">T</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html#willThrow(java.lang.Throwable...)">willThrow</A></B>(java.lang.Throwable...&nbsp;throwables)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;See original <A HREF="../../org/mockito/stubbing/OngoingStubbing.html#thenThrow(java.lang.Throwable...)"><CODE>OngoingStubbing.thenThrow(Throwable...)</CODE></A></TD>
</TR>
</TABLE>
&nbsp;
<P>
<!-- ============ METHOD DETAIL ========== -->
<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Method Detail</B></FONT></TH>
</TR>
</TABLE>
<A NAME="willAnswer(org.mockito.stubbing.Answer)"><!-- --></A><H3>
willAnswer</H3>
<PRE>
<A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="interface in org.mockito">BDDMockito.BDDMyOngoingStubbing</A>&lt;<A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="type parameter in BDDMockito.BDDMyOngoingStubbing">T</A>&gt; <B>willAnswer</B>(<A HREF="../../org/mockito/stubbing/Answer.html" title="interface in org.mockito.stubbing">Answer</A>&lt;?&gt;&nbsp;answer)</PRE>
<DL>
<DD>See original <A HREF="../../org/mockito/stubbing/OngoingStubbing.html#thenAnswer(org.mockito.stubbing.Answer)"><CODE>OngoingStubbing.thenAnswer(Answer)</CODE></A>
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="willReturn(java.lang.Object)"><!-- --></A><A NAME="willReturn(T)"><!-- --></A><H3>
willReturn</H3>
<PRE>
<A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="interface in org.mockito">BDDMockito.BDDMyOngoingStubbing</A>&lt;<A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="type parameter in BDDMockito.BDDMyOngoingStubbing">T</A>&gt; <B>willReturn</B>(<A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="type parameter in BDDMockito.BDDMyOngoingStubbing">T</A>&nbsp;value)</PRE>
<DL>
<DD>See original <A HREF="../../org/mockito/stubbing/OngoingStubbing.html#thenReturn(T)"><CODE>OngoingStubbing.thenReturn(Object)</CODE></A>
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="willReturn(java.lang.Object,java.lang.Object)"><!-- --></A><A NAME="willReturn(T, T...)"><!-- --></A><H3>
willReturn</H3>
<PRE>
<A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="interface in org.mockito">BDDMockito.BDDMyOngoingStubbing</A>&lt;<A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="type parameter in BDDMockito.BDDMyOngoingStubbing">T</A>&gt; <B>willReturn</B>(<A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="type parameter in BDDMockito.BDDMyOngoingStubbing">T</A>&nbsp;value,
<A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="type parameter in BDDMockito.BDDMyOngoingStubbing">T</A>...&nbsp;values)</PRE>
<DL>
<DD>See original <A HREF="../../org/mockito/stubbing/OngoingStubbing.html#thenReturn(T, T...)"><CODE>OngoingStubbing.thenReturn(Object, Object...)</CODE></A>
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="willThrow(java.lang.Throwable...)"><!-- --></A><H3>
willThrow</H3>
<PRE>
<A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="interface in org.mockito">BDDMockito.BDDMyOngoingStubbing</A>&lt;<A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="type parameter in BDDMockito.BDDMyOngoingStubbing">T</A>&gt; <B>willThrow</B>(java.lang.Throwable...&nbsp;throwables)</PRE>
<DL>
<DD>See original <A HREF="../../org/mockito/stubbing/OngoingStubbing.html#thenThrow(java.lang.Throwable...)"><CODE>OngoingStubbing.thenThrow(Throwable...)</CODE></A>
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="willCallRealMethod()"><!-- --></A><H3>
willCallRealMethod</H3>
<PRE>
<A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="interface in org.mockito">BDDMockito.BDDMyOngoingStubbing</A>&lt;<A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="type parameter in BDDMockito.BDDMyOngoingStubbing">T</A>&gt; <B>willCallRealMethod</B>()</PRE>
<DL>
<DD>See original <A HREF="../../org/mockito/stubbing/OngoingStubbing.html#thenCallRealMethod()"><CODE>OngoingStubbing.thenCallRealMethod()</CODE></A>
<P>
<DD><DL>
</DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/BDDMockito.BDDMyOngoingStubbing.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../org/mockito/BDDMockito.html" title="class in org.mockito"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../org/mockito/BDDMockito.BDDOngoingStubbingImpl.html" title="class in org.mockito"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../index.html?org/mockito/BDDMockito.BDDMyOngoingStubbing.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="BDDMockito.BDDMyOngoingStubbing.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
</BODY>
</HTML>

View File

@ -1,363 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.5.0_22) on Mon May 24 23:03:13 CEST 2010 -->
<TITLE>
BDDMockito.BDDOngoingStubbingImpl (Mockito API)
</TITLE>
<META NAME="keywords" CONTENT="org.mockito.BDDMockito.BDDOngoingStubbingImpl class">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../stylesheet.css" TITLE="Style">
<SCRIPT type="text/javascript">
function windowTitle()
{
parent.document.title="BDDMockito.BDDOngoingStubbingImpl (Mockito API)";
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>
</HEAD>
<BODY BGCOLOR="white" onload="windowTitle();">
<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/BDDMockito.BDDOngoingStubbingImpl.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="interface in org.mockito"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../org/mockito/BDDMockito.BDDStubber.html" title="interface in org.mockito"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../index.html?org/mockito/BDDMockito.BDDOngoingStubbingImpl.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="BDDMockito.BDDOngoingStubbingImpl.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->
<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
org.mockito</FONT>
<BR>
Class BDDMockito.BDDOngoingStubbingImpl&lt;T&gt;</H2>
<PRE>
java.lang.Object
<IMG SRC="../../resources/inherit.gif" ALT="extended by "><B>org.mockito.BDDMockito.BDDOngoingStubbingImpl&lt;T&gt;</B>
</PRE>
<DL>
<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="interface in org.mockito">BDDMockito.BDDMyOngoingStubbing</A>&lt;T&gt;</DD>
</DL>
<DL>
<DT><B>Enclosing class:</B><DD><A HREF="../../org/mockito/BDDMockito.html" title="class in org.mockito">BDDMockito</A></DD>
</DL>
<HR>
<DL>
<DT><PRE>public static class <B>BDDMockito.BDDOngoingStubbingImpl&lt;T&gt;</B><DT>extends java.lang.Object<DT>implements <A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="interface in org.mockito">BDDMockito.BDDMyOngoingStubbing</A>&lt;T&gt;</DL>
</PRE>
<P>
<HR>
<P>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../org/mockito/BDDMockito.BDDOngoingStubbingImpl.html#BDDMockito.BDDOngoingStubbingImpl(org.mockito.stubbing.OngoingStubbing)">BDDMockito.BDDOngoingStubbingImpl</A></B>(<A HREF="../../org/mockito/stubbing/OngoingStubbing.html" title="interface in org.mockito.stubbing">OngoingStubbing</A>&lt;<A HREF="../../org/mockito/BDDMockito.BDDOngoingStubbingImpl.html" title="type parameter in BDDMockito.BDDOngoingStubbingImpl">T</A>&gt;&nbsp;ongoingStubbing)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
</TABLE>
&nbsp;
<!-- ========== METHOD SUMMARY =========== -->
<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Method Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="interface in org.mockito">BDDMockito.BDDMyOngoingStubbing</A>&lt;<A HREF="../../org/mockito/BDDMockito.BDDOngoingStubbingImpl.html" title="type parameter in BDDMockito.BDDOngoingStubbingImpl">T</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/BDDMockito.BDDOngoingStubbingImpl.html#willAnswer(org.mockito.stubbing.Answer)">willAnswer</A></B>(<A HREF="../../org/mockito/stubbing/Answer.html" title="interface in org.mockito.stubbing">Answer</A>&lt;?&gt;&nbsp;answer)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;See original <A HREF="../../org/mockito/stubbing/OngoingStubbing.html#thenAnswer(org.mockito.stubbing.Answer)"><CODE>OngoingStubbing.thenAnswer(Answer)</CODE></A></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="interface in org.mockito">BDDMockito.BDDMyOngoingStubbing</A>&lt;<A HREF="../../org/mockito/BDDMockito.BDDOngoingStubbingImpl.html" title="type parameter in BDDMockito.BDDOngoingStubbingImpl">T</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/BDDMockito.BDDOngoingStubbingImpl.html#willCallRealMethod()">willCallRealMethod</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;See original <A HREF="../../org/mockito/stubbing/OngoingStubbing.html#thenCallRealMethod()"><CODE>OngoingStubbing.thenCallRealMethod()</CODE></A></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="interface in org.mockito">BDDMockito.BDDMyOngoingStubbing</A>&lt;<A HREF="../../org/mockito/BDDMockito.BDDOngoingStubbingImpl.html" title="type parameter in BDDMockito.BDDOngoingStubbingImpl">T</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/BDDMockito.BDDOngoingStubbingImpl.html#willReturn(T)">willReturn</A></B>(<A HREF="../../org/mockito/BDDMockito.BDDOngoingStubbingImpl.html" title="type parameter in BDDMockito.BDDOngoingStubbingImpl">T</A>&nbsp;value)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;See original <A HREF="../../org/mockito/stubbing/OngoingStubbing.html#thenReturn(T)"><CODE>OngoingStubbing.thenReturn(Object)</CODE></A></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="interface in org.mockito">BDDMockito.BDDMyOngoingStubbing</A>&lt;<A HREF="../../org/mockito/BDDMockito.BDDOngoingStubbingImpl.html" title="type parameter in BDDMockito.BDDOngoingStubbingImpl">T</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/BDDMockito.BDDOngoingStubbingImpl.html#willReturn(T, T...)">willReturn</A></B>(<A HREF="../../org/mockito/BDDMockito.BDDOngoingStubbingImpl.html" title="type parameter in BDDMockito.BDDOngoingStubbingImpl">T</A>&nbsp;value,
<A HREF="../../org/mockito/BDDMockito.BDDOngoingStubbingImpl.html" title="type parameter in BDDMockito.BDDOngoingStubbingImpl">T</A>...&nbsp;values)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;See original <A HREF="../../org/mockito/stubbing/OngoingStubbing.html#thenReturn(T, T...)"><CODE>OngoingStubbing.thenReturn(Object, Object...)</CODE></A></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="interface in org.mockito">BDDMockito.BDDMyOngoingStubbing</A>&lt;<A HREF="../../org/mockito/BDDMockito.BDDOngoingStubbingImpl.html" title="type parameter in BDDMockito.BDDOngoingStubbingImpl">T</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/BDDMockito.BDDOngoingStubbingImpl.html#willThrow(java.lang.Throwable...)">willThrow</A></B>(java.lang.Throwable...&nbsp;throwables)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;See original <A HREF="../../org/mockito/stubbing/OngoingStubbing.html#thenThrow(java.lang.Throwable...)"><CODE>OngoingStubbing.thenThrow(Throwable...)</CODE></A></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class java.lang.Object</B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
</TR>
</TABLE>
&nbsp;
<P>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Constructor Detail</B></FONT></TH>
</TR>
</TABLE>
<A NAME="BDDMockito.BDDOngoingStubbingImpl(org.mockito.stubbing.OngoingStubbing)"><!-- --></A><H3>
BDDMockito.BDDOngoingStubbingImpl</H3>
<PRE>
public <B>BDDMockito.BDDOngoingStubbingImpl</B>(<A HREF="../../org/mockito/stubbing/OngoingStubbing.html" title="interface in org.mockito.stubbing">OngoingStubbing</A>&lt;<A HREF="../../org/mockito/BDDMockito.BDDOngoingStubbingImpl.html" title="type parameter in BDDMockito.BDDOngoingStubbingImpl">T</A>&gt;&nbsp;ongoingStubbing)</PRE>
<DL>
</DL>
<!-- ============ METHOD DETAIL ========== -->
<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Method Detail</B></FONT></TH>
</TR>
</TABLE>
<A NAME="willAnswer(org.mockito.stubbing.Answer)"><!-- --></A><H3>
willAnswer</H3>
<PRE>
public <A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="interface in org.mockito">BDDMockito.BDDMyOngoingStubbing</A>&lt;<A HREF="../../org/mockito/BDDMockito.BDDOngoingStubbingImpl.html" title="type parameter in BDDMockito.BDDOngoingStubbingImpl">T</A>&gt; <B>willAnswer</B>(<A HREF="../../org/mockito/stubbing/Answer.html" title="interface in org.mockito.stubbing">Answer</A>&lt;?&gt;&nbsp;answer)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html#willAnswer(org.mockito.stubbing.Answer)">BDDMockito.BDDMyOngoingStubbing</A></CODE></B></DD>
<DD>See original <A HREF="../../org/mockito/stubbing/OngoingStubbing.html#thenAnswer(org.mockito.stubbing.Answer)"><CODE>OngoingStubbing.thenAnswer(Answer)</CODE></A>
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html#willAnswer(org.mockito.stubbing.Answer)">willAnswer</A></CODE> in interface <CODE><A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="interface in org.mockito">BDDMockito.BDDMyOngoingStubbing</A>&lt;<A HREF="../../org/mockito/BDDMockito.BDDOngoingStubbingImpl.html" title="type parameter in BDDMockito.BDDOngoingStubbingImpl">T</A>&gt;</CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="willReturn(java.lang.Object)"><!-- --></A><A NAME="willReturn(T)"><!-- --></A><H3>
willReturn</H3>
<PRE>
public <A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="interface in org.mockito">BDDMockito.BDDMyOngoingStubbing</A>&lt;<A HREF="../../org/mockito/BDDMockito.BDDOngoingStubbingImpl.html" title="type parameter in BDDMockito.BDDOngoingStubbingImpl">T</A>&gt; <B>willReturn</B>(<A HREF="../../org/mockito/BDDMockito.BDDOngoingStubbingImpl.html" title="type parameter in BDDMockito.BDDOngoingStubbingImpl">T</A>&nbsp;value)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html#willReturn(T)">BDDMockito.BDDMyOngoingStubbing</A></CODE></B></DD>
<DD>See original <A HREF="../../org/mockito/stubbing/OngoingStubbing.html#thenReturn(T)"><CODE>OngoingStubbing.thenReturn(Object)</CODE></A>
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html#willReturn(T)">willReturn</A></CODE> in interface <CODE><A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="interface in org.mockito">BDDMockito.BDDMyOngoingStubbing</A>&lt;<A HREF="../../org/mockito/BDDMockito.BDDOngoingStubbingImpl.html" title="type parameter in BDDMockito.BDDOngoingStubbingImpl">T</A>&gt;</CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="willReturn(java.lang.Object,java.lang.Object)"><!-- --></A><A NAME="willReturn(T, T...)"><!-- --></A><H3>
willReturn</H3>
<PRE>
public <A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="interface in org.mockito">BDDMockito.BDDMyOngoingStubbing</A>&lt;<A HREF="../../org/mockito/BDDMockito.BDDOngoingStubbingImpl.html" title="type parameter in BDDMockito.BDDOngoingStubbingImpl">T</A>&gt; <B>willReturn</B>(<A HREF="../../org/mockito/BDDMockito.BDDOngoingStubbingImpl.html" title="type parameter in BDDMockito.BDDOngoingStubbingImpl">T</A>&nbsp;value,
<A HREF="../../org/mockito/BDDMockito.BDDOngoingStubbingImpl.html" title="type parameter in BDDMockito.BDDOngoingStubbingImpl">T</A>...&nbsp;values)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html#willReturn(T, T...)">BDDMockito.BDDMyOngoingStubbing</A></CODE></B></DD>
<DD>See original <A HREF="../../org/mockito/stubbing/OngoingStubbing.html#thenReturn(T, T...)"><CODE>OngoingStubbing.thenReturn(Object, Object...)</CODE></A>
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html#willReturn(T, T...)">willReturn</A></CODE> in interface <CODE><A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="interface in org.mockito">BDDMockito.BDDMyOngoingStubbing</A>&lt;<A HREF="../../org/mockito/BDDMockito.BDDOngoingStubbingImpl.html" title="type parameter in BDDMockito.BDDOngoingStubbingImpl">T</A>&gt;</CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="willThrow(java.lang.Throwable...)"><!-- --></A><H3>
willThrow</H3>
<PRE>
public <A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="interface in org.mockito">BDDMockito.BDDMyOngoingStubbing</A>&lt;<A HREF="../../org/mockito/BDDMockito.BDDOngoingStubbingImpl.html" title="type parameter in BDDMockito.BDDOngoingStubbingImpl">T</A>&gt; <B>willThrow</B>(java.lang.Throwable...&nbsp;throwables)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html#willThrow(java.lang.Throwable...)">BDDMockito.BDDMyOngoingStubbing</A></CODE></B></DD>
<DD>See original <A HREF="../../org/mockito/stubbing/OngoingStubbing.html#thenThrow(java.lang.Throwable...)"><CODE>OngoingStubbing.thenThrow(Throwable...)</CODE></A>
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html#willThrow(java.lang.Throwable...)">willThrow</A></CODE> in interface <CODE><A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="interface in org.mockito">BDDMockito.BDDMyOngoingStubbing</A>&lt;<A HREF="../../org/mockito/BDDMockito.BDDOngoingStubbingImpl.html" title="type parameter in BDDMockito.BDDOngoingStubbingImpl">T</A>&gt;</CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="willCallRealMethod()"><!-- --></A><H3>
willCallRealMethod</H3>
<PRE>
public <A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="interface in org.mockito">BDDMockito.BDDMyOngoingStubbing</A>&lt;<A HREF="../../org/mockito/BDDMockito.BDDOngoingStubbingImpl.html" title="type parameter in BDDMockito.BDDOngoingStubbingImpl">T</A>&gt; <B>willCallRealMethod</B>()</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html#willCallRealMethod()">BDDMockito.BDDMyOngoingStubbing</A></CODE></B></DD>
<DD>See original <A HREF="../../org/mockito/stubbing/OngoingStubbing.html#thenCallRealMethod()"><CODE>OngoingStubbing.thenCallRealMethod()</CODE></A>
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html#willCallRealMethod()">willCallRealMethod</A></CODE> in interface <CODE><A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="interface in org.mockito">BDDMockito.BDDMyOngoingStubbing</A>&lt;<A HREF="../../org/mockito/BDDMockito.BDDOngoingStubbingImpl.html" title="type parameter in BDDMockito.BDDOngoingStubbingImpl">T</A>&gt;</CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/BDDMockito.BDDOngoingStubbingImpl.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="interface in org.mockito"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../org/mockito/BDDMockito.BDDStubber.html" title="interface in org.mockito"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../index.html?org/mockito/BDDMockito.BDDOngoingStubbingImpl.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="BDDMockito.BDDOngoingStubbingImpl.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
</BODY>
</HTML>

View File

@ -1,306 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.5.0_22) on Mon May 24 23:03:13 CEST 2010 -->
<TITLE>
BDDMockito.BDDStubber (Mockito API)
</TITLE>
<META NAME="keywords" CONTENT="org.mockito.BDDMockito.BDDStubber interface">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../stylesheet.css" TITLE="Style">
<SCRIPT type="text/javascript">
function windowTitle()
{
parent.document.title="BDDMockito.BDDStubber (Mockito API)";
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>
</HEAD>
<BODY BGCOLOR="white" onload="windowTitle();">
<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/BDDMockito.BDDStubber.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../org/mockito/BDDMockito.BDDOngoingStubbingImpl.html" title="class in org.mockito"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../org/mockito/BDDMockito.BDDStubberImpl.html" title="class in org.mockito"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../index.html?org/mockito/BDDMockito.BDDStubber.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="BDDMockito.BDDStubber.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->
<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
org.mockito</FONT>
<BR>
Interface BDDMockito.BDDStubber</H2>
<DL>
<DT><B>All Known Implementing Classes:</B> <DD><A HREF="../../org/mockito/BDDMockito.BDDStubberImpl.html" title="class in org.mockito">BDDMockito.BDDStubberImpl</A></DD>
</DL>
<DL>
<DT><B>Enclosing class:</B><DD><A HREF="../../org/mockito/BDDMockito.html" title="class in org.mockito">BDDMockito</A></DD>
</DL>
<HR>
<DL>
<DT><PRE>public static interface <B>BDDMockito.BDDStubber</B></DL>
</PRE>
<P>
See original <A HREF="../../org/mockito/stubbing/Stubber.html" title="interface in org.mockito.stubbing"><CODE>Stubber</CODE></A>
<P>
<P>
<HR>
<P>
<!-- ========== METHOD SUMMARY =========== -->
<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Method Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY="">
<TR ALIGN="right" VALIGN="">
<TD NOWRAP><FONT SIZE="-1">
<CODE>&lt;T&gt; T</CODE></FONT></TD>
</TR>
</TABLE>
</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/BDDMockito.BDDStubber.html#given(T)">given</A></B>(T&nbsp;mock)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;See original <A HREF="../../org/mockito/stubbing/Stubber.html#when(T)"><CODE>Stubber.when(Object)</CODE></A></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../org/mockito/BDDMockito.BDDStubber.html" title="interface in org.mockito">BDDMockito.BDDStubber</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/BDDMockito.BDDStubber.html#willAnswer(org.mockito.stubbing.Answer)">willAnswer</A></B>(<A HREF="../../org/mockito/stubbing/Answer.html" title="interface in org.mockito.stubbing">Answer</A>&nbsp;answer)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;See original <A HREF="../../org/mockito/stubbing/Stubber.html#doAnswer(org.mockito.stubbing.Answer)"><CODE>Stubber.doAnswer(Answer)</CODE></A></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../org/mockito/BDDMockito.BDDStubber.html" title="interface in org.mockito">BDDMockito.BDDStubber</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/BDDMockito.BDDStubber.html#willNothing()">willNothing</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;See original <A HREF="../../org/mockito/stubbing/Stubber.html#doNothing()"><CODE>Stubber.doNothing()</CODE></A></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../org/mockito/BDDMockito.BDDStubber.html" title="interface in org.mockito">BDDMockito.BDDStubber</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/BDDMockito.BDDStubber.html#willReturn(java.lang.Object)">willReturn</A></B>(java.lang.Object&nbsp;toBeReturned)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;See original <A HREF="../../org/mockito/stubbing/Stubber.html#doReturn(java.lang.Object)"><CODE>Stubber.doReturn(Object)</CODE></A></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../org/mockito/BDDMockito.BDDStubber.html" title="interface in org.mockito">BDDMockito.BDDStubber</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/BDDMockito.BDDStubber.html#willThrow(java.lang.Throwable)">willThrow</A></B>(java.lang.Throwable&nbsp;toBeThrown)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;See original <A HREF="../../org/mockito/stubbing/Stubber.html#doThrow(java.lang.Throwable)"><CODE>Stubber.doThrow(Throwable)</CODE></A></TD>
</TR>
</TABLE>
&nbsp;
<P>
<!-- ============ METHOD DETAIL ========== -->
<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Method Detail</B></FONT></TH>
</TR>
</TABLE>
<A NAME="willAnswer(org.mockito.stubbing.Answer)"><!-- --></A><H3>
willAnswer</H3>
<PRE>
<A HREF="../../org/mockito/BDDMockito.BDDStubber.html" title="interface in org.mockito">BDDMockito.BDDStubber</A> <B>willAnswer</B>(<A HREF="../../org/mockito/stubbing/Answer.html" title="interface in org.mockito.stubbing">Answer</A>&nbsp;answer)</PRE>
<DL>
<DD>See original <A HREF="../../org/mockito/stubbing/Stubber.html#doAnswer(org.mockito.stubbing.Answer)"><CODE>Stubber.doAnswer(Answer)</CODE></A>
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="willNothing()"><!-- --></A><H3>
willNothing</H3>
<PRE>
<A HREF="../../org/mockito/BDDMockito.BDDStubber.html" title="interface in org.mockito">BDDMockito.BDDStubber</A> <B>willNothing</B>()</PRE>
<DL>
<DD>See original <A HREF="../../org/mockito/stubbing/Stubber.html#doNothing()"><CODE>Stubber.doNothing()</CODE></A>
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="willReturn(java.lang.Object)"><!-- --></A><H3>
willReturn</H3>
<PRE>
<A HREF="../../org/mockito/BDDMockito.BDDStubber.html" title="interface in org.mockito">BDDMockito.BDDStubber</A> <B>willReturn</B>(java.lang.Object&nbsp;toBeReturned)</PRE>
<DL>
<DD>See original <A HREF="../../org/mockito/stubbing/Stubber.html#doReturn(java.lang.Object)"><CODE>Stubber.doReturn(Object)</CODE></A>
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="willThrow(java.lang.Throwable)"><!-- --></A><H3>
willThrow</H3>
<PRE>
<A HREF="../../org/mockito/BDDMockito.BDDStubber.html" title="interface in org.mockito">BDDMockito.BDDStubber</A> <B>willThrow</B>(java.lang.Throwable&nbsp;toBeThrown)</PRE>
<DL>
<DD>See original <A HREF="../../org/mockito/stubbing/Stubber.html#doThrow(java.lang.Throwable)"><CODE>Stubber.doThrow(Throwable)</CODE></A>
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="given(java.lang.Object)"><!-- --></A><A NAME="given(T)"><!-- --></A><H3>
given</H3>
<PRE>
&lt;T&gt; T <B>given</B>(T&nbsp;mock)</PRE>
<DL>
<DD>See original <A HREF="../../org/mockito/stubbing/Stubber.html#when(T)"><CODE>Stubber.when(Object)</CODE></A>
<P>
<DD><DL>
</DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/BDDMockito.BDDStubber.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../org/mockito/BDDMockito.BDDOngoingStubbingImpl.html" title="class in org.mockito"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../org/mockito/BDDMockito.BDDStubberImpl.html" title="class in org.mockito"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../index.html?org/mockito/BDDMockito.BDDStubber.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="BDDMockito.BDDStubber.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
</BODY>
</HTML>

View File

@ -1,368 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.5.0_22) on Mon May 24 23:03:13 CEST 2010 -->
<TITLE>
BDDMockito.BDDStubberImpl (Mockito API)
</TITLE>
<META NAME="keywords" CONTENT="org.mockito.BDDMockito.BDDStubberImpl class">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../stylesheet.css" TITLE="Style">
<SCRIPT type="text/javascript">
function windowTitle()
{
parent.document.title="BDDMockito.BDDStubberImpl (Mockito API)";
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>
</HEAD>
<BODY BGCOLOR="white" onload="windowTitle();">
<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/BDDMockito.BDDStubberImpl.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../org/mockito/BDDMockito.BDDStubber.html" title="interface in org.mockito"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../org/mockito/Captor.html" title="annotation in org.mockito"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../index.html?org/mockito/BDDMockito.BDDStubberImpl.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="BDDMockito.BDDStubberImpl.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->
<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
org.mockito</FONT>
<BR>
Class BDDMockito.BDDStubberImpl</H2>
<PRE>
java.lang.Object
<IMG SRC="../../resources/inherit.gif" ALT="extended by "><B>org.mockito.BDDMockito.BDDStubberImpl</B>
</PRE>
<DL>
<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../org/mockito/BDDMockito.BDDStubber.html" title="interface in org.mockito">BDDMockito.BDDStubber</A></DD>
</DL>
<DL>
<DT><B>Enclosing class:</B><DD><A HREF="../../org/mockito/BDDMockito.html" title="class in org.mockito">BDDMockito</A></DD>
</DL>
<HR>
<DL>
<DT><PRE>public static class <B>BDDMockito.BDDStubberImpl</B><DT>extends java.lang.Object<DT>implements <A HREF="../../org/mockito/BDDMockito.BDDStubber.html" title="interface in org.mockito">BDDMockito.BDDStubber</A></DL>
</PRE>
<P>
<HR>
<P>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../org/mockito/BDDMockito.BDDStubberImpl.html#BDDMockito.BDDStubberImpl(org.mockito.stubbing.Stubber)">BDDMockito.BDDStubberImpl</A></B>(<A HREF="../../org/mockito/stubbing/Stubber.html" title="interface in org.mockito.stubbing">Stubber</A>&nbsp;mockitoStubber)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
</TABLE>
&nbsp;
<!-- ========== METHOD SUMMARY =========== -->
<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Method Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY="">
<TR ALIGN="right" VALIGN="">
<TD NOWRAP><FONT SIZE="-1">
<CODE>&lt;T&gt; T</CODE></FONT></TD>
</TR>
</TABLE>
</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/BDDMockito.BDDStubberImpl.html#given(T)">given</A></B>(T&nbsp;mock)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;See original <A HREF="../../org/mockito/stubbing/Stubber.html#when(T)"><CODE>Stubber.when(Object)</CODE></A></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../org/mockito/BDDMockito.BDDStubber.html" title="interface in org.mockito">BDDMockito.BDDStubber</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/BDDMockito.BDDStubberImpl.html#willAnswer(org.mockito.stubbing.Answer)">willAnswer</A></B>(<A HREF="../../org/mockito/stubbing/Answer.html" title="interface in org.mockito.stubbing">Answer</A>&nbsp;answer)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;See original <A HREF="../../org/mockito/stubbing/Stubber.html#doAnswer(org.mockito.stubbing.Answer)"><CODE>Stubber.doAnswer(Answer)</CODE></A></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../org/mockito/BDDMockito.BDDStubber.html" title="interface in org.mockito">BDDMockito.BDDStubber</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/BDDMockito.BDDStubberImpl.html#willNothing()">willNothing</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;See original <A HREF="../../org/mockito/stubbing/Stubber.html#doNothing()"><CODE>Stubber.doNothing()</CODE></A></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../org/mockito/BDDMockito.BDDStubber.html" title="interface in org.mockito">BDDMockito.BDDStubber</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/BDDMockito.BDDStubberImpl.html#willReturn(java.lang.Object)">willReturn</A></B>(java.lang.Object&nbsp;toBeReturned)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;See original <A HREF="../../org/mockito/stubbing/Stubber.html#doReturn(java.lang.Object)"><CODE>Stubber.doReturn(Object)</CODE></A></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../org/mockito/BDDMockito.BDDStubber.html" title="interface in org.mockito">BDDMockito.BDDStubber</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/BDDMockito.BDDStubberImpl.html#willThrow(java.lang.Throwable)">willThrow</A></B>(java.lang.Throwable&nbsp;toBeThrown)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;See original <A HREF="../../org/mockito/stubbing/Stubber.html#doThrow(java.lang.Throwable)"><CODE>Stubber.doThrow(Throwable)</CODE></A></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class java.lang.Object</B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
</TR>
</TABLE>
&nbsp;
<P>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Constructor Detail</B></FONT></TH>
</TR>
</TABLE>
<A NAME="BDDMockito.BDDStubberImpl(org.mockito.stubbing.Stubber)"><!-- --></A><H3>
BDDMockito.BDDStubberImpl</H3>
<PRE>
public <B>BDDMockito.BDDStubberImpl</B>(<A HREF="../../org/mockito/stubbing/Stubber.html" title="interface in org.mockito.stubbing">Stubber</A>&nbsp;mockitoStubber)</PRE>
<DL>
</DL>
<!-- ============ METHOD DETAIL ========== -->
<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Method Detail</B></FONT></TH>
</TR>
</TABLE>
<A NAME="given(java.lang.Object)"><!-- --></A><A NAME="given(T)"><!-- --></A><H3>
given</H3>
<PRE>
public &lt;T&gt; T <B>given</B>(T&nbsp;mock)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../org/mockito/BDDMockito.BDDStubber.html#given(T)">BDDMockito.BDDStubber</A></CODE></B></DD>
<DD>See original <A HREF="../../org/mockito/stubbing/Stubber.html#when(T)"><CODE>Stubber.when(Object)</CODE></A>
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../org/mockito/BDDMockito.BDDStubber.html#given(T)">given</A></CODE> in interface <CODE><A HREF="../../org/mockito/BDDMockito.BDDStubber.html" title="interface in org.mockito">BDDMockito.BDDStubber</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="willAnswer(org.mockito.stubbing.Answer)"><!-- --></A><H3>
willAnswer</H3>
<PRE>
public <A HREF="../../org/mockito/BDDMockito.BDDStubber.html" title="interface in org.mockito">BDDMockito.BDDStubber</A> <B>willAnswer</B>(<A HREF="../../org/mockito/stubbing/Answer.html" title="interface in org.mockito.stubbing">Answer</A>&nbsp;answer)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../org/mockito/BDDMockito.BDDStubber.html#willAnswer(org.mockito.stubbing.Answer)">BDDMockito.BDDStubber</A></CODE></B></DD>
<DD>See original <A HREF="../../org/mockito/stubbing/Stubber.html#doAnswer(org.mockito.stubbing.Answer)"><CODE>Stubber.doAnswer(Answer)</CODE></A>
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../org/mockito/BDDMockito.BDDStubber.html#willAnswer(org.mockito.stubbing.Answer)">willAnswer</A></CODE> in interface <CODE><A HREF="../../org/mockito/BDDMockito.BDDStubber.html" title="interface in org.mockito">BDDMockito.BDDStubber</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="willNothing()"><!-- --></A><H3>
willNothing</H3>
<PRE>
public <A HREF="../../org/mockito/BDDMockito.BDDStubber.html" title="interface in org.mockito">BDDMockito.BDDStubber</A> <B>willNothing</B>()</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../org/mockito/BDDMockito.BDDStubber.html#willNothing()">BDDMockito.BDDStubber</A></CODE></B></DD>
<DD>See original <A HREF="../../org/mockito/stubbing/Stubber.html#doNothing()"><CODE>Stubber.doNothing()</CODE></A>
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../org/mockito/BDDMockito.BDDStubber.html#willNothing()">willNothing</A></CODE> in interface <CODE><A HREF="../../org/mockito/BDDMockito.BDDStubber.html" title="interface in org.mockito">BDDMockito.BDDStubber</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="willReturn(java.lang.Object)"><!-- --></A><H3>
willReturn</H3>
<PRE>
public <A HREF="../../org/mockito/BDDMockito.BDDStubber.html" title="interface in org.mockito">BDDMockito.BDDStubber</A> <B>willReturn</B>(java.lang.Object&nbsp;toBeReturned)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../org/mockito/BDDMockito.BDDStubber.html#willReturn(java.lang.Object)">BDDMockito.BDDStubber</A></CODE></B></DD>
<DD>See original <A HREF="../../org/mockito/stubbing/Stubber.html#doReturn(java.lang.Object)"><CODE>Stubber.doReturn(Object)</CODE></A>
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../org/mockito/BDDMockito.BDDStubber.html#willReturn(java.lang.Object)">willReturn</A></CODE> in interface <CODE><A HREF="../../org/mockito/BDDMockito.BDDStubber.html" title="interface in org.mockito">BDDMockito.BDDStubber</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="willThrow(java.lang.Throwable)"><!-- --></A><H3>
willThrow</H3>
<PRE>
public <A HREF="../../org/mockito/BDDMockito.BDDStubber.html" title="interface in org.mockito">BDDMockito.BDDStubber</A> <B>willThrow</B>(java.lang.Throwable&nbsp;toBeThrown)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../org/mockito/BDDMockito.BDDStubber.html#willThrow(java.lang.Throwable)">BDDMockito.BDDStubber</A></CODE></B></DD>
<DD>See original <A HREF="../../org/mockito/stubbing/Stubber.html#doThrow(java.lang.Throwable)"><CODE>Stubber.doThrow(Throwable)</CODE></A>
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../org/mockito/BDDMockito.BDDStubber.html#willThrow(java.lang.Throwable)">willThrow</A></CODE> in interface <CODE><A HREF="../../org/mockito/BDDMockito.BDDStubber.html" title="interface in org.mockito">BDDMockito.BDDStubber</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/BDDMockito.BDDStubberImpl.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../org/mockito/BDDMockito.BDDStubber.html" title="interface in org.mockito"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../org/mockito/Captor.html" title="annotation in org.mockito"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../index.html?org/mockito/BDDMockito.BDDStubberImpl.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="BDDMockito.BDDStubberImpl.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
</BODY>
</HTML>

View File

@ -1,487 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.5.0_22) on Mon May 24 23:03:13 CEST 2010 -->
<TITLE>
BDDMockito (Mockito API)
</TITLE>
<META NAME="keywords" CONTENT="org.mockito.BDDMockito class">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../stylesheet.css" TITLE="Style">
<SCRIPT type="text/javascript">
function windowTitle()
{
parent.document.title="BDDMockito (Mockito API)";
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>
</HEAD>
<BODY BGCOLOR="white" onload="windowTitle();">
<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/BDDMockito.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../org/mockito/ArgumentMatcher.html" title="class in org.mockito"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="interface in org.mockito"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../index.html?org/mockito/BDDMockito.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="BDDMockito.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;<A HREF="#nested_class_summary">NESTED</A>&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_org.mockito.Mockito">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->
<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
org.mockito</FONT>
<BR>
Class BDDMockito</H2>
<PRE>
java.lang.Object
<IMG SRC="../../resources/inherit.gif" ALT="extended by "><A HREF="../../org/mockito/Matchers.html" title="class in org.mockito">org.mockito.Matchers</A>
<IMG SRC="../../resources/inherit.gif" ALT="extended by "><A HREF="../../org/mockito/Mockito.html" title="class in org.mockito">org.mockito.Mockito</A>
<IMG SRC="../../resources/inherit.gif" ALT="extended by "><B>org.mockito.BDDMockito</B>
</PRE>
<HR>
<DL>
<DT><PRE>public class <B>BDDMockito</B><DT>extends <A HREF="../../org/mockito/Mockito.html" title="class in org.mockito">Mockito</A></DL>
</PRE>
<P>
Behavior Driven Development style of writing tests uses <b>//given //when //then</b> comments as fundamental parts of your test methods.
This is exactly how we write our tests and we warmly encourage you to do so!
<p>
Start learning about BDD here: <a href="http://en.wikipedia.org/wiki/Behavior_Driven_Development">http://en.wikipedia.org/wiki/Behavior_Driven_Development</a>
<p>
The problem is that current stubbing api with canonical role of <b>when</b> word does not integrate nicely with <b>//given //when //then</b> comments.
It's because stubbing belongs to <b>given</b> component of the test and not to the <b>when</b> component of the test.
Hence <A HREF="../../org/mockito/BDDMockito.html" title="class in org.mockito"><CODE>BDDMockito</CODE></A> class introduces an alias so that you stub method calls with <A HREF="../../org/mockito/BDDMockito.html#given(T)"><CODE>given(Object)</CODE></A> method.
Now it really nicely integrates with the <b>given</b> component of a BDD style test!
<p>
Here is how the test might look like:
<pre>
import static org.mockito.BDDMockito.*;
Seller seller = mock(Seller.class);
Shop shop = new Shop(seller);
public void shouldBuyBread() throws Exception {
//given
given(seller.askForBread()).willReturn(new Bread());
//when
Goods goods = shop.buyBread();
//then
assertThat(goods, containBread());
}
</pre>
Stubbing voids with throwables:
<pre>
//given
willThrow(new RuntimeException("boo")).given(mock).foo();
//when
Result result = systemUnderTest.perform();
//then
assertEquals(failure, result);
</pre>
<p>
One of the purposes of BDDMockito is also to show how to tailor the mocking syntax to a different programming style.
<P>
<P>
<HR>
<P>
<!-- ======== NESTED CLASS SUMMARY ======== -->
<A NAME="nested_class_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Nested Class Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;interface</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="interface in org.mockito">BDDMockito.BDDMyOngoingStubbing</A>&lt;<A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="type parameter in BDDMockito.BDDMyOngoingStubbing">T</A>&gt;</B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;See original <A HREF="../../org/mockito/stubbing/OngoingStubbing.html" title="interface in org.mockito.stubbing"><CODE>OngoingStubbing</CODE></A></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;class</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/BDDMockito.BDDOngoingStubbingImpl.html" title="class in org.mockito">BDDMockito.BDDOngoingStubbingImpl</A>&lt;<A HREF="../../org/mockito/BDDMockito.BDDOngoingStubbingImpl.html" title="type parameter in BDDMockito.BDDOngoingStubbingImpl">T</A>&gt;</B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;interface</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/BDDMockito.BDDStubber.html" title="interface in org.mockito">BDDMockito.BDDStubber</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;See original <A HREF="../../org/mockito/stubbing/Stubber.html" title="interface in org.mockito.stubbing"><CODE>Stubber</CODE></A></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;class</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/BDDMockito.BDDStubberImpl.html" title="class in org.mockito">BDDMockito.BDDStubberImpl</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
</TABLE>
&nbsp;<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Field Summary</B></FONT></TH>
</TR>
</TABLE>
&nbsp;<A NAME="fields_inherited_from_class_org.mockito.Mockito"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Fields inherited from class org.mockito.<A HREF="../../org/mockito/Mockito.html" title="class in org.mockito">Mockito</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="../../org/mockito/Mockito.html#CALLS_REAL_METHODS">CALLS_REAL_METHODS</A>, <A HREF="../../org/mockito/Mockito.html#RETURNS_DEEP_STUBS">RETURNS_DEEP_STUBS</A>, <A HREF="../../org/mockito/Mockito.html#RETURNS_DEFAULTS">RETURNS_DEFAULTS</A>, <A HREF="../../org/mockito/Mockito.html#RETURNS_MOCKS">RETURNS_MOCKS</A>, <A HREF="../../org/mockito/Mockito.html#RETURNS_SMART_NULLS">RETURNS_SMART_NULLS</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../org/mockito/BDDMockito.html#BDDMockito()">BDDMockito</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
</TABLE>
&nbsp;
<!-- ========== METHOD SUMMARY =========== -->
<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Method Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY="">
<TR ALIGN="right" VALIGN="">
<TD NOWRAP><FONT SIZE="-1">
<CODE>&lt;T&gt; <A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="interface in org.mockito">BDDMockito.BDDMyOngoingStubbing</A>&lt;T&gt;</CODE></FONT></TD>
</TR>
</TABLE>
</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/BDDMockito.html#given(T)">given</A></B>(T&nbsp;methodCall)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;see original <A HREF="../../org/mockito/Mockito.html#when(T)"><CODE>Mockito.when(Object)</CODE></A></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../org/mockito/BDDMockito.BDDStubber.html" title="interface in org.mockito">BDDMockito.BDDStubber</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/BDDMockito.html#willAnswer(org.mockito.stubbing.Answer)">willAnswer</A></B>(<A HREF="../../org/mockito/stubbing/Answer.html" title="interface in org.mockito.stubbing">Answer</A>&nbsp;answer)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;see original <A HREF="../../org/mockito/Mockito.html#doAnswer(org.mockito.stubbing.Answer)"><CODE>Mockito.doAnswer(Answer)</CODE></A></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../org/mockito/BDDMockito.BDDStubber.html" title="interface in org.mockito">BDDMockito.BDDStubber</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/BDDMockito.html#willCallRealMethod()">willCallRealMethod</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;see original <A HREF="../../org/mockito/Mockito.html#doCallRealMethod()"><CODE>Mockito.doCallRealMethod()</CODE></A></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../org/mockito/BDDMockito.BDDStubber.html" title="interface in org.mockito">BDDMockito.BDDStubber</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/BDDMockito.html#willDoNothing()">willDoNothing</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;see original <A HREF="../../org/mockito/Mockito.html#doNothing()"><CODE>Mockito.doNothing()</CODE></A></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../org/mockito/BDDMockito.BDDStubber.html" title="interface in org.mockito">BDDMockito.BDDStubber</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/BDDMockito.html#willReturn(java.lang.Object)">willReturn</A></B>(java.lang.Object&nbsp;toBeReturned)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;see original <A HREF="../../org/mockito/Mockito.html#doReturn(java.lang.Object)"><CODE>Mockito.doReturn(Object)</CODE></A></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../org/mockito/BDDMockito.BDDStubber.html" title="interface in org.mockito">BDDMockito.BDDStubber</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/BDDMockito.html#willThrow(java.lang.Throwable)">willThrow</A></B>(java.lang.Throwable&nbsp;toBeThrown)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;see original <A HREF="../../org/mockito/Mockito.html#doThrow(java.lang.Throwable)"><CODE>Mockito.doThrow(Throwable)</CODE></A></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_org.mockito.Mockito"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class org.mockito.<A HREF="../../org/mockito/Mockito.html" title="class in org.mockito">Mockito</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="../../org/mockito/Mockito.html#atLeast(int)">atLeast</A>, <A HREF="../../org/mockito/Mockito.html#atLeastOnce()">atLeastOnce</A>, <A HREF="../../org/mockito/Mockito.html#atMost(int)">atMost</A>, <A HREF="../../org/mockito/Mockito.html#doAnswer(org.mockito.stubbing.Answer)">doAnswer</A>, <A HREF="../../org/mockito/Mockito.html#doCallRealMethod()">doCallRealMethod</A>, <A HREF="../../org/mockito/Mockito.html#doNothing()">doNothing</A>, <A HREF="../../org/mockito/Mockito.html#doReturn(java.lang.Object)">doReturn</A>, <A HREF="../../org/mockito/Mockito.html#doThrow(java.lang.Throwable)">doThrow</A>, <A HREF="../../org/mockito/Mockito.html#inOrder(java.lang.Object...)">inOrder</A>, <A HREF="../../org/mockito/Mockito.html#mock(java.lang.Class)">mock</A>, <A HREF="../../org/mockito/Mockito.html#mock(java.lang.Class, org.mockito.stubbing.Answer)">mock</A>, <A HREF="../../org/mockito/Mockito.html#mock(java.lang.Class, org.mockito.MockSettings)">mock</A>, <A HREF="../../org/mockito/Mockito.html#mock(java.lang.Class, org.mockito.ReturnValues)">mock</A>, <A HREF="../../org/mockito/Mockito.html#mock(java.lang.Class, java.lang.String)">mock</A>, <A HREF="../../org/mockito/Mockito.html#never()">never</A>, <A HREF="../../org/mockito/Mockito.html#only()">only</A>, <A HREF="../../org/mockito/Mockito.html#reset(T...)">reset</A>, <A HREF="../../org/mockito/Mockito.html#spy(T)">spy</A>, <A HREF="../../org/mockito/Mockito.html#stub(T)">stub</A>, <A HREF="../../org/mockito/Mockito.html#stubVoid(T)">stubVoid</A>, <A HREF="../../org/mockito/Mockito.html#timeout(int)">timeout</A>, <A HREF="../../org/mockito/Mockito.html#times(int)">times</A>, <A HREF="../../org/mockito/Mockito.html#validateMockitoUsage()">validateMockitoUsage</A>, <A HREF="../../org/mockito/Mockito.html#verify(T)">verify</A>, <A HREF="../../org/mockito/Mockito.html#verify(T, org.mockito.verification.VerificationMode)">verify</A>, <A HREF="../../org/mockito/Mockito.html#verifyNoMoreInteractions(java.lang.Object...)">verifyNoMoreInteractions</A>, <A HREF="../../org/mockito/Mockito.html#verifyZeroInteractions(java.lang.Object...)">verifyZeroInteractions</A>, <A HREF="../../org/mockito/Mockito.html#when(T)">when</A>, <A HREF="../../org/mockito/Mockito.html#withSettings()">withSettings</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_org.mockito.Matchers"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class org.mockito.<A HREF="../../org/mockito/Matchers.html" title="class in org.mockito">Matchers</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="../../org/mockito/Matchers.html#any()">any</A>, <A HREF="../../org/mockito/Matchers.html#any(java.lang.Class)">any</A>, <A HREF="../../org/mockito/Matchers.html#anyBoolean()">anyBoolean</A>, <A HREF="../../org/mockito/Matchers.html#anyByte()">anyByte</A>, <A HREF="../../org/mockito/Matchers.html#anyChar()">anyChar</A>, <A HREF="../../org/mockito/Matchers.html#anyCollection()">anyCollection</A>, <A HREF="../../org/mockito/Matchers.html#anyCollectionOf(java.lang.Class)">anyCollectionOf</A>, <A HREF="../../org/mockito/Matchers.html#anyDouble()">anyDouble</A>, <A HREF="../../org/mockito/Matchers.html#anyFloat()">anyFloat</A>, <A HREF="../../org/mockito/Matchers.html#anyInt()">anyInt</A>, <A HREF="../../org/mockito/Matchers.html#anyList()">anyList</A>, <A HREF="../../org/mockito/Matchers.html#anyListOf(java.lang.Class)">anyListOf</A>, <A HREF="../../org/mockito/Matchers.html#anyLong()">anyLong</A>, <A HREF="../../org/mockito/Matchers.html#anyMap()">anyMap</A>, <A HREF="../../org/mockito/Matchers.html#anyObject()">anyObject</A>, <A HREF="../../org/mockito/Matchers.html#anySet()">anySet</A>, <A HREF="../../org/mockito/Matchers.html#anySetOf(java.lang.Class)">anySetOf</A>, <A HREF="../../org/mockito/Matchers.html#anyShort()">anyShort</A>, <A HREF="../../org/mockito/Matchers.html#anyString()">anyString</A>, <A HREF="../../org/mockito/Matchers.html#anyVararg()">anyVararg</A>, <A HREF="../../org/mockito/Matchers.html#argThat(org.hamcrest.Matcher)">argThat</A>, <A HREF="../../org/mockito/Matchers.html#booleanThat(org.hamcrest.Matcher)">booleanThat</A>, <A HREF="../../org/mockito/Matchers.html#byteThat(org.hamcrest.Matcher)">byteThat</A>, <A HREF="../../org/mockito/Matchers.html#charThat(org.hamcrest.Matcher)">charThat</A>, <A HREF="../../org/mockito/Matchers.html#contains(java.lang.String)">contains</A>, <A HREF="../../org/mockito/Matchers.html#doubleThat(org.hamcrest.Matcher)">doubleThat</A>, <A HREF="../../org/mockito/Matchers.html#endsWith(java.lang.String)">endsWith</A>, <A HREF="../../org/mockito/Matchers.html#eq(boolean)">eq</A>, <A HREF="../../org/mockito/Matchers.html#eq(byte)">eq</A>, <A HREF="../../org/mockito/Matchers.html#eq(char)">eq</A>, <A HREF="../../org/mockito/Matchers.html#eq(double)">eq</A>, <A HREF="../../org/mockito/Matchers.html#eq(float)">eq</A>, <A HREF="../../org/mockito/Matchers.html#eq(int)">eq</A>, <A HREF="../../org/mockito/Matchers.html#eq(long)">eq</A>, <A HREF="../../org/mockito/Matchers.html#eq(short)">eq</A>, <A HREF="../../org/mockito/Matchers.html#eq(T)">eq</A>, <A HREF="../../org/mockito/Matchers.html#floatThat(org.hamcrest.Matcher)">floatThat</A>, <A HREF="../../org/mockito/Matchers.html#intThat(org.hamcrest.Matcher)">intThat</A>, <A HREF="../../org/mockito/Matchers.html#isA(java.lang.Class)">isA</A>, <A HREF="../../org/mockito/Matchers.html#isNotNull()">isNotNull</A>, <A HREF="../../org/mockito/Matchers.html#isNull()">isNull</A>, <A HREF="../../org/mockito/Matchers.html#longThat(org.hamcrest.Matcher)">longThat</A>, <A HREF="../../org/mockito/Matchers.html#matches(java.lang.String)">matches</A>, <A HREF="../../org/mockito/Matchers.html#notNull()">notNull</A>, <A HREF="../../org/mockito/Matchers.html#refEq(T, java.lang.String...)">refEq</A>, <A HREF="../../org/mockito/Matchers.html#same(T)">same</A>, <A HREF="../../org/mockito/Matchers.html#shortThat(org.hamcrest.Matcher)">shortThat</A>, <A HREF="../../org/mockito/Matchers.html#startsWith(java.lang.String)">startsWith</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class java.lang.Object</B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
</TR>
</TABLE>
&nbsp;
<P>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Constructor Detail</B></FONT></TH>
</TR>
</TABLE>
<A NAME="BDDMockito()"><!-- --></A><H3>
BDDMockito</H3>
<PRE>
public <B>BDDMockito</B>()</PRE>
<DL>
</DL>
<!-- ============ METHOD DETAIL ========== -->
<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Method Detail</B></FONT></TH>
</TR>
</TABLE>
<A NAME="given(java.lang.Object)"><!-- --></A><A NAME="given(T)"><!-- --></A><H3>
given</H3>
<PRE>
public static &lt;T&gt; <A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="interface in org.mockito">BDDMockito.BDDMyOngoingStubbing</A>&lt;T&gt; <B>given</B>(T&nbsp;methodCall)</PRE>
<DL>
<DD>see original <A HREF="../../org/mockito/Mockito.html#when(T)"><CODE>Mockito.when(Object)</CODE></A>
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="willThrow(java.lang.Throwable)"><!-- --></A><H3>
willThrow</H3>
<PRE>
public static <A HREF="../../org/mockito/BDDMockito.BDDStubber.html" title="interface in org.mockito">BDDMockito.BDDStubber</A> <B>willThrow</B>(java.lang.Throwable&nbsp;toBeThrown)</PRE>
<DL>
<DD>see original <A HREF="../../org/mockito/Mockito.html#doThrow(java.lang.Throwable)"><CODE>Mockito.doThrow(Throwable)</CODE></A>
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="willAnswer(org.mockito.stubbing.Answer)"><!-- --></A><H3>
willAnswer</H3>
<PRE>
public static <A HREF="../../org/mockito/BDDMockito.BDDStubber.html" title="interface in org.mockito">BDDMockito.BDDStubber</A> <B>willAnswer</B>(<A HREF="../../org/mockito/stubbing/Answer.html" title="interface in org.mockito.stubbing">Answer</A>&nbsp;answer)</PRE>
<DL>
<DD>see original <A HREF="../../org/mockito/Mockito.html#doAnswer(org.mockito.stubbing.Answer)"><CODE>Mockito.doAnswer(Answer)</CODE></A>
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="willDoNothing()"><!-- --></A><H3>
willDoNothing</H3>
<PRE>
public static <A HREF="../../org/mockito/BDDMockito.BDDStubber.html" title="interface in org.mockito">BDDMockito.BDDStubber</A> <B>willDoNothing</B>()</PRE>
<DL>
<DD>see original <A HREF="../../org/mockito/Mockito.html#doNothing()"><CODE>Mockito.doNothing()</CODE></A>
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="willReturn(java.lang.Object)"><!-- --></A><H3>
willReturn</H3>
<PRE>
public static <A HREF="../../org/mockito/BDDMockito.BDDStubber.html" title="interface in org.mockito">BDDMockito.BDDStubber</A> <B>willReturn</B>(java.lang.Object&nbsp;toBeReturned)</PRE>
<DL>
<DD>see original <A HREF="../../org/mockito/Mockito.html#doReturn(java.lang.Object)"><CODE>Mockito.doReturn(Object)</CODE></A>
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="willCallRealMethod()"><!-- --></A><H3>
willCallRealMethod</H3>
<PRE>
public static <A HREF="../../org/mockito/BDDMockito.BDDStubber.html" title="interface in org.mockito">BDDMockito.BDDStubber</A> <B>willCallRealMethod</B>()</PRE>
<DL>
<DD>see original <A HREF="../../org/mockito/Mockito.html#doCallRealMethod()"><CODE>Mockito.doCallRealMethod()</CODE></A>
<P>
<DD><DL>
</DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/BDDMockito.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../org/mockito/ArgumentMatcher.html" title="class in org.mockito"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../org/mockito/BDDMockito.BDDMyOngoingStubbing.html" title="interface in org.mockito"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../index.html?org/mockito/BDDMockito.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="BDDMockito.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;<A HREF="#nested_class_summary">NESTED</A>&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_org.mockito.Mockito">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
</BODY>
</HTML>

View File

@ -1,191 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.5.0_22) on Mon May 24 23:03:13 CEST 2010 -->
<TITLE>
Captor (Mockito API)
</TITLE>
<META NAME="keywords" CONTENT="org.mockito.Captor class">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../stylesheet.css" TITLE="Style">
<SCRIPT type="text/javascript">
function windowTitle()
{
parent.document.title="Captor (Mockito API)";
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>
</HEAD>
<BODY BGCOLOR="white" onload="windowTitle();">
<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/Captor.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../org/mockito/BDDMockito.BDDStubberImpl.html" title="class in org.mockito"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../org/mockito/InjectMocks.html" title="annotation in org.mockito"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../index.html?org/mockito/Captor.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="Captor.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;REQUIRED&nbsp;|&nbsp;OPTIONAL</FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;ELEMENT</FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->
<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
org.mockito</FONT>
<BR>
Annotation Type Captor</H2>
<HR>
<DL>
<DT><PRE><FONT SIZE="-1">@Retention(value=RUNTIME)
@Target(value=FIELD)
@Documented
</FONT>public @interface <B>Captor</B></DL>
</PRE>
<P>
Allows shorthand <A HREF="../../org/mockito/ArgumentCaptor.html" title="class in org.mockito"><CODE>ArgumentCaptor</CODE></A> creation on fields.
<p>Example:
<pre>
public class Test{
&#64;Captor ArgumentCaptor&lt;AsyncCallback&lt;Foo&gt;&gt; captor;
&#64;Before
public void init(){
MockitoAnnotations.initMocks(this);
}
&#64;Test public void shouldDoSomethingUseful() {
//...
verify(mock.doStuff(captor.capture()));
assertEquals("foo", captor.getValue());
}
}
</pre>
<p>
One of the advantages of using &#64;Captor annotation is that you can avoid warnings related capturing complex generic types.
<P>
<P>
<P>
<P>
<!-- ========= END OF CLASS DATA ========= -->
<HR>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/Captor.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../org/mockito/BDDMockito.BDDStubberImpl.html" title="class in org.mockito"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../org/mockito/InjectMocks.html" title="annotation in org.mockito"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../index.html?org/mockito/Captor.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="Captor.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;REQUIRED&nbsp;|&nbsp;OPTIONAL</FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;ELEMENT</FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
</BODY>
</HTML>

View File

@ -1,324 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.5.0_22) on Mon May 24 23:03:13 CEST 2010 -->
<TITLE>
InOrder (Mockito API)
</TITLE>
<META NAME="keywords" CONTENT="org.mockito.InOrder interface">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../stylesheet.css" TITLE="Style">
<SCRIPT type="text/javascript">
function windowTitle()
{
parent.document.title="InOrder (Mockito API)";
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>
</HEAD>
<BODY BGCOLOR="white" onload="windowTitle();">
<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/InOrder.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../org/mockito/InjectMocks.html" title="annotation in org.mockito"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../org/mockito/Matchers.html" title="class in org.mockito"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../index.html?org/mockito/InOrder.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="InOrder.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->
<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
org.mockito</FONT>
<BR>
Interface InOrder</H2>
<DL>
<DT><B>All Known Implementing Classes:</B> <DD><A HREF="../../org/mockito/internal/InOrderImpl.html" title="class in org.mockito.internal">InOrderImpl</A></DD>
</DL>
<HR>
<DL>
<DT><PRE>public interface <B>InOrder</B></DL>
</PRE>
<P>
Allows verification in order. E.g:
<pre>
InOrder inOrder = inOrder(firstMock, secondMock);
inOrder.verify(firstMock).add("was called first");
inOrder.verify(secondMock).add("was called second");
</pre>
As of Mockito 1.8.4 you can verifyNoMoreInvocations() in order-sensitive way. Read more: <A HREF="../../org/mockito/InOrder.html#verifyNoMoreInteractions()"><CODE>verifyNoMoreInteractions()</CODE></A>
<p>
See examples in javadoc for <A HREF="../../org/mockito/Mockito.html" title="class in org.mockito"><CODE>Mockito</CODE></A> class
<P>
<P>
<HR>
<P>
<!-- ========== METHOD SUMMARY =========== -->
<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Method Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY="">
<TR ALIGN="right" VALIGN="">
<TD NOWRAP><FONT SIZE="-1">
<CODE>&lt;T&gt; T</CODE></FONT></TD>
</TR>
</TABLE>
</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/InOrder.html#verify(T)">verify</A></B>(T&nbsp;mock)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Verifies interaction <b>happened once</b> in order.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY="">
<TR ALIGN="right" VALIGN="">
<TD NOWRAP><FONT SIZE="-1">
<CODE>&lt;T&gt; T</CODE></FONT></TD>
</TR>
</TABLE>
</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/InOrder.html#verify(T, org.mockito.verification.VerificationMode)">verify</A></B>(T&nbsp;mock,
<A HREF="../../org/mockito/verification/VerificationMode.html" title="interface in org.mockito.verification">VerificationMode</A>&nbsp;mode)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Verifies interaction in order.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/InOrder.html#verifyNoMoreInteractions()">verifyNoMoreInteractions</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Verifies that no more interactions happened <b>in order</b>.</TD>
</TR>
</TABLE>
&nbsp;
<P>
<!-- ============ METHOD DETAIL ========== -->
<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Method Detail</B></FONT></TH>
</TR>
</TABLE>
<A NAME="verify(java.lang.Object)"><!-- --></A><A NAME="verify(T)"><!-- --></A><H3>
verify</H3>
<PRE>
&lt;T&gt; T <B>verify</B>(T&nbsp;mock)</PRE>
<DL>
<DD>Verifies interaction <b>happened once</b> in order.
<p>
Alias to <code>inOrder.verify(mock, times(1))</code>
<p>
Example:
<pre>
InOrder inOrder = inOrder(firstMock, secondMock);
inOrder.verify(firstMock).someMethod("was called first");
inOrder.verify(secondMock).someMethod("was called second");
</pre>
See examples in javadoc for <A HREF="../../org/mockito/Mockito.html" title="class in org.mockito"><CODE>Mockito</CODE></A> class
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>mock</CODE> - to be verified
<DT><B>Returns:</B><DD>mock object itself</DL>
</DD>
</DL>
<HR>
<A NAME="verify(java.lang.Object,org.mockito.verification.VerificationMode)"><!-- --></A><A NAME="verify(T, org.mockito.verification.VerificationMode)"><!-- --></A><H3>
verify</H3>
<PRE>
&lt;T&gt; T <B>verify</B>(T&nbsp;mock,
<A HREF="../../org/mockito/verification/VerificationMode.html" title="interface in org.mockito.verification">VerificationMode</A>&nbsp;mode)</PRE>
<DL>
<DD>Verifies interaction in order. E.g:
<pre>
InOrder inOrder = inOrder(firstMock, secondMock);
inOrder.verify(firstMock, times(2)).someMethod("was called first two times");
inOrder.verify(secondMock, atLeastOnce()).someMethod("was called second at least once");
</pre>
See examples in javadoc for <A HREF="../../org/mockito/Mockito.html" title="class in org.mockito"><CODE>Mockito</CODE></A> class
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>mock</CODE> - to be verified<DD><CODE>mode</CODE> - for example times(x) or atLeastOnce()
<DT><B>Returns:</B><DD>mock object itself</DL>
</DD>
</DL>
<HR>
<A NAME="verifyNoMoreInteractions()"><!-- --></A><H3>
verifyNoMoreInteractions</H3>
<PRE>
void <B>verifyNoMoreInteractions</B>()</PRE>
<DL>
<DD>Verifies that no more interactions happened <b>in order</b>.
Different from <A HREF="../../org/mockito/Mockito.html#verifyNoMoreInteractions(java.lang.Object...)"><CODE>Mockito.verifyNoMoreInteractions(Object...)</CODE></A> because the order of verification matters.
<p>
Example:
<pre>
mock.foo(); //1st
mock.bar(); //2nd
mock.baz(); //3rd
InOrder inOrder = inOrder(mock);
inOrder.verify(mock).bar(); //2n
inOrder.verify(mock).baz(); //3rd (last method)
//passes because there are no more interactions after last method:
inOrder.verifyNoMoreInteractions();
//however this fails because 1st method was not verified:
Mockito.verifyNoMoreInteractions(mock);
</pre>
<P>
<DD><DL>
</DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/InOrder.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../org/mockito/InjectMocks.html" title="annotation in org.mockito"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../org/mockito/Matchers.html" title="class in org.mockito"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../index.html?org/mockito/InOrder.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="InOrder.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
</BODY>
</HTML>

View File

@ -1,211 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.5.0_22) on Mon May 24 23:03:13 CEST 2010 -->
<TITLE>
InjectMocks (Mockito API)
</TITLE>
<META NAME="keywords" CONTENT="org.mockito.InjectMocks class">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../stylesheet.css" TITLE="Style">
<SCRIPT type="text/javascript">
function windowTitle()
{
parent.document.title="InjectMocks (Mockito API)";
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>
</HEAD>
<BODY BGCOLOR="white" onload="windowTitle();">
<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/InjectMocks.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../org/mockito/Captor.html" title="annotation in org.mockito"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../org/mockito/InOrder.html" title="interface in org.mockito"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../index.html?org/mockito/InjectMocks.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="InjectMocks.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;REQUIRED&nbsp;|&nbsp;OPTIONAL</FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;ELEMENT</FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->
<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
org.mockito</FONT>
<BR>
Annotation Type InjectMocks</H2>
<HR>
<DL>
<DT><PRE><FONT SIZE="-1">@Documented
@Target(value=FIELD)
@Retention(value=RUNTIME)
</FONT>public @interface <B>InjectMocks</B></DL>
</PRE>
<P>
<ul>
<li>Allows shorthand mock and spy injection.</li>
<li>Minimizes repetitive mock and spy injection.</li>
</ul>
<p>
Currently it only supports setter injection. If you prefer constructor injection - please contribute a patch.
<p>
Mockito tries to inject by type (using name in case types are the same).
Mockito does not throw anything when injection fails - you will have to satisfy the dependencies manually.
<p>
Example:
<pre>
public class ArticleManagerTest extends SampleBaseTestCase {
&#064;Mock private ArticleCalculator calculator;
&#064;Mock private ArticleDatabase database;
&#064;Spy private UserProvider userProvider = new ConsumerUserProvider();
&#064;InjectMocks private ArticleManager manager = new ArticleManager();
&#064;Test public void shouldDoSomething() {
manager.initiateArticle();
verify(database).addListener(any(ArticleListener.class));
}
}
public class SampleBaseTestCase {
&#064;Before public void initMocks() {
MockitoAnnotations.initMocks(this);
}
}
</pre>
<b>The field annotated with &#064;InjectMocks must be initialized.</b>
<p>
<b><code>MockitoAnnotations.injectMocks(this)</code></b> method has to called to initialize annotated objects.
<p>
In above example, <code>injectMocks()</code> is called in &#064;Before (JUnit4) method of test's base class.
For JUnit3 <code>injectMocks()</code> can go to <code>setup()</code> method of a base class.
You can also put injectMocks() in your JUnit runner (&#064;RunWith) or use built-in runners: <A HREF="../../org/mockito/runners/MockitoJUnitRunner.html" title="class in org.mockito.runners"><CODE>MockitoJUnitRunner</CODE></A>
<P>
<P>
<P>
<P>
<!-- ========= END OF CLASS DATA ========= -->
<HR>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/InjectMocks.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../org/mockito/Captor.html" title="annotation in org.mockito"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../org/mockito/InOrder.html" title="interface in org.mockito"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../index.html?org/mockito/InjectMocks.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="InjectMocks.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;REQUIRED&nbsp;|&nbsp;OPTIONAL</FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;ELEMENT</FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
</BODY>
</HTML>

File diff suppressed because it is too large Load Diff

View File

@ -1,284 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.5.0_22) on Mon May 24 23:03:13 CEST 2010 -->
<TITLE>
Mock (Mockito API)
</TITLE>
<META NAME="keywords" CONTENT="org.mockito.Mock class">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../stylesheet.css" TITLE="Style">
<SCRIPT type="text/javascript">
function windowTitle()
{
parent.document.title="Mock (Mockito API)";
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>
</HEAD>
<BODY BGCOLOR="white" onload="windowTitle();">
<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/Mock.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../org/mockito/Matchers.html" title="class in org.mockito"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../org/mockito/Mockito.html" title="class in org.mockito"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../index.html?org/mockito/Mock.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="Mock.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;REQUIRED&nbsp;|&nbsp;<A HREF="#annotation_type_optional_element_summary">OPTIONAL</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#annotation_type_element_detail">ELEMENT</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->
<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
org.mockito</FONT>
<BR>
Annotation Type Mock</H2>
<HR>
<DL>
<DT><PRE><FONT SIZE="-1">@Target(value=FIELD)
@Retention(value=RUNTIME)
@Documented
</FONT>public @interface <B>Mock</B></DL>
</PRE>
<P>
<ul>
<li>Allows shorthand mock creation.</li>
<li>Minimizes repetitive mock creation code.</li>
<li>Makes the test class more readable.</li>
<li>Makes the verification error easier to read because the <b>field name</b> is used to identify the mock.</li>
</ul>
<pre>
public class ArticleManagerTest extends SampleBaseTestCase {
&#064;Mock private ArticleCalculator calculator;
&#064;Mock(name = "dbMock") private ArticleDatabase database;
&#064;Mock(answer = RETURNS_MOCKS) private UserProvider userProvider;
private ArticleManager manager;
&#064;Before public void setup() {
manager = new ArticleManager(userProvider, database, calculator);
}
}
public class SampleBaseTestCase {
&#064;Before public void initMocks() {
MockitoAnnotations.initMocks(this);
}
}
</pre>
<b><code>MockitoAnnotations.initMocks(this)</code></b> method has to called to initialize annotated mocks.
<p>
In above example, <code>initMocks()</code> is called in &#064;Before (JUnit4) method of test's base class.
For JUnit3 <code>initMocks()</code> can go to <code>setup()</code> method of a base class.
You can also put initMocks() in your JUnit runner (&#064;RunWith) or use built-in runners: <A HREF="../../org/mockito/runners/MockitoJUnitRunner.html" title="class in org.mockito.runners"><CODE>MockitoJUnitRunner</CODE></A>
<P>
<P>
<HR>
<P>
<!-- =========== ANNOTATION TYPE OPTIONAL MEMBER SUMMARY =========== -->
<A NAME="annotation_type_optional_element_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Optional Element Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../org/mockito/Answers.html" title="enum in org.mockito">Answers</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/Mock.html#answer()">answer</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.Class&lt;?&gt;[]</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/Mock.html#extraInterfaces()">extraInterfaces</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/Mock.html#name()">name</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
</TABLE>
&nbsp;
<P>
<A NAME="answer()"><!-- --></A><H3>
answer</H3>
<PRE>
public abstract <A HREF="../../org/mockito/Answers.html" title="enum in org.mockito">Answers</A> <B>answer</B></PRE>
<DL>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
<DL>
<DT><B>Default:</B><DD>RETURNS_DEFAULTS</DD>
</DL>
</DL>
<HR>
<A NAME="name()"><!-- --></A><H3>
name</H3>
<PRE>
public abstract java.lang.String <B>name</B></PRE>
<DL>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
<DL>
<DT><B>Default:</B><DD>""</DD>
</DL>
</DL>
<HR>
<A NAME="extraInterfaces()"><!-- --></A><H3>
extraInterfaces</H3>
<PRE>
public abstract java.lang.Class&lt;?&gt;[] <B>extraInterfaces</B></PRE>
<DL>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
<DL>
<DT><B>Default:</B><DD>{}</DD>
</DL>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/Mock.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../org/mockito/Matchers.html" title="class in org.mockito"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../org/mockito/Mockito.html" title="class in org.mockito"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../index.html?org/mockito/Mock.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="Mock.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;REQUIRED&nbsp;|&nbsp;<A HREF="#annotation_type_optional_element_summary">OPTIONAL</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#annotation_type_element_detail">ELEMENT</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
</BODY>
</HTML>

View File

@ -1,409 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.5.0_22) on Mon May 24 23:03:13 CEST 2010 -->
<TITLE>
MockSettings (Mockito API)
</TITLE>
<META NAME="keywords" CONTENT="org.mockito.MockSettings interface">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../stylesheet.css" TITLE="Style">
<SCRIPT type="text/javascript">
function windowTitle()
{
parent.document.title="MockSettings (Mockito API)";
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>
</HEAD>
<BODY BGCOLOR="white" onload="windowTitle();">
<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/MockSettings.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../org/mockito/MockitoDebugger.html" title="interface in org.mockito"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../org/mockito/ReturnValues.html" title="interface in org.mockito"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../index.html?org/mockito/MockSettings.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="MockSettings.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->
<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
org.mockito</FONT>
<BR>
Interface MockSettings</H2>
<DL>
<DT><B>All Superinterfaces:</B> <DD>java.io.Serializable</DD>
</DL>
<DL>
<DT><B>All Known Implementing Classes:</B> <DD><A HREF="../../org/mockito/internal/creation/MockSettingsImpl.html" title="class in org.mockito.internal.creation">MockSettingsImpl</A></DD>
</DL>
<HR>
<DL>
<DT><PRE>public interface <B>MockSettings</B><DT>extends java.io.Serializable</DL>
</PRE>
<P>
Allows mock creation with additional mock settings.
<p>
Don't use it too often.
Consider writing simple tests that use simple mocks.
Repeat after me: simple tests push simple, KISSy, readable & maintainable code.
If you cannot write a test in a simple way - refactor the code under test.
<p>
Examples of mock settings:
<pre>
//Creates mock with different default answer & name
Foo mock = mock(Foo.class, withSettings()
.defaultAnswer(RETURNS_SMART_NULLS)
.name("cool mockie"));
//Creates mock with different default answer, descriptive name and extra interfaces
Foo mock = mock(Foo.class, withSettings()
.defaultAnswer(RETURNS_SMART_NULLS)
.name("cool mockie")
.extraInterfaces(Bar.class));
</pre>
<A HREF="../../org/mockito/MockSettings.html" title="interface in org.mockito"><CODE>MockSettings</CODE></A> has been introduced for two reasons.
Firstly, to make it easy to add another mock setting when the demand comes.
Secondly, to enable combining together different mock settings without introducing zillions of overloaded mock() methods.
<P>
<P>
<HR>
<P>
<!-- ========== METHOD SUMMARY =========== -->
<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Method Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../org/mockito/MockSettings.html" title="interface in org.mockito">MockSettings</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/MockSettings.html#defaultAnswer(org.mockito.stubbing.Answer)">defaultAnswer</A></B>(<A HREF="../../org/mockito/stubbing/Answer.html" title="interface in org.mockito.stubbing">Answer</A>&nbsp;defaultAnswer)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Specifies default answers to interactions.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../org/mockito/MockSettings.html" title="interface in org.mockito">MockSettings</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/MockSettings.html#extraInterfaces(java.lang.Class...)">extraInterfaces</A></B>(java.lang.Class&lt;?&gt;...&nbsp;interfaces)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Specifies extra interfaces the mock should implement.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../org/mockito/MockSettings.html" title="interface in org.mockito">MockSettings</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/MockSettings.html#name(java.lang.String)">name</A></B>(java.lang.String&nbsp;name)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Specifies mock name.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../org/mockito/MockSettings.html" title="interface in org.mockito">MockSettings</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/MockSettings.html#serializable()">serializable</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Configures the mock to be serializable.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../org/mockito/MockSettings.html" title="interface in org.mockito">MockSettings</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/mockito/MockSettings.html#spiedInstance(java.lang.Object)">spiedInstance</A></B>(java.lang.Object&nbsp;instance)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Specifies the instance to spy on.</TD>
</TR>
</TABLE>
&nbsp;
<P>
<!-- ============ METHOD DETAIL ========== -->
<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Method Detail</B></FONT></TH>
</TR>
</TABLE>
<A NAME="extraInterfaces(java.lang.Class...)"><!-- --></A><H3>
extraInterfaces</H3>
<PRE>
<A HREF="../../org/mockito/MockSettings.html" title="interface in org.mockito">MockSettings</A> <B>extraInterfaces</B>(java.lang.Class&lt;?&gt;...&nbsp;interfaces)</PRE>
<DL>
<DD>Specifies extra interfaces the mock should implement. Might be useful for legacy code or some corner cases.
For background, see issue 51 <a href="http://code.google.com/p/mockito/issues/detail?id=51">here</a>
<p>
This mysterious feature should be used very occasionally.
The object under test should know exactly its collaborators & dependencies.
If you happen to use it often than please make sure you are really producing simple, clean & readable code.
<p>
Examples:
<pre>
Foo foo = mock(Foo.class, withSettings().extraInterfaces(Bar.class, Baz.class));
//now, the mock implements extra interfaces, so following casting is possible:
Bar bar = (Bar) foo;
Baz baz = (Baz) foo;
</pre>
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>interfaces</CODE> - extra interfaces the should implement.
<DT><B>Returns:</B><DD>settings instance so that you can fluently specify other settings</DL>
</DD>
</DL>
<HR>
<A NAME="name(java.lang.String)"><!-- --></A><H3>
name</H3>
<PRE>
<A HREF="../../org/mockito/MockSettings.html" title="interface in org.mockito">MockSettings</A> <B>name</B>(java.lang.String&nbsp;name)</PRE>
<DL>
<DD>Specifies mock name. Naming mocks can be helpful for debugging - the name is used in all verification errors.
<p>
Beware that naming mocks is not a solution for complex code which uses too many mocks or collaborators.
<b>If you have too many mocks then refactor the code</b> so that it's easy to test/debug without necessity of naming mocks.
<p>
<b>If you use &#064;Mock annotation then you've got naming mocks for free!</b> &#064;Mock uses field name as mock name. <A HREF="../../org/mockito/Mock.html" title="annotation in org.mockito"><CODE>Read more.</CODE></A>
<p>
Examples:
<pre>
Foo foo = mock(Foo.class, withSettings().name("foo"));
//Below does exactly the same:
Foo foo = mock(Foo.class, "foo");
</pre>
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>name</CODE> - the name of the mock, later used in all verification errors
<DT><B>Returns:</B><DD>settings instance so that you can fluently specify other settings</DL>
</DD>
</DL>
<HR>
<A NAME="spiedInstance(java.lang.Object)"><!-- --></A><H3>
spiedInstance</H3>
<PRE>
<A HREF="../../org/mockito/MockSettings.html" title="interface in org.mockito">MockSettings</A> <B>spiedInstance</B>(java.lang.Object&nbsp;instance)</PRE>
<DL>
<DD>Specifies the instance to spy on. Makes sense only for spies/partial mocks.
Sets the real implementation to be called when the method is called on a mock object.
<p>
As usual you are going to read <b>the partial mock warning</b>:
Object oriented programming is more less tackling complexity by dividing the complexity into separate, specific, SRPy objects.
How does partial mock fit into this paradigm? Well, it just doesn't...
Partial mock usually means that the complexity has been moved to a different method on the same object.
In most cases, this is not the way you want to design your application.
<p>
However, there are rare cases when partial mocks come handy:
dealing with code you cannot change easily (3rd party interfaces, interim refactoring of legacy code etc.)
However, I wouldn't use partial mocks for new, test-driven & well-designed code.
<p>
Enough warnings about partial mocks, see an example how spiedInstance() works:
<pre>
Foo foo = mock(Foo.class, spiedInstance(fooInstance));
//Below does exactly the same:
Foo foo = spy(fooInstance);
</pre>
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>instance</CODE> - to spy on
<DT><B>Returns:</B><DD>settings instance so that you can fluently specify other settings</DL>
</DD>
</DL>
<HR>
<A NAME="defaultAnswer(org.mockito.stubbing.Answer)"><!-- --></A><H3>
defaultAnswer</H3>
<PRE>
<A HREF="../../org/mockito/MockSettings.html" title="interface in org.mockito">MockSettings</A> <B>defaultAnswer</B>(<A HREF="../../org/mockito/stubbing/Answer.html" title="interface in org.mockito.stubbing">Answer</A>&nbsp;defaultAnswer)</PRE>
<DL>
<DD>Specifies default answers to interactions.
It's quite advanced feature and typically you don't need it to write decent tests.
However it can be helpful when working with legacy systems.
<p>
It is the default answer so it will be used <b>only when you don't</b> stub the method call.
<pre>
Foo mock = mock(Foo.class, withSettings().defaultAnswer(RETURNS_SMART_NULLS));
Foo mockTwo = mock(Foo.class, withSettings().defaultAnswer(new YourOwnAnswer()));
//Below does exactly the same:
Foo mockTwo = mock(Foo.class, new YourOwnAnswer());
</pre>
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>defaultAnswer</CODE> - default answer to be used by mock when not stubbed
<DT><B>Returns:</B><DD>settings instance so that you can fluently specify other settings</DL>
</DD>
</DL>
<HR>
<A NAME="serializable()"><!-- --></A><H3>
serializable</H3>
<PRE>
<A HREF="../../org/mockito/MockSettings.html" title="interface in org.mockito">MockSettings</A> <B>serializable</B>()</PRE>
<DL>
<DD>Configures the mock to be serializable. With this feature you can use a mock in a place that requires dependencies to be serializable.
<p>
WARNING: This should be rarely used in unit testing.
<p>
The behaviour was implemented for a specific use case of a BDD spec that had an unreliable external dependency. This
was in a web environment and the objects from the external dependency were being serialized to pass between layers.
<p>
Example:
<pre>
List serializableMock = mock(List.class, withSettings().serializable());
</pre>
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>settings instance so that you can fluently specify other settings</DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/MockSettings.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../org/mockito/MockitoDebugger.html" title="interface in org.mockito"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../org/mockito/ReturnValues.html" title="interface in org.mockito"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../index.html?org/mockito/MockSettings.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="MockSettings.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
</BODY>
</HTML>

Some files were not shown because too many files have changed in this diff Show More