diff --git a/.gitignore b/.gitignore index 666fe4c..4885408 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ /bin -/target +target .idea/ *.iml -/alf_data_dev/ +alf_data_dev/ diff --git a/alfresco-repo/pom.xml b/alfresco-repo/pom.xml new file mode 100644 index 0000000..8190aad --- /dev/null +++ b/alfresco-repo/pom.xml @@ -0,0 +1,132 @@ + + + 4.0.0 + de.fmaul.alfresco + alfresco-default-user-avatars + 1.2.0 + alfresco-default-user-avatars Repository AMP project + amp + Default Users Avatar Generator + + + org.alfresco.maven + alfresco-sdk-parent + 2.0.0-SNAPSHOT + + + + + + + + 5.0.b + WARN + alf_data_dev + + local + + + /alfresco + + + + + + + + + + + + + ${alfresco.groupId} + alfresco-platform-distribution + ${alfresco.version} + pom + import + + + + + + + ${alfresco.groupId} + alfresco-repository + ${alfresco.version} + provided + + + + + + + + maven-dependency-plugin + + + get-postgres-dialect + generate-test-resources + + unpack + + + + + ${alfresco.groupId} + alfresco-repository + ${alfresco.version} + + + alfresco/dbscripts/create/org.hibernate.dialect.PostgreSQLDialect/*,alfresco/ibatis/org.hibernate.dialect.PostgreSQLDialect/* + ${project.build.testOutputDirectory} + + + + + + + maven-antrun-plugin + + + config-h2-dialect + generate-test-resources + + run + + + + + + + + + + + + + + diff --git a/alfresco-repo/run.sh b/alfresco-repo/run.sh new file mode 100644 index 0000000..c3cf0f9 --- /dev/null +++ b/alfresco-repo/run.sh @@ -0,0 +1,9 @@ +#!/bin/bash +# Downloads the spring-loaded lib if not existing and runs repository AMP +springloadedfile=~/.m2/repository/org/springframework/springloaded/1.2.5.RELEASE/springloaded-1.2.5.RELEASE.jar + +if [ ! -f $springloadedfile ]; then +mvn validate -Psetup +fi + +MAVEN_OPTS="-javaagent:$springloadedfile -noverify -Xms256m -Xmx2G -XX:PermSize=300m" mvn integration-test -Pamp-to-war \ No newline at end of file diff --git a/src/main/amp/config/alfresco/module/alfresco-default-user-avatars/alfresco-global.properties b/alfresco-repo/src/main/amp/config/alfresco/module/alfresco-default-user-avatars/alfresco-global.properties similarity index 100% rename from src/main/amp/config/alfresco/module/alfresco-default-user-avatars/alfresco-global.properties rename to alfresco-repo/src/main/amp/config/alfresco/module/alfresco-default-user-avatars/alfresco-global.properties diff --git a/src/main/amp/config/alfresco/module/alfresco-default-user-avatars/log4j.properties b/alfresco-repo/src/main/amp/config/alfresco/module/alfresco-default-user-avatars/log4j.properties similarity index 100% rename from src/main/amp/config/alfresco/module/alfresco-default-user-avatars/log4j.properties rename to alfresco-repo/src/main/amp/config/alfresco/module/alfresco-default-user-avatars/log4j.properties diff --git a/src/main/amp/config/alfresco/module/alfresco-default-user-avatars/module-context.xml b/alfresco-repo/src/main/amp/config/alfresco/module/alfresco-default-user-avatars/module-context.xml similarity index 96% rename from src/main/amp/config/alfresco/module/alfresco-default-user-avatars/module-context.xml rename to alfresco-repo/src/main/amp/config/alfresco/module/alfresco-default-user-avatars/module-context.xml index 3bc4067..a47114d 100644 --- a/src/main/amp/config/alfresco/module/alfresco-default-user-avatars/module-context.xml +++ b/alfresco-repo/src/main/amp/config/alfresco/module/alfresco-default-user-avatars/module-context.xml @@ -29,6 +29,7 @@ + @@ -54,7 +55,7 @@ ${version.schema} - 9999 + 99999 diff --git a/src/main/amp/log4j.properties b/alfresco-repo/src/main/amp/log4j.properties similarity index 100% rename from src/main/amp/log4j.properties rename to alfresco-repo/src/main/amp/log4j.properties diff --git a/src/main/amp/module.properties b/alfresco-repo/src/main/amp/module.properties similarity index 95% rename from src/main/amp/module.properties rename to alfresco-repo/src/main/amp/module.properties index 0e5c045..158500f 100644 --- a/src/main/amp/module.properties +++ b/alfresco-repo/src/main/amp/module.properties @@ -24,7 +24,7 @@ module.id=${project.artifactId} #module.aliases=myModule-123, my-module module.title=${project.name} module.description=${project.description} -module.version=${noSnapshotVersion} +module.version=${project.version} # The following optional properties can be used to prevent the module from being added # to inappropriate versions of the WAR file. diff --git a/src/main/amp/web/licenses/README-licenses.txt b/alfresco-repo/src/main/amp/web/licenses/README-licenses.txt similarity index 100% rename from src/main/amp/web/licenses/README-licenses.txt rename to alfresco-repo/src/main/amp/web/licenses/README-licenses.txt diff --git a/src/main/java/de/fmaul/alfresco/avatars/AvatarGenerator.java b/alfresco-repo/src/main/java/de/fmaul/alfresco/avatars/AvatarGenerator.java similarity index 100% rename from src/main/java/de/fmaul/alfresco/avatars/AvatarGenerator.java rename to alfresco-repo/src/main/java/de/fmaul/alfresco/avatars/AvatarGenerator.java diff --git a/src/main/java/de/fmaul/alfresco/avatars/AvatarService.java b/alfresco-repo/src/main/java/de/fmaul/alfresco/avatars/AvatarService.java similarity index 100% rename from src/main/java/de/fmaul/alfresco/avatars/AvatarService.java rename to alfresco-repo/src/main/java/de/fmaul/alfresco/avatars/AvatarService.java diff --git a/alfresco-repo/src/main/java/de/fmaul/alfresco/avatars/AvatarServiceImpl.java b/alfresco-repo/src/main/java/de/fmaul/alfresco/avatars/AvatarServiceImpl.java new file mode 100644 index 0000000..59b8dcc --- /dev/null +++ b/alfresco-repo/src/main/java/de/fmaul/alfresco/avatars/AvatarServiceImpl.java @@ -0,0 +1,108 @@ +package de.fmaul.alfresco.avatars; + +import java.io.Serializable; +import java.util.Map; + +import org.alfresco.model.ContentModel; +import org.alfresco.service.cmr.repository.ChildAssociationRef; +import org.alfresco.service.cmr.repository.ContentService; +import org.alfresco.service.cmr.repository.ContentWriter; +import org.alfresco.service.cmr.repository.NodeRef; +import org.alfresco.service.cmr.repository.NodeService; +import org.alfresco.service.namespace.NamespaceService; +import org.alfresco.service.namespace.QName; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.alfresco.service.transaction.TransactionService; +import org.alfresco.repo.transaction.AlfrescoTransactionSupport; +import org.alfresco.repo.transaction.RetryingTransactionHelper; +import org.alfresco.repo.transaction.AlfrescoTransactionSupport.TxnReadState; +import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; +import org.alfresco.repo.security.authentication.AuthenticationUtil; + +public class AvatarServiceImpl implements AvatarService { + + Log log = LogFactory.getLog(AvatarServiceImpl.class); + + private NodeService nodeService; + private ContentService contentService; + private TransactionService transactionService; + private AvatarGenerator avatarGenerator; + + @Override + public NodeRef createDefaultUserAvatar(final NodeRef person) { + + if (avatarGenerator.avatarCanBeGenerated(person)) { + + RetryingTransactionHelper txnHelper = transactionService.getRetryingTransactionHelper(); + txnHelper.setForceWritable(true); + boolean requiresNew = false; + if (AlfrescoTransactionSupport.getTransactionReadState() != TxnReadState.TXN_READ_WRITE) + { + //We can be in a read-only transaction, so force a new transaction + requiresNew = true; + } + + return txnHelper.doInTransaction(new RetryingTransactionCallback() + { + + @Override + public NodeRef execute() throws Throwable + { + return AuthenticationUtil.runAs(new AuthenticationUtil.RunAsWork() + { + public NodeRef doWork() throws Exception + { + String userName = (String) nodeService.getProperty(person, ContentModel.PROP_USERNAME); + + String name = DEFAULT_AVATAR_NAME_PREFIX + userName + ".png"; + QName assocQName = QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, QName.createValidLocalName(name)); + + ChildAssociationRef avatarNodeAssoc = nodeService.createNode(person, ContentModel.ASSOC_PREFERENCE_IMAGE, assocQName, + ContentModel.TYPE_CONTENT); + + NodeRef avatarNode = avatarNodeAssoc.getChildRef(); + nodeService.setProperty(avatarNode, ContentModel.PROP_NAME, name); + + ContentWriter writer = contentService.getWriter(avatarNode, ContentModel.PROP_CONTENT, true); + writer.guessMimetype(name); + + avatarGenerator.createAvatar(person, writer.getContentOutputStream()); + + nodeService.createAssociation(person, avatarNode, ContentModel.ASSOC_AVATAR); + + return avatarNode; + } + }, AuthenticationUtil.getSystemUserName()); + } + + }, false, requiresNew); + + + } + return null; + } + + @Override + public boolean avatarUpdateNeeded(Map before, Map after) { + return avatarGenerator.avatarUpdateNeeded(before, after); + } + + public void setNodeService(NodeService nodeService) { + this.nodeService = nodeService; + } + + public void setContentService(ContentService contentService) { + this.contentService = contentService; + } + + public void setAvatarGenerator(AvatarGenerator avatarGenerator) { + this.avatarGenerator = avatarGenerator; + } + + public void setTransactionService(TransactionService transactionService) + { + this.transactionService = transactionService; + } + +} diff --git a/src/main/java/de/fmaul/alfresco/avatars/DefaultPersonAvatarBehaviour.java b/alfresco-repo/src/main/java/de/fmaul/alfresco/avatars/DefaultPersonAvatarBehaviour.java similarity index 100% rename from src/main/java/de/fmaul/alfresco/avatars/DefaultPersonAvatarBehaviour.java rename to alfresco-repo/src/main/java/de/fmaul/alfresco/avatars/DefaultPersonAvatarBehaviour.java diff --git a/src/main/java/de/fmaul/alfresco/avatars/InitialsWithColorAvatarGenerator.java b/alfresco-repo/src/main/java/de/fmaul/alfresco/avatars/InitialsWithColorAvatarGenerator.java similarity index 100% rename from src/main/java/de/fmaul/alfresco/avatars/InitialsWithColorAvatarGenerator.java rename to alfresco-repo/src/main/java/de/fmaul/alfresco/avatars/InitialsWithColorAvatarGenerator.java diff --git a/src/main/java/de/fmaul/alfresco/avatars/UpdateMissingUserAvatarsPatch.java b/alfresco-repo/src/main/java/de/fmaul/alfresco/avatars/UpdateMissingUserAvatarsPatch.java similarity index 100% rename from src/main/java/de/fmaul/alfresco/avatars/UpdateMissingUserAvatarsPatch.java rename to alfresco-repo/src/main/java/de/fmaul/alfresco/avatars/UpdateMissingUserAvatarsPatch.java diff --git a/src/test/properties/local/alfresco-global.properties b/alfresco-repo/src/test/properties/local/alfresco-global.properties similarity index 82% rename from src/test/properties/local/alfresco-global.properties rename to alfresco-repo/src/test/properties/local/alfresco-global.properties index 419cca7..17b2754 100644 --- a/src/test/properties/local/alfresco-global.properties +++ b/alfresco-repo/src/test/properties/local/alfresco-global.properties @@ -20,12 +20,12 @@ # Sample custom content and index data location # This will create alf_data Relative to appserver run folder -# In this default file we take the property from the POM (for compatbility with local jetty and jboss deployments) but it can also be edited here. +# In this default file we take the property from the POM (for compatibility with local tomcat and jboss deployments) but it can also be edited here. dir.root=${alfresco.data.location} # Allowed values are: NONE, AUTO, FULL index.recovery.mode=NONE # As we run embedded, we set Lucene -index.subsystem.name=lucene +index.subsystem.name=buildonly #dir.keystore=. #keystore.password=storepassword @@ -46,14 +46,9 @@ db.pool.max=100 # File servers related properties # For local builds we disable CIFS and FTP. Edit the following property to reenable them -smb.server.enabled=false -smb.server.name=CFS_SHARE_LOCAL -smb.server.domain=mycompany.com -smb.server.bindto=127.0.0.1 -smb.tcpip.port=1445 -netbios.session.port=1139 -netbios.name.port=1137 -netbios.datagram.port=1138 -ftp.server.enables=false +cifs.enabled=false + +ftp.enabled=false ftp.port=1121 -ftp.authenticator=alfresco \ No newline at end of file +ftp.authenticator=alfresco + diff --git a/alfresco-repo/src/test/resources/alfresco/extension/disable-webscript-caching-context.xml b/alfresco-repo/src/test/resources/alfresco/extension/disable-webscript-caching-context.xml new file mode 100644 index 0000000..8d9fb35 --- /dev/null +++ b/alfresco-repo/src/test/resources/alfresco/extension/disable-webscript-caching-context.xml @@ -0,0 +1,53 @@ + + + + + + + + javascript + + + js + + + + false + + + + + true + + + + + + + + + + ${spaces.store} + + + ${spaces.company_home.childname} + + + + + diff --git a/alfresco-repo/src/test/resources/log4j.properties b/alfresco-repo/src/test/resources/log4j.properties new file mode 100644 index 0000000..bf4a472 --- /dev/null +++ b/alfresco-repo/src/test/resources/log4j.properties @@ -0,0 +1,266 @@ +# This is a full override of Alfresco 4.2.b log4j.properties +# This file overwrites the alfresco.war log4j.properties + +# Set root logger level to error +log4j.rootLogger=${app.log.root.level}, Console, File + +###### Console appender definition ####### + +# All outputs currently set to be a ConsoleAppender. +log4j.appender.Console=org.apache.log4j.ConsoleAppender +log4j.appender.Console.layout=org.apache.log4j.PatternLayout + +# use log4j NDC to replace %x with tenant domain / username +log4j.appender.Console.layout.ConversionPattern=%d{ISO8601} %x %-5p [%c{3}] [%t] %m%n +#log4j.appender.Console.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c] %m%n + +###### File appender definition ####### +log4j.appender.File=org.apache.log4j.DailyRollingFileAppender +log4j.appender.File.File=${app.log.dir}alfresco.log +log4j.appender.File.Append=true +log4j.appender.File.DatePattern='.'yyyy-MM-dd +log4j.appender.File.layout=org.apache.log4j.PatternLayout +log4j.appender.File.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c] %m%n + +###### Hibernate specific appender definition ####### +#log4j.appender.file=org.apache.log4j.FileAppender +#log4j.appender.file.File=hibernate.log +#log4j.appender.file.layout=org.apache.log4j.PatternLayout +#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n + +###### Log level overrides ####### + +# Commented-in loggers will be exposed as JMX MBeans (refer to org.alfresco.repo.admin.Log4JHierarchyInit) +# Hence, generally useful loggers should be listed with at least ERROR level to allow simple runtime +# control of the level via a suitable JMX Console. Also, any other loggers can be added transiently via +# Log4j addLoggerMBean as long as the logger exists and has been loaded. + +# Hibernate +log4j.logger.org.hibernate=error +log4j.logger.org.hibernate.util.JDBCExceptionReporter=fatal +log4j.logger.org.hibernate.event.def.AbstractFlushingEventListener=fatal +log4j.logger.org.hibernate.type=warn +log4j.logger.org.hibernate.cfg.SettingsFactory=warn + +# Spring +log4j.logger.org.springframework=warn +# Turn off Spring remoting warnings that should really be info or debug. +log4j.logger.org.springframework.remoting.support=error +log4j.logger.org.springframework.util=error + +# Axis/WSS4J +log4j.logger.org.apache.axis=info +log4j.logger.org.apache.ws=info + +# CXF +log4j.logger.org.apache.cxf=error + +# MyFaces +log4j.logger.org.apache.myfaces.util.DebugUtils=info +log4j.logger.org.apache.myfaces.el.VariableResolverImpl=error +log4j.logger.org.apache.myfaces.application.jsp.JspViewHandlerImpl=error +log4j.logger.org.apache.myfaces.taglib=error + +# OpenOfficeConnection +log4j.logger.net.sf.jooreports.openoffice.connection=fatal + +# log prepared statement cache activity ### +log4j.logger.org.hibernate.ps.PreparedStatementCache=info + +# Alfresco +log4j.logger.org.alfresco=error +log4j.logger.org.alfresco.repo.admin=info +log4j.logger.org.alfresco.repo.cache.TransactionalCache=warn +log4j.logger.org.alfresco.repo.model.filefolder=warn +log4j.logger.org.alfresco.repo.tenant=info +log4j.logger.org.alfresco.repo.avm=info +log4j.logger.org.alfresco.config=warn +log4j.logger.org.alfresco.config.JndiObjectFactoryBean=warn +log4j.logger.org.alfresco.config.JBossEnabledWebApplicationContext=warn +log4j.logger.org.alfresco.repo.management.subsystems=warn +log4j.logger.org.alfresco.repo.management.subsystems.ChildApplicationContextFactory=info +log4j.logger.org.alfresco.repo.management.subsystems.ChildApplicationContextFactory$ChildApplicationContext=warn +log4j.logger.org.alfresco.repo.security.sync=info +log4j.logger.org.alfresco.repo.security.person=info + +log4j.logger.org.alfresco.sample=info +log4j.logger.org.alfresco.web=info +#log4j.logger.org.alfresco.web.app.AlfrescoNavigationHandler=debug +#log4j.logger.org.alfresco.web.ui.repo.component.UIActions=debug +#log4j.logger.org.alfresco.web.ui.repo.tag.PageTag=debug +#log4j.logger.org.alfresco.web.bean.clipboard=debug +log4j.logger.org.alfresco.repo.webservice=info +log4j.logger.org.alfresco.service.descriptor.DescriptorService=info +#log4j.logger.org.alfresco.web.page=debug + +log4j.logger.org.alfresco.repo.importer.ImporterBootstrap=error +#log4j.logger.org.alfresco.repo.importer.ImporterBootstrap=info + +log4j.logger.org.alfresco.web.ui.common.Utils=error +#log4j.logger.org.alfresco.web.ui.common.Utils=info + +log4j.logger.org.alfresco.repo.admin.patch.PatchExecuter=info +log4j.logger.org.alfresco.repo.domain.patch.ibatis.PatchDAOImpl=info + +# Specific patches +log4j.logger.org.alfresco.repo.admin.patch.impl.DeploymentMigrationPatch=info +log4j.logger.org.alfresco.repo.version.VersionMigrator=info +log4j.logger.org.alfresco.repo.admin.patch.impl.ResetWCMToGroupBasedPermissionsPatch=info + +log4j.logger.org.alfresco.repo.module.ModuleServiceImpl=info +log4j.logger.org.alfresco.repo.domain.schema.SchemaBootstrap=info +log4j.logger.org.alfresco.repo.admin.ConfigurationChecker=info +log4j.logger.org.alfresco.repo.node.index.AbstractReindexComponent=warn +log4j.logger.org.alfresco.repo.node.index.IndexTransactionTracker=warn +log4j.logger.org.alfresco.repo.node.index.FullIndexRecoveryComponent=info +log4j.logger.org.alfresco.repo.node.index.AVMFullIndexRecoveryComponent=info +log4j.logger.org.alfresco.util.OpenOfficeConnectionTester=info +log4j.logger.org.alfresco.repo.node.db.hibernate.HibernateNodeDaoServiceImpl=warn +log4j.logger.org.alfresco.repo.domain.hibernate.DirtySessionMethodInterceptor=warn +log4j.logger.org.alfresco.repo.transaction.RetryingTransactionHelper=warn +log4j.logger.org.alfresco.util.transaction.SpringAwareUserTransaction.trace=warn +log4j.logger.org.alfresco.util.AbstractTriggerBean=warn +log4j.logger.org.alfresco.enterprise.repo.cache.cluster.KeepAliveHeartbeatReceiver=info +log4j.logger.org.alfresco.repo.version.Version2ServiceImpl=warn + +#log4j.logger.org.alfresco.web.app.DebugPhaseListener=debug + +log4j.logger.org.alfresco.repo.workflow=info + +# CIFS server debugging +log4j.logger.org.alfresco.smb.protocol=error +#log4j.logger.org.alfresco.smb.protocol.auth=debug +#log4j.logger.org.alfresco.acegi=debug + +# FTP server debugging +log4j.logger.org.alfresco.ftp.protocol=error +#log4j.logger.org.alfresco.ftp.server=debug + +# WebDAV debugging +#log4j.logger.org.alfresco.webdav.protocol=debug +log4j.logger.org.alfresco.webdav.protocol=error + +# NTLM servlet filters +#log4j.logger.org.alfresco.web.app.servlet.NTLMAuthenticationFilter=debug +#log4j.logger.org.alfresco.repo.webdav.auth.NTLMAuthenticationFilter=debug + +# Kerberos servlet filters +#log4j.logger.org.alfresco.web.app.servlet.KerberosAuthenticationFilter=debug +#log4j.logger.org.alfresco.repo.webdav.auth.KerberosAuthenticationFilter=debug + +# File servers +log4j.logger.org.alfresco.fileserver=warn + +# Repo filesystem debug logging +#log4j.logger.org.alfresco.filesys.repo.ContentDiskDriver=debug + +# AVM filesystem debug logging +#log4j.logger.org.alfresco.filesys.avm.AVMDiskDriver=debug + +# Integrity message threshold - if 'failOnViolation' is off, then WARNINGS are generated +log4j.logger.org.alfresco.repo.node.integrity=ERROR + +# Indexer debugging +log4j.logger.org.alfresco.repo.search.Indexer=error +#log4j.logger.org.alfresco.repo.search.Indexer=debug + +log4j.logger.org.alfresco.repo.search.impl.lucene.index=error +log4j.logger.org.alfresco.repo.search.impl.lucene.fts.FullTextSearchIndexerImpl=warn +#log4j.logger.org.alfresco.repo.search.impl.lucene.index=DEBUG + +# Audit debugging +# log4j.logger.org.alfresco.repo.audit=DEBUG +# log4j.logger.org.alfresco.repo.audit.model=DEBUG + +# Forms debugging +# log4j.logger.org.alfresco.web.forms=debug +# log4j.logger.org.chiba.xml.xforms=debug +log4j.logger.org.alfresco.web.forms.xforms.XFormsBean=error +log4j.logger.org.alfresco.web.forms.XSLTRenderingEngine=error + +# Property sheet and modelling debugging +# change to error to hide the warnings about missing properties and associations +log4j.logger.alfresco.missingProperties=warn +log4j.logger.org.alfresco.web.ui.repo.component.property.UIChildAssociation=warn +log4j.logger.org.alfresco.web.ui.repo.component.property.UIAssociation=warn +#log4j.logger.org.alfresco.web.ui.repo.component.property=debug + +# Dictionary/Model debugging +log4j.logger.org.alfresco.repo.dictionary=warn +log4j.logger.org.alfresco.repo.dictionary.types.period=warn + +# Virtualization Server Registry +log4j.logger.org.alfresco.mbeans.VirtServerRegistry=error + +# Spring context runtime property setter +log4j.logger.org.alfresco.util.RuntimeSystemPropertiesSetter=info + +# Debugging options for clustering +log4j.logger.org.alfresco.repo.content.ReplicatingContentStore=error +log4j.logger.org.alfresco.repo.content.replication=error + +#log4j.logger.org.alfresco.repo.deploy.DeploymentServiceImpl=debug + +# Activity service +log4j.logger.org.alfresco.repo.activities=warn + +# User usage tracking +log4j.logger.org.alfresco.repo.usage=info + +# Sharepoint +log4j.logger.org.alfresco.module.vti=info + +# Forms Engine +log4j.logger.org.alfresco.repo.forms=info +log4j.logger.org.alfresco.web.config.forms=info +log4j.logger.org.alfresco.web.scripts.forms=info + +# CMIS +log4j.logger.org.alfresco.opencmis=error +log4j.logger.org.alfresco.opencmis.AlfrescoCmisServiceInterceptor=error +log4j.logger.org.alfresco.cmis=error +log4j.logger.org.alfresco.cmis.dictionary=warn +log4j.logger.org.apache.chemistry.opencmis=info + +# IMAP +log4j.logger.org.alfresco.repo.imap=info + +# JBPM +# Note: non-fatal errors (eg. logged during job execution) should be handled by Alfresco's retrying transaction handler +log4j.logger.org.jbpm.graph.def.GraphElement=fatal + +#log4j.logger.org.alfresco.repo.googledocs=debug + +###### Scripting ####### + +# Web Framework +log4j.logger.org.springframework.extensions.webscripts=info +log4j.logger.org.springframework.extensions.webscripts.ScriptLogger=warn +log4j.logger.org.springframework.extensions.webscripts.ScriptDebugger=off + +# Repository +log4j.logger.org.alfresco.repo.web.scripts=warn +log4j.logger.org.alfresco.repo.web.scripts.BaseWebScriptTest=info +log4j.logger.org.alfresco.repo.web.scripts.AlfrescoRhinoScriptDebugger=off +log4j.logger.org.alfresco.repo.jscript=error +log4j.logger.org.alfresco.repo.jscript.ScriptLogger=warn +log4j.logger.org.alfresco.repo.cmis.rest.CMISTest=info + +log4j.logger.org.alfresco.repo.avm.actions=info + +# Freemarker +# Note the freemarker.runtime logger is used to log non-fatal errors that are handled by Alfresco's retrying transaction handler +log4j.logger.freemarker.runtime= + +# Metadata extraction +log4j.logger.org.alfresco.repo.content.metadata.AbstractMappingMetadataExtracter=warn + +# Reduces PDFont error level due to ALF-7105 +log4j.logger.org.apache.pdfbox.pdmodel.font.PDSimpleFont=fatal +log4j.logger.org.apache.pdfbox.pdmodel.font.PDFont=fatal +log4j.logger.org.apache.pdfbox.pdmodel.font.PDCIDFont=fatal + +# no index support +log4j.logger.org.alfresco.repo.search.impl.noindex.NoIndexIndexer=fatal +log4j.logger.org.alfresco.repo.search.impl.noindex.NoIndexSearchService=fatal +log4j.logger.org.alfresco.demoamp.test=DEBUG \ No newline at end of file diff --git a/alfresco-repo/tomcat/context.xml b/alfresco-repo/tomcat/context.xml new file mode 100644 index 0000000..b7abe44 --- /dev/null +++ b/alfresco-repo/tomcat/context.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + diff --git a/alfresco-share/pom.xml b/alfresco-share/pom.xml new file mode 100644 index 0000000..69ca1ec --- /dev/null +++ b/alfresco-share/pom.xml @@ -0,0 +1,79 @@ + + + 4.0.0 + de.fmaul.alfresco + alfresco-default-user-avatars-share + 1.2.0 + alfresco-default-user-avatars-share AMP project + amp + Default Users Avatar Generator - Only needed for development + + + org.alfresco.maven + alfresco-sdk-parent + 2.0.0-SNAPSHOT + + + + + + ${alfresco.share.artifactId} + /share + + 8081 + + + http://localhost:8080/alfresco + + + + + + WARN + + + + + + + + + ${alfresco.groupId} + alfresco-platform-distribution + ${alfresco.version} + pom + import + + + + + + + ${alfresco.groupId} + alfresco-repository + + + + org.springframework.extensions.surf + spring-surf-api + provided + + + + + diff --git a/alfresco-share/run.sh b/alfresco-share/run.sh new file mode 100644 index 0000000..00051c7 --- /dev/null +++ b/alfresco-share/run.sh @@ -0,0 +1,9 @@ +#!/bin/bash +# Downloads the spring-loaded lib if not existing and runs the Share AMP +springloadedfile=~/.m2/repository/org/springframework/springloaded/1.2.5.RELEASE/springloaded-1.2.5.RELEASE.jar + +if [ ! -f $springloadedfile ]; then +mvn validate -Psetup +fi + +MAVEN_OPTS="-javaagent:$springloadedfile -noverify" mvn integration-test -Pamp-to-war \ No newline at end of file diff --git a/alfresco-share/src/main/amp/file-mapping.properties b/alfresco-share/src/main/amp/file-mapping.properties new file mode 100644 index 0000000..45cccaf --- /dev/null +++ b/alfresco-share/src/main/amp/file-mapping.properties @@ -0,0 +1,14 @@ +# Custom AMP to WAR location mappings + +# +# The following property can be used to include the standard set of mappings. +# The contents of this file will override any defaults. The default is +# 'true', i.e. the default mappings will be augmented or modified by values in +# this file. +# +include.default=true + +# +# Custom mappings. If 'include.default' is false, then this is the complete set. +# +/web=/ diff --git a/alfresco-share/src/main/amp/log4j.properties b/alfresco-share/src/main/amp/log4j.properties new file mode 100644 index 0000000..ed9f513 --- /dev/null +++ b/alfresco-share/src/main/amp/log4j.properties @@ -0,0 +1,3 @@ +# Define here logging properties for your AMP specific classes +# This will end up in alfresco.war/WEB-INF/classes/alfresco/module/log4j.properties +# and loaded as per http://wiki.alfresco.com/wiki/Developing_an_Alfresco_Module#log4j.properties diff --git a/alfresco-share/src/main/amp/module.properties b/alfresco-share/src/main/amp/module.properties new file mode 100644 index 0000000..158500f --- /dev/null +++ b/alfresco-share/src/main/amp/module.properties @@ -0,0 +1,48 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + + +# SDK Sample module + +# ==== Beginning of Alfresco required/optional properties ====== # +# NB: These properties are filtered at build time by Maven, single +# sourcing from POM properties +module.id=${project.artifactId} +#module.aliases=myModule-123, my-module +module.title=${project.name} +module.description=${project.description} +module.version=${project.version} + +# The following optional properties can be used to prevent the module from being added +# to inappropriate versions of the WAR file. +# module.repo.version.min=2.0 +# module.repo.version.max=2.1 + +# FIXME: This dependencies should come out of mvn dependencies on amp + +# The following describe dependencies on other modules +# Depends on net.sf.myproject.module.SupportModuleA version ${version} or later +# module.depends.net.sf.myproject.module.SupportModuleA=${version}-* +# Depends on net.sf.myproject.module.SupportModuleA version ${version} to 2.0 +# module.depends.net.sf.myproject.module.SupportModuleB=${version}-2.0 +# Depends on net.sf.myproject.module.SupportModuleC - any version +# module.depends.net.sf.myproject.module.SupportModuleB=* + + +# ==== End of Alfresco required/optional properties ======= # + + +# ==== Beginning of module required properties/optional ====== # \ No newline at end of file diff --git a/alfresco-share/src/main/resources/META-INF/resources/test.html b/alfresco-share/src/main/resources/META-INF/resources/test.html new file mode 100644 index 0000000..53ec260 --- /dev/null +++ b/alfresco-share/src/main/resources/META-INF/resources/test.html @@ -0,0 +1,6 @@ + + +

This is a test web resource loaded from the JAR/META-INF/resources. + This, per Servlet 3 spec is mapped to the root of the webapp

+ + \ No newline at end of file diff --git a/alfresco-share/src/main/resources/META-INF/share-config-custom.xml.sample b/alfresco-share/src/main/resources/META-INF/share-config-custom.xml.sample new file mode 100644 index 0000000..219739b --- /dev/null +++ b/alfresco-share/src/main/resources/META-INF/share-config-custom.xml.sample @@ -0,0 +1,423 @@ + + + + + + + + false + + + false + + + + + + + + + + production + + + + + manual + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + 1000 + + + 7000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + http://localhost:8080/alfresco + + + + + false + + + + application/msword + application/vnd.ms-excel + application/vnd.ms-powerpoint + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + location.path.documents + + slingshot/doclib/treenode/site/{site}/{container}{path}?children={evaluateChildFoldersSite}&max={maximumFolderCountSite} + + + + + + + + alfresco://company/home + + + + false + + + 500 + + + + true + + + + + + + + secret + + ALFRESCO.ORG + + HTTP/repository.server.com@ALFRESCO.ORG + + ShareHTTP + + + + + + + + + + alfresco-noauth + Alfresco - unauthenticated access + Access to Alfresco Repository WebScripts that do not require authentication + alfresco + http://localhost:8080/alfresco/s + none + + + + alfresco + Alfresco - user access + Access to Alfresco Repository WebScripts that require user authentication + alfresco + http://localhost:8080/alfresco/s + user + + + + alfresco-feed + Alfresco Feed + Alfresco Feed - supports basic HTTP authentication via the EndPointProxyServlet + http + http://localhost:8080/alfresco/s + true + user + + + + activiti-admin + Activiti Admin UI - user access + Access to Activiti Admin UI, that requires user authentication + activiti-admin-connector + http://localhost:8080/alfresco/activiti-admin + user + + + + + + + + \ No newline at end of file diff --git a/alfresco-share/src/test/resources/alfresco/web-extension/share-config-custom.xml b/alfresco-share/src/test/resources/alfresco/web-extension/share-config-custom.xml new file mode 100644 index 0000000..719b4d0 --- /dev/null +++ b/alfresco-share/src/test/resources/alfresco/web-extension/share-config-custom.xml @@ -0,0 +1,74 @@ + + + + + + production + + + + + + + + + + true + + false + + + + + + + + + + + + + alfresco-noauth + Alfresco - unauthenticated access + Access to Alfresco Repository WebScripts that do not require authentication + alfresco + ${alfresco.repo.url}/s + none + + + + alfresco + Alfresco - user access + Access to Alfresco Repository WebScripts that require user authentication + alfresco + ${alfresco.repo.url}/s + user + + + + alfresco-feed + Alfresco Feed + Alfresco Feed - supports basic HTTP authentication via the EndPointProxyServlet + http + ${alfresco.repo.url}/s + true + user + + + + activiti-admin + Activiti Admin UI - user access + Access to Activiti Admin UI, that requires user authentication + activiti-admin-connector + ${alfresco.repo.url}/activiti-admin + user + + + + + diff --git a/alfresco-share/src/test/resources/log4j.properties b/alfresco-share/src/test/resources/log4j.properties new file mode 100644 index 0000000..bf4a472 --- /dev/null +++ b/alfresco-share/src/test/resources/log4j.properties @@ -0,0 +1,266 @@ +# This is a full override of Alfresco 4.2.b log4j.properties +# This file overwrites the alfresco.war log4j.properties + +# Set root logger level to error +log4j.rootLogger=${app.log.root.level}, Console, File + +###### Console appender definition ####### + +# All outputs currently set to be a ConsoleAppender. +log4j.appender.Console=org.apache.log4j.ConsoleAppender +log4j.appender.Console.layout=org.apache.log4j.PatternLayout + +# use log4j NDC to replace %x with tenant domain / username +log4j.appender.Console.layout.ConversionPattern=%d{ISO8601} %x %-5p [%c{3}] [%t] %m%n +#log4j.appender.Console.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c] %m%n + +###### File appender definition ####### +log4j.appender.File=org.apache.log4j.DailyRollingFileAppender +log4j.appender.File.File=${app.log.dir}alfresco.log +log4j.appender.File.Append=true +log4j.appender.File.DatePattern='.'yyyy-MM-dd +log4j.appender.File.layout=org.apache.log4j.PatternLayout +log4j.appender.File.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c] %m%n + +###### Hibernate specific appender definition ####### +#log4j.appender.file=org.apache.log4j.FileAppender +#log4j.appender.file.File=hibernate.log +#log4j.appender.file.layout=org.apache.log4j.PatternLayout +#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n + +###### Log level overrides ####### + +# Commented-in loggers will be exposed as JMX MBeans (refer to org.alfresco.repo.admin.Log4JHierarchyInit) +# Hence, generally useful loggers should be listed with at least ERROR level to allow simple runtime +# control of the level via a suitable JMX Console. Also, any other loggers can be added transiently via +# Log4j addLoggerMBean as long as the logger exists and has been loaded. + +# Hibernate +log4j.logger.org.hibernate=error +log4j.logger.org.hibernate.util.JDBCExceptionReporter=fatal +log4j.logger.org.hibernate.event.def.AbstractFlushingEventListener=fatal +log4j.logger.org.hibernate.type=warn +log4j.logger.org.hibernate.cfg.SettingsFactory=warn + +# Spring +log4j.logger.org.springframework=warn +# Turn off Spring remoting warnings that should really be info or debug. +log4j.logger.org.springframework.remoting.support=error +log4j.logger.org.springframework.util=error + +# Axis/WSS4J +log4j.logger.org.apache.axis=info +log4j.logger.org.apache.ws=info + +# CXF +log4j.logger.org.apache.cxf=error + +# MyFaces +log4j.logger.org.apache.myfaces.util.DebugUtils=info +log4j.logger.org.apache.myfaces.el.VariableResolverImpl=error +log4j.logger.org.apache.myfaces.application.jsp.JspViewHandlerImpl=error +log4j.logger.org.apache.myfaces.taglib=error + +# OpenOfficeConnection +log4j.logger.net.sf.jooreports.openoffice.connection=fatal + +# log prepared statement cache activity ### +log4j.logger.org.hibernate.ps.PreparedStatementCache=info + +# Alfresco +log4j.logger.org.alfresco=error +log4j.logger.org.alfresco.repo.admin=info +log4j.logger.org.alfresco.repo.cache.TransactionalCache=warn +log4j.logger.org.alfresco.repo.model.filefolder=warn +log4j.logger.org.alfresco.repo.tenant=info +log4j.logger.org.alfresco.repo.avm=info +log4j.logger.org.alfresco.config=warn +log4j.logger.org.alfresco.config.JndiObjectFactoryBean=warn +log4j.logger.org.alfresco.config.JBossEnabledWebApplicationContext=warn +log4j.logger.org.alfresco.repo.management.subsystems=warn +log4j.logger.org.alfresco.repo.management.subsystems.ChildApplicationContextFactory=info +log4j.logger.org.alfresco.repo.management.subsystems.ChildApplicationContextFactory$ChildApplicationContext=warn +log4j.logger.org.alfresco.repo.security.sync=info +log4j.logger.org.alfresco.repo.security.person=info + +log4j.logger.org.alfresco.sample=info +log4j.logger.org.alfresco.web=info +#log4j.logger.org.alfresco.web.app.AlfrescoNavigationHandler=debug +#log4j.logger.org.alfresco.web.ui.repo.component.UIActions=debug +#log4j.logger.org.alfresco.web.ui.repo.tag.PageTag=debug +#log4j.logger.org.alfresco.web.bean.clipboard=debug +log4j.logger.org.alfresco.repo.webservice=info +log4j.logger.org.alfresco.service.descriptor.DescriptorService=info +#log4j.logger.org.alfresco.web.page=debug + +log4j.logger.org.alfresco.repo.importer.ImporterBootstrap=error +#log4j.logger.org.alfresco.repo.importer.ImporterBootstrap=info + +log4j.logger.org.alfresco.web.ui.common.Utils=error +#log4j.logger.org.alfresco.web.ui.common.Utils=info + +log4j.logger.org.alfresco.repo.admin.patch.PatchExecuter=info +log4j.logger.org.alfresco.repo.domain.patch.ibatis.PatchDAOImpl=info + +# Specific patches +log4j.logger.org.alfresco.repo.admin.patch.impl.DeploymentMigrationPatch=info +log4j.logger.org.alfresco.repo.version.VersionMigrator=info +log4j.logger.org.alfresco.repo.admin.patch.impl.ResetWCMToGroupBasedPermissionsPatch=info + +log4j.logger.org.alfresco.repo.module.ModuleServiceImpl=info +log4j.logger.org.alfresco.repo.domain.schema.SchemaBootstrap=info +log4j.logger.org.alfresco.repo.admin.ConfigurationChecker=info +log4j.logger.org.alfresco.repo.node.index.AbstractReindexComponent=warn +log4j.logger.org.alfresco.repo.node.index.IndexTransactionTracker=warn +log4j.logger.org.alfresco.repo.node.index.FullIndexRecoveryComponent=info +log4j.logger.org.alfresco.repo.node.index.AVMFullIndexRecoveryComponent=info +log4j.logger.org.alfresco.util.OpenOfficeConnectionTester=info +log4j.logger.org.alfresco.repo.node.db.hibernate.HibernateNodeDaoServiceImpl=warn +log4j.logger.org.alfresco.repo.domain.hibernate.DirtySessionMethodInterceptor=warn +log4j.logger.org.alfresco.repo.transaction.RetryingTransactionHelper=warn +log4j.logger.org.alfresco.util.transaction.SpringAwareUserTransaction.trace=warn +log4j.logger.org.alfresco.util.AbstractTriggerBean=warn +log4j.logger.org.alfresco.enterprise.repo.cache.cluster.KeepAliveHeartbeatReceiver=info +log4j.logger.org.alfresco.repo.version.Version2ServiceImpl=warn + +#log4j.logger.org.alfresco.web.app.DebugPhaseListener=debug + +log4j.logger.org.alfresco.repo.workflow=info + +# CIFS server debugging +log4j.logger.org.alfresco.smb.protocol=error +#log4j.logger.org.alfresco.smb.protocol.auth=debug +#log4j.logger.org.alfresco.acegi=debug + +# FTP server debugging +log4j.logger.org.alfresco.ftp.protocol=error +#log4j.logger.org.alfresco.ftp.server=debug + +# WebDAV debugging +#log4j.logger.org.alfresco.webdav.protocol=debug +log4j.logger.org.alfresco.webdav.protocol=error + +# NTLM servlet filters +#log4j.logger.org.alfresco.web.app.servlet.NTLMAuthenticationFilter=debug +#log4j.logger.org.alfresco.repo.webdav.auth.NTLMAuthenticationFilter=debug + +# Kerberos servlet filters +#log4j.logger.org.alfresco.web.app.servlet.KerberosAuthenticationFilter=debug +#log4j.logger.org.alfresco.repo.webdav.auth.KerberosAuthenticationFilter=debug + +# File servers +log4j.logger.org.alfresco.fileserver=warn + +# Repo filesystem debug logging +#log4j.logger.org.alfresco.filesys.repo.ContentDiskDriver=debug + +# AVM filesystem debug logging +#log4j.logger.org.alfresco.filesys.avm.AVMDiskDriver=debug + +# Integrity message threshold - if 'failOnViolation' is off, then WARNINGS are generated +log4j.logger.org.alfresco.repo.node.integrity=ERROR + +# Indexer debugging +log4j.logger.org.alfresco.repo.search.Indexer=error +#log4j.logger.org.alfresco.repo.search.Indexer=debug + +log4j.logger.org.alfresco.repo.search.impl.lucene.index=error +log4j.logger.org.alfresco.repo.search.impl.lucene.fts.FullTextSearchIndexerImpl=warn +#log4j.logger.org.alfresco.repo.search.impl.lucene.index=DEBUG + +# Audit debugging +# log4j.logger.org.alfresco.repo.audit=DEBUG +# log4j.logger.org.alfresco.repo.audit.model=DEBUG + +# Forms debugging +# log4j.logger.org.alfresco.web.forms=debug +# log4j.logger.org.chiba.xml.xforms=debug +log4j.logger.org.alfresco.web.forms.xforms.XFormsBean=error +log4j.logger.org.alfresco.web.forms.XSLTRenderingEngine=error + +# Property sheet and modelling debugging +# change to error to hide the warnings about missing properties and associations +log4j.logger.alfresco.missingProperties=warn +log4j.logger.org.alfresco.web.ui.repo.component.property.UIChildAssociation=warn +log4j.logger.org.alfresco.web.ui.repo.component.property.UIAssociation=warn +#log4j.logger.org.alfresco.web.ui.repo.component.property=debug + +# Dictionary/Model debugging +log4j.logger.org.alfresco.repo.dictionary=warn +log4j.logger.org.alfresco.repo.dictionary.types.period=warn + +# Virtualization Server Registry +log4j.logger.org.alfresco.mbeans.VirtServerRegistry=error + +# Spring context runtime property setter +log4j.logger.org.alfresco.util.RuntimeSystemPropertiesSetter=info + +# Debugging options for clustering +log4j.logger.org.alfresco.repo.content.ReplicatingContentStore=error +log4j.logger.org.alfresco.repo.content.replication=error + +#log4j.logger.org.alfresco.repo.deploy.DeploymentServiceImpl=debug + +# Activity service +log4j.logger.org.alfresco.repo.activities=warn + +# User usage tracking +log4j.logger.org.alfresco.repo.usage=info + +# Sharepoint +log4j.logger.org.alfresco.module.vti=info + +# Forms Engine +log4j.logger.org.alfresco.repo.forms=info +log4j.logger.org.alfresco.web.config.forms=info +log4j.logger.org.alfresco.web.scripts.forms=info + +# CMIS +log4j.logger.org.alfresco.opencmis=error +log4j.logger.org.alfresco.opencmis.AlfrescoCmisServiceInterceptor=error +log4j.logger.org.alfresco.cmis=error +log4j.logger.org.alfresco.cmis.dictionary=warn +log4j.logger.org.apache.chemistry.opencmis=info + +# IMAP +log4j.logger.org.alfresco.repo.imap=info + +# JBPM +# Note: non-fatal errors (eg. logged during job execution) should be handled by Alfresco's retrying transaction handler +log4j.logger.org.jbpm.graph.def.GraphElement=fatal + +#log4j.logger.org.alfresco.repo.googledocs=debug + +###### Scripting ####### + +# Web Framework +log4j.logger.org.springframework.extensions.webscripts=info +log4j.logger.org.springframework.extensions.webscripts.ScriptLogger=warn +log4j.logger.org.springframework.extensions.webscripts.ScriptDebugger=off + +# Repository +log4j.logger.org.alfresco.repo.web.scripts=warn +log4j.logger.org.alfresco.repo.web.scripts.BaseWebScriptTest=info +log4j.logger.org.alfresco.repo.web.scripts.AlfrescoRhinoScriptDebugger=off +log4j.logger.org.alfresco.repo.jscript=error +log4j.logger.org.alfresco.repo.jscript.ScriptLogger=warn +log4j.logger.org.alfresco.repo.cmis.rest.CMISTest=info + +log4j.logger.org.alfresco.repo.avm.actions=info + +# Freemarker +# Note the freemarker.runtime logger is used to log non-fatal errors that are handled by Alfresco's retrying transaction handler +log4j.logger.freemarker.runtime= + +# Metadata extraction +log4j.logger.org.alfresco.repo.content.metadata.AbstractMappingMetadataExtracter=warn + +# Reduces PDFont error level due to ALF-7105 +log4j.logger.org.apache.pdfbox.pdmodel.font.PDSimpleFont=fatal +log4j.logger.org.apache.pdfbox.pdmodel.font.PDFont=fatal +log4j.logger.org.apache.pdfbox.pdmodel.font.PDCIDFont=fatal + +# no index support +log4j.logger.org.alfresco.repo.search.impl.noindex.NoIndexIndexer=fatal +log4j.logger.org.alfresco.repo.search.impl.noindex.NoIndexSearchService=fatal +log4j.logger.org.alfresco.demoamp.test=DEBUG \ No newline at end of file diff --git a/alfresco-share/tomcat/context.xml b/alfresco-share/tomcat/context.xml new file mode 100644 index 0000000..5920f8e --- /dev/null +++ b/alfresco-share/tomcat/context.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + diff --git a/jetty/jetty.xml b/jetty/jetty.xml deleted file mode 100644 index b9bf3d8..0000000 --- a/jetty/jetty.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - jdbc/dataSource - - - ${alfresco.db.url} - ${alfresco.db.username} - ${alfresco.db.password} - - - - \ No newline at end of file diff --git a/pom.xml b/pom.xml deleted file mode 100644 index cf55999..0000000 --- a/pom.xml +++ /dev/null @@ -1,105 +0,0 @@ - - - 4.0.0 - de.fmaul.alfresco - alfresco-default-user-avatars - 1.0 - alfresco-default-user-avatars AMP project - amp - Manages the lifecycle of the alfresco-default-user-avatars AMP (Alfresco Module Package) - - - org.alfresco.maven - alfresco-sdk-parent - 1.0.2 - - - - - - org.alfresco - - 4.2.d - WARN - alf_data_dev - - alfresco - - org.alfresco - - 4.2.d - - local - - - - - - - - ${alfresco.groupId} - alfresco-platform-distribution - ${alfresco.version} - pom - import - - - - - - - ${alfresco.groupId} - alfresco-repository - - - - junit - junit - 4.8.1 - test - - - org.springframework - spring-context - 3.0.6.RELEASE - provided - - - - - - - alfresco-public - https://artifacts.alfresco.com/nexus/content/groups/public - - - alfresco-public-snapshots - https://artifacts.alfresco.com/nexus/content/groups/public-snapshots - - true - daily - - - - - diff --git a/src/main/java/de/fmaul/alfresco/avatars/AvatarServiceImpl.java b/src/main/java/de/fmaul/alfresco/avatars/AvatarServiceImpl.java deleted file mode 100644 index 22f1494..0000000 --- a/src/main/java/de/fmaul/alfresco/avatars/AvatarServiceImpl.java +++ /dev/null @@ -1,70 +0,0 @@ -package de.fmaul.alfresco.avatars; - -import java.io.Serializable; -import java.util.Map; - -import org.alfresco.model.ContentModel; -import org.alfresco.service.cmr.repository.ChildAssociationRef; -import org.alfresco.service.cmr.repository.ContentService; -import org.alfresco.service.cmr.repository.ContentWriter; -import org.alfresco.service.cmr.repository.NodeRef; -import org.alfresco.service.cmr.repository.NodeService; -import org.alfresco.service.namespace.NamespaceService; -import org.alfresco.service.namespace.QName; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -public class AvatarServiceImpl implements AvatarService { - - Log log = LogFactory.getLog(AvatarServiceImpl.class); - - private NodeService nodeService; - private ContentService contentService; - private AvatarGenerator avatarGenerator; - - @Override - public NodeRef createDefaultUserAvatar(NodeRef person) { - - if (avatarGenerator.avatarCanBeGenerated(person)) { - - String userName = (String) nodeService.getProperty(person, ContentModel.PROP_USERNAME); - - String name = DEFAULT_AVATAR_NAME_PREFIX + userName + ".png"; - QName assocQName = QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, QName.createValidLocalName(name)); - - ChildAssociationRef avatarNodeAssoc = nodeService.createNode(person, ContentModel.ASSOC_PREFERENCE_IMAGE, assocQName, - ContentModel.TYPE_CONTENT); - - NodeRef avatarNode = avatarNodeAssoc.getChildRef(); - nodeService.setProperty(avatarNode, ContentModel.PROP_NAME, name); - - ContentWriter writer = contentService.getWriter(avatarNode, ContentModel.PROP_CONTENT, true); - writer.guessMimetype(name); - - avatarGenerator.createAvatar(person, writer.getContentOutputStream()); - - nodeService.createAssociation(person, avatarNode, ContentModel.ASSOC_AVATAR); - - return avatarNode; - } - return null; - } - - @Override - public boolean avatarUpdateNeeded(Map before, Map after) { - return avatarGenerator.avatarUpdateNeeded(before, after); - } - - public void setNodeService(NodeService nodeService) { - this.nodeService = nodeService; - } - - public void setContentService(ContentService contentService) { - this.contentService = contentService; - } - - public void setAvatarGenerator(AvatarGenerator avatarGenerator) { - this.avatarGenerator = avatarGenerator; - } - -}