Skip to content

Commit

Permalink
Immutable parameters
Browse files Browse the repository at this point in the history
  • Loading branch information
benfortuna committed Feb 26, 2020
1 parent efdd775 commit 974c36c
Show file tree
Hide file tree
Showing 34 changed files with 127 additions and 93 deletions.
5 changes: 5 additions & 0 deletions src/main/java/net/fortuna/ical4j/model/AddressList.java
Expand Up @@ -38,6 +38,7 @@
import java.io.Serializable;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
Expand Down Expand Up @@ -81,6 +82,10 @@ public AddressList(final String aValue) throws URISyntaxException {
}
}

public List<URI> getAddresses() {
return new ArrayList<>(addresses);
}

/**
* {@inheritDoc}
*/
Expand Down
6 changes: 1 addition & 5 deletions src/main/java/net/fortuna/ical4j/model/ParameterList.java
Expand Up @@ -86,11 +86,7 @@ public ParameterList(final ParameterList list, final boolean unmodifiable) {

final List<Parameter> parameterList = new CopyOnWriteArrayList<Parameter>();
list.forEach(parameter -> {
try {
parameterList.add(parameter.copy());
} catch (URISyntaxException e) {
throw new IllegalArgumentException(e);
}
parameterList.add(parameter);
});
if (unmodifiable) {
parameters = Collections.unmodifiableList(parameterList);
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/net/fortuna/ical4j/model/parameter/Abbrev.java
Expand Up @@ -56,7 +56,7 @@ public class Abbrev extends Parameter {
* @param aValue a string abbreviation
*/
public Abbrev(final String aValue) {
super(ABBREV, new Factory());
super(ABBREV);
this.value = Strings.unquote(aValue);
}

Expand All @@ -67,14 +67,14 @@ public final String getValue() {
return value;
}

public static class Factory extends Content.Factory implements ParameterFactory {
public static class Factory extends Content.Factory implements ParameterFactory<Abbrev> {
private static final long serialVersionUID = 1L;

public Factory() {
super(ABBREV);
}

public Parameter createParameter(final String value) throws URISyntaxException {
public Abbrev createParameter(final String value) throws URISyntaxException {
return new Abbrev(value);
}
}
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/net/fortuna/ical4j/model/parameter/AltRep.java
Expand Up @@ -83,14 +83,14 @@ public final String getValue() {
return Uris.decode(Strings.valueOf(getUri()));
}

public static class Factory extends Content.Factory implements ParameterFactory {
public static class Factory extends Content.Factory implements ParameterFactory<AltRep> {
private static final long serialVersionUID = 1L;

public Factory() {
super(ALTREP);
}

public Parameter createParameter(final String value) throws URISyntaxException {
public AltRep createParameter(final String value) throws URISyntaxException {
return new AltRep(value);
}
}
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/net/fortuna/ical4j/model/parameter/Cn.java
Expand Up @@ -66,14 +66,14 @@ public final String getValue() {
return value;
}

public static class Factory extends Content.Factory implements ParameterFactory {
public static class Factory extends Content.Factory implements ParameterFactory<Cn> {
private static final long serialVersionUID = 1L;

public Factory() {
super(CN);
}

public Parameter createParameter(final String value) throws URISyntaxException {
public Cn createParameter(final String value) throws URISyntaxException {
return new Cn(value);
}
}
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/net/fortuna/ical4j/model/parameter/CuType.java
Expand Up @@ -101,14 +101,14 @@ public final String getValue() {
return value;
}

public static class Factory extends Content.Factory implements ParameterFactory {
public static class Factory extends Content.Factory implements ParameterFactory<CuType> {
private static final long serialVersionUID = 1L;

public Factory() {
super(CUTYPE);
}

public Parameter createParameter(final String value) throws URISyntaxException {
public CuType createParameter(final String value) throws URISyntaxException {
CuType parameter = new CuType(value);
if (CuType.INDIVIDUAL.equals(parameter)) {
parameter = CuType.INDIVIDUAL;
Expand Down
Expand Up @@ -31,10 +31,15 @@
*/
package net.fortuna.ical4j.model.parameter;

import net.fortuna.ical4j.model.*;
import net.fortuna.ical4j.model.AddressList;
import net.fortuna.ical4j.model.Content;
import net.fortuna.ical4j.model.Parameter;
import net.fortuna.ical4j.model.ParameterFactory;
import net.fortuna.ical4j.util.Strings;

import java.net.URI;
import java.net.URISyntaxException;
import java.util.List;

/**
* $Id$ [18-Apr-2004]
Expand Down Expand Up @@ -68,8 +73,8 @@ public DelegatedFrom(final AddressList aList) {
/**
* @return Returns the delegators addresses.
*/
public final AddressList getDelegators() {
return delegators;
public final List<URI> getDelegators() {
return delegators.getAddresses();
}

/**
Expand All @@ -87,14 +92,14 @@ protected boolean isQuotable() {
return false;
}

public static class Factory extends Content.Factory implements ParameterFactory {
public static class Factory extends Content.Factory implements ParameterFactory<DelegatedFrom> {
private static final long serialVersionUID = 1L;

public Factory() {
super(DELEGATED_FROM);
}

public Parameter createParameter(final String value) throws URISyntaxException {
public DelegatedFrom createParameter(final String value) throws URISyntaxException {
return new DelegatedFrom(value);
}
}
Expand Down
15 changes: 10 additions & 5 deletions src/main/java/net/fortuna/ical4j/model/parameter/DelegatedTo.java
Expand Up @@ -31,10 +31,15 @@
*/
package net.fortuna.ical4j.model.parameter;

import net.fortuna.ical4j.model.*;
import net.fortuna.ical4j.model.AddressList;
import net.fortuna.ical4j.model.Content;
import net.fortuna.ical4j.model.Parameter;
import net.fortuna.ical4j.model.ParameterFactory;
import net.fortuna.ical4j.util.Strings;

import java.net.URI;
import java.net.URISyntaxException;
import java.util.List;

/**
* $Id$ [18-Apr-2004]
Expand Down Expand Up @@ -68,8 +73,8 @@ public DelegatedTo(final AddressList aList) {
/**
* @return Returns the delegatees addresses.
*/
public final AddressList getDelegatees() {
return delegatees;
public final List<URI> getDelegatees() {
return delegatees.getAddresses();
}

/**
Expand All @@ -87,14 +92,14 @@ protected boolean isQuotable() {
return false;
}

public static class Factory extends Content.Factory implements ParameterFactory {
public static class Factory extends Content.Factory implements ParameterFactory<DelegatedTo> {
private static final long serialVersionUID = 1L;

public Factory() {
super(DELEGATED_TO);
}

public Parameter createParameter(final String value) throws URISyntaxException {
public DelegatedTo createParameter(final String value) throws URISyntaxException {
return new DelegatedTo(value);
}
}
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/net/fortuna/ical4j/model/parameter/Dir.java
Expand Up @@ -83,14 +83,14 @@ public final String getValue() {
return Uris.decode(Strings.valueOf(getUri()));
}

public static class Factory extends Content.Factory implements ParameterFactory {
public static class Factory extends Content.Factory implements ParameterFactory<Dir> {
private static final long serialVersionUID = 1L;

public Factory() {
super(DIR);
}

public Parameter createParameter(final String value) throws URISyntaxException {
public Dir createParameter(final String value) throws URISyntaxException {
return new Dir(value);
}
}
Expand Down
16 changes: 10 additions & 6 deletions src/main/java/net/fortuna/ical4j/model/parameter/Display.java
Expand Up @@ -3,7 +3,11 @@
import net.fortuna.ical4j.model.Content;
import net.fortuna.ical4j.model.Parameter;
import net.fortuna.ical4j.model.ParameterFactory;
import org.apache.commons.lang3.StringUtils;

import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;

/**
* <pre>
Expand Down Expand Up @@ -60,7 +64,7 @@ public enum Value {
BADGE, GRAPHIC, FULLSIZE, THUMBNAIL;
}

private final String[] values;
private final Set<String> values;

public Display(String value) {
super(PARAMETER_NAME);
Expand All @@ -74,22 +78,22 @@ public Display(String value) {
}
}
}
this.values = valueStrings;
this.values = Collections.unmodifiableSet(new HashSet<>(Arrays.asList(valueStrings)));
}

@Override
public String getValue() {
return StringUtils.join(values, ",");
return String.join(",", values);
}

public static class Factory extends Content.Factory implements ParameterFactory {
public static class Factory extends Content.Factory implements ParameterFactory<Display> {
private static final long serialVersionUID = 1L;

public Factory() {
super(PARAMETER_NAME);
}

public Parameter createParameter(final String value) {
public Display createParameter(final String value) {
return new Display(value);
}
}
Expand Down
28 changes: 19 additions & 9 deletions src/main/java/net/fortuna/ical4j/model/parameter/Email.java
Expand Up @@ -3,9 +3,11 @@
import net.fortuna.ical4j.model.Content;
import net.fortuna.ical4j.model.Parameter;
import net.fortuna.ical4j.model.ParameterFactory;
import net.fortuna.ical4j.util.Strings;
import net.fortuna.ical4j.util.Uris;

import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import java.net.URI;
import java.net.URISyntaxException;

/**
* From specification:
Expand Down Expand Up @@ -51,29 +53,37 @@ public class Email extends Parameter {

private static final String PARAMETER_NAME = "EMAIL";

private final InternetAddress address;
private final URI address;

public Email(String address) throws AddressException {
public Email(String address) throws URISyntaxException {
this(Uris.create(Strings.unquote(address)));
}

public Email(URI address) {
super(PARAMETER_NAME);
this.address = InternetAddress.parse(address)[0];
this.address = address;
}

public URI getAddress() {
return address;
}

@Override
public String getValue() {
return address.getAddress();
return Uris.decode(Strings.valueOf(getAddress()));
}

public static class Factory extends Content.Factory implements ParameterFactory {
public static class Factory extends Content.Factory implements ParameterFactory<Email> {
private static final long serialVersionUID = 1L;

public Factory() {
super(PARAMETER_NAME);
}

public Parameter createParameter(final String value) {
public Email createParameter(final String value) {
try {
return new Email(value);
} catch (AddressException e) {
} catch (URISyntaxException e) {
throw new IllegalArgumentException(e);
}
}
Expand Down
Expand Up @@ -142,14 +142,14 @@ public final String getValue() {
return value;
}

public static class Factory extends Content.Factory implements ParameterFactory {
public static class Factory extends Content.Factory implements ParameterFactory<Encoding> {
private static final long serialVersionUID = 1L;

public Factory() {
super(ENCODING);
}

public Parameter createParameter(final String value) throws URISyntaxException {
public Encoding createParameter(final String value) throws URISyntaxException {
Encoding parameter = new Encoding(value);
if (Encoding.EIGHT_BIT.equals(parameter)) {
parameter = Encoding.EIGHT_BIT;
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/net/fortuna/ical4j/model/parameter/FbType.java
Expand Up @@ -96,14 +96,14 @@ public final String getValue() {
return value;
}

public static class Factory extends Content.Factory implements ParameterFactory {
public static class Factory extends Content.Factory implements ParameterFactory<FbType> {
private static final long serialVersionUID = 1L;

public Factory() {
super(FBTYPE);
}

public Parameter createParameter(final String value) throws URISyntaxException {
public FbType createParameter(final String value) throws URISyntaxException {
FbType parameter = new FbType(value);
if (FbType.FREE.equals(parameter)) {
parameter = FbType.FREE;
Expand Down

0 comments on commit 974c36c

Please sign in to comment.