Author: [email protected] Date: Fri May 4 15:06:45 2012 New Revision: 2311 Log: [AMDATUOPENSOCIAL-209] Multi-tenant fixed for 0.4.0 upgrade
Modified: trunk/amdatu-opensocial/config/src/main/resources/org.amdatu.opensocial.shindig.xml trunk/amdatu-opensocial/opensocial-gadgetmanagement/pom.xml trunk/amdatu-opensocial/opensocial-profile/src/main/java/org/amdatu/opensocial/profile/osgi/Activator.java trunk/amdatu-opensocial/opensocial-profile/src/main/java/org/amdatu/opensocial/profile/service/PersonDispatchExtenderFilter.java trunk/amdatu-opensocial/opensocial-shindig/pom.xml trunk/amdatu-opensocial/opensocial-shindig/src/main/java/org/amdatu/opensocial/shindig/module/ConfigurationAdminGuiceModule.java trunk/amdatu-opensocial/opensocial-shindig/src/main/java/org/amdatu/opensocial/shindig/osgi/Activator.java trunk/amdatu-opensocial/opensocial-shindig/src/main/java/org/amdatu/opensocial/shindig/service/ShindigDispatchExtenderFilter.java trunk/amdatu-opensocial/opensocial-shindig/src/main/java/org/amdatu/opensocial/shindig/service/ShindigRegistrationServiceImpl.java trunk/amdatu-opensocial/opensocial-shindig/src/main/resources/conf/container.js trunk/amdatu-opensocial/opensocial-stores/mem-store-oauthdata/pom.xml trunk/amdatu-opensocial/pom.xml trunk/amdatu-opensocial/release-demo/pom.xml trunk/amdatu-opensocial/release-demo/src/main/assembly/bin-component.xml Modified: trunk/amdatu-opensocial/config/src/main/resources/org.amdatu.opensocial.shindig.xml ============================================================================== --- trunk/amdatu-opensocial/config/src/main/resources/org.amdatu.opensocial.shindig.xml (original) +++ trunk/amdatu-opensocial/config/src/main/resources/org.amdatu.opensocial.shindig.xml Fri May 4 15:06:45 2012 @@ -16,18 +16,18 @@ --> <MetaData xmlns:metatype="http://www.osgi.org/xmlns/metatype/v1.1.0" filter="(|(!(org.amdatu.tenant.pid=*))(org.amdatu.tenant.pid=org.amdatu.tenant.PLATFORM))"> <OCD name="Amdatu OpenSocial - Shindig Config" id="org.amdatu.opensocial.shindig"> - <AD id="shindig.features.default" type="STRING" cardinality="0" /> - <AD id="shindig.containers.default" type="STRING" cardinality="0" /> - <AD id="shindig.blacklist.file" type="STRING" cardinality="0" /> - <AD id="shindig.oauth.base-url" type="STRING" cardinality="0" /> + <AD id="shindig.features.default" description="Location of feature manifests (comma separated)" type="STRING" cardinality="0" /> + <AD id="shindig.containers.default" description="Location of container configurations (comma separated) NB: this property is set by org.amdatu.opensocial.shindig.module.ConfigurationAdminGuiceModule" type="STRING" cardinality="0" /> + <AD id="shindig.blacklist.file" description="A file containing blacklisted gadgets." type="STRING" cardinality="0" /> + <AD id="shindig.oauth.base-url" description="Inbound OAuth support. The URL base to use for full OAuth support (three-legged)" type="STRING" cardinality="0" /> <AD id="shindig.oauth.authorize-action" type="STRING" cardinality="0" /> - <AD id="shindig.signing.state-key" type="STRING" cardinality="0" /> + <AD id="shindig.signing.state-key" description="Outbound OAuth support" type="STRING" cardinality="0" /> <AD id="shindig.signing.key-name" type="STRING" cardinality="0" /> <AD id="shindig.signing.global-callback-url" type="STRING" cardinality="0" /> <AD id="shindig.signing.enable-signed-callbacks" type="STRING" cardinality="0" /> - <AD id="shindig.signing.viewer-access-tokens-enabled" type="STRING" cardinality="0" /> - <AD id="shindig.locked-domain.enabled" type="STRING" cardinality="0" /> - <AD id="shindig.content-rewrite.only-allow-excludes" type="STRING" cardinality="0" /> + <AD id="shindig.signing.viewer-access-tokens-enabled" description="Set to true if you want to allow the use of 3-legged OAuth tokens when viewer != owner. This setting is not recommeneded for pages that allow user-controlled javascript, since that javascript could be used to make unauthorized requests on behalf of the viewer of the page" type="STRING" cardinality="0" /> + <AD id="shindig.locked-domain.enabled" description="If enabled here, configuration values can be found in container configuration files." type="STRING" cardinality="0" /> + <AD id="shindig.content-rewrite.only-allow-excludes" description="TODO: This needs to be moved to container configuration." type="STRING" cardinality="0" /> <AD id="shindig.content-rewrite.include-urls" type="STRING" cardinality="0" /> <AD id="shindig.content-rewrite.exclude-urls" type="STRING" cardinality="0" /> <AD id="shindig.content-rewrite.include-tags" type="STRING" cardinality="0" /> @@ -35,99 +35,77 @@ <AD id="shindig.content-rewrite.proxy-url" type="STRING" cardinality="0" /> <AD id="shindig.content-rewrite.concat-url" type="STRING" cardinality="0" /> <AD id="shindig.content-rewrite.enable-split-js-concat" type="STRING" cardinality="0" /> - <AD id="shindig.gadget-rewrite.default-forced-libs" type="STRING" cardinality="0" /> - <AD id="shindig.gadget-rewrite.externalize-feature-libs" type="STRING" cardinality="0" /> - <AD id="shindig.image-rewrite.max-inmem-bytes" type="STRING" cardinality="0" /> - <AD id="shindig.image-rewrite.max-palette-size" type="STRING" cardinality="0" /> - <AD id="shindig.image-rewrite.allow-jpeg-conversion" type="STRING" cardinality="0" /> - <AD id="shindig.image-rewrite.jpeg-compression" type="STRING" cardinality="0" /> - <AD id="shindig.image-rewrite.min-threshold-bytes" type="STRING" cardinality="0" /> - <AD id="shindig.flash.min-version" type="STRING" cardinality="0" /> - <AD id="shindig.template-rewrite.extension-tag-namespace" type="STRING" cardinality="0" /> - <AD id="shindig.cache.http.defaultTtl" type="STRING" cardinality="0" /> + <AD id="shindig.gadget-rewrite.default-forced-libs" description="Default set of forced libs to allow for better caching. NOTE: setting this causes the EndToEnd test to fail the opensocial-templates test." type="STRING" cardinality="0" /> + <AD id="shindig.gadget-rewrite.externalize-feature-libs" description="Allow supported JavaScript features required by a gadget to be externalized on demand" type="STRING" cardinality="0" /> + <AD id="shindig.image-rewrite.max-inmem-bytes" description="Configuration for image rewriter" type="STRING" cardinality="0" /> + <AD id="shindig.image-rewrite.max-palette-size" description="Configuration for image rewriter" type="STRING" cardinality="0" /> + <AD id="shindig.image-rewrite.allow-jpeg-conversion" description="Configuration for image rewriter" type="STRING" cardinality="0" /> + <AD id="shindig.image-rewrite.jpeg-compression" description="Configuration for image rewriter" type="STRING" cardinality="0" /> + <AD id="shindig.image-rewrite.min-threshold-bytes" description="Configuration for image rewriter" type="STRING" cardinality="0" /> + <AD id="shindig.flash.min-version" description="Configuration for the os:Flash tag" type="STRING" cardinality="0" /> + <AD id="shindig.template-rewrite.extension-tag-namespace" description="Configuration for template rewriter" type="STRING" cardinality="0" /> + <AD id="shindig.cache.http.defaultTtl" description="These values provide default TTLs for HTTP responses that don't use caching headers." type="STRING" cardinality="0" /> <AD id="shindig.cache.http.negativeCacheTtl" type="STRING" cardinality="0" /> - <AD id="shindig.cache.xml.refreshInterval" type="STRING" cardinality="0" /> + <AD id="shindig.cache.xml.refreshInterval" description="A default refresh interval for XML files, since there is no natural way for developers to specify this value, and most HTTP responses don't include good cache control headers. Setting this to 1 prevents the XML files to be cached forever, handy during development" type="STRING" cardinality="0" /> <AD id="shindig.cache.xml.refreshInterval.401" type="STRING" cardinality="0" /> - <AD id="shindig.cache.lru.default.capacity" type="STRING" cardinality="0" /> + <AD id="shindig.cache.lru.default.capacity" description="Add entries in the form shindig.cache.lru.<name>.capacity to specify capacities for different caches when using the LruCacheProvider. It is highly recommended that the EhCache implementation be used instead of the LRU cache." type="STRING" cardinality="0" /> <AD id="shindig.cache.lru.expressions.capacity" type="STRING" cardinality="0" /> <AD id="shindig.cache.lru.gadgetSpecs.capacity" type="STRING" cardinality="0" /> <AD id="shindig.cache.lru.messageBundles.capacity" type="STRING" cardinality="0" /> <AD id="shindig.cache.lru.httpResponses.capacity" type="STRING" cardinality="0" /> - <AD id="shindig.cache.ehcache.config" type="STRING" cardinality="0" /> - <AD id="shindig.cache.ehcache.jmx.enabled" type="STRING" cardinality="0" /> - <AD id="shindig.cache.ehcache.jmx.stats" type="STRING" cardinality="0" /> - <AD id="shindig.http.fast-encoding-detection" type="STRING" cardinality="0" /> - <AD id="shindig.http.client.connection-timeout-ms" type="STRING" cardinality="0" /> - <AD id="shindig.http.client.max-object-size-bytes" type="STRING" cardinality="0" /> - <AD id="shindig.uri.proxy.use-strict-parsing" type="STRING" cardinality="0" /> + <AD id="shindig.cache.ehcache.config" description="The location of the EhCache configuration file. Leave this entry empty to completely disable the ehcache, otherwise enter: res://org/apache/shindig/common/cache/ehcache/ehcacheConfig.xml" type="STRING" cardinality="0" /> + <AD id="shindig.cache.ehcache.jmx.enabled" description="True to enable JMX integration with cache stats" type="STRING" cardinality="0" /> + <AD id="shindig.cache.ehcache.jmx.stats" description="true to enable JMX stats." type="STRING" cardinality="0" /> + <AD id="shindig.http.fast-encoding-detection" description="true to skip expensive encoding detection. if true, will only attempt to validate utf-8. Assumes all other encodings are ISO-8859-1." type="STRING" cardinality="0" /> + <AD id="shindig.http.client.connection-timeout-ms" description="Configuration for the HttpFetcher Connection timeout, in milliseconds, for requests." type="STRING" cardinality="0" /> + <AD id="shindig.http.client.max-object-size-bytes" description="Maximum size, in bytes, of the object we fetched, 0 == no limit" type="STRING" cardinality="0" /> + <AD id="shindig.uri.proxy.use-strict-parsing" description="Strict-mode parsing for proxy and concat URIs ensures that the authority/host and path for the URIs match precisely what is found in the container config for it. This is useful where statistics and traffic routing patterns, typically in large installations, key on hostname (and occasionally path). Enforcing this does come at the cost that mismatches break, which in turn mandates that URI generation always happen in consistent fashion, ie. by the class itself or tightly controlled code." type="STRING" cardinality="0" /> <AD id="shindig.uri.concat.use-strict-parsing" type="STRING" cardinality="0" /> - <AD id="org.apache.shindig.gadgets.http.basicHttpFetcherProxy" type="STRING" cardinality="0" /> + <AD id="org.apache.shindig.gadgets.http.basicHttpFetcherProxy" description="Host:port of the proxy to use while fetching urls. Leave blank if proxy is not to be used." type="STRING" cardinality="0" /> <AD id="org.apache.shindig.serviceExpirationDurationMinutes" type="STRING" cardinality="0" /> - <AD id="shindig.json-rpc.result-field" type="STRING" cardinality="0" /> - <AD id="shindig.accelerate.remapInternalServerError" type="STRING" cardinality="0" /> - <AD id="shindig.host" type="STRING" cardinality="0" /> + <AD id="shindig.json-rpc.result-field" description="Older versions of shindig used 'data' in the json-rpc response format The spec calls for using 'result' instead, however to avoid breakage we allow you to set it back to the old way here valid values are result - new form, data - old broken form, both - return both fields for full compatibility" type="STRING" cardinality="0" /> + <AD id="shindig.accelerate.remapInternalServerError" description="Remap Internal server errors received from the basicHttpFetcherProxy server to Bad Gateway errors, so that it is clear to the user that the proxy server is the one that threw the exception." type="STRING" cardinality="0" /> + <AD id="shindig.host" description="shindig.host is not used anymore, but remains here since Guice requires this config entry to invoke the container coniguration" type="STRING" cardinality="0" /> <AD id="shindig.port" type="STRING" cardinality="0" /> <AD id="shindig.proxy.remapInternalServerError" type="STRING" cardinality="0" /> <AD id="workdir" type="STRING" cardinality="0" /> - <AD id="shindig.securitytoken.secretkey" type="STRING" cardinality="0" /> - + <AD id="shindig.securitytoken.secretkey" description="The secret key used to generate security tokens. The key must contain at least 16 characters. In a single server setup, you may choose to let the token provider a random key for you. In that case, specify the value [randomkey]. By default this key is empty, such that the admin is forced to think about the policy to be used here." type="STRING" cardinality="0" /> </OCD> <Designate pid="org.amdatu.opensocial.shindig" bundle="*"> <Object ocdref="org.amdatu.opensocial.shindig"> - <!-- Location of feature manifests (comma separated) --> <Attribute adref="shindig.features.default"> <Value>res://features/features.txt</Value> </Attribute> - - <!-- Location of container configurations (comma separated) - NB: this property is set by org.amdatu.opensocial.shindig.module.ConfigurationAdminGuiceModule --> <Attribute adref="shindig.containers.default"> <Value></Value> </Attribute> - - <!-- A file containing blacklisted gadgets. --> <Attribute adref="shindig.blacklist.file"> <Value></Value> </Attribute> - - <!-- Inbound OAuth support - The URL base to use for full OAuth support (three-legged) --> <Attribute adref="shindig.oauth.base-url"> <Value>/oauth/</Value> </Attribute> <Attribute adref="shindig.oauth.authorize-action"> <Value>/dashboard/authorize.jsp</Value> </Attribute> - - <!-- Outbound OAuth support --> <Attribute adref="shindig.signing.state-key"> <Value></Value> </Attribute> <Attribute adref="shindig.signing.key-name"> <Value>amdatu_public_key</Value> </Attribute> - - <!-- shindig.signing.key-file=res://conf/oauthkey.pem --> <Attribute adref="shindig.signing.global-callback-url"> <Value>http://${amdatu.http.hostname}:${amdatu.http.port}/gadgets/oauthcallback</Value> </Attribute> <Attribute adref="shindig.signing.enable-signed-callbacks"> <Value>true</Value> </Attribute> - - <!-- Set to true if you want to allow the use of 3-legged OAuth tokens when viewer != owner. - This setting is not recommeneded for pages that allow user-controlled javascript, since - that javascript could be used to make unauthorized requests on behalf of the viewer of the page --> <Attribute adref="shindig.signing.viewer-access-tokens-enabled"> <Value>false</Value> </Attribute> - - <!-- If enabled here, configuration values can be found in container configuration files. --> <Attribute adref="shindig.locked-domain.enabled"> <Value>false</Value> </Attribute> - - <!-- TODO: This needs to be moved to container configuration. --> <Attribute adref="shindig.content-rewrite.only-allow-excludes"> <Value>false</Value> </Attribute> @@ -144,29 +122,20 @@ <Value>86400</Value> </Attribute> <Attribute adref="shindig.content-rewrite.proxy-url"> - <Value>/gadgets/proxy?container=default&url=</Value> + <Value>/gadgets/proxy?container=default&url=</Value> </Attribute> <Attribute adref="shindig.content-rewrite.concat-url"> - <Value>/gadgets/concat?container=default&</Value> + <Value>/gadgets/concat?container=default&</Value> </Attribute> <Attribute adref="shindig.content-rewrite.enable-split-js-concat"> <Value>true</Value> </Attribute> - - <!-- Default set of forced libs to allow for better caching - NOTE: setting this causes the EndToEnd test to fail the opensocial-templates test --> <Attribute adref="shindig.gadget-rewrite.default-forced-libs"> <Value>core:rpc</Value> </Attribute> - - <!-- shindig.gadget-rewrite.default-forced-libs= --> - - <!-- Allow supported JavaScript features required by a gadget to be externalized on demand --> <Attribute adref="shindig.gadget-rewrite.externalize-feature-libs"> <Value>false</Value> </Attribute> - - <!-- Configuration for image rewriter --> <Attribute adref="shindig.image-rewrite.max-inmem-bytes"> <Value>1048576</Value> </Attribute> @@ -182,38 +151,24 @@ <Attribute adref="shindig.image-rewrite.min-threshold-bytes"> <Value>200</Value> </Attribute> - - <!-- Configuration for the os:Flash tag --> <Attribute adref="shindig.flash.min-version"> <Value>9.0.115</Value> </Attribute> - - <!-- Configuration for template rewriter --> <Attribute adref="shindig.template-rewrite.extension-tag-namespace"> <Value>http://ns.opensocial.org/2009/extensions</Value> </Attribute> - - <!-- These values provide default TTLs for HTTP responses that don't use caching headers. --> <Attribute adref="shindig.cache.http.defaultTtl"> <Value>0</Value> </Attribute> <Attribute adref="shindig.cache.http.negativeCacheTtl"> <Value>0</Value> </Attribute> - - <!-- A default refresh interval for XML files, since there is no natural way for developers to - specify this value, and most HTTP responses don't include good cache control headers. - Setting this to 1 prevents the XML files to be cached forever, handy during development --> <Attribute adref="shindig.cache.xml.refreshInterval"> <Value>60000</Value> </Attribute> <Attribute adref="shindig.cache.xml.refreshInterval.401"> <Value>0</Value> </Attribute> - - <!-- Add entries in the form shindig.cache.lru.<name>.capacity to specify capacities for different - caches when using the LruCacheProvider. - It is highly recommended that the EhCache implementation be used instead of the LRU cache. --> <Attribute adref="shindig.cache.lru.default.capacity"> <Value>1000</Value> </Attribute> @@ -229,84 +184,42 @@ <Attribute adref="shindig.cache.lru.httpResponses.capacity"> <Value>10000</Value> </Attribute> - - <!-- The location of the EhCache configuration file. - Leave this entry empty to completely disable the ehcache, otherwise enter: - res://org/apache/shindig/common/cache/ehcache/ehcacheConfig.xml --> <Attribute adref="shindig.cache.ehcache.config"> <Value></Value> </Attribute> - - <!-- True to enable JMX integration with cache stats --> <Attribute adref="shindig.cache.ehcache.jmx.enabled"> <Value>true</Value> </Attribute> - - <!-- true to enable JMX stats. --> <Attribute adref="shindig.cache.ehcache.jmx.stats"> <Value>true</Value> </Attribute> - - <!-- true to skip expensive encoding detection. - if true, will only attempt to validate utf-8. Assumes all other encodings are ISO-8859-1. --> <Attribute adref="shindig.http.fast-encoding-detection"> <Value>true</Value> </Attribute> - - <!-- Configuration for the HttpFetcher - Connection timeout, in milliseconds, for requests. --> <Attribute adref="shindig.http.client.connection-timeout-ms"> <Value>15000</Value> </Attribute> - - <!-- Maximum size, in bytes, of the object we fetched, 0 == no limit --> <Attribute adref="shindig.http.client.max-object-size-bytes"> <Value>0</Value> </Attribute> - - <!-- Strict-mode parsing for proxy and concat URIs ensures that the authority/host and path - for the URIs match precisely what is found in the container config for it. This is - useful where statistics and traffic routing patterns, typically in large installations, - key on hostname (and occasionally path). Enforcing this does come at the cost that - mismatches break, which in turn mandates that URI generation always happen in consistent - fashion, ie. by the class itself or tightly controlled code. --> <Attribute adref="shindig.uri.proxy.use-strict-parsing"> <Value>false</Value> </Attribute> <Attribute adref="shindig.uri.concat.use-strict-parsing"> <Value>false</Value> </Attribute> - - <!-- Host:port of the proxy to use while fetching urls. Leave blank if proxy is - not to be used. --> <Attribute adref="org.apache.shindig.gadgets.http.basicHttpFetcherProxy"> <Value></Value> </Attribute> <Attribute adref="org.apache.shindig.serviceExpirationDurationMinutes"> <Value>60</Value> </Attribute> - - <!-- Older versions of shindig used 'data' in the json-rpc response format - The spec calls for using 'result' instead, however to avoid breakage we - allow you to set it back to the old way here - - valid values are - result - new form - data - old broken form - both - return both fields for full compatibility --> <Attribute adref="shindig.json-rpc.result-field"> <Value>result</Value> </Attribute> - - <!-- Remap "Internal server error"s received from the basicHttpFetcherProxy server to - "Bad Gateway error"s, so that it is clear to the user that the proxy server is - the one that threw the exception. --> <Attribute adref="shindig.accelerate.remapInternalServerError"> <Value>true</Value> </Attribute> - - <!-- shindig.host is not used anymore, but remains here since Guice requires this config - entry to invoke the container coniguration --> <Attribute adref="shindig.host"> <Value>null</Value> </Attribute> @@ -319,19 +232,9 @@ <Attribute adref="workdir"> <Value>work/shindig</Value> </Attribute> - - <!-- The secret key used to generate security tokens. The key must contain at least - 16 characters. - - In a single server setup, you may choose to let the token provider a random key - for you. In that case, specify the value "[randomkey]" (without the quotes). - - By default this key is empty, such that the admin is forced to think about the - policy to be used here. --> <Attribute adref="shindig.securitytoken.secretkey"> <Value>${shindig.secretkey}</Value> </Attribute> - </Object> </Designate> </MetaData> Modified: trunk/amdatu-opensocial/opensocial-gadgetmanagement/pom.xml ============================================================================== --- trunk/amdatu-opensocial/opensocial-gadgetmanagement/pom.xml (original) +++ trunk/amdatu-opensocial/opensocial-gadgetmanagement/pom.xml Fri May 4 15:06:45 2012 @@ -144,7 +144,7 @@ <X-MultiTenant-Version>1</X-MultiTenant-Version> <X-MultiTenant-Bundle-Activator>org.amdatu.opensocial.gadgetmanagement.osgi.Activator</X-MultiTenant-Bundle-Activator> <X-MultiTenant-Binding>TENANTS</X-MultiTenant-Binding> - <X-MultiTenant-Scope>(|(org.amdatu.tenant.pid=%TENANTPID%)(objectClass=org.osgi.service.log.LogService))</X-MultiTenant-Scope> + <X-MultiTenant-Scope>(|(org.amdatu.tenant.pid=%TENANTPID%)(objectClass=org.osgi.service.log.LogService)(objectClass=org.amdatu.web.rest.jaxrs.JaxRsSpi))</X-MultiTenant-Scope> <Bundle-Activator>org.amdatu.tenant.adapter.MultiTenantBundleActivator</Bundle-Activator> <Bundle-SymbolicName> org.amdatu.opensocial.gadgetmanagement</Bundle-SymbolicName> <Embed-Dependency>*;scope=compile;artifactId=!org.amdatu.auth.tools.rest.doclet</Embed-Dependency> Modified: trunk/amdatu-opensocial/opensocial-profile/src/main/java/org/amdatu/opensocial/profile/osgi/Activator.java ============================================================================== --- trunk/amdatu-opensocial/opensocial-profile/src/main/java/org/amdatu/opensocial/profile/osgi/Activator.java (original) +++ trunk/amdatu-opensocial/opensocial-profile/src/main/java/org/amdatu/opensocial/profile/osgi/Activator.java Fri May 4 15:06:45 2012 @@ -15,7 +15,6 @@ */ package org.amdatu.opensocial.profile.osgi; -import org.amdatu.auth.tokenprovider.TokenProvider; import org.amdatu.opensocial.profile.PersonService; import org.amdatu.opensocial.profile.service.PersonDispatchExtenderFilter; import org.amdatu.opensocial.profile.service.PersonServiceImpl; @@ -50,8 +49,7 @@ manager.add( createComponent() .setInterface(DispatchExtenderFilter.class.getName(), properties) - .setImplementation(PersonDispatchExtenderFilter.class) - .add(createServiceDependency().setService(TokenProvider.class).setRequired(true))); + .setImplementation(PersonDispatchExtenderFilter.class)); } @Override Modified: trunk/amdatu-opensocial/opensocial-profile/src/main/java/org/amdatu/opensocial/profile/service/PersonDispatchExtenderFilter.java ============================================================================== --- trunk/amdatu-opensocial/opensocial-profile/src/main/java/org/amdatu/opensocial/profile/service/PersonDispatchExtenderFilter.java (original) +++ trunk/amdatu-opensocial/opensocial-profile/src/main/java/org/amdatu/opensocial/profile/service/PersonDispatchExtenderFilter.java Fri May 4 15:06:45 2012 @@ -47,7 +47,6 @@ public class PersonDispatchExtenderFilter implements DispatchExtenderFilter { // Service dependencies, injected by the framework private volatile BundleContext m_bundleContext; - private volatile TokenProvider m_tokenProvider; // Singleton instance private static PersonDispatchExtenderFilter INSTANCE = null; @@ -92,23 +91,31 @@ } private String getUserFromRequest(final HttpServletRequest request) { - String token = m_tokenProvider.getTokenFromRequest(request); - if (token != null) { - // Now decrypt to get the username and signature - try { - Map<String, String> attributes = m_tokenProvider.verifyToken(token); - if (attributes != null) { - return attributes.get(TokenProvider.USERNAME); + TokenProvider tokenProvider; + try { + tokenProvider = internalGetTokenProvider(); + if (tokenProvider != null) { + String token = tokenProvider.getTokenFromRequest(request); + if (token != null) { + // Now decrypt to get the username and signature + try { + Map<String, String> attributes = tokenProvider.verifyToken(token); + if (attributes != null) { + return attributes.get(TokenProvider.USERNAME); + } + } + catch (TokenProviderException e) { + // Ignore the exception here + } + catch (InvalidTokenException e) { + // Ignore the exception here + } } } - catch (TokenProviderException e) { - // Ignore the exception here - } - catch (InvalidTokenException e) { - // Ignore the exception here - } } - + catch (InvalidSyntaxException e1) { + // // Ignore exception here + } return null; } @@ -125,15 +132,24 @@ } private UserAdmin internalGetUserAdmin() throws InvalidSyntaxException { + return getTenantAwareService(UserAdmin.class); + } + + private TokenProvider internalGetTokenProvider() throws InvalidSyntaxException { + return getTenantAwareService(TokenProvider.class); + } + + @SuppressWarnings("unchecked") + private <T> T getTenantAwareService(Class<T> clazz) throws InvalidSyntaxException { Tenant tenant = m_tenant.get(); if (tenant == null) { return null; } - ServiceReference[] refs = m_bundleContext.getAllServiceReferences(UserAdmin.class.getName(), null); + ServiceReference[] refs = m_bundleContext.getAllServiceReferences(clazz.getName(), null); if (refs != null) { for (ServiceReference ref : refs) { if (tenant.getPID().equals(ref.getProperty(org.amdatu.tenant.Constants.PID_KEY))) { - return (UserAdmin) m_bundleContext.getService(ref); + return (T) m_bundleContext.getService(ref); } } } Modified: trunk/amdatu-opensocial/opensocial-shindig/pom.xml ============================================================================== --- trunk/amdatu-opensocial/opensocial-shindig/pom.xml (original) +++ trunk/amdatu-opensocial/opensocial-shindig/pom.xml Fri May 4 15:06:45 2012 @@ -245,8 +245,8 @@ <X-MultiTenant-Version>1</X-MultiTenant-Version> <X-MultiTenant-Bundle-Activator>org.amdatu.opensocial.shindig.osgi.Activator</X-MultiTenant-Bundle-Activator> <X-MultiTenant-Binding>PLATFORM</X-MultiTenant-Binding> - <X-MultiTenant-Scope>(|(org.amdatu.tenant.pid=%TENANTPID%)(objectClass=org.osgi.service.log.LogService))</X-MultiTenant-Scope> - <Bundle-Activator>org.amdatu.tenant.adapter.MultiTenantBundleActivator</Bundle-Activator> + <X-MultiTenant-Scope>(|(org.amdatu.tenant.pid=%TENANTPID%)(objectClass=org.osgi.service.log.LogService)(objectClass=org.amdatu.template.processor.TemplateEngine))</X-MultiTenant-Scope> + <Bundle-Activator>org.amdatu.opensocial.shindig.osgi.Activator</Bundle-Activator> <Bundle-SymbolicName>org.amdatu.opensocial.shindig</Bundle-SymbolicName> <Embed-Dependency>*;scope=compile;artifactId=!guice|guice-jmx|guice-multibindings|commons-beanutils|commons-beanutils-core|commons-collections|commons-digester|jdom|org.amdatu.auth.tools.rest.doclet</Embed-Dependency> <Embed-Transitive>true</Embed-Transitive> @@ -261,8 +261,6 @@ !junit.framework, !net.sf.cglib.proxy.*, !nu.xom, - !oracle.xml.parser.*, - !org.aopalliance.*, !org.apache.log4j, !org.apache.log, !org.apache.xml.*, @@ -275,7 +273,6 @@ !org.codehaus.jettison.*, !org.dom4j.*, !org.hibernate.*, - !org.jaxen.*, !org.mortbay.jetty.*, !org.mozilla.*, !org.openqa.selenium.*, @@ -289,8 +286,7 @@ </Export-Package> <_exportcontents> org.apache.shindig.*, - org.amdatu.opensocial.shindig, - net.oauth.* + org.amdatu.opensocial.shindig </_exportcontents> </instructions> </configuration> Modified: trunk/amdatu-opensocial/opensocial-shindig/src/main/java/org/amdatu/opensocial/shindig/module/ConfigurationAdminGuiceModule.java ============================================================================== --- trunk/amdatu-opensocial/opensocial-shindig/src/main/java/org/amdatu/opensocial/shindig/module/ConfigurationAdminGuiceModule.java (original) +++ trunk/amdatu-opensocial/opensocial-shindig/src/main/java/org/amdatu/opensocial/shindig/module/ConfigurationAdminGuiceModule.java Fri May 4 15:06:45 2012 @@ -23,12 +23,16 @@ import org.amdatu.template.processor.velocity.VelocityTemplateEngine; import java.io.File; +import java.io.FileOutputStream; import java.io.IOException; +import java.io.InputStream; import java.net.URISyntaxException; +import java.net.URL; import java.util.ArrayList; import java.util.List; import java.util.Properties; +import org.apache.commons.io.FileUtils; import org.apache.felix.dm.Component; import org.apache.felix.dm.DependencyManager; import org.apache.felix.dm.ServiceDependency; @@ -103,26 +107,25 @@ * @throws TemplateException */ private void copyContainerJs() throws IOException, URISyntaxException, TemplateException { - // FIXME: is this OK? // Create & fill the context TemplateContext context = m_templateEngine.createContext(); + File workDirectory = m_configService.get(ShindigConfigurationService.WORKDIR, File.class); // Copy all properties from config admin - String prefix = ShindigConfigurationService.SHINDIG_CONFIG_PID + "/"; for (Object key : m_properties.keySet()) { Object value = m_properties.get(key); - context.put(prefix + key.toString(), value.toString()); + context.put(key.toString(), value.toString()); } // As of 0.4.0 the context path is always empty (no WAR support) - context.put("system/amdatu.contextpath", ""); + context.put("amdatu_contextpath", ""); - // Source file + // First write the source fileSource file Bundle bundle = m_bundleContext.getBundle(); - File sourceFile = new File(bundle.getResource(CONTAINER_JS).toURI()); + File sourceFile = new File(workDirectory, "container.js.tmp"); + toTempFile(bundle.getResource(CONTAINER_JS), sourceFile); // Target file - File workDirectory = m_configService.get(ShindigConfigurationService.WORKDIR, File.class); File targetFile = new File(workDirectory, "container.js"); // Create the processor using an input file @@ -130,5 +133,40 @@ // Process the input file and write the result to an output file processor.generateFile(context, targetFile); + m_properties.put("shindig.containers.default", targetFile.getAbsolutePath()); + + // Delete the temporary source file + sourceFile.delete(); + } + + private void toTempFile(URL url, File targetFile) throws IOException { + InputStream is = null; + FileOutputStream fos = null; + byte[] buffer = new byte[1024]; + try { + is = url.openStream(); + fos = new FileOutputStream(targetFile); + int size; + while ((size = is.read(buffer)) != -1) { + fos.write(buffer, 0, size); + } + } + finally { + if (fos != null) { + try { + fos.close(); + } + finally { + if (is != null) { + try { + is.close(); + } + catch (IOException e) { + m_logService.log(LogService.LOG_ERROR, "Couldn't load oAuth private key", e); + } + } + } + } + } } } Modified: trunk/amdatu-opensocial/opensocial-shindig/src/main/java/org/amdatu/opensocial/shindig/osgi/Activator.java ============================================================================== --- trunk/amdatu-opensocial/opensocial-shindig/src/main/java/org/amdatu/opensocial/shindig/osgi/Activator.java (original) +++ trunk/amdatu-opensocial/opensocial-shindig/src/main/java/org/amdatu/opensocial/shindig/osgi/Activator.java Fri May 4 15:06:45 2012 @@ -15,7 +15,6 @@ */ package org.amdatu.opensocial.shindig.osgi; -import org.amdatu.auth.tokenprovider.TokenProvider; import org.amdatu.opensocial.gadgetcontainer.OpenSocialContainer; import org.amdatu.opensocial.gadgetcontainer.SecurityTokenService; import org.amdatu.opensocial.shindig.OAuthModule; @@ -48,6 +47,7 @@ import org.apache.shindig.social.opensocial.spi.AppDataService; import org.osgi.framework.BundleContext; import org.osgi.framework.Constants; +import org.osgi.service.cm.ManagedService; import org.osgi.service.log.LogService; /** @@ -77,7 +77,7 @@ manager.add( createComponent() .setImplementation(ShindigConfigurationServiceImpl.class) - .setInterface(ShindigConfigurationService.class.getName(), null) + .setInterface(new String[]{ShindigConfigurationService.class.getName(), ManagedService.class.getName()}, null) .add(createServiceDependency().setService(LogService.class).setRequired(true)) .add(createConfigurationDependency().setPid(ShindigConfigurationService.SHINDIG_CONFIG_PID))); @@ -174,8 +174,7 @@ manager.add( createComponent() .setInterface(DispatchExtenderFilter.class.getName(), properties2) - .setImplementation(ShindigDispatchExtenderFilter.class) - .add(createServiceDependency().setService(TokenProvider.class).setRequired(true))); + .setImplementation(ShindigDispatchExtenderFilter.class)); // FIXME: this is the only multi-tenant service in this bundle and it cannot be moved // due to Shindig dependencies. So we must fix multi-tenancy manually here. Modified: trunk/amdatu-opensocial/opensocial-shindig/src/main/java/org/amdatu/opensocial/shindig/service/ShindigDispatchExtenderFilter.java ============================================================================== --- trunk/amdatu-opensocial/opensocial-shindig/src/main/java/org/amdatu/opensocial/shindig/service/ShindigDispatchExtenderFilter.java (original) +++ trunk/amdatu-opensocial/opensocial-shindig/src/main/java/org/amdatu/opensocial/shindig/service/ShindigDispatchExtenderFilter.java Fri May 4 15:06:45 2012 @@ -48,7 +48,6 @@ public class ShindigDispatchExtenderFilter implements DispatchExtenderFilter { // Service dependencies, injected by the framework private volatile BundleContext m_bundleContext; - private volatile TokenProvider m_tokenProvider; // Singleton instance private static ShindigDispatchExtenderFilter INSTANCE = null; @@ -93,23 +92,29 @@ } private String getUserFromRequest(final HttpServletRequest request) { - String token = m_tokenProvider.getTokenFromRequest(request); - if (token != null) { - // Now decrypt to get the username and signature - try { - Map<String, String> attributes = m_tokenProvider.verifyToken(token); - if (attributes != null) { - return attributes.get(TokenProvider.USERNAME); + TokenProvider tokenProvider; + try { + tokenProvider = internalGetTokenProvider(); + String token = tokenProvider.getTokenFromRequest(request); + if (token != null) { + // Now decrypt to get the username and signature + try { + Map<String, String> attributes = tokenProvider.verifyToken(token); + if (attributes != null) { + return attributes.get(TokenProvider.USERNAME); + } + } + catch (TokenProviderException e) { + // Ignore the exception here + } + catch (InvalidTokenException e) { + // Ignore the exception here } - } - catch (TokenProviderException e) { - // Ignore the exception here - } - catch (InvalidTokenException e) { - // Ignore the exception here } } - + catch (InvalidSyntaxException e1) { + // // Ignore exception here + } return null; } @@ -126,15 +131,24 @@ } private UserAdmin internalGetUserAdmin() throws InvalidSyntaxException { + return getTenantAwareService(UserAdmin.class); + } + + private TokenProvider internalGetTokenProvider() throws InvalidSyntaxException { + return getTenantAwareService(TokenProvider.class); + } + + @SuppressWarnings("unchecked") + private <T> T getTenantAwareService(Class<T> clazz) throws InvalidSyntaxException { Tenant tenant = m_tenant.get(); if (tenant == null) { return null; } - ServiceReference[] refs = m_bundleContext.getAllServiceReferences(UserAdmin.class.getName(), null); + ServiceReference[] refs = m_bundleContext.getAllServiceReferences(clazz.getName(), null); if (refs != null) { for (ServiceReference ref : refs) { if (tenant.getPID().equals(ref.getProperty(org.amdatu.tenant.Constants.PID_KEY))) { - return (UserAdmin) m_bundleContext.getService(ref); + return (T) m_bundleContext.getService(ref); } } } Modified: trunk/amdatu-opensocial/opensocial-shindig/src/main/java/org/amdatu/opensocial/shindig/service/ShindigRegistrationServiceImpl.java ============================================================================== --- trunk/amdatu-opensocial/opensocial-shindig/src/main/java/org/amdatu/opensocial/shindig/service/ShindigRegistrationServiceImpl.java (original) +++ trunk/amdatu-opensocial/opensocial-shindig/src/main/java/org/amdatu/opensocial/shindig/service/ShindigRegistrationServiceImpl.java Fri May 4 15:06:45 2012 @@ -99,7 +99,7 @@ /** * The init() method is invoked by the Felix dependency manager. - * + * * @throws ConfigurationException */ public void init() throws ConfigurationException { @@ -155,6 +155,9 @@ servletProperties.put(org.amdatu.web.dispatcher.Constants.ALIAS_KEY, GuiceInjectorServletImpl.SERVLET_ALIAS); servletProperties.put(org.amdatu.web.dispatcher.Constants.CONTEXT_ID_KEY, Activator.CONTEXTID); + // Bind this service to the PLATFORM tenant + servletProperties.put(org.amdatu.tenant.Constants.PID_KEY, org.amdatu.tenant.Constants.PID_VALUE_PLATFORM); + Component servletComponent = m_dependencyManager.createComponent() .setImplementation(guiceInjectorServlet) .setInterface(Servlet.class.getName(), servletProperties); Modified: trunk/amdatu-opensocial/opensocial-shindig/src/main/resources/conf/container.js ============================================================================== --- trunk/amdatu-opensocial/opensocial-shindig/src/main/resources/conf/container.js (original) +++ trunk/amdatu-opensocial/opensocial-shindig/src/main/resources/conf/container.js Fri May 4 15:06:45 2012 @@ -69,25 +69,25 @@ // iframeBaseUri will automatically have the host inserted // if locked domain is enabled and the implementation supports it. // query parameters will be added. -"gadgets.iframeBaseUri" : "${system/amdatu.contextpath}/gadgets/ifr", -"gadgets.uri.iframe.basePath" : "${system/amdatu.contextpath}/gadgets/ifr", +"gadgets.iframeBaseUri" : "${amdatu_contextpath}/gadgets/ifr", +"gadgets.uri.iframe.basePath" : "${amdatu_contextpath}/gadgets/ifr", // jsUriTemplate will have %host% and %js% substituted. // No locked domain special cases, but jsUriTemplate must // never conflict with a lockedDomainSuffix. -"gadgets.jsUriTemplate" : "http://%host%${system/amdatu.contextpath}/gadgets/js/%js%", +"gadgets.jsUriTemplate" : "http://%host%${amdatu_contextpath}/gadgets/js/%js%", //New configuration for iframeUri generation: "gadgets.uri.iframe.lockedDomainSuffix" : "-a.example.com:8080", "gadgets.uri.iframe.unlockedDomain" : "www.example.com:8080", -"gadgets.uri.iframe.basePath" : "${system/amdatu.contextpath}/gadgets/ifr", +"gadgets.uri.iframe.basePath" : "${amdatu_contextpath}/gadgets/ifr", "gadgets.uri.js.host" : "http://www.example.com/", -"gadgets.uri.js.path" : "${system/amdatu.contextpath}/gadgets/js", +"gadgets.uri.js.path" : "${amdatu_contextpath}/gadgets/js", // Callback URL. Scheme relative URL for easy switch between https/http. -"gadgets.uri.oauth.callbackTemplate" : "//%host%${system/amdatu.contextpath}/gadgets/oauthcallback", +"gadgets.uri.oauth.callbackTemplate" : "//%host%${amdatu_contextpath}/gadgets/oauthcallback", // Use an insecure security token by default //"gadgets.securityTokenType" : "insecure", @@ -95,12 +95,12 @@ // Config param to load Opensocial data for social // preloads in data pipelining. %host% will be // substituted with the current host. -"gadgets.osDataUri" : "http://%host%${system/amdatu.contextpath}/rpc", +"gadgets.osDataUri" : "http://%host%${amdatu_contextpath}/rpc", // Uncomment these to switch to a secure version // "gadgets.securityTokenType" : "secure", -"gadgets.securityTokenKeyFile" : "${org.amdatu.opensocial.shindig/workdir}/securitytokenkey.txt", +"gadgets.securityTokenKeyFile" : "${workdir}/securitytokenkey.txt", // URI for the default shindig test instance. "defaultShindigTestHost": "http://%tenant_host%:${SERVER_PORT}", @@ -114,16 +114,16 @@ // Default Js Uri config: also must be overridden. "gadgets.uri.js.host": "${Cur['defaultShindigTestHost']}", -"gadgets.uri.js.path": "${system/amdatu.contextpath}/gadgets/js", +"gadgets.uri.js.path": "${amdatu_contextpath}/gadgets/js", // Default concat Uri config; used for testing. "gadgets.uri.concat.host" : "${Cur['defaultShindigProxyConcatAuthority']}", -"gadgets.uri.concat.path" : "${system/amdatu.contextpath}/gadgets/concat", +"gadgets.uri.concat.path" : "${amdatu_contextpath}/gadgets/concat", "gadgets.uri.concat.js.splitToken" : "false", // Default proxy Uri config; used for testing. "gadgets.uri.proxy.host" : "${Cur['defaultShindigProxyConcatAuthority']}", -"gadgets.uri.proxy.path" : "${system/amdatu.contextpath}/gadgets/proxy", +"gadgets.uri.proxy.path" : "${amdatu_contextpath}/gadgets/proxy", // This config data will be passed down to javascript. Please // configure your object using the feature name rather than @@ -135,18 +135,18 @@ "core.io" : { // Note: /proxy is an open proxy. Be careful how you expose this! // Note: Here // is replaced with the current protocol http/https - "proxyUrl" : "//%host%${system/amdatu.contextpath}/gadgets/proxy?container=default&refresh=%refresh%&url=%url%%rewriteMime%", - "jsonProxyUrl" : "//%host%${system/amdatu.contextpath}/gadgets/makeRequest" + "proxyUrl" : "//%host%${amdatu_contextpath}/gadgets/proxy?container=default&refresh=%refresh%&url=%url%%rewriteMime%", + "jsonProxyUrl" : "//%host%${amdatu_contextpath}/gadgets/makeRequest" }, "views" : { "profile" : { "isOnlyVisible" : false, - "urlTemplate" : "http://%host%${system/amdatu.contextpath}/gadgets/profile?{var}", + "urlTemplate" : "http://%host%${amdatu_contextpath}/gadgets/profile?{var}", "aliases": ["DASHBOARD", "default"] }, "canvas" : { "isOnlyVisible" : true, - "urlTemplate" : "http://%host%${system/amdatu.contextpath}/gadgets/canvas?{var}", + "urlTemplate" : "http://%host%${amdatu_contextpath}/gadgets/canvas?{var}", "aliases" : ["FULL_PAGE"] } }, @@ -223,7 +223,7 @@ // parameter if it passes input validation and is not null. // This should never be on the same host in a production environment! // Only use this for TESTING! - "parentRelayUrl" : "${system/amdatu.contextpath}/container/rpc_relay.html", + "parentRelayUrl" : "${amdatu_contextpath}/container/rpc_relay.html", // If true, this will use the legacy ifpc wire format when making rpc // requests. @@ -243,9 +243,9 @@ "opensocial" : { // Path to fetch opensocial data from // Must be on the same domain as the gadget rendering server - "path" : "http://%host%${system/amdatu.contextpath}/rpc", + "path" : "http://%host%${amdatu_contextpath}/rpc", // Path to issue invalidate calls - "invalidatePath" : "http://%host%${system/amdatu.contextpath}/rpc", + "invalidatePath" : "http://%host%${amdatu_contextpath}/rpc", "domain" : "shindig", "enableCaja" : false, "supportedFields" : { @@ -271,7 +271,7 @@ }, "osapi" : { // The endpoints to query for available JSONRPC/REST services - "endPoints" : [ "http://%host%${system/amdatu.contextpath}/rpc" ] + "endPoints" : [ "http://%host%${amdatu_contextpath}/rpc" ] }, "osml": { // OSML library resource. Can be set to null or the empty string to disable OSML Modified: trunk/amdatu-opensocial/opensocial-stores/mem-store-oauthdata/pom.xml ============================================================================== --- trunk/amdatu-opensocial/opensocial-stores/mem-store-oauthdata/pom.xml (original) +++ trunk/amdatu-opensocial/opensocial-stores/mem-store-oauthdata/pom.xml Fri May 4 15:06:45 2012 @@ -28,6 +28,7 @@ <description>Provides an in-memory implementation of the OAuth Data store</description> <dependencies> + <!-- Provided dependencies --> <dependency> <groupId>org.amdatu.tenant</groupId> <artifactId>org.amdatu.tenant.api</artifactId> @@ -43,6 +44,14 @@ <artifactId>org.amdatu.opensocial.gadgetmanagement</artifactId> <type>bundle</type> </dependency> + + <!-- Embedded dependencies --> + <dependency> + <groupId>commons-io</groupId> + <artifactId>commons-io</artifactId> + <version>2.2</version> + <scope>compile</scope> + </dependency> </dependencies> <build> @@ -61,6 +70,11 @@ <X-MultiTenant-Scope>(|(org.amdatu.tenant.pid=%TENANTPID%)(objectClass=org.osgi.service.log.LogService))</X-MultiTenant-Scope> <Bundle-Activator>org.amdatu.tenant.adapter.MultiTenantBundleActivator</Bundle-Activator> <Bundle-SymbolicName>org.amdatu.opensocial.store.mem.oauthdata</Bundle-SymbolicName> + <Embed-Dependency>*;scope=compile</Embed-Dependency> + <Import-Package> + net.oauth;version="[1.0,1.1)", + * + </Import-Package> </instructions> </configuration> </plugin> Modified: trunk/amdatu-opensocial/pom.xml ============================================================================== --- trunk/amdatu-opensocial/pom.xml (original) +++ trunk/amdatu-opensocial/pom.xml Fri May 4 15:06:45 2012 @@ -140,6 +140,13 @@ </dependency> <dependency> <groupId>org.amdatu.opensocial</groupId> + <artifactId>org.amdatu.opensocial.store.mem.oauthdata</artifactId> + <version>${project.version}</version> + <scope>provided</scope> + <type>bundle</type> + </dependency> + <dependency> + <groupId>org.amdatu.opensocial</groupId> <artifactId>org.amdatu.opensocial.profile</artifactId> <version>${project.version}</version> <scope>provided</scope> Modified: trunk/amdatu-opensocial/release-demo/pom.xml ============================================================================== --- trunk/amdatu-opensocial/release-demo/pom.xml (original) +++ trunk/amdatu-opensocial/release-demo/pom.xml Fri May 4 15:06:45 2012 @@ -301,6 +301,18 @@ </dependency> <dependency> <groupId>org.amdatu.auth</groupId> + <artifactId>org.amdatu.auth.oauth.store.consumer.mem</artifactId> + <version>${org.amdatu.auth.version}</version> + <scope>compile</scope> + </dependency> + <dependency> + <groupId>org.amdatu.auth</groupId> + <artifactId>org.amdatu.auth.oauth.store.nonce.mem</artifactId> + <version>${org.amdatu.auth.version}</version> + <scope>compile</scope> + </dependency> + <dependency> + <groupId>org.amdatu.auth</groupId> <artifactId>org.amdatu.auth.oauth.server</artifactId> <version>${org.amdatu.auth.version}</version> <scope>compile</scope> @@ -313,6 +325,12 @@ </dependency> <dependency> <groupId>org.amdatu.auth</groupId> + <artifactId>org.amdatu.auth.tokenstore.mem</artifactId> + <version>${org.amdatu.auth.version}</version> + <scope>compile</scope> + </dependency> + <dependency> + <groupId>org.amdatu.auth</groupId> <artifactId>org.amdatu.auth.useradmin.rest</artifactId> <version>${org.amdatu.auth.version}</version> <scope>compile</scope> @@ -345,6 +363,18 @@ </dependency> <dependency> <groupId>org.amdatu.opensocial</groupId> + <artifactId>org.amdatu.opensocial.gadgetmanagement</artifactId> + <type>bundle</type> + <scope>compile</scope> + </dependency> + <dependency> + <groupId>org.amdatu.opensocial</groupId> + <artifactId>org.amdatu.opensocial.store.mem.oauthdata</artifactId> + <type>bundle</type> + <scope>compile</scope> + </dependency> + <dependency> + <groupId>org.amdatu.opensocial</groupId> <artifactId>org.amdatu.opensocial.profile</artifactId> <type>bundle</type> <scope>compile</scope> @@ -379,6 +409,13 @@ <type>bundle</type> <scope>compile</scope> </dependency> + + <!-- Extra bundles --> + <dependency> + <groupId>org.apache.felix</groupId> + <artifactId>org.apache.felix.webconsole</artifactId> + <version>3.1.8</version> + </dependency> </dependencies> <build> <defaultGoal>package</defaultGoal> Modified: trunk/amdatu-opensocial/release-demo/src/main/assembly/bin-component.xml ============================================================================== --- trunk/amdatu-opensocial/release-demo/src/main/assembly/bin-component.xml (original) +++ trunk/amdatu-opensocial/release-demo/src/main/assembly/bin-component.xml Fri May 4 15:06:45 2012 @@ -59,6 +59,7 @@ <includes> <include>org.amdatu.auth:*</include> <include>org.amdatu.opensocial:*</include> + <include>org.apache.felix:org.apache.felix.webconsole</include> </includes> <excludes> <exclude>org.amdatu.auth:org.amdatu.auth.config</exclude> @@ -70,7 +71,7 @@ <fileMode>0644</fileMode> </dependencySet> - <!--Unpack the the config files to deploy directory --> + <!--Unpack the the config files to deploy directory --> <dependencySet> <outputDirectory>deploy</outputDirectory> <includes> @@ -115,7 +116,7 @@ </fileSet> <fileSet> <directory>src/main/resources/config</directory> - <outputDirectory>deploy</outputDirectory> + <outputDirectory>multitenantweb</outputDirectory> <filtered>true</filtered> </fileSet> </fileSets> _______________________________________________ Amdatu-commits mailing list [email protected] http://lists.amdatu.org/mailman/listinfo/amdatu-commits
