└── connectors ├── cs ├── docs │ ├── Item.gif │ ├── Index.gif │ ├── Search.gif │ ├── Collapsed.gif │ ├── ExpandAll.bmp │ ├── Expanded.gif │ ├── Splitter.gif │ ├── SyncTOC.gif │ ├── icons │ │ ├── CFW.gif │ │ ├── Caution.gif │ │ ├── copycode.gif │ │ ├── privenum.gif │ │ ├── protenum.gif │ │ ├── pubclass.gif │ │ ├── pubenum.gif │ │ ├── pubevent.gif │ │ ├── pubfield.gif │ │ ├── security.gif │ │ ├── static.gif │ │ ├── LastChild.gif │ │ ├── alert_note.gif │ │ ├── expand_all.gif │ │ ├── privclass.gif │ │ ├── privevent.gif │ │ ├── privfield.gif │ │ ├── privmethod.gif │ │ ├── protclass.gif │ │ ├── protevent.gif │ │ ├── protfield.gif │ │ ├── protfield.png │ │ ├── protmethod.gif │ │ ├── pubmethod.gif │ │ ├── NotLastChild.gif │ │ ├── alert_caution.gif │ │ ├── collapse_all.gif │ │ ├── privdelegate.gif │ │ ├── privinterface.gif │ │ ├── privproperty.gif │ │ ├── privstructure.gif │ │ ├── protdelegate.gif │ │ ├── protinterface.gif │ │ ├── protoperator.gif │ │ ├── protproperty.gif │ │ ├── protstructure.gif │ │ ├── pubdelegate.gif │ │ ├── pubinterface.gif │ │ ├── puboperator.gif │ │ ├── pubproperty.gif │ │ ├── pubstructure.gif │ │ └── alert_security.gif │ ├── CloseSearch.png │ ├── CollapseAll.bmp │ ├── fti │ │ ├── FTI_100.bin │ │ ├── FTI_101.bin │ │ ├── FTI_102.bin │ │ ├── FTI_103.bin │ │ ├── FTI_104.bin │ │ ├── FTI_105.bin │ │ ├── FTI_107.bin │ │ ├── FTI_108.bin │ │ ├── FTI_109.bin │ │ ├── FTI_110.bin │ │ ├── FTI_111.bin │ │ ├── FTI_112.bin │ │ ├── FTI_113.bin │ │ ├── FTI_114.bin │ │ ├── FTI_115.bin │ │ ├── FTI_116.bin │ │ ├── FTI_117.bin │ │ ├── FTI_118.bin │ │ ├── FTI_119.bin │ │ ├── FTI_120.bin │ │ ├── FTI_121.bin │ │ ├── FTI_122.bin │ │ ├── FTI_95.bin │ │ ├── FTI_97.bin │ │ ├── FTI_98.bin │ │ ├── FTI_99.bin │ │ └── FTI_Files.bin │ └── scripts │ │ ├── CollapsibleSection.js │ │ ├── EventUtilities.js │ │ ├── LanguageFilter.js │ │ ├── StyleUtilities.js │ │ ├── SplitScreen.js │ │ └── MemberFilter.js ├── lib │ ├── Google.GData.Client.dll │ ├── Google.GData.Calendar.dll │ ├── Google.GData.Extensions.dll │ └── Google.GData.AccessControl.dll └── src │ ├── VS2010 │ ├── GoogleCalendarConnectorWebService │ │ ├── Global.asax │ │ ├── ExchangeQuerier.aspx.designer.cs │ │ ├── ExchangeQuerier.aspx │ │ ├── Global.asax.cs │ │ └── Properties │ │ │ └── AssemblyInfo.cs │ ├── GoogleCalendarConnectorSyncService │ │ └── Properties │ │ │ ├── Settings.settings │ │ │ ├── Settings.Designer.cs │ │ │ └── AssemblyInfo.cs │ ├── UnitTests │ │ ├── unittest.nunit │ │ └── Properties │ │ │ └── AssemblyInfo.cs │ ├── tests │ │ └── Properties │ │ │ └── AssemblyInfo.cs │ └── core │ │ └── Properties │ │ └── AssemblyInfo.cs │ ├── core │ ├── webdav │ │ ├── FindItemUrls.xml │ │ ├── LoadFreeBusy.xml │ │ ├── FindAppointments.xml │ │ ├── CreateAppointment.xml │ │ ├── Property.cs │ │ ├── MessageProperty.cs │ │ └── IXmlRequest.cs │ ├── GCalErrorResponse.cs │ ├── freebusywriters │ │ ├── IFreeBusyWriter.cs │ │ └── FreeBusyWriterFactory.cs │ ├── scheduling │ │ ├── SentinelFactory.cs │ │ └── IWorker.cs │ ├── util │ │ ├── ExchangeUtil.cs │ │ ├── Future.cs │ │ ├── BlockTimer.cs │ │ └── EmbeddedResourceUtil.cs │ ├── ExchangeUserDict.cs │ └── Enumerations.cs │ ├── webservice │ ├── errors │ │ ├── errors.htm │ │ └── 403.htm │ ├── WebAppConfigureAction.Designer.cs │ └── WebAppConfigureAction.cs │ ├── FreeBusyBuilder │ ├── Properties │ │ └── AssemblyInfo.cs │ └── FreeBusyBuilder.csproj │ ├── unittests │ └── core │ │ ├── webdav │ │ ├── responses │ │ │ └── FreeBusyPublicFolderResponse.xml │ │ └── XmlRequestMock.cs │ │ └── util │ │ ├── FutureTest.cs │ │ ├── OlsonUtilTest.cs │ │ └── DateUtilTest.cs │ └── service │ ├── Program.cs │ ├── Settings.cs │ └── GCalExchangeSyncService.cs ├── docs └── wiki │ ├── features.png │ ├── comparison.png │ ├── sync_service.png │ ├── web_service.png │ └── free_busy_request.png ├── java ├── docs │ ├── devguide │ │ ├── devguide.html │ │ ├── connector_stages.jpg │ │ ├── connector_objectModel.jpg │ │ ├── connector_messageProcessing.jpg │ │ └── local_extensions.css │ └── api │ │ ├── resources │ │ └── inherit.gif │ │ ├── package-list │ │ ├── stylesheet.css │ │ ├── com │ │ └── google │ │ │ └── calendar │ │ │ └── interoperability │ │ │ └── connectorplugin │ │ │ ├── impl │ │ │ ├── mock │ │ │ │ └── package-frame.html │ │ │ └── google │ │ │ │ └── package-frame.html │ │ │ └── package-frame.html │ │ ├── index.html │ │ └── overview-frame.html ├── src │ ├── misc_windows │ │ ├── freebusybuilder.exe │ │ ├── uninstall.bat │ │ └── install.bat │ ├── javatests │ │ └── com │ │ │ └── google │ │ │ └── calendar │ │ │ └── interoperability │ │ │ └── connectorplugin │ │ │ ├── base │ │ │ ├── ParserTest.java │ │ │ ├── NullSinkTest.java │ │ │ ├── messages │ │ │ │ ├── util │ │ │ │ │ ├── NovellDateTest.java │ │ │ │ │ └── AddressTest.java │ │ │ │ ├── GetDirectoryResponseTest.java │ │ │ │ ├── VoidResponseTest.java │ │ │ │ └── ProbeResponseTest.java │ │ │ ├── SimpleSinkTest.java │ │ │ └── CommandHandlerTest.java │ │ │ └── impl │ │ │ └── mock │ │ │ ├── MockUserTest.java │ │ │ ├── MockDomainTest.java │ │ │ ├── AdminHandlerTest.java │ │ │ └── MockServerTest.java │ ├── java │ │ └── com │ │ │ └── google │ │ │ └── calendar │ │ │ └── interoperability │ │ │ └── connectorplugin │ │ │ ├── base │ │ │ ├── messages │ │ │ │ ├── NoteCommand.java │ │ │ │ ├── TaskCommand.java │ │ │ │ ├── MailCommand.java │ │ │ │ ├── PhoneCommand.java │ │ │ │ ├── AdminCommand.java │ │ │ │ ├── AppointmentCommand.java │ │ │ │ ├── SearchCommand.java │ │ │ │ ├── PassThroughCommand.java │ │ │ │ ├── util │ │ │ │ │ ├── DsGroup.java │ │ │ │ │ ├── DsResource.java │ │ │ │ │ ├── StatusReport.java │ │ │ │ │ ├── BusyReport.java │ │ │ │ │ ├── AddressList.java │ │ │ │ │ ├── DsExternalPostOffice.java │ │ │ │ │ ├── FileDescriptorList.java │ │ │ │ │ ├── FileDescriptor.java │ │ │ │ │ └── DsUser.java │ │ │ │ ├── UnknownCommand.java │ │ │ │ └── GetDirectoryResponse.java │ │ │ ├── SelfTestable.java │ │ │ ├── PrintFunction.java │ │ │ ├── GarbageCollector.java │ │ │ ├── NullSink.java │ │ │ ├── Tuple.java │ │ │ ├── Sink.java │ │ │ ├── SimpleStage.java │ │ │ └── Responder.java │ │ │ └── impl │ │ │ ├── mock │ │ │ ├── MockUser.java │ │ │ ├── AdminHandler.java │ │ │ └── MockInfrastructure.java │ │ │ └── google │ │ │ └── GDataConnector.java │ └── jsmooth │ │ ├── selftest.jsmooth │ │ └── service.jsmooth ├── testlib │ └── MISSING.txt ├── lib │ └── MISSING.txt ├── antlib │ └── MISSING.txt └── README.txt └── third_party └── cslib ├── TZ4Net ├── TZ4Net.dll └── LICENSE ├── zlib ├── zlib.x86.dll └── LICENSE ├── log4net └── log4net.dll └── nunit ├── nunit.framework.dll ├── nunit.framework.tests.dll ├── nunit.framework.extensions.dll └── LICENSE /connectors/cs/docs/Item.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/Item.gif -------------------------------------------------------------------------------- /connectors/cs/docs/Index.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/Index.gif -------------------------------------------------------------------------------- /connectors/cs/docs/Search.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/Search.gif -------------------------------------------------------------------------------- /connectors/cs/docs/Collapsed.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/Collapsed.gif -------------------------------------------------------------------------------- /connectors/cs/docs/ExpandAll.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/ExpandAll.bmp -------------------------------------------------------------------------------- /connectors/cs/docs/Expanded.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/Expanded.gif -------------------------------------------------------------------------------- /connectors/cs/docs/Splitter.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/Splitter.gif -------------------------------------------------------------------------------- /connectors/cs/docs/SyncTOC.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/SyncTOC.gif -------------------------------------------------------------------------------- /connectors/cs/docs/icons/CFW.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/icons/CFW.gif -------------------------------------------------------------------------------- /connectors/cs/docs/CloseSearch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/CloseSearch.png -------------------------------------------------------------------------------- /connectors/cs/docs/CollapseAll.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/CollapseAll.bmp -------------------------------------------------------------------------------- /connectors/cs/docs/fti/FTI_100.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/fti/FTI_100.bin -------------------------------------------------------------------------------- /connectors/cs/docs/fti/FTI_101.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/fti/FTI_101.bin -------------------------------------------------------------------------------- /connectors/cs/docs/fti/FTI_102.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/fti/FTI_102.bin -------------------------------------------------------------------------------- /connectors/cs/docs/fti/FTI_103.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/fti/FTI_103.bin -------------------------------------------------------------------------------- /connectors/cs/docs/fti/FTI_104.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/fti/FTI_104.bin -------------------------------------------------------------------------------- /connectors/cs/docs/fti/FTI_105.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/fti/FTI_105.bin -------------------------------------------------------------------------------- /connectors/cs/docs/fti/FTI_107.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/fti/FTI_107.bin -------------------------------------------------------------------------------- /connectors/cs/docs/fti/FTI_108.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/fti/FTI_108.bin -------------------------------------------------------------------------------- /connectors/cs/docs/fti/FTI_109.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/fti/FTI_109.bin -------------------------------------------------------------------------------- /connectors/cs/docs/fti/FTI_110.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/fti/FTI_110.bin -------------------------------------------------------------------------------- /connectors/cs/docs/fti/FTI_111.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/fti/FTI_111.bin -------------------------------------------------------------------------------- /connectors/cs/docs/fti/FTI_112.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/fti/FTI_112.bin -------------------------------------------------------------------------------- /connectors/cs/docs/fti/FTI_113.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/fti/FTI_113.bin -------------------------------------------------------------------------------- /connectors/cs/docs/fti/FTI_114.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/fti/FTI_114.bin -------------------------------------------------------------------------------- /connectors/cs/docs/fti/FTI_115.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/fti/FTI_115.bin -------------------------------------------------------------------------------- /connectors/cs/docs/fti/FTI_116.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/fti/FTI_116.bin -------------------------------------------------------------------------------- /connectors/cs/docs/fti/FTI_117.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/fti/FTI_117.bin -------------------------------------------------------------------------------- /connectors/cs/docs/fti/FTI_118.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/fti/FTI_118.bin -------------------------------------------------------------------------------- /connectors/cs/docs/fti/FTI_119.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/fti/FTI_119.bin -------------------------------------------------------------------------------- /connectors/cs/docs/fti/FTI_120.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/fti/FTI_120.bin -------------------------------------------------------------------------------- /connectors/cs/docs/fti/FTI_121.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/fti/FTI_121.bin -------------------------------------------------------------------------------- /connectors/cs/docs/fti/FTI_122.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/fti/FTI_122.bin -------------------------------------------------------------------------------- /connectors/cs/docs/fti/FTI_95.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/fti/FTI_95.bin -------------------------------------------------------------------------------- /connectors/cs/docs/fti/FTI_97.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/fti/FTI_97.bin -------------------------------------------------------------------------------- /connectors/cs/docs/fti/FTI_98.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/fti/FTI_98.bin -------------------------------------------------------------------------------- /connectors/cs/docs/fti/FTI_99.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/fti/FTI_99.bin -------------------------------------------------------------------------------- /connectors/docs/wiki/features.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/docs/wiki/features.png -------------------------------------------------------------------------------- /connectors/cs/docs/fti/FTI_Files.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/fti/FTI_Files.bin -------------------------------------------------------------------------------- /connectors/cs/docs/icons/Caution.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/icons/Caution.gif -------------------------------------------------------------------------------- /connectors/cs/docs/icons/copycode.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/icons/copycode.gif -------------------------------------------------------------------------------- /connectors/cs/docs/icons/privenum.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/icons/privenum.gif -------------------------------------------------------------------------------- /connectors/cs/docs/icons/protenum.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/icons/protenum.gif -------------------------------------------------------------------------------- /connectors/cs/docs/icons/pubclass.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/icons/pubclass.gif -------------------------------------------------------------------------------- /connectors/cs/docs/icons/pubenum.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/icons/pubenum.gif -------------------------------------------------------------------------------- /connectors/cs/docs/icons/pubevent.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/icons/pubevent.gif -------------------------------------------------------------------------------- /connectors/cs/docs/icons/pubfield.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/icons/pubfield.gif -------------------------------------------------------------------------------- /connectors/cs/docs/icons/security.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/icons/security.gif -------------------------------------------------------------------------------- /connectors/cs/docs/icons/static.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/icons/static.gif -------------------------------------------------------------------------------- /connectors/docs/wiki/comparison.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/docs/wiki/comparison.png -------------------------------------------------------------------------------- /connectors/docs/wiki/sync_service.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/docs/wiki/sync_service.png -------------------------------------------------------------------------------- /connectors/docs/wiki/web_service.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/docs/wiki/web_service.png -------------------------------------------------------------------------------- /connectors/cs/docs/icons/LastChild.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/icons/LastChild.gif -------------------------------------------------------------------------------- /connectors/cs/docs/icons/alert_note.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/icons/alert_note.gif -------------------------------------------------------------------------------- /connectors/cs/docs/icons/expand_all.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/icons/expand_all.gif -------------------------------------------------------------------------------- /connectors/cs/docs/icons/privclass.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/icons/privclass.gif -------------------------------------------------------------------------------- /connectors/cs/docs/icons/privevent.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/icons/privevent.gif -------------------------------------------------------------------------------- /connectors/cs/docs/icons/privfield.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/icons/privfield.gif -------------------------------------------------------------------------------- /connectors/cs/docs/icons/privmethod.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/icons/privmethod.gif -------------------------------------------------------------------------------- /connectors/cs/docs/icons/protclass.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/icons/protclass.gif -------------------------------------------------------------------------------- /connectors/cs/docs/icons/protevent.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/icons/protevent.gif -------------------------------------------------------------------------------- /connectors/cs/docs/icons/protfield.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/icons/protfield.gif -------------------------------------------------------------------------------- /connectors/cs/docs/icons/protfield.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/icons/protfield.png -------------------------------------------------------------------------------- /connectors/cs/docs/icons/protmethod.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/icons/protmethod.gif -------------------------------------------------------------------------------- /connectors/cs/docs/icons/pubmethod.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/icons/pubmethod.gif -------------------------------------------------------------------------------- /connectors/cs/docs/icons/NotLastChild.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/icons/NotLastChild.gif -------------------------------------------------------------------------------- /connectors/cs/docs/icons/alert_caution.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/icons/alert_caution.gif -------------------------------------------------------------------------------- /connectors/cs/docs/icons/collapse_all.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/icons/collapse_all.gif -------------------------------------------------------------------------------- /connectors/cs/docs/icons/privdelegate.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/icons/privdelegate.gif -------------------------------------------------------------------------------- /connectors/cs/docs/icons/privinterface.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/icons/privinterface.gif -------------------------------------------------------------------------------- /connectors/cs/docs/icons/privproperty.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/icons/privproperty.gif -------------------------------------------------------------------------------- /connectors/cs/docs/icons/privstructure.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/icons/privstructure.gif -------------------------------------------------------------------------------- /connectors/cs/docs/icons/protdelegate.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/icons/protdelegate.gif -------------------------------------------------------------------------------- /connectors/cs/docs/icons/protinterface.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/icons/protinterface.gif -------------------------------------------------------------------------------- /connectors/cs/docs/icons/protoperator.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/icons/protoperator.gif -------------------------------------------------------------------------------- /connectors/cs/docs/icons/protproperty.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/icons/protproperty.gif -------------------------------------------------------------------------------- /connectors/cs/docs/icons/protstructure.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/icons/protstructure.gif -------------------------------------------------------------------------------- /connectors/cs/docs/icons/pubdelegate.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/icons/pubdelegate.gif -------------------------------------------------------------------------------- /connectors/cs/docs/icons/pubinterface.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/icons/pubinterface.gif -------------------------------------------------------------------------------- /connectors/cs/docs/icons/puboperator.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/icons/puboperator.gif -------------------------------------------------------------------------------- /connectors/cs/docs/icons/pubproperty.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/icons/pubproperty.gif -------------------------------------------------------------------------------- /connectors/cs/docs/icons/pubstructure.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/icons/pubstructure.gif -------------------------------------------------------------------------------- /connectors/cs/lib/Google.GData.Client.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/lib/Google.GData.Client.dll -------------------------------------------------------------------------------- /connectors/docs/wiki/free_busy_request.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/docs/wiki/free_busy_request.png -------------------------------------------------------------------------------- /connectors/cs/docs/icons/alert_security.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/docs/icons/alert_security.gif -------------------------------------------------------------------------------- /connectors/cs/lib/Google.GData.Calendar.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/lib/Google.GData.Calendar.dll -------------------------------------------------------------------------------- /connectors/java/docs/devguide/devguide.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/java/docs/devguide/devguide.html -------------------------------------------------------------------------------- /connectors/cs/lib/Google.GData.Extensions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/lib/Google.GData.Extensions.dll -------------------------------------------------------------------------------- /connectors/java/docs/api/resources/inherit.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/java/docs/api/resources/inherit.gif -------------------------------------------------------------------------------- /connectors/third_party/cslib/TZ4Net/TZ4Net.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/third_party/cslib/TZ4Net/TZ4Net.dll -------------------------------------------------------------------------------- /connectors/third_party/cslib/zlib/zlib.x86.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/third_party/cslib/zlib/zlib.x86.dll -------------------------------------------------------------------------------- /connectors/cs/lib/Google.GData.AccessControl.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/cs/lib/Google.GData.AccessControl.dll -------------------------------------------------------------------------------- /connectors/third_party/cslib/log4net/log4net.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/third_party/cslib/log4net/log4net.dll -------------------------------------------------------------------------------- /connectors/cs/src/VS2010/GoogleCalendarConnectorWebService/Global.asax: -------------------------------------------------------------------------------- 1 | <%@ Application Codebehind="Global.asax.cs" Inherits="GCalExchangeLookup.Global" Language="C#" %> 2 | -------------------------------------------------------------------------------- /connectors/java/docs/devguide/connector_stages.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/java/docs/devguide/connector_stages.jpg -------------------------------------------------------------------------------- /connectors/java/src/misc_windows/freebusybuilder.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/java/src/misc_windows/freebusybuilder.exe -------------------------------------------------------------------------------- /connectors/third_party/cslib/nunit/nunit.framework.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/third_party/cslib/nunit/nunit.framework.dll -------------------------------------------------------------------------------- /connectors/java/docs/devguide/connector_objectModel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/java/docs/devguide/connector_objectModel.jpg -------------------------------------------------------------------------------- /connectors/java/docs/devguide/connector_messageProcessing.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/java/docs/devguide/connector_messageProcessing.jpg -------------------------------------------------------------------------------- /connectors/third_party/cslib/nunit/nunit.framework.tests.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/third_party/cslib/nunit/nunit.framework.tests.dll -------------------------------------------------------------------------------- /connectors/third_party/cslib/nunit/nunit.framework.extensions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/third_party/cslib/nunit/nunit.framework.extensions.dll -------------------------------------------------------------------------------- /connectors/java/testlib/MISSING.txt: -------------------------------------------------------------------------------- 1 | LIBRARIES USED BY UNIT TESTS 2 | ============================ 3 | Download the following libraries and add their jar files here: 4 | 5 | - JUnit test framework (from junit.org) 6 | - JMock test framework (from jmock.org) 7 | -------------------------------------------------------------------------------- /connectors/java/src/javatests/com/google/calendar/interoperability/connectorplugin/base/ParserTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlearchive/calendar-connectors/HEAD/connectors/java/src/javatests/com/google/calendar/interoperability/connectorplugin/base/ParserTest.java -------------------------------------------------------------------------------- /connectors/cs/src/VS2010/GoogleCalendarConnectorSyncService/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /connectors/cs/src/VS2010/UnitTests/unittest.nunit: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /connectors/cs/src/core/webdav/FindItemUrls.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SELECT "DAV:contentclass", "urn:schemas:calendar:dtstart", "urn:schemas:calendar:dtend" FROM SCOPE('shallow traversal of "{0}"') WHERE "DAV:contentclass" = 'urn:content-classes:{1}' 4 | 5 | -------------------------------------------------------------------------------- /connectors/cs/src/webservice/errors/errors.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | Remote Error Display Disabled 7 | 8 | 9 |

