:D sorry for my java Ignorance.
Talking about the Java-only-caja feature, is there any chance to have a service that "cajoles" the App XML so the PHP can consume it? perhaps a JAR that has the caja and a little webservice that gets the XML and returns it sanitarized? or a gcaja.com/ that provides that service? or a PHP port (2nd, or 3rd pahse...) my 2 cent ropu On Thu, Jul 17, 2008 at 5:13 PM, Chris Chabot <[EMAIL PROTECTED]> wrote: > the res:// is something that works with jars, pots and kettles and coffee > beans i think ? Well i overheard something like that the other night > > i.a.w: it's a java / jar resource locator, for now thats fine since php > doesn't do caja jar's either and caja is only available in jar format :) > > -- Chris > > > On Jul 17, 2008, at 10:09 PM, Ropu wrote: > > just did a fast reading >> >> and, if not mistaken, in the PHP version at least, if the require feature >> in >> the features.xml is an "absolute" path (at least http://*) we included >> literaly in the iframe. if not, is inlined. >> >> so i thought that that may be a references to an internal goog repository >> that uses domita.js.. >> >> but maybe res:// in the java version has an other functionality. >> >> just a warning >> >> ropu >> >> On Thu, Jul 17, 2008 at 4:55 PM, Cassie <[EMAIL PROTECTED]> wrote: >> >> hey ropu - thanks for reading the change! >>> i don't think i quite understand your comment though - what did you see >>> what >>> wrong? >>> >>> - cassie >>> >>> >>> On Thu, Jul 17, 2008 at 12:52 PM, Ropu <[EMAIL PROTECTED]> wrote: >>> >>> hi cassie >>>> >>>> is this line OK? >>>> +++ incubator/shindig/trunk/features/caja/feature.xml Thu Jul 17 >>>> 12:37:30 >>>> 2008 >>>> + <script >>>> src="res:///com/google/caja/plugin/domita-minified.js"></script> >>>> >>>> >>>> ropu >>>> >>>> On Thu, Jul 17, 2008 at 4:37 PM, <[EMAIL PROTECTED]> wrote: >>>> >>>> Author: doll >>>>> Date: Thu Jul 17 12:37:30 2008 >>>>> New Revision: 677699 >>>>> >>>>> URL: http://svn.apache.org/viewvc?rev=677699&view=rev >>>>> Log: >>>>> SHINDIG-436 >>>>> Patch from Mike Samuel. The caja js is now pulled directly from the >>>>> >>>> caja >>> >>>> maven repo. The java integration has been updated and the caja >>>>> >>>> integration >>>> >>>>> now works. >>>>> >>>>> If you uncomment the caja dependency in opensocial-current/feature.xml >>>>> >>>> and >>>> >>>>> toggle the "use caja" box in the sample container you should be able to >>>>> >>>> see >>>> >>>>> this work on the java side. >>>>> >>>>> >>>>> Removed: >>>>> incubator/shindig/trunk/features/caja/caja.js >>>>> incubator/shindig/trunk/features/caja/domita.js >>>>> incubator/shindig/trunk/features/caja/html-sanitizer.js >>>>> incubator/shindig/trunk/features/caja/html4-defs.js >>>>> incubator/shindig/trunk/features/caja/log-to-console.js >>>>> incubator/shindig/trunk/features/caja/permissive.js >>>>> incubator/shindig/trunk/features/caja/unicode.js >>>>> Modified: >>>>> incubator/shindig/trunk/features/caja/feature.xml >>>>> incubator/shindig/trunk/features/opensocial-current/feature.xml >>>>> incubator/shindig/trunk/features/opensocial-reference/container.js >>>>> incubator/shindig/trunk/features/pom.xml >>>>> incubator/shindig/trunk/java/gadgets/pom.xml >>>>> >>>>> >>>>> >>>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentFilter.java >>> >>>> >>>>> incubator/shindig/trunk/javascript/samplecontainer/samplecontainer.html >>>> >>>>> incubator/shindig/trunk/pom.xml >>>>> >>>>> Modified: incubator/shindig/trunk/features/caja/feature.xml >>>>> URL: >>>>> >>>>> >>>> >>> http://svn.apache.org/viewvc/incubator/shindig/trunk/features/caja/feature.xml?rev=677699&r1=677698&r2=677699&view=diff >>> >>>> >>>>> >>>>> >>>> ============================================================================== >>> >>>> --- incubator/shindig/trunk/features/caja/feature.xml (original) >>>>> +++ incubator/shindig/trunk/features/caja/feature.xml Thu Jul 17 >>>>> >>>> 12:37:30 >>> >>>> 2008 >>>>> @@ -16,18 +16,11 @@ >>>>> KIND, either express or implied. See the License for the >>>>> specific language governing permissions and limitations under the >>>>> >>>> License. >>>> >>>>> >>>>> - TODO(doll): The caja.js file referenced here should come from maven >>>>> - or something. We should not have our own copy of it. >>>>> +The javascript referenced here should be found in the caja jar. >>>>> --> >>>>> <feature> >>>>> <name>caja</name> >>>>> <gadget> >>>>> - <script src="caja.js"></script> >>>>> - <script src="html4-defs.js"></script> >>>>> - <script src="html-sanitizer.js"></script> >>>>> - <script src="unicode.js"></script> >>>>> - <script src="domita.js"></script> >>>>> - <script src="log-to-console.js"></script> >>>>> - <script src="permissive.js"></script> >>>>> + <script >>>>> src="res:///com/google/caja/plugin/domita-minified.js"></script> >>>>> </gadget> >>>>> </feature> >>>>> >>>>> Modified: >>>>> >>>> incubator/shindig/trunk/features/opensocial-current/feature.xml >>> >>>> URL: >>>>> >>>>> >>>> >>> http://svn.apache.org/viewvc/incubator/shindig/trunk/features/opensocial-current/feature.xml?rev=677699&r1=677698&r2=677699&view=diff >>> >>>> >>>>> >>>>> >>>> ============================================================================== >>> >>>> --- incubator/shindig/trunk/features/opensocial-current/feature.xml >>>>> (original) >>>>> +++ incubator/shindig/trunk/features/opensocial-current/feature.xml Thu >>>>> >>>> Jul >>>> >>>>> 17 12:37:30 2008 >>>>> @@ -20,6 +20,9 @@ >>>>> <feature> >>>>> <name>opensocial-0.8</name> >>>>> <dependency>opensocial-reference</dependency> >>>>> + <!-- <dependency>caja</dependency> --> >>>>> + <!-- Must include the "caja" feature to display samplecontainer --> >>>>> + <!-- gadgets when "use caja" is checked --> >>>>> <gadget> >>>>> <script src="jsonperson.js"></script> >>>>> <script src="jsonactivity.js"></script> >>>>> @@ -57,7 +60,7 @@ >>>>> opensocial.Container.setContainer(new ShindigContainer()); >>>>> } >>>>> >>>>> - if (configParams.enableCaja) { >>>>> + if (window['caja']) { >>>>> opensocial.Container.get().enableCaja(); >>>>> } >>>>> }); >>>>> >>>>> Modified: >>>>> incubator/shindig/trunk/features/opensocial-reference/container.js >>>>> URL: >>>>> >>>>> >>>> >>> http://svn.apache.org/viewvc/incubator/shindig/trunk/features/opensocial-reference/container.js?rev=677699&r1=677698&r2=677699&view=diff >>> >>>> >>>>> >>>>> >>>> ============================================================================== >>> >>>> --- incubator/shindig/trunk/features/opensocial-reference/container.js >>>>> (original) >>>>> +++ incubator/shindig/trunk/features/opensocial-reference/container.js >>>>> >>>> Thu >>>> >>>>> Jul 17 12:37:30 2008 >>>>> @@ -514,6 +514,9 @@ >>>>> // By default, only allow references to anchors. >>>>> if (/^#/.test(uri)) { >>>>> return '#' + >>>>> encodeURIComponent(decodeURIComponent(uri.substring(1))); >>>>> + // and files on the same host >>>>> + } else if (/^\/(?:[^\/][^?#]*)?$/) { >>>>> + return encodeURI(decodeURI(uri)); >>>>> } >>>>> // This callback can be replaced with one that passes the URL >>>>> >>>> through >>> >>>> // a proxy that checks the mimetype. >>>>> @@ -535,77 +538,548 @@ >>>>> caja = window["caja"]; >>>>> attachDocumentStub = window["attachDocumentStub"]; >>>>> >>>>> - var outers = caja.copy(___.sharedOuters); >>>>> + var imports = caja.copy(___.sharedImports); >>>>> + ___.getNewModuleHandler().setImports(imports); >>>>> >>>>> - // TODO(doll): We need to add caja allows for the gadgets namespace >>>>> >>>> so >>> >>>> that >>>>> - // this works properly. It does not belong in gadgets. >>>>> - var igOnload = window["_IG_RegisterOnloadHandler"]; >>>>> - if (igOnload) { >>>>> - outers._IG_RegisterOnloadHandler = ___.simpleFunc(igOnload); >>>>> + attachDocumentStub('-g___', uriCallback, imports); >>>>> + var gadgetRoot = document.createElement('div'); >>>>> + gadgetRoot.className = 'g___'; >>>>> + imports.htmlEmitter___ = new HtmlEmitter(gadgetRoot); >>>>> + document.body.appendChild(gadgetRoot); >>>>> + >>>>> + // Add the opensocial APIs and mark them callable and readable. >>>>> + imports.gadgets = gadgets; >>>>> + imports.opensocial = opensocial; >>>>> + // The below described the opensocial reference APIs. >>>>> + // A prefix of "c_" specifies a class, "m_" a method, "f_" a field, >>>>> + // and "s_" a static member. >>>>> + // Derived from >>>>> http://code.google.com/apis/opensocial/docs/0.8/reference/ . >>>>> + var opensocialSchema = { >>>>> + c_gadgets: { >>>>> + c_MiniMessage: { >>>>> + m_createDismissibleMessage: 0, >>>>> + m_createStaticMessage: 0, >>>>> + m_createTimerMessage: 0, >>>>> + m_dismissMessage: 0 >>>>> + }, >>>>> + c_Prefs: { >>>>> + m_getArray: 0, >>>>> + m_getBool: 0, >>>>> + m_getCountry: 0, >>>>> + m_getFloat: 0, >>>>> + m_getInt: 0, >>>>> + m_getLang: 0, >>>>> + m_getMsg: 0, >>>>> + m_getString: 0, >>>>> + m_set: 0, >>>>> + m_setArray: 0 >>>>> + }, >>>>> + c_Tab: { >>>>> + m_getCallback: 0, >>>>> + m_getContentContainer: 0, >>>>> + m_getIndex: 0, >>>>> + m_getName: 0, >>>>> + m_getNameContainer: 0 >>>>> + }, >>>>> + c_TabSet: { >>>>> + m_addTab: 0, >>>>> + m_alignTabs: 0, >>>>> + m_displayTabs: 0, >>>>> + m_getHeaderContainer: 0, >>>>> + m_getSelectedTab: 0, >>>>> + m_getTabs: 0, >>>>> + m_removeTab: 0, >>>>> + m_setSelectedTab: 0, >>>>> + m_swapTabs: 0 >>>>> + }, >>>>> + c_flash: { >>>>> + s_embedCachedFlash: 0, >>>>> + s_embedFlash: 0, >>>>> + s_getMajorVersion: 0 >>>>> + }, >>>>> + c_io: { >>>>> + c_AuthorizationType: { >>>>> + s_NONE: 0, >>>>> + s_OAUTH: 0, >>>>> + s_SIGNED: 0 >>>>> + }, >>>>> + c_ContentType: { >>>>> + s_DOM: 0, >>>>> + s_FEED: 0, >>>>> + s_JSON: 0, >>>>> + s_TEXT: 0 >>>>> + }, >>>>> + c_MethodType: { >>>>> + s_DELETE: 0, >>>>> + s_GET: 0, >>>>> + s_HEAD: 0, >>>>> + s_POST: 0, >>>>> + s_PUT: 0 >>>>> + }, >>>>> + c_ProxyUrlRequestParameters: { >>>>> + s_REFRESH_INTERVAL: 0 >>>>> + }, >>>>> + c_RequestParameters: { >>>>> + s_AUTHORIZATION: 0, >>>>> + s_CONTENT_TYPE: 0, >>>>> + s_GET_SUMMARIES: 0, >>>>> + s_HEADERS: 0, >>>>> + s_METHOD: 0, >>>>> + s_NUM_ENTRIES: 0, >>>>> + s_POST_DATA: 0 >>>>> + }, >>>>> + s_encodeValues: 0, >>>>> + s_getProxyUrl: 0, >>>>> + s_makeRequest: 0 >>>>> + }, >>>>> + c_json: { >>>>> + s_parse: 0, >>>>> + s_stringify: 0 >>>>> + }, >>>>> + c_pubsub: { >>>>> + s_publish: 0, >>>>> + s_subscribe: 0, >>>>> + s_unsubscribe: 0 >>>>> + }, >>>>> + c_rpc: { >>>>> + s_call: 0, >>>>> + s_register: 0, >>>>> + s_registerDefault: 0, >>>>> + s_unregister: 0, >>>>> + s_unregisterDefault: 0 >>>>> + }, >>>>> + c_skins: { >>>>> + c_Property: { >>>>> + s_ANCHOR_COLOR: 0, >>>>> + s_BG_COLOR: 0, >>>>> + s_BG_IMAGE: 0, >>>>> + s_FONT_COLOR: 0 >>>>> + }, >>>>> + s_getProperty: 0 >>>>> + }, >>>>> + c_util: { >>>>> + s_escapeString: 0, >>>>> + s_getFeatureParameters: 0, >>>>> + s_hasFeature: 0, >>>>> + s_registerOnLoadHandler: 0, >>>>> + s_unescapeString: 0 >>>>> + }, >>>>> + c_views: { >>>>> + c_View: { >>>>> + m_bind: 0, >>>>> + m_getUrlTemplate: 0, >>>>> + m_isOnlyVisibleGadget: 0 >>>>> + }, >>>>> + c_ViewType: { >>>>> + s_CANVAS: 0, >>>>> + s_HOME: 0, >>>>> + s_PREVIEW: 0, >>>>> + s_PROFILE: 0 >>>>> + }, >>>>> + s_bind: 0, >>>>> + s_getCurrentView: 0, >>>>> + s_getParams: 0, >>>>> + s_requestNavigateTo: 0 >>>>> + }, >>>>> + c_window: { >>>>> + s_adjustHeight: 0, >>>>> + s_getViewportDimensions: 0, >>>>> + s_setTitle: 0 >>>>> + } >>>>> + }, >>>>> + c_opensocial: { >>>>> + c_Activity: { >>>>> + c_Field: { >>>>> + s_APP_ID: 0, >>>>> + s_BODY: 0, >>>>> + s_BODY_ID: 0, >>>>> + s_EXTERNAL_ID: 0, >>>>> + s_ID: 0, >>>>> + s_MEDIA_ITEMS: 0, >>>>> + s_POSTED_TIME: 0, >>>>> + s_PRIORITY: 0, >>>>> + s_STREAM_FAVICON_URL: 0, >>>>> + s_STREAM_SOURCE_URL: 0, >>>>> + s_STREAM_TITLE: 0, >>>>> + s_STREAM_URL: 0, >>>>> + s_TEMPLATE_PARAMS: 0, >>>>> + s_TITLE: 0, >>>>> + s_TITLE_ID: 0, >>>>> + s_URL: 0, >>>>> + s_USER_ID: 0 >>>>> + }, >>>>> + m_getField: 0, >>>>> + m_getId: 0, >>>>> + m_setField: 0 >>>>> + }, >>>>> + c_Address: { >>>>> + c_Field: { >>>>> + s_COUNTRY: 0, >>>>> + s_EXTENDED_ADDRESS: 0, >>>>> + s_LATITUDE: 0, >>>>> + s_LOCALITY: 0, >>>>> + s_LONGITUDE: 0, >>>>> + s_POSTAL_CODE: 0, >>>>> + s_PO_BOX: 0, >>>>> + s_REGION: 0, >>>>> + s_STREET_ADDRESS: 0, >>>>> + s_TYPE: 0, >>>>> + s_UNSTRUCTURED_ADDRESS: 0 >>>>> + }, >>>>> + m_getField: 0 >>>>> + }, >>>>> + c_BodyType: { >>>>> + c_Field: { >>>>> + s_BUILD: 0, >>>>> + s_EYE_COLOR: 0, >>>>> + s_HAIR_COLOR: 0, >>>>> + s_HEIGHT: 0, >>>>> + s_WEIGHT: 0 >>>>> + }, >>>>> + m_getField: 0 >>>>> + }, >>>>> + c_Collection: { >>>>> + m_asArray: 0, >>>>> + m_each: 0, >>>>> + m_getById: 0, >>>>> + m_getOffset: 0, >>>>> + m_getTotalSize: 0, >>>>> + m_size: 0 >>>>> + }, >>>>> + c_CreateActivityPriority: { >>>>> + s_HIGH: 0, >>>>> + s_LOW: 0 >>>>> + }, >>>>> + c_DataRequest: { >>>>> + c_DataRequestFields: { >>>>> + s_ESCAPE_TYPE: 0 >>>>> + }, >>>>> + c_FilterType: { >>>>> + s_ALL: 0, >>>>> + s_HAS_APP: 0, >>>>> + s_TOP_FRIENDS: 0 >>>>> + }, >>>>> + c_PeopleRequestFields: { >>>>> + s_FILTER: 0, >>>>> + s_FILTER_OPTIONS: 0, >>>>> + s_FIRST: 0, >>>>> + s_MAX: 0, >>>>> + s_PROFILE_DETAILS: 0, >>>>> + s_SORT_ORDER: 0 >>>>> + }, >>>>> + c_SortOrder: { >>>>> + s_NAME: 0, >>>>> + s_TOP_FRIENDS: 0 >>>>> + }, >>>>> + m_add: 0, >>>>> + m_newFetchActivitiesRequest: 0, >>>>> + m_newFetchPeopleRequest: 0, >>>>> + m_newFetchPersonAppDataRequest: 0, >>>>> + m_newFetchPersonRequest: 0, >>>>> + m_newRemovePersonAppDataRequest: 0, >>>>> + m_newUpdatePersonAppDataRequest: 0, >>>>> + m_send: 0 >>>>> + }, >>>>> + c_DataResponse: { >>>>> + m_get: 0, >>>>> + m_getErrorMessage: 0, >>>>> + m_hadError: 0 >>>>> + }, >>>>> + c_Email: { >>>>> + c_Field: { >>>>> + s_ADDRESS: 0, >>>>> + s_TYPE: 0 >>>>> + }, >>>>> + m_getField: 0 >>>>> + }, >>>>> + c_Enum: { >>>>> + c_Drinker: { >>>>> + s_HEAVILY: 0, >>>>> + s_NO: 0, >>>>> + s_OCCASIONALLY: 0, >>>>> + s_QUIT: 0, >>>>> + s_QUITTING: 0, >>>>> + s_REGULARLY: 0, >>>>> + s_SOCIALLY: 0, >>>>> + s_YES: 0 >>>>> + }, >>>>> + c_Gender: { >>>>> + s_FEMALE: 0, >>>>> + s_MALE: 0 >>>>> + }, >>>>> + c_LookingFor: { >>>>> + s_ACTIVITY_PARTNERS: 0, >>>>> + s_DATING: 0, >>>>> + s_FRIENDS: 0, >>>>> + s_NETWORKING: 0, >>>>> + s_RANDOM: 0, >>>>> + s_RELATIONSHIP: 0 >>>>> + }, >>>>> + c_Presence: { >>>>> + s_AWAY: 0, >>>>> + s_CHAT: 0, >>>>> + s_DND: 0, >>>>> + s_OFFLINE: 0, >>>>> + s_ONLINE: 0, >>>>> + s_XA: 0 >>>>> + }, >>>>> + c_Smoker: { >>>>> + s_HEAVILY: 0, >>>>> + s_NO: 0, >>>>> + s_OCCASIONALLY: 0, >>>>> + s_QUIT: 0, >>>>> + s_QUITTING: 0, >>>>> + s_REGULARLY: 0, >>>>> + s_SOCIALLY: 0, >>>>> + s_YES: 0 >>>>> + }, >>>>> + m_getDisplayValue: 0, >>>>> + m_getKey: 0 >>>>> + }, >>>>> + c_Environment: { >>>>> + c_ObjectType: { >>>>> + s_ACTIVITY: 0, >>>>> + s_ACTIVITY_MEDIA_ITEM: 0, >>>>> + s_ADDRESS: 0, >>>>> + s_BODY_TYPE: 0, >>>>> + s_EMAIL: 0, >>>>> + s_FILTER_TYPE: 0, >>>>> + s_MESSAGE: 0, >>>>> + s_MESSAGE_TYPE: 0, >>>>> + s_NAME: 0, >>>>> + s_ORGANIZATION: 0, >>>>> + s_PERSON: 0, >>>>> + s_PHONE: 0, >>>>> + s_SORT_ORDER: 0, >>>>> + s_URL: 0 >>>>> + }, >>>>> + m_getDomain: 0, >>>>> + m_supportsField: 0 >>>>> + }, >>>>> + c_EscapeType: { >>>>> + s_HTML_ESCAPE: 0, >>>>> + s_NONE: 0 >>>>> + }, >>>>> + c_IdSpec: { >>>>> + c_Field: { >>>>> + s_GROUP_ID: 0, >>>>> + s_NETWORK_DISTANCE: 0, >>>>> + s_USER_ID: 0 >>>>> + }, >>>>> + c_PersonId: { >>>>> + s_OWNER: 0, >>>>> + s_VIEWER: 0 >>>>> + }, >>>>> + m_getField: 0, >>>>> + m_setField: 0 >>>>> + }, >>>>> + c_MediaItem: { >>>>> + c_Field: { >>>>> + s_MIME_TYPE: 0, >>>>> + s_TYPE: 0, >>>>> + s_URL: 0 >>>>> + }, >>>>> + c_Type: { >>>>> + s_AUDIO: 0, >>>>> + s_IMAGE: 0, >>>>> + s_VIDEO: 0 >>>>> + }, >>>>> + m_getField: 0, >>>>> + m_setField: 0 >>>>> + }, >>>>> + c_Message: { >>>>> + c_Field: { >>>>> + s_BODY: 0, >>>>> + s_BODY_ID: 0, >>>>> + s_TITLE: 0, >>>>> + s_TITLE_ID: 0, >>>>> + s_TYPE: 0 >>>>> + }, >>>>> + c_Type: { >>>>> + s_EMAIL: 0, >>>>> + s_NOTIFICATION: 0, >>>>> + s_PRIVATE_MESSAGE: 0, >>>>> + s_PUBLIC_MESSAGE: 0 >>>>> + }, >>>>> + m_getField: 0, >>>>> + m_setField: 0 >>>>> + }, >>>>> + c_Name: { >>>>> + c_Field: { >>>>> + s_ADDITIONAL_NAME: 0, >>>>> + s_FAMILY_NAME: 0, >>>>> + s_GIVEN_NAME: 0, >>>>> + s_HONORIFIC_PREFIX: 0, >>>>> + s_HONORIFIC_SUFFIX: 0, >>>>> + s_UNSTRUCTURED: 0 >>>>> + }, >>>>> + m_getField: 0 >>>>> + }, >>>>> + c_NavigationParameters: { >>>>> + c_DestinationType: { >>>>> + s_RECIPIENT_DESTINATION: 0, >>>>> + s_VIEWER_DESTINATION: 0 >>>>> + }, >>>>> + c_Field: { >>>>> + s_OWNER: 0, >>>>> + s_PARAMETERS: 0, >>>>> + s_VIEW: 0 >>>>> + }, >>>>> + m_getField: 0, >>>>> + m_setField: 0 >>>>> + }, >>>>> + c_Organization: { >>>>> + c_Field: { >>>>> + s_ADDRESS: 0, >>>>> + s_DESCRIPTION: 0, >>>>> + s_END_DATE: 0, >>>>> + s_FIELD: 0, >>>>> + s_NAME: 0, >>>>> + s_SALARY: 0, >>>>> + s_START_DATE: 0, >>>>> + s_SUB_FIELD: 0, >>>>> + s_TITLE: 0, >>>>> + s_WEBPAGE: 0 >>>>> + }, >>>>> + m_getField: 0 >>>>> + }, >>>>> + c_Permission: { >>>>> + s_VIEWER: 0 >>>>> + }, >>>>> + c_Person: { >>>>> + c_Field: { >>>>> + s_ABOUT_ME: 0, >>>>> + s_ACTIVITIES: 0, >>>>> + s_ADDRESSES: 0, >>>>> + s_AGE: 0, >>>>> + s_BODY_TYPE: 0, >>>>> + s_BOOKS: 0, >>>>> + s_CARS: 0, >>>>> + s_CHILDREN: 0, >>>>> + s_CURRENT_LOCATION: 0, >>>>> + s_DATE_OF_BIRTH: 0, >>>>> + s_DRINKER: 0, >>>>> + s_EMAILS: 0, >>>>> + s_ETHNICITY: 0, >>>>> + s_FASHION: 0, >>>>> + s_FOOD: 0, >>>>> + s_GENDER: 0, >>>>> + s_HAPPIEST_WHEN: 0, >>>>> + s_HAS_APP: 0, >>>>> + s_HEROES: 0, >>>>> + s_HUMOR: 0, >>>>> + s_ID: 0, >>>>> + s_INTERESTS: 0, >>>>> + s_JOBS: 0, >>>>> + s_JOB_INTERESTS: 0, >>>>> + s_LANGUAGES_SPOKEN: 0, >>>>> + s_LIVING_ARRANGEMENT: 0, >>>>> + s_LOOKING_FOR: 0, >>>>> + s_MOVIES: 0, >>>>> + s_MUSIC: 0, >>>>> + s_NAME: 0, >>>>> + s_NETWORK_PRESENCE: 0, >>>>> + s_NICKNAME: 0, >>>>> + s_PETS: 0, >>>>> + s_PHONE_NUMBERS: 0, >>>>> + s_POLITICAL_VIEWS: 0, >>>>> + s_PROFILE_SONG: 0, >>>>> + s_PROFILE_URL: 0, >>>>> + s_PROFILE_VIDEO: 0, >>>>> + s_QUOTES: 0, >>>>> + s_RELATIONSHIP_STATUS: 0, >>>>> + s_RELIGION: 0, >>>>> + s_ROMANCE: 0, >>>>> + s_SCARED_OF: 0, >>>>> + s_SCHOOLS: 0, >>>>> + s_SEXUAL_ORIENTATION: 0, >>>>> + s_SMOKER: 0, >>>>> + s_SPORTS: 0, >>>>> + s_STATUS: 0, >>>>> + s_TAGS: 0, >>>>> + s_THUMBNAIL_URL: 0, >>>>> + s_TIME_ZONE: 0, >>>>> + s_TURN_OFFS: 0, >>>>> + s_TURN_ONS: 0, >>>>> + s_TV_SHOWS: 0, >>>>> + s_URLS: 0 >>>>> + }, >>>>> + m_getDisplayName: 0, >>>>> + m_getField: 0, >>>>> + m_getId: 0, >>>>> + m_isOwner: 0, >>>>> + m_isViewer: 0 >>>>> + }, >>>>> + c_Phone: { >>>>> + c_Field: { >>>>> + s_NUMBER: 0, >>>>> + s_TYPE: 0 >>>>> + }, >>>>> + m_getField: 0 >>>>> + }, >>>>> + c_ResponseItem: { >>>>> + c_Error: { >>>>> + s_BAD_REQUEST: 0, >>>>> + s_FORBIDDEN: 0, >>>>> + s_INTERNAL_ERROR: 0, >>>>> + s_LIMIT_EXCEEDED: 0, >>>>> + s_NOT_IMPLEMENTED: 0, >>>>> + s_UNAUTHORIZED: 0 >>>>> + }, >>>>> + m_getData: 0, >>>>> + m_getErrorCode: 0, >>>>> + m_getErrorMessage: 0, >>>>> + m_getOriginalDataRequest: 0, >>>>> + m_hadError: 0 >>>>> + }, >>>>> + c_Url: { >>>>> + c_Field: { >>>>> + s_ADDRESS: 0, >>>>> + s_LINK_TEXT: 0, >>>>> + s_TYPE: 0 >>>>> + }, >>>>> + m_getField: 0 >>>>> + }, >>>>> + s_getEnvironment: 0, >>>>> + s_hasPermission: 0, >>>>> + s_newActivity: 0, >>>>> + s_newDataRequest: 0, >>>>> + s_newMediaItem: 0, >>>>> + s_newMessage: 0, >>>>> + s_newNavigationParameters: 0, >>>>> + s_requestCreateActivity: 0, >>>>> + s_requestPermission: 0, >>>>> + s_requestSendMessage: 0, >>>>> + s_requestShareApp: 0 >>>>> + } >>>>> + }; >>>>> + function whitelist(schema, obj) { >>>>> + if (!obj) { return; } // Occurs for optional features >>>>> + for (var k in schema) { >>>>> + if (schema.hasOwnProperty(k)) { >>>>> + var m = k.match(/^([mcs])_(\w+)$/); >>>>> + var type = m[1], name = m[2]; >>>>> + switch (type) { >>>>> + case 'c': >>>>> + ___.allowRead(obj, name); >>>>> + whitelist(schema[k], obj[name]); >>>>> + break; >>>>> + case 'm': >>>>> + ___.allowCall(obj.prototype, name); >>>>> + break; >>>>> + case 'f': >>>>> + ___.allowRead(obj.prototype, name); >>>>> + break; >>>>> + case 's': >>>>> + if ('function' === typeof obj[name]) { >>>>> + ___.allowCall(obj, name); >>>>> + } else { >>>>> + ___.allowRead(obj, name); >>>>> + } >>>>> + break; >>>>> + } >>>>> + } >>>>> + } >>>>> } >>>>> - >>>>> - attachDocumentStub('pre-', uriCallback, outers); >>>>> - >>>>> - // Temporarily adding some gadgets calls to the opensocial code. >>>>> - // This should move into the gadgets js code very soon. >>>>> - outers.gadgets = gadgets; >>>>> - >>>>> - // Adding all of the available opensocial calls as defined in the >>>>> >>>> spec >>> >>>> - outers.opensocial = opensocial; >>>>> - ___.all2( >>>>> - ___.allowCall, outers.opensocial, >>>>> - ['requestSendMessage', 'requestShareApp', >>>>> >>>> 'requestCreateActivity', >>> >>>> - 'hasPermission', 'requestPermission', 'getEnvironment', >>>>> 'newDataRequest', >>>>> - 'newActivity', 'newActivityMediaItem', 'newMessage']); >>>>> - >>>>> - ___.all2( >>>>> - ___.allowCall, opensocial.Collection.prototype, >>>>> - ['getById', 'size', 'each', 'asArray', 'getTotalSize', >>>>> 'getOffset']); >>>>> - >>>>> - ___.all2( >>>>> - ___.allowCall, opensocial.Person.prototype, >>>>> - ['getId', 'getDisplayName', 'getField', 'isViewer', 'isOwner']); >>>>> - >>>>> - ___.allowCall(opensocial.Address.prototype, 'getField'); >>>>> - ___.allowCall(opensocial.BodyType.prototype, 'getField'); >>>>> - ___.allowCall(opensocial.Email.prototype, 'getField'); >>>>> - ___.allowCall(opensocial.Name.prototype, 'getField'); >>>>> - ___.allowCall(opensocial.Organization.prototype, 'getField'); >>>>> - ___.allowCall(opensocial.Phone.prototype, 'getField'); >>>>> - ___.allowCall(opensocial.Url.prototype, 'getField'); >>>>> - >>>>> - ___.allowCall(opensocial.Activity.prototype, 'getId'); >>>>> - ___.allowCall(opensocial.Activity.prototype, 'getField'); >>>>> - >>>>> - ___.allowCall(opensocial.MediaItem.prototype, 'getField'); >>>>> - >>>>> - ___.allowCall(opensocial.ResponseItem.prototype, 'hadError'); >>>>> - ___.allowCall(opensocial.ResponseItem.prototype, 'getError'); >>>>> - ___.allowCall(opensocial.ResponseItem.prototype, >>>>> 'getOriginalDataRequest'); >>>>> - ___.allowCall(opensocial.ResponseItem.prototype, 'getData'); >>>>> - >>>>> - ___.allowCall(opensocial.DataResponse.prototype, 'hadError'); >>>>> - ___.allowCall(opensocial.DataResponse.prototype, 'get'); >>>>> - >>>>> - ___.all2( >>>>> - ___.allowCall, opensocial.DataRequest.prototype, >>>>> - ['getRequestObjects', 'add', 'send', 'newFetchPersonRequest', >>>>> - 'newFetchPeopleRequest', 'newFetchPersonAppDataRequest', >>>>> - 'newUpdatePersonAppDataRequest', 'newFetchActivitiesRequest']); >>>>> - >>>>> - ___.allowCall(opensocial.Environment.prototype, 'getDomain'); >>>>> - ___.allowCall(opensocial.Environment.prototype, 'supportsField'); >>>>> - >>>>> - ___.allowCall(opensocial.Enum.prototype, 'getKey'); >>>>> - ___.allowCall(opensocial.Enum.prototype, 'getDisplayValue'); >>>>> - >>>>> - ___.allowCall(opensocial.Message.prototype, 'getField'); >>>>> - ___.allowCall(opensocial.Message.prototype, 'setField'); >>>>> - >>>>> - var moduleHandler = ___.freeze({ >>>>> - getOuters: ___.simpleFunc(function() { return outers; }), >>>>> - handle: ___.simpleFunc(function(newModule) { newModule(outers); }) >>>>> - }); >>>>> - >>>>> - ___.setNewModuleHandler(moduleHandler); >>>>> + whitelist(opensocialSchema, window); >>>>> }; >>>>> >>>>> Modified: incubator/shindig/trunk/features/pom.xml >>>>> URL: >>>>> >>>>> >>>> >>> http://svn.apache.org/viewvc/incubator/shindig/trunk/features/pom.xml?rev=677699&r1=677698&r2=677699&view=diff >>> >>>> >>>>> >>>>> >>>> ============================================================================== >>> >>>> --- incubator/shindig/trunk/features/pom.xml (original) >>>>> +++ incubator/shindig/trunk/features/pom.xml Thu Jul 17 12:37:30 2008 >>>>> @@ -72,8 +72,7 @@ >>>>> <exclude>**/*.gif</exclude> >>>>> <exclude>**/*.jpeg</exclude> >>>>> <exclude>**/*.png</exclude> >>>>> - >>>>> - <!-- Caja has some bugs too --> >>>>> + <!-- Caja is already minified --> >>>>> <exclude>**/caja/*.js</exclude> >>>>> </excludes> >>>>> </configuration> >>>>> >>>>> Modified: incubator/shindig/trunk/java/gadgets/pom.xml >>>>> URL: >>>>> >>>>> >>>> >>> http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/pom.xml?rev=677699&r1=677698&r2=677699&view=diff >>> >>>> >>>>> >>>>> >>>> ============================================================================== >>> >>>> --- incubator/shindig/trunk/java/gadgets/pom.xml (original) >>>>> +++ incubator/shindig/trunk/java/gadgets/pom.xml Thu Jul 17 12:37:30 >>>>> >>>> 2008 >>> >>>> @@ -131,6 +131,11 @@ >>>>> <scope>compile</scope> >>>>> </dependency> >>>>> <dependency> >>>>> + <groupId>caja</groupId> >>>>> + <artifactId>json_simple</artifactId> >>>>> + <scope>compile</scope> >>>>> + </dependency> >>>>> + <dependency> >>>>> <groupId>net.oauth</groupId> >>>>> <artifactId>core</artifactId> >>>>> <scope>compile</scope> >>>>> >>>>> Modified: >>>>> >>>>> >>>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentFilter.java >>> >>>> URL: >>>>> >>>>> >>>> >>> http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentFilter.java?rev=677699&r1=677698&r2=677699&view=diff >>> >>>> >>>>> >>>>> >>>> ============================================================================== >>> >>>> --- >>>>> >>>>> >>>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentFilter.java >>> >>>> (original) >>>>> +++ >>>>> >>>>> >>>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentFilter.java >>> >>>> Thu Jul 17 12:37:30 2008 >>>>> @@ -21,17 +21,19 @@ >>>>> import org.apache.shindig.gadgets.GadgetContentFilter; >>>>> import org.apache.shindig.gadgets.GadgetException; >>>>> >>>>> +import com.google.caja.lexer.CharProducer; >>>>> import com.google.caja.lexer.ExternalReference; >>>>> +import com.google.caja.lexer.FilePosition; >>>>> +import com.google.caja.lexer.InputSource; >>>>> import com.google.caja.opensocial.DefaultGadgetRewriter; >>>>> -import com.google.caja.opensocial.GadgetContentRewriter; >>>>> -import com.google.caja.opensocial.UriCallback; >>>>> import com.google.caja.opensocial.GadgetRewriteException; >>>>> +import com.google.caja.opensocial.UriCallback; >>>>> import com.google.caja.opensocial.UriCallbackException; >>>>> import com.google.caja.opensocial.UriCallbackOption; >>>>> -import com.google.caja.reporting.SimpleMessageQueue; >>>>> -import com.google.caja.reporting.MessageQueue; >>>>> import com.google.caja.reporting.Message; >>>>> import com.google.caja.reporting.MessageContext; >>>>> +import com.google.caja.reporting.MessageQueue; >>>>> +import com.google.caja.reporting.SimpleMessageQueue; >>>>> >>>>> import java.io.IOException; >>>>> import java.io.Reader; >>>>> @@ -65,16 +67,16 @@ >>>>> }; >>>>> >>>>> MessageQueue mq = new SimpleMessageQueue(); >>>>> - GadgetContentRewriter rw = new DefaultGadgetRewriter(mq); >>>>> - Readable input = new StringReader(content); >>>>> - Appendable output = new StringBuilder(); >>>>> + DefaultGadgetRewriter rw = new DefaultGadgetRewriter(mq); >>>>> + CharProducer input = CharProducer.Factory.create( >>>>> + new StringReader(content), >>>>> + FilePosition.instance(new InputSource(retrievedUri), 2, 2, 1, >>>>> >>>> 1)); >>>> >>>>> + StringBuilder output = new StringBuilder(); >>>>> >>>>> try { >>>>> rw.rewriteContent(retrievedUri, input, cb, output); >>>>> } catch (GadgetRewriteException e) { >>>>> throwCajolingException(e, mq); >>>>> - } catch (UriCallbackException e) { >>>>> - throwCajolingException(e, mq); >>>>> } catch (IOException e) { >>>>> throwCajolingException(e, mq); >>>>> } >>>>> >>>>> Modified: >>>>> incubator/shindig/trunk/javascript/samplecontainer/samplecontainer.html >>>>> URL: >>>>> >>>>> >>>> >>> http://svn.apache.org/viewvc/incubator/shindig/trunk/javascript/samplecontainer/samplecontainer.html?rev=677699&r1=677698&r2=677699&view=diff >>> >>>> >>>>> >>>>> >>>> ============================================================================== >>> >>>> --- >>>>> >>>> incubator/shindig/trunk/javascript/samplecontainer/samplecontainer.html >>>> >>>>> (original) >>>>> +++ >>>>> >>>> incubator/shindig/trunk/javascript/samplecontainer/samplecontainer.html >>>> >>>>> Thu Jul 17 12:37:30 2008 >>>>> @@ -51,10 +51,10 @@ >>>>> var stateFileUrl = baseUrl + 'state-basicfriendlist.xml'; >>>>> var stateFileUrlCookie = 'sampleContainerStateFileUrl'; >>>>> >>>>> -var useCaja = false; >>>>> -var useCache = true; >>>>> -var usePermissive = false; >>>>> -var doEvil = false; >>>>> +var useCaja; >>>>> +var useCache; >>>>> +var usePermissive; >>>>> +var doEvil; >>>>> var gadget; >>>>> >>>>> var viewerId = "john.doe"; >>>>> @@ -93,13 +93,18 @@ >>>>> }); >>>>> }; >>>>> >>>>> -function changeGadgetUrl() { >>>>> +function unpackFormState() { >>>>> useCaja = document.getElementById("useCajaCheckbox").checked; >>>>> useCache = document.getElementById("useCacheCheckbox").checked; >>>>> - gadgets.container.nocache_ = useCache ? 0 : 1; >>>>> - >>>>> usePermissive = >>>>> >>>> document.getElementById("usePermissiveCheckbox").checked; >>>> >>>>> doEvil = document.getElementById("doEvilCheckbox").checked; >>>>> +} >>>>> + >>>>> +function changeGadgetUrl() { >>>>> + unpackFormState(); >>>>> + >>>>> + gadgets.container.nocache_ = useCache ? 0 : 1; >>>>> + >>>>> setEvilBit(); >>>>> >>>>> stateFileUrl = document.getElementById("stateFileUrl").value; >>>>> @@ -260,19 +265,23 @@ >>>>> >>>>> </script> >>>>> </head> >>>>> -<body onLoad="initGadget();"> >>>>> +<body onLoad="unpackFormState(); initGadget();"> >>>>> <div id="headerDiv"> >>>>> <div style="float:left">Gadget testing container</div> >>>>> <div class="subTitle"> >>>>> Displaying gadget: <input type="text" size="75" id="gadgetUrl"/> >>>>> - <input type="checkbox" id="useCacheCheckbox" checked="true"/>use >>>>> cache >>>>> - <input type="checkbox" id="useCajaCheckbox"/>use caja >>>>> - <input type="checkbox" id="usePermissiveCheckbox"/>use >>>>> >>>> permissive >>> >>>> + <input type="checkbox" id="useCacheCheckbox" checked="true" >>>>> + /><label for="useCacheCheckbox">use cache</label> >>>>> + <input type="checkbox" id="useCajaCheckbox" >>>>> + /><label for="useCajaCheckbox">use caja</label> >>>>> + <input type="checkbox" id="usePermissiveCheckbox" >>>>> + /><label for="usePermissiveCheckbox">use permissive</label> >>>>> >>>>> <br/> >>>>> >>>>> Using state: <input type="text" size="75" id="stateFileUrl"/> >>>>> - <input type="checkbox" id="doEvilCheckbox"/>do evil >>>>> + <input type="checkbox" id="doEvilCheckbox" >>>>> + /><label for="doEvilCheckbox">do evil</label> >>>>> >>>>> <br/> >>>>> <br/> >>>>> >>>>> Modified: incubator/shindig/trunk/pom.xml >>>>> URL: >>>>> >>>>> >>>> >>> http://svn.apache.org/viewvc/incubator/shindig/trunk/pom.xml?rev=677699&r1=677698&r2=677699&view=diff >>> >>>> >>>>> >>>>> >>>> ============================================================================== >>> >>>> --- incubator/shindig/trunk/pom.xml (original) >>>>> +++ incubator/shindig/trunk/pom.xml Thu Jul 17 12:37:30 2008 >>>>> @@ -771,7 +771,13 @@ >>>>> <dependency> >>>>> <groupId>caja</groupId> >>>>> <artifactId>caja</artifactId> >>>>> - <version>r820</version> >>>>> + <version>r1899</version> >>>>> + <scope>compile</scope> >>>>> + </dependency> >>>>> + <dependency> >>>>> + <groupId>caja</groupId> >>>>> + <artifactId>json_simple</artifactId> >>>>> + <version>r1</version> >>>>> <scope>compile</scope> >>>>> </dependency> >>>>> <dependency> >>>>> >>>>> >>>>> >>>>> >>>> >>>> -- >>>> .-. --- .--. ..- >>>> R o p u >>>> >>>> >>> >> >> >> -- >> .-. --- .--. ..- >> R o p u >> > > -- .-. --- .--. ..- R o p u

