[Abora-cvs] abora-ash/src/org/abora/ash/engine AboraException.java,NONE,1.1 AboraConverter.java,NONE
Status: Alpha
Brought to you by:
dgjones
Update of /cvsroot/abora/abora-ash/src/org/abora/ash/engine In directory sc8-pr-cvs1:/tmp/cvs-serv3306/src/org/abora/ash/engine Added Files: AboraException.java AboraConverter.java WorksStorage.java Endorsement.java Id.java AboraObject.java Log Message: -Add start of Ash subproject, which is currently the beginnings of a port of the dolphin-demo smalltalk server code --- NEW FILE: AboraException.java --- /* * Abora-Ash * Part of the Abora hypermedia project: http://www.abora.org * Copyright 2003 David G Jones */ package org.abora.ash.engine; /** */ public class AboraException extends Exception { /** * Constructor for AboraException. */ public AboraException() { super(); } /** * Constructor for AboraException. * @param message */ public AboraException(String message) { super(message); } /** * Constructor for AboraException. * @param message * @param cause */ public AboraException(String message, Throwable cause) { super(message, cause); } /** * Constructor for AboraException. * @param cause */ public AboraException(Throwable cause) { super(cause); } } --- NEW FILE: AboraConverter.java --- /* * Abora-Ash * Part of the Abora hypermedia project: http://www.abora.org * Copyright 2003 David G Jones */ package org.abora.ash.engine; /** */ public class AboraConverter { /** * Constructor for AboraConverter. */ private AboraConverter() { super(); } public static byte[] toAboraContent(String s) { return s.getBytes(); } } --- NEW FILE: WorksStorage.java --- /* * Abora-Ash * Part of the Abora hypermedia project: http://www.abora.org * Copyright 2003 David G Jones */ package org.abora.ash.engine; import java.lang.ref.WeakReference; import java.util.HashSet; import java.util.Map; import java.util.NoSuchElementException; import java.util.Set; import java.util.WeakHashMap; import org.abora.ash.content.BeWork; /** */ public class WorksStorage extends AboraObject { private final Map idLookup = new WeakHashMap(); private final Set works = new HashSet(); private BeWork userHome = null; private static final WorksStorage INSTANCE = new WorksStorage(); // instanceVariableNames: 'works idLookup userHome' public void put(Id id, AboraObject value) { //@todo this should probably be somewhere else idLookup.put(id, new WeakReference(value)); } public void add(BeWork work) { works.add(work); } public int knownIds() { return idLookup.size(); } public AboraObject get(Id id) { //@todo this should probably be somewhere else WeakReference holder = (WeakReference) idLookup.get(id); AboraObject value = holder != null ? (AboraObject) holder.get() : null; if (value == null) throw new NoSuchElementException("Nothing associated with: "+id); return value; } public void remove(BeWork work) { works.remove(work); } // // works // ^works public static WorksStorage getInstance() { return INSTANCE; } /** * Returns the userHome. * @return BeWork */ public BeWork getUserHome() { return userHome; } /** * Sets the userHome. * @param userHome The userHome to set */ public void setUserHome(BeWork userHome) { this.userHome = userHome; } } --- NEW FILE: Endorsement.java --- /* * Abora-Ash * Part of the Abora hypermedia project: http://www.abora.org * Copyright 2003 David G Jones */ package org.abora.ash.engine; /** */ public class Endorsement extends AboraObject { private final Id endorseeId; private final Id itemId; public Endorsement(Id endorseeId, Id itemId) { this.endorseeId = endorseeId; this.itemId = itemId; } public boolean equals(Object o) { if (!(o instanceof Endorsement)) return false; Endorsement e = (Endorsement) o; return getEndorseeId().equals(e.getEndorseeId()) && getItemId().equals(e.getItemId()); } public boolean checkIntegrity() { return true; } public AboraObject endorsee() { throw new UnsupportedOperationException(); // #todo "WorksStorage references only make sense on server. Review!!!!!!". // ^WorksStorage current lookupId: endorseeId! } public Id getEndorseeId() { return endorseeId; } public Id getItemId() { return itemId; } public int hashCode() { return (getEndorseeId().hashCode() << 1) | getItemId().hashCode(); } public String asString() { return "Endorsement(endorseeId=" + getEndorseeId() + ", itemId=" + getItemId() + ")"; } } --- NEW FILE: Id.java --- /* * Abora-Ash * Part of the Abora hypermedia project: http://www.abora.org * Copyright 2003 David G Jones */ package org.abora.ash.engine; /** */ public class Id extends AboraObject { private final long value; private static long NEXT_VALUE= 1; public Id() { value = NEXT_VALUE++; } public Id(AboraObject o) { this(); WorksStorage.getInstance().put(this, o); } public boolean equals(Object o) { if (!(o instanceof Id)) return false; Id id = (Id) o; return getValue() == id.getValue(); } public int hashCode() { return (int)getValue(); } public long getValue() { return value; } public String asString() { return "Id("+getValue()+")"; } // nextId // | id | // id := (self new) // value: NextValue; // yourself. // NextValue := NextValue + 1. // ^id! // // nextIdFor: anObject // | id | // id := self nextId. // WorksStorage current addId: id with: anObject. // ^id! ! } --- NEW FILE: AboraObject.java --- /* * Abora-Ash * Part of the Abora hypermedia project: http://www.abora.org * Copyright 2003 David G Jones */ package org.abora.ash.engine; /** */ public class AboraObject { } |