Remote Error Display Disabled

10 | 11 | 12 | -------------------------------------------------------------------------------- /connectors/cs/src/webservice/errors/403.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 403 Forbidden 7 | 8 | 9 |

Forbidden

10 |

Only localhost access is allowed.

11 | 12 | 13 | -------------------------------------------------------------------------------- /connectors/java/docs/api/package-list: -------------------------------------------------------------------------------- 1 | com.google.calendar.interoperability.connectorplugin 2 | com.google.calendar.interoperability.connectorplugin.base 3 | com.google.calendar.interoperability.connectorplugin.base.messages 4 | com.google.calendar.interoperability.connectorplugin.base.messages.util 5 | com.google.calendar.interoperability.connectorplugin.impl.google 6 | com.google.calendar.interoperability.connectorplugin.impl.mock 7 | -------------------------------------------------------------------------------- /connectors/java/lib/MISSING.txt: -------------------------------------------------------------------------------- 1 | LIBRARIES USED BY THE PROGRAM 2 | ============================= 3 | 4 | Download the following libraries and add their jar files here: 5 | 6 | - Google Collections (from http://code.google.com/p/google-collections/) 7 | - GData Java Client (from http://code.google.com/p/gdata-java-client/) 8 | - Anything GData absolutely depends on (nothing at the time of this writing) 9 | 10 | If the latest version comes in an archive (zip-file), just take all the jar files the archive contains and put them here. 11 | -------------------------------------------------------------------------------- /connectors/cs/docs/scripts/CollapsibleSection.js: -------------------------------------------------------------------------------- 1 | 2 | function toggleSection(sectionElement) { 3 | var children = sectionElement.childNodes; 4 | if (children.length != 2) return; 5 | 6 | var image = children[0].getElementsByTagName('IMG')[0]; 7 | var content = children[1]; 8 | 9 | if (content.style['display'] == 'none') { 10 | content.style['display'] = 'block'; 11 | image.src = '../icons/collapse_all.gif'; 12 | } else { 13 | content.style['display'] = 'none'; 14 | image.src= '../icons/expand_all.gif'; 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /connectors/cs/src/VS2010/GoogleCalendarConnectorWebService/ExchangeQuerier.aspx.designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:2.0.50727.832 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace GCalExchangeLookup { 12 | 13 | 14 | /// 15 | /// ExchangeQuerier class. 16 | /// 17 | /// 18 | /// Auto-generated class. 19 | /// 20 | public partial class ExchangeQuerier { 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /connectors/cs/docs/scripts/EventUtilities.js: -------------------------------------------------------------------------------- 1 | 2 | // attach a handler to a particular event on an element 3 | // in a browser-independent way 4 | function registerEventHandler (element, event, handler) { 5 | if (element.attachEvent) { 6 | // MS registration model 7 | element.attachEvent('on' + event, handler); 8 | } else if (element.addEventListener) { 9 | // NN (W4C) regisration model 10 | element.addEventListener(event, handler, false); 11 | } else { 12 | // old regisration model as fall-back 13 | element[event] = handler; 14 | } 15 | } 16 | 17 | // get a delegate that refers to an instance method 18 | function getInstanceDelegate (obj, methodName) { 19 | return( function(e) { 20 | e = e || window.event; 21 | return obj[methodName](e); 22 | } ); 23 | } 24 | -------------------------------------------------------------------------------- /connectors/cs/src/VS2010/GoogleCalendarConnectorWebService/ExchangeQuerier.aspx: -------------------------------------------------------------------------------- 1 | <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ExchangeQuerier.aspx.cs" Inherits="GCalExchangeLookup.ExchangeQuerier" %> 2 | 3 | 4 | 5 | 6 | Free Busy Lookup Response 7 | 8 | 9 | 10 |
11 | 12 |
13 | 16 | 17 | -------------------------------------------------------------------------------- /connectors/java/antlib/MISSING.txt: -------------------------------------------------------------------------------- 1 | Libaries supporting ANT tasks 2 | ============================= 3 | Download the latest version of jsmooth from http://jsmooth.sourceforge.net and place the following items in this folder: 4 | 5 | - jsmoothgen-ant.jar (a custom ant task to create windows executables) 6 | - skeletons (a folder from the same jsmooth archive) 7 | 8 | Both the jar file and the skeletons-folder are part of one single download from the web page. 9 | 10 | WARNING: 11 | THIS IS AN OPTIONAL STEP IN THE BUILD PROCESS AND ONLY REQUIRED IF YOU NEED WINDOWS EXECUTABLES. IT IS INCLUDED FOR 12 | CONVENIENCE ONLY. EVERYTHING IN THE BUILD SCRIPT EXCEPT THE TASKS "jsmoothgen", "exe " AND "dist" WILL WORK JUST AS 13 | WELL. COMMENT OUT THOSE THREE TASKS IF YOU DO NOT INTEND TO USE THEM. 14 | 15 | IF YOU DECIDE TO USE JSMOOTH, PLEASE CHECK THE LICENSE AGREEMENT AT http://jsmooth.sourceforge.net/license.php . 16 | -------------------------------------------------------------------------------- /connectors/cs/src/core/GCalErrorResponse.cs: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2008 Google Inc. All Rights Reserved 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | using System; 16 | using System.Collections.Generic; 17 | using System.Text; 18 | 19 | using Google.GCalExchangeSync.Library.Util; 20 | 21 | namespace Google.GCalExchangeSync.Library 22 | { 23 | } 24 | -------------------------------------------------------------------------------- /connectors/cs/src/core/webdav/LoadFreeBusy.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | SELECT 5 | "http://schemas.microsoft.com/mapi/subject", 6 | "http://schemas.microsoft.com/mapi/proptag/x68501102", 7 | "http://schemas.microsoft.com/mapi/proptag/x684f1003", 8 | "http://schemas.microsoft.com/mapi/proptag/x68541102", 9 | "http://schemas.microsoft.com/mapi/proptag/x68531003", 10 | "http://schemas.microsoft.com/mapi/proptag/x68561102", 11 | "http://schemas.microsoft.com/mapi/proptag/x68551003", 12 | "http://schemas.microsoft.com/mapi/proptag/x68521102", 13 | "http://schemas.microsoft.com/mapi/proptag/x68511003", 14 | "http://schemas.microsoft.com/mapi/proptag/x68470003", 15 | "http://schemas.microsoft.com/mapi/proptag/x68480003", 16 | "http://schemas.microsoft.com/mapi/proptag/x68680040" 17 | FROM "{0}" 18 | WHERE "http://schemas.microsoft.com/mapi/subject" = '{1}' 19 | 20 | -------------------------------------------------------------------------------- /connectors/java/src/java/com/google/calendar/interoperability/connectorplugin/base/messages/NoteCommand.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 Google Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.google.calendar.interoperability.connectorplugin.base.messages; 17 | 18 | 19 | /** 20 | * A note message 21 | */ 22 | public final class NoteCommand extends GwCommand { 23 | 24 | public NoteCommand(String headerName, String headerContent) { 25 | super(headerName, headerContent); 26 | } 27 | 28 | } -------------------------------------------------------------------------------- /connectors/java/src/java/com/google/calendar/interoperability/connectorplugin/base/messages/TaskCommand.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 Google Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.google.calendar.interoperability.connectorplugin.base.messages; 17 | 18 | 19 | /** 20 | * A task message 21 | */ 22 | public final class TaskCommand extends GwCommand { 23 | 24 | public TaskCommand(String headerName, String headerContent) { 25 | super(headerName, headerContent); 26 | } 27 | 28 | } -------------------------------------------------------------------------------- /connectors/java/src/java/com/google/calendar/interoperability/connectorplugin/base/messages/MailCommand.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 Google Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.google.calendar.interoperability.connectorplugin.base.messages; 17 | 18 | 19 | /** 20 | * Mail command 21 | */ 22 | public final class MailCommand extends GwCommand { 23 | 24 | 25 | 26 | public MailCommand(String headerName, String headerContent) { 27 | super(headerName, headerContent); 28 | } 29 | 30 | } -------------------------------------------------------------------------------- /connectors/java/src/java/com/google/calendar/interoperability/connectorplugin/base/messages/PhoneCommand.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 Google Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.google.calendar.interoperability.connectorplugin.base.messages; 17 | 18 | 19 | /** 20 | * A phone message 21 | */ 22 | public final class PhoneCommand extends GwCommand { 23 | 24 | public PhoneCommand(String headerName, String headerContent) { 25 | super(headerName, headerContent); 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /connectors/java/src/java/com/google/calendar/interoperability/connectorplugin/base/messages/AdminCommand.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 Google Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.google.calendar.interoperability.connectorplugin.base.messages; 17 | 18 | 19 | /** 20 | * A directory service message 21 | */ 22 | public final class AdminCommand extends GwCommand { 23 | 24 | public AdminCommand(String headerName, String headerContent) { 25 | super(headerName, headerContent); 26 | } 27 | 28 | } -------------------------------------------------------------------------------- /connectors/java/src/java/com/google/calendar/interoperability/connectorplugin/base/messages/AppointmentCommand.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 Google Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.google.calendar.interoperability.connectorplugin.base.messages; 17 | 18 | 19 | /** 20 | * An appointment message 21 | */ 22 | public final class AppointmentCommand extends GwCommand { 23 | 24 | public AppointmentCommand(String headerName, String headerContent) { 25 | super(headerName, headerContent); 26 | } 27 | 28 | } -------------------------------------------------------------------------------- /connectors/java/src/java/com/google/calendar/interoperability/connectorplugin/base/messages/SearchCommand.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 Google Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.google.calendar.interoperability.connectorplugin.base.messages; 17 | 18 | 19 | /** 20 | * A busy search request command 21 | */ 22 | public final class SearchCommand extends GwCommand { 23 | 24 | public SearchCommand(String headerName, String headerContent) { 25 | super(headerName, headerContent); 26 | } 27 | 28 | } 29 | 30 | -------------------------------------------------------------------------------- /connectors/java/src/java/com/google/calendar/interoperability/connectorplugin/base/messages/PassThroughCommand.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 Google Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.google.calendar.interoperability.connectorplugin.base.messages; 17 | 18 | 19 | /** 20 | * A message going to another groupwise domain 21 | */ 22 | public final class PassThroughCommand extends GwCommand { 23 | 24 | public PassThroughCommand(String headerName, String headerContent) { 25 | super(headerName, headerContent); 26 | } 27 | 28 | } -------------------------------------------------------------------------------- /connectors/java/src/java/com/google/calendar/interoperability/connectorplugin/base/messages/util/DsGroup.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 Google Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.google.calendar.interoperability.connectorplugin.base.messages.util; 17 | 18 | /** 19 | * A Novell groupwise DS-Group data structure. It is unknown. 20 | */ 21 | public class DsGroup { 22 | public DsGroup() { 23 | // Empty Constructor 24 | } 25 | 26 | @Override 27 | public String toString() { 28 | return "DS-GROUP= \n ;"; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /connectors/java/src/java/com/google/calendar/interoperability/connectorplugin/base/messages/util/DsResource.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 Google Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.google.calendar.interoperability.connectorplugin.base.messages.util; 17 | 18 | /** 19 | * A Novell groupwise DS-Resource data structure. It is unknown. 20 | */ 21 | public class DsResource { 22 | public DsResource() { 23 | // Empty Constructor 24 | } 25 | 26 | @Override 27 | public String toString() { 28 | return "DS-Resource= \n ;"; 29 | } 30 | } -------------------------------------------------------------------------------- /connectors/java/src/java/com/google/calendar/interoperability/connectorplugin/base/SelfTestable.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2008 Google Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | package com.google.calendar.interoperability.connectorplugin.base; 16 | 17 | /** 18 | * Classes implementing this interface can run a short self-test to 19 | * see if they are set up correctly. 20 | */ 21 | public interface SelfTestable { 22 | 23 | /** 24 | * Run a self-test and throw an Error or RuntimeException if the test 25 | * fails. 26 | */ 27 | public void selfTest(); 28 | 29 | } 30 | 31 | -------------------------------------------------------------------------------- /connectors/java/src/java/com/google/calendar/interoperability/connectorplugin/base/messages/UnknownCommand.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 Google Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.google.calendar.interoperability.connectorplugin.base.messages; 17 | 18 | 19 | /** 20 | * This object represents a command that the parser has no idea how to 21 | * treat. 22 | */ 23 | public final class UnknownCommand extends GwCommand { 24 | 25 | public UnknownCommand(String headerName, String headerContent) { 26 | super(headerName, headerContent); 27 | } 28 | 29 | } 30 | 31 | -------------------------------------------------------------------------------- /connectors/third_party/cslib/zlib/LICENSE: -------------------------------------------------------------------------------- 1 | (Copied the relevant portion from http://www.zlib.net/zlib_license.html) 2 | 3 | Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler 4 | 5 | This software is provided 'as-is', without any express or implied 6 | warranty. In no event will the authors be held liable for any damages 7 | arising from the use of this software. 8 | 9 | Permission is granted to anyone to use this software for any purpose, 10 | including commercial applications, and to alter it and redistribute it 11 | freely, subject to the following restrictions: 12 | 13 | 1. The origin of this software must not be misrepresented; you must not 14 | claim that you wrote the original software. If you use this software 15 | in a product, an acknowledgment in the product documentation would be 16 | appreciated but is not required. 17 | 2. Altered source versions must be plainly marked as such, and must not be 18 | misrepresented as being the original software. 19 | 3. This notice may not be removed or altered from any source distribution. 20 | 21 | Jean-loup Gailly Mark Adler 22 | jloup@gzip.org madler@alumni.caltech.edu 23 | -------------------------------------------------------------------------------- /connectors/java/src/java/com/google/calendar/interoperability/connectorplugin/base/PrintFunction.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 Google Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.google.calendar.interoperability.connectorplugin.base; 17 | 18 | import com.google.common.base.Function; 19 | 20 | /** 21 | * Simple function for basic tests: prints any incoming object 22 | * out to System.out and returns null 23 | */ 24 | public class PrintFunction implements Function { 25 | 26 | public T apply(S from) { 27 | System.out.println(from); 28 | return null; 29 | } 30 | 31 | } 32 | 33 | -------------------------------------------------------------------------------- /connectors/cs/docs/scripts/LanguageFilter.js: -------------------------------------------------------------------------------- 1 | 2 | function LanguageFilterController() { 3 | this.tabCollections = new Array(); 4 | this.blockCollections = new Array(); 5 | this.tabCollectionIds = new Array(); 6 | this.blockCollectionIds = new Array(); 7 | } 8 | 9 | LanguageFilterController.prototype.registerTabbedArea = function(tabCollection, blockCollection, tabCollectionId, blockCollectionId) { 10 | this.tabCollections.push(tabCollection); 11 | this.blockCollections.push(blockCollection); 12 | this.tabCollectionIds.push(tabCollectionId); 13 | this.blockCollectionIds.push(blockCollectionId); 14 | } 15 | 16 | LanguageFilterController.prototype.switchLanguage = function(languageId) { 17 | for(var i=0; i sink = new NullSink(); 29 | sink.accept("Hello"); 30 | sink.accept("World"); 31 | } 32 | 33 | } 34 | 35 | -------------------------------------------------------------------------------- /connectors/third_party/cslib/nunit/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2002-2013 Charlie Poole 2 | Copyright (c) 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov 3 | Copyright (c) 2000-2002 Philip A. Craig 4 | 5 | This software is provided 'as-is', without any express or implied warranty. 6 | In no event will the authors be held liable for any damages arising from the 7 | use of this software. 8 | 9 | Permission is granted to anyone to use this software for any purpose, including 10 | commercial applications, and to alter it and redistribute it freely, subject to 11 | the following restrictions: 12 | 13 | 1. The origin of this software must not be misrepresented; you must not claim 14 | that you wrote the original software. If you use this software in a product, an 15 | acknowledgment (see the following) in the product documentation is required. 16 | 17 | Portions Copyright (c) 2002-2013 Charlie Poole or Copyright (c) 2002-2004 James 18 | W. Newkirk, Michael C. Two, Alexei A. Vorontsov or Copyright (c) 2000-2002 19 | Philip A. Craig 20 | 21 | 2. Altered source versions must be plainly marked as such, and must not be 22 | misrepresented as being the original software. 23 | 24 | 3. This notice may not be removed or altered from any source distribution. 25 | 26 | -------------------------------------------------------------------------------- /connectors/java/src/javatests/com/google/calendar/interoperability/connectorplugin/base/messages/util/NovellDateTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 Google Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.google.calendar.interoperability.connectorplugin.base.messages.util; 17 | 18 | import com.google.calendar.interoperability.connectorplugin.base.messages.util.NovellDate; 19 | 20 | import junit.framework.TestCase; 21 | 22 | /** 23 | * Test the novell date class 24 | */ 25 | public class NovellDateTest extends TestCase { 26 | 27 | // check bad format 28 | public void testEmptySet() { 29 | NovellDate d = new NovellDate(); 30 | assertFalse(d.set("")); 31 | 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /connectors/third_party/cslib/TZ4Net/LICENSE: -------------------------------------------------------------------------------- 1 | For files date.c and strftime.c: 2 | /* 3 | ** Copyright (c) 1989 The Regents of the University of California. 4 | ** All rights reserved. 5 | ** 6 | ** Redistribution and use in source and binary forms are permitted 7 | ** provided that the above copyright notice and this paragraph are 8 | ** duplicated in all such forms and that any documentation, 9 | ** advertising materials, and other materials related to such 10 | ** distribution and use acknowledge that the software was developed 11 | ** by the University of California, Berkeley. The name of the 12 | ** University may not be used to endorse or promote products derived 13 | ** from this software without specific prior written permission. 14 | ** THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR 15 | ** IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED 16 | ** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 17 | */ 18 | 19 | 20 | For all other files: 21 | "This file is in the public domain, so clarified as of 2006-07-17 by 22 | Arthur David Olson." 23 | 24 | (Dates vary by file. Arthur David Olson is the maintainer of the 25 | public package. All public domain files contain the above notice in 26 | lieu of a copy right notice.) 27 | -------------------------------------------------------------------------------- /connectors/cs/src/VS2010/GoogleCalendarConnectorSyncService/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.34209 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace GoogleCalendarSyncService.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /connectors/java/docs/api/stylesheet.css: -------------------------------------------------------------------------------- 1 | /* Javadoc style sheet */ 2 | 3 | /* Define colors, fonts and other style attributes here to override the defaults */ 4 | 5 | /* Page background color */ 6 | body { background-color: #FFFFFF } 7 | 8 | /* Headings */ 9 | h1 { font-size: 145% } 10 | 11 | /* Table colors */ 12 | .TableHeadingColor { background: #CCCCFF } /* Dark mauve */ 13 | .TableSubHeadingColor { background: #EEEEFF } /* Light mauve */ 14 | .TableRowColor { background: #FFFFFF } /* White */ 15 | 16 | /* Font used in left-hand frame lists */ 17 | .FrameTitleFont { font-size: 100%; font-family: Helvetica, Arial, sans-serif } 18 | .FrameHeadingFont { font-size: 90%; font-family: Helvetica, Arial, sans-serif } 19 | .FrameItemFont { font-size: 90%; font-family: Helvetica, Arial, sans-serif } 20 | 21 | /* Navigation bar fonts and colors */ 22 | .NavBarCell1 { background-color:#EEEEFF;} /* Light mauve */ 23 | .NavBarCell1Rev { background-color:#00008B;} /* Dark Blue */ 24 | .NavBarFont1 { font-family: Arial, Helvetica, sans-serif; color:#000000;} 25 | .NavBarFont1Rev { font-family: Arial, Helvetica, sans-serif; color:#FFFFFF;} 26 | 27 | .NavBarCell2 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF;} 28 | .NavBarCell3 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF;} 29 | 30 | -------------------------------------------------------------------------------- /connectors/cs/src/core/webdav/FindAppointments.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | SELECT 5 | "DAV:contentclass", 6 | "DAV:creationdate", 7 | "DAV:comment", 8 | "urn:schemas:calendar:dtstart", 9 | "urn:schemas:calendar:dtend", 10 | "urn:schemas:calendar:alldayevent", 11 | "urn:schemas:calendar:busystatus", 12 | "urn:schemas:calendar:instancetype", 13 | "urn:schemas:calendar:busystatus", 14 | "urn:schemas:calendar:instancetype", 15 | "urn:schemas:calendar:location", 16 | "urn:schemas:calendar:meetingstatus", 17 | "urn:schemas:calendar:organizer", 18 | "urn:schemas:mailheader:subject", 19 | "http://schemas.microsoft.com/mapi/proptag/x1000001e", 20 | "http://schemas.microsoft.com/mapi/id/{{00062008-0000-0000-C000-000000000046}}/0x8506", 21 | "http://schemas.microsoft.com/mapi/id/{{00062002-0000-0000-C000-000000000046}}/0x8218" 22 | FROM 23 | SCOPE('shallow traversal of "{0}"') 24 | WHERE 25 | ("DAV:contentclass" = 'urn:content-classes:appointment') AND 26 | (("urn:schemas:calendar:dtstart" >= '{1}' AND 27 | "urn:schemas:calendar:dtstart" <= '{2}') OR 28 | ("urn:schemas:calendar:dtend" >= '{1}' AND 29 | "urn:schemas:calendar:dtend" <= '{2}')) 30 | 31 | 32 | -------------------------------------------------------------------------------- /connectors/java/docs/api/com/google/calendar/interoperability/connectorplugin/impl/mock/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | com.google.calendar.interoperability.connectorplugin.impl.mock 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | com.google.calendar.interoperability.connectorplugin.impl.mock 20 | 21 | 22 | 27 | 28 |
23 | Classes  24 | 25 |
26 | MockInfrastructure
29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /connectors/java/docs/api/com/google/calendar/interoperability/connectorplugin/impl/google/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | com.google.calendar.interoperability.connectorplugin.impl.google 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | com.google.calendar.interoperability.connectorplugin.impl.google 20 | 21 | 22 | 27 | 28 |
23 | Classes  24 | 25 |
26 | GDataConnector
29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /connectors/cs/src/core/webdav/CreateAppointment.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IPM.Appointment 6 | {0} 7 | {1} 8 | {2} 9 | {3} 10 | {4} 11 | {12} 12 | {5} 13 | {6} 14 | {7} 15 | {8} 16 | {9} 17 | {10} 18 | {11} 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /connectors/java/docs/api/com/google/calendar/interoperability/connectorplugin/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | com.google.calendar.interoperability.connectorplugin 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | com.google.calendar.interoperability.connectorplugin 20 | 21 | 22 | 29 | 30 |
23 | Classes  24 | 25 |
26 | Main 27 |
28 | SelfTest
31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /connectors/cs/docs/scripts/StyleUtilities.js: -------------------------------------------------------------------------------- 1 | 2 | function getStyleDictionary() { 3 | 4 | var dictionary = new Array(); 5 | 6 | // iterate through stylesheets 7 | var sheets = document.styleSheets; 8 | for(var i=0; i 2 | 3 | registry 4 | javahome 5 | jrepath 6 | jdkpath 7 | exepath 8 | jview 9 | 10 | ${EXECUTABLEPATH} 11 | true 12 | SelfTest.exe 13 | 67108864 14 | google-calendar-connector-complete.jar 15 | 16 | config 17 | config.txt 18 | 19 | com.google.calendar.interoperability.connectorplugin.SelfTest 20 | 134217728 21 | 22 | 1.6 23 | Console Wrapper 24 | 25 | Message 26 | This program needs Java to run. Please download it at http://www.java.com/en/download 27 | 28 | 29 | PressKey 30 | 0 31 | 32 | 33 | Debug 34 | 1 35 | 36 | 37 | -------------------------------------------------------------------------------- /connectors/cs/docs/scripts/SplitScreen.js: -------------------------------------------------------------------------------- 1 | 2 | function SplitScreen (nonScrollingRegionId, scrollingRegionId) { 3 | 4 | // store references to the two regions 5 | this.nonScrollingRegion = document.getElementById(nonScrollingRegionId); 6 | this.scrollingRegion = document.getElementById(scrollingRegionId); 7 | 8 | // set the position model for each region 9 | this.nonScrollingRegion.style.position = "fixed"; 10 | this.scrollingRegion.style.position = "absolute"; 11 | 12 | // fix the size of the scrolling region 13 | this.resize(null); 14 | 15 | // add an event handler to resize the scrolling region when the window is resized 16 | registerEventHandler(window, 'resize', getInstanceDelegate(this, "resize")); 17 | 18 | } 19 | 20 | SplitScreen.prototype.resize = function(e) { 21 | 22 | if(navigator.userAgent.indexOf("Firefox")==-1) 23 | { 24 | var height = document.body.clientHeight - this.nonScrollingRegion.offsetHeight; 25 | 26 | if(height > 0) this.scrollingRegion.style.height = height + "px"; 27 | else this.scrollingRegion.style.height = 0 + "px"; 28 | 29 | this.scrollingRegion.style.width = document.body.clientWidth + "px"; 30 | } 31 | 32 | 33 | // update the vertical offset of the scrolling region to account for the height of the non-scrolling region 34 | this.scrollingRegion.style.top = this.nonScrollingRegion.offsetHeight + "px"; 35 | } 36 | -------------------------------------------------------------------------------- /connectors/cs/src/FreeBusyBuilder/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("Google Calendar Connector Plug-in Free Busy Builder")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("Google")] 12 | [assembly: AssemblyProduct("Google Calendar Connector Plug-in")] 13 | [assembly: AssemblyCopyright("Copyright © Google 2008")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("9abbaefe-4bea-4b6c-bd75-dba1a7e54e2a")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | [assembly: AssemblyVersion("1.2.0.0")] 33 | [assembly: AssemblyFileVersion("1.2.0.0")] 34 | -------------------------------------------------------------------------------- /connectors/java/src/java/com/google/calendar/interoperability/connectorplugin/base/GarbageCollector.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 Google Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.google.calendar.interoperability.connectorplugin.base; 17 | 18 | import com.google.calendar.interoperability.connectorplugin.base.messages.GwCommand; 19 | import com.google.common.base.Function; 20 | 21 | import static com.google.calendar.interoperability.connectorplugin.base.GwIo.FOLDER.HEADERS_IN; 22 | 23 | /** 24 | * Function that cleans up objects from the in-folder that belong to 25 | * previously handled messages 26 | */ 27 | public class GarbageCollector implements Function { 28 | 29 | private GwIo io; 30 | 31 | public GarbageCollector(GwIo io) { 32 | this.io = io; 33 | } 34 | 35 | public Object apply(GwCommand from) { 36 | io.delete(HEADERS_IN, from.getHeaderName()); 37 | return null; 38 | } 39 | 40 | } 41 | 42 | -------------------------------------------------------------------------------- /connectors/java/src/java/com/google/calendar/interoperability/connectorplugin/base/NullSink.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 Google Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.google.calendar.interoperability.connectorplugin.base; 17 | 18 | import com.google.common.base.Nullable; 19 | 20 | /** 21 | * A class that can be used as an endpoint of a SEDA queue 22 | * (simply discards anything added). 23 | */ 24 | public final class NullSink implements Sink { 25 | 26 | public void accept(S t) { 27 | // Nothing to do; the sink just discards the element 28 | } 29 | 30 | public S checkOut() { 31 | throw new UnsupportedOperationException(); 32 | } 33 | 34 | public void reportFailure(S processedObject, @Nullable Throwable t) { 35 | throw new UnsupportedOperationException(); 36 | } 37 | 38 | public void reportSuccess(S processedObject) { 39 | throw new UnsupportedOperationException(); 40 | } 41 | 42 | } 43 | 44 | -------------------------------------------------------------------------------- /connectors/java/src/javatests/com/google/calendar/interoperability/connectorplugin/impl/mock/MockUserTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 Google Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.google.calendar.interoperability.connectorplugin.impl.mock; 17 | 18 | import com.google.calendar.interoperability.connectorplugin.impl.mock.MockDomain; 19 | import com.google.calendar.interoperability.connectorplugin.impl.mock.MockUser; 20 | 21 | import junit.framework.TestCase; 22 | 23 | /** 24 | * Tests for the mock domain 25 | */ 26 | public class MockUserTest extends TestCase { 27 | 28 | private MockUser user; 29 | 30 | @Override 31 | public void setUp() { 32 | user = new MockUser("joe"); 33 | } 34 | 35 | public void testBasicSetup() { 36 | assertNull(user.getDomain()); 37 | assertEquals("joe", user.getObjectName()); 38 | assertNotNull(user.getCalendar()); 39 | user = new MockUser(new MockDomain("google.com"), "joe"); 40 | } 41 | } 42 | 43 | -------------------------------------------------------------------------------- /connectors/cs/src/unittests/core/webdav/responses/FreeBusyPublicFolderResponse.xml: -------------------------------------------------------------------------------- 1 | http://localhost/public/NON_IPM_SUBTREE/SCHEDULE%2B%20FREE%20BUSY/EX:_xF8FF_o=GooLab_xF8FF_ou=First%20Administrative%20Group/USER-_xF8FF_cn=Recipients_xF8FF_cn=phoney.EMLHTTP/1.1 200 OKUSER-/CN=RECIPIENTS/CN=PHONEYDj0sPYY9pD36QRhCEkgwSNRY8lgyZFBk5mReZdiQ9pBukYyR2qz4rKytyq0=ugnYCYwKQAs=321243212932130Dj0sPYY9pD36QRhCEkgwSNRY8lgyZFBk5mReZdiQ9pBukYyR2qz4rKytyq0=ugnYCYwKQAs=3212432129321303212432129321303212432129321302140161602141472002007-12-30T05:19:07.423Z -------------------------------------------------------------------------------- /connectors/java/src/javatests/com/google/calendar/interoperability/connectorplugin/base/messages/util/AddressTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 Google Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.google.calendar.interoperability.connectorplugin.base.messages.util; 17 | 18 | import com.google.calendar.interoperability.connectorplugin.base.messages.util.Address; 19 | 20 | import junit.framework.TestCase; 21 | 22 | /** 23 | * Test class for Novell groupwise address 24 | */ 25 | public class AddressTest extends TestCase { 26 | 27 | public void testGets() { 28 | Address address = new Address("a", "b", "c", "d", null); 29 | 30 | assertEquals("a", address.getWPD()); 31 | assertEquals("b", address.getWPPO()); 32 | assertEquals("c", address.getWPU()); 33 | assertEquals("d", address.getCDBA()); 34 | assertEquals( 35 | " WPD = a;\n" + 36 | " WPPO = b;\n" + 37 | " WPU = c;\n" + 38 | " CDBA = d;", address.toString()); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /connectors/java/src/java/com/google/calendar/interoperability/connectorplugin/base/Tuple.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 Google Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.google.calendar.interoperability.connectorplugin.base; 17 | 18 | /** 19 | * A pair of two elements of the same kind. This is a very simple 20 | * container -- it does not do toString, comparison or hashcode 21 | * correctly. Do not use it as key in collections. 22 | */ 23 | public class Tuple { 24 | 25 | public final T first, second; 26 | 27 | public Tuple(T firstElement, T secondElement) { 28 | this.first = firstElement; 29 | this.second = secondElement; 30 | } 31 | 32 | public T getFirst() { 33 | return first; 34 | } 35 | 36 | public T getSecond() { 37 | return second; 38 | } 39 | 40 | /** 41 | * Factory-method, saves some typing compared to contructor call. 42 | */ 43 | public static Tuple of(T first, T second) { 44 | return new Tuple(first, second); 45 | } 46 | } 47 | 48 | -------------------------------------------------------------------------------- /connectors/java/docs/api/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Generated Documentation (Untitled) 8 | 9 | 20 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | <H2> 31 | Frame Alert</H2> 32 | 33 | <P> 34 | This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. 35 | <BR> 36 | Link to<A HREF="overview-summary.html">Non-frame version.</A> 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /connectors/java/src/javatests/com/google/calendar/interoperability/connectorplugin/base/messages/GetDirectoryResponseTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 Google Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.google.calendar.interoperability.connectorplugin.base.messages; 17 | 18 | import com.google.calendar.interoperability.connectorplugin.base.messages.AdminCommand; 19 | import com.google.calendar.interoperability.connectorplugin.base.messages.GetDirectoryResponse; 20 | import com.google.calendar.interoperability.connectorplugin.base.messages.util.DsUser; 21 | 22 | import junit.framework.TestCase; 23 | 24 | /** 25 | * basic test for GetDirectoryResponse 26 | */ 27 | public class GetDirectoryResponseTest extends TestCase { 28 | 29 | public void testClassDoesNotCrashEasily() { 30 | GetDirectoryResponse response = 31 | new GetDirectoryResponse(new AdminCommand("", "")); 32 | response.renderResponse(); 33 | response.addUser(new DsUser()); 34 | response.renderResponse(); 35 | } 36 | 37 | } 38 | 39 | -------------------------------------------------------------------------------- /connectors/java/src/misc_windows/uninstall.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | rem Copyright (c) 2007 Google Inc. 3 | rem 4 | rem Licensed under the Apache License, Version 2.0 (the "License"); 5 | rem you may not use this file except in compliance with the License. 6 | rem You may obtain a copy of the License at 7 | rem 8 | rem http://www.apache.org/licenses/LICENSE-2.0 9 | rem 10 | rem Unless required by applicable law or agreed to in writing, software 11 | rem distributed under the License is distributed on an "AS IS" BASIS, 12 | rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | rem See the License for the specific language governing permissions and 14 | rem limitations under the License. 15 | rem 16 | 17 | rem Does the service executable exist? 18 | rem ================================== 19 | :CONFIGEXISTS 20 | if exist GoogleCalendarConnector_plugin.exe goto SERVICEEXISTS 21 | echo GoogleCalendarConnector_plugin.exe not found! 22 | goto EXIT 23 | 24 | rem Uninstall the current service 25 | rem ============================= 26 | :SERVICEEXISTS 27 | echo UNINSTALLING SERVICE... 28 | net stop GoogleCalendarConnectorPlugIn 29 | GoogleCalendarConnector_plugin.exe uninstall 30 | if not errorlevel 1 goto UNINSTALLWORKED 31 | echo ... DONE 32 | echo COULD NOT UNINSTALL SERVICE!!! 33 | echo PLEASE READ THE SCREEN OUTPUT FOR FURTHER INFORMATION 34 | goto EXIT 35 | 36 | :UNINSTALLWORKED 37 | rem Done :-) 38 | rem ======== 39 | echo ...DONE 40 | echo * 41 | echo ********************** 42 | echo * Uninstall complete * 43 | echo ********************** 44 | echo * 45 | :EXIT 46 | pause 47 | -------------------------------------------------------------------------------- /connectors/cs/src/service/Program.cs: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2008 Google Inc. All Rights Reserved 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | using System.Collections.Generic; 16 | using System.ServiceProcess; 17 | using System.Text; 18 | 19 | namespace Google.GCalExchangeSync.Service 20 | { 21 | static class Program 22 | { 23 | /// 24 | /// The main entry point for the application. 25 | /// 26 | static void Main() 27 | { 28 | ServiceBase[] ServicesToRun; 29 | 30 | // More than one user Service may run within the same process. To add 31 | // another service to this process, change the following line to 32 | // create a second service object. For example, 33 | // 34 | // ServicesToRun = new ServiceBase[] {new Service1(), new MySecondUserService()}; 35 | // 36 | ServicesToRun = new ServiceBase[] { new GCalExchangeSyncService() }; 37 | 38 | ServiceBase.Run(ServicesToRun); 39 | } 40 | } 41 | } -------------------------------------------------------------------------------- /connectors/cs/src/VS2010/GoogleCalendarConnectorWebService/Global.asax.cs: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2008 Google Inc. All Rights Reserved 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | using System; 16 | using System.Data; 17 | using System.Configuration; 18 | using System.Collections; 19 | using System.Web; 20 | using System.Web.Security; 21 | using System.Web.SessionState; 22 | 23 | using log4net; 24 | 25 | namespace GCalExchangeLookup 26 | { 27 | public class Global : System.Web.HttpApplication 28 | { 29 | protected static readonly log4net.ILog _log = 30 | log4net.LogManager.GetLogger(typeof(ExchangeQuerier)); 31 | 32 | protected void Application_Start(object sender, EventArgs e) 33 | { 34 | } 35 | 36 | protected void Application_End(object sender, EventArgs e) 37 | { 38 | } 39 | 40 | protected void Application_Error(object sender, EventArgs e) 41 | { 42 | Exception ex = Server.GetLastError().GetBaseException(); 43 | _log.Error(ex.Message, ex); 44 | } 45 | } 46 | } -------------------------------------------------------------------------------- /connectors/java/src/javatests/com/google/calendar/interoperability/connectorplugin/base/SimpleSinkTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 Google Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.google.calendar.interoperability.connectorplugin.base; 17 | 18 | import com.google.calendar.interoperability.connectorplugin.base.SimpleSink; 19 | 20 | import junit.framework.TestCase; 21 | 22 | /** 23 | * Unit tests for the simple sink 24 | */ 25 | public class SimpleSinkTest extends TestCase { 26 | 27 | public void testClass() { 28 | SimpleSink sink = new SimpleSink(); 29 | 30 | // There is no race condition here -- thanks to the BlockingQueue, the 31 | // penalty can be as high as we like. However, setting it to a single 32 | // millisecond makes this test run much faster :-) 33 | sink.setPenaltyInMilliseconds(1); 34 | sink.accept("Hello"); 35 | sink.accept("World"); 36 | assertEquals("Hello", sink.checkOut()); 37 | assertEquals("World", sink.checkOut()); 38 | sink.reportSuccess("Hello"); 39 | sink.reportFailure("World", null); 40 | assertEquals("World", sink.checkOut()); 41 | } 42 | 43 | } 44 | 45 | -------------------------------------------------------------------------------- /connectors/java/src/java/com/google/calendar/interoperability/connectorplugin/impl/mock/MockUser.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 Google Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.google.calendar.interoperability.connectorplugin.impl.mock; 17 | 18 | import com.google.common.base.Preconditions; 19 | 20 | /** 21 | * Mock datastructure: in-memory user class 22 | */ 23 | class MockUser { 24 | 25 | private MockCalendar calendar; 26 | private MockDomain domain; 27 | private String objectName; 28 | 29 | // Visible for unit testing 30 | MockUser(String objectName) { 31 | Preconditions.checkNotNull(objectName); 32 | this.calendar = new MockCalendar(this); 33 | this.objectName = objectName; 34 | } 35 | 36 | public MockUser(MockDomain domain, String objectName) { 37 | this(objectName); 38 | Preconditions.checkNotNull(domain); 39 | this.domain = domain; 40 | } 41 | 42 | public MockCalendar getCalendar() { 43 | return calendar; 44 | } 45 | 46 | public MockDomain getDomain() { 47 | return domain; 48 | } 49 | 50 | public String getObjectName() { 51 | return objectName; 52 | } 53 | 54 | } 55 | 56 | -------------------------------------------------------------------------------- /connectors/cs/src/core/freebusywriters/IFreeBusyWriter.cs: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2008 Google Inc. All Rights Reserved 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | using System; 16 | 17 | using log4net; 18 | using Google.GData.Calendar; 19 | using Google.GCalExchangeSync.Library.Util; 20 | 21 | namespace Google.GCalExchangeSync.Library 22 | { 23 | /// 24 | /// Interface for a free busy writer to synchronizer events with Exchange 25 | /// 26 | public interface IFreeBusyWriter 27 | { 28 | /// 29 | /// Sync a users events with Exchange 30 | /// 31 | /// The user to synchronize 32 | /// The most recent events from Google Apps 33 | /// An Exchange Gateway to make changes 34 | /// DateTime window to synchronize events for 35 | void SyncUser( 36 | ExchangeUser user, 37 | EventFeed googleAppsFeed, 38 | ExchangeService exchangeGateway, 39 | DateTimeRange window); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /connectors/java/README.txt: -------------------------------------------------------------------------------- 1 | =============================================== 2 | Google Calendar Connector Plugin - Source Files 3 | =============================================== 4 | 5 | From a high level perspective, here is what needs to be done to build the sources: 6 | 7 | 0) Install JDK 6 or higher 8 | ========================== 9 | Check http://java.sun.com for more details. 10 | 11 | 1) Install ANT 12 | ============== 13 | You need a recent version of ANT installed (1.7.0 or higher). If you have ant pre-installed on your machine, you can enter "ant -version" to check the version number. 14 | See http://ant.apache.org/manual/install.html for more details on how to successfully setup ANT. 15 | 16 | 2) Download dependencies 17 | ======================== 18 | This application depends on a couple external libraries and applications. Please read the MISSING.txt in 19 | lib 20 | antlib and 21 | testlib 22 | and place the required files in those directories. Note that the files in antlib are optional, but you will have to delete the "JSmooth"-section from 23 | the build.xml if you choose not to use them. 24 | 25 | 3) Try it out 26 | ============= 27 | The following ant commands should be useful: 28 | 29 | ant compile (same as just running ant) - will compile the sources and place a jar file in the dist subfolder 30 | ant test - will compile and execute the unit tests 31 | ant dist - will build the windows executables and package them with the install/uninstall batchfiles and a sample config.txt 32 | (this OPTIONAL step will even work in a Linux build system, requires JSmooth) 33 | ant doc - will create javadoc files 34 | ant clean - remove all files created by the build script 35 | 36 | 4) For more information 37 | ======================= 38 | Check out the doc folder. Don't forget to also run "ant doc" for creating the javadoc. 39 | -------------------------------------------------------------------------------- /connectors/java/docs/devguide/local_extensions.css: -------------------------------------------------------------------------------- 1 | /* page ID tags from the last version. Are these even used? */ 2 | 3 | /* ---- PAGE ID TAGS ---- */ 4 | 5 | #intro_page #intro_link, 6 | #elements_page #elements_link, 7 | #reference_page #reference_link, 8 | #faq_page #faq_link, 9 | #document_page #document_link, 10 | #includes_page #includes_link 11 | 12 | /* ---- END PAGE ID TAGS --- */ 13 | 14 | /* Extensions from enterprise-specific style conventions */ 15 | #breadcrumbs { 16 | margin-top: 3px; 17 | padding-left: 173px; 18 | } 19 | 20 | /* Extensions I want to add to dev_docs.css */ 21 | .graphic { 22 | font-weight: bold; 23 | font-size: 0.9em; 24 | text-align:left; 25 | /* max-width:550px; */ 26 | border: 1px solid; 27 | padding: 10px; 28 | border-color: gray} 29 | .caption{ 30 | font-weight: bold; 31 | font-size: 0.9em; 32 | text-align:left; 33 | } 34 | 35 | #pagecontent img{ 36 | border:1px solid; 37 | margin: 1em 0 1em 25px; 38 | padding:0; 39 | } 40 | 41 | /* Extensions from smain's copy on the template how-to */ 42 | /* ---- COLOR DEFINITION ---- */ 43 | #doc_title, h1, h2, hr, .sidebox h2, .linkbox a, 44 | 45 | table, td, th, .alert{ 46 | background-color: #e5ecf9; 47 | border-color: #224499; 48 | } 49 | 50 | /* ---- do not change ---- */ 51 | table, td, h2 { 52 | background-color: #fff; 53 | 54 | 55 | } 56 | /* ------------------------- */ 57 | 58 | /* ---- COLORS ---- 59 | 60 | --RED-- 61 | background-color: #efefef; 62 | border-color: #aa0033; 63 | 64 | --YELLOW-- 65 | background-color: #fff4c2; 66 | border-color: #ffcc33; 67 | 68 | --GREEN-- 69 | background-color: #ddf8cc; 70 | border-color: #008000; 71 | 72 | --BLUE-- 73 | background-color: #e5ecf9; 74 | border-color: #224499; 75 | 76 | 77 | ---- END COLORS ---- */ 78 | 79 | 80 | -------------------------------------------------------------------------------- /connectors/java/src/java/com/google/calendar/interoperability/connectorplugin/base/Sink.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 Google Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.google.calendar.interoperability.connectorplugin.base; 17 | 18 | import com.google.common.base.Nullable; 19 | 20 | /** 21 | * Accepts incoming objects and enqueues them for a SEDA stage 22 | * to process. 23 | */ 24 | public interface Sink { 25 | 26 | /** 27 | * Accepts an object for further processing 28 | */ 29 | public void accept(T t); 30 | 31 | /** 32 | * Requests an object to work on from the sink. The sink should mark 33 | * the object as "being processed" and not return it again until either 34 | * reportSuccess or reportFailure were called. Returns null if there 35 | * is currently nothing that could be checked out. A sink may choose to 36 | * block a requesting thread until something becomes available. 37 | */ 38 | public T checkOut(); 39 | 40 | /** 41 | * Reports that an object was processed successfully 42 | */ 43 | public void reportSuccess(T processedObject); 44 | 45 | /** 46 | * Reports that an object could not be processed 47 | */ 48 | public void reportFailure(T processedObject, @Nullable Throwable t); 49 | 50 | } 51 | 52 | -------------------------------------------------------------------------------- /connectors/cs/src/core/webdav/Property.cs: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2008 Google Inc. All Rights Reserved 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | using System; 16 | using System.Collections.Generic; 17 | using System.Text; 18 | 19 | namespace Google.GCalExchangeSync.Library.WebDav 20 | { 21 | /// 22 | /// A WebDAV property 23 | /// 24 | public class Property 25 | { 26 | private string name = string.Empty; 27 | private string nameSpace = string.Empty; 28 | 29 | /// The name of the property 30 | public string Name 31 | { 32 | get { return this.name; } 33 | } 34 | 35 | /// The namespace of the property 36 | public string NameSpace 37 | { 38 | get { return this.nameSpace; } 39 | } 40 | 41 | /// 42 | /// Create a new WebDAV property 43 | /// 44 | /// The property name 45 | /// The property namespace 46 | public Property( string name, string nameSpace ) 47 | { 48 | this.name = name; 49 | this.nameSpace = nameSpace; 50 | } 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /connectors/java/src/javatests/com/google/calendar/interoperability/connectorplugin/base/messages/VoidResponseTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 Google Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.google.calendar.interoperability.connectorplugin.base.messages; 17 | 18 | import com.google.calendar.interoperability.connectorplugin.base.messages.GwCommand; 19 | import com.google.calendar.interoperability.connectorplugin.base.messages.UnknownCommand; 20 | import com.google.calendar.interoperability.connectorplugin.base.messages.VoidResponse; 21 | 22 | import junit.framework.TestCase; 23 | 24 | /** 25 | * Unit test for the VoidResponse class 26 | */ 27 | public class VoidResponseTest extends TestCase { 28 | 29 | private GwCommand command; 30 | private VoidResponse response; 31 | 32 | @Override 33 | public void setUp() { 34 | command = new UnknownCommand("A", "B"); 35 | response = new VoidResponse(command, "reason", "P"); 36 | } 37 | 38 | public void testSuggestedLogFilename() { 39 | assertEquals("P_A", response.suggestLogFilename()); 40 | assertEquals("nonrespond_A", new VoidResponse(command, "reason") 41 | .suggestLogFilename()); 42 | } 43 | 44 | public void testRenderLog() { 45 | assertTrue(response.renderLog().endsWith(String.format("reason%n"))); 46 | } 47 | 48 | } 49 | 50 | -------------------------------------------------------------------------------- /connectors/java/src/java/com/google/calendar/interoperability/connectorplugin/base/messages/util/StatusReport.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 Google Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.google.calendar.interoperability.connectorplugin.base.messages.util; 17 | 18 | /** 19 | * A Novell groupwise Status-Report data structure. It is unknown. 20 | * 21 | */ 22 | public class StatusReport { 23 | 24 | private String action = null; 25 | private NovellDate time = null; 26 | 27 | public StatusReport(String action, NovellDate time) { 28 | this.action = action; 29 | this.time = time; 30 | } 31 | 32 | public StatusReport() { 33 | // Empty Constructor 34 | } 35 | 36 | public void set(String key, String value) { 37 | if ("ACTION".equalsIgnoreCase(key)) { 38 | action = value; 39 | } else if ("TIME".equalsIgnoreCase(key)) { 40 | NovellDate date = new NovellDate(); 41 | date.set(value); 42 | time = date; 43 | } 44 | } 45 | 46 | @Override 47 | public String toString() { 48 | String str = "STATUS-REPORT ="; 49 | if (action != null) { 50 | str = str + " " + action + ";\n"; 51 | } 52 | if (time != null) { 53 | str = str + " " + time.toString() + ";\n"; 54 | } 55 | str = str + " ;"; 56 | 57 | return str; 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /connectors/java/src/javatests/com/google/calendar/interoperability/connectorplugin/impl/mock/MockDomainTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 Google Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.google.calendar.interoperability.connectorplugin.impl.mock; 17 | 18 | import com.google.calendar.interoperability.connectorplugin.impl.mock.MockDomain; 19 | 20 | import junit.framework.TestCase; 21 | 22 | /** 23 | * Tests for the mock domain 24 | */ 25 | public class MockDomainTest extends TestCase { 26 | 27 | private MockDomain domain; 28 | 29 | @Override 30 | public void setUp() { 31 | domain = new MockDomain("google.com"); 32 | assertEquals("google.com", domain.getName()); 33 | } 34 | 35 | public void testCreateUser() { 36 | assertNotNull(domain.createUser("1")); 37 | assertNull(domain.createUser("1")); 38 | assertNotSame(domain.createUser("2"), domain.createUser("3")); 39 | assertEquals(3, domain.countUsers()); 40 | } 41 | 42 | public void testGetUser() { 43 | assertNull(domain.getUser("1")); 44 | assertNotNull(domain.createUser("1")); 45 | assertNotNull(domain.getUser("1")); 46 | } 47 | 48 | public void testPrefill() { 49 | domain.prefillDomain("user", 10); 50 | assertEquals(10, domain.countUsers()); 51 | assertNotNull(domain.getUser("user0")); 52 | } 53 | } 54 | 55 | -------------------------------------------------------------------------------- /connectors/cs/src/core/scheduling/SentinelFactory.cs: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2008 Google Inc. All Rights Reserved 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | using System; 16 | using System.Collections.Generic; 17 | using System.Text; 18 | using log4net; 19 | 20 | namespace Google.GCalExchangeSync.Library.Scheduling 21 | { 22 | /// 23 | /// Factory for creating a sentinel 24 | /// 25 | public class SentinelFactory 26 | { 27 | private static readonly ILog _log = LogManager.GetLogger(typeof(SentinelFactory)); 28 | 29 | private int _frequency; 30 | private Type _workerType; 31 | 32 | /// 33 | /// Create a SentinelFactory 34 | /// 35 | /// Interval in seconds to execute task 36 | /// Type of worker to execute 37 | public SentinelFactory(int frequency, Type workerType) 38 | { 39 | _frequency = frequency; 40 | _workerType = workerType; 41 | } 42 | 43 | /// 44 | /// Start the sentinel 45 | /// 46 | public void StartSentinel() 47 | { 48 | Sentinel s = new Sentinel(_frequency, _workerType); 49 | s.Start(); 50 | } 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /connectors/cs/src/core/freebusywriters/FreeBusyWriterFactory.cs: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2008 Google Inc. All Rights Reserved 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | using System; 16 | using System.Collections.Generic; 17 | using System.Text; 18 | using Google.GCalExchangeSync.Library; 19 | 20 | namespace Google.GCalExchangeSync.Library 21 | { 22 | /// 23 | /// Factory for a FreeBusyWriter 24 | /// 25 | public class FreeBusyWriterFactory 26 | { 27 | /// 28 | /// Get a free busy writer for the set of users 29 | /// 30 | /// List of the users to write f/b info for 31 | /// A FreeBusyWriter 32 | public static IFreeBusyWriter GetWriter(List users) 33 | { 34 | IFreeBusyWriter writer = null; 35 | 36 | switch ( ConfigCache.FreeBusyWriter.ToUpperInvariant() ) 37 | { 38 | default: 39 | case "SCHEDULEPLUS": 40 | writer = new SchedulePlusFreeBusyWriter(); 41 | break; 42 | case "APPOINTMENT": 43 | writer = new AppointmentWriter(); 44 | break; 45 | } 46 | 47 | return writer; 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /connectors/cs/src/webservice/WebAppConfigureAction.Designer.cs: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2008 Google Inc. All Rights Reserved 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | namespace Google.GCalExchangeSync.Web 16 | { 17 | partial class WebAppConfigureAction 18 | { 19 | /// 20 | /// Required designer variable. 21 | /// 22 | private System.ComponentModel.IContainer components = null; 23 | 24 | /// 25 | /// Clean up any resources being used. 26 | /// 27 | /// true if managed resources should be disposed; otherwise, false. 28 | protected override void Dispose(bool disposing) 29 | { 30 | if (disposing && (components != null)) 31 | { 32 | components.Dispose(); 33 | } 34 | base.Dispose(disposing); 35 | } 36 | 37 | #region Component Designer generated code 38 | 39 | /// 40 | /// Required method for Designer support - do not modify 41 | /// the contents of this method with the code editor. 42 | /// 43 | private void InitializeComponent() 44 | { 45 | components = new System.ComponentModel.Container(); 46 | } 47 | 48 | #endregion 49 | } 50 | } -------------------------------------------------------------------------------- /connectors/cs/src/core/webdav/MessageProperty.cs: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2008 Google Inc. All Rights Reserved 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | using System; 16 | using System.Collections.Generic; 17 | using System.Text; 18 | 19 | namespace Google.GCalExchangeSync.Library.WebDav 20 | { 21 | /// 22 | /// WebDAV properties for Exchange 23 | /// 24 | public class MessageProperty 25 | { 26 | /// Exchange WebDAV Subject property 27 | public static readonly Property Subject = 28 | new Property("subject", "http://schemas.microsoft.com/mapi/"); 29 | 30 | /// Exchange WebDAV subject prefix (RE:/FW:) property 31 | public static readonly Property SubjectPrefix = 32 | new Property("x003D001F", "http://schemas.microsoft.com/mapi/proptag/"); 33 | 34 | /// Exchange WebDAV Conversation Topic 35 | public static readonly Property ConversationTopic = 36 | new Property("x0070001F", "http://schemas.microsoft.com/mapi/proptag/"); 37 | 38 | /// Exchange WebDAV Normalized Subject property (the subject w/o any prefix) 39 | public static readonly Property NormalizedSubject = 40 | new Property("x0E1D001F", "http://schemas.microsoft.com/mapi/proptag/"); 41 | 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /connectors/java/src/jsmooth/service.jsmooth: -------------------------------------------------------------------------------- 1 | 2 | 3 | registry 4 | javahome 5 | jrepath 6 | jdkpath 7 | exepath 8 | jview 9 | ${EXECUTABLEPATH} 10 | true 11 | GoogleCalendarConnector_plugin.exe 12 | 67108864 13 | google-calendar-connector-complete.jar 14 | 15 | config 16 | config.txt 17 | 18 | com.google.calendar.interoperability.connectorplugin.Main 19 | 134217728 20 | 21 | 1.6 22 | WinService Wrapper 23 | 24 | ServiceName 25 | GoogleCalendarConnectorPlugIn 26 | 27 | 28 | ServiceDisplayName 29 | Google Calendar Connector Plug-in 30 | 31 | 32 | Message 33 | This program needs Java to run. Please download it at http://www.java.com/en/download 34 | 35 | 36 | Autostart 37 | 0 38 | 39 | 40 | Logfile 41 | service.log 42 | 43 | 44 | Interactive 45 | 0 46 | 47 | 48 | JniSmooth 49 | 0 50 | 51 | 52 | Debug 53 | 0 54 | 55 | 56 | -------------------------------------------------------------------------------- /connectors/cs/src/unittests/core/util/FutureTest.cs: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2008 Google Inc. All Rights Reserved 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | using System; 16 | using System.Collections.Generic; 17 | using System.Diagnostics; 18 | using System.DirectoryServices; 19 | using System.IO; 20 | using System.Net; 21 | using System.Text; 22 | using System.Xml; 23 | using System.Xml.XPath; 24 | using System.Reflection; 25 | 26 | using NUnit.Framework; 27 | 28 | namespace Google.GCalExchangeSync.Library.Util 29 | { 30 | [TestFixture] 31 | public class FutureTest : Future 32 | { 33 | private bool state = false; 34 | private string taskName = string.Empty; 35 | 36 | protected override void doTask() 37 | { 38 | while (!state) 39 | { 40 | System.Threading.Thread.Sleep(100); 41 | } 42 | 43 | taskName = System.Threading.Thread.CurrentThread.Name; 44 | } 45 | 46 | protected override string TaskName 47 | { 48 | get { return "FutureTest"; } 49 | } 50 | 51 | [SetUp] 52 | public void Init() 53 | { 54 | } 55 | 56 | [Test] 57 | public void TestFuture() 58 | { 59 | start(); 60 | state = true; 61 | waitForCompletion(); 62 | Assert.AreEqual(TaskName, taskName); 63 | } 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /connectors/java/src/javatests/com/google/calendar/interoperability/connectorplugin/base/messages/ProbeResponseTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 Google Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.google.calendar.interoperability.connectorplugin.base.messages; 17 | 18 | import com.google.calendar.interoperability.connectorplugin.base.messages.AdminCommand; 19 | import com.google.calendar.interoperability.connectorplugin.base.messages.ProbeResponse; 20 | import com.google.calendar.interoperability.connectorplugin.base.messages.util.Address; 21 | import com.google.calendar.interoperability.connectorplugin.base.messages.util.AddressList; 22 | import com.google.calendar.interoperability.connectorplugin.base.messages.util.NovellDate; 23 | 24 | import junit.framework.TestCase; 25 | 26 | /** 27 | * Smoke test for the ProbeResponse 28 | */ 29 | public class ProbeResponseTest extends TestCase { 30 | 31 | public void testSmoketest() { 32 | AdminCommand cmd = new AdminCommand("", ""); 33 | ProbeResponse response = new ProbeResponse(cmd); 34 | Address address = 35 | new Address( 36 | "Fish", "food", "FB-PROBE" , 37 | "Fish.food.FB-PROBE", "badFormat"); 38 | AddressList to = new AddressList(); 39 | to.add(address); 40 | cmd.setTo(to); 41 | cmd.setFrom(address); 42 | cmd.setBeginTime(new NovellDate()); 43 | cmd.setEndTime(new NovellDate()); 44 | assertNotNull(response.renderResponse()); 45 | } 46 | 47 | } 48 | 49 | -------------------------------------------------------------------------------- /connectors/cs/src/service/Settings.cs: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2008 Google Inc. All Rights Reserved 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | namespace GoogleCalendarSyncService.Properties 16 | { 17 | 18 | 19 | // This class allows you to handle specific events on the settings class: 20 | // The SettingChanging event is raised before a setting's value is changed. 21 | // The PropertyChanged event is raised after a setting's value is changed. 22 | // The SettingsLoaded event is raised after the setting values are loaded. 23 | // The SettingsSaving event is raised before the setting values are saved. 24 | internal sealed partial class Settings { 25 | 26 | public Settings() { 27 | // // To add event handlers for saving and changing settings, uncomment the lines below: 28 | // 29 | // this.SettingChanging += this.SettingChangingEventHandler; 30 | // 31 | // this.SettingsSaving += this.SettingsSavingEventHandler; 32 | // 33 | } 34 | 35 | private void SettingChangingEventHandler(object sender, System.Configuration.SettingChangingEventArgs e) { 36 | // Add code to handle the SettingChangingEvent event here. 37 | } 38 | 39 | private void SettingsSavingEventHandler(object sender, System.ComponentModel.CancelEventArgs e) { 40 | // Add code to handle the SettingsSaving event here. 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /connectors/java/src/javatests/com/google/calendar/interoperability/connectorplugin/impl/mock/AdminHandlerTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 Google Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.google.calendar.interoperability.connectorplugin.impl.mock; 17 | 18 | import com.google.calendar.interoperability.connectorplugin.base.messages.AdminCommand; 19 | import com.google.calendar.interoperability.connectorplugin.base.messages.GetDirectoryResponse; 20 | import com.google.calendar.interoperability.connectorplugin.base.messages.GwResponse; 21 | import com.google.calendar.interoperability.connectorplugin.impl.mock.AdminHandler; 22 | import com.google.calendar.interoperability.connectorplugin.impl.mock.MockServer; 23 | 24 | import junit.framework.TestCase; 25 | 26 | /** 27 | * Test for the admin-handler 28 | */ 29 | public class AdminHandlerTest extends TestCase { 30 | 31 | private MockServer server; 32 | private AdminHandler handler; 33 | private AdminCommand cmd; 34 | 35 | @Override 36 | public void setUp() { 37 | server = new MockServer(); 38 | server.prefillServer("X", 1, "E", 1, 2, 1, 1, "g"); 39 | handler = new AdminHandler(server); 40 | cmd = new AdminCommand("A", "B"); 41 | cmd.setGetDirectory(true); 42 | } 43 | 44 | public void testBasicFunctionality() { 45 | GwResponse response = handler.apply(cmd); 46 | assertTrue(response instanceof GetDirectoryResponse); 47 | assertEquals(1, ((GetDirectoryResponse) response).countUsers()); 48 | } 49 | 50 | 51 | } 52 | 53 | -------------------------------------------------------------------------------- /connectors/cs/src/core/scheduling/IWorker.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using System.Threading; 5 | 6 | namespace Google.GCalExchangeSync.Library.Scheduling 7 | { 8 | public abstract class IWorker 9 | { 10 | string _threadID; 11 | 12 | public delegate void OnWorkCompleteEventHandler(); 13 | public delegate void OnWorkStartEventHandler(); 14 | public delegate void OnWorkFailedEventHandler(Exception ex); 15 | 16 | public event OnWorkCompleteEventHandler OnWorkComplete; 17 | public event OnWorkStartEventHandler OnWorkStart; 18 | public event OnWorkFailedEventHandler OnWorkFailed; 19 | 20 | public IWorker() 21 | { 22 | 23 | } 24 | 25 | 26 | void IWorker_OnWorkFailed(Exception ex) 27 | { 28 | throw new Exception("The method or operation is not implemented."); 29 | } 30 | 31 | private void IWorker_OnWorkComplete() 32 | { 33 | 34 | } 35 | 36 | private void IWorker_OnWorkStart() 37 | { 38 | 39 | } 40 | 41 | private void StartWork() 42 | { 43 | 44 | _threadID = String.Format("{0}", Thread.CurrentThread.GetHashCode()); 45 | Sentinel.AddActiveThread(_threadID); 46 | 47 | } 48 | 49 | public void DoWork() 50 | { 51 | 52 | try 53 | { 54 | OnWorkStart(); 55 | this.StartWork(); 56 | this.Execute(); 57 | OnWorkComplete(); 58 | } 59 | catch (Exception ex) 60 | { 61 | OnWorkFailed(ex); 62 | } 63 | finally 64 | { 65 | this.FinishWork(); 66 | } 67 | 68 | } 69 | 70 | protected abstract void Execute(); 71 | 72 | private void FinishWork() 73 | { 74 | Sentinel.RemoveActiveThread(_threadID); 75 | } 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /connectors/java/src/java/com/google/calendar/interoperability/connectorplugin/impl/google/GDataConnector.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 Google Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.google.calendar.interoperability.connectorplugin.impl.google; 17 | 18 | import com.google.calendar.interoperability.connectorplugin.base.CommandHandler; 19 | import com.google.calendar.interoperability.connectorplugin.base.SelfTestable; 20 | import com.google.calendar.interoperability.connectorplugin.base.messages.AdminCommand; 21 | import com.google.calendar.interoperability.connectorplugin.base.messages.SearchCommand; 22 | 23 | /** 24 | * This class sets up a connection to google apps for your domain 25 | * feeds 26 | */ 27 | public class GDataConnector implements SelfTestable { 28 | 29 | private GDataAccessObject dao; 30 | 31 | public GDataConnector(CommandHandler handler) { 32 | dao = new GDataAccessObject(); 33 | dao.setMaxRequestsPerSecond(10); 34 | handler.registerSubhandler(AdminCommand.class, new AdminHandler(dao, null)); 35 | handler.registerSubhandler( 36 | SearchCommand.class, new SearchHandler(dao)); 37 | } 38 | 39 | /** 40 | * Performs a self-check to make sure the connector is configured 41 | * correctly. Throw an exception or error if the evaluation fails 42 | */ 43 | public void selfTest() { 44 | System.out.println("Performing a test user query for domain " + 45 | dao.getDomain()); 46 | if (dao.retrieveAllUsers() == null) { 47 | throw new RuntimeException("Could not retrieve user feed"); 48 | } 49 | } 50 | } 51 | 52 | -------------------------------------------------------------------------------- /connectors/java/src/java/com/google/calendar/interoperability/connectorplugin/base/messages/util/BusyReport.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 Google Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.google.calendar.interoperability.connectorplugin.base.messages.util; 17 | 18 | import com.google.calendar.interoperability.connectorplugin.base.Tuple; 19 | 20 | import java.util.ArrayList; 21 | import java.util.Iterator; 22 | import java.util.List; 23 | 24 | /** 25 | * A Novell groupwise Busy-Report data structure containing a list of 26 | * begin and end times 27 | */ 28 | public class BusyReport { 29 | 30 | List> busyTimes; 31 | 32 | public BusyReport() { 33 | busyTimes = new ArrayList>(); 34 | } 35 | 36 | public void add(NovellDate start, NovellDate end) { 37 | busyTimes.add(Tuple.of(start, end)); 38 | } 39 | 40 | @Override 41 | public String toString() { 42 | String str = "BUSY-REPORT="; 43 | 44 | 45 | Iterator> iterator = busyTimes.iterator(); 46 | if (!iterator.hasNext()) { 47 | return str + "\n" + " ;"; 48 | } 49 | 50 | Tuple pair = iterator.next(); 51 | str = str + "\n" + 52 | " " + pair.first.toString() + ";\n" + 53 | " " + pair.second.toString() + ";"; 54 | 55 | while (iterator.hasNext()) { 56 | pair = iterator.next(); 57 | 58 | str = str + ",\n" + 59 | " " + pair.first.toString() + ";" + "\n" + 60 | " " + pair.second.toString() + ";"; 61 | 62 | } 63 | 64 | return str; 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /connectors/java/src/java/com/google/calendar/interoperability/connectorplugin/base/SimpleStage.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 Google Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.google.calendar.interoperability.connectorplugin.base; 17 | 18 | import com.google.common.base.Function; 19 | import com.google.common.base.Preconditions; 20 | 21 | /** 22 | * A simple stage implementation that uses a bunch of parallel daemon threads 23 | * and assumes they never crash 24 | */ 25 | public class SimpleStage extends Stage { 26 | 27 | private ThreadGroup threadGroup; 28 | 29 | public SimpleStage( 30 | Sink inQueue, 31 | Sink outQueue, 32 | Function processor, 33 | int numberOfThreads, 34 | String threadGroupName) { 35 | super(inQueue, outQueue, processor); 36 | Preconditions.checkNotNull(threadGroupName); 37 | threadGroup = new ThreadGroup(threadGroupName); 38 | threadGroup.setDaemon(true); 39 | for (int i = 0; i < numberOfThreads; i++) { 40 | new Thread(threadGroup, threadGroupName + '@' + i) { 41 | @Override 42 | public void run() { 43 | runForever(); 44 | } 45 | }.start(); 46 | } 47 | } 48 | 49 | /** 50 | * Processes elements in an endless loop until the thread gets 51 | * interruped 52 | */ 53 | private void runForever() { 54 | while (!Thread.interrupted()) { 55 | if (!processSingleElement()) { 56 | try { 57 | Thread.sleep(500); 58 | } catch (InterruptedException e) { 59 | return; 60 | } 61 | } 62 | } 63 | } 64 | 65 | } 66 | 67 | -------------------------------------------------------------------------------- /connectors/java/src/java/com/google/calendar/interoperability/connectorplugin/base/messages/util/AddressList.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 Google Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.google.calendar.interoperability.connectorplugin.base.messages.util; 17 | 18 | 19 | import java.util.Iterator; 20 | import java.util.LinkedHashSet; 21 | import java.util.Set; 22 | 23 | /** 24 | * Set of recipients 25 | */ 26 | public class AddressList { 27 | 28 | private Set
recipients; 29 | 30 | public AddressList() { 31 | recipients = new LinkedHashSet
(); 32 | } 33 | 34 | public AddressList(Set
recipients) { 35 | this.recipients = recipients; 36 | } 37 | 38 | public void add(Address address) { 39 | recipients.add(address); 40 | } 41 | 42 | /** 43 | * Returns the set of addresses. We use a LinkedHashSet to maintain 44 | * order of addresses. 45 | * 46 | * @return A Set of addresses 47 | */ 48 | public Set
getAddresses() { 49 | return recipients; 50 | } 51 | 52 | @Override 53 | public String toString() { 54 | 55 | String addressList = ""; 56 | 57 | int numAddress = recipients.size(); 58 | if (numAddress == 0) { 59 | return addressList; 60 | } 61 | 62 | Iterator
iterator = recipients.iterator(); 63 | if (!iterator.hasNext()) { 64 | return addressList; 65 | } 66 | addressList = iterator.next().toString(); 67 | 68 | while (iterator.hasNext()) { 69 | addressList = addressList + " ,\n" + iterator.next().toString(); 70 | } 71 | return addressList; 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /connectors/cs/src/VS2010/tests/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2008 Google Inc. All Rights Reserved 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | using System.Reflection; 16 | using System.Runtime.CompilerServices; 17 | using System.Runtime.InteropServices; 18 | 19 | // General Information about an assembly is controlled through the following 20 | // set of attributes. Change these attribute values to modify the information 21 | // associated with an assembly. 22 | [assembly: AssemblyTitle("tests")] 23 | [assembly: AssemblyDescription("")] 24 | [assembly: AssemblyConfiguration("")] 25 | [assembly: AssemblyCompany("Google")] 26 | [assembly: AssemblyProduct("tests")] 27 | [assembly: AssemblyCopyright("Copyright © Google 2008")] 28 | [assembly: AssemblyTrademark("")] 29 | [assembly: AssemblyCulture("")] 30 | 31 | // Setting ComVisible to false makes the types in this assembly not visible 32 | // to COM components. If you need to access a type in this assembly from 33 | // COM, set the ComVisible attribute to true on that type. 34 | [assembly: ComVisible(false)] 35 | 36 | // The following GUID is for the ID of the typelib if this project is exposed to COM 37 | [assembly: Guid("a42c2871-0f1a-4c09-8d51-b0e0ebca122f")] 38 | 39 | // Version information for an assembly consists of the following four values: 40 | // 41 | // Major Version 42 | // Minor Version 43 | // Build Number 44 | // Revision 45 | // 46 | // You can specify all the values or you can default the Revision and Build Numbers 47 | // by using the '*' as shown below: 48 | [assembly: AssemblyVersion("1.0.0.0")] 49 | [assembly: AssemblyFileVersion("1.0.0.0")] 50 | -------------------------------------------------------------------------------- /connectors/java/src/java/com/google/calendar/interoperability/connectorplugin/base/Responder.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 Google Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.google.calendar.interoperability.connectorplugin.base; 17 | 18 | import com.google.calendar.interoperability.connectorplugin.base.messages.GwCommand; 19 | import com.google.calendar.interoperability.connectorplugin.base.messages.GwResponse; 20 | import com.google.common.base.Function; 21 | 22 | import static com.google.calendar.interoperability.connectorplugin.base.GwIo.FOLDER.HEADERS_OUT; 23 | import static com.google.calendar.interoperability.connectorplugin.base.GwIo.FOLDER.LOG; 24 | 25 | /** 26 | * This class takes a response object and writes it back into the 27 | * outgoing folder for Exchange 28 | */ 29 | public class Responder implements Function{ 30 | 31 | private GwIo io; 32 | private boolean log; 33 | 34 | public Responder(GwIo io, boolean log) { 35 | this.io = io; 36 | this.log = log; 37 | } 38 | 39 | public GwCommand apply(GwResponse from) { 40 | 41 | // Need to respond? 42 | final String respondToClient = from.renderResponse(); 43 | if (respondToClient != null) { 44 | if (!io.store(HEADERS_OUT, from.suggestFilename(), 45 | respondToClient.getBytes())) { 46 | throw new RuntimeException("Could not write response, I/O problem?"); 47 | } 48 | } 49 | 50 | // Need to log ? 51 | if (log) { 52 | io.store(LOG, from.suggestLogFilename(), 53 | from.renderLog().getBytes()); 54 | } 55 | 56 | // Done :-) 57 | return from.getOriginalCommand(); 58 | } 59 | } 60 | 61 | -------------------------------------------------------------------------------- /connectors/cs/src/VS2010/UnitTests/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2008 Google Inc. All Rights Reserved 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | using System.Reflection; 16 | using System.Runtime.CompilerServices; 17 | using System.Runtime.InteropServices; 18 | 19 | // General Information about an assembly is controlled through the following 20 | // set of attributes. Change these attribute values to modify the information 21 | // associated with an assembly. 22 | [assembly: AssemblyTitle("UnitTests")] 23 | [assembly: AssemblyDescription("")] 24 | [assembly: AssemblyConfiguration("")] 25 | [assembly: AssemblyCompany("Google")] 26 | [assembly: AssemblyProduct("UnitTests")] 27 | [assembly: AssemblyCopyright("Copyright © Google 2008")] 28 | [assembly: AssemblyTrademark("")] 29 | [assembly: AssemblyCulture("")] 30 | 31 | // Setting ComVisible to false makes the types in this assembly not visible 32 | // to COM components. If you need to access a type in this assembly from 33 | // COM, set the ComVisible attribute to true on that type. 34 | [assembly: ComVisible(false)] 35 | 36 | // The following GUID is for the ID of the typelib if this project is exposed to COM 37 | [assembly: Guid("b1aeee60-7641-41e8-8b05-6a17d0de1db9")] 38 | 39 | // Version information for an assembly consists of the following four values: 40 | // 41 | // Major Version 42 | // Minor Version 43 | // Build Number 44 | // Revision 45 | // 46 | // You can specify all the values or you can default the Revision and Build Numbers 47 | // by using the '*' as shown below: 48 | [assembly: AssemblyVersion("1.0.0.0")] 49 | [assembly: AssemblyFileVersion("1.0.0.0")] 50 | -------------------------------------------------------------------------------- /connectors/java/src/java/com/google/calendar/interoperability/connectorplugin/base/messages/util/DsExternalPostOffice.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 Google Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.google.calendar.interoperability.connectorplugin.base.messages.util; 17 | 18 | /** 19 | * A Novell groupwise DS-External-Post-Office data structure containing a list 20 | * of post-offices under foreign domains 21 | */ 22 | public class DsExternalPostOffice { 23 | private final String description; 24 | private final String domain; 25 | private final String postOffice; 26 | private final String operation; 27 | private final String timeZone; 28 | 29 | public DsExternalPostOffice( 30 | String description, 31 | String domain, 32 | String postOffice, 33 | String operation, 34 | String timeZone) { 35 | this.description = description; 36 | this.domain = domain; 37 | this.postOffice = postOffice; 38 | this.operation = operation; 39 | this.timeZone = timeZone; 40 | } 41 | 42 | @Override 43 | public String toString() { 44 | String str = "DS-External-Post-Office= \n"; 45 | if (operation != null) { 46 | str = str + " Operation = " + operation + ";\n"; 47 | } 48 | if (domain != null) { 49 | str = str + " Domain = " + domain + ";\n"; 50 | } 51 | if (postOffice != null) { 52 | str = str + " Post-Office = " + postOffice + ";\n"; 53 | } 54 | if (description != null) { 55 | str = str + " Description = " + description + ";\n"; 56 | } 57 | if (timeZone != null) { 58 | str = str + " Time-Zone = " + timeZone + ";\n"; 59 | } 60 | str = str + " ;"; 61 | return str; 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /connectors/cs/src/VS2010/GoogleCalendarConnectorSyncService/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2008 Google Inc. All Rights Reserved 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | using System.Reflection; 16 | using System.Runtime.CompilerServices; 17 | using System.Runtime.InteropServices; 18 | 19 | using log4net.Config; 20 | 21 | [assembly: XmlConfiguratorAttribute(Watch = true)] 22 | 23 | // General Information about an assembly is controlled through the following 24 | // set of attributes. Change these attribute values to modify the information 25 | // associated with an assembly. 26 | [assembly: AssemblyTitle("Google Calendar Connector Sync Service")] 27 | [assembly: AssemblyDescription("")] 28 | [assembly: AssemblyConfiguration("")] 29 | [assembly: AssemblyCompany("Google")] 30 | [assembly: AssemblyProduct("Google Calendar Connector Sync Service")] 31 | [assembly: AssemblyCopyright("Copyright © Google 2008")] 32 | [assembly: AssemblyTrademark("")] 33 | [assembly: AssemblyCulture("")] 34 | 35 | // Setting ComVisible to false makes the types in this assembly not visible 36 | // to COM components. If you need to access a type in this assembly from 37 | // COM, set the ComVisible attribute to true on that type. 38 | [assembly: ComVisible(false)] 39 | 40 | // The following GUID is for the ID of the typelib if this project is exposed to COM 41 | [assembly: Guid("04e2200d-11cf-4dd5-881f-0be8ffbb758f")] 42 | 43 | // Version information for an assembly consists of the following four values: 44 | // 45 | // Major Version 46 | // Minor Version 47 | // Build Number 48 | // Revision 49 | // 50 | [assembly: AssemblyVersion("1.2.0.0")] 51 | [assembly: AssemblyFileVersion("1.2.0.0")] 52 | -------------------------------------------------------------------------------- /connectors/cs/src/core/util/ExchangeUtil.cs: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2008 Google Inc. All Rights Reserved 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | using System; 16 | using System.Collections.Generic; 17 | using System.Text; 18 | 19 | namespace Google.GCalExchangeSync.Library.Util 20 | { 21 | /// 22 | /// Utilities for getting URLs from Exchange 23 | /// 24 | public class ExchangeUtil 25 | { 26 | /// 27 | /// Get the default calendar URL for the user 28 | /// 29 | /// Exchnage Server to use 30 | /// The Exchange user to use 31 | /// The default calendar URL for the user 32 | public static string GetDefaultCalendarUrl( string exchangeServer, ExchangeUser user ) 33 | { 34 | string path = user.ProxyAddresses; 35 | 36 | if ( path.StartsWith( "SMTP:" ) ) 37 | path = path.Substring( "SMTP:".Length ); 38 | 39 | return string.Format( "{0}/exchange/{1}/calendar", exchangeServer, path ); 40 | } 41 | 42 | /// 43 | /// Get the default calendar URL for the user 44 | /// 45 | /// Exchnage Server to use 46 | /// The email address to use 47 | /// The default calendar URL for the user 48 | public static string GetDefaultCalendarUrl(string exchangeServer, string email) 49 | { 50 | return string.Format( "{0}/exchange/{1}/calendar", exchangeServer, email ); 51 | } 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /connectors/java/src/java/com/google/calendar/interoperability/connectorplugin/impl/mock/AdminHandler.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 Google Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.google.calendar.interoperability.connectorplugin.impl.mock; 17 | 18 | import com.google.calendar.interoperability.connectorplugin.base.messages.AdminCommand; 19 | import com.google.calendar.interoperability.connectorplugin.base.messages.GetDirectoryResponse; 20 | import com.google.calendar.interoperability.connectorplugin.base.messages.GwResponse; 21 | import com.google.calendar.interoperability.connectorplugin.base.messages.VoidResponse; 22 | import com.google.calendar.interoperability.connectorplugin.base.messages.util.DsUser; 23 | import com.google.common.base.Function; 24 | 25 | /** 26 | * Handles an incoming admin commands 27 | */ 28 | class AdminHandler implements Function { 29 | 30 | private MockServer server; 31 | 32 | public AdminHandler(MockServer server) { 33 | this.server = server; 34 | } 35 | 36 | public GwResponse apply(AdminCommand from) { 37 | 38 | // Make sure that basic data fields are set 39 | if (!from.getGetDirectory()) { 40 | return 41 | new VoidResponse(from, "unsupported admin command", "unsupported"); 42 | } 43 | 44 | // Case: getDirectory 45 | final GetDirectoryResponse result = new GetDirectoryResponse(from); 46 | for(MockDomain domain : server) { 47 | for (MockUser user: domain) { 48 | result.addUser(new DsUser( 49 | domain.getName(), domain.getName(), domain.getName(), 50 | user.getObjectName(), user.getObjectName(), "Joe" 51 | )); 52 | } 53 | } 54 | return result; 55 | } 56 | } 57 | 58 | -------------------------------------------------------------------------------- /connectors/cs/src/VS2010/core/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2008 Google Inc. All Rights Reserved 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | using System.Reflection; 16 | using System.Runtime.CompilerServices; 17 | using System.Runtime.InteropServices; 18 | 19 | using log4net.Config; 20 | 21 | [assembly: XmlConfiguratorAttribute(Watch = true)] 22 | 23 | // General Information about an assembly is controlled through the following 24 | // set of attributes. Change these attribute values to modify the information 25 | // associated with an assembly. 26 | [assembly: AssemblyTitle("core")] 27 | [assembly: AssemblyDescription("")] 28 | [assembly: AssemblyConfiguration("")] 29 | [assembly: AssemblyCompany("Google")] 30 | [assembly: AssemblyProduct("core")] 31 | [assembly: AssemblyCopyright("Copyright © Google 2008")] 32 | [assembly: AssemblyTrademark("")] 33 | [assembly: AssemblyCulture("")] 34 | 35 | // Setting ComVisible to false makes the types in this assembly not visible 36 | // to COM components. If you need to access a type in this assembly from 37 | // COM, set the ComVisible attribute to true on that type. 38 | [assembly: ComVisible(false)] 39 | 40 | // The following GUID is for the ID of the typelib if this project is exposed to COM 41 | [assembly: Guid("2309903c-9947-48b8-9fd1-e7f4a75ecb84")] 42 | 43 | // Version information for an assembly consists of the following four values: 44 | // 45 | // Major Version 46 | // Minor Version 47 | // Build Number 48 | // Revision 49 | // 50 | // You can specify all the values or you can default the Revision and Build Numbers 51 | // by using the '*' as shown below: 52 | [assembly: AssemblyVersion("1.2.0.0")] 53 | [assembly: AssemblyFileVersion("1.2.0.0")] 54 | -------------------------------------------------------------------------------- /connectors/java/docs/api/overview-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Overview 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 23 | 24 |
22 |
25 | 26 | 27 | 28 | 46 | 47 |
All Classes 29 |

30 | 31 | Packages 32 |
33 | com.google.calendar.interoperability.connectorplugin 34 |
35 | com.google.calendar.interoperability.connectorplugin.base 36 |
37 | com.google.calendar.interoperability.connectorplugin.base.messages 38 |
39 | com.google.calendar.interoperability.connectorplugin.base.messages.util 40 |
41 | com.google.calendar.interoperability.connectorplugin.impl.google 42 |
43 | com.google.calendar.interoperability.connectorplugin.impl.mock 44 |
45 |

48 | 49 |

50 |   51 | 52 | 53 | -------------------------------------------------------------------------------- /connectors/java/src/java/com/google/calendar/interoperability/connectorplugin/base/messages/util/FileDescriptorList.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 Google Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.google.calendar.interoperability.connectorplugin.base.messages.util; 17 | 18 | import java.util.Iterator; 19 | import java.util.LinkedHashSet; 20 | import java.util.Set; 21 | 22 | /** 23 | * A novell groupwise file descriptor used in message headers 24 | */ 25 | public class FileDescriptorList { 26 | private Set fileDescriptors; 27 | 28 | public FileDescriptorList(Set fileDescriptors) { 29 | this.fileDescriptors = fileDescriptors; 30 | } 31 | 32 | public FileDescriptorList() { 33 | this.fileDescriptors = new LinkedHashSet(); 34 | } 35 | 36 | /** 37 | * Returns the set of file descriptors. We use a LinkedHashSet to maintain 38 | * order of file descriptors. 39 | * 40 | * @return A Set of descriptors 41 | */ 42 | public Set getFileDescriptors() { 43 | return fileDescriptors; 44 | } 45 | 46 | public void add(FileDescriptor fileDescriptor) { 47 | fileDescriptors.add(fileDescriptor); 48 | } 49 | 50 | @Override 51 | public String toString() { 52 | 53 | String fileDescriptorList = ""; 54 | 55 | int numFileDescriptors = fileDescriptors.size(); 56 | if (numFileDescriptors == 0) { 57 | return fileDescriptorList; 58 | } 59 | 60 | Iterator iterator = fileDescriptors.iterator(); 61 | fileDescriptorList = iterator.next().toString(); 62 | 63 | while (iterator.hasNext()) { 64 | fileDescriptorList = fileDescriptorList + " ,\n" + iterator.next().toString(); 65 | } 66 | return fileDescriptorList; 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /connectors/java/src/misc_windows/install.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | rem Copyright (c) 2007 Google Inc. 3 | rem 4 | rem Licensed under the Apache License, Version 2.0 (the "License"); 5 | rem you may not use this file except in compliance with the License. 6 | rem You may obtain a copy of the License at 7 | rem 8 | rem http://www.apache.org/licenses/LICENSE-2.0 9 | rem 10 | rem Unless required by applicable law or agreed to in writing, software 11 | rem distributed under the License is distributed on an "AS IS" BASIS, 12 | rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | rem See the License for the specific language governing permissions and 14 | rem limitations under the License. 15 | rem 16 | 17 | rem Does the configuration file exist? 18 | rem ================================== 19 | if exist config.txt goto CONFIGEXISTS 20 | echo config.txt not found! 21 | goto EXIT 22 | 23 | rem Does the service executable exist? 24 | rem ================================== 25 | :CONFIGEXISTS 26 | if exist GoogleCalendarConnector_plugin.exe goto SERVICEEXISTS 27 | echo GoogleCalendarConnector_plugin.exe not found! 28 | goto EXIT 29 | 30 | rem Does the self test exist? 31 | rem ========================= 32 | :SERVICEEXISTS 33 | if exist SelfTest.exe goto SELFTESTEXISTS 34 | echo SelfTest.exe not found! 35 | goto EXIT 36 | 37 | rem Uninstall the current service 38 | rem ============================= 39 | :SELFTESTEXISTS 40 | echo UNINSTALLING SERVICE (IF NECESSARY)... 41 | net stop GoogleCalendarConnectorPlugIn 42 | GoogleCalendarConnector_plugin.exe uninstall 43 | echo ... DONE 44 | 45 | rem Running self test 46 | rem ================= 47 | echo RUNNING SELF TEST... 48 | SelfTest 1>selftest.log 2>&1 49 | if not errorlevel 1 goto SELFTESTWORKED 50 | echo ***Self-Test failed, please check selftest.log for more details*** 51 | echo INSTALLATION ABORTED 52 | goto EXIT 53 | 54 | rem Setup service 55 | rem ============= 56 | :SELFTESTWORKED 57 | echo ...DONE 58 | echo INSTALLING SERVICE... 59 | GoogleCalendarConnector_plugin.exe install 60 | if not errorlevel 1 goto SETUPWORKED 61 | echo INSTALLATION ABORTED 62 | goto EXIT 63 | 64 | :SETUPWORKED 65 | rem Done :-) 66 | rem ======== 67 | echo ...DONE 68 | echo * 69 | echo ************************* 70 | echo * Installation complete * 71 | echo ************************* 72 | echo * 73 | :EXIT 74 | pause 75 | -------------------------------------------------------------------------------- /connectors/cs/src/VS2010/GoogleCalendarConnectorWebService/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2008 Google Inc. All Rights Reserved 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | using System.Reflection; 16 | using System.Runtime.CompilerServices; 17 | using System.Runtime.InteropServices; 18 | 19 | using log4net.Config; 20 | 21 | [assembly: XmlConfiguratorAttribute(Watch = true)] 22 | 23 | // General Information about an assembly is controlled through the following 24 | // set of attributes. Change these attribute values to modify the information 25 | // associated with an assembly. 26 | [assembly: AssemblyTitle("Google Calendar Connector Web Service")] 27 | [assembly: AssemblyDescription("")] 28 | [assembly: AssemblyConfiguration("")] 29 | [assembly: AssemblyCompany("Google")] 30 | [assembly: AssemblyProduct("Google Calendar Connector Web Service")] 31 | [assembly: AssemblyCopyright("Copyright © Google 2008")] 32 | [assembly: AssemblyTrademark("")] 33 | [assembly: AssemblyCulture("")] 34 | 35 | // Setting ComVisible to false makes the types in this assembly not visible 36 | // to COM components. If you need to access a type in this assembly from 37 | // COM, set the ComVisible attribute to true on that type. 38 | [assembly: ComVisible(false)] 39 | 40 | // The following GUID is for the ID of the typelib if this project is exposed to COM 41 | [assembly: Guid("3d5900ae-111a-45be-96b3-d9e4606ca793")] 42 | 43 | // Version information for an assembly consists of the following four values: 44 | // 45 | // Major Version 46 | // Minor Version 47 | // Build Number 48 | // Revision 49 | // 50 | // You can specify all the values or you can default the Revision and Build Numbers 51 | // by using the '*' as shown below: 52 | [assembly: AssemblyVersion("1.2.0.0")] 53 | [assembly: AssemblyFileVersion("1.2.0.0")] -------------------------------------------------------------------------------- /connectors/cs/src/unittests/core/util/OlsonUtilTest.cs: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2008 Google Inc. All Rights Reserved 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | using System; 16 | using System.Collections.Generic; 17 | using System.Diagnostics; 18 | using System.DirectoryServices; 19 | using System.IO; 20 | using System.Net; 21 | using System.Text; 22 | using System.Xml; 23 | using System.Xml.XPath; 24 | using System.Reflection; 25 | 26 | using NUnit.Framework; 27 | 28 | namespace Google.GCalExchangeSync.Library.Util 29 | { 30 | [TestFixture] 31 | public class OlsonUtilTest 32 | { 33 | static DateTime dateUnspec = new DateTime(2008, 03, 09, 2, 00, 00, DateTimeKind.Unspecified); 34 | static DateTime dateUTC = new DateTime(2008, 03, 09, 02, 00, 00, DateTimeKind.Utc); 35 | static DateTime dateLocal = new DateTime(2008, 03, 09, 02, 00, 00, DateTimeKind.Local); 36 | 37 | [Test] 38 | public void TestDateCompare() 39 | { 40 | Assert.That(dateUnspec.CompareTo(dateLocal) == 0); 41 | Assert.That(dateUnspec.Equals(dateLocal)); 42 | Assert.AreEqual(dateUnspec.GetHashCode(), dateLocal.GetHashCode()); 43 | Assert.That(dateLocal.CompareTo(dateUnspec) == 0); 44 | Assert.That(dateLocal.Equals(dateUnspec)); 45 | Assert.AreEqual(dateLocal.GetHashCode(), dateUnspec.GetHashCode()); 46 | 47 | DateTimeRange rangeUnspec = new DateTimeRange(dateUnspec, dateUnspec); 48 | DateTimeRange rangeLocal = new DateTimeRange(dateLocal, dateLocal); 49 | 50 | Assert.That(rangeUnspec.CompareTo(rangeLocal) == 0); 51 | Assert.That(rangeUnspec.Equals(rangeLocal)); 52 | Assert.AreEqual(rangeUnspec.GetHashCode(), rangeLocal.GetHashCode()); 53 | } 54 | } 55 | } 56 | 57 | -------------------------------------------------------------------------------- /connectors/cs/src/core/ExchangeUserDict.cs: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2008 Google Inc. All Rights Reserved 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | using System; 16 | using System.Collections; 17 | using System.Collections.Generic; 18 | using System.DirectoryServices; 19 | 20 | using Google.GCalExchangeSync.Library.Util; 21 | using TZ4Net; 22 | 23 | namespace Google.GCalExchangeSync.Library 24 | { 25 | ///

26 | /// Wrapper to map a dictionary from email address to ExchangeUser 27 | /// 28 | public class ExchangeUserDict : Dictionary 29 | { 30 | /// 31 | /// Add a user to the dictionary 32 | /// 33 | /// Email address of the user 34 | /// ExchangeUser object for the user 35 | public void AddExchangeUser(string email, ExchangeUser user) 36 | { 37 | this.Add(email.ToLower(), user); 38 | } 39 | 40 | /// 41 | /// Determine if an exchange user is available for the email address 42 | /// 43 | /// The email address to find 44 | /// True if there is an Exchange user for the email address 45 | public bool Contains(string email) 46 | { 47 | return this.ContainsKey(email.ToLower()); 48 | } 49 | 50 | /// 51 | /// Find an exchange user by email address 52 | /// 53 | /// The email address to find 54 | /// The ExchangeUser for the email address 55 | public ExchangeUser FindUser(string email) 56 | { 57 | return this[email.ToLower()]; 58 | } 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /connectors/cs/src/core/util/Future.cs: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2008 Google Inc. All Rights Reserved 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | using System; 16 | using System.Collections; 17 | using System.Collections.Generic; 18 | using System.DirectoryServices; 19 | using System.Threading; 20 | 21 | namespace Google.GCalExchangeSync.Library.Util 22 | { 23 | /// 24 | /// Support for Future / Promise pattern 25 | /// 26 | public abstract class Future : IDisposable 27 | { 28 | private Thread taskThread; 29 | 30 | /// 31 | /// Initiate the task to be completed and return immediately 32 | /// 33 | public void start() 34 | { 35 | taskThread = new Thread(doTask); 36 | taskThread.Name = this.TaskName; 37 | taskThread.Start(); 38 | } 39 | 40 | /// 41 | /// Override this method with the operation to be completed 42 | /// 43 | protected abstract void doTask(); 44 | 45 | /// 46 | /// Override this method to provide a unique ID for the task 47 | /// 48 | protected abstract string TaskName 49 | { 50 | get; 51 | } 52 | 53 | /// 54 | /// Block for the result to be available - this function should be called from a method in 55 | /// the subclass that returns results 56 | /// 57 | public void waitForCompletion() 58 | { 59 | taskThread.Join(); 60 | } 61 | 62 | /// 63 | /// Dispose of the future 64 | /// 65 | public void Dispose() 66 | { 67 | GC.SuppressFinalize(this); 68 | } 69 | }; 70 | } 71 | -------------------------------------------------------------------------------- /connectors/java/src/java/com/google/calendar/interoperability/connectorplugin/base/messages/GetDirectoryResponse.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 Google Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.google.calendar.interoperability.connectorplugin.base.messages; 17 | 18 | import com.google.calendar.interoperability.connectorplugin.base.messages.util.DsUser; 19 | import com.google.common.base.Preconditions; 20 | 21 | import java.util.ArrayList; 22 | import java.util.List; 23 | 24 | /** 25 | * A response that can be used for processing a 26 | * GetDirectory request 27 | */ 28 | public final class GetDirectoryResponse extends TemplateResponse { 29 | 30 | private static final String USER_TEMPLATE = 31 | "DS-USER= \r\n" 32 | + " Operation= List; \r\n" 33 | + " Domain= ${getDomain}; \r\n" 34 | + " Post-Office= ${getPostOffice}; \r\n" 35 | + " Object= ${getObjectName}; \r\n" 36 | + " Visibility= System; \r\n" 37 | + " Last-Name= ${getLastName}; \r\n" 38 | + " First-Name= ${getFirstName}; \r\n" 39 | + " Network-ID= ${getNetworkId}; \r\n" 40 | + "; \r\n"; 41 | 42 | private List users = new ArrayList(); 43 | 44 | public GetDirectoryResponse(AdminCommand originalCommand) { 45 | super(originalCommand, 46 | "WPC-API= 1.2; \r\n" 47 | + "Header-Char= T50; \r\n" 48 | + "MSG-TYPE= ADMIN; \r\n" 49 | + "${writeUsers}" 50 | + "-END-\r\n"); 51 | } 52 | 53 | public String writeUsers() { 54 | StringBuilder result = new StringBuilder(); 55 | for (DsUser user : users) { 56 | result.append(replace(USER_TEMPLATE, user)); 57 | } 58 | return result.toString(); 59 | } 60 | 61 | public void addUser(DsUser user) { 62 | Preconditions.checkNotNull(user); 63 | users.add(user); 64 | } 65 | 66 | public int countUsers() { 67 | return users.size(); 68 | } 69 | } 70 | 71 | -------------------------------------------------------------------------------- /connectors/cs/src/FreeBusyBuilder/FreeBusyBuilder.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Debug 5 | AnyCPU 6 | 8.0.50727 7 | 2.0 8 | {F2794A9E-7CD3-4327-850B-A760266F98A8} 9 | Exe 10 | Properties 11 | Google.Calendar.Interoperability.Connectorplugin 12 | FreeBusyBuilder 13 | v2.0 14 | 15 | 16 | 2.0 17 | 18 | 19 | 20 | true 21 | full 22 | false 23 | bin\Debug\ 24 | DEBUG;TRACE 25 | prompt 26 | 4 27 | 28 | 29 | pdbonly 30 | true 31 | bin\Release\ 32 | TRACE 33 | prompt 34 | 4 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 54 | -------------------------------------------------------------------------------- /connectors/cs/src/core/util/BlockTimer.cs: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2008 Google Inc. All Rights Reserved 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | using System; 16 | using System.Collections.Generic; 17 | using System.IO; 18 | using System.Text; 19 | using System.Threading; 20 | 21 | namespace Google.GCalExchangeSync.Library.Util 22 | { 23 | /// 24 | /// Print the time in milliseconds that the block took to execute. 25 | /// Should be used in a using block: e.g 26 | /// 27 | /// using(BlockTimer bt = new BlockTimes("label") 28 | /// { 29 | /// // Events to time 30 | /// } 31 | /// 32 | public class BlockTimer : IDisposable 33 | { 34 | /// 35 | /// Logger for BlockTimer 36 | /// 37 | protected static readonly log4net.ILog log = 38 | log4net.LogManager.GetLogger(typeof(BlockTimer)); 39 | 40 | private string name; 41 | private long start; 42 | 43 | /// 44 | /// Create a blocktimer 45 | /// 46 | /// Name for the timer 47 | public BlockTimer( string name ) 48 | { 49 | this.name = name; 50 | this.start = DateTime.Now.Ticks; 51 | } 52 | 53 | /// 54 | /// Called when the block timer is disposed - i.e. at the 55 | /// end of the using block 56 | /// 57 | public void Dispose() 58 | { 59 | long totalTime = DateTime.Now.Ticks - start; 60 | TimeSpan ts = new TimeSpan( totalTime ); 61 | 62 | int timeSpanMillseconds = Convert.ToInt32( ts.TotalMilliseconds ); 63 | 64 | string info = string.Format( 65 | "[Timer] - {0} - Total Execution Time: {1} ms.", 66 | name, 67 | timeSpanMillseconds ); 68 | 69 | log.Info( info ); 70 | } 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /connectors/cs/src/core/Enumerations.cs: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2008 Google Inc. All Rights Reserved 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | using System; 16 | using System.Collections.Generic; 17 | using System.Text; 18 | 19 | namespace Google.GCalExchangeSync.Library 20 | { 21 | /// 22 | /// Google Calendar Access Level 23 | /// 24 | public enum GCalAccessLevel 25 | { 26 | /// No access 27 | NoAccess = 0, 28 | 29 | /// Access to free busy info 30 | FreeBusyAccess = 10, 31 | 32 | /// Read only access 33 | ReadAccess = 20, 34 | 35 | /// Owner access 36 | Owner = 70 37 | } 38 | 39 | /// 40 | /// Google Calendar Busy Status 41 | /// 42 | public enum GCalBusyStatus 43 | { 44 | /// Busy 45 | Busy, 46 | 47 | /// Out of the office 48 | OutOfOffice, 49 | 50 | /// Tentative 51 | Tentative 52 | } 53 | 54 | /// 55 | /// Google Calendar projection 56 | /// 57 | public enum GCalProjection 58 | { 59 | /// Full 60 | Full, 61 | 62 | /// Full / No Attendees 63 | FullNoAttendees, 64 | 65 | /// Composite 66 | Composite, 67 | 68 | /// Attendees Only 69 | AttendeesOnly, 70 | 71 | /// Free Busy 72 | FreeBusy, 73 | 74 | /// Basic 75 | Basic 76 | } 77 | 78 | /// 79 | /// Google Calendar Visibility 80 | /// 81 | public enum GCalVisibility 82 | { 83 | /// Public 84 | Public, 85 | 86 | /// Private 87 | Private 88 | } 89 | } -------------------------------------------------------------------------------- /connectors/cs/src/unittests/core/webdav/XmlRequestMock.cs: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2008 Google Inc. All Rights Reserved 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | using System; 16 | using System.Collections.Generic; 17 | using System.Diagnostics; 18 | using System.IO; 19 | using System.Net; 20 | using System.Text; 21 | using System.Xml; 22 | using System.Xml.XPath; 23 | 24 | using Google.GCalExchangeSync.Library; 25 | using Google.GCalExchangeSync.Library.Util; 26 | 27 | namespace Google.GCalExchangeSync.Library.WebDav 28 | { 29 | public class XmlRequestMock : IXmlRequest 30 | { 31 | private Exception _exceptionToThrow = null; 32 | private Stream _response; 33 | private string _validUrl; 34 | private Method _method; 35 | 36 | public Exception ExceptionToThrow 37 | { 38 | get { return _exceptionToThrow; } 39 | set { _exceptionToThrow = value; } 40 | } 41 | 42 | public Stream ResponseBody 43 | { 44 | get { return _response; } 45 | set { _response = value; } 46 | } 47 | 48 | public string ValidUrl 49 | { 50 | get { return _validUrl; } 51 | set { _validUrl = value; } 52 | } 53 | 54 | public Method ValidMethod 55 | { 56 | get { return _method; } 57 | set { _method = value; } 58 | } 59 | 60 | public Stream IssueRequest(string url, Method method, string body, HttpHeader[] headers) 61 | { 62 | if ( _exceptionToThrow != null ) 63 | throw _exceptionToThrow; 64 | 65 | if (!string.IsNullOrEmpty(_validUrl) && !_validUrl.Equals(url)) 66 | throw new Exception("Invalid URL used"); 67 | 68 | if (_method != method) 69 | { 70 | string msg = string.Format("Invalid Method: {0}", method.Name); 71 | throw new Exception(msg); 72 | } 73 | 74 | return _response; 75 | } 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /connectors/java/src/java/com/google/calendar/interoperability/connectorplugin/base/messages/util/FileDescriptor.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 Google Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.google.calendar.interoperability.connectorplugin.base.messages.util; 17 | 18 | 19 | /** 20 | * A novell groupwise file descriptor used in message headers 21 | */ 22 | public class FileDescriptor { 23 | 24 | boolean conversionAllowed; 25 | String currentFile; 26 | String originalFile; 27 | int size; 28 | NovellDate date; 29 | 30 | public FileDescriptor() { 31 | // Empty Constructor 32 | } 33 | 34 | public void addPair(String key, String value) { 35 | if ("-CONVERSION-ALLOWED-".equalsIgnoreCase(key)) { 36 | conversionAllowed = Boolean.parseBoolean(value); 37 | } else if ("Current-File".equalsIgnoreCase(key)) { 38 | currentFile = value; 39 | } else if ("Original-File".equalsIgnoreCase(key)) { 40 | originalFile = value; 41 | } else if ("Size".equalsIgnoreCase(key)) { 42 | size = Integer.parseInt(value); 43 | } else if ("Date".equalsIgnoreCase(key)) { 44 | date = new NovellDate(); 45 | date.set(value); 46 | } 47 | } 48 | 49 | public boolean isConversionAllowed() { 50 | return conversionAllowed; 51 | } 52 | 53 | public void setConversionAllowed(boolean conversionAllowed) { 54 | this.conversionAllowed = conversionAllowed; 55 | } 56 | 57 | public String getCurrentFile() { 58 | return currentFile; 59 | } 60 | 61 | public void setCurrentFile(String currentFile) { 62 | this.currentFile = currentFile; 63 | } 64 | 65 | public String getOriginalFile() { 66 | return originalFile; 67 | } 68 | 69 | public void setOriginalFile(String originalFile) { 70 | this.originalFile = originalFile; 71 | } 72 | 73 | public int getSize() { 74 | return size; 75 | } 76 | 77 | public void setSize(int size) { 78 | this.size = size; 79 | } 80 | 81 | public NovellDate getDate() { 82 | return date; 83 | } 84 | 85 | public void setDate(NovellDate date) { 86 | this.date = date; 87 | } 88 | } 89 | -------------------------------------------------------------------------------- /connectors/java/src/javatests/com/google/calendar/interoperability/connectorplugin/impl/mock/MockServerTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 Google Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.google.calendar.interoperability.connectorplugin.impl.mock; 17 | 18 | import com.google.calendar.interoperability.connectorplugin.impl.mock.MockAppointment; 19 | import com.google.calendar.interoperability.connectorplugin.impl.mock.MockDomain; 20 | import com.google.calendar.interoperability.connectorplugin.impl.mock.MockServer; 21 | import com.google.calendar.interoperability.connectorplugin.impl.mock.MockUser; 22 | 23 | import junit.framework.TestCase; 24 | 25 | /** 26 | * Tests for the mock server 27 | */ 28 | public class MockServerTest extends TestCase { 29 | 30 | private MockServer server; 31 | 32 | @Override 33 | public void setUp() { 34 | server = new MockServer(); 35 | } 36 | 37 | public void testCreateDomain() { 38 | assertNotNull(server.createDomain("1")); 39 | assertNull(server.createDomain("1")); 40 | assertNotSame(server.createDomain("2"), server.createDomain("3")); 41 | int count = 0; 42 | for (MockDomain domain : server) { 43 | count++; 44 | } 45 | assertEquals(3, count); 46 | } 47 | 48 | public void testGetDomain() { 49 | assertNull(server.getDomain("1")); 50 | assertNotNull(server.createDomain("1")); 51 | assertNotNull(server.getDomain("1")); 52 | } 53 | 54 | public void testPrefillServer() { 55 | server.prefillServer("user", 5, "event", 0, 9, 1, 2, 56 | "google.com", "gmail.com"); 57 | assertNotNull(server.getDomain("google.com")); 58 | assertNotNull(server.getDomain("gmail.com")); 59 | assertEquals(5, server.getDomain("google.com").countUsers()); 60 | MockUser user = server.getDomain("google.com").iterator().next(); 61 | int count = 0; 62 | for (MockAppointment appointment : 63 | user.getCalendar().scanForAppointments(0, 10)) { 64 | assertEquals(2L * count, appointment.getStartTimeUtc()); 65 | count++; 66 | } 67 | assertEquals(5, count); 68 | } 69 | } 70 | 71 | -------------------------------------------------------------------------------- /connectors/cs/docs/scripts/MemberFilter.js: -------------------------------------------------------------------------------- 1 | 2 | // a member filter 3 | 4 | function MemberFilter () { 5 | 6 | // set up defaults 7 | 8 | this.subgroup = "all"; 9 | 10 | this.public = true; 11 | this.protected = true; 12 | this.private = true; 13 | 14 | this.instance = true; 15 | this.static = true; 16 | 17 | this.declared = true; 18 | this.inherited = true; 19 | 20 | } 21 | 22 | MemberFilter.prototype.filterElement = function(element) { 23 | 24 | // get the data for the element 25 | if (element == null) return; 26 | var data = element.getAttribute("data"); 27 | if (data == null) return; 28 | var datum = data.split("; "); 29 | if (datum.length != 4) return; 30 | 31 | // extract the relevent member attributes 32 | var subgroup = datum[0]; 33 | var visibility = datum[1]; 34 | var binding = datum[2]; 35 | var origin = datum[3]; 36 | 37 | // determine whether to show the member 38 | var show = true; 39 | if (this[visibility] == false) show = false; 40 | if (this[binding] == false) show = false; 41 | if (this[origin] == false) show = false; 42 | if ((this.subgroup != null) && (this.subgroup != 'all')) { 43 | if (subgroup != this.subgroup) show = false; 44 | } 45 | 46 | // show or hide the element 47 | if (show) { 48 | // either block or table-row, depending on browswer, so use default 49 | element.style["display"] = ""; 50 | } else { 51 | element.style["display"] = "none"; 52 | } 53 | 54 | } 55 | 56 | // a type filter 57 | 58 | function TypeFilter () { 59 | 60 | // set up defaults 61 | 62 | this.subgroup = "all"; 63 | 64 | this.public = true; 65 | this.internal = true; 66 | 67 | } 68 | 69 | TypeFilter.prototype.filterElement = function(element) { 70 | 71 | // get the data for the element 72 | if (element == null) return; 73 | var data = element.getAttribute("data"); 74 | if (data == null) return; 75 | var datum = data.split("; "); 76 | if (datum.length != 2) return; 77 | 78 | // extract the relevent member attributes 79 | var subgroup = datum[0]; 80 | var visibility = datum[1]; 81 | 82 | // determine whether to show the member 83 | var show = true; 84 | if (this[visibility] == false) show = false; 85 | if ((this.subgroup != null) && (this.subgroup != 'all')) { 86 | if (subgroup != this.subgroup) show = false; 87 | } 88 | 89 | // show or hide the element 90 | if (show) { 91 | // either block or table-row, depending on browser, so use default 92 | element.style["display"] = ""; 93 | } else { 94 | element.style["display"] = "none"; 95 | } 96 | 97 | } 98 | 99 | -------------------------------------------------------------------------------- /connectors/cs/src/core/util/EmbeddedResourceUtil.cs: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2008 Google Inc. All Rights Reserved 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | using System; 16 | using System.IO; 17 | using System.Reflection; 18 | using System.Xml; 19 | 20 | namespace Google.GCalExchangeSync.Library.Util 21 | { 22 | /// 23 | /// Provides a convenience method for retrieving an Xml resource embedded in the currently executing 24 | /// assembly. 25 | /// 26 | public class EmbeddedResourceUtility 27 | { 28 | private EmbeddedResourceUtility() 29 | { 30 | } 31 | 32 | /// 33 | /// Get the XML Document resource 34 | /// 35 | /// The XML Document resource name 36 | /// The XML document corresponding to the resource 37 | public static XmlDocument GetXmlDocument( string resourceName ) 38 | { 39 | XmlDocument doc = new XmlDocument(); 40 | Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream( resourceName ); 41 | 42 | using ( StreamReader reader = new StreamReader( stream ) ) 43 | { 44 | doc.Load( reader ); 45 | } 46 | 47 | return doc; 48 | } 49 | 50 | /// 51 | /// Get the resource associated with the resource name 52 | /// 53 | /// The resource name to return the contents for 54 | /// The resource contents 55 | public static string GetTextDocument( string resourceName ) 56 | { 57 | string result = string.Empty; 58 | Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream( resourceName ); 59 | 60 | using ( StreamReader reader = new StreamReader( stream ) ) 61 | { 62 | result = reader.ReadToEnd(); 63 | } 64 | 65 | return result; 66 | } 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /connectors/cs/src/core/webdav/IXmlRequest.cs: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2008 Google Inc. All Rights Reserved 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | using System; 16 | using System.Collections.Generic; 17 | using System.IO; 18 | using System.Net; 19 | using System.Text; 20 | using System.Xml; 21 | 22 | namespace Google.GCalExchangeSync.Library.WebDav 23 | { 24 | /// 25 | /// Http header 26 | /// 27 | public class HttpHeader 28 | { 29 | /// 30 | /// Create a Htpp Header object with the given name and value 31 | /// 32 | /// The name of the header 33 | /// The value of the header 34 | public HttpHeader(string headerName, string headerValue) 35 | { 36 | name = headerName; 37 | value = headerValue; 38 | } 39 | 40 | /// 41 | /// The name of the header 42 | /// 43 | public string Name 44 | { 45 | get { return name; } 46 | } 47 | 48 | /// 49 | /// The name of the value 50 | /// 51 | public string Value 52 | { 53 | get { return value; } 54 | } 55 | 56 | private readonly string name; 57 | private readonly string value; 58 | } 59 | 60 | /// 61 | /// Handle making a request to 62 | /// 63 | public interface IXmlRequest 64 | { 65 | /// 66 | /// Make a request to receive XML data 67 | /// 68 | /// The URL of the endpoint to make the request to 69 | /// The HTTP method to use 70 | /// The optional request body 71 | /// Optional headers to add to the request 72 | /// The Response from the call 73 | Stream IssueRequest(string url, Method method, string body, HttpHeader[] headers); 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /connectors/java/src/java/com/google/calendar/interoperability/connectorplugin/impl/mock/MockInfrastructure.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 Google Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.google.calendar.interoperability.connectorplugin.impl.mock; 17 | 18 | import static com.google.calendar.interoperability.connectorplugin.base.Configurable.Type.integer; 19 | import static com.google.calendar.interoperability.connectorplugin.base.Configurable.Type.string; 20 | 21 | import com.google.calendar.interoperability.connectorplugin.base.CommandHandler; 22 | import com.google.calendar.interoperability.connectorplugin.base.Configurable; 23 | import com.google.calendar.interoperability.connectorplugin.base.messages.AdminCommand; 24 | import com.google.calendar.interoperability.connectorplugin.base.messages.SearchCommand; 25 | 26 | /** 27 | * This class sets up a mock infrastructure and augments a command 28 | * handler with logic to handle Exchange commands on it 29 | */ 30 | public class MockInfrastructure extends Configurable{ 31 | 32 | private MockServer server; 33 | 34 | public MockInfrastructure() { 35 | super("mock"); 36 | registerParameter("domain", string); 37 | registerParameter("firstAppointmentFromNowInMillis", integer); 38 | registerParameter("latestAppointmentFromNowInMillis", integer); 39 | registerParameter("eventLengthInMillis", integer); 40 | registerParameter("eventDistanceInMillis", integer); 41 | 42 | server = new MockServer(); 43 | server.prefillServer("mockUser", 50, "event", 44 | System.currentTimeMillis() + 45 | getInteger("firstAppointmentFromNowInMillis"), 46 | System.currentTimeMillis() + 47 | getInteger("latestAppointmentFromNowInMillis"), 48 | getInteger("eventLengthInMillis").intValue(), 49 | getInteger("eventDistanceInMillis").intValue(), 50 | getString("domain")); 51 | } 52 | 53 | public MockInfrastructure(CommandHandler handler) { 54 | this(); 55 | handler.registerSubhandler( 56 | AdminCommand.class, new AdminHandler(server)); 57 | handler.registerSubhandler( 58 | SearchCommand.class, new SearchHandler(server)); 59 | } 60 | } 61 | 62 | -------------------------------------------------------------------------------- /connectors/java/src/java/com/google/calendar/interoperability/connectorplugin/base/messages/util/DsUser.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 Google Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.google.calendar.interoperability.connectorplugin.base.messages.util; 17 | 18 | /** 19 | * A Novell groupwise DS-User data structure. It is unknown. 20 | */ 21 | public class DsUser { 22 | 23 | private String networkId; 24 | private String domain; 25 | private String postOffice; 26 | private String objectName; 27 | private String lastName; 28 | private String firstName; 29 | 30 | public DsUser(String networkId, String domain, String postOffice, 31 | String objectName, String lastName, String firstName) { 32 | super(); 33 | this.networkId = networkId; 34 | this.domain = domain; 35 | this.postOffice = postOffice; 36 | this.objectName = objectName; 37 | this.lastName = lastName; 38 | this.firstName = firstName; 39 | } 40 | 41 | public DsUser() { 42 | // Empty Constructor 43 | } 44 | 45 | @Override 46 | public String toString() { 47 | return "DS-User= \n ;"; 48 | } 49 | 50 | public String getDomain() { 51 | return domain; 52 | } 53 | 54 | public void setDomain(String domain) { 55 | this.domain = domain; 56 | } 57 | 58 | public String getPostOffice() { 59 | return postOffice; 60 | } 61 | 62 | public void setPostOffice(String postOffice) { 63 | this.postOffice = postOffice; 64 | } 65 | 66 | public String getObjectName() { 67 | return objectName; 68 | } 69 | 70 | public void setObjectName(String objectName) { 71 | this.objectName = objectName; 72 | } 73 | 74 | public String getLastName() { 75 | return lastName; 76 | } 77 | 78 | public void setLastName(String lastName) { 79 | this.lastName = lastName; 80 | } 81 | 82 | public String getFirstName() { 83 | return firstName; 84 | } 85 | 86 | public void setFirstName(String firstName) { 87 | this.firstName = firstName; 88 | } 89 | 90 | public String getNetworkId() { 91 | return networkId; 92 | } 93 | 94 | public void setNetworkId(String networkId) { 95 | this.networkId = networkId; 96 | } 97 | } 98 | -------------------------------------------------------------------------------- /connectors/java/src/javatests/com/google/calendar/interoperability/connectorplugin/base/CommandHandlerTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 Google Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | package com.google.calendar.interoperability.connectorplugin.base; 17 | 18 | import com.google.calendar.interoperability.connectorplugin.base.CommandHandler; 19 | import com.google.calendar.interoperability.connectorplugin.base.messages.AdminCommand; 20 | import com.google.calendar.interoperability.connectorplugin.base.messages.GwResponse; 21 | import com.google.calendar.interoperability.connectorplugin.base.messages.UnknownCommand; 22 | import com.google.calendar.interoperability.connectorplugin.base.messages.VoidResponse; 23 | import com.google.common.base.Function; 24 | 25 | import junit.framework.TestCase; 26 | 27 | /** 28 | * Unit tests for the command handler 29 | */ 30 | public class CommandHandlerTest extends TestCase { 31 | 32 | private static final String CONTENT = "content"; 33 | 34 | private CommandHandler handler; 35 | 36 | @Override 37 | public void setUp() { 38 | handler = new CommandHandler(); 39 | } 40 | 41 | public void testUnknownCommand() { 42 | VoidResponse response = (VoidResponse) 43 | handler.apply(new UnknownCommand("1", CONTENT)); 44 | assertEquals("unknown_1", response.suggestLogFilename()); 45 | } 46 | 47 | public void testUnsupportedCommand() { 48 | VoidResponse response = (VoidResponse) 49 | handler.apply(new AdminCommand("1", CONTENT)); 50 | assertEquals("unsupported_1", response.suggestLogFilename()); 51 | } 52 | 53 | public void testRegisteredCommand() { 54 | final UnknownCommand cmd = new UnknownCommand("1", CONTENT); 55 | final VoidResponse testResponse = new VoidResponse(cmd, "A", "B"); 56 | final Function specialHandler = 57 | new Function() { 58 | public GwResponse apply(UnknownCommand from) { 59 | assertSame(cmd, from); 60 | return testResponse; 61 | } 62 | }; 63 | handler.registerSubhandler(UnknownCommand.class, specialHandler); 64 | assertSame(testResponse, handler.apply(cmd)); 65 | } 66 | } 67 | 68 | -------------------------------------------------------------------------------- /connectors/cs/src/unittests/core/util/DateUtilTest.cs: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2008 Google Inc. All Rights Reserved 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | using System; 16 | using System.Collections.Generic; 17 | using System.Diagnostics; 18 | using System.IO; 19 | using System.Net; 20 | using System.Text; 21 | using System.Reflection; 22 | using System.Globalization; 23 | 24 | 25 | using NUnit.Framework; 26 | 27 | namespace Google.GCalExchangeSync.Library.Util 28 | { 29 | [TestFixture] 30 | public class DateUtilTest 31 | { 32 | [SetUp] 33 | public void Init() 34 | { 35 | } 36 | 37 | [Test] 38 | public void TestRoundRangeToInterval() 39 | { 40 | DateTime startDate = new DateTime(2008, 05, 1, 10, 2, 3, 4, DateTimeKind.Utc); 41 | DateTime startRounded1 = new DateTime(2008, 05, 1, 10, 2, 0, 0, DateTimeKind.Utc); 42 | DateTime startRounded15 = new DateTime(2008, 05, 1, 10, 0, 0, 0, DateTimeKind.Utc); 43 | DateTime endDate = new DateTime(2008, 05, 1, 11, 2, 3, 4, DateTimeKind.Utc); 44 | DateTime endRounded1 = new DateTime(2008, 05, 1, 11, 3, 0, 0, DateTimeKind.Utc); 45 | DateTime endRounded15 = new DateTime(2008, 05, 1, 11, 15, 0, 0, DateTimeKind.Utc); 46 | 47 | DateTimeRange range = new DateTimeRange(startDate, endDate); 48 | DateTimeRange rounded = DateUtil.RoundRangeToInterval(range, 1); 49 | Assert.AreEqual(rounded.Start, startRounded1); 50 | Assert.AreEqual(rounded.End, endRounded1); 51 | 52 | DateTimeRange twiceRounded = DateUtil.RoundRangeToInterval(rounded, 1); 53 | Assert.AreEqual(rounded.Start, twiceRounded.Start); 54 | Assert.AreEqual(rounded.End, twiceRounded.End); 55 | 56 | rounded = DateUtil.RoundRangeToInterval(range, 15); 57 | Assert.AreEqual(rounded.Start, startRounded15); 58 | Assert.AreEqual(rounded.End, endRounded15); 59 | 60 | twiceRounded = DateUtil.RoundRangeToInterval(rounded, 15); 61 | Assert.AreEqual(rounded.Start, twiceRounded.Start); 62 | Assert.AreEqual(rounded.End, twiceRounded.End); 63 | } 64 | 65 | } 66 | 67 | } 68 | -------------------------------------------------------------------------------- /connectors/cs/src/service/GCalExchangeSyncService.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.ServiceProcess; 3 | using System.Threading; 4 | using Google.GCalExchangeSync.Library; 5 | using Google.GCalExchangeSync.Library.Scheduling; 6 | using log4net; 7 | 8 | namespace Google.GCalExchangeSync.Service 9 | { 10 | public class GCalExchangeSyncService : ServiceBase 11 | { 12 | private static readonly ILog _log = LogManager.GetLogger(typeof(GCalExchangeSyncService)); 13 | 14 | private Thread thread; 15 | 16 | public GCalExchangeSyncService() 17 | { 18 | InitializeComponent(); 19 | } 20 | 21 | protected override void OnStart(string[] args) 22 | { 23 | SentinelFactory sf; 24 | 25 | /* Configuration is stored as minutes, multiple my 60 seconds and multiply 26 | * by 1000 to get milliseconds */ 27 | int refreshTime = ConfigCache.ServiceRefreshMinutes * 60 * 1000; 28 | 29 | if (_log.IsDebugEnabled) 30 | { 31 | _log.Debug(String.Format("Service refresh time set to {0} ms.", refreshTime)); 32 | } 33 | 34 | //create a sentinel with a 10 second watch frequency 35 | sf = new SentinelFactory(refreshTime, typeof(GCalSyncProcessHost)); 36 | 37 | //Do not use Multithreaded implementation 38 | Sentinel.MultiThreaded = false; 39 | 40 | if (_log.IsDebugEnabled) 41 | { 42 | _log.Debug(String.Format("Service service set to multithreaded: {0}", Sentinel.MultiThreaded)); 43 | } 44 | 45 | thread = new Thread(new ThreadStart( sf.StartSentinel )); 46 | 47 | thread.Name = "Sentinel Thread"; 48 | 49 | if (_log.IsDebugEnabled) 50 | { 51 | _log.Debug("Starting sentinel process"); 52 | } 53 | 54 | thread.Start(); 55 | } 56 | 57 | protected override void OnStop() 58 | { 59 | } 60 | 61 | private System.ComponentModel.IContainer components = null; 62 | 63 | /// 64 | /// Clean up any resources being used. 65 | /// 66 | /// true if managed resources should be disposed; otherwise, false. 67 | protected override void Dispose(bool disposing) 68 | { 69 | if (disposing && (components != null)) 70 | { 71 | components.Dispose(); 72 | } 73 | base.Dispose(disposing); 74 | } 75 | 76 | private void InitializeComponent() 77 | { 78 | components = new System.ComponentModel.Container(); 79 | this.ServiceName = "GCalExchangeSync"; 80 | } 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /connectors/cs/src/webservice/WebAppConfigureAction.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.ComponentModel; 4 | using System.Configuration.Install; 5 | using System.Reflection; 6 | using System.Diagnostics; 7 | using System.IO; 8 | using System.Xml; 9 | 10 | namespace Google.GCalExchangeSync.Web 11 | { 12 | [RunInstaller(true)] 13 | public partial class WebAppConfigureAction : Installer 14 | { 15 | public WebAppConfigureAction() 16 | { 17 | InitializeComponent(); 18 | } 19 | 20 | override public void Install(IDictionary savedState) 21 | { 22 | base.Install(savedState); 23 | 24 | //string[] p = Context.Parameters["Exchange"].Split('@'); 25 | //string exchangeServer = p[0]; 26 | //string activeDirectory = p[1].Split('=')[1]; 27 | 28 | string directory = Path.GetDirectoryName(Context.Parameters["assemblypath"]); 29 | directory = Path.Combine(directory, ".."); 30 | EventLog.WriteEntry("Directory", directory); 31 | 32 | string srcPath = Path.Combine(directory, "Web.template.config"); 33 | string dstPath = Path.Combine(directory, "Web.config"); 34 | 35 | // Make sure the Log Directory exists 36 | string absoluteDirectory = Path.GetFullPath(directory); 37 | EventLog.WriteEntry("AbsDirectory", absoluteDirectory); 38 | string rootPath = Path.GetPathRoot(absoluteDirectory); 39 | string logDirectory = Path.Combine(rootPath, "\\Google\\logs"); 40 | logDirectory = Path.GetFullPath(logDirectory); 41 | Directory.CreateDirectory(logDirectory); 42 | 43 | XmlDocument doc = new XmlDocument(); 44 | doc.Load(srcPath); 45 | 46 | setLogFileLocation(doc, Path.Combine(logDirectory, "WebService.log")); 47 | 48 | //setAppSetting(doc, "ActiveDirectory.DomainController", "ldap://" + activeDirectory); 49 | //setAppSetting(doc, "Exchange.ServerName", exchangeServer); 50 | //setAppSetting(doc, "GoogleApps.GCal.LogDirectory", logDirectory); 51 | 52 | doc.Save(dstPath); 53 | } 54 | 55 | protected void setAppSetting(XmlDocument doc, string key, string value) 56 | { 57 | string path = 58 | string.Format("//configuration/appSettings/add[@key='{0}']", key); 59 | XmlNode node = doc.SelectSingleNode(path); 60 | if (node != null) 61 | { 62 | node.Attributes["value"].Value = value; 63 | } 64 | } 65 | 66 | protected void setLogFileLocation(XmlDocument doc, string value) 67 | { 68 | string path = "//configuration/log4net/appender/file"; 69 | XmlNode node = doc.SelectSingleNode(path); 70 | node.Attributes["value"].Value = value; 71 | } 72 | 73 | override public void Commit(IDictionary savedState) 74 | { 75 | base.Commit(savedState); 76 | } 77 | } 78 | } --------------------------------------------------------------------------------