remove clone, fix test server
This commit is contained in:
parent
ee2b2e7db7
commit
d803fab767
28 changed files with 765 additions and 178 deletions
|
@ -15,6 +15,7 @@ ext {
|
|||
user = 'joerg'
|
||||
name = 'net'
|
||||
description = 'Network classes for Java'
|
||||
vendor = 'xbib.org'
|
||||
inceptionYear = '2016'
|
||||
url = 'https://xbib.org/' + user + '/' + name
|
||||
scmUrl = 'https://xbib.org/' + user + '/' + name
|
||||
|
|
|
@ -11,9 +11,18 @@ java {
|
|||
|
||||
jar {
|
||||
manifest {
|
||||
attributes('Implementation-Name': project.name)
|
||||
attributes('Implementation-Version': project.version)
|
||||
attributes('Implementation-Vendor': project.vendor)
|
||||
attributes('X-Compile-Source-JDK': JavaLanguageVersion.of(21).toString())
|
||||
attributes('X-Compile-Target-JDK': JavaLanguageVersion.of(21).toString())
|
||||
}
|
||||
duplicatesStrategy = DuplicatesStrategy.INCLUDE
|
||||
from (project.file('.')) {
|
||||
include 'LICENSE.txt'
|
||||
include 'NOTICE.txt'
|
||||
into 'META-INF'
|
||||
}
|
||||
}
|
||||
|
||||
tasks.withType(JavaCompile).configureEach {
|
||||
|
|
637
net-mail/LICENSE.txt
Normal file
637
net-mail/LICENSE.txt
Normal file
|
@ -0,0 +1,637 @@
|
|||
# Eclipse Public License - v 2.0
|
||||
|
||||
THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
|
||||
PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION
|
||||
OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
|
||||
|
||||
1. DEFINITIONS
|
||||
|
||||
"Contribution" means:
|
||||
|
||||
a) in the case of the initial Contributor, the initial content
|
||||
Distributed under this Agreement, and
|
||||
|
||||
b) in the case of each subsequent Contributor:
|
||||
i) changes to the Program, and
|
||||
ii) additions to the Program;
|
||||
where such changes and/or additions to the Program originate from
|
||||
and are Distributed by that particular Contributor. A Contribution
|
||||
"originates" from a Contributor if it was added to the Program by
|
||||
such Contributor itself or anyone acting on such Contributor's behalf.
|
||||
Contributions do not include changes or additions to the Program that
|
||||
are not Modified Works.
|
||||
|
||||
"Contributor" means any person or entity that Distributes the Program.
|
||||
|
||||
"Licensed Patents" mean patent claims licensable by a Contributor which
|
||||
are necessarily infringed by the use or sale of its Contribution alone
|
||||
or when combined with the Program.
|
||||
|
||||
"Program" means the Contributions Distributed in accordance with this
|
||||
Agreement.
|
||||
|
||||
"Recipient" means anyone who receives the Program under this Agreement
|
||||
or any Secondary License (as applicable), including Contributors.
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source Code or other
|
||||
form, that is based on (or derived from) the Program and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship.
|
||||
|
||||
"Modified Works" shall mean any work in Source Code or other form that
|
||||
results from an addition to, deletion from, or modification of the
|
||||
contents of the Program, including, for purposes of clarity any new file
|
||||
in Source Code form that contains any contents of the Program. Modified
|
||||
Works shall not include works that contain only declarations,
|
||||
interfaces, types, classes, structures, or files of the Program solely
|
||||
in each case in order to link to, bind by name, or subclass the Program
|
||||
or Modified Works thereof.
|
||||
|
||||
"Distribute" means the acts of a) distributing or b) making available
|
||||
in any manner that enables the transfer of a copy.
|
||||
|
||||
"Source Code" means the form of a Program preferred for making
|
||||
modifications, including but not limited to software source code,
|
||||
documentation source, and configuration files.
|
||||
|
||||
"Secondary License" means either the GNU General Public License,
|
||||
Version 2.0, or any later versions of that license, including any
|
||||
exceptions or additional permissions as identified by the initial
|
||||
Contributor.
|
||||
|
||||
2. GRANT OF RIGHTS
|
||||
|
||||
a) Subject to the terms of this Agreement, each Contributor hereby
|
||||
grants Recipient a non-exclusive, worldwide, royalty-free copyright
|
||||
license to reproduce, prepare Derivative Works of, publicly display,
|
||||
publicly perform, Distribute and sublicense the Contribution of such
|
||||
Contributor, if any, and such Derivative Works.
|
||||
|
||||
b) Subject to the terms of this Agreement, each Contributor hereby
|
||||
grants Recipient a non-exclusive, worldwide, royalty-free patent
|
||||
license under Licensed Patents to make, use, sell, offer to sell,
|
||||
import and otherwise transfer the Contribution of such Contributor,
|
||||
if any, in Source Code or other form. This patent license shall
|
||||
apply to the combination of the Contribution and the Program if, at
|
||||
the time the Contribution is added by the Contributor, such addition
|
||||
of the Contribution causes such combination to be covered by the
|
||||
Licensed Patents. The patent license shall not apply to any other
|
||||
combinations which include the Contribution. No hardware per se is
|
||||
licensed hereunder.
|
||||
|
||||
c) Recipient understands that although each Contributor grants the
|
||||
licenses to its Contributions set forth herein, no assurances are
|
||||
provided by any Contributor that the Program does not infringe the
|
||||
patent or other intellectual property rights of any other entity.
|
||||
Each Contributor disclaims any liability to Recipient for claims
|
||||
brought by any other entity based on infringement of intellectual
|
||||
property rights or otherwise. As a condition to exercising the
|
||||
rights and licenses granted hereunder, each Recipient hereby
|
||||
assumes sole responsibility to secure any other intellectual
|
||||
property rights needed, if any. For example, if a third party
|
||||
patent license is required to allow Recipient to Distribute the
|
||||
Program, it is Recipient's responsibility to acquire that license
|
||||
before distributing the Program.
|
||||
|
||||
d) Each Contributor represents that to its knowledge it has
|
||||
sufficient copyright rights in its Contribution, if any, to grant
|
||||
the copyright license set forth in this Agreement.
|
||||
|
||||
e) Notwithstanding the terms of any Secondary License, no
|
||||
Contributor makes additional grants to any Recipient (other than
|
||||
those set forth in this Agreement) as a result of such Recipient's
|
||||
receipt of the Program under the terms of a Secondary License
|
||||
(if permitted under the terms of Section 3).
|
||||
|
||||
3. REQUIREMENTS
|
||||
|
||||
3.1 If a Contributor Distributes the Program in any form, then:
|
||||
|
||||
a) the Program must also be made available as Source Code, in
|
||||
accordance with section 3.2, and the Contributor must accompany
|
||||
the Program with a statement that the Source Code for the Program
|
||||
is available under this Agreement, and informs Recipients how to
|
||||
obtain it in a reasonable manner on or through a medium customarily
|
||||
used for software exchange; and
|
||||
|
||||
b) the Contributor may Distribute the Program under a license
|
||||
different than this Agreement, provided that such license:
|
||||
i) effectively disclaims on behalf of all other Contributors all
|
||||
warranties and conditions, express and implied, including
|
||||
warranties or conditions of title and non-infringement, and
|
||||
implied warranties or conditions of merchantability and fitness
|
||||
for a particular purpose;
|
||||
|
||||
ii) effectively excludes on behalf of all other Contributors all
|
||||
liability for damages, including direct, indirect, special,
|
||||
incidental and consequential damages, such as lost profits;
|
||||
|
||||
iii) does not attempt to limit or alter the recipients' rights
|
||||
in the Source Code under section 3.2; and
|
||||
|
||||
iv) requires any subsequent distribution of the Program by any
|
||||
party to be under a license that satisfies the requirements
|
||||
of this section 3.
|
||||
|
||||
3.2 When the Program is Distributed as Source Code:
|
||||
|
||||
a) it must be made available under this Agreement, or if the
|
||||
Program (i) is combined with other material in a separate file or
|
||||
files made available under a Secondary License, and (ii) the initial
|
||||
Contributor attached to the Source Code the notice described in
|
||||
Exhibit A of this Agreement, then the Program may be made available
|
||||
under the terms of such Secondary Licenses, and
|
||||
|
||||
b) a copy of this Agreement must be included with each copy of
|
||||
the Program.
|
||||
|
||||
3.3 Contributors may not remove or alter any copyright, patent,
|
||||
trademark, attribution notices, disclaimers of warranty, or limitations
|
||||
of liability ("notices") contained within the Program from any copy of
|
||||
the Program which they Distribute, provided that Contributors may add
|
||||
their own appropriate notices.
|
||||
|
||||
4. COMMERCIAL DISTRIBUTION
|
||||
|
||||
Commercial distributors of software may accept certain responsibilities
|
||||
with respect to end users, business partners and the like. While this
|
||||
license is intended to facilitate the commercial use of the Program,
|
||||
the Contributor who includes the Program in a commercial product
|
||||
offering should do so in a manner which does not create potential
|
||||
liability for other Contributors. Therefore, if a Contributor includes
|
||||
the Program in a commercial product offering, such Contributor
|
||||
("Commercial Contributor") hereby agrees to defend and indemnify every
|
||||
other Contributor ("Indemnified Contributor") against any losses,
|
||||
damages and costs (collectively "Losses") arising from claims, lawsuits
|
||||
and other legal actions brought by a third party against the Indemnified
|
||||
Contributor to the extent caused by the acts or omissions of such
|
||||
Commercial Contributor in connection with its distribution of the Program
|
||||
in a commercial product offering. The obligations in this section do not
|
||||
apply to any claims or Losses relating to any actual or alleged
|
||||
intellectual property infringement. In order to qualify, an Indemnified
|
||||
Contributor must: a) promptly notify the Commercial Contributor in
|
||||
writing of such claim, and b) allow the Commercial Contributor to control,
|
||||
and cooperate with the Commercial Contributor in, the defense and any
|
||||
related settlement negotiations. The Indemnified Contributor may
|
||||
participate in any such claim at its own expense.
|
||||
|
||||
For example, a Contributor might include the Program in a commercial
|
||||
product offering, Product X. That Contributor is then a Commercial
|
||||
Contributor. If that Commercial Contributor then makes performance
|
||||
claims, or offers warranties related to Product X, those performance
|
||||
claims and warranties are such Commercial Contributor's responsibility
|
||||
alone. Under this section, the Commercial Contributor would have to
|
||||
defend claims against the other Contributors related to those performance
|
||||
claims and warranties, and if a court requires any other Contributor to
|
||||
pay any damages as a result, the Commercial Contributor must pay
|
||||
those damages.
|
||||
|
||||
5. NO WARRANTY
|
||||
|
||||
EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT
|
||||
PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS"
|
||||
BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
|
||||
IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF
|
||||
TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR
|
||||
PURPOSE. Each Recipient is solely responsible for determining the
|
||||
appropriateness of using and distributing the Program and assumes all
|
||||
risks associated with its exercise of rights under this Agreement,
|
||||
including but not limited to the risks and costs of program errors,
|
||||
compliance with applicable laws, damage to or loss of data, programs
|
||||
or equipment, and unavailability or interruption of operations.
|
||||
|
||||
6. DISCLAIMER OF LIABILITY
|
||||
|
||||
EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT
|
||||
PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS
|
||||
SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST
|
||||
PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE
|
||||
EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
7. GENERAL
|
||||
|
||||
If any provision of this Agreement is invalid or unenforceable under
|
||||
applicable law, it shall not affect the validity or enforceability of
|
||||
the remainder of the terms of this Agreement, and without further
|
||||
action by the parties hereto, such provision shall be reformed to the
|
||||
minimum extent necessary to make such provision valid and enforceable.
|
||||
|
||||
If Recipient institutes patent litigation against any entity
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that the
|
||||
Program itself (excluding combinations of the Program with other software
|
||||
or hardware) infringes such Recipient's patent(s), then such Recipient's
|
||||
rights granted under Section 2(b) shall terminate as of the date such
|
||||
litigation is filed.
|
||||
|
||||
All Recipient's rights under this Agreement shall terminate if it
|
||||
fails to comply with any of the material terms or conditions of this
|
||||
Agreement and does not cure such failure in a reasonable period of
|
||||
time after becoming aware of such noncompliance. If all Recipient's
|
||||
rights under this Agreement terminate, Recipient agrees to cease use
|
||||
and distribution of the Program as soon as reasonably practicable.
|
||||
However, Recipient's obligations under this Agreement and any licenses
|
||||
granted by Recipient relating to the Program shall continue and survive.
|
||||
|
||||
Everyone is permitted to copy and distribute copies of this Agreement,
|
||||
but in order to avoid inconsistency the Agreement is copyrighted and
|
||||
may only be modified in the following manner. The Agreement Steward
|
||||
reserves the right to publish new versions (including revisions) of
|
||||
this Agreement from time to time. No one other than the Agreement
|
||||
Steward has the right to modify this Agreement. The Eclipse Foundation
|
||||
is the initial Agreement Steward. The Eclipse Foundation may assign the
|
||||
responsibility to serve as the Agreement Steward to a suitable separate
|
||||
entity. Each new version of the Agreement will be given a distinguishing
|
||||
version number. The Program (including Contributions) may always be
|
||||
Distributed subject to the version of the Agreement under which it was
|
||||
received. In addition, after a new version of the Agreement is published,
|
||||
Contributor may elect to Distribute the Program (including its
|
||||
Contributions) under the new version.
|
||||
|
||||
Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
|
||||
receives no rights or licenses to the intellectual property of any
|
||||
Contributor under this Agreement, whether expressly, by implication,
|
||||
estoppel or otherwise. All rights in the Program not expressly granted
|
||||
under this Agreement are reserved. Nothing in this Agreement is intended
|
||||
to be enforceable by any entity that is not a Contributor or Recipient.
|
||||
No third-party beneficiary rights are created under this Agreement.
|
||||
|
||||
Exhibit A - Form of Secondary Licenses Notice
|
||||
|
||||
"This Source Code may also be made available under the following
|
||||
Secondary Licenses when the conditions for such availability set forth
|
||||
in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
|
||||
version(s), and exceptions or additional permissions here}."
|
||||
|
||||
Simply including a copy of this Agreement, including this Exhibit A
|
||||
is not sufficient to license the Source Code under Secondary Licenses.
|
||||
|
||||
If it is not possible or desirable to put the notice in a particular
|
||||
file, then You may include the notice in a location (such as a LICENSE
|
||||
file in a relevant directory) where a recipient would be likely to
|
||||
look for such a notice.
|
||||
|
||||
You may add additional accurate notices of copyright ownership.
|
||||
|
||||
---
|
||||
|
||||
## The GNU General Public License (GPL) Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
51 Franklin Street, Fifth Floor
|
||||
Boston, MA 02110-1335
|
||||
USA
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your freedom to
|
||||
share and change it. By contrast, the GNU General Public License is
|
||||
intended to guarantee your freedom to share and change free software--to
|
||||
make sure the software is free for all its users. This General Public
|
||||
License applies to most of the Free Software Foundation's software and
|
||||
to any other program whose authors commit to using it. (Some other Free
|
||||
Software Foundation software is covered by the GNU Library General
|
||||
Public License instead.) You can apply it to your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not price.
|
||||
Our General Public Licenses are designed to make sure that you have the
|
||||
freedom to distribute copies of free software (and charge for this
|
||||
service if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid anyone
|
||||
to deny you these rights or to ask you to surrender the rights. These
|
||||
restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether gratis
|
||||
or for a fee, you must give the recipients all the rights that you have.
|
||||
You must make sure that they, too, receive or can get the source code.
|
||||
And you must show them these terms so they know their rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software patents.
|
||||
We wish to avoid the danger that redistributors of a free program will
|
||||
individually obtain patent licenses, in effect making the program
|
||||
proprietary. To prevent this, we have made it clear that any patent must
|
||||
be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains a
|
||||
notice placed by the copyright holder saying it may be distributed under
|
||||
the terms of this General Public License. The "Program", below, refers
|
||||
to any such program or work, and a "work based on the Program" means
|
||||
either the Program or any derivative work under copyright law: that is
|
||||
to say, a work containing the Program or a portion of it, either
|
||||
verbatim or with modifications and/or translated into another language.
|
||||
(Hereinafter, translation is included without limitation in the term
|
||||
"modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of running
|
||||
the Program is not restricted, and the output from the Program is
|
||||
covered only if its contents constitute a work based on the Program
|
||||
(independent of having been made by running the Program). Whether that
|
||||
is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's source
|
||||
code as you receive it, in any medium, provided that you conspicuously
|
||||
and appropriately publish on each copy an appropriate copyright notice
|
||||
and disclaimer of warranty; keep intact all the notices that refer to
|
||||
this License and to the absence of any warranty; and give any other
|
||||
recipients of the Program a copy of this License along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion of
|
||||
it, thus forming a work based on the Program, and copy and distribute
|
||||
such modifications or work under the terms of Section 1 above, provided
|
||||
that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any part
|
||||
thereof, to be licensed as a whole at no charge to all third parties
|
||||
under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a notice
|
||||
that there is no warranty (or else, saying that you provide a
|
||||
warranty) and that users may redistribute the program under these
|
||||
conditions, and telling the user how to view a copy of this License.
|
||||
(Exception: if the Program itself is interactive but does not
|
||||
normally print such an announcement, your work based on the Program
|
||||
is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program, and
|
||||
can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based on
|
||||
the Program, the distribution of the whole must be on the terms of this
|
||||
License, whose permissions for other licensees extend to the entire
|
||||
whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of a
|
||||
storage or distribution medium does not bring the other work under the
|
||||
scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections 1
|
||||
and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your cost
|
||||
of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer to
|
||||
distribute corresponding source code. (This alternative is allowed
|
||||
only for noncommercial distribution and only if you received the
|
||||
program in object code or executable form with such an offer, in
|
||||
accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source code
|
||||
means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to control
|
||||
compilation and installation of the executable. However, as a special
|
||||
exception, the source code distributed need not include anything that is
|
||||
normally distributed (in either source or binary form) with the major
|
||||
components (compiler, kernel, and so on) of the operating system on
|
||||
which the executable runs, unless that component itself accompanies the
|
||||
executable.
|
||||
|
||||
If distribution of executable or object code is made by offering access
|
||||
to copy from a designated place, then offering equivalent access to copy
|
||||
the source code from the same place counts as distribution of the source
|
||||
code, even though third parties are not compelled to copy the source
|
||||
along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt otherwise
|
||||
to copy, modify, sublicense or distribute the Program is void, and will
|
||||
automatically terminate your rights under this License. However, parties
|
||||
who have received copies, or rights, from you under this License will
|
||||
not have their licenses terminated so long as such parties remain in
|
||||
full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and all
|
||||
its terms and conditions for copying, distributing or modifying the
|
||||
Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further restrictions
|
||||
on the recipients' exercise of the rights granted herein. You are not
|
||||
responsible for enforcing compliance by third parties to this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot distribute
|
||||
so as to satisfy simultaneously your obligations under this License and
|
||||
any other pertinent obligations, then as a consequence you may not
|
||||
distribute the Program at all. For example, if a patent license would
|
||||
not permit royalty-free redistribution of the Program by all those who
|
||||
receive copies directly or indirectly through you, then the only way you
|
||||
could satisfy both it and this License would be to refrain entirely from
|
||||
distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is implemented
|
||||
by public license practices. Many people have made generous
|
||||
contributions to the wide range of software distributed through that
|
||||
system in reliance on consistent application of that system; it is up to
|
||||
the author/donor to decide if he or she is willing to distribute
|
||||
software through any other system and a licensee cannot impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to be
|
||||
a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License may
|
||||
add an explicit geographical distribution limitation excluding those
|
||||
countries, so that distribution is permitted only in or among countries
|
||||
not thus excluded. In such case, this License incorporates the
|
||||
limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new
|
||||
versions of the General Public License from time to time. Such new
|
||||
versions will be similar in spirit to the present version, but may
|
||||
differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and
|
||||
conditions either of that version or of any later version published by
|
||||
the Free Software Foundation. If the Program does not specify a version
|
||||
number of this License, you may choose any version ever published by the
|
||||
Free Software Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the
|
||||
author to ask for permission. For software which is copyrighted by the
|
||||
Free Software Foundation, write to the Free Software Foundation; we
|
||||
sometimes make exceptions for this. Our decision will be guided by the
|
||||
two goals of preserving the free status of all derivatives of our free
|
||||
software and of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND,
|
||||
EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
|
||||
ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH
|
||||
YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
|
||||
NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
||||
AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR
|
||||
DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL
|
||||
DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM
|
||||
(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
|
||||
INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF
|
||||
THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR
|
||||
OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest to
|
||||
attach them to the start of each source file to most effectively convey
|
||||
the exclusion of warranty; and each file should have at least the
|
||||
"copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
One line to give the program's name and a brief idea of what it does.
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type
|
||||
`show w'. This is free software, and you are welcome to redistribute
|
||||
it under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the
|
||||
appropriate parts of the General Public License. Of course, the commands
|
||||
you use may be called something other than `show w' and `show c'; they
|
||||
could even be mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
||||
program `Gnomovision' (which makes passes at compilers) written by
|
||||
James Hacker.
|
||||
|
||||
signature of Ty Coon, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications
|
||||
with the library. If this is what you want to do, use the GNU Library
|
||||
General Public License instead of this License.
|
||||
|
||||
---
|
||||
|
||||
## CLASSPATH EXCEPTION
|
||||
|
||||
Linking this library statically or dynamically with other modules is
|
||||
making a combined work based on this library. Thus, the terms and
|
||||
conditions of the GNU General Public License version 2 cover the whole
|
||||
combination.
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent
|
||||
modules, and to copy and distribute the resulting executable under
|
||||
terms of your choice, provided that you also meet, for each linked
|
||||
independent module, the terms and conditions of the license of that
|
||||
module. An independent module is a module which is not derived from or
|
||||
based on this library. If you modify this library, you may extend this
|
||||
exception to your version of the library, but you are not obligated to
|
||||
do so. If you do not wish to do so, delete this exception statement
|
||||
from your version.
|
|
@ -377,10 +377,7 @@ public class DataHandler {
|
|||
// if it's not set, set it...
|
||||
if (transferFlavors == emptyFlavors)
|
||||
transferFlavors = getDataContentHandler().getTransferDataFlavors();
|
||||
if (transferFlavors == emptyFlavors)
|
||||
return transferFlavors; // no need to clone an empty array
|
||||
else
|
||||
return transferFlavors.clone();
|
||||
return transferFlavors;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -103,8 +103,9 @@ public class Flags {
|
|||
@SuppressWarnings("unchecked")
|
||||
public Flags(Flags flags) {
|
||||
this.system_flags = flags.system_flags;
|
||||
if (flags.user_flags != null)
|
||||
this.user_flags = (Hashtable<String, String>) flags.user_flags.clone();
|
||||
if (flags.user_flags != null) {
|
||||
this.user_flags = flags.user_flags;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -406,30 +407,12 @@ public class Flags {
|
|||
user_flags = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a clone of this Flags object.
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public Object clone() {
|
||||
Flags f = null;
|
||||
try {
|
||||
f = (Flags) super.clone();
|
||||
} catch (CloneNotSupportedException cex) {
|
||||
// ignore, can't happen
|
||||
}
|
||||
if (this.user_flags != null)
|
||||
f.user_flags = (Hashtable<String, String>) this.user_flags.clone();
|
||||
return f;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a string representation of this Flags object.
|
||||
* Note that the exact format of the string is subject to change.
|
||||
*/
|
||||
public String toString() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
if ((system_flags & ANSWERED_BIT) != 0)
|
||||
sb.append("\\Answered ");
|
||||
if ((system_flags & DELETED_BIT) != 0)
|
||||
|
@ -458,7 +441,7 @@ public class Flags {
|
|||
}
|
||||
}
|
||||
|
||||
if (first && sb.length() > 0)
|
||||
if (first && !sb.isEmpty())
|
||||
sb.setLength(sb.length() - 1); // smash trailing space
|
||||
|
||||
return sb.toString();
|
||||
|
@ -550,7 +533,7 @@ public class Flags {
|
|||
System.out.println("fail");
|
||||
|
||||
// check clone with only system flags
|
||||
fc = (Flags)f1.clone();
|
||||
fc = (Flags)f1;
|
||||
if (f1.equals(fc) && fc.equals(f1))
|
||||
System.out.println("success");
|
||||
else
|
||||
|
@ -565,8 +548,8 @@ public class Flags {
|
|||
else
|
||||
System.out.println("fail");
|
||||
|
||||
// check clone
|
||||
fc = (Flags)f1.clone();
|
||||
// check
|
||||
fc = (Flags)f1;
|
||||
if (f1.equals(fc) && fc.equals(f1))
|
||||
System.out.println("success");
|
||||
else
|
||||
|
|
|
@ -1623,8 +1623,7 @@ public abstract class Folder implements AutoCloseable {
|
|||
* of this event will not take effect until after the event is
|
||||
* delivered.
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
Vector<? extends EventListener> v = (Vector<? extends EventListener>) vector.clone();
|
||||
Vector<? extends EventListener> v = new Vector<>(vector);
|
||||
q.enqueue(event, v);
|
||||
}
|
||||
|
||||
|
|
|
@ -611,8 +611,7 @@ public abstract class Service implements AutoCloseable {
|
|||
* of this event will not take effect until after the event is
|
||||
* delivered.
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
Vector<? extends EventListener> v = (Vector<? extends EventListener>) vector.clone();
|
||||
Vector<? extends EventListener> v = new Vector<>(vector);
|
||||
q.enqueue(event, v);
|
||||
}
|
||||
|
||||
|
|
|
@ -2099,10 +2099,6 @@ public class MimeMessage extends Message implements MimePart {
|
|||
/**
|
||||
* Return a <code>Flags</code> object containing the flags for
|
||||
* this message. <p>
|
||||
* <p>
|
||||
* Note that a clone of the internal Flags object is returned, so
|
||||
* modifying the returned Flags object will not affect the flags
|
||||
* of this message.
|
||||
*
|
||||
* @return Flags object containing the flags for this message
|
||||
* @throws MessagingException for failures
|
||||
|
@ -2110,7 +2106,7 @@ public class MimeMessage extends Message implements MimePart {
|
|||
*/
|
||||
@Override
|
||||
public synchronized Flags getFlags() throws MessagingException {
|
||||
return (Flags) flags.clone();
|
||||
return flags;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -63,7 +63,7 @@ public final class AndTerm extends SearchTerm {
|
|||
* @return the search terms
|
||||
*/
|
||||
public SearchTerm[] getTerms() {
|
||||
return terms.clone();
|
||||
return terms;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -36,14 +36,14 @@ public final class FlagTerm extends SearchTerm {
|
|||
*
|
||||
* @serial
|
||||
*/
|
||||
private boolean set;
|
||||
private final boolean set;
|
||||
|
||||
/**
|
||||
* Flags object containing the flags to test.
|
||||
*
|
||||
* @serial
|
||||
*/
|
||||
private Flags flags;
|
||||
private final Flags flags;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
|
@ -62,7 +62,7 @@ public final class FlagTerm extends SearchTerm {
|
|||
* @return the flags
|
||||
*/
|
||||
public Flags getFlags() {
|
||||
return (Flags) flags.clone();
|
||||
return flags;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -82,7 +82,6 @@ public final class FlagTerm extends SearchTerm {
|
|||
*/
|
||||
@Override
|
||||
public boolean match(Message msg) {
|
||||
|
||||
try {
|
||||
Flags f = msg.getFlags();
|
||||
if (set) { // This is easy
|
||||
|
@ -99,23 +98,19 @@ public final class FlagTerm extends SearchTerm {
|
|||
Flags.Flag[] sf = flags.getSystemFlags();
|
||||
|
||||
// Check each flag in the passed in Flags object
|
||||
for (int i = 0; i < sf.length; i++) {
|
||||
if (f.contains(sf[i]))
|
||||
for (Flags.Flag flag : sf) {
|
||||
if (f.contains(flag))
|
||||
// this flag IS set in this Message, get out.
|
||||
return false;
|
||||
}
|
||||
|
||||
String[] s = flags.getUserFlags();
|
||||
|
||||
// Check each flag in the passed in Flags object
|
||||
for (int i = 0; i < s.length; i++) {
|
||||
if (f.contains(s[i]))
|
||||
for (String string : s) {
|
||||
if (f.contains(string))
|
||||
// this flag IS set in this Message, get out.
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
} catch (MessagingException | RuntimeException e) {
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -62,7 +62,7 @@ public final class OrTerm extends SearchTerm {
|
|||
* @return the search terms
|
||||
*/
|
||||
public SearchTerm[] getTerms() {
|
||||
return terms.clone();
|
||||
return terms;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -1621,9 +1621,7 @@ public class IMAPFolder extends Folder implements UIDFolder, ResponseHandler {
|
|||
*/
|
||||
@Override
|
||||
public synchronized Flags getPermanentFlags() {
|
||||
if (permanentFlags == null)
|
||||
return null;
|
||||
return (Flags) (permanentFlags.clone());
|
||||
return permanentFlags;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -3072,7 +3070,7 @@ public class IMAPFolder extends Folder implements UIDFolder, ResponseHandler {
|
|||
checkExists();
|
||||
if (attributes == null)
|
||||
exists(); // do a LIST to set the attributes
|
||||
return attributes == null ? new String[0] : attributes.clone();
|
||||
return attributes == null ? new String[0] : attributes;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -346,7 +346,7 @@ public class IMAPMessage extends MimeMessage implements ReadableMime {
|
|||
*/
|
||||
if (a == null || a.length == 0)
|
||||
a = envelope.sender;
|
||||
return aaclone(a);
|
||||
return a;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -392,11 +392,11 @@ public class IMAPMessage extends MimeMessage implements ReadableMime {
|
|||
loadEnvelope();
|
||||
|
||||
if (type == Message.RecipientType.TO)
|
||||
return aaclone(envelope.to);
|
||||
return envelope.to;
|
||||
else if (type == Message.RecipientType.CC)
|
||||
return aaclone(envelope.cc);
|
||||
return envelope.cc;
|
||||
else if (type == Message.RecipientType.BCC)
|
||||
return aaclone(envelope.bcc);
|
||||
return envelope.bcc;
|
||||
else
|
||||
return super.getRecipients(type);
|
||||
}
|
||||
|
@ -430,7 +430,7 @@ public class IMAPMessage extends MimeMessage implements ReadableMime {
|
|||
*/
|
||||
if (envelope.replyTo == null || envelope.replyTo.length == 0)
|
||||
return getFrom();
|
||||
return aaclone(envelope.replyTo);
|
||||
return envelope.replyTo;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -568,10 +568,7 @@ public class IMAPMessage extends MimeMessage implements ReadableMime {
|
|||
if (bodyLoaded)
|
||||
return super.getContentLanguage();
|
||||
loadBODYSTRUCTURE();
|
||||
if (bs.language != null)
|
||||
return bs.language.clone();
|
||||
else
|
||||
return null;
|
||||
return bs.language;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1693,16 +1690,6 @@ public class IMAPMessage extends MimeMessage implements ReadableMime {
|
|||
return sectionId + "." + what;
|
||||
}
|
||||
|
||||
/*
|
||||
* Clone an array of InternetAddresses.
|
||||
*/
|
||||
private InternetAddress[] aaclone(InternetAddress[] aa) {
|
||||
if (aa == null)
|
||||
return null;
|
||||
else
|
||||
return aa.clone();
|
||||
}
|
||||
|
||||
private Flags _getFlags() {
|
||||
return flags;
|
||||
}
|
||||
|
|
|
@ -127,15 +127,15 @@ public final class Utility {
|
|||
* (with zero indicating the message doesn't satisfy the condition),
|
||||
* sort it, and then convert it to a MessageSet skipping all the zeroes.
|
||||
*/
|
||||
msgs = msgs.clone();
|
||||
Arrays.sort(msgs,
|
||||
Message[] msgCopy = Arrays.copyOf(msgs, msgs.length);
|
||||
Arrays.sort(msgCopy,
|
||||
new Comparator<Message>() {
|
||||
@Override
|
||||
public int compare(Message msg1, Message msg2) {
|
||||
return msg1.getMessageNumber() - msg2.getMessageNumber();
|
||||
}
|
||||
});
|
||||
return toMessageSet(msgs, cond);
|
||||
return toMessageSet(msgCopy, cond);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -16,7 +16,6 @@
|
|||
|
||||
package org.xbib.net.mail.imap.protocol;
|
||||
|
||||
import jakarta.mail.internet.AddressException;
|
||||
import jakarta.mail.internet.InternetAddress;
|
||||
import jakarta.mail.internet.MailDateFormat;
|
||||
import java.text.ParseException;
|
||||
|
@ -217,9 +216,7 @@ class IMAPAddress extends InternetAddress {
|
|||
}
|
||||
|
||||
@Override
|
||||
public InternetAddress[] getGroup(boolean strict) throws AddressException {
|
||||
if (grouplist == null)
|
||||
return null;
|
||||
return grouplist.clone();
|
||||
public InternetAddress[] getGroup(boolean strict) {
|
||||
return grouplist;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -298,9 +298,7 @@ public class SearchSequence {
|
|||
|
||||
protected Argument flag(FlagTerm term) throws SearchException {
|
||||
boolean set = term.getTestSet();
|
||||
|
||||
Argument result = new Argument();
|
||||
|
||||
Flags flags = term.getFlags();
|
||||
Flags.Flag[] sf = flags.getSystemFlags();
|
||||
String[] uf = flags.getUserFlags();
|
||||
|
|
|
@ -240,7 +240,7 @@ public class MboxMessage extends MimeMessage {
|
|||
*/
|
||||
public void setFlags(Flags newFlags, boolean set)
|
||||
throws MessagingException {
|
||||
Flags oldFlags = (Flags) flags.clone();
|
||||
Flags oldFlags = new Flags(flags);
|
||||
super.setFlags(newFlags, set);
|
||||
if (!flags.equals(oldFlags)) {
|
||||
setHeadersFromFlags(this);
|
||||
|
|
|
@ -82,7 +82,7 @@ public class POP3Message extends MimeMessage implements ReadableMime {
|
|||
@Override
|
||||
public synchronized void setFlags(Flags newFlags, boolean set)
|
||||
throws MessagingException {
|
||||
Flags oldFlags = (Flags) flags.clone();
|
||||
Flags oldFlags = new Flags(flags);
|
||||
super.setFlags(newFlags, set);
|
||||
if (!flags.equals(oldFlags))
|
||||
folder.notifyMessageChangedListeners(
|
||||
|
|
|
@ -457,9 +457,7 @@ public class SMTPTransport extends Transport {
|
|||
saslMechanisms = new String[v.size()];
|
||||
v.toArray(saslMechanisms);
|
||||
}
|
||||
if (saslMechanisms == null)
|
||||
return null;
|
||||
return saslMechanisms.clone();
|
||||
return saslMechanisms;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -471,8 +469,6 @@ public class SMTPTransport extends Transport {
|
|||
* @since JavaMail 1.4.4
|
||||
*/
|
||||
public synchronized void setSASLMechanisms(String[] mechanisms) {
|
||||
if (mechanisms != null)
|
||||
mechanisms = mechanisms.clone();
|
||||
this.saslMechanisms = mechanisms;
|
||||
}
|
||||
|
||||
|
|
|
@ -137,14 +137,14 @@ public class MailSSLSocketFactory extends SSLSocketFactory {
|
|||
* @return the keyManagers
|
||||
*/
|
||||
public synchronized KeyManager[] getKeyManagers() {
|
||||
return keyManagers.clone();
|
||||
return keyManagers;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param keyManagers the keyManagers to set
|
||||
*/
|
||||
public synchronized void setKeyManagers(KeyManager... keyManagers) throws KeyManagementException {
|
||||
this.keyManagers = keyManagers.clone();
|
||||
this.keyManagers = keyManagers;
|
||||
newAdapteeFactory();
|
||||
}
|
||||
|
||||
|
@ -196,20 +196,14 @@ public class MailSSLSocketFactory extends SSLSocketFactory {
|
|||
* @return the trusted hosts
|
||||
*/
|
||||
public synchronized String[] getTrustedHosts() {
|
||||
if (trustedHosts == null)
|
||||
return null;
|
||||
else
|
||||
return trustedHosts.clone();
|
||||
return trustedHosts;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param trustedHosts the hosts to trust
|
||||
*/
|
||||
public synchronized void setTrustedHosts(String... trustedHosts) {
|
||||
if (trustedHosts == null)
|
||||
this.trustedHosts = null;
|
||||
else
|
||||
this.trustedHosts = trustedHosts.clone();
|
||||
this.trustedHosts = trustedHosts;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -29,6 +29,9 @@ import org.xbib.net.mail.test.test.TestServer;
|
|||
import java.io.IOException;
|
||||
import java.util.Properties;
|
||||
import java.util.StringTokenizer;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
@ -39,17 +42,19 @@ import static org.junit.jupiter.api.Assertions.fail;
|
|||
* Test IMAPFolder methods.
|
||||
*/
|
||||
@Timeout(20)
|
||||
public final class IMAPFolderTest {
|
||||
class IMAPFolderTest {
|
||||
|
||||
private static final Logger logger = Logger.getLogger(IMAPFolderTest.class.getName());
|
||||
|
||||
private static final String utf8Folder = "test\u03b1";
|
||||
|
||||
private static final String utf7Folder = "test&A7E-";
|
||||
|
||||
public static abstract class IMAPTest {
|
||||
|
||||
public void init(Properties props) {
|
||||
}
|
||||
|
||||
;
|
||||
|
||||
public abstract void test(Store store, IMAPHandler handler)
|
||||
throws Exception;
|
||||
}
|
||||
|
@ -59,9 +64,8 @@ public final class IMAPFolderTest {
|
|||
* encoded name for the CREATE command.
|
||||
*/
|
||||
@Test
|
||||
public void testUtf7FolderNameCreate() {
|
||||
testWithHandler(
|
||||
new IMAPTest() {
|
||||
void testUtf7FolderNameCreate() {
|
||||
testWithHandler(new IMAPTest() {
|
||||
@Override
|
||||
public void test(Store store, IMAPHandler handler)
|
||||
throws MessagingException, IOException {
|
||||
|
@ -95,7 +99,7 @@ public final class IMAPFolderTest {
|
|||
* unencoded name for the CREATE command.
|
||||
*/
|
||||
@Test
|
||||
public void testUtf8FolderNameCreate() {
|
||||
void testUtf8FolderNameCreate() {
|
||||
testWithHandler(
|
||||
new IMAPTest() {
|
||||
@Override
|
||||
|
@ -132,7 +136,7 @@ public final class IMAPFolderTest {
|
|||
* encoded name for the DELETE command.
|
||||
*/
|
||||
@Test
|
||||
public void testUtf7FolderNameDelete() {
|
||||
void testUtf7FolderNameDelete() {
|
||||
testWithHandler(
|
||||
new IMAPTest() {
|
||||
@Override
|
||||
|
@ -162,7 +166,7 @@ public final class IMAPFolderTest {
|
|||
* unencoded name for the DELETE command.
|
||||
*/
|
||||
@Test
|
||||
public void testUtf8FolderNameDelete() {
|
||||
void testUtf8FolderNameDelete() {
|
||||
testWithHandler(
|
||||
new IMAPTest() {
|
||||
@Override
|
||||
|
@ -192,7 +196,7 @@ public final class IMAPFolderTest {
|
|||
* encoded name for the SELECT command.
|
||||
*/
|
||||
@Test
|
||||
public void testUtf7FolderNameSelect() {
|
||||
void testUtf7FolderNameSelect() {
|
||||
testWithHandler(
|
||||
new IMAPTest() {
|
||||
@Override
|
||||
|
@ -224,7 +228,7 @@ public final class IMAPFolderTest {
|
|||
* unencoded name for the SELECT command.
|
||||
*/
|
||||
@Test
|
||||
public void testUtf8FolderNameSelect() {
|
||||
void testUtf8FolderNameSelect() {
|
||||
testWithHandler(
|
||||
new IMAPTest() {
|
||||
@Override
|
||||
|
@ -256,7 +260,7 @@ public final class IMAPFolderTest {
|
|||
* encoded name for the EXAMINE command.
|
||||
*/
|
||||
@Test
|
||||
public void testUtf7FolderNameExamine() {
|
||||
void testUtf7FolderNameExamine() {
|
||||
testWithHandler(
|
||||
new IMAPTest() {
|
||||
@Override
|
||||
|
@ -288,7 +292,7 @@ public final class IMAPFolderTest {
|
|||
* unencoded name for the EXAMINE command.
|
||||
*/
|
||||
@Test
|
||||
public void testUtf8FolderNameExamine() {
|
||||
void testUtf8FolderNameExamine() {
|
||||
testWithHandler(
|
||||
new IMAPTest() {
|
||||
@Override
|
||||
|
@ -320,7 +324,7 @@ public final class IMAPFolderTest {
|
|||
* encoded name for the STATUS command.
|
||||
*/
|
||||
@Test
|
||||
public void testUtf7FolderNameStatus() {
|
||||
void testUtf7FolderNameStatus() {
|
||||
testWithHandler(
|
||||
new IMAPTest() {
|
||||
@Override
|
||||
|
@ -352,7 +356,7 @@ public final class IMAPFolderTest {
|
|||
* unencoded name for the STATUS command.
|
||||
*/
|
||||
@Test
|
||||
public void testUtf8FolderNameStatus() {
|
||||
void testUtf8FolderNameStatus() {
|
||||
testWithHandler(
|
||||
new IMAPTest() {
|
||||
@Override
|
||||
|
@ -383,7 +387,7 @@ public final class IMAPFolderTest {
|
|||
* Test that UIDNOTSTICKY is false in the formal case.
|
||||
*/
|
||||
@Test
|
||||
public void testUidNotStickyFalse() {
|
||||
void testUidNotStickyFalse() {
|
||||
testWithHandler(
|
||||
new IMAPTest() {
|
||||
@Override
|
||||
|
@ -405,7 +409,7 @@ public final class IMAPFolderTest {
|
|||
* Test that UIDNOTSTICKY is true when the untagged response is included.
|
||||
*/
|
||||
@Test
|
||||
public void testUidNotStickyTrue() {
|
||||
void testUidNotStickyTrue() {
|
||||
testWithHandler(
|
||||
new IMAPTest() {
|
||||
@Override
|
||||
|
@ -434,7 +438,7 @@ public final class IMAPFolderTest {
|
|||
* are ignored.
|
||||
*/
|
||||
@Test
|
||||
public void testExpungeOutOfRange() {
|
||||
void testExpungeOutOfRange() {
|
||||
testWithHandler(
|
||||
new IMAPTest() {
|
||||
@Override
|
||||
|
@ -479,14 +483,13 @@ public final class IMAPFolderTest {
|
|||
store.connect("test", "test");
|
||||
test.test(store, handler);
|
||||
} catch (Exception ex) {
|
||||
System.out.println(ex);
|
||||
//ex.printStackTrace();
|
||||
logger.log(Level.SEVERE, ex.getMessage(), ex);
|
||||
fail(ex.toString());
|
||||
} finally {
|
||||
store.close();
|
||||
}
|
||||
} catch (final Exception e) {
|
||||
e.printStackTrace();
|
||||
logger.log(Level.SEVERE, e.getMessage(), e);
|
||||
fail(e.getMessage());
|
||||
} finally {
|
||||
if (server != null) {
|
||||
|
|
|
@ -19,6 +19,8 @@ package org.xbib.net.mail.test.imap;
|
|||
import org.xbib.net.mail.test.test.ProtocolHandler;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.Base64;
|
||||
import java.util.StringTokenizer;
|
||||
|
@ -56,6 +58,11 @@ public class IMAPHandler extends ProtocolHandler {
|
|||
*/
|
||||
protected int numberOfRecentMessages = 0;
|
||||
|
||||
public IMAPHandler(InputStream inputStream,
|
||||
OutputStream outputStream) {
|
||||
super(inputStream, outputStream);
|
||||
}
|
||||
|
||||
/**
|
||||
* Send greetings.
|
||||
*
|
||||
|
@ -520,7 +527,7 @@ public class IMAPHandler extends ProtocolHandler {
|
|||
int len = data.length;
|
||||
int off = 0;
|
||||
int n;
|
||||
while (len > 0 && (n = in.read(data, off, len)) > 0) {
|
||||
while (len > 0 && (n = inputStream.read(data, off, len)) > 0) {
|
||||
off += n;
|
||||
len -= n;
|
||||
}
|
||||
|
|
|
@ -19,6 +19,8 @@ package org.xbib.net.mail.test.pop3;
|
|||
import org.xbib.net.mail.test.test.ProtocolHandler;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.util.StringTokenizer;
|
||||
import java.util.logging.Level;
|
||||
|
||||
|
@ -69,6 +71,11 @@ public class POP3Handler extends ProtocolHandler {
|
|||
"\r\n" +
|
||||
"--xxx--\r\n";
|
||||
|
||||
public POP3Handler(InputStream inputStream,
|
||||
OutputStream outputStream) {
|
||||
super(inputStream, outputStream);
|
||||
}
|
||||
|
||||
/**
|
||||
* Send greetings.
|
||||
*
|
||||
|
|
|
@ -20,6 +20,8 @@ import org.xbib.net.mail.test.test.ProtocolHandler;
|
|||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.io.PrintWriter;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
@ -50,6 +52,11 @@ public class SMTPHandler extends ProtocolHandler {
|
|||
*/
|
||||
protected Set<String> extensions = new HashSet<String>();
|
||||
|
||||
public SMTPHandler(InputStream inputStream,
|
||||
OutputStream outputStream) {
|
||||
super(inputStream, outputStream);
|
||||
}
|
||||
|
||||
/**
|
||||
* Send greetings.
|
||||
*
|
||||
|
@ -228,7 +235,7 @@ public class SMTPHandler extends ProtocolHandler {
|
|||
int len = data.length;
|
||||
int off = 0;
|
||||
int n;
|
||||
while (len > 0 && (n = in.read(data, off, len)) > 0) {
|
||||
while (len > 0 && (n = inputStream.read(data, off, len)) > 0) {
|
||||
off += n;
|
||||
len -= n;
|
||||
}
|
||||
|
|
|
@ -16,15 +16,13 @@
|
|||
|
||||
package org.xbib.net.mail.test.test;
|
||||
|
||||
import javax.net.ssl.SSLException;
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.io.PrintWriter;
|
||||
import java.io.PushbackInputStream;
|
||||
import java.net.Socket;
|
||||
import java.net.SocketException;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
@ -37,18 +35,13 @@ import java.util.logging.Logger;
|
|||
* @author sbo
|
||||
* @author Bill Shannon
|
||||
*/
|
||||
public abstract class ProtocolHandler implements Runnable, Cloneable {
|
||||
public abstract class ProtocolHandler implements Runnable {
|
||||
|
||||
/**
|
||||
* Logger for this class.
|
||||
*/
|
||||
protected final Logger LOGGER = Logger.getLogger(this.getClass().getName());
|
||||
|
||||
/**
|
||||
* Client socket.
|
||||
*/
|
||||
protected Socket clientSocket;
|
||||
|
||||
/**
|
||||
* Quit?
|
||||
*/
|
||||
|
@ -62,19 +55,11 @@ public abstract class ProtocolHandler implements Runnable, Cloneable {
|
|||
/**
|
||||
* Input from socket.
|
||||
*/
|
||||
protected InputStream in;
|
||||
protected InputStream inputStream;
|
||||
|
||||
/**
|
||||
* Sets the client socket.
|
||||
*
|
||||
* @param clientSocket the client socket
|
||||
*/
|
||||
public final void setClientSocket(final Socket clientSocket)
|
||||
throws IOException {
|
||||
this.clientSocket = clientSocket;
|
||||
writer = new PrintWriter(new OutputStreamWriter(
|
||||
clientSocket.getOutputStream(), StandardCharsets.UTF_8));
|
||||
in = new BufferedInputStream(clientSocket.getInputStream());
|
||||
public ProtocolHandler(InputStream inputStream, OutputStream outputStream) {
|
||||
this.inputStream = new BufferedInputStream(inputStream);
|
||||
this.writer = new PrintWriter(new OutputStreamWriter(outputStream, StandardCharsets.UTF_8));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -100,15 +85,15 @@ public abstract class ProtocolHandler implements Runnable, Cloneable {
|
|||
int offset = 0;
|
||||
int c;
|
||||
|
||||
while ((c = in.read()) != -1) {
|
||||
while ((c = inputStream.read()) != -1) {
|
||||
if (c == '\n') {
|
||||
break;
|
||||
} else if (c == '\r') {
|
||||
int c2 = in.read();
|
||||
int c2 = inputStream.read();
|
||||
if ((c2 != '\n') && (c2 != -1)) {
|
||||
if (!(in instanceof PushbackInputStream))
|
||||
this.in = new PushbackInputStream(in);
|
||||
((PushbackInputStream) in).unread(c2);
|
||||
if (!(inputStream instanceof PushbackInputStream))
|
||||
this.inputStream = new PushbackInputStream(inputStream);
|
||||
((PushbackInputStream) inputStream).unread(c2);
|
||||
}
|
||||
break;
|
||||
} else {
|
||||
|
@ -132,24 +117,21 @@ public abstract class ProtocolHandler implements Runnable, Cloneable {
|
|||
@Override
|
||||
public final void run() {
|
||||
try {
|
||||
|
||||
sendGreetings();
|
||||
|
||||
while (!quit) {
|
||||
handleCommand();
|
||||
}
|
||||
|
||||
//clientSocket.close();
|
||||
} catch (SocketException sex) {
|
||||
} catch (IOException sex) {
|
||||
// ignore it, often get "connection reset" when client closes
|
||||
} catch (SSLException sex) {
|
||||
// ignore it, often occurs when testing SSL
|
||||
} catch (Exception e) {
|
||||
LOGGER.log(Level.SEVERE, "Error", e);
|
||||
} finally {
|
||||
try {
|
||||
if (clientSocket != null)
|
||||
clientSocket.close();
|
||||
if (inputStream != null)
|
||||
inputStream.close();
|
||||
if (writer != null) {
|
||||
writer.close();
|
||||
}
|
||||
} catch (final IOException ioe) {
|
||||
LOGGER.log(Level.SEVERE, "Error", ioe);
|
||||
}
|
||||
|
@ -162,24 +144,13 @@ public abstract class ProtocolHandler implements Runnable, Cloneable {
|
|||
public void exit() {
|
||||
quit = true;
|
||||
try {
|
||||
if (clientSocket != null && !clientSocket.isClosed()) {
|
||||
clientSocket.close();
|
||||
clientSocket = null;
|
||||
if (inputStream != null)
|
||||
inputStream.close();
|
||||
if (writer != null) {
|
||||
writer.close();
|
||||
}
|
||||
} catch (final IOException e) {
|
||||
LOGGER.log(Level.SEVERE, "Error", e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Object clone() {
|
||||
try {
|
||||
return super.clone();
|
||||
} catch (final CloneNotSupportedException e) {
|
||||
throw new AssertionError(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -135,7 +135,7 @@ public class TestSSLSocketFactory extends SSLSocketFactory {
|
|||
@Override
|
||||
public synchronized String[] getDefaultCipherSuites() {
|
||||
if (suites != null)
|
||||
return suites.clone();
|
||||
return suites;
|
||||
else
|
||||
return defaultFactory.getDefaultCipherSuites();
|
||||
}
|
||||
|
|
|
@ -201,8 +201,7 @@ public final class TestServer extends Thread {
|
|||
while (keepOn) {
|
||||
try {
|
||||
final Socket clientSocket = serverSocket.accept();
|
||||
final ProtocolHandler pHandler =
|
||||
(ProtocolHandler) handler.clone();
|
||||
final ProtocolHandler pHandler = handler;
|
||||
pHandler.setClientSocket(clientSocket);
|
||||
Thread t = new Thread(pHandler);
|
||||
synchronized (clients) {
|
||||
|
@ -265,4 +264,11 @@ public final class TestServer extends Thread {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
class WrappedProtocolHandler {
|
||||
Socket clientSocket;
|
||||
ProtocolHandler handler;
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -882,7 +882,7 @@ public final class SocketFetcherTest {
|
|||
@Override
|
||||
public void handleCommand() throws IOException {
|
||||
if (!http) {
|
||||
int c = in.read();
|
||||
int c = inputStream.read();
|
||||
if (c >= 0) {
|
||||
// any data means a real client connected
|
||||
connected = true;
|
||||
|
|
Loading…
Reference in a new issue