|
From: <ian...@us...> - 2007-08-28 22:46:40
|
Revision: 280
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=280&view=rev
Author: iansmith
Date: 2007-08-28 15:46:41 -0700 (Tue, 28 Aug 2007)
Log Message:
-----------
Extruded the support classes for our kind of web app upward.
Modified Paths:
--------------
maven/trunk/ogoglio-server/pom.xml
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/media/site/MediaServlet.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/AccountsForTesting.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/AccountPersistTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/BodyPersistTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/PendingEmailValidationTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/PossessionPersistTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/ServiceInitializationPersistTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/ServiceStateTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SimPersistTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpaceMemberPersistTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpacePersistTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/TemplatePersistTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/TemplateSupportFilePersistTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/Sim.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AccountServlet.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AuthServlet.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AuthenticatedSiteResource.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SpaceServlet.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/TemplateResource.java
maven/trunk/ogoglio-server/src/main/resources/hibernate/migration-0.xml
maven/trunk/ogoglio-server/src/main/resources/hibernate/migration-1.xml
Added Paths:
-----------
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/OgoglioServerMigration.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/OgoglioServletBase.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SiteInfo.java
maven/trunk/ogoglio-server/src/test/java/com/ogoglio/persist/test/PersistTest.java
Removed Paths:
-------------
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBVersionPersistTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBVersionRecord.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBZapTest.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/Migration.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/MigrationSupport.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/HibernateTask.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/PersistException.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AbstractRemoteServlet.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AbstractResourceServlet.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/DescendingSiteResource.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SiteInfo.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SiteResource.java
maven/trunk/ogoglio-server/src/test/java/com/ogoglio/persist/test/PersistTest.java
Modified: maven/trunk/ogoglio-server/pom.xml
===================================================================
--- maven/trunk/ogoglio-server/pom.xml 2007-08-28 22:40:51 UTC (rev 279)
+++ maven/trunk/ogoglio-server/pom.xml 2007-08-28 22:46:41 UTC (rev 280)
@@ -130,6 +130,7 @@
</webResources>
</configuration>
</plugin>
+
</plugins>
</build>
@@ -141,11 +142,6 @@
<version>2.0.0-rc-6</version>
</dependency>
<dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate</artifactId>
- <version>3.2.1.ga</version>
- </dependency>
- <dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.3</version>
@@ -161,17 +157,9 @@
<artifactId>commons-httpclient</artifactId>
<version>3.0.1</version>
</dependency>
+
+
<dependency>
- <groupId>commons-fileupload</groupId>
- <artifactId>commons-fileupload</artifactId>
- <version>1.2</version>
- </dependency>
- <dependency>
- <groupId>commons-io</groupId>
- <artifactId>commons-io</artifactId>
- <version>1.3</version>
- </dependency>
- <dependency>
<groupId>com.sun</groupId>
<artifactId>mail</artifactId>
<version>1.4</version>
@@ -199,6 +187,11 @@
<artifactId>ogoglio-common</artifactId>
<version>0.0.1</version>
</dependency>
+ <dependency>
+ <groupId>com.ogoglio</groupId>
+ <artifactId>ogoglio-appdev</artifactId>
+ <version>0.0.1</version>
+ </dependency>
<!-- -->
<!-- BOGUS DEPENDENCIES-->
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/media/site/MediaServlet.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/media/site/MediaServlet.java 2007-08-28 22:40:51 UTC (rev 279)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/media/site/MediaServlet.java 2007-08-28 22:46:41 UTC (rev 280)
@@ -6,15 +6,17 @@
import java.io.OutputStreamWriter;
import java.util.Date;
+import javax.naming.Context;
+import javax.naming.NamingException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import com.ogoglio.appdev.servlet.AbstractResourceServlet;
+import com.ogoglio.appdev.servlet.SiteResource;
import com.ogoglio.client.DecoratedInputStream;
import com.ogoglio.media.FileStore;
-import com.ogoglio.site.AbstractResourceServlet;
-import com.ogoglio.site.SiteResource;
import com.ogoglio.util.StreamUtils;
public class MediaServlet extends AbstractResourceServlet {
@@ -23,12 +25,26 @@
public void init(ServletConfig config) throws ServletException {
super.init(config);
- File mediaDir = getSiteInfo().getMediaDirectory();
- if (mediaDir == null) {
- System.out.println(new Date() + ": NOTE: not running media service");
- return;
- }
- fileStore = new FileStore(getSiteInfo().getMediaDirectory().toURI());
+
+ Context envCtx;
+ try {
+ envCtx = (Context) initCtx.lookup("java:comp/env");
+ File mediaDirectory = null;
+ try {
+ mediaDirectory = new File((String)envCtx.lookup("ogoglio/mediaDirectory"));
+ } catch (NamingException e) {
+ }
+
+ if (mediaDirectory == null) {
+ System.out.println(new Date() + ": NOTE: not running media service");
+ } else {
+ fileStore = new FileStore(mediaDirectory.toURI());
+ }
+ } catch (NamingException e) {
+ System.out.println("Unable to figure out the initial context:"+e.getMessage());
+ throw new ServletException(e);
+ }
+
}
public void destroy() {
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/AccountsForTesting.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/AccountsForTesting.java 2007-08-28 22:40:51 UTC (rev 279)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/AccountsForTesting.java 2007-08-28 22:46:41 UTC (rev 280)
@@ -8,8 +8,9 @@
import org.hibernate.SessionFactory;
+import com.ogoglio.appdev.migrate.Migration;
+import com.ogoglio.appdev.servlet.AbstractResourceServlet;
import com.ogoglio.persist.ServiceInitializationPersistTasks;
-import com.ogoglio.site.AbstractResourceServlet;
public class AccountsForTesting implements Migration {
Deleted: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBVersionPersistTasks.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBVersionPersistTasks.java 2007-08-28 22:40:51 UTC (rev 279)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBVersionPersistTasks.java 2007-08-28 22:46:41 UTC (rev 280)
@@ -1,49 +0,0 @@
-package com.ogoglio.migrate;
-
-import org.hibernate.Query;
-import org.hibernate.Session;
-import org.hibernate.SessionFactory;
-
-import com.ogoglio.persist.HibernateTask;
-import com.ogoglio.persist.PersistException;
-
-public class DBVersionPersistTasks {
- public final static String FIND_VERSION = "com.ogoglio.migrate.dbversions";
-
- public static int findVersion(SessionFactory sessionFactory) throws PersistException {
- HibernateTask task = new HibernateTask() {
- public Object run(Session session) throws PersistException {
- Query query = session.getNamedQuery(FIND_VERSION);
- return query.uniqueResult();
- }
- };
- task.setSessionFactory(sessionFactory);
- return ((DBVersionRecord) task.execute()).getVersion();
- }
-
- public static boolean updateVersion(final int newVersion, final int expectedSize/* one or zero */, SessionFactory sessionFactory) throws PersistException {
- HibernateTask task = new HibernateTask() {
- public Object run(Session session) throws PersistException {
- Query query = session.getNamedQuery(FIND_VERSION);
- int size = query.list().size();
- DBVersionRecord rec;
- if (expectedSize != size) {
- System.out.println("Whoa! Size of returned result for db version record was (" + size + ") but should have been " + expectedSize + "!");
- return Boolean.FALSE;
- }
- if (size == 0) {
- rec = new DBVersionRecord();
- } else {
- rec = (DBVersionRecord) query.uniqueResult();
- }
- rec.setVersion(newVersion);
- session.saveOrUpdate(rec);
- System.out.println("******* Wrote new version FART:" + newVersion);
- return Boolean.TRUE;
- }
- };
- task.setSessionFactory(sessionFactory);
- return (task.execute().equals(Boolean.TRUE));
- }
-
-}
Deleted: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBVersionRecord.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBVersionRecord.java 2007-08-28 22:40:51 UTC (rev 279)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBVersionRecord.java 2007-08-28 22:46:41 UTC (rev 280)
@@ -1,28 +0,0 @@
-package com.ogoglio.migrate;
-
-public class DBVersionRecord {
- public static int INTERNAL_DEV_STATE = -8288;
-
- private int version = 0;
-
- private long id;
-
- public DBVersionRecord() {
- }
-
- public long getVersionId() {
- return id;
- }
-
- public void setVersionId(long id) {
- this.id = id;
- }
-
- public int getVersion() {
- return version;
- }
-
- public void setVersion(int version) {
- this.version = version;
- }
-}
Deleted: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBZapTest.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBZapTest.java 2007-08-28 22:40:51 UTC (rev 279)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBZapTest.java 2007-08-28 22:46:41 UTC (rev 280)
@@ -1,36 +0,0 @@
-package com.ogoglio.migrate;
-
-import junit.framework.TestCase;
-
-import org.hibernate.SessionFactory;
-
-public class DBZapTest extends TestCase {
-
- protected SessionFactory sessionFactory;
-
- public void setUp() {
- try {
- MigrationSupport support = new MigrationSupport();
- if (!("true".equals(support.getTestConfig().getProperty("ogoglio.okToZapDB")))) {
- fail("Whoa! Shouldn't be running tests without setting the ogoglio.okToZapDB property!");
- }
- if (support.initialize_version(null, null, false) == false) {
- fail("can't get DB set up: trying to initialize it in the test code");
- }
-
- //if we are here, db stuff worked, but we still need to avoid all the jndi stuff
- sessionFactory = support.createConfigurationForHibernate(MigrationSupport.DB_VERSION_NUMBER, null, false).buildSessionFactory();
- } catch (Exception e) {
- System.out.println("-------");
- e.printStackTrace(System.out);
- System.out.println("---------");
- fail("Could not setup:" + e.getMessage());
- }
- }
-
- public void tearDown() {
- if (sessionFactory != null) {
- sessionFactory.close();
- }
- }
-}
Deleted: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/Migration.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/Migration.java 2007-08-28 22:40:51 UTC (rev 279)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/Migration.java 2007-08-28 22:46:41 UTC (rev 280)
@@ -1,14 +0,0 @@
-package com.ogoglio.migrate;
-
-import java.util.Properties;
-
-import javax.naming.Context;
-import javax.servlet.ServletConfig;
-
-import org.hibernate.SessionFactory;
-
-public interface Migration {
-
- public boolean migrate(SessionFactory sessionFactory, ServletConfig servletConfig, Context ctx, Properties testConfig, int from, int to);
-
-}
Deleted: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/MigrationSupport.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/MigrationSupport.java 2007-08-28 22:40:51 UTC (rev 279)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/MigrationSupport.java 2007-08-28 22:46:41 UTC (rev 280)
@@ -1,172 +0,0 @@
-package com.ogoglio.migrate;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Properties;
-
-import javax.naming.Context;
-import javax.naming.NamingException;
-import javax.servlet.ServletConfig;
-
-import org.hibernate.SessionFactory;
-import org.hibernate.cfg.Configuration;
-
-import com.ogoglio.persist.PersistException;
-
-public class MigrationSupport {
-
- // THIS IS THE CRITICAL VERSION NUMBER
- public static final int DB_VERSION_NUMBER = 1;
-
- //check on migration okayness
- public static final String MIGRATION_KEY = "ogoglio/okToMigrateDB";
-
- // this is the set of semantic migrations, in order
- public static final Migration[] migration = { new AccountsForTesting() };
-
- public MigrationSupport() {
- }
-
- public boolean verifyVersion(ServletConfig servletConf, Context ctx) {
- try {
- SessionFactory sessionFactory = getCurrentConfiguration().buildSessionFactory();
- int version = DBVersionPersistTasks.findVersion(sessionFactory);
- if (version != DB_VERSION_NUMBER) {
- System.err.println("DB Version Mismatch! Expected (" + DB_VERSION_NUMBER + ") but got " + version + "!");
- sessionFactory.close();
- return tryUpgrade(servletConf, ctx, version, DB_VERSION_NUMBER, "update", true);
- }
- sessionFactory.close();
- return true; // we are at the expected version
- } catch (PersistException e) {
- if (e.innerThrowable == null) {
- System.out.println("Serious problem with hibernate:" + e.getMessage());
- return false;
- }
- System.err.println("Unable to figure out DB version number. Likely this is a fresh database....(" + e.innerThrowable.getClass().getName() + ")");
- return initialize_version(servletConf, ctx, true);
- }
- }
-
- public boolean initialize_version(ServletConfig conf, Context ctx, boolean useJNDI) {
- Configuration configuration = createConfigurationForHibernate(0, "create", useJNDI);
- try {
- SessionFactory factory = configuration.buildSessionFactory();
- if (setVersionNumberOfDbViaQuery(factory, 0, 0) == false) {
- factory.close();
- return false;
- }
- factory.close();
- return tryUpgrade(conf, ctx, 0, DB_VERSION_NUMBER, "create", useJNDI);
- } catch (Throwable e) {
- System.err.println("Error trying initialized DB:" + e.getMessage());
- return false;
- }
-
- }
-
- public Configuration getCurrentConfiguration() {
- return createConfigurationForHibernate(DB_VERSION_NUMBER, null, true);
- }
-
- public Configuration createConfigurationForHibernate(int num, String autoSetting, boolean useJNDI) {
- Configuration configuration = new Configuration();
- if (autoSetting != null) {
- configuration.setProperty("hibernate.hbm2ddl.auto", autoSetting);
- }
- if (useJNDI) {
- configuration.setProperty("hibernate.connection.datasource", "java:comp/env/jdbc/space");
- } else {
- Properties p = new Properties();
- try {
- p.load(getClass().getResourceAsStream("/test-config.properties"));
- configuration.addProperties(p);
- } catch (IOException e) {
- System.err.println("Unable to find the test configuration file!" + e.getMessage());
- return configuration.configure();
- }
- }
- configuration.addResource("com/ogoglio/migrate/migration-" + num + ".xml");
- return configuration.configure();
- }
-
- private boolean setVersionNumberOfDbViaQuery(SessionFactory sessionFactory, int targetVersion, int expectedSize) {
- try {
- return DBVersionPersistTasks.updateVersion(targetVersion, expectedSize, sessionFactory);
- } catch (PersistException e) {
- System.err.println("Problem updating the version of the database to version " + targetVersion + ":" + e.getMessage());
- return false;
- }
- }
-
- public boolean tryUpgrade(ServletConfig servletConfig, Context ctx, int db_is, int db_wants_to_be, String ddlMode, boolean useJNDI) {
- if (migration.length != DB_VERSION_NUMBER) {
- System.out.println("Internal error! Migration list length should be " + DB_VERSION_NUMBER + " but is " + migration.length + "!");
- return false;
- }
- Properties testConfig = new Properties();
- boolean canMigrate = false;
- if (ctx == null) {
- //in test mode
- testConfig = getTestConfig();
- if ("true".equals(testConfig.getProperty("ogoglio.okToMigrateDB"))) {
- canMigrate = true;
- }
- } else {
- //not testing, but might be integration testing
- try {
- String migrate = (String) ctx.lookup(MIGRATION_KEY);
- if ("true".equals(migrate)) {
- canMigrate = true;
- }
- } catch (NamingException e) {
- System.err.println("Naming exception trying to access " + MIGRATION_KEY + " from naming context!");
- }
- }
-
- if (!canMigrate) {
- System.err.println("Cannot migrate data! Property ogoglio.okToMigrateDB is false or non-existent!");
- return false;
- }
-
- for (int i = db_is; i < db_wants_to_be; ++i) {
- Migration current = migration[i];
- System.out.println("------------------------------------------------\n");
- System.out.println("DB: Attempting migration from " + i + " to " + (i + 1) + "...");
-
- //try to get hibernate to do the work
- Configuration config = createConfigurationForHibernate(i + 1, ddlMode, useJNDI);
- SessionFactory factory = config.buildSessionFactory();
-
- //subtle: if the ddlMode is create, hibernate blows away all the data (including our version number record)
- int expectedRecords = 1;
- if ("create".equals(ddlMode)) {
- expectedRecords = 0;
- }
- setVersionNumberOfDbViaQuery(factory, i + 1, expectedRecords);
-
- if (!current.migrate(factory, servletConfig, ctx, testConfig, i, i + 1)) {
- factory.close();
- return false;
- }
- factory.close();
- System.out.println("------------------------------------------------\n");
- }
- return true;
- }
-
- public Properties getTestConfig() {
- Properties testConfig = new Properties();
- InputStream is = getClass().getResourceAsStream("/test-config.properties");
- if (is == null) {
- System.err.println("Warning! Unable to find test-config.properties! Probably something is broken!");
- } else {
- try {
- testConfig.load(is);
- } catch (IOException e) {
- System.err.println("Warning! Error reading test-config.properties! " + e.getMessage());
- }
- }
- return testConfig;
- }
-}
Added: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/OgoglioServerMigration.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/OgoglioServerMigration.java (rev 0)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/OgoglioServerMigration.java 2007-08-28 22:46:41 UTC (rev 280)
@@ -0,0 +1,29 @@
+package com.ogoglio.migrate;
+
+import com.ogoglio.appdev.migrate.Migration;
+import com.ogoglio.appdev.migrate.MigrationSupport;
+
+public class OgoglioServerMigration extends MigrationSupport {
+
+ public static final OgoglioServerMigration SINGLETON = new OgoglioServerMigration();
+
+ // THIS IS THE CRITICAL VERSION NUMBER
+ private static final int DB_VERSION_NUMBER = 1;
+
+ // this is the set of semantic migrations, in order
+ private static final Migration[] migration = { new AccountsForTesting() };
+
+ public Migration[] migrationList() {
+ return migration;
+ }
+
+ public int versionNumber() {
+ return DB_VERSION_NUMBER;
+ }
+
+ private OgoglioServerMigration() {
+
+ }
+
+
+}
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/AccountPersistTasks.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/AccountPersistTasks.java 2007-08-28 22:40:51 UTC (rev 279)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/AccountPersistTasks.java 2007-08-28 22:46:41 UTC (rev 280)
@@ -18,6 +18,8 @@
import org.hibernate.Session;
import org.hibernate.SessionFactory;
+import com.ogoglio.appdev.persist.HibernateTask;
+import com.ogoglio.appdev.persist.PersistException;
import com.ogoglio.xml.AccountDocument;
public class AccountPersistTasks {
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/BodyPersistTasks.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/BodyPersistTasks.java 2007-08-28 22:40:51 UTC (rev 279)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/BodyPersistTasks.java 2007-08-28 22:46:41 UTC (rev 280)
@@ -17,6 +17,8 @@
import org.hibernate.Session;
import org.hibernate.SessionFactory;
+import com.ogoglio.appdev.persist.HibernateTask;
+import com.ogoglio.appdev.persist.PersistException;
import com.ogoglio.xml.BodyDocument;
public class BodyPersistTasks {
Deleted: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/HibernateTask.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/HibernateTask.java 2007-08-28 22:40:51 UTC (rev 279)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/HibernateTask.java 2007-08-28 22:46:41 UTC (rev 280)
@@ -1,83 +0,0 @@
-/* Copyright 2007 Transmutable (http://transmutable.com/)
-
- 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 com.ogoglio.persist;
-
-import org.hibernate.Session;
-import org.hibernate.SessionFactory;
-import org.hibernate.StaleObjectStateException;
-import org.hibernate.Transaction;
-
-public abstract class HibernateTask {
-
- private SessionFactory sessionFactory = null;
-
- public HibernateTask() {
- }
-
- public void setSessionFactory(SessionFactory sessionFactory) {
- this.sessionFactory = sessionFactory;
- }
-
- public abstract Object run(Session hibernateSession) throws PersistException;
-
- public Object execute() throws PersistException {
- Session hibernateSession = sessionFactory.openSession();
- Transaction transaction = hibernateSession.beginTransaction();
- try {
- Object result = run(hibernateSession);
- transaction.commit();
- return result;
- } catch (StaleObjectStateException staleEx) {
- System.err.println("This interceptor does not implement optimistic concurrency control!");
- System.err.println("Your application will not work until you add compensation actions!");
- throw new PersistException("This DB is not supported.");
- } catch (PersistException ex) {
- try {
- if (transaction.isActive()) {
- transaction.rollback();
- }
- } catch (Throwable rbEx) {
- }
- throw ex;
- } catch (Throwable ex) { //catches things that are created by Hibernate that are not PersistException
- System.err.println("TRUE TYPE OF CAUGHT EXCEPTION:"+ex.getClass().getName());
- System.err.println("ORIG STACK TRACE");
- ex.printStackTrace();
- try {
- if (transaction.isActive()) {
- transaction.rollback();
- }
- } catch (Throwable rbEx) {
- }
- // XXX This is really dodgy. This changes the type of the error from it's
- // XXX true type (for example LazyInitializationException) to the PersistException
- // XXX which I can only assume is to make the throws clauses easier. Ugh.
- throw new PersistException(ex,"Hibernate error: " + ex);
- } finally {
- hibernateSession.close();
- }
- }
-
- public static boolean equals(Object obj1, Object obj2) {
- if (obj1 == obj2) {
- return true;
- }
- if (obj1 != null) {
- return obj1.equals(obj2);
- } else {
- return obj2.equals(obj1);
- }
-
- }
-}
\ No newline at end of file
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/PendingEmailValidationTasks.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/PendingEmailValidationTasks.java 2007-08-28 22:40:51 UTC (rev 279)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/PendingEmailValidationTasks.java 2007-08-28 22:46:41 UTC (rev 280)
@@ -4,6 +4,9 @@
import org.hibernate.Session;
import org.hibernate.SessionFactory;
+import com.ogoglio.appdev.persist.HibernateTask;
+import com.ogoglio.appdev.persist.PersistException;
+
public class PendingEmailValidationTasks {
public static final String PEV_BY_USERNAME = "com.ogoglio.persist.pendingEmailValidationsByUsername";
Deleted: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/PersistException.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/PersistException.java 2007-08-28 22:40:51 UTC (rev 279)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/PersistException.java 2007-08-28 22:46:41 UTC (rev 280)
@@ -1,31 +0,0 @@
-/* Copyright 2007 Transmutable (http://transmutable.com/)
-
- 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 com.ogoglio.persist;
-
-public class PersistException extends Exception {
-
- public Throwable innerThrowable;
-
- public PersistException() {
- }
-
- public PersistException(Throwable throwable, String string) {
- super(string);
- this.innerThrowable=throwable;
- }
-
- public PersistException(String string) {
- this(null,string);
- }
-}
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/PossessionPersistTasks.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/PossessionPersistTasks.java 2007-08-28 22:40:51 UTC (rev 279)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/PossessionPersistTasks.java 2007-08-28 22:46:41 UTC (rev 280)
@@ -17,6 +17,8 @@
import org.hibernate.Session;
import org.hibernate.SessionFactory;
+import com.ogoglio.appdev.persist.HibernateTask;
+import com.ogoglio.appdev.persist.PersistException;
import com.ogoglio.xml.PossessionDocument;
public class PossessionPersistTasks {
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/ServiceInitializationPersistTasks.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/ServiceInitializationPersistTasks.java 2007-08-28 22:40:51 UTC (rev 279)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/ServiceInitializationPersistTasks.java 2007-08-28 22:46:41 UTC (rev 280)
@@ -18,6 +18,7 @@
import org.hibernate.SessionFactory;
+import com.ogoglio.appdev.persist.PersistException;
import com.ogoglio.client.WebAPIUtil;
public class ServiceInitializationPersistTasks {
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/ServiceStateTasks.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/ServiceStateTasks.java 2007-08-28 22:40:51 UTC (rev 279)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/ServiceStateTasks.java 2007-08-28 22:46:41 UTC (rev 280)
@@ -4,6 +4,8 @@
import org.hibernate.Session;
import org.hibernate.SessionFactory;
+import com.ogoglio.appdev.persist.HibernateTask;
+import com.ogoglio.appdev.persist.PersistException;
import com.ogoglio.xml.ServiceStateDocument;
public class ServiceStateTasks {
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SimPersistTasks.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SimPersistTasks.java 2007-08-28 22:40:51 UTC (rev 279)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SimPersistTasks.java 2007-08-28 22:46:41 UTC (rev 280)
@@ -19,6 +19,9 @@
import org.hibernate.Session;
import org.hibernate.SessionFactory;
+import com.ogoglio.appdev.persist.HibernateTask;
+import com.ogoglio.appdev.persist.PersistException;
+
public class SimPersistTasks {
public static final String SIM_BY_URI = "com.ogoglio.persist.simByURI";
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpaceMemberPersistTasks.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpaceMemberPersistTasks.java 2007-08-28 22:40:51 UTC (rev 279)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpaceMemberPersistTasks.java 2007-08-28 22:46:41 UTC (rev 280)
@@ -17,6 +17,8 @@
import org.hibernate.Session;
import org.hibernate.SessionFactory;
+import com.ogoglio.appdev.persist.HibernateTask;
+import com.ogoglio.appdev.persist.PersistException;
import com.ogoglio.xml.SpaceMemberDocument;
public class SpaceMemberPersistTasks {
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpacePersistTasks.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpacePersistTasks.java 2007-08-28 22:40:51 UTC (rev 279)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpacePersistTasks.java 2007-08-28 22:46:41 UTC (rev 280)
@@ -19,6 +19,8 @@
import org.hibernate.Session;
import org.hibernate.SessionFactory;
+import com.ogoglio.appdev.persist.HibernateTask;
+import com.ogoglio.appdev.persist.PersistException;
import com.ogoglio.xml.PossessionDocument;
import com.ogoglio.xml.SpaceDocument;
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/TemplatePersistTasks.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/TemplatePersistTasks.java 2007-08-28 22:40:51 UTC (rev 279)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/TemplatePersistTasks.java 2007-08-28 22:46:41 UTC (rev 280)
@@ -20,6 +20,8 @@
import org.hibernate.Session;
import org.hibernate.SessionFactory;
+import com.ogoglio.appdev.persist.HibernateTask;
+import com.ogoglio.appdev.persist.PersistException;
import com.ogoglio.xml.TemplateDocument;
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/TemplateSupportFilePersistTasks.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/TemplateSupportFilePersistTasks.java 2007-08-28 22:40:51 UTC (rev 279)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/TemplateSupportFilePersistTasks.java 2007-08-28 22:46:41 UTC (rev 280)
@@ -3,6 +3,9 @@
import org.hibernate.Session;
import org.hibernate.SessionFactory;
+import com.ogoglio.appdev.persist.HibernateTask;
+import com.ogoglio.appdev.persist.PersistException;
+
public class TemplateSupportFilePersistTasks {
public static TemplateSupportFileRecord createSupportFileForMaterial(final String filename,
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/Sim.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/Sim.java 2007-08-28 22:40:51 UTC (rev 279)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/Sim.java 2007-08-28 22:46:41 UTC (rev 280)
@@ -24,9 +24,9 @@
import org.hibernate.SessionFactory;
+import com.ogoglio.appdev.persist.PersistException;
import com.ogoglio.media.MediaService;
import com.ogoglio.message.PayloadFactory;
-import com.ogoglio.persist.PersistException;
import com.ogoglio.persist.SimRecord;
import com.ogoglio.persist.SpacePersistTasks;
import com.ogoglio.persist.SpaceRecord;
@@ -51,8 +51,6 @@
public static final int MAX_SETTING_KEY_SIZE = 512;
- public static final int MAX_SETTING_VALUE_SIZE = 10240;
-
public static final long SNAPSHOT_FREQUENCY = 5 * 60 * 1000;
public static final long VACANCY_TIME_TILL_SHUTDOWN = 1 * 60 * 1000;
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java 2007-08-28 22:40:51 UTC (rev 279)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java 2007-08-28 22:46:41 UTC (rev 280)
@@ -29,9 +29,10 @@
import nanoxml.XMLElement;
+import com.ogoglio.appdev.persist.PersistException;
+import com.ogoglio.appdev.servlet.SiteResource;
import com.ogoglio.media.MediaService;
import com.ogoglio.persist.AccountRecord;
-import com.ogoglio.persist.PersistException;
import com.ogoglio.persist.SimPersistTasks;
import com.ogoglio.persist.SimRecord;
import com.ogoglio.persist.SpacePersistTasks;
@@ -40,9 +41,9 @@
import com.ogoglio.sim.SpaceSimulator;
import com.ogoglio.sim.script.ScriptContextFactory;
import com.ogoglio.sim.script.ScriptHTTPRequest;
-import com.ogoglio.site.AbstractResourceServlet;
import com.ogoglio.site.AuthServlet;
-import com.ogoglio.site.SiteResource;
+import com.ogoglio.site.OgoglioServletBase;
+import com.ogoglio.site.SiteInfo;
import com.ogoglio.site.SpaceServlet;
import com.ogoglio.util.StreamUtils;
import com.ogoglio.xml.DoorDocument;
@@ -55,7 +56,7 @@
import com.ogoglio.xml.UserDocument;
import com.ogoglio.xml.server.DocumentFactory;
-public class SimServlet extends AbstractResourceServlet {
+public class SimServlet extends OgoglioServletBase {
private static final String RELOAD_PARAMETER = "reload";
private Sim sim = null;
Deleted: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AbstractRemoteServlet.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AbstractRemoteServlet.java 2007-08-28 22:40:51 UTC (rev 279)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AbstractRemoteServlet.java 2007-08-28 22:46:41 UTC (rev 280)
@@ -1,88 +0,0 @@
-package com.ogoglio.site;
-
-import java.io.IOException;
-import java.net.URI;
-import java.net.URISyntaxException;
-
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import com.ogoglio.client.AuthenticationFailedException;
-import com.ogoglio.client.WebAPIAuthenticator;
-import com.ogoglio.client.WebAPIAuthenticatorFactory;
-import com.ogoglio.client.WebAPIClient;
-import com.ogoglio.client.WebAPIClientWire;
-import com.ogoglio.client.WebAPIDescriptor;
-import com.ogoglio.site.AbstractResourceServlet;
-import com.ogoglio.site.AuthServlet;
-import com.ogoglio.util.ArgumentUtils;
-import com.ogoglio.xml.AuthDocument;
-
-public abstract class AbstractRemoteServlet extends AbstractResourceServlet {
-
- private WebAPIClient ogoglioClient = null;
-
- private String ogoglioUsername = null;
-
- private String ogoglioPassword = null;
-
- public abstract String getOgoglioUsernameContextKey();
-
- public abstract String getOgoglioPasswordContextKey();
-
- public void init(ServletConfig config) throws ServletException {
- super.init(config);
- try {
- Context initCtx = new InitialContext();
- Context envCtx = (Context) initCtx.lookup("java:comp/env");
-
- ogoglioUsername = (String) envCtx.lookup(getOgoglioUsernameContextKey());
- ArgumentUtils.assertNotEmpty(ogoglioUsername);
- ogoglioPassword = (String) envCtx.lookup(getOgoglioPasswordContextKey());
- ArgumentUtils.assertNotEmpty(ogoglioPassword);
- } catch (NamingException e) {
- throw new ServletException("Could not init EventServlet (probably forgot env variables in setup.xml): " + e);
- }
- }
-
- public void service(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
- if (ogoglioClient == null) {
- try {
- WebAPIClientWire wire = new WebAPIClientWire();
- URI serviceURI = new URI(getSiteInfo().getBaseUrl());
- WebAPIDescriptor descriptor = new WebAPIDescriptor(serviceURI);
- WebAPIAuthenticator authenticator = new WebAPIAuthenticatorFactory().authenticate(wire, descriptor, ogoglioUsername, ogoglioPassword);
- ogoglioClient = new WebAPIClient(new WebAPIDescriptor(serviceURI), authenticator, wire);
- } catch (URISyntaxException e) {
- throw new ServletException("Could not connect to ogoglio service: " + e);
- } catch (IOException e) {
- throw new ServletException("Failed because of Ogoglio service communication failure: " + e);
- } catch (AuthenticationFailedException e) {
- throw new ServletException("Failed because of Ogoglio service auth failure: " + e);
- }
- }
-
- super.service(request, response);
- }
-
- public AuthDocument getAuthDocument(HttpServletRequest request) throws IOException {
- String authCookie = AuthServlet.getRequestAuthCookie(request);
- if (authCookie == null) {
- return null;
- }
- return getOgoglioClient().getAuthDocumentByAuthCookie(authCookie);
- }
-
- public WebAPIClient getOgoglioClient() {
- return ogoglioClient;
- }
-
- public String getOgoglioUsername() {
- return ogoglioUsername;
- }
-}
Deleted: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AbstractResourceServlet.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AbstractResourceServlet.java 2007-08-28 22:40:51 UTC (rev 279)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AbstractResourceServlet.java 2007-08-28 22:46:41 UTC (rev 280)
@@ -1,318 +0,0 @@
-/* Copyright 2007 Transmutable (http://transmutable.com/)
-
- 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 com.ogoglio.site;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.HttpURLConnection;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.Collection;
-import java.util.Enumeration;
-import java.util.Iterator;
-import java.util.Map;
-
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.commons.fileupload.FileItem;
-import org.apache.commons.fileupload.FileItemFactory;
-import org.apache.commons.fileupload.FileUploadException;
-import org.apache.commons.fileupload.disk.DiskFileItemFactory;
-import org.apache.commons.fileupload.servlet.ServletFileUpload;
-import org.hibernate.SessionFactory;
-
-import com.ogoglio.media.MediaService;
-import com.ogoglio.migrate.MigrationSupport;
-import com.ogoglio.sim.Sim;
-import com.ogoglio.util.StreamUtils;
-
-public abstract class AbstractResourceServlet extends HttpServlet {
-
- public static final String OGOGLIO_BASE_URL_KEY = "ogoglio/baseURL";
-
- private static final String HIBERNATE_SESSION_FACTORY_KEY = "com.ogoglio.hibernateSessionFactory";
-
- private static final String METHOD_PARAM = "method";
-
- private SiteResource baseResource = null;
-
- private boolean noCache = true;
-
- private SessionFactory hibernateSessionFactory = null;
-
- private SiteInfo siteInfo = null;
-
- private MediaService mediaService = null;
-
- public abstract SiteResource createBaseResource(ServletConfig servletConfig);
-
- public void init(ServletConfig config) throws ServletException {
- Context initCtx=null, envCtx=null;
- try {
- initCtx = new InitialContext();
- //creates a context on EVERY servlet? the actual VALUE of the data source is inserted by
- //hibernate configuration
- envCtx = (Context) initCtx.lookup("java:comp/env");
-
- String baseUrl = (String) envCtx.lookup(OGOGLIO_BASE_URL_KEY);
- String mediaUrl = (String) envCtx.lookup("ogoglio/mediaURL");
- boolean simsAllowRemoteAccess = "true".equals(envCtx.lookup("ogoglio/simsAllowRemoteAccess"));
- File mediaDirectory = null;
- try {
- mediaDirectory = new File((String)envCtx.lookup("ogoglio/mediaDirectory"));
- } catch (NamingException e) {
- }
-
- File mailDir = null;
- try {
- mailDir = new File((String)envCtx.lookup("ogoglio/mailDirectory"));
- } catch (NamingException e) {
- }
-
- siteInfo = new SiteInfo(baseUrl, mediaUrl, simsAllowRemoteAccess, mediaDirectory, mailDir);
-
- mediaService = new MediaService(new URI(siteInfo.getMediaUrl()));
- } catch (IOException e) {
- throw new ServletException("Could not init: " + e);
- } catch (URISyntaxException e) {
- throw new ServletException("Could not init: " + e);
- } catch (NamingException e) {
- throw new ServletException("Could not init: " + e);
- }
-
- super.init(config);
- hibernateSessionFactory = getOrCreateHibernateSessionFactory(config,envCtx);
- if (hibernateSessionFactory==null) {
- throw new IllegalStateException("Unable to create sensible hibernate configuration!");
- }
- baseResource = createBaseResource(config);
- if (!(baseResource.getPathElement() instanceof String)) {
- throw new IllegalStateException("The base resource must have a String path element: " + baseResource.getPathElement());
- }
- }
-
- public void destroy() {
- try {
- hibernateSessionFactory.close();
- } catch (Throwable e) {
- }
- super.destroy();
- }
-
- public SiteInfo getSiteInfo() {
- return siteInfo;
- }
-
- public MediaService getMediaService() {
- return mediaService;
- }
-
- public SessionFactory getSessionFactory() {
- return hibernateSessionFactory;
- }
-
-private static SessionFactory getOrCreateHibernateSessionFactory(ServletConfig config, Context context) {
- SessionFactory sessionFactory = (SessionFactory) config.getServletContext().getAttribute(HIBERNATE_SESSION_FACTORY_KEY);
- if (sessionFactory == null) {
- System.out.println(config.getServletName()+" checking DB Version...");
- MigrationSupport ms= new MigrationSupport();
- if (!ms.verifyVersion(config,context)) {
- throw new IllegalStateException("Cannot find a DB configuration for hibernate!");
- }
- sessionFactory= ms.getCurrentConfiguration().configure().buildSessionFactory();
- config.getServletContext().setAttribute(HIBERNATE_SESSION_FACTORY_KEY, sessionFactory);
- }
- return sessionFactory;
- }
- public static void setNoCache(HttpServletResponse response) {
- //IE caches XMLHttpRequest responses, so we set explicit no-cache headers
- response.addHeader("Cache-Control", "must-revalidate");
- response.addHeader("Cache-Control", "no-cache");
- response.addHeader("Cache-Control", "no-store");
- response.setDateHeader("Expires", 0);
- }
-
- public static void setCachable(HttpServletResponse response) {
- response.setHeader("Cache-Control", "public");
- response.setDateHeader("Expires", System.currentTimeMillis() + 10000000);
- }
-
- public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- if (noCache) {
- setNoCache(response);
- }
-
- URI requestURI = getRequestURI(request);
-
- String[] pathElements = getPathElements((String) baseResource.getPathElement(), requestURI);
-
- SiteResource requestedResource = getSiteResource(pathElements, baseResource);
-
- if (requestedResource == null) {
- response.setStatus(HttpServletResponse.SC_NOT_FOUND);
- return;
- }
-
- if (request.getMethod().equals("GET")) {
- if ("DELETE".equals(request.getParameter(METHOD_PARAM))) { //A workaround for WebKit
- requestedResource.doDelete(request, response, pathElements);
- } else {
- requestedResource.doGet(request, response, pathElements);
- }
- return;
- } else if (request.getMethod().equals("POST")) {
- requestedResource.doPost(request, response, pathElements);
- return;
- } else if (request.getMethod().equals("DELETE")) {
- requestedResource.doDelete(request, response, pathElements);
- return;
- } else if (request.getMethod().equals("PUT")) {
- requestedResource.doPut(request, response, pathElements);
- return;
- } else if (request.getMethod().equals("HEAD")) {
- requestedResource.doHead(request, response, pathElements);
- return;
- } else {
- response.setStatus(HttpServletResponse.SC_METHOD_NOT_ALLOWED);
- return;
- }
-
- }
-
- private SiteResource getSiteResource(String[] pathElements, SiteResource rootResource) {
-
- SiteResource currentPick = rootResource;
- for (int i = 0; i < pathElements.length && currentPick != null; i++) {
- if (i == pathElements.length - 1) {
- return currentPick;
- }
- currentPick = currentPick.getSubResource(pathElements[i + 1]);
- }
- return null;
- }
-
- private static URI getRequestURI(HttpServletRequest request) {
- try {
- return new URI(request.getRequestURL().toString());
- } catch (URISyntaxException e) {
- e.printStackTrace();
- throw new IllegalStateException("Bad request URI?!? " + request.getRequestURI());
- }
- }
-
- private static String[] getPathElements(String baseElement, URI uri) {
- String[] pathElements = uri.getPath().split("/");
- String[] pathFromSpace = null;
- for (int i = 0; i < pathElements.length; i++) {
- if (baseElement.equals(pathElements[i])) {
- pathFromSpace = new String[pathElements.length - i];
- for (int j = 0; j < pathFromSpace.length; j++) {
- pathFromSpace[j] = pathElements[j + i];
- }
- return pathFromSpace;
- }
- }
- return null;
- }
-
- public static void proxy(URI uri, String method, HttpServletRequest request, HttpServletResponse response) throws IOException {
- HttpURLConnection connection = (HttpURLConnection) uri.toURL().openConnection();
- connection.setRequestMethod(method);
- connection.setAllowUserInteraction(false);
- Enumeration headerNames = request.getHeaderNames();
- while (headerNames.hasMoreElements()) {
- String headerName = (String) headerNames.nextElement();
- connection.setRequestProperty(headerName, request.getHeader(headerName));
- }
-
- if ("POST".equals(method)) {
- connection.setDoOutput(true);
- InputStream requestInput = request.getInputStream();
- OutputStream outputStream = connection.getOutputStream();
- StreamUtils.write(requestInput, outputStream, -1);
- outputStream.flush();
- outputStream.close();
- }
-
- response.setStatus(connection.getResponseCode());
-
- Map headers = connection.getHeaderFields();
- String[] headerFields = (String[]) headers.keySet().toArray(new String[0]);
- for (int i = 0; i < headerFields.length; i++) {
- if (headerFields[i] == null) {
- continue;
- }
- String[] values = (String[]) ((Collection) headers.get(headerFields[i])).toArray(new String[0]); //It's lines like this that make me hate Java
- for (int j = 0; j < values.length; j++) {
- if (values[j] != null) {
- response.setHeader(headerFields[i], values[j]);
- }
- }
- }
-
- if (connection.getResponseCode() == 200) {
- InputStream input = connection.getInputStream();
- StreamUtils.write(input, response.getOutputStream(), -1);
- }
- }
-
- public static String getFirstStringValue(HttpServletRequest request) throws IOException {
- if (request.getContentType() != null && (request.getContentType().startsWith("application/x-www-form-urlencoded") || request.getContentType().startsWith("multipart/form-data"))) {
- Enumeration enumeration = request.getParameterNames();
- while (enumeration.hasMoreElements()) {
- String element = (String) enumeration.nextElement();
- if (element != null && !"null".equals(element)) { // *sigh*
- String newValue = request.getParameter(element);
- if (newValue != null) {
- return newValue;
- }
- }
- }
- return null;
- } else {
- return StreamUtils.readInput(request.getInputStream(), Sim.MAX_SETTING_VALUE_SIZE);
- }
- }
-
- public static InputStream getFirstFile(HttpServletRequest request, long maxSize) throws IOException {
- FileItemFactory factory = new DiskFileItemFactory();
- ServletFileUpload upload = new ServletFileUpload(factory);
- upload.setSizeMax(maxSize);
- try {
- Iterator iter = upload.parseRequest(request).iterator();
- while (iter.hasNext()) {
- FileItem item = (FileItem) iter.next();
-
- if (item.isFormField()) {
- //ignore it.
- } else {
- return item.getInputStream();
- }
- }
- } catch (FileUploadException e) {
- e.printStackTrace();
- throw new IOException(e.getMessage());
- }
- return null;
- }
-}
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AccountServlet.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AccountServlet.java 2007-08-28 22:40:51 UTC (rev 279)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AccountServlet.java 2007-08-28 22:46:41 UTC (rev 280)
@@ -27,6 +27,11 @@
import nanoxml.XMLElement;
+import com.ogoglio.appdev.migrate.MigrationSupport;
+import com.ogoglio.appdev.persist.PersistException;
+import com.ogoglio.appdev.servlet.DescendingSiteResource;
+import com.ogoglio.appdev.servlet.MigratedResourceServlet;
+import com.ogoglio.appdev.servlet.SiteResource;
import com.ogoglio.client.WebAPIClientWire;
import com.ogoglio.client.WebAPIUtil;
import com.ogoglio.mail.MailClient;
@@ -34,13 +39,13 @@
import com.ogoglio.mail.MailSendException;
import com.ogoglio.mail.MailTemplateFactory;
import com.ogoglio.media.MediaService;
+import com.ogoglio.migrate.OgoglioServerMigration;
import com.ogoglio.persist.AccountPersistTasks;
import com.ogoglio.persist.AccountRecord;
import com.ogoglio.persist.BodyPersistTasks;
import com.ogoglio.persist.BodyRecord;
import com.ogoglio.persist.PendingEmailValidationRecord;
import com.ogoglio.persist.PendingEmailValidationTasks;
-import com.ogoglio.persist.PersistException;
import com.ogoglio.persist.PossessionPersistTasks;
import com.ogoglio.persist.PossessionRecord;
import com.ogoglio.persist.ServiceStateRecord;
@@ -62,7 +67,7 @@
import com.ogoglio.xml.ThingDocument;
import com.ogoglio.xml.server.DocumentFactory;
-public class AccountServlet extends AbstractResourceServlet {
+public class AccountServlet extends OgoglioServletBase {
public static final String SECRET_PARAMETER = "secret";
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AuthServlet.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AuthServlet.java 2007-08-28 22:40:51 UTC (rev 279)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AuthServlet.java 2007-08-28 22:46:41 UTC (rev 280)
@@ -12,7 +12,6 @@
See the License for the specific language governing permissions and
limitations under the License. */
package com.ogoglio.site;
-
import java.io.IOException;
import java.util.Random;
@@ -24,26 +23,22 @@
import org.hibernate.SessionFactory;
+import com.ogoglio.appdev.persist.PersistException;
+import com.ogoglio.appdev.servlet.SiteResource;
import com.ogoglio.persist.AccountPersistTasks;
import com.ogoglio.persist.AccountRecord;
-import com.ogoglio.persist.PersistException;
+import com.ogoglio.util.WebConstants;
import com.ogoglio.xml.AccountDocument;
import com.ogoglio.xml.AuthDocument;
-public class AuthServlet extends AbstractResourceServlet {
+public class AuthServlet extends OgoglioServletBase{
public static final String AUTH_DATA_KEY = "authData";
- public static final String AUTH_COOKIE = "loginCookie";
-
- public static final String USERNAME_PARAM = "username";
-
- public static final String PASS_PARAM = "password";
-
public static final String LOGOUT_PARAM = "logout";
private Random random = new Random();
-
+
//TODO add a way to remove a login cookie from the db when people change their password
public SiteResource createBaseResource(ServletConfig servletConfig) {
@@ -118,7 +113,7 @@
return;
} else if ("true".equals(logoutParam)) {
request.getSession().removeAttribute(AUTH_DATA_KEY);
- Cookie logoutCookie = new Cookie(AUTH_COOKIE, "logMeOut");
+ Cookie logoutCookie = new Cookie(WebConstants.AUTH_COOKIE, "logMeOut");
logoutCookie.setPath("/");
logoutCookie.setMaxAge(0);
logoutCookie.setDomain(getSiteInfo().getHost());
@@ -150,12 +145,12 @@
public void doPost(HttpServletRequest request, HttpServletResponse response, String[] pathElements) throws ServletException, IOException {
try {
- String usernameParam = request.getParameter(USERNAME_PARAM);
- String passParam = request.getParameter(PASS_PARAM);
+ String usernameParam = request.getParameter(WebConstants.AUTH_USERNAME_PARAM);
+ String passParam = request.getParameter(WebConstants.AUTH_PASS_PARAM);
if (usernameParam != null || passParam != null) {
AccountRecord authedAccountRecord = authenticate(usernameParam, passParam);
if (authedAccountRecord != null) {
- Cookie newCookie = new Cookie(AUTH_COOKIE, authedAccountRecord.getCookie());
+ Cookie newCoo...
[truncated message content] |