diff --git a/source/java/org/alfresco/repo/googledocs/GoogleDocsPermissionContext.java b/source/java/org/alfresco/repo/googledocs/GoogleDocsPermissionContext.java
index 42c4edc344..d5e13def06 100644
--- a/source/java/org/alfresco/repo/googledocs/GoogleDocsPermissionContext.java
+++ b/source/java/org/alfresco/repo/googledocs/GoogleDocsPermissionContext.java
@@ -1,6 +1,21 @@
-/**
- *
- */
+/*
+* Copyright (C) 2005-2010 Alfresco Software Limited.
+*
+* This file is part of Alfresco
+*
+* Alfresco is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License as published by
+* the Free Software Foundation, either version 3 of the License, or
+* (at your option) any later version.
+*
+* Alfresco is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public License
+* along with Alfresco. If not, see .
+*/
package org.alfresco.repo.googledocs;
/**
diff --git a/source/java/org/alfresco/repo/googledocs/GoogleDocsService.java b/source/java/org/alfresco/repo/googledocs/GoogleDocsService.java
index 4e59c55e11..1e96ea38fd 100755
--- a/source/java/org/alfresco/repo/googledocs/GoogleDocsService.java
+++ b/source/java/org/alfresco/repo/googledocs/GoogleDocsService.java
@@ -1,3 +1,21 @@
+/*
+* Copyright (C) 2005-2010 Alfresco Software Limited.
+*
+* This file is part of Alfresco
+*
+* Alfresco is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License as published by
+* the Free Software Foundation, either version 3 of the License, or
+* (at your option) any later version.
+*
+* Alfresco is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public License
+* along with Alfresco. If not, see .
+*/
package org.alfresco.repo.googledocs;
import java.io.InputStream;
@@ -9,6 +27,13 @@ import org.alfresco.service.cmr.repository.NodeRef;
*/
public interface GoogleDocsService
{
+ /**
+ * Initialises the googles doc service, checking the provided credentials are correct. This need
+ * not be called manually since other service calls will initialise the service on demand, but it can
+ * be helpful to know the "health" of the service up front.
+ */
+ void initialise() throws GoogleDocsServiceInitException;
+
/**
* Create a google doc from a given node. The content of the node will be used
* as a basis of the associated google doc. If the node has no content a new, empty google
diff --git a/source/java/org/alfresco/repo/googledocs/GoogleDocsServiceImpl.java b/source/java/org/alfresco/repo/googledocs/GoogleDocsServiceImpl.java
index 8b8958b1c0..8d8d44927f 100755
--- a/source/java/org/alfresco/repo/googledocs/GoogleDocsServiceImpl.java
+++ b/source/java/org/alfresco/repo/googledocs/GoogleDocsServiceImpl.java
@@ -208,7 +208,7 @@ public class GoogleDocsServiceImpl implements GoogleDocsService, GoogleDocsModel
/**
* Initialise google docs services
*/
- public void initialiseGoogleDocsService()
+ public void initialise() throws GoogleDocsServiceInitException
{
if (initialised == false)
{
@@ -219,7 +219,7 @@ public class GoogleDocsServiceImpl implements GoogleDocsService, GoogleDocsModel
if (username == null ||username.length() == 0 || password == null)
{
- throw new AlfrescoRuntimeException("No Goolge Docs credentials found. Please set the Google Docs authentication configuration.");
+ throw new GoogleDocsServiceInitException("No Goolge Docs credentials found. Please set the Google Docs authentication configuration.");
}
try
@@ -230,7 +230,7 @@ public class GoogleDocsServiceImpl implements GoogleDocsService, GoogleDocsModel
}
catch (AuthenticationException e)
{
- throw new AlfrescoRuntimeException("Unable to connect to Google Docs. Please check the Google Docs authentication configuration.", e);
+ throw new GoogleDocsServiceInitException("Unable to connect to Google Docs. Please check the Google Docs authentication configuration.", e);
}
initialised = true;
@@ -250,7 +250,14 @@ public class GoogleDocsServiceImpl implements GoogleDocsService, GoogleDocsModel
ParameterCheck.mandatory("nodeRef", nodeRef);
// Initialise google doc services
- initialiseGoogleDocsService();
+ try
+ {
+ initialise();
+ }
+ catch (GoogleDocsServiceInitException e)
+ {
+ throw new AlfrescoRuntimeException("Unable to create google doc, because service could not be initialised.", e);
+ }
// Get property values
String name = (String) nodeService.getProperty(nodeRef, ContentModel.PROP_NAME);
@@ -295,7 +302,14 @@ public class GoogleDocsServiceImpl implements GoogleDocsService, GoogleDocsModel
ParameterCheck.mandatory("nodeRef", nodeRef);
// Initialise google doc services
- initialiseGoogleDocsService();
+ try
+ {
+ initialise();
+ }
+ catch (GoogleDocsServiceInitException e)
+ {
+ throw new AlfrescoRuntimeException("Unable to create google doc, because service could not be initialised.", e);
+ }
try
{
@@ -485,7 +499,14 @@ public class GoogleDocsServiceImpl implements GoogleDocsService, GoogleDocsModel
ParameterCheck.mandatory("nodeRef", nodeRef);
// Initialise google doc services
- initialiseGoogleDocsService();
+ try
+ {
+ initialise();
+ }
+ catch (GoogleDocsServiceInitException e)
+ {
+ throw new AlfrescoRuntimeException("Unable to create google doc, because service could not be initialised.", e);
+ }
try
{
diff --git a/source/java/org/alfresco/repo/googledocs/GoogleDocsServiceInitException.java b/source/java/org/alfresco/repo/googledocs/GoogleDocsServiceInitException.java
new file mode 100644
index 0000000000..2ee68d2574
--- /dev/null
+++ b/source/java/org/alfresco/repo/googledocs/GoogleDocsServiceInitException.java
@@ -0,0 +1,54 @@
+/*
+* Copyright (C) 2005-2010 Alfresco Software Limited.
+*
+* This file is part of Alfresco
+*
+* Alfresco is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License as published by
+* the Free Software Foundation, either version 3 of the License, or
+* (at your option) any later version.
+*
+* Alfresco is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public License
+* along with Alfresco. If not, see .
+*/
+package org.alfresco.repo.googledocs;
+
+
+/**
+ * Google docs service initialisation exception class.
+ */
+public class GoogleDocsServiceInitException extends Exception
+{
+ /** Serial version UUID */
+ private static final long serialVersionUID = -2104024155137888545L;
+
+ /**
+ * @param message error message
+ */
+ public GoogleDocsServiceInitException(String message)
+ {
+ super(message);
+ }
+
+ /**
+ * @param message error message
+ * @param cause causing exception
+ */
+ public GoogleDocsServiceInitException(String message, Throwable cause)
+ {
+ super(message, cause);
+ }
+
+ /**
+ * @param cause causing exception
+ */
+ public GoogleDocsServiceInitException(Throwable cause)
+ {
+ super(cause);
+ }
+}
diff --git a/source/java/org/alfresco/repo/googledocs/GoogleDocumentServiceTest.java b/source/java/org/alfresco/repo/googledocs/GoogleDocumentServiceTest.java
index 3d6c0aee33..3c8ee521b4 100755
--- a/source/java/org/alfresco/repo/googledocs/GoogleDocumentServiceTest.java
+++ b/source/java/org/alfresco/repo/googledocs/GoogleDocumentServiceTest.java
@@ -31,7 +31,6 @@ import junit.framework.TestCase;
import org.alfresco.model.ContentModel;
import org.alfresco.repo.content.MimetypeMap;
import org.alfresco.repo.management.subsystems.ApplicationContextFactory;
-import org.alfresco.repo.management.subsystems.ChildApplicationContextFactory;
import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.repo.site.SiteServiceImpl;
import org.alfresco.service.cmr.coci.CheckOutCheckInService;
@@ -181,58 +180,78 @@ public class GoogleDocumentServiceTest extends TestCase implements GoogleDocsMod
}
}
+ private boolean isGoogleServiceAvailable()
+ {
+ boolean result = true;
+ try
+ {
+ googleDocsService.initialise();
+ }
+ catch (GoogleDocsServiceInitException e)
+ {
+ result = false;
+ }
+ return result;
+ }
+
public void testGoogleDocUploadDownload() throws Exception
{
- googleDocsService.createGoogleDoc(nodeRefDoc, GoogleDocsPermissionContext.SHARE_WRITE);
-
- assertTrue(nodeService.hasAspect(nodeRefDoc, ASPECT_GOOGLERESOURCE));
- assertNotNull(nodeService.getProperty(nodeRefDoc, PROP_URL));
- assertNotNull(nodeService.getProperty(nodeRefDoc, PROP_RESOURCE_ID));
- assertNotNull(nodeService.getProperty(nodeRefDoc, PROP_RESOURCE_TYPE));
-
- System.out.println("Google doc URL: " + nodeService.getProperty(nodeRefDoc, PROP_URL));
- System.out.println("Google doc type: " + nodeService.getProperty(nodeRefDoc, PROP_RESOURCE_TYPE));
- System.out.println("Google doc id: " + nodeService.getProperty(nodeRefDoc, PROP_RESOURCE_ID));
- String downloadFile = downloadFile(googleDocsService.getGoogleDocContent(nodeRefDoc), ".doc");
- System.out.println("Download file: " + downloadFile);
-
-// googleDocsService.upload(nodeRefSpread, GoogleDocsPermissionContext.SHARE_WRITE);
-//
-// assertTrue(nodeService.hasAspect(nodeRefSpread, ASPECT_GOOGLERESOURCE));
-// assertNotNull(nodeService.getProperty(nodeRefSpread, PROP_URL));
-// assertNotNull(nodeService.getProperty(nodeRefSpread, PROP_RESOURCE_ID));
-// assertNotNull(nodeService.getProperty(nodeRefSpread, PROP_RESOURCE_TYPE));
-//
-// System.out.println("Google doc URL: " + nodeService.getProperty(nodeRefSpread, PROP_URL));
-// System.out.println("Google doc type: " + nodeService.getProperty(nodeRefSpread, PROP_RESOURCE_TYPE));
-// System.out.println("Google doc id: " + nodeService.getProperty(nodeRefSpread, PROP_RESOURCE_ID));
-// downloadFile = downloadFile(googleDocsService.download(nodeRefSpread), ".xls");
-// System.out.println("Download file: " + downloadFile);
+ if (isGoogleServiceAvailable() == true)
+ {
+ googleDocsService.createGoogleDoc(nodeRefDoc, GoogleDocsPermissionContext.SHARE_WRITE);
+
+ assertTrue(nodeService.hasAspect(nodeRefDoc, ASPECT_GOOGLERESOURCE));
+ assertNotNull(nodeService.getProperty(nodeRefDoc, PROP_URL));
+ assertNotNull(nodeService.getProperty(nodeRefDoc, PROP_RESOURCE_ID));
+ assertNotNull(nodeService.getProperty(nodeRefDoc, PROP_RESOURCE_TYPE));
+
+ System.out.println("Google doc URL: " + nodeService.getProperty(nodeRefDoc, PROP_URL));
+ System.out.println("Google doc type: " + nodeService.getProperty(nodeRefDoc, PROP_RESOURCE_TYPE));
+ System.out.println("Google doc id: " + nodeService.getProperty(nodeRefDoc, PROP_RESOURCE_ID));
+ String downloadFile = downloadFile(googleDocsService.getGoogleDocContent(nodeRefDoc), ".doc");
+ System.out.println("Download file: " + downloadFile);
+
+ // googleDocsService.upload(nodeRefSpread, GoogleDocsPermissionContext.SHARE_WRITE);
+ //
+ // assertTrue(nodeService.hasAspect(nodeRefSpread, ASPECT_GOOGLERESOURCE));
+ // assertNotNull(nodeService.getProperty(nodeRefSpread, PROP_URL));
+ // assertNotNull(nodeService.getProperty(nodeRefSpread, PROP_RESOURCE_ID));
+ // assertNotNull(nodeService.getProperty(nodeRefSpread, PROP_RESOURCE_TYPE));
+ //
+ // System.out.println("Google doc URL: " + nodeService.getProperty(nodeRefSpread, PROP_URL));
+ // System.out.println("Google doc type: " + nodeService.getProperty(nodeRefSpread, PROP_RESOURCE_TYPE));
+ // System.out.println("Google doc id: " + nodeService.getProperty(nodeRefSpread, PROP_RESOURCE_ID));
+ // downloadFile = downloadFile(googleDocsService.download(nodeRefSpread), ".xls");
+ // System.out.println("Download file: " + downloadFile);
+ }
}
public void testCheckOutCheckIn() throws Exception
{
- ContentReader contentReader = contentService.getReader(nodeRef2, ContentModel.PROP_CONTENT);
- assertNull(contentReader);
-
- // Check out the empty google document
- NodeRef workingCopy = checkOutCheckInService.checkout(nodeRef2);
-
- assertTrue(nodeService.hasAspect(workingCopy, ASPECT_GOOGLERESOURCE));
- assertNotNull(nodeService.getProperty(workingCopy, PROP_URL));
- assertNotNull(nodeService.getProperty(workingCopy, PROP_RESOURCE_ID));
- assertNotNull(nodeService.getProperty(workingCopy, PROP_RESOURCE_TYPE));
-
- System.out.println("Google doc URL: " + nodeService.getProperty(workingCopy, PROP_URL));
- System.out.println("Google doc type: " + nodeService.getProperty(workingCopy, PROP_RESOURCE_TYPE));
- System.out.println("Google doc id: " + nodeService.getProperty(workingCopy, PROP_RESOURCE_ID));
-
- checkOutCheckInService.checkin(workingCopy, null);
-
- assertFalse(nodeService.hasAspect(nodeRefDoc, ASPECT_GOOGLERESOURCE));
- contentReader = contentService.getReader(nodeRef2, ContentModel.PROP_CONTENT);
- assertNotNull(contentReader);
+ if (isGoogleServiceAvailable() == true)
+ {
+ ContentReader contentReader = contentService.getReader(nodeRef2, ContentModel.PROP_CONTENT);
+ assertNull(contentReader);
+
+ // Check out the empty google document
+ NodeRef workingCopy = checkOutCheckInService.checkout(nodeRef2);
+
+ assertTrue(nodeService.hasAspect(workingCopy, ASPECT_GOOGLERESOURCE));
+ assertNotNull(nodeService.getProperty(workingCopy, PROP_URL));
+ assertNotNull(nodeService.getProperty(workingCopy, PROP_RESOURCE_ID));
+ assertNotNull(nodeService.getProperty(workingCopy, PROP_RESOURCE_TYPE));
+
+ System.out.println("Google doc URL: " + nodeService.getProperty(workingCopy, PROP_URL));
+ System.out.println("Google doc type: " + nodeService.getProperty(workingCopy, PROP_RESOURCE_TYPE));
+ System.out.println("Google doc id: " + nodeService.getProperty(workingCopy, PROP_RESOURCE_ID));
+
+ checkOutCheckInService.checkin(workingCopy, null);
+
+ assertFalse(nodeService.hasAspect(nodeRefDoc, ASPECT_GOOGLERESOURCE));
+ contentReader = contentService.getReader(nodeRef2, ContentModel.PROP_CONTENT);
+ assertNotNull(contentReader);
+ }
}
/**