Skip to content

Commit b4b980e

Browse files
author
biagio
committed
5.0.1: added Javadoc
1 parent 301125d commit b4b980e

26 files changed

+540
-40
lines changed

README.MD

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@ Attenzione: le versioni precedenti alla 5.0.0 sono state rilasciato con groupId
99
<dependency>
1010
<groupId>app.tozzi</groupId>
1111
<artifactId>pec-parser</artifactId>
12-
<version>5.0.0</version>
12+
<version>5.0.1</version>
1313
</dependency>
1414
```
1515

1616
##### Gradle
1717
```
18-
implementation 'app.tozzi:pec-parser:5.0.0
18+
implementation 'app.tozzi:pec-parser:5.0.1
1919
```
2020

2121
### Requisiti

build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ plugins {
66
}
77

88
group = 'app.tozzi'
9-
version = '5.0.0'
9+
version = '5.0.1'
1010

1111
java {
1212
sourceCompatibility = JavaVersion.VERSION_17
@@ -59,7 +59,7 @@ publishing {
5959
maven(MavenPublication) {
6060
group = 'app.tozzi'
6161
artifactId = 'pec-parser'
62-
version = "5.0.0"
62+
version = "5.0.1"
6363
from components.java
6464
pom {
6565
name = 'pec-parser'

gradle/wrapper/gradle-wrapper.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.1-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11-bin.zip
44
networkTimeout=10000
55
validateDistributionUrl=true
66
zipStoreBase=GRADLE_USER_HOME

publiccode.yml

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -16,41 +16,39 @@ description:
1616
PEC e posta ordinaria
1717
genericName: PEC/Mail Parser
1818
longDescription: |
19-
**PEC/Mail Parser
19+
**PEC/Mail Parser**
2020
21-
**Libreria utility per l'elaborazione di messaggi di [Posta Elettronica
21+
Libreria utility per l'elaborazione di messaggi di [Posta Elettronica
2222
Certificata](https://www.agid.gov.it/it/piattaforme/posta-elettronica-certificata)
2323
(PEC) e messaggi di posta ordinaria.
2424
25-
26-
27-
**Dipendenza progetto
28-
29-
**Attenzione: le versioni precedenti alla 5.0.0 sono state rilasciato con
25+
**Dipendenza progetto**
26+
Attenzione: le versioni precedenti alla 5.0.0 sono state rilasciato con
3027
groupId \`app.tozzi.mail\`
3128
32-
3329
_Maven_
3430
3531
`<dependency>
32+
3633
<groupId>app.tozzi</groupId>
34+
3735
<artifactId>pec-parser</artifactId>
36+
3837
<version>5.0.0</version>
38+
3939
</dependency>`
4040
4141
4242
_Gradle_
4343
44-
`implementation 'app.tozzi:pec-parser:5.0.0
45-
46-
`
44+
`implementation 'app.tozzi:pec-parser:5.0.0`
4745
4846
**Requisiti**
4947
5048
51-
- [v0.0.1 - v4.0.0]: Java 8
49+
- v0.0.1 - v4.0.0: Java 8
5250
53-
- [v5.0.0 - latest]: Java 17
51+
- v5.0.0 - latest: Java 17
5452
5553
5654
@@ -59,9 +57,9 @@ description:
5957
6058
**Utilizzo**
6159
62-
++1. Istanza di MailParser
60+
1. Istanza di MailParser
6361
64-
++Attraverso uno dei seguenti metodi:
62+
Attraverso uno dei seguenti metodi:
6563
6664
6765
- `MailParser.getInstance()`
@@ -72,9 +70,9 @@ description:
7270
7371
7472
75-
++2. Parsing
73+
2. Parsing
7674
77-
++Attraverso uno dei seguenti metodi:
75+
Attraverso uno dei seguenti metodi:
7876
7977
- `ParsedEntity parse(MimeMessage mimeMessage)`
8078
@@ -85,9 +83,9 @@ description:
8583
- `ParsedEntity parse(MimeMessage mimeMessage)`
8684
8785
88-
++3. ParsedEntity
86+
3. ParsedEntity
8987
90-
++Può essere di tipo:
88+
Può essere di tipo:
9189
9290
- `PEC`: se il messaggio rappresenta una PEC
9391
@@ -153,7 +151,7 @@ platforms:
153151
- linux
154152
- ios
155153
- android
156-
releaseDate: '2024-11-15'
154+
releaseDate: '2024-11-16'
157155
softwareType: standalone/web
158-
softwareVersion: 5.0.0
156+
softwareVersion: 5.0.1
159157
url: 'https://github.com/biagioT/java-pec-parser'

