/**
* Parses a {@link Sone}’s data from a {@link Configuration}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class ConfigurationSoneParser {
/**
* The Sone core.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
@Singleton
public class Core extends AbstractService implements SoneProvider, PostProvider, PostReplyProvider {
/**
* Contains all necessary functionality for interacting with the Freenet node.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
@Singleton
public class FreenetInterface {
/**
* Callback for USK watcher events.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public static interface Callback {
* @see ImageInsertStartedEvent
* @see ImageInsertFailedEvent
* @see ImageInsertFinishedEvent
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class InsertToken implements ClientPutCallback {
* {@link FreenetInterface#insertImage(TemporaryImage, Image, InsertToken)} and
* also tracks running inserts, giving the possibility to abort a running
* insert.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class ImageInserter {
/**
* Stores various options that influence Sone’s behaviour.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class Options {
/**
* Convenience interface for external classes that want to access the core’s
* configuration.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class Preferences {
/**
* Loads preferences stored in a {@link Configuration} into a {@link
* Preferences} object.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class PreferencesLoader {
/**
* Compares the contents of two {@link Sone}s and fires events for new and
* removed elements.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class SoneChangeDetector {
/**
* Downloads and parses Sone and {@link Core#updateSone(Sone) updates the
* core}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
@ImplementedBy(SoneDownloaderImpl.class)
public interface SoneDownloader extends Service {
/**
* The Sone downloader is responsible for download Sones as they are updated.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class SoneDownloaderImpl extends AbstractService implements SoneDownloader {
/**
* A Sone exception.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class SoneException extends Exception {
/**
* Exception that signals a problem with an insert.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class SoneInsertException extends SoneException {
/**
* A Sone inserter is responsible for inserting a Sone if it has changed.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class SoneInserter extends AbstractService {
* Container for information that are required to insert a Sone. This
* container merely exists to copy all relevant data without holding a lock
* on the {@link Sone} object for too long.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
@VisibleForTesting
class InsertInformation implements Closeable {
/**
* Creates manifest elements for an insert by rendering a template.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
@VisibleForTesting
static class ManifestCreator implements Closeable {
* Class that detects {@link Sone} modifications (as per their {@link
* Sone#getFingerprint() fingerprints} and determines when a modified Sone may
* be inserted.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
class SoneModificationDetector {
/**
* Provider for a fingerprint and the information if a {@link Sone} is locked. This
* prevents us from having to lug a Sone object around.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
static interface LockableFingerprintProvider {
/**
* Parses a {@link Sone} from an XML {@link InputStream}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class SoneParser {
/**
* The Sone rescuer downloads older editions of a Sone and updates the currently
* stored Sone with it.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class SoneRescuer extends AbstractService {
/**
* Helper class that creates {@link FreenetURI}s for Sone to insert to and
* request from.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class SoneUri {
/**
* Watches the official Sone homepage for new releases.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
@Singleton
public class UpdateChecker {
/**
* Updates WebOfTrust identity data.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
@ImplementedBy(WebOfTrustUpdaterImpl.class)
public interface WebOfTrustUpdater extends Service {
/**
* Updates WebOfTrust identity data in a background thread because communicating
* with the WebOfTrust plugin can potentially last quite long.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
@Singleton
public class WebOfTrustUpdaterImpl extends AbstractService implements WebOfTrustUpdater {
/**
* Base class for WebOfTrust update jobs.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
@VisibleForTesting
class WebOfTrustUpdateJob implements Runnable {
/**
* Update job that sets the trust relation between two identities.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
@VisibleForTesting
class SetTrustJob extends WebOfTrustUpdateJob {
/**
* Base class for context updates of an {@link OwnIdentity}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
@VisibleForTesting
class WebOfTrustContextUpdateJob extends WebOfTrustUpdateJob {
/**
* Job that adds a context to an {@link OwnIdentity}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
@VisibleForTesting
class AddContextJob extends WebOfTrustContextUpdateJob {
/**
* Job that removes a context from an {@link OwnIdentity}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
@VisibleForTesting
class RemoveContextJob extends WebOfTrustContextUpdateJob {
/**
* WebOfTrust update job that sets a property on an {@link OwnIdentity}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
@VisibleForTesting
class SetPropertyJob extends WebOfTrustUpdateJob {
/**
* Base class for {@link Image} events.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public abstract class ImageEvent {
/**
* Event that signals that an {@link Image} insert is aborted.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class ImageInsertAbortedEvent extends ImageEvent {
/**
* Event that signals that an {@link Image} insert has failed.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class ImageInsertFailedEvent extends ImageEvent {
/**
* Event that signals that an {@link Image} insert is finished.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class ImageInsertFinishedEvent extends ImageEvent {
/**
* Event that signals that an {@link Image} is not being inserted.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class ImageInsertStartedEvent extends ImageEvent {
/**
* Notifies interested {@link EventBus} clients that the Sone insertion delay
* has changed.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class InsertionDelayChangedEvent {
/**
* Event that signals that a {@link Post} has been marked as
* {@link Post#isKnown() known}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class MarkPostKnownEvent extends PostEvent {
/**
* Event that signals that a {@link PostReply} has been marked as
* {@link PostReply#isKnown() known}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class MarkPostReplyKnownEvent extends PostReplyEvent {
/**
* Event that signals that a {@link Sone} has been marked as
* {@link Sone#isKnown() known}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class MarkSoneKnownEvent extends SoneEvent {
/**
* Event that signals that a new remote Sone was found.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class NewSoneFoundEvent extends SoneEvent {
/**
* Base class for post events.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class PostEvent {
/**
* Base class for {@link PostReply} events.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class PostReplyEvent {
/**
* Base class for Sone events.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public abstract class SoneEvent {
/**
* Event that signals that a {@link Sone} insert was aborted.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class SoneInsertAbortedEvent extends SoneEvent {
/**
* Event that signals that a {@link Sone} was inserted.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class SoneInsertedEvent extends SoneEvent {
/**
* Event that signals that a {@link Sone} is now being inserted.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class SoneInsertingEvent extends SoneEvent {
/**
* Event that signals that a {@link Sone} was locked. Only
* {@link Sone#isLocal() local Sones} can be locked.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class SoneLockedEvent extends SoneEvent {
/**
* Event that signals that a {@link Sone} was removed.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class SoneRemovedEvent extends SoneEvent {
/**
* Event that signals that a {@link Sone} was unlocked. Only
* {@link Sone#isLocal() local Sones} can be locked.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class SoneUnlockedEvent extends SoneEvent {
/**
* Event that signals that an update for Sone was found.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class UpdateFoundEvent {
/**
* Container for images that can also contain nested {@link Album}s.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public interface Album extends Identified, Fingerprintable {
* Allows modifying an album. Modifications are only performed once {@link
* #update()} has succesfully returned a new album with the modifications
* made.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
interface Modifier {
/**
* Container for the client information of a {@link Sone}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class Client {
* Interface for objects that can create a fingerprint of themselves, e.g. to
* detect modifications. The fingerprint should only contain original
* information; derived information should not be included.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public interface Fingerprintable {
/**
* Interface for all objects that expose an ID.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public interface Identified {
/**
* Container for image metadata.
- *
- * @author <a href="mailto:d.roden@xplosion.de">David Roden</a>
*/
public interface Image extends Identified, Fingerprintable {
/**
* A post is a short message that a user writes in his Sone to let other users
* know what is going on.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public interface Post extends Identified {
/**
* Shell for a post that has not yet been loaded.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’
- * Roden</a>
*/
public static class EmptyPost implements Post {
/**
* A reply is like a {@link Post} but can never be posted on its own, it always
* refers to another {@link Post}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public interface PostReply extends Reply<PostReply> {
/**
* A profile stores personal information about a {@link Sone}. All information
* is optional and can be {@code null}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class Profile implements Fingerprintable {
/**
* Container for a profile field.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class Field {
/**
* Exception that signals the addition of a field with an empty name.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public static class EmptyFieldName extends IllegalArgumentException { }
/**
* Exception that signals the addition of a field that already exists.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public static class DuplicateField extends IllegalArgumentException { }
*
* @param <T>
* The type of the reply
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public interface Reply<T extends Reply<T>> extends Identified {
/**
* A Sone defines everything about a user: her profile, her status updates, her
* replies, her likes and dislikes, etc.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public interface Sone extends Identified, Fingerprintable, Comparable<Sone> {
/**
* Enumeration for the possible states of a {@link Sone}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public enum SoneStatus {
/**
* All Sone-specific options.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public interface SoneOptions {
/**
* Possible values for all options that are related to loading external content.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
enum LoadExternalContent {
/**
* {@link SoneOptions} implementation.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class DefaultSoneOptions implements SoneOptions {
/**
* A temporary image stores an uploaded image in memory until it has been
* inserted into Freenet and is subsequently loaded from there.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class TemporaryImage {
/**
* Abstract {@link AlbumBuilder} implementation. It stores the state of the new
* album and performs validation, you only need to implement {@link #build()}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public abstract class AbstractAlbumBuilder implements AlbumBuilder {
/**
* Abstract {@link ImageBuilder} implementation. It stores the state of the new
* album and performs validation, you only need to implement {@link #build()}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public abstract class AbstractImageBuilder implements ImageBuilder {
/**
* Abstract {@link PostBuilder} implementation. It stores the state of the new
* post and performs validation, you only need to implement {@link #build()}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public abstract class AbstractPostBuilder implements PostBuilder {
* Abstract {@link PostReplyBuilder} implementation. It stores the state of the
* new post and performs validation, implementations only need to implement
* {@link #build()}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public abstract class AbstractPostReplyBuilder extends AbstractReplyBuilder<PostReplyBuilder> implements PostReplyBuilder {
*
* @param <B>
* The interface implemented and exposed by the builder
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class AbstractReplyBuilder<B extends ReplyBuilder<B>> implements ReplyBuilder<B> {
/**
* Abstract {@link SoneBuilder} implementation.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public abstract class AbstractSoneBuilder implements SoneBuilder {
/**
* {@link AlbumBuilder} implementation that creates {@link AlbumImpl} objects.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class AlbumBuilderImpl extends AbstractAlbumBuilder {
/**
* Container for images that can also contain nested {@link AlbumImpl}s.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class AlbumImpl implements Album {
/**
* {@link PostBuilderFactory} implementation that creates
* {@link PostBuilderImpl}s.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class DefaultPostBuilderFactory implements PostBuilderFactory {
/**
* {@link PostReplyBuilderFactory} that creates {@link PostReplyBuilderImpl}s.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class DefaultPostReplyBuilderFactory implements PostReplyBuilderFactory {
/**
* {@link Sone} implementation that only stores the ID of a Sone and returns
* {@code null}, {@code 0}, or empty collections where appropriate.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class IdOnlySone implements Sone {
/**
* {@link ImageBuilder} implementation that creates {@link ImageImpl} objects.
- *
- * @author <a href="mailto:d.roden@xplosion.de">David Roden</a>
*/
public class ImageBuilderImpl extends AbstractImageBuilder {
/**
* Container for image metadata.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class ImageImpl implements Image {
/**
* {@link PostBuilder} implementation that creates {@link PostImpl} objects.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class PostBuilderImpl extends AbstractPostBuilder {
/**
* A post is a short message that a user writes in his Sone to let other users
* know what is going on.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class PostImpl implements Post {
/**
* {@link PostReplyBuilder} implementation that creates {@link PostReplyImpl}
* objects.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class PostReplyBuilderImpl extends AbstractPostReplyBuilder {
/**
* Simple {@link PostReply} implementation.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class PostReplyImpl extends ReplyImpl<PostReply> implements PostReply {
*
* @param <T>
* The type of the reply
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public abstract class ReplyImpl<T extends Reply<T>> implements Reply<T> {
* {@link Sone} implementation.
* <p/>
* Operations that modify the Sone need to synchronize on the Sone in question.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class SoneImpl implements Sone {
/**
* Exception that signals a database error.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class DatabaseException extends Exception {
/**
* Helper class for interacting with a {@link Configuration}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class ConfigurationLoader {
/**
* Memory-based {@link BookmarkDatabase} implementation.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class MemoryBookmarkDatabase implements BookmarkDatabase {
/**
* Memory-based [PostDatabase] implementation.
- *
- * @author [David ‘Bombe’ Roden](mailto:bombe@pterodactylus.net)
*/
@Singleton
class MemoryDatabase @Inject constructor(private val configuration: Configuration) : AbstractService(), Database {
/**
* In-memory implementation of friend-related functionality.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
class MemoryFriendDatabase {
/**
* A post is a short message that a user writes in his Sone to let other users
* know what is going on.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
class MemoryPost implements Post {
/**
* {@link PostBuilder} implementation that creates a {@link MemoryPost}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
class MemoryPostBuilder extends AbstractPostBuilder {
/**
* Memory-based {@link PostReply} implementation.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
class MemoryPostReply implements PostReply {
/**
* {@link PostReplyBuilder} implementation that creates {@link MemoryPostReply}
* objects.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
class MemoryPostReplyBuilder extends AbstractPostReplyBuilder {
/**
* Memory-based {@link AbstractSoneBuilder} implementation.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class MemorySoneBuilder extends AbstractSoneBuilder {
/**
* Abstract base implementation of a {@link Command} with Sone-related helper
* methods.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public abstract class AbstractSoneCommand extends AbstractCommand {
* FCP command that creates a new {@link Post}.
*
* @see Core#createPost(Sone, Optional, String)
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class CreatePostCommand extends AbstractSoneCommand {
* FCP command that creates a new {@link Reply}.
*
* @see Core#createReply(Sone, Post, String)
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class CreateReplyCommand extends AbstractSoneCommand {
* FCP command that deletes a {@link Post}.
*
* @see Core#deletePost(Post)
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class DeletePostCommand extends AbstractSoneCommand {
* FCP command that deletes a {@link PostReply}.
*
* @see Core#deleteReply(PostReply)
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class DeleteReplyCommand extends AbstractSoneCommand {
/**
* Implementation of an FCP interface for other clients or plugins to
* communicate with Sone.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
@Singleton
public class FcpInterface {
/**
* The action level that full access for the FCP connection is required.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public enum FullAccessRequired {
/**
* Implements the “GetLocalSones” FCP command that returns the list of local
* Sones to the sender.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class GetLocalSonesCommand extends AbstractSoneCommand {
/**
* The “GetPost” FCP command returns a single {@link Post} to an FCP client.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class GetPostCommand extends AbstractSoneCommand {
/**
* Implementation of an FCP interface for other clients or plugins to
* communicate with Sone.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class GetPostFeedCommand extends AbstractSoneCommand {
/**
* Implements the “GetPosts” FCP command that returns the list of posts a Sone
* made.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class GetPostsCommand extends AbstractSoneCommand {
/**
* Implements the “GetSone“ FCP command which returns {@link Profile}
* information about a {@link Sone}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class GetSoneCommand extends AbstractSoneCommand {
/**
* Implements the “GetSones” FCP command that returns the list of known Sones.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class GetSonesCommand extends AbstractSoneCommand {
/**
* Implements the “LikePost” FCP command which allows the user to like a post.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class LikePostCommand extends AbstractSoneCommand {
/**
* Implements the “LikeReply” FCP command which allows the user to like a reply.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class LikeReplyCommand extends AbstractSoneCommand {
* Implements the “LockSone” FCP command. If a valid local Sone was given as
* parameter “Sone,” this command will always lock the Sone and reply with
* “SoneLocked.”
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class LockSoneCommand extends AbstractSoneCommand {
* Implements the “UnlockSone” FCP command. If a valid local Sone was given as
* parameter “Sone,” this command will always unlock the Sone and reply with
* “SoneUnlocked.”
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class UnlockSoneCommand extends AbstractSoneCommand {
/**
* Returns version information about the Sone plugin.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class VersionCommand extends AbstractSoneCommand {
/**
* Event that signals that the {@link FcpInterface} was activated in the
* configuration.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class FcpInterfaceActivatedEvent {
/**
* Event that signals that the {@link FcpInterface} was deactivated in the
* configuration.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class FcpInterfaceDeactivatedEvent {
/**
* Event that signals that the {@link FcpInterface}’s {@link
* FullAccessRequired} parameter was changed in the configuration.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class FullAccessRequiredChanged {
/**
* Encapsulates the parts of a {@link FreenetURI} that do not change while
* being converted from SSK to USK and/or back.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class Key {
/**
* {@link Filter} implementation replaces {@link String} values with their
* translated equivalents.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class L10nFilter implements Filter {
/**
* Backend for a {@link Configuration} that is based on a {@link PluginStore}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class PluginStoreConfigurationBackend implements ExtendedConfigurationBackend {
/**
* Helper class to construct {@link SimpleFieldSet} objects in a single call.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class SimpleFieldSetBuilder {
/**
* Basic implementation of a {@link Command} with various helper methods to
* simplify processing of input parameters.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public abstract class AbstractCommand implements Command {
/**
* Implementation of an FCP interface for other clients or plugins to
* communicate with Sone.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public interface Command {
/**
* The access type of the request.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public static enum AccessType {
/**
* Interface for command replies.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public static class Response {
/**
* Response implementation that can return an error message and an optional
* error code.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class ErrorResponse extends Response {
/**
* Base exception for FCP communication.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class FcpException extends Exception {
/**
* Interface for talking to other plugins. Other plugins are identified by their
* name and a unique connection identifier.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
@Singleton
public class PluginConnector implements FredPluginTalker {
/**
* Exception that signals an error when communicating with a plugin.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class PluginException extends WebOfTrustException {
/**
* Event that signals that a plugin reply was received.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class ReceivedReplyEvent {
/**
* Custom container for the Web of Trust context. This allows easier
* configuration of dependency injection.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class Context {
/**
* A Web of Trust identity.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class DefaultIdentity implements Identity {
/**
* An own identity is an identity that the owner of the node has full control
* over.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class DefaultOwnIdentity extends DefaultIdentity implements OwnIdentity {
* Interface for web of trust identities, defining all functions that can be
* performed on an identity. An identity is only a container for identity data
* and will not perform any updating in the WebOfTrust plugin itself.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public interface Identity {
* added and removed identities, and for identities that exist in both list
* their contexts and properties are checked for added, removed, or (in case of
* properties) changed values.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class IdentityChangeDetector {
* Detects changes in {@link Identity}s trusted my multiple {@link
* OwnIdentity}s.
*
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
* @see IdentityChangeDetector
*/
public class IdentityChangeEventSender {
/**
* Loads {@link OwnIdentity}s and the {@link Identity}s they trust.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class IdentityLoader {
/**
* Connects to a {@link WebOfTrustConnector} and sends identity events to an
* {@link EventBus}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
@ImplementedBy(IdentityManagerImpl.class)
public interface IdentityManager extends Service {
* It is also responsible for polling identities from the Web of Trust plugin
* and sending events to the {@link EventBus} when {@link Identity}s and
* {@link OwnIdentity}s are discovered or disappearing.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
@Singleton
public class IdentityManagerImpl extends AbstractService implements IdentityManager {
/**
* Defines a local identity, an own identity.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public interface OwnIdentity extends Identity {
/**
* Container class for trust in the web of trust.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class Trust {
/**
* Connector for the Web of Trust plugin.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
@Singleton
public class WebOfTrustConnector {
/**
* Container for the data of the reply from a plugin.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
private static class Reply {
/**
* Helper method to create {@link SimpleFieldSet}s with terser code.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
private static class SimpleFieldSetConstructor {
/**
* Container for identifying plugins. Plugins are identified by their plugin
* name and their unique identifier.
- *
- * @author <a href="mailto:d.roden@xplosion.de">David Roden</a>
*/
private static class PluginIdentifier {
/**
* Exception that signals an error processing web of trust identities, mostly
* when communicating with the web of trust plugin.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class WebOfTrustException extends Exception {
/**
* Event that signals that an {@link Identity} was added.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class IdentityAddedEvent extends IdentityEvent {
/**
* Base class for {@link Identity} events.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public abstract class IdentityEvent {
/**
* Event that signals that an {@link Identity} was removed.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class IdentityRemovedEvent extends IdentityEvent {
/**
* Event that signals that an {@link Identity} was updated.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class IdentityUpdatedEvent extends IdentityEvent {
/**
* Event that signals that an {@link OwnIdentity} was added.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class OwnIdentityAddedEvent extends OwnIdentityEvent {
/**
* Base class for {@link OwnIdentity} events.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public abstract class OwnIdentityEvent {
/**
* Event that signals that an {@link OwnIdentity} was removed.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class OwnIdentityRemovedEvent extends OwnIdentityEvent {
/**
* {@link Loaders} implementation that loads all resources from the filesystem.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class DebugLoaders implements Loaders {
/**
* Default {@link Loaders} implementation that loads resources from the classpath.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class DefaultLoaders implements Loaders {
/**
* Defines loaders for resources that can be loaded from various locations.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
@ImplementedBy(DefaultLoaders.class)
public interface Loaders {
/**
* Takes the input and parses it as a new {@link Template}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class ReparseFilter implements Filter {
/**
* This class interfaces with Freenet. It is the class that is loaded by the
* node and starts up the whole Sone system.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class SonePlugin implements FredPlugin, FredPluginFCP, FredPluginL10n, FredPluginBaseL10n, FredPluginThreadless, FredPluginVersioned {
*
* @param <T>
* The type of the items
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class ListNotification<T> extends TemplateNotification {
/**
* Filter for {@link ListNotification}s.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
@Singleton
public class ListNotificationFilter {
/**
* Filters {@link Notification}s involving {@link Post}s.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
@Singleton
public class PostVisibilityFilter {
/**
* Filter that checks a {@link PostReply} for visibility.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
@Singleton
public class ReplyVisibilityFilter {
* {@link Accessor} implementation for {@link Album}s. A property named
* “backlinks” is added, it returns links to all parents and the owner Sone of
* an album.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class AlbumAccessor extends ReflectionAccessor {
/**
* Container for links.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
private static class Link {
* <dt>Returns the nice names of all {@link Sone}s in the collection, sorted
* ascending by their nice names.</dt>
* </dl>
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class CollectionAccessor extends ReflectionAccessor {
* Converts the {@link String} {@link String#valueOf(Object) representation} of
* an object to a valid CSS class name by converting all characters that are not
* US-ASCII letters or numbers to an underscore.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class CssClassNameFilter implements Filter {
/**
* {@link Template} implementation that can be reloaded from the filesystem.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class FilesystemTemplate extends Template {
/**
* Exception that signals that a template file could not be found.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public static class TemplateFileNotFoundException extends RuntimeException {
/**
* Extracts a page number from a {@link Request}’s parameters and stores it in
* the {@link TemplateContext}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class GetPagePlugin implements Plugin {
* {@link HTTPRequest}s.
*
* @see HTTPRequest#getHeader(String)
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class HttpRequestAccessor extends ReflectionAccessor {
/**
* {@link Accessor} implementation that adds a “uniqueNickname” member to an
* {@link Identity}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
@Singleton
public class IdentityAccessor extends ReflectionAccessor {
* <li>{@code next}: returns the next image in the image’s album, or {@code
* null} if the image is the last image of its album.</li>
* </ul>
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class ImageAccessor extends ReflectionAccessor {
/**
* Template filter that turns an {@link Image} into an HTML <img> tag,
* using some parameters to influence parameters of the image.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class ImageLinkFilter implements Filter {
* Escapes double quotes, backslashes, carriage returns and line feeds, and
* additionally encloses a given string with double quotes to make it possible
* to use a string in Javascript.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class JavascriptFilter implements Filter {
* <dd>replies</dd>
* <dt>All replies to this post, sorted by time, oldest first</dt>
* </dl>
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class PostAccessor extends ReflectionAccessor {
* {@link Accessor} for {@link Profile} objects that overwrites the original
* “avatar” member to include checks for whether the custom avatar should
* actually be shown.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class ProfileAccessor extends ReflectionAccessor {
/**
* {@link Accessor} implementation that adds a couple of properties to
* {@link Reply}s.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class ReplyAccessor extends ReflectionAccessor {
* {@link Filter} implementation that groups replies by the post the are in
* reply to, returning a map with the post as key and the list of replies as
* values.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class ReplyGroupFilter implements Filter {
* This filter expects a {@link FreenetRequest} as input and outputs a
* {@link URI} that is modified by the parameters. The name of the parameter is
* handed in as “name”, the new value is stored in “value”.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class RequestChangeFilter implements Filter {
* <dd>Will return {@code true} if the sone in question is the currently logged
* in Sone.</dd>
* </dl>
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class SoneAccessor extends ReflectionAccessor {
* “start” and “length.” “length” is optional and defaults to “the rest of the
* string.” “start” starts at {@code 0} and can be negative to denote starting
* at the end of the string.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class SubstringFilter implements Filter {
* <dd>{@link Boolean} that indicates whether this trust relationship has an
* explicit value assigned to it.</dd>
* </dl>
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class TrustAccessor extends ReflectionAccessor {
/**
* Filter that reduces a collection to a {@link Set}, removing duplicates.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class UniqueElementFilter implements Filter {
/**
* {@link Filter} implementation that replaces a {@link Long} with a value of
* {@code 0} by a {@link String} from an {@link BaseL10n l10n handler}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class UnknownDateFilter implements Filter {
/**
* {@link Part} implementation that holds a freemail address.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class FreemailPart implements Part {
*
* @param <C>
* The type of the parser context
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public interface Parser<C extends ParserContext> {
* Context for the {@link Parser}. This interface needs to be implemented by
* {@link Parser}s that need to provide more information than just the text to
* parse to {@link Parser#parse(String, ParserContext)}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public interface ParserContext {
/**
* {@link Part} implementation that stores a reference to a {@link Post}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class PostPart implements Part {
* {@link ParserContext} implementation for the {@link SoneTextParser}. It
* stores the {@link Sone} that provided the parsed text so that certain links
* can be marked in a different way.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class SoneTextParserContext implements ParserContext {
* will be converted to “KSK@gpl.txt”. This will only work for links that point
* to the same address Sone is accessed by, so if you access Sone using
* localhost:8888, links to 127.0.0.1:8888 will not be removed.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class TextFilter {
*
* @param <T>
* The type of the option
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class DefaultOption<T> implements Option<T> {
* {@link Predicate} that verifies that an {@link Integer} value is not
* {@code null} and is between a lower and an upper bound. Both bounds are
* inclusive.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class IntegerRangePredicate implements Predicate<Integer> {
/**
* Parses numbers from strings.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class NumberParsers {
*
* @param <T>
* The type of the option
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public interface Option<T> {
/**
* Bundles functionality that a web interface of a Freenet plugin needs, e.g.
* references to l10n helpers.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class WebInterface implements SessionProvider {
/**
* Freenet-specific {@link Page} extension that adds the capability to allow a
* link to a page to be unharmed by Freenet’s content filter.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public interface FreenetPage extends Page<FreenetRequest> {
/**
* Encapsulates all Freenet-specific properties of a request.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class FreenetRequest extends Request {
/**
* Base class for all {@link Page}s that are rendered with {@link Template}s and
* fit into Freenet’s web interface.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class FreenetTemplatePage implements FreenetPage, LinkEnabledCallback {
* wants to redirect the user during the
* {@link FreenetTemplatePage#processTemplate(FreenetRequest, TemplateContext)}
* method call.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public static class RedirectException extends Exception {
/**
* {@link Toadlet} implementation that is wrapped around a {@link Page}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class PageToadlet extends Toadlet implements LinkEnabledCallback, LinkFilterExceptedToadlet {
/**
* Factory that creates {@link PageToadlet}s using a given
* {@link HighLevelSimpleClient}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class PageToadletFactory {
/**
* Renders a number of pre-parsed [Part] into a [String].
- *
- * @author [David ‘Bombe’ Roden](mailto:bombe@pterodactylus.net)
*/
class RenderFilter(private val core: Core, private val templateContextFactory: TemplateContextFactory) : Filter {
/**
* [Part] implementation that holds a single piece of text.
- *
- * @author [David Roden](mailto:d.roden@emetriq.com)
*/
data class PlainTextPart(override val text: String) : Part
/**
* Unit test for {@link ConfigurationSoneParser}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class ConfigurationSoneParserTest {
/**
* Unit test for {@link Core} and its subclasses.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class CoreTest {
/**
* Unit test for {@link FreenetInterface}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class FreenetInterfaceTest {
/**
* Unit test for {@link Options}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class OptionsTest {
/**
* Unit test for {@link PreferencesLoader}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class PreferencesLoaderTest {
/**
* Unit test for {@link Preferences}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class PreferencesTest {
/**
* Unit test for {@link SoneChangeDetector}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class SoneChangeDetectorTest {
/**
* Unit test for {@link SoneDownloaderImpl} and its subclasses.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class SoneDownloaderTest {
/**
* Unit test for {@link SoneInserter} and its subclasses.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class SoneInserterTest {
/**
* Unit test for {@link SoneModificationDetector}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class SoneModificationDetectorTest {
/**
* Unit test for {@link SoneParser}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class SoneParserTest {
/**
* Unit test for {@link SoneRescuer}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class SoneRescuerTest {
/**
* Unit test for {@link SoneUri}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class SoneUriTest {
/**
* Unit test for {@link UpdateChecker}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class UpdateCheckerTest {
/**
* Unit test for {@link WebOfTrustUpdaterImpl} and its subclasses.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class WebOfTrustUpdaterTest {
/**
* Unit test for {@link Profile}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class ProfileTest {
/**
* Unit test for {@link AbstractSoneBuilder}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class AbstractSoneBuilderTest {
/**
* Unit test for {@link ImageImpl}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class ImageImplTest {
/**
* Unit test for {@link MemoryBookmarkDatabase}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class MemoryBookmarkDatabaseTest {
/**
* Tests for {@link MemoryDatabase}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class MemoryDatabaseTest {
/**
* Unit test for {@link Key}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class KeyTest {
/**
* Unit test for {@link DefaultIdentity}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class DefaultIdentityTest {
/**
* Unit test for {@link DefaultOwnIdentity}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class DefaultOwnIdentityTest extends DefaultIdentityTest {
/**
* Creates {@link Identity}s and {@link OwnIdentity}s.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class Identities {
/**
* Unit test for {@link IdentityChangeDetector}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class IdentityChangeDetectorTest {
/**
* Unit test for {@link IdentityChangeEventSender}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class IdentityChangeEventSenderTest {
/**
* Unit test for {@link IdentityLoader}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class IdentityLoaderTest {
/**
* Unit test for {@link IdentityManagerImpl}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class IdentityManagerTest {
/**
* Unit test for {@link IdentityEvent}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class IdentityEventTest {
/**
* Unit test for {@link OwnIdentityEvent}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class OwnIdentityEventTest {
/**
* Unit test for {@link DebugLoaders}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class DebugLoadersTest {
/**
* Unit test for {@link DefaultLoaders}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class DefaultLoadersTest {
/**
* Unit test for {@link ReparseFilter}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class ReparseFilterTest {
/**
* Unit test for {@link ListNotificationFilterTest}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class ListNotificationFilterTest {
/**
* Unit test for {@link ListNotification}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class ListNotificationTest {
/**
* Unit test for {@link PostVisibilityFilterTest}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class PostVisibilityFilterTest {
/**
* Unit test for {@link ReplyVisibilityFilterTest}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class ReplyVisibilityFilterTest {
/**
* Unit test for {@link AlbumAccessor}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class AlbumAccessorTest {
/**
* Unit test for {@link CollectionAccessor}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class CollectionAccessorTest {
/**
* Unit test for {@link CssClassNameFilter}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class CssClassNameFilterTest {
/**
* Unit test for {@link FilesystemTemplate}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class FilesystemTemplateTest {
/**
* Unit test for {@link GetPagePlugin}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class GetPagePluginTest {
/**
* Unit test for {@link HttpRequestAccessor}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class HttpRequestAccessorTest {
/**
* Unit test for {@link IdentityAccessor}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class IdentityAccessorTest {
/**
* Unit test for {@link ImageLinkFilterTest}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class ImageLinkFilterTest {
/**
* Unit test for {@link JavascriptFilter}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class JavascriptFilterTest {
/**
* Unit test for {@link PostAccessor}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class PostAccessorTest {
/**
* This annotation marks test methods that are somehow not good test methods.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
@Retention(SOURCE)
@Target(METHOD)
/**
* Matchers used throughout the tests.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class Matchers {
/**
* {@link AlbumBuilder} that returns a mocked {@link Album}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class TestAlbumBuilder implements AlbumBuilder {
/**
* {@link ImageBuilder} implementation that returns a mocked {@link Image}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class TestImageBuilder implements ImageBuilder {
/**
* {@link PostBuilder} implementation that returns a mocked {@link Post}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class TestPostBuilder implements PostBuilder {
/**
* {@link PostReplyBuilder} that returns a mocked {@link PostReply}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class TestPostReplyBuilder implements PostReplyBuilder {
/**
* Utilities for testing.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class TestUtil {
/**
* Simple {@link Value} implementation.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class TestValue<T> implements Value<T> {
/**
* Unit test for {@link FreemailPart}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class FreemailPartTest {
/**
* Unit test for {@link PostPart}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class PostPartTest {
/**
* JUnit test case for {@link SoneTextParser}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class SoneTextParserTest {
/**
* Mock Sone provider.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
private static class TestSoneProvider implements SoneProvider {
/**
* JUnit test for {@link TextFilter}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class TextFilterTest {
/**
* Unit test for {@link DefaultOption}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class DefaultOptionTest {
/**
* Unit test for {@link IntegerRangePredicate}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class IntegerRangePredicateTest {
/**
* Unit test for {@link NumberParsers}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class NumberParsersTest {
/**
* Utilities for testing the <code>web</code> package.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class WebTestUtils {
/**
* Unit test for {@link FreenetRequest}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class FreenetRequestTest {
/**
* Unit test for [ConfigurationLoader].
- *
- * @author [David ‘Bombe’ Roden](mailto:bombe@pterodactylus.net)
*/
class ConfigurationLoaderTest {