dflorey     2004/05/24 06:52:45

  Modified:    proposals/projector/src/java/org/apache/slide/projector/engine
                        SystemContext.java HttpContext.java Scheduler.java
                        Process.java ProcessorManager.java Cache.java
                        ProcessServlet.java
               proposals/projector/src/java/org/apache/slide/projector/processor/form
                        ControlComposer.java ClearForm.java Test.java
               proposals/projector/src/java/org/apache/slide/projector/i18n
                        MessageManager.java
               proposals/projector/src/java/org/apache/slide/projector
                        AbstractContext.java
  Added:       proposals/projector/src/java/org/apache/slide/projector/application
                        ApplicationListener.java ApplicationManager.java
                        Application.java
               proposals/projector/src/java/org/apache/slide/projector/store
                        RequestParameterStore.java FormStore.java
                        RequestHeaderStore.java SessionStore.java
                        RequestAttributeStore.java CookieStore.java
                        RepositoryStore.java AbstractStore.java
                        ProcessStore.java
  Removed:     proposals/projector/src/java/org/apache/slide/projector/engine
                        AbstractStore.java ApplicationManager.java
                        ApplicationListener.java Application.java
  Log:
  Moved store impls to store package
  
  Revision  Changes    Path
  1.4       +3 -1      
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/engine/SystemContext.java
  
  Index: SystemContext.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/engine/SystemContext.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- SystemContext.java        15 May 2004 09:37:20 -0000      1.3
  +++ SystemContext.java        24 May 2004 13:52:43 -0000      1.4
  @@ -7,13 +7,15 @@
   import org.apache.slide.projector.Store;
   import org.apache.slide.projector.AbstractContext;
   import org.apache.slide.projector.URI;
  +import org.apache.slide.projector.store.ProcessStore;
  +import org.apache.slide.projector.store.RepositoryStore;
   
   public class SystemContext extends AbstractContext {
        private final static String BOOKMARK = "_bookmark_";
        private final static String FORM_MAP = "_form_map_";
        
  -     private RepositoryStore repositoryStore = new RepositoryStore();
       private Cache contextStore = new Cache();
  +     private RepositoryStore repositoryStore = new RepositoryStore(this);
       private ProcessStore transientProcessStore = new 
ProcessStore(Cache.getInstance());
       private ProcessStore persistentProcessStore = new ProcessStore(repositoryStore);
   
  
  
  
  1.4       +2 -181    
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/engine/HttpContext.java
  
  Index: HttpContext.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/engine/HttpContext.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- HttpContext.java  10 May 2004 16:54:24 -0000      1.3
  +++ HttpContext.java  24 May 2004 13:52:43 -0000      1.4
  @@ -3,13 +3,11 @@
   import org.apache.commons.httpclient.Credentials;
   import org.apache.slide.projector.Constants;
   import org.apache.slide.projector.Store;
  -import org.apache.slide.projector.resource.MapResource;
   import org.apache.slide.projector.resource.StreamableResource;
  +import org.apache.slide.projector.store.*;
   
  -import javax.servlet.http.Cookie;
   import javax.servlet.http.HttpServletRequest;
   import javax.servlet.http.HttpServletResponse;
  -import java.io.IOException;
   
   public class HttpContext extends SystemContext {
       private final static String CREDENTIALS = "credentials";
  @@ -26,7 +24,7 @@
       public HttpContext(HttpServletRequest request, HttpServletResponse response) {
           this.contextPath = request.getContextPath()+Constants.PROCESS_SERVLET_PATH;
           sessionStore = new SessionStore(request);
  -        formStore = new FormStore(sessionStore);
  +        formStore = new FormStore(this, sessionStore);
           requestAttributeStore = new RequestAttributeStore(request);
           requestParameterStore = new RequestParameterStore(request);
           requestHeaderStore = new RequestHeaderStore(request);
  @@ -82,182 +80,5 @@
   
       public StreamableResource getPresentableResource() {
           return resource;
  -    }
  -
  -    class SessionStore extends AbstractStore {
  -        protected HttpServletRequest request;
  -
  -        public SessionStore(HttpServletRequest request) {
  -            this.request = request;
  -        }
  -
  -        public void put(String key, Object value) {
  -            request.getSession().setAttribute(key, value);
  -        }
  -
  -        public Object get(String key) {
  -            return request.getSession().getAttribute(key);
  -        }
  -
  -        public void dispose(String key) {
  -            request.getSession().removeAttribute(key);
  -        }
  -    }
  -
  -    class CookieStore implements Store {
  -        protected HttpServletRequest request;
  -        protected HttpServletResponse response;
  -
  -        public CookieStore(HttpServletRequest request, HttpServletResponse 
response) {
  -            this.request = request;
  -            this.response = response;
  -        }
  -
  -        public void put(String key, Object value, long timeout) {
  -            Cookie cookie = null;
  -            if ( value instanceof Cookie ) {
  -                cookie = (Cookie)value;
  -            }
  -            if ( value instanceof String ) {
  -                cookie = new Cookie(key, (String)value);
  -            }
  -            if ( cookie != null ) {
  -             cookie.setMaxAge((int) (timeout/1000));
  -             response.addCookie(cookie);
  -            }
  -        }
  -
  -        public void put(String key, Object value) {
  -            Cookie cookie = null;
  -            if ( value instanceof Cookie ) {
  -                cookie = (Cookie)value;
  -            }
  -            if ( value instanceof String ) {
  -                cookie = new Cookie(key, (String)value);
  -            }
  -            if ( cookie != null ) {
  -                response.addCookie(cookie);
  -            }
  -        }
  -
  -        public Object get(String key) {
  -            Cookie[] cookies = request.getCookies();
  -            for ( int i = 0; i < cookies.length; i++ ) {
  -                if ( cookies[i].getName().equals(key) ) {
  -                    return cookies[i].getValue();
  -                }
  -            }
  -            return null;
  -        }
  -
  -        public void dispose(String key) {
  -            request.removeAttribute(key);
  -        }
  -    }
  -
  -    class RequestParameterStore implements Store {
  -        protected HttpServletRequest request;
  -
  -        public RequestParameterStore(HttpServletRequest request) {
  -            this.request = request;
  -        }
  -
  -        public void put(String key, Object value, long timeout) throws IOException {
  -            throw new IOException("Put operation is not supported by 
request-parameter store!");
  -        }
  -
  -        public void put(String key, Object value) throws IOException {
  -            throw new IOException("Put operation is not supported by 
request-parameter store!");
  -        }
  -
  -        public Object get(String key) {
  -            return request.getParameterValues(key);
  -        }
  -
  -        public void dispose(String key) throws IOException {
  -            throw new IOException("Dispose operation is not supported by 
request-parameter store!");
  -        }
  -    }
  -
  -    class RequestHeaderStore implements Store {
  -        protected HttpServletRequest request;
  -
  -        public RequestHeaderStore(HttpServletRequest request) {
  -            this.request = request;
  -        }
  -
  -        public void put(String key, Object value, long timeout) throws IOException {
  -            throw new IOException("Put operation is not supported by request-header 
store!");
  -        }
  -
  -        public void put(String key, Object value) throws IOException {
  -            throw new IOException("Put operation is not supported by request-header 
store!");
  -        }
  -
  -        public Object get(String key) {
  -            return request.getHeader(key);
  -        }
  -
  -        public void dispose(String key) throws IOException {
  -            throw new IOException("Dispose operation is not supported by 
request-header store!");
  -        }
  -    }
  -
  -    class RequestAttributeStore extends AbstractStore {
  -        protected HttpServletRequest request;
  -
  -        public RequestAttributeStore(HttpServletRequest request) {
  -            this.request = request;
  -        }
  -
  -        public void put(String key, Object value) {
  -            request.setAttribute(key, value);
  -        }
  -
  -        public Object get(String key) {
  -            return request.getAttribute(key);
  -        }
  -
  -        public void dispose(String key) {
  -            request.removeAttribute(key);
  -        }
  -    }
  -
  -    public class FormStore extends AbstractStore {
  -     private Store store;
  -     
  -     public FormStore(Store store) {
  -             this.store = store;
  -     }
  -
  -             public void put(String key, Object value) throws IOException {
  -                     MapResource domain = getDomain();
  -                     domain.getMap().put(key, value);
  -             }
  -
  -             public Object get(String key) throws IOException {
  -                     return getDomain().getMap().get(key);
  -             }
  -
  -             public void dispose(String key) throws IOException {
  -                     getDomain().getMap().remove(key);
  -             }
  -
  -             public void clear() throws IOException {
  -                     String domain = getProcess().toString();
  -                     store.dispose(domain);
  -             }
  -             
  -             public MapResource getDomain() throws IOException {
  -                     String domain = getProcess().toString();
  -                     MapResource mapResource = (MapResource)store.get(domain);
  -                     if ( mapResource == null ) {
  -                             mapResource = new MapResource();
  -                             store.put(domain, mapResource);
  -                             return mapResource;
  -                     } else {
  -                             return mapResource;
  -                     }
  -             }
       }
   }
  
  
  
  1.4       +1 -0      
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/engine/Scheduler.java
  
  Index: Scheduler.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/engine/Scheduler.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Scheduler.java    24 May 2004 12:33:41 -0000      1.3
  +++ Scheduler.java    24 May 2004 13:52:43 -0000      1.4
  @@ -3,6 +3,7 @@
   import de.zeigermann.xml.XMLStringWriter;
   import de.zeigermann.xml.XMLWriter;
   import org.apache.slide.projector.*;
  +import org.apache.slide.projector.application.*;
   import org.apache.slide.projector.connector.ConnectorFactory;
   import org.apache.slide.projector.connector.Subscriber;
   import org.apache.slide.projector.expression.Expression;
  
  
  
  1.6       +1 -0      
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/engine/Process.java
  
  Index: Process.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/engine/Process.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- Process.java      24 May 2004 12:33:41 -0000      1.5
  +++ Process.java      24 May 2004 13:52:43 -0000      1.6
  @@ -9,6 +9,7 @@
   import org.apache.slide.projector.resource.DocumentResource;
   import org.apache.slide.projector.resource.StreamableResource;
   import org.apache.slide.projector.resource.StringResource;
  +import org.apache.slide.projector.store.*;
   import org.apache.slide.projector.util.StoreHelper;
   import org.jdom.Document;
   import org.jdom.Element;
  
  
  
  1.11      +1 -0      
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/engine/ProcessorManager.java
  
  Index: ProcessorManager.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/engine/ProcessorManager.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- ProcessorManager.java     24 May 2004 13:33:13 -0000      1.10
  +++ ProcessorManager.java     24 May 2004 13:52:43 -0000      1.11
  @@ -4,6 +4,7 @@
   import de.zeigermann.xml.simpleImporter.SimpleImporter;
   import de.zeigermann.xml.simpleImporter.SimplePath;
   import org.apache.slide.projector.*;
  +import org.apache.slide.projector.application.*;
   import org.apache.slide.projector.connector.ConnectorFactory;
   import org.apache.slide.projector.connector.Subscriber;
   import org.apache.slide.projector.descriptor.ParameterDescriptor;
  
  
  
  1.3       +2 -0      
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/engine/Cache.java
  
  Index: Cache.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/engine/Cache.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Cache.java        3 May 2004 14:28:36 -0000       1.2
  +++ Cache.java        24 May 2004 13:52:43 -0000      1.3
  @@ -4,6 +4,8 @@
   import java.util.HashMap;
   import java.util.Map;
   
  +import org.apache.slide.projector.store.*;
  +
   public class Cache extends AbstractStore {
       private static Cache cache = new Cache();
   
  
  
  
  1.6       +1 -0      
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/engine/ProcessServlet.java
  
  Index: ProcessServlet.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/engine/ProcessServlet.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ProcessServlet.java       17 May 2004 15:22:03 -0000      1.5
  +++ ProcessServlet.java       24 May 2004 13:52:43 -0000      1.6
  @@ -1,6 +1,7 @@
   package org.apache.slide.projector.engine;
   
   import org.apache.slide.projector.*;
  +import org.apache.slide.projector.application.*;
   import org.apache.slide.projector.descriptor.ParameterDescriptor;
   import org.apache.slide.projector.descriptor.StringValueDescriptor;
   import org.apache.slide.projector.processor.ExceptionRenderer;
  
  
  
  1.1                  
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/application/ApplicationListener.java
  
  Index: ApplicationListener.java
  ===================================================================
  package org.apache.slide.projector.application;
  
  import org.apache.slide.projector.URI;
  
  public interface ApplicationListener {
        public void install(String type, URI application, URI configuration);
        
        public void uninstall(String type, URI application, URI configuration);
  
        public void update(String type, URI application, URI configuration);
  }
  
  
  1.1                  
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/application/ApplicationManager.java
  
  Index: ApplicationManager.java
  ===================================================================
  package org.apache.slide.projector.application;
  
  import de.zeigermann.xml.simpleImporter.DefaultSimpleImportHandler;
  import de.zeigermann.xml.simpleImporter.SimpleImporter;
  import de.zeigermann.xml.simpleImporter.SimplePath;
  
  import org.apache.slide.projector.*;
  import org.apache.slide.projector.connector.ConnectorFactory;
  import org.apache.slide.projector.connector.Subscriber;
  import org.apache.slide.projector.descriptor.AbstractValueDescriptorFactory;
  import org.apache.slide.projector.descriptor.ValueDescriptorManager;
  import org.apache.slide.projector.engine.ProcessorManager;
  import org.apache.slide.projector.engine.ProjectorClassLoader;
  import org.apache.slide.projector.engine.SystemContext;
  import org.apache.slide.projector.i18n.MessageManager;
  import org.apache.slide.projector.resource.ArrayResource;
  import org.apache.slide.projector.resource.StreamableResource;
  import org.apache.slide.projector.resource.URIResource;
  import org.xml.sax.InputSource;
  import org.xml.sax.SAXException;
  import org.xml.sax.helpers.AttributesImpl;
  
  import java.io.IOException;
  import java.io.InputStream;
  import java.util.*;
  import java.util.logging.Level;
  import java.util.logging.Logger;
  
  import javax.xml.parsers.ParserConfigurationException;
  
  public class ApplicationManager {
      private final static Logger logger = 
Logger.getLogger(ApplicationManager.class.getName());
  
      private final static String APPLICATION_CONFIG = "application.xml";
      private final static Context context = new SystemContext();
  
      private static ApplicationManager applicationManager;
      private List applicationListeners = new ArrayList();
      private Map installedApplications = new HashMap(); // URI -> Application
      private ProjectorClassLoader factoryClassLoader = new 
ProjectorClassLoader(this.getClass().getClassLoader(), new 
URIResource(Constants.CLASSES_DIR));
      
      private ApplicationManager() {
          logger.log(Level.INFO, "Starting projector...");
        ConnectorFactory.getConnector().subscribe("Update/newmember", new 
URIResource(Constants.APPLICATIONS_DIR), 1, Constants.SUBSCRIPTION_LIFETIME, 
Constants.NOTIFICATION_DELAY, 
                        new Subscriber() {
                public void notify(URI uri, Map information) {
                        logger.log(Level.INFO, "Package manager received add event");
                        applicationManager.installApplications();
                }
        }, context.getCredentials());
        ConnectorFactory.getConnector().subscribe("Delete", new 
URIResource(Constants.APPLICATIONS_DIR), 1, Constants.SUBSCRIPTION_LIFETIME, 
Constants.NOTIFICATION_DELAY, 
                        new Subscriber() {
                public void notify(URI uri, Map information) {
                        logger.log(Level.INFO, "Package manager received delete 
event");
                        applicationManager.installApplications();
                }
        }, context.getCredentials());
        applicationListeners.add(ProcessorManager.getInstance());
        applicationListeners.add(MessageManager.getInstance());
        installApplications();
      }
  
      private synchronized void installApplications() {
        Resource[] applicationUris;
        try {
                List removedApplications = new ArrayList();
                removedApplications.addAll(installedApplications.keySet());
                applicationUris = 
((ArrayResource)ConnectorFactory.getConnector().getChildren(new 
URIResource(Constants.APPLICATIONS_DIR), context.getCredentials())).getArray();
                for ( int i = 0; i < applicationUris.length; i++ ) {
                        String applicationUri = applicationUris[i].toString();
                        if ( !applicationUri.endsWith("/") ) {
                                applicationUri = applicationUri + "/";
                        }
                        if ( applicationUri.startsWith(Constants.REPOSITORY_DOMAIN) ) {
                                applicationUri = 
applicationUri.substring(Constants.REPOSITORY_DOMAIN.length());
                        }
                        if ( !installedApplications.containsKey(applicationUri) ) {
                                Application installedApplication = 
parseApplication(new URIResource(applicationUri));
                                if ( installedApplication != null ) 
install(installedApplication);
                        } else {
                                logger.log(Level.INFO, "Application 
'"+applicationUri+"' already installed");
                                removedApplications.remove(applicationUri);
                        }
                }  
                for ( Iterator i = removedApplications.iterator(); i.hasNext(); ) {
                        Application removedApplication = 
(Application)installedApplications.get((URI)i.next());
                        uninstall(removedApplication);
                }
        } catch (IOException e) {
                logger.log(Level.SEVERE, "Could not determine installed 
applications!", e);
        }
      } 
      
      public static ApplicationManager getInstance() {
        if ( applicationManager == null ) {
                applicationManager = new ApplicationManager(); 
        }
          return applicationManager;
      }
      
      private Application parseApplication(URI applicationUri) {
        try {
                SimpleImporter importer = new SimpleImporter();
                URI applicationDefinition = new 
URIResource(applicationUri.toString()+APPLICATION_CONFIG);
                StreamableResource applicationDefinitionResouce = 
((StreamableResource)ConnectorFactory.getConnector().getResource(new 
URIResource(Constants.REPOSITORY_DOMAIN+applicationDefinition), 
context.getCredentials())); 
                if ( applicationDefinitionResouce != null ) {
                        InputStream configuration = 
applicationDefinitionResouce.getInputStream();
                        ConfigurationHandler handler = new 
ConfigurationHandler(applicationUri);
                        importer.addSimpleImportHandler(handler);
                        importer.parse(new InputSource(configuration));
                        return handler.getApplication(); 
                } else {
                        logger.log(Level.SEVERE, "Application definition 
(application.xml) not found in directory '"+applicationUri+"'. Application will not be 
installed!");
                }
        } catch (ParserConfigurationException e) {
                logger.log(Level.SEVERE, "Exception while parsing application 
configuration. Skipping installation...", e);
        } catch (SAXException e) {
                logger.log(Level.SEVERE, "Exception while parsing application 
configuration. Skipping installation...", e);
        } catch (IOException e) {
                logger.log(Level.SEVERE, "Could not get application information. 
Skipping installation...", e);
                }                               
                return null;
      }
      
      private Application getApplication(List applications, URI applicationUri) {
        for ( Iterator i = applications.iterator(); i.hasNext(); ) {
                Application application = (Application)i.next();
                if ( application.getUri().equals(applicationUri) ) return application; 
        }
        return null;
      }
      
        private synchronized void updateApplication(URI applicationUri) {
          logger.log(Level.INFO, "Updating application '"+applicationUri+"'");
          // Compare newly parsed application with previously installed and send diffs
          Application installedApplication = 
(Application)installedApplications.get(applicationUri);
          Application updatedApplication = parseApplication(applicationUri);
          for ( Iterator i = installedApplication.getContent().entrySet().iterator(); 
i.hasNext(); ) {
                Map.Entry entry = (Map.Entry)i.next();
              List removed = new ArrayList();
              removed.addAll((List)entry.getValue());
              List updated = updatedApplication.getContent((String)entry.getKey());
              if ( updated != null ) {
                removed.removeAll(updated);
              }
                for ( Iterator j = removed.iterator(); j.hasNext(); ) {
                        for ( Iterator k = applicationListeners.iterator(); 
k.hasNext(); ) {
                                
((ApplicationListener)k.next()).uninstall((String)entry.getKey(), 
updatedApplication.getUri(), (URI)j.next());
                        }
                }
          }
          for ( Iterator i = updatedApplication.getContent().entrySet().iterator(); 
i.hasNext(); ) {
                Map.Entry entry = (Map.Entry)i.next();
              List added = new ArrayList();
              added.addAll((List)entry.getValue());
              List installed = installedApplication.getContent((String)entry.getKey());
              if ( installed != null ) {
                added.removeAll(installed);
              }
                for ( Iterator j = added.iterator(); j.hasNext(); ) {
                        for ( Iterator k = applicationListeners.iterator(); 
k.hasNext(); ) {
                                
((ApplicationListener)k.next()).install((String)entry.getKey(), 
updatedApplication.getUri(), (URI)j.next());
                        }
                }
          }
        }       
  
        private void install(Application application) {
          logger.log(Level.INFO, "Installing application '"+application.getUri()+"'");
        ConnectorFactory.getConnector().subscribe("Update", new 
URIResource(Constants.REPOSITORY_DOMAIN+application.getUri().toString()), 0, 
Constants.SUBSCRIPTION_LIFETIME, Constants.NOTIFICATION_DELAY, 
                        new Subscriber() {
                public void notify(URI uri, Map information) {
                        applicationManager.updateApplication(uri);
                }
        }, context.getCredentials());
                for ( Iterator i = application.getContent().entrySet().iterator(); 
i.hasNext(); ) {
                        Map.Entry entry = (Map.Entry)i.next();
                        for ( Iterator j = ((List)entry.getValue()).iterator(); 
j.hasNext(); ) {
                                URI uri = (URI)j.next();
                                for ( Iterator k = applicationListeners.iterator(); 
k.hasNext(); ) {
                                        
((ApplicationListener)k.next()).install((String)entry.getKey(), application.getUri(), 
uri);
                                }
                        }
                }
                installedApplications.put(application.getUri(), application);
        }
        
        private void uninstall(Application application) {
          logger.log(Level.INFO, "Uninstall application '"+application.getUri()+"'");
                for ( Iterator i = application.getContent().entrySet().iterator(); 
i.hasNext(); ) {
                        Map.Entry entry = (Map.Entry)i.next();
                        for ( Iterator j = ((List)entry.getValue()).iterator(); 
j.hasNext(); ) {
                                URI uri = (URI)j.next();
                                for ( Iterator k = applicationListeners.iterator(); 
k.hasNext(); ) {
                                        
((ApplicationListener)k.next()).uninstall((String)entry.getKey(), 
application.getUri(), uri);
                                }
                        }
                }
                // FIXME: Remove subscriber
                installedApplications.remove(application.getUri());
        }
        
      private final class ConfigurationHandler extends DefaultSimpleImportHandler {
                private Application application;
                private URI applicationUri;
                
                private ConfigurationHandler(URI applicationUri) {
                        this.applicationUri = applicationUri;
                }
  
                private Application getApplication() {
                        return application;
                }
                
                public void startElement(SimplePath path, String name, AttributesImpl 
attributes, String leadingCDdata) {
              if (path.matches("application")) {
                                application = new Application(applicationUri);
              } else if ( path.matches("display-name") ) {
                                application.setDisplayName(leadingCDdata);             
         
              } else if ( path.matches("vendor") ) {
                                application.setVendor(leadingCDdata);                  
 
              } else if ( path.matches("description") ) {
                                application.setDescription(leadingCDdata);             
         
              } else if ( path.matches("resource-types/resource-type") ) {
                                String resourceTypeName = attributes.getValue("name");
                                String clazz = attributes.getValue("class");
                                try {
                                        AbstractValueDescriptorFactory 
descriptorFactory = 
(AbstractValueDescriptorFactory)factoryClassLoader.loadClass(clazz).getConstructor(new 
Class[0]).newInstance(new Object[0]);
                                        
ValueDescriptorManager.getInstance().registerDescriptorFactory(descriptorFactory);
                                        logger.log(Level.INFO, "Successfully 
registered descriptor factory " + clazz);
                  } catch (Exception e) {
                      logger.log(Level.SEVERE, "Descriptor factory " + clazz + " could 
not loaded!", e);
                  }
              } else if ( path.matches("content/processors") ) {
                String uri = attributes.getValue("uri"); 
                application.addContent(Application.PROCESSORS, new 
URIResource(applicationUri+attributes.getValue("uri")));                     
              } else if ( path.matches("content/messages") ) {
                application.addContent(Application.MESSAGES, new 
URIResource(applicationUri+attributes.getValue("uri")));                       
              } else if ( path.matches("content/jobs") ) {
                application.addContent(Application.JOBS, new 
URIResource(applicationUri+attributes.getValue("uri")));                   
              }
          }
      }
  }
  
  
  1.1                  
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/application/Application.java
  
  Index: Application.java
  ===================================================================
  package org.apache.slide.projector.application;
  
  import java.util.ArrayList;
  import java.util.HashMap;
  import java.util.List;
  import java.util.Map;
  
  import org.apache.slide.projector.URI;
  
  public final class Application {
        public final static String PROCESSORS = "processors";
        public final static String MESSAGES = "messages";
        public final static String JOBS = "jobs";
        
        private URI uri;
        private String displayName, vendor, description;
        private Map content = new HashMap();
  
        Application(URI applicationUri) {
                this.uri = applicationUri;
        }
        
        public URI getUri() {
                return uri;
        }
        
        String getDescription() {
                return description;
        }
  
        void setDescription(String description) {
                this.description = description;
        }
  
        String getDisplayName() {
                return displayName;
        }
  
        void setDisplayName(String displayName) {
                this.displayName = displayName;
        }
        
        String getVendor() {
                return vendor;
        }
  
        void setVendor(String vendor) {
                this.vendor = vendor;
        }
  
        void addContent(String type, URI contentUri) {
                List contentUris = (List)content.get(type);
                if ( contentUris == null ) {
                        contentUris = new ArrayList();
                        content.put(type, contentUris);
                }
                contentUris.add(contentUri);
        }
  
        List getContent(String type) {
                return (List)content.get(type);
        }
  
        Map getContent() {
                return content;
        }
  }
  
  
  1.1                  
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/store/RequestParameterStore.java
  
  Index: RequestParameterStore.java
  ===================================================================
  /*
   *
   * ====================================================================
   *
   * Copyright 2004 The Apache Software Foundation 
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   *
   */
  package org.apache.slide.projector.store;
  
  import java.io.IOException;
  
  import javax.servlet.http.HttpServletRequest;
  
  import org.apache.slide.projector.Store;
  
  public class RequestParameterStore implements Store {
      protected HttpServletRequest request;
  
      public RequestParameterStore(HttpServletRequest request) {
          this.request = request;
      }
  
      public void put(String key, Object value, long timeout) throws IOException {
          throw new IOException("Put operation is not supported by request-parameter 
store!");
      }
  
      public void put(String key, Object value) throws IOException {
          throw new IOException("Put operation is not supported by request-parameter 
store!");
      }
  
      public Object get(String key) {
          return request.getParameterValues(key);
      }
  
      public void dispose(String key) throws IOException {
          throw new IOException("Dispose operation is not supported by 
request-parameter store!");
      }
  }
  
  
  1.1                  
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/store/FormStore.java
  
  Index: FormStore.java
  ===================================================================
  /*
   *
   * ====================================================================
   *
   * Copyright 2004 The Apache Software Foundation 
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   *
   */
  package org.apache.slide.projector.store;
  
  import java.io.IOException;
  
  import org.apache.slide.projector.Context;
  import org.apache.slide.projector.Store;
  import org.apache.slide.projector.resource.MapResource;
  
  public class FormStore extends AbstractStore {
        private Context context;
        private Store store;
        
        public FormStore(Context context, Store store) {
                this.context = context;
                this.store = store;
        }
  
        public void put(String key, Object value) throws IOException {
                MapResource domain = getDomain();
                domain.getMap().put(key, value);
        }
  
        public Object get(String key) throws IOException {
                return getDomain().getMap().get(key);
        }
  
        public void dispose(String key) throws IOException {
                getDomain().getMap().remove(key);
        }
  
        public void clear() throws IOException {
                String domain = context.getProcess().toString();
                store.dispose(domain);
        }
        
        public MapResource getDomain() throws IOException {
                String domain = context.getProcess().toString();
                MapResource mapResource = (MapResource)store.get(domain);
                if ( mapResource == null ) {
                        mapResource = new MapResource();
                        store.put(domain, mapResource);
                        return mapResource;
                } else {
                        return mapResource;
                }
        }
  }
  
  
  1.1                  
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/store/RequestHeaderStore.java
  
  Index: RequestHeaderStore.java
  ===================================================================
  /*
   *
   * ====================================================================
   *
   * Copyright 2004 The Apache Software Foundation 
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   *
   */
  package org.apache.slide.projector.store;
  
  import java.io.IOException;
  
  import javax.servlet.http.HttpServletRequest;
  
  import org.apache.slide.projector.Store;
  
  public class RequestHeaderStore implements Store {
      protected HttpServletRequest request;
  
      public RequestHeaderStore(HttpServletRequest request) {
          this.request = request;
      }
  
      public void put(String key, Object value, long timeout) throws IOException {
          throw new IOException("Put operation is not supported by request-header 
store!");
      }
  
      public void put(String key, Object value) throws IOException {
          throw new IOException("Put operation is not supported by request-header 
store!");
      }
  
      public Object get(String key) {
          return request.getHeader(key);
      }
  
      public void dispose(String key) throws IOException {
          throw new IOException("Dispose operation is not supported by request-header 
store!");
      }
  }
  
  
  1.1                  
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/store/SessionStore.java
  
  Index: SessionStore.java
  ===================================================================
  /*
   *
   * ====================================================================
   *
   * Copyright 2004 The Apache Software Foundation 
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   *
   */
  package org.apache.slide.projector.store;
  
  import javax.servlet.http.HttpServletRequest;
  
  public class SessionStore extends AbstractStore {
      protected HttpServletRequest request;
  
      public SessionStore(HttpServletRequest request) {
          this.request = request;
      }
  
      public void put(String key, Object value) {
          request.getSession().setAttribute(key, value);
      }
  
      public Object get(String key) {
          return request.getSession().getAttribute(key);
      }
  
      public void dispose(String key) {
          request.getSession().removeAttribute(key);
      }
  }
  
  
  1.1                  
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/store/RequestAttributeStore.java
  
  Index: RequestAttributeStore.java
  ===================================================================
  /*
   *
   * ====================================================================
   *
   * Copyright 2004 The Apache Software Foundation 
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   *
   */
  package org.apache.slide.projector.store;
  
  import javax.servlet.http.HttpServletRequest;
  
  public class RequestAttributeStore extends AbstractStore {
      protected HttpServletRequest request;
  
      public RequestAttributeStore(HttpServletRequest request) {
          this.request = request;
      }
  
      public void put(String key, Object value) {
          request.setAttribute(key, value);
      }
  
      public Object get(String key) {
          return request.getAttribute(key);
      }
  
      public void dispose(String key) {
          request.removeAttribute(key);
      }
  }
  
  
  1.1                  
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/store/CookieStore.java
  
  Index: CookieStore.java
  ===================================================================
  /*
   *
   * ====================================================================
   *
   * Copyright 2004 The Apache Software Foundation 
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   *
   */
  package org.apache.slide.projector.store;
  
  import javax.servlet.http.Cookie;
  import javax.servlet.http.HttpServletRequest;
  import javax.servlet.http.HttpServletResponse;
  
  import org.apache.slide.projector.Store;
  
  public class CookieStore implements Store {
      protected HttpServletRequest request;
      protected HttpServletResponse response;
  
      public CookieStore(HttpServletRequest request, HttpServletResponse response) {
          this.request = request;
          this.response = response;
      }
  
      public void put(String key, Object value, long timeout) {
          Cookie cookie = null;
          if ( value instanceof Cookie ) {
              cookie = (Cookie)value;
          }
          if ( value instanceof String ) {
              cookie = new Cookie(key, (String)value);
          }
          if ( cookie != null ) {
                cookie.setMaxAge((int) (timeout/1000));
                response.addCookie(cookie);
          }
      }
  
      public void put(String key, Object value) {
          Cookie cookie = null;
          if ( value instanceof Cookie ) {
              cookie = (Cookie)value;
          }
          if ( value instanceof String ) {
              cookie = new Cookie(key, (String)value);
          }
          if ( cookie != null ) {
              response.addCookie(cookie);
          }
      }
  
      public Object get(String key) {
          Cookie[] cookies = request.getCookies();
          for ( int i = 0; i < cookies.length; i++ ) {
              if ( cookies[i].getName().equals(key) ) {
                  return cookies[i].getValue();
              }
          }
          return null;
      }
  
      public void dispose(String key) {
          request.removeAttribute(key);
      }
  }
  
  
  1.1                  
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/store/RepositoryStore.java
  
  Index: RepositoryStore.java
  ===================================================================
  /*
   *
   * ====================================================================
   *
   * Copyright 2004 The Apache Software Foundation 
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   *
   */
  package org.apache.slide.projector.store;
  
  import java.io.IOException;
  
  import org.apache.slide.projector.Constants;
  import org.apache.slide.projector.Context;
  import org.apache.slide.projector.connector.ConnectorFactory;
  import org.apache.slide.projector.resource.StreamableResource;
  import org.apache.slide.projector.resource.URIResource;
  
  public class RepositoryStore extends AbstractStore {
        private Context context;
        
        public RepositoryStore(Context context) {
                this.context = context;
        }
        
        public void put(String key, Object value) throws IOException {
          if ( value instanceof StreamableResource) {
              ConnectorFactory.getConnector().setResource(new 
URIResource(Constants.REPOSITORY_DOMAIN+key), (StreamableResource)value, 
context.getCredentials());
          } else {
              throw new IOException("Only values of type StreamableResource can be 
stored to repository! Given value is '"+value+"'");
          }
      }
  
      public Object get(String key) throws IOException {
          return ConnectorFactory.getConnector().getResource(new 
URIResource(Constants.REPOSITORY_DOMAIN+key), context.getCredentials());
      }
  
      public void dispose(String key) throws IOException {
          ConnectorFactory.getConnector().removeResource(new 
URIResource(Constants.REPOSITORY_DOMAIN+key), context.getCredentials());
      }
  }
  
  
  1.1                  
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/store/AbstractStore.java
  
  Index: AbstractStore.java
  ===================================================================
  package org.apache.slide.projector.store;
  
  import java.io.IOException;
  import java.util.TimerTask;
  import java.util.logging.Level;
  import java.util.logging.Logger;
  
  import org.apache.slide.projector.Store;
  import org.apache.slide.projector.engine.Scheduler;
  
  public abstract class AbstractStore implements Store {
      private final static Logger logger = 
Logger.getLogger(AbstractStore.class.getName());
        
        public void put(final String key, Object value, long timeout) throws 
IOException {
                put(key, value);
                Scheduler.getTimer().schedule(new TimerTask() {
                        public void run() {
                                try {
                                        dispose(key);
                                } catch ( IOException exception ) {
                                        logger.log(Level.SEVERE, "Could not dispose 
object with key="+key, exception);
                                }
                        }
                }, timeout);
        }
  }
  
  
  
  1.1                  
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/store/ProcessStore.java
  
  Index: ProcessStore.java
  ===================================================================
  /*
   *
   * ====================================================================
   *
   * Copyright 2004 The Apache Software Foundation 
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   *
   */
  package org.apache.slide.projector.store;
  
  import java.io.IOException;
  import java.util.HashMap;
  import java.util.Map;
  
  import org.apache.slide.projector.Constants;
  import org.apache.slide.projector.Store;
  import org.apache.slide.projector.resource.MapResource;
  
  public class ProcessStore extends AbstractStore {
        private Store store;
        private String processId, storageKey;
        private Map map;
        private MapResource mapResource;
        
        public ProcessStore(Store store) {
                this.store = store;
        }
        
        public String getProcessId() {
                return processId;
        }
  
        public void setProcessId(String processId) {
                this.processId = processId;
                this.storageKey = Constants.PROCESS_STORAGE_PREFIX+processId;
        }
  
        public void put(String key, Object value) throws IOException {
                getMap().put(key, value);
                store.put(storageKey, mapResource);
        }
  
        public Object get(String key) throws IOException {
                return getMap().get(key);
        }
  
        public void dispose(String key) throws IOException {
                getMap().remove(key);
                store.put(storageKey, mapResource);
        }
        
        private Map getMap() throws IOException {
                if ( mapResource != null ) return mapResource.getMap();
                mapResource = (MapResource)store.get(storageKey);
                if ( mapResource == null ) {
                        map = new HashMap();
                        mapResource = new MapResource(map);
                        return map;
                } else {
                        return mapResource.getMap();
                }
        }
  }
  
  
  1.7       +2 -2      
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/form/ControlComposer.java
  
  Index: ControlComposer.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/form/ControlComposer.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- ControlComposer.java      10 May 2004 16:54:24 -0000      1.6
  +++ ControlComposer.java      24 May 2004 13:52:44 -0000      1.7
  @@ -2,7 +2,6 @@
   
   import org.apache.slide.projector.*;
   import org.apache.slide.projector.descriptor.*;
  -import org.apache.slide.projector.engine.HttpContext;
   import org.apache.slide.projector.engine.Process;
   import org.apache.slide.projector.engine.ProcessorManager;
   import org.apache.slide.projector.i18n.DefaultMessage;
  @@ -12,6 +11,7 @@
   import org.apache.slide.projector.processor.SimpleProcessor;
   import org.apache.slide.projector.processor.TemplateRenderer;
   import org.apache.slide.projector.resource.*;
  +import org.apache.slide.projector.store.FormStore;
   import org.apache.slide.projector.util.ProcessorHelper;
   
   import java.util.*;
  @@ -145,7 +145,7 @@
        Locale locale = ((LocaleResource)parameter.get(LOCALE)).getLocale();
           String state = DEFAULT_STATE;
           List informations = context.getInformations();
  -             MapResource mapResource = 
(MapResource)((HttpContext.FormStore)context.getStore(Store.FORM)).getDomain();
  +             MapResource mapResource = 
(MapResource)((FormStore)context.getStore(Store.FORM)).getDomain();
                List generatedControls = new ArrayList();
                List involvedParameters = new ArrayList();
                for (int i = 0; i < controlDescriptions.length; i++ ) {
  
  
  
  1.2       +2 -2      
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/form/ClearForm.java
  
  Index: ClearForm.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/form/ClearForm.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ClearForm.java    11 May 2004 10:07:33 -0000      1.1
  +++ ClearForm.java    24 May 2004 13:52:44 -0000      1.2
  @@ -9,13 +9,13 @@
   import org.apache.slide.projector.descriptor.ParameterDescriptor;
   import org.apache.slide.projector.descriptor.ResultDescriptor;
   import org.apache.slide.projector.descriptor.StateDescriptor;
  -import org.apache.slide.projector.engine.HttpContext;
  +import org.apache.slide.projector.store.FormStore;
   
   public class ClearForm implements Processor {
        public Result process(Map parameter, Context context) throws Exception {
                Store formStore = context.getStore(Store.FORM);
                if ( formStore != null ) {
  -                     ((HttpContext.FormStore)formStore).clear();
  +                     ((FormStore)formStore).clear();
                }
                return new Result(StateDescriptor.OK);
        }
  
  
  
  1.3       +5 -5      
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/form/Test.java
  
  Index: Test.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/form/Test.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Test.java 24 May 2004 12:33:41 -0000      1.2
  +++ Test.java 24 May 2004 13:52:44 -0000      1.3
  @@ -15,7 +15,6 @@
   import org.apache.slide.projector.descriptor.ParameterDescriptor;
   import org.apache.slide.projector.descriptor.ResultDescriptor;
   import org.apache.slide.projector.descriptor.URIValueDescriptor;
  -import org.apache.slide.projector.engine.HttpContext;
   import org.apache.slide.projector.engine.Process;
   import org.apache.slide.projector.engine.ProcessorManager;
   import org.apache.slide.projector.i18n.ParameterMessage;
  @@ -24,6 +23,7 @@
   import org.apache.slide.projector.resource.NullResource;
   import org.apache.slide.projector.resource.StringResource;
   import org.apache.slide.projector.resource.URIResource;
  +import org.apache.slide.projector.store.FormStore;
   import org.apache.slide.projector.util.ProcessorHelper;
   
   public class Test implements Processor {
  @@ -65,22 +65,22 @@
           if ( step.equals(FORM_STEP) ) {
                result = formProcessor.process(parameter, context);
           } else if ( step.equals(PROCESS_STEP) ) {
  -             
parameter.putAll(((MapResource)((HttpContext.FormStore)context.getStore(Store.FORM)).getDomain()).getMap());
  +             
parameter.putAll(((MapResource)((FormStore)context.getStore(Store.FORM)).getDomain()).getMap());
                ProcessorHelper.validate(processor.getParameterDescriptors(), 
parameter, context);
                Result processorResult = processor.process(parameter, context);
                if ( hasErrors(context.getInformations()) ) {
                context.setStep(FORM_STEP);
  -                     
((HttpContext.FormStore)context.getStore(Store.FORM)).put(ControlComposer.VALIDATE, 
BooleanResource.TRUE);
  +                     
((FormStore)context.getStore(Store.FORM)).put(ControlComposer.VALIDATE, 
BooleanResource.TRUE);
                        result = formProcessor.process(parameter, context);
                } else {
                        Map resultParameters = new HashMap();
                        resultParameters.put("state", new 
StringResource(processorResult.getState()));
                        
ProcessorHelper.validate(resultRenderer.getParameterDescriptors(), resultParameters, 
context);
                        result = resultRenderer.process(resultParameters, context);
  -                     ((HttpContext.FormStore)context.getStore(Store.FORM)).clear();
  +                     ((FormStore)context.getStore(Store.FORM)).clear();
                }
           } else {
  -             ((HttpContext.FormStore)context.getStore(Store.FORM)).clear();
  +             ((FormStore)context.getStore(Store.FORM)).clear();
                return Result.OK;
           }
           return result;
  
  
  
  1.5       +2 -2      
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/i18n/MessageManager.java
  
  Index: MessageManager.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/i18n/MessageManager.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- MessageManager.java       17 May 2004 15:22:04 -0000      1.4
  +++ MessageManager.java       24 May 2004 13:52:45 -0000      1.5
  @@ -5,10 +5,10 @@
   import de.zeigermann.xml.simpleImporter.SimplePath;
   import org.apache.slide.projector.Constants;
   import org.apache.slide.projector.URI;
  +import org.apache.slide.projector.application.Application;
  +import org.apache.slide.projector.application.ApplicationListener;
   import org.apache.slide.projector.connector.ConnectorFactory;
   import org.apache.slide.projector.connector.Subscriber;
  -import org.apache.slide.projector.engine.Application;
  -import org.apache.slide.projector.engine.ApplicationListener;
   import org.apache.slide.projector.resource.StreamableResource;
   import org.apache.slide.projector.resource.URIResource;
   import org.xml.sax.InputSource;
  
  
  
  1.3       +1 -74     
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/AbstractContext.java
  
  Index: AbstractContext.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/AbstractContext.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- AbstractContext.java      6 May 2004 12:54:11 -0000       1.2
  +++ AbstractContext.java      24 May 2004 13:52:45 -0000      1.3
  @@ -1,16 +1,7 @@
   package org.apache.slide.projector;
   
  -import org.apache.slide.projector.resource.MapResource;
  -import org.apache.slide.projector.resource.StreamableResource;
  -import org.apache.slide.projector.resource.URIResource;
  -import org.apache.slide.projector.connector.ConnectorFactory;
  -import org.apache.slide.projector.engine.AbstractStore;
  -
  -import java.io.IOException;
  -import java.util.HashMap;
   import java.util.List;
   import java.util.ArrayList;
  -import java.util.Map;
   
   /**
    * @author <a href="mailto:[EMAIL PROTECTED]">Daniel Florey</a>
  @@ -49,69 +40,5 @@
       
       public String getStep() {
        return step;
  -    }
  -    
  -    public class RepositoryStore extends AbstractStore {
  -        public void put(String key, Object value) throws IOException {
  -            if ( value instanceof StreamableResource) {
  -                ConnectorFactory.getConnector().setResource(new 
URIResource(Constants.REPOSITORY_DOMAIN+key), (StreamableResource)value, 
getCredentials());
  -            } else {
  -                throw new IOException("Only values of type StreamableResource can 
be stored to repository! Given value is '"+value+"'");
  -            }
  -        }
  -
  -        public Object get(String key) throws IOException {
  -            return ConnectorFactory.getConnector().getResource(new 
URIResource(Constants.REPOSITORY_DOMAIN+key), getCredentials());
  -        }
  -
  -        public void dispose(String key) throws IOException {
  -            ConnectorFactory.getConnector().removeResource(new 
URIResource(Constants.REPOSITORY_DOMAIN+key), getCredentials());
  -        }
  -    }
  -
  -    public class ProcessStore extends AbstractStore {
  -     private Store store;
  -     private String processId, storageKey;
  -     private Map map;
  -     private MapResource mapResource;
  -     
  -     public ProcessStore(Store store) {
  -             this.store = store;
  -     }
  -     
  -     public String getProcessId() {
  -                     return processId;
  -             }
  -
  -             public void setProcessId(String processId) {
  -                     this.processId = processId;
  -                     this.storageKey = Constants.PROCESS_STORAGE_PREFIX+processId;
  -             }
  -
  -             public void put(String key, Object value) throws IOException {
  -                     getMap().put(key, value);
  -                     store.put(storageKey, mapResource);
  -             }
  -
  -             public Object get(String key) throws IOException {
  -                     return getMap().get(key);
  -             }
  -
  -             public void dispose(String key) throws IOException {
  -                     getMap().remove(key);
  -                     store.put(storageKey, mapResource);
  -             }
  -             
  -             private Map getMap() throws IOException {
  -                     if ( mapResource != null ) return mapResource.getMap();
  -                     mapResource = (MapResource)store.get(storageKey);
  -                     if ( mapResource == null ) {
  -                             map = new HashMap();
  -                             mapResource = new MapResource(map);
  -                             return map;
  -                     } else {
  -                             return mapResource.getMap();
  -                     }
  -             }
       }
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to