src/main/java/app/tozzi/MailParser.java

Lines changed: 71 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,28 +23,72 @@
2323
import java.util.stream.Stream;
2424
import java.util.stream.StreamSupport;
2525

26+
/**
27+
* Main core class that offers email/PEC extraction
28+
*
29+
* @author Biagio Tozzi
30+
*/
2631
@AllArgsConstructor(access = AccessLevel.PRIVATE)
2732
public class MailParser {
2833

2934
private Properties properties;
3035
private boolean extractAllHeaders;
3136

37+
/**
38+
* Default {@link MailParser} instance.
39+
* <ul>
40+
* <li>properties: System.getProperties(). System default properties</li>
41+
* <li>extractAllHeaders: false. Not all additional headers will be extracted</li>
42+
* </ul>
43+
*
44+
* @return {@link MailParser} instance
45+
*/
3246
public static MailParser getInstance() {
3347
return new MailParser(null, false);
3448
}
3549

50+
/**
51+
* {@link MailParser} instance with custom properties
52+
* <ul>
53+
* <li>extractAllHeaders: false. Not all additional headers will be extracted</li>
54+
* </ul>
55+
*
56+
* @return {@link MailParser} instance
57+
*/
3658
public static MailParser getInstance(Properties properties) {
3759
return new MailParser(properties, false);
3860
}
3961

62+
/**
63+
* {@link MailParser} instance with the extraction of all the headers
64+
*
65+
* @return {@link MailParser} instance
66+
*/
4067
public static MailParser getInstance(boolean extractAllHeaders) {
4168
return new MailParser(null, extractAllHeaders);
4269
}
4370

71+
/**
72+
* {@link MailParser} instance with the extraction of all the headers and custom properties
73+
*
74+
* @return {@link MailParser} instance
75+
*/
4476
public static MailParser getInstance(Properties properties, boolean extractAllHeaders) {
4577
return new MailParser(properties, extractAllHeaders);
4678
}
4779

80+
/**
81+
* Extracts a {@link ParsedEntity} from a mail MIME message.<br>
82+
* ParsedEntity can be:
83+
* <ul>
84+
* <li>{@link Mail}: simple mail</li>
85+
* <li>{@link PEC}: Posta Elettronica Certificata - Italian certified electronic mail </li>
86+
* <li>{@link PECReceipt}: Italian certified electronic mail receipt</li>
87+
* </ul>
88+
*
89+
* @param mimeMessage {@link MimeMessage} mail MIME message
90+
* @return {@link ParsedEntity}
91+
*/
4892
public ParsedEntity parse(MimeMessage mimeMessage) {
4993

5094
var xTranspHeader = MimeMessageUtils.getHeader(mimeMessage, PECConstants.X_TRASPORTO);
@@ -58,6 +102,18 @@ public ParsedEntity parse(MimeMessage mimeMessage) {
58102
return parsedEntity;
59103
}
60104

105+
/**
106+
* Extracts a {@link ParsedEntity} from a mail message.<br>
107+
* ParsedEntity can be:
108+
* <ul>
109+
* <li>{@link Mail}: simple mail</li>
110+
* <li>{@link PEC}: Posta Elettronica Certificata - Italian certified electronic mail </li>
111+
* <li>{@link PECReceipt}: Italian certified electronic mail receipt</li>
112+
* </ul>
113+
*
114+
* @param eml {@link File} mail eml MIME message
115+
* @return {@link ParsedEntity}
116+
*/
61117
public ParsedEntity parse(File eml) {
62118

63119
if (eml == null || !eml.exists()) {
@@ -72,6 +128,18 @@ public ParsedEntity parse(File eml) {
72128
}
73129
}
74130

131+
/**
132+
* Extracts a {@link ParsedEntity} from a mail message.<br>
133+
* ParsedEntity can be:
134+
* <ul>
135+
* <li>{@link Mail}: simple mail</li>
136+
* <li>{@link PEC}: Posta Elettronica Certificata - Italian certified electronic mail </li>
137+
* <li>{@link PECReceipt}: Italian certified electronic mail receipt</li>
138+
* </ul>
139+
*
140+
* @param eml {@link InputStream} eml mail mime message
141+
* @return {@link ParsedEntity}
142+
*/
75143
public ParsedEntity parse(InputStream eml) {
76144
return parse(MimeMessageUtils.createMimeMessage(eml, properties));
77145
}
@@ -131,9 +199,9 @@ private static ParsedEntity extract(MimeMessage mimeMessage, boolean isPEC, bool
131199
return extractContent(mail, mimeMessage, isPEC, isPECReceipt, properties, extractAllHeaders);
132200
}
133201

134-
private static ParsedEntity extractContent(Mail mail, MimePart part, boolean isPEC, boolean isPECReceipt, Properties properties, boolean extractAllHeaders) {
202+
private static ParsedEntity extractContent(Mail mail, MimeMessage mimeMessage, boolean isPEC, boolean isPECReceipt, Properties properties, boolean extractAllHeaders) {
135203
DataSourcePair<DataSource, DataSource> dsp = isPEC || isPECReceipt ? new DataSourcePair<>() : null;
136-
extractContent(mail, part, isPEC, isPECReceipt, dsp);
204+
extractContent(mail, mimeMessage, isPEC, isPECReceipt, dsp);
137205

138206
if (isPEC || isPECReceipt) {
139207

@@ -143,7 +211,7 @@ private static ParsedEntity extractContent(Mail mail, MimePart part, boolean isP
143211

144212
try {
145213
var postaCertMimeMessage = dsp.getElementA() != null ? MimeMessageUtils.createMimeMessage(dsp.getElementA().getInputStream(), properties) : null;
146-
return PECHandler.loadPEC(postaCertMimeMessage != null ? (Mail) extract(postaCertMimeMessage, false, false, properties, extractAllHeaders) : null, mail, dsp.getElementA(), dsp.getElementB());
214+
return PECHandler.loadPEC(postaCertMimeMessage != null ? (Mail) extract(postaCertMimeMessage, false, false, properties, extractAllHeaders) : null, mail, dsp.getElementA(), dsp.getElementB(), mimeMessage);
147215

148216
} catch (IOException e) {
149217
throw new MailParserException(e);

src/main/java/app/tozzi/core/DeliveryStatusHandler.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,19 @@
88
import java.io.BufferedReader;
99
import java.io.InputStreamReader;
1010

11+
/**
12+
* Delivery Status management
13+
*
14+
* @author Biagio Tozzi
15+
*/
1116
public class DeliveryStatusHandler {
1217

18+
/**
19+
* Extracts a {@link DeliveryStatus} object from {@link MimePart} part
20+
*
21+
* @param part
22+
* @return {@link DeliveryStatus} object with delivery status info
23+
*/
1324
public static DeliveryStatus loadDeliveryStatus(MimePart part) {
1425

1526
var deliveryStatus = new DeliveryStatus();

src/main/java/app/tozzi/core/PECHandler.java

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@
55
import app.tozzi.model.PEC;
66
import app.tozzi.model.PECReceipt;
77
import app.tozzi.model.exception.MailParserException;
8+
import app.tozzi.util.MimeMessageUtils;
89
import app.tozzi.util.PECConstants;
910
import app.tozzi.util.XMLUtils;
1011
import jakarta.activation.DataSource;
12+
import jakarta.mail.internet.MimeMessage;
1113
import org.xml.sax.SAXException;
1214

1315
import javax.xml.parsers.DocumentBuilderFactory;
@@ -16,6 +18,11 @@
1618
import java.io.IOException;
1719
import java.io.InputStream;
1820

21+
/**
22+
* PEC Management
23+
*
24+
* @author Biagio Tozzi
25+
*/
1926
public class PECHandler {
2027

2128
private static final DocumentBuilderFactory DOCUMENT_BUILDER_FACTORY;
@@ -24,6 +31,12 @@ public class PECHandler {
2431
DOCUMENT_BUILDER_FACTORY = DocumentBuilderFactory.newInstance();
2532
}
2633

34+
/**
35+
* Extracts PEC receipt from {@link PEC}
36+
*
37+
* @param pec {@link PEC}
38+
* @return {@link PECReceipt}
39+
*/
2740
public static PECReceipt loadReceipt(PEC pec) {
2841

2942
try {
@@ -37,7 +50,16 @@ public static PECReceipt loadReceipt(PEC pec) {
3750
}
3851
}
3952

40-
public static PEC loadPEC(Mail originalMessage, Mail envelope, DataSource postaCert, DataSource datiCert) {
53+
/**
54+
* Extracts a {@link PEC}
55+
*
56+
* @param originalMessage original mail message
57+
* @param envelope PEC envelope
58+
* @param postaCert postaCert.eml stream
59+
* @param datiCert datiCert.xml stream
60+
* @return {@link PEC}
61+
*/
62+
public static PEC loadPEC(Mail originalMessage, Mail envelope, DataSource postaCert, DataSource datiCert, MimeMessage mimeMessage) {
4163

4264
try {
4365
var pec = new PEC();
@@ -46,13 +68,29 @@ public static PEC loadPEC(Mail originalMessage, Mail envelope, DataSource postaC
4668
pec.setEnvelope(envelope);
4769
pec.setOriginalMessage(originalMessage);
4870
pec.setCertificateData(loadCertificateData(datiCert.getInputStream()));
71+
pec.setTransportHeaderValue(MimeMessageUtils.getHeader(mimeMessage, PECConstants.X_TRASPORTO));
72+
pec.setReceiptHeaderValue(MimeMessageUtils.getHeader(mimeMessage, PECConstants.X_RICEVUTA));
73+
pec.setReceiptTypeHeaderValue(MimeMessageUtils.getHeader(mimeMessage, PECConstants.X_TIPO_RICEVUTA));
74+
pec.setSecurityCheckHeaderValue(MimeMessageUtils.getHeader(mimeMessage, PECConstants.X_VERIFICA_SICUREZZA));
75+
pec.setErrorHeaderValue(MimeMessageUtils.getHeader(mimeMessage, PECConstants.X_TRASPORTO_ERRORE));
76+
pec.setReferenceHeaderValue(MimeMessageUtils.getHeader(mimeMessage, PECConstants.X_RIFERIMENTO));
4977
return pec;
5078

5179
} catch (Exception e) {
5280
throw new MailParserException("Error during PEC processing", e);
5381
}
5482
}
5583

84+
/**
85+
* Extracts datiCert.xml
86+
*
87+
* @param inputStream datiCert.xml stream
88+
* @return {@link CertificateData}
89+
* @throws ParserConfigurationException
90+
* @throws IOException
91+
* @throws SAXException
92+
* @throws XPathExpressionException
93+
*/
5694
static CertificateData loadCertificateData(InputStream inputStream) throws ParserConfigurationException, IOException, SAXException, XPathExpressionException {
5795
var document = DOCUMENT_BUILDER_FACTORY.newDocumentBuilder().parse(inputStream);
5896
var certificateData = new CertificateData();

src/main/java/app/tozzi/model/Address.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@
33
import lombok.Builder;
44
import lombok.Data;
55

6+
/**
7+
* Mail/PEC Address
8+
*
9+
* @author Biagio Tozzi
10+
*/
611
@Data
712
@Builder
813
public class Address {

0 commit comments

Comments
 (0)