Skip to content

denissudak/memento

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Memento

Memento interfaces for Java.

<dependency>
    <groupId>org.open-structures</groupId>
    <artifactId>memento</artifactId>
    <version>1.0.0</version>
</dependency>

A set of interfaces to save the state of the object so that it can be restored later.

Here's an example of the Message which state can be "saved":

public class Message implements Restorable<Message.MessageSnapshot> {
    private StringBuilder stringBuilder = new StringBuilder();

    public void addLine(String l){
        stringBuilder.append(l).append("\n");
    }

    public String getContents(){
        return stringBuilder.toString();
    }

    @Override
    public MessageSnapshot getState() {
        return new MessageSnapshot(getContents());
    }

    @Override
    public void restore(MessageSnapshot state) {
        stringBuilder = new StringBuilder(state.msgContents);
    }

    public static class MessageSnapshot implements Memento{
        private final String msgContents;

        private MessageSnapshot(String msgContents) {
            this.msgContents = msgContents;
        }
    }
}

Here's how we can save and restore the message to its previous state:

Message msg = new Message();
msg.addLine("What is Pi?");
Message.MessageSnapshot saved = msg.getState();
msg.addLine("Three. More or less.");
msg.restore(saved);
msg.getContents(); // What is Pi?

About

Memento interfaces for Java

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages