From ca3ea75ab0fb5cc4a94585d1a79a7e3f981c24ce Mon Sep 17 00:00:00 2001 From: Dave Ward Date: Wed, 9 Jun 2010 14:01:07 +0000 Subject: [PATCH] =?UTF-8?q?Merged=20V3.3=20to=20HEAD=20=20=20=2020167:=20M?= =?UTF-8?q?erged=20HEAD=20to=20BRANCHES/V3.3:=20(RECORD=20ONLY)=20=20=20?= =?UTF-8?q?=20=20=20=2020166:=20Fix=20ALF-2765:=20Renditions=20created=20v?= =?UTF-8?q?ia=203.3=20RenditionService=20are=20not=20exposed=20via=20OpenC?= =?UTF-8?q?MIS=20rendition=20API=20=20=20=2020232:=20Fix=20problem=20openi?= =?UTF-8?q?ng=20AVM=20web=20project=20folders=20via=20FTP.=20ALF-2738.=20?= =?UTF-8?q?=20=20=2020234:=20ALF-2352:=20Cannot=20create=20folders=20in=20?= =?UTF-8?q?Share=20doclib=20without=20admin=20user=20in=20authentication?= =?UTF-8?q?=20chain=20=20=20=2020235:=20Fix=20for=20unable=20to=20create?= =?UTF-8?q?=20folders=20in=20web=20project=20via=20CIFS.=20ALF-2736.=20=20?= =?UTF-8?q?=20=2020258:=20Reverse-merged=20rev=2020254:=20'When=20dropping?= =?UTF-8?q?=20the=20mysql=20database=20...'=20=20=20=2020262:=20Merged=20V?= =?UTF-8?q?3.3-BUG-FIX=20to=20V3.3=20=20=20=20=20=20=2020251:=20Fix=20for?= =?UTF-8?q?=20ALF-2804=20-=20Unable=20to=20browse=20into=20folders=20in=20?= =?UTF-8?q?Share=20Site=20in=20certain=20situations.=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20-=20Browser=20history=20filter=20object?= =?UTF-8?q?=20in=20incorrect=20state=20after=20page=20refresh.=20=20=20=20?= =?UTF-8?q?20264:=20Updated=20Oracle=20build=20support=20(to=20fix=20grant?= =?UTF-8?q?s)=20=20=20=2020282:=20Merged=20PATCHES/V3.2.0=20to=20V3.3=20?= =?UTF-8?q?=20=20=20=20=20=2020266:=20Test=20reproduction=20of=20ALF-2839?= =?UTF-8?q?=20failure:=20Node=20pre-loading=20generates=20needless=20resul?= =?UTF-8?q?tset=20rows=20=20=20=20=20=20=2020280:=20Fixed=20ALF-2839:=20No?= =?UTF-8?q?de=20pre-loading=20generates=20needless=20resultset=20rows=20?= =?UTF-8?q?=20=20=2020283:=20Merged=20BRANCHES/DEV/V3.3-BUG-FIX=20to=20BRA?= =?UTF-8?q?NCHES/V3.3:=20=20=20=20=20=20=2020194:=20AVMTestSuite=20-=20sca?= =?UTF-8?q?le=20down=20unit=20tests=20(slightly)=20=20=20=20=20=20=2020247?= =?UTF-8?q?:=20AVMServiceTest.testVersionByDate=20-=20build=20(add=20delay?= =?UTF-8?q?)=20=20=20=2020290:=20Fixed=20ALF-2851=20"Drag=20n=20Drop=20iss?= =?UTF-8?q?ues=20in=20IE6=20&=20IE7"=20=20=20=20=20=20=20-=20Reordering=20?= =?UTF-8?q?rules-list=20with=20drag=20and=20drop=20didn't=20work=20at=20al?= =?UTF-8?q?l=20because=20each=20rule=20was=20created=20using=20a=20templat?= =?UTF-8?q?e=20that=20had=20the=20"id"-attribute=20set,=20which=20made=20I?= =?UTF-8?q?E=20confused=20after=20using=20HTMLELement.clone()=20even=20tho?= =?UTF-8?q?ugh=20the=20id=20was=20resetted=20=20=20=20=20=20=20-=20Both=20?= =?UTF-8?q?customise-dashlets=20&=20rules-list=20got=20an=20error=20when?= =?UTF-8?q?=20"throwing"=20away=20the=20dashlet=20or=20rule=20instead=20of?= =?UTF-8?q?=20releasing=20it=20"carefully",=20reason=20was=20becuuase=20IE?= =?UTF-8?q?=20didnt=20capture=20the=20x:y-position=20which=20made=20the=20?= =?UTF-8?q?animation=20fail.=20Now=20no=20animation=20is=20done=20if=20x:y?= =?UTF-8?q?=20isn't=20found.=20=20=20=2020296:=20Merged=20PATCHES/V3.1.0?= =?UTF-8?q?=20to=20V3.3=20(RECORD=20ONLY)=20=20=20=20=20=20=2020249:=20Mer?= =?UTF-8?q?ged=20V3.1=20to=20PATCHES/V3.1.0=20=20=20=20=20=20=20=20=20=201?= =?UTF-8?q?4565:=20Updated=20version=20to=20include=20revision=20number=20?= =?UTF-8?q?(x.y.z)=20=20=20=20=20=20=2020246:=20Merged=20V3.1=20to=20PATCH?= =?UTF-8?q?ES/V3.1.0=20=20=20=20=20=20=20=20=20=2013841:=20Build=20fix=20?= =?UTF-8?q?=20=20=20=20=20=2020245:=20Merged=20V3.1=20to=20PATCHES/V3.1.0?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=2016185:=20AbstractLuceneIndexerAnd?= =?UTF-8?q?SearcherFactory.getTransactionId()=20must=20return=20null=20whe?= =?UTF-8?q?n=20there=20is=20no=20transaction=20=20=20=20=20=20=2020241:=20?= =?UTF-8?q?Merged=20V3.1=20to=20PATCHES/V3.1.0=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=2014187:=20Fix=20for=20ETHREEOH-2023:=20LDAP=20import=20must?= =?UTF-8?q?=20lower=20case=20the=20local=20name=20of=20the=20association?= =?UTF-8?q?=20to=20person.=20=20=20=20=20=20=20=20=20=2016167:=20ETHREEOH-?= =?UTF-8?q?2475:=20Fixed=20nested=20transaction=20handling=20in=20Abstract?= =?UTF-8?q?LuceneIndexerAndSearcherFactory=20to=20allow=20duplicate=20user?= =?UTF-8?q?=20processing=20in=20PersonServiceImpl=20to=20actually=20work?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=2016168:=20ETHREEOH-2797:=20Force?= =?UTF-8?q?=20patch.db-V2.2-Person=20to=20apply=20one=20more=20time=20to?= =?UTF-8?q?=20fix=20up=20corrupt=20users=20created=20by=20LDAP=20Import=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20-=20Problem=20due=20to=20ET?= =?UTF-8?q?HREEOH-2023,=20fixed=20in=203.1.1=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20-=20Also=20corrects=20ldap.synchronisation.defaultHome?= =?UTF-8?q?FolderProvider=20to=20be=20userHomesHomeFolderProvider=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20-=20Also=20requires=20fix=20to=20?= =?UTF-8?q?ETHREEOH-2475=20to=20fix=20up=20duplicate=20users=20=20=20=20?= =?UTF-8?q?=20=20=2020221:Merged=20PATCHES/V3.1.2=20to=20PATCHES/V3.1.0=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=2020217:=20Merged=20PATCHES/V3.2.0=20t?= =?UTF-8?q?o=20PATCHES/V3.1.2=20=20=20=20=20=20=20=20=20=20=20=20=2019793:?= =?UTF-8?q?=20Merged=20HEAD=20to=20V3.2.0=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=2019786:=20Refactor=20of=20previous=20test=20fix.?= =?UTF-8?q?=20I=20have=20pushed=20down=20the=20OOo-specific=20parts=20of?= =?UTF-8?q?=20the=20change=20from=20AbstractContentTransformerTest=20to=20?= =?UTF-8?q?OpenOfficeContentTransformerTest=20leaving=20an=20extension=20p?= =?UTF-8?q?oint=20in=20the=20base=20class=20should=20other=20transformatio?= =?UTF-8?q?ns=20need=20to=20be=20excluded=20in=20the=20future.=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=2019785:=20Fix=20for=20failin?= =?UTF-8?q?g=20test=20OpenOfficeContentTransformerTest.testAllConversions.?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20Variou?= =?UTF-8?q?s=20OOo-related=20transformations=20are=20returned=20as=20avail?= =?UTF-8?q?able=20but=20fail=20on=20our=20test=20server=20with=20OOo=20on?= =?UTF-8?q?=20it.=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?Pending=20further=20work=20on=20these=20failings,=20I=20am=20di?= =?UTF-8?q?sabling=20those=20transformations=20in=20test=20code=20whilst?= =?UTF-8?q?=20leaving=20them=20available=20in=20the=20product=20code.=20Th?= =?UTF-8?q?is=20is=20because=20in=20the=20wild=20a=20different=20OOo=20ver?= =?UTF-8?q?sion=20may=20succeed=20with=20these=20transformations.=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20I=20had=20previ?= =?UTF-8?q?ously=20explicitly=20disabled=203=20transformations=20in=20the?= =?UTF-8?q?=20product=20and=20I=20am=20moving=20that=20restriction=20from?= =?UTF-8?q?=20product=20to=20test=20code=20for=20the=20same=20reason.=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=2019707:=20Return=20?= =?UTF-8?q?value=20from=20isTransformationBlocked=20was=20inverted.=20Fixe?= =?UTF-8?q?d=20now.=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=2019705:?= =?UTF-8?q?=20Refinement=20of=20previous=20check-in=20re=20OOo=20transform?= =?UTF-8?q?ations.=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20I=20have=20pulled=20up=20the=20code=20that=20handles=20block?= =?UTF-8?q?ed=20transformations=20into=20a=20superclass=20so=20that=20the?= =?UTF-8?q?=20JodConverter-based=20transformer=20worker=20can=20inherit=20?= =?UTF-8?q?the=20same=20list=20of=20blocked=20transformations.=20To=20reit?= =?UTF-8?q?erate,=20blocked=20transformations=20are=20those=20that=20the?= =?UTF-8?q?=20OOo=20integration=20code=20believes=20should=20work=20but=20?= =?UTF-8?q?which=20are=20broken=20in=20practice.=20These=20are=20blocked?= =?UTF-8?q?=20by=20the=20transformers=20and=20will=20always=20be=20unavail?= =?UTF-8?q?able=20regardless=20of=20the=20OOo=20connection=20state.=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=2019702:=20Fix=20for=20?= =?UTF-8?q?HEAD=20builds=20running=20on=20panda=20build=20server.=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20OOo=20was=20rec?= =?UTF-8?q?ently=20installed=20on=20panda=20which=20has=20activated=20vari?= =?UTF-8?q?ous=20OOo-related=20transformations/extractions=20in=20the=20te?= =?UTF-8?q?st=20code.=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20It=20appears=20that=20OOo=20does=20not=20support=20some?= =?UTF-8?q?=20transformations=20from=20Office=2097=20to=20Office=202007.?= =?UTF-8?q?=20Specifically=20doc=20to=20docx=20and=20xls=20to=20xlsx.=20Th?= =?UTF-8?q?ese=20transformations=20have=20now=20been=20marked=20as=20unava?= =?UTF-8?q?ilable.=20=20=20=20=20=20=2020220:=20Created=20hotfix=20branch?= =?UTF-8?q?=20off=20TAGS/ENTERPRISE/V3.1.0=20=20=20=2020297:=20Merged=20PA?= =?UTF-8?q?TCHES/V3.1.2=20to=20V3.3=20(RECORD=20ONLY)=20=20=20=20=20=20=20?= =?UTF-8?q?20268:=20Increment=20version=20number=20=20=20=20=20=20=2020267?= =?UTF-8?q?:=20ALF-550:=20Merged=20V3.2=20to=20PATCHES/V3.1.2=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=2017768:=20Merged=20DEV/BELARUS/V3.2-2009=5F11?= =?UTF-8?q?=5F24=20to=20V3.2=20=20=20=20=20=20=20=20=20=20=20=20=2017758:?= =?UTF-8?q?=20ETHREEOH-3757:=20Oracle=20upgrade=20issue:=20failed=20"invit?= =?UTF-8?q?eEmailTemplate"=20patch=20-=20also=20causes=20subsequent=20patc?= =?UTF-8?q?hes=20to=20not=20be=20applied=20=20=20=20=20=20=2020217:=20Merg?= =?UTF-8?q?ed=20PATCHES/V3.2.0=20to=20PATCHES/V3.1.2=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=2019793:=20Merged=20HEAD=20to=20V3.2.0=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=2019786:=20Refactor=20of=20previous=20test?= =?UTF-8?q?=20fix.=20I=20have=20pushed=20down=20the=20OOo-specific=20parts?= =?UTF-8?q?=20of=20the=20change=20from=20AbstractContentTransformerTest=20?= =?UTF-8?q?to=20OpenOfficeContentTransformerTest=20leaving=20an=20extensio?= =?UTF-8?q?n=20point=20in=20the=20base=20class=20should=20other=20transfor?= =?UTF-8?q?mations=20need=20to=20be=20excluded=20in=20the=20future.=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=2019785:=20Fix=20for=20failing?= =?UTF-8?q?=20test=20OpenOfficeContentTransformerTest.testAllConversions.?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20Various=20OOo-r?= =?UTF-8?q?elated=20transformations=20are=20returned=20as=20available=20bu?= =?UTF-8?q?t=20fail=20on=20our=20test=20server=20with=20OOo=20on=20it.=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20Pending=20further?= =?UTF-8?q?=20work=20on=20these=20failings,=20I=20am=20disabling=20those?= =?UTF-8?q?=20transformations=20in=20test=20code=20whilst=20leaving=20them?= =?UTF-8?q?=20available=20in=20the=20product=20code.=20This=20is=20because?= =?UTF-8?q?=20in=20the=20wild=20a=20different=20OOo=20version=20may=20succ?= =?UTF-8?q?eed=20with=20these=20transformations.=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20I=20had=20previously=20explicitly=20dis?= =?UTF-8?q?abled=203=20transformations=20in=20the=20product=20and=20I=20am?= =?UTF-8?q?=20moving=20that=20restriction=20from=20product=20to=20test=20c?= =?UTF-8?q?ode=20for=20the=20same=20reason.=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=2019707:=20Return=20value=20from=20isTransformationBlock?= =?UTF-8?q?ed=20was=20inverted.=20Fixed=20now.=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=2019705:=20Refinement=20of=20previous=20check-in=20re?= =?UTF-8?q?=20OOo=20transformations.=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20I=20have=20pulled=20up=20the=20code=20that=20handle?= =?UTF-8?q?s=20blocked=20transformations=20into=20a=20superclass=20so=20th?= =?UTF-8?q?at=20the=20JodConverter-based=20transformer=20worker=20can=20in?= =?UTF-8?q?herit=20the=20same=20list=20of=20blocked=20transformations.=20T?= =?UTF-8?q?o=20reiterate,=20blocked=20transformations=20are=20those=20that?= =?UTF-8?q?=20the=20OOo=20integration=20code=20believes=20should=20work=20?= =?UTF-8?q?but=20which=20are=20broken=20in=20practice.=20These=20are=20blo?= =?UTF-8?q?cked=20by=20the=20transformers=20and=20will=20always=20be=20una?= =?UTF-8?q?vailable=20regardless=20of=20the=20OOo=20connection=20state.=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=2019702:=20Fix=20for=20HEAD?= =?UTF-8?q?=20builds=20running=20on=20panda=20build=20server.=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20OOo=20was=20recently=20inst?= =?UTF-8?q?alled=20on=20panda=20which=20has=20activated=20various=20OOo-re?= =?UTF-8?q?lated=20transformations/extractions=20in=20the=20test=20code.?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20It=20appears=20?= =?UTF-8?q?that=20OOo=20does=20not=20support=20some=20transformations=20fr?= =?UTF-8?q?om=20Office=2097=20to=20Office=202007.=20Specifically=20doc=20t?= =?UTF-8?q?o=20docx=20and=20xls=20to=20xlsx.=20These=20transformations=20h?= =?UTF-8?q?ave=20now=20been=20marked=20as=20unavailable.=20=20=20=20=20=20?= =?UTF-8?q?=2020204:=20Moved=20version=20label=20to=20'.6'=20=20=20=202029?= =?UTF-8?q?8:=20Merged=20PATCHES/V3.2.0=20to=20V3.3=20(RECORD=20ONLY)=20?= =?UTF-8?q?=20=20=20=20=20=2020281:=20Incremented=20version=20number=20to?= =?UTF-8?q?=20'10'=20=20=20=20=20=20=2020272:=20Backports=20to=20help=20fi?= =?UTF-8?q?x=20ALF-2839:=20Node=20pre-loading=20generates=20needless=20res?= =?UTF-8?q?ultset=20rows=20=20=20=20=20=20=20=20=20=20Merged=20BRANCHES/V3?= =?UTF-8?q?.2=20to=20PATCHES/V3.2.0:=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=2018490:=20Added=20cache=20for=20alf=5Fcontent=5Fdata=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20Merged=20BRANCHES/DEV/V3.3-BUG-FIX=20to=20?= =?UTF-8?q?PATCHES/V3.2.0:=20=20=20=20=20=20=20=20=20=20=20=20=2020231:=20?= =?UTF-8?q?Fixed=20ALF-2784:=20Degradation=20of=20performance=20between=20?= =?UTF-8?q?3.1.1=20and=203.2x=20(observed=20in=20JSF)=20=20=20=2020299:=20?= =?UTF-8?q?Merged=20PATCHES/V3.2.1=20to=20V3.3=20(RECORD=20ONLY)=20=20=20?= =?UTF-8?q?=20=20=20=2020279:=20Incremented=20version=20label=20=20=20=20?= =?UTF-8?q?=20=20=2020211:=20Reinstated=20patch=20'patch.convertContentUrl?= =?UTF-8?q?s'=20(reversed=20rev=2020205=20ALF-2719)=20=20=20=20=20=20=2020?= =?UTF-8?q?210:=20Incremented=20version=20label=20to=20'.3'=20=20=20=20=20?= =?UTF-8?q?=20=2020206:=20Bumped=20version=20label=20to=20'.2'=20=20=20=20?= =?UTF-8?q?=20=20=2020205:=20Workaround=20for=20ALF-2719=20by=20disabling?= =?UTF-8?q?=20patch.convertContentUrls=20and=20ContentStoreCleaner=20=20?= =?UTF-8?q?=20=20=20=20=2020149:=20Incremented=20version=20label=20=20=20?= =?UTF-8?q?=20=20=20=2020101:=20Created=20hotfix=20branch=20off=20ENTERPRI?= =?UTF-8?q?SE/V3.2.1=20=20=20=2020300:=20Merged=20BRANCHES/DEV/BELARUS/HEA?= =?UTF-8?q?D-2010=5F04=5F28=20to=20BRANCHES/V3.3:=20=20=20=20=20=20=202029?= =?UTF-8?q?3:=20ALF-767:=20remove-AVM-issuer.sql=20upgrade=20does=20not=20?= =?UTF-8?q?account=20for=20column=20(mis-)order=20-=20fixed=20for=20MySQL,?= =?UTF-8?q?=20PostgreSQL=20and=20Oracle=20(DB2=20&=20MS=20SQL=20Server=20a?= =?UTF-8?q?lready=20OK)=20=20=20=2020301:=20Merged=20PATCHES/V3.2.1=20to?= =?UTF-8?q?=20V3.3=20=20=20=20=20=20=2020278:=20ALF-206:=20Make=20it=20pos?= =?UTF-8?q?sible=20to=20follow=20hyperlinks=20to=20document=20JSF=20client?= =?UTF-8?q?=20URLs=20from=20MS=20Office=20=20=20=20=20=20=20=20=20=20-=20A?= =?UTF-8?q?=20request=20parameter=20rather=20than=20a=20(potentially=20for?= =?UTF-8?q?gotten)=20session=20attribute=20is=20used=20to=20propagate=20th?= =?UTF-8?q?e=20URL=20to=20redirect=20to=20after=20successful=20login=20=20?= =?UTF-8?q?=20=2020303:=20Fixed=20ALF-2855:=20FixAuthorityCrcValuesPatch?= =?UTF-8?q?=20reports=20NPE=20during=20upgrade=20from=202.1.7=20to=203.3E?= =?UTF-8?q?=20=20=20=20=20=20=20-=20Auto-unbox=20NPE=20on=20Long->long:=20?= =?UTF-8?q?Just=20used=20the=20Long=20directly=20for=20reporting=20=20=20?= =?UTF-8?q?=2020319:=20Fixed=20ALF-2854:=20User=20Usage=20Queries=20use=20?= =?UTF-8?q?read-write=20methods=20on=20QNameDAO=20=20=20=2020322:=20Fixed?= =?UTF-8?q?=20ALF-1998:=20contentStoreCleanerJob=20leads=20to=20foreign=20?= =?UTF-8?q?key=20exception=20=20=20=20=20=20=20-=20Possible=20concurrent?= =?UTF-8?q?=20modification=20of=20alf=5Fcontent=5Furl.orphan=5Ftime=20led?= =?UTF-8?q?=20to=20false=20orphan=20detection=20=20=20=20=20=20=20-=20Fixe?= =?UTF-8?q?d=20queries=20to=20check=20for=20dereferencing=20AND=20use=20th?= =?UTF-8?q?e=20indexed=20orphan=5Ftime=20column=20=20=20=20=20=20=20-=20Mo?= =?UTF-8?q?re=20robust=20use=20of=20EagerContentStoreCleaner:=20On=20eager?= =?UTF-8?q?=20cleanup,=20ensure=20that=20URLs=20are=20deleted=20=20=20=20?= =?UTF-8?q?=20=20=20-=20Added=20optimistic=20lock=20checks=20on=20updates?= =?UTF-8?q?=20and=20deletes=20of=20alf=5Fcontent=5Furl=20=20=20=2020335:?= =?UTF-8?q?=20Merged=20DEV/V3.3-BUG-FIX=20to=20V3.3=20=20=20=20=20=20=2020?= =?UTF-8?q?334:=20ALF-2473:=20Changes=20for=20clean=20startup=20and=20shut?= =?UTF-8?q?down=20of=20subsystems=20on=20Spring=203=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20-=20Removed=20previous=20SafeEventPublisher=20workarou?= =?UTF-8?q?nd=20for=20startup=20errors=20and=20associated=20changes=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20-=20Replaced=20with=20SafeApplicationEv?= =?UTF-8?q?entMulticaster=20which=20queues=20up=20events=20while=20an=20ap?= =?UTF-8?q?plication=20context=20isn't=20started=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20-=20Now=20all=20subsystems=20shut=20down=20cleanly=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20-=20Fixes=20problem=20with=20FileConten?= =?UTF-8?q?tStore=20visibility=20in=20JMX=20too!=20=20=20=2020341:=20ALF-2?= =?UTF-8?q?517=20Quick=20fix=20which=20means=20rules=20which=20compare=20t?= =?UTF-8?q?he=20creation/modification=20date=20of=20content=20should=20now?= =?UTF-8?q?=20correctly=20be=20applied=20when=20content=20is=20uploaded=20?= =?UTF-8?q?to=20a=20folder.=20=20=20=2020346:=20ALF-2839:=20Node=20pre-loa?= =?UTF-8?q?ding=20generates=20needless=20resultset=20rows=20=20=20=20=20?= =?UTF-8?q?=20=20-=20Added=20missing=20Criteria.list()=20call=20=20=20=202?= =?UTF-8?q?0347:=20Merged=20BRANCHES/DEV/V3.3-BUG-FIX=20to=20BRANCHES/V3.3?= =?UTF-8?q?:=20=20=20=20=20=20=2020231:=20Fixed=20ALF-2784:=20Degradation?= =?UTF-8?q?=20of=20performance=20between=203.1.1=20and=203.2x=20(observed?= =?UTF-8?q?=20in=20JSF)=20=20=20=2020356:=20Merged=20DEV/BELARUS/HEAD-2010?= =?UTF-8?q?=5F03=5F30=20to=20V3.3=20(with=20corrections)=20=20=20=20=20=20?= =?UTF-8?q?=2019735:=20ALF-686:=20Alfresco=20cannot=20start=20if=20read/wr?= =?UTF-8?q?ite=20mode=20in=20Sysadmin=20subsystem=20is=20configured=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=201.=20org.alfresco.repo.module.ModuleCom?= =?UTF-8?q?ponentHelper=20was=20modified=20to=20allow=20=E2=80=9CSystem?= =?UTF-8?q?=E2=80=9D=20user=20run=20write=20operations=20in=20read-only=20?= =?UTF-8?q?system.=20=20=20=20=20=20=20=20=20=202.=20Startup=20of=20?= =?UTF-8?q?=E2=80=9CSynchronization=E2=80=9D=20subsystem=20failed=20with?= =?UTF-8?q?=20the=20same=20error=20as=20was=20occurred=20in=20issue=20duri?= =?UTF-8?q?ng=20modules=20start.=20org.alfresco.repo.security.sync.Chainin?= =?UTF-8?q?gUserRegistrySynchronizer=20was=20also=20modified=20to=20allow?= =?UTF-8?q?=20=E2=80=9CSystem=E2=80=9D=20user=20run=20write=20operations?= =?UTF-8?q?=20in=20read-only=20mode.=20=20=20=2020361:=20Merged=20HEAD=20t?= =?UTF-8?q?o=20BRANCHES/V3.3:=20(RECORD=20ONLY)=20=20=20=20=20=20=2020345:?= =?UTF-8?q?=20Fix=20ALF-2319:=20CMIS=20'current'=20version=20mapping=20is?= =?UTF-8?q?=20not=20compliant=20with=20spec=20=20=20=20=20=20=2020354:=20U?= =?UTF-8?q?pdate=20test=20to=20reflect=20changes=20to=20CMIS=20version=20m?= =?UTF-8?q?apping.=20=20=20=2020363:=20Merge=20from=20V3.2=20to=20V3.2=20(?= =?UTF-8?q?all=20record-only)=20=20=20=20=20=20=20c.=2019448=20OOoJodConve?= =?UTF-8?q?rter=20worker=20bean=20correctly=20handles=20isAvailable()=20wh?= =?UTF-8?q?en=20subsystem=20is=20disabled.=20=20=20=20=20=20=20c.=2019484?= =?UTF-8?q?=20JodConverter-backed=20thumbnailing=20test=20now=20explicitly?= =?UTF-8?q?=20sets=20OOoDirect=20and=20OOoJodconverter=20enabled-ness=20ba?= =?UTF-8?q?ck=20to=20default=20settings=20in=20tearDown=20=20=20=20=20=20?= =?UTF-8?q?=20c.=2020175=20Fix=20for=20ALF-2773=20JMX=20configuration=20of?= =?UTF-8?q?=20enterprise=20logging=20broken=20=20=20=2020376:=20Altered=20?= =?UTF-8?q?URL=20of=20online=20help=20to=20point=20at=20http://www.alfresc?= =?UTF-8?q?o.com/help/33/enterprise/webeditor/=20=20=20=2020395:=20set=20g?= =?UTF-8?q?oogle=20docs=20off=20=20=20=2020398:=20Fixed=20ALF-2890:=20Upgr?= =?UTF-8?q?ade=20removes=20content=20if=20transaction=20retries=20are=20tr?= =?UTF-8?q?iggered=20=20=20=20=20=20=20-=20Setting=20ContentData=20that=20?= =?UTF-8?q?was=20derived=20outside=20of=20the=20current=20transaction=20op?= =?UTF-8?q?ened=20up=20a=20window=20=20=20=20=20=20=20=20=20for=20the=20po?= =?UTF-8?q?st-rollback=20code=20to=20delete=20the=20underlying=20binary.?= =?UTF-8?q?=20The=20binaries=20are=20only=20registered=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20for=20writers=20fetched=20via=20the=20ContentService?= =?UTF-8?q?=20now;=20the=20low-level=20DAO=20no=20longer=20does=20manageme?= =?UTF-8?q?nt=20=20=20=20=20=20=20=20=20because=20it=20can't=20assume=20th?= =?UTF-8?q?at=20a=20new=20content=20URL=20indicates=20a=20new=20underlying?= =?UTF-8?q?=20binary.=20=20=20=20=20=20=20-=20The=20contentUrlConverter=20?= =?UTF-8?q?was=20creating=20new=20URLs=20and=20thus=20the=20low-level=20DA?= =?UTF-8?q?O=20cleaned=20up=20=20=20=20=20=20=20=20=20live=20content=20whe?= =?UTF-8?q?n=20retrying=20collisions=20took=20place.=20The=20cleanup=20is?= =?UTF-8?q?=20no=20longer=20on=20the=20stack=20=20=20=20=20=20=20=20=20for?= =?UTF-8?q?=20the=20patch.=20=20=20=20=20=20=20-=20Removes=20the=20ALF-558?= =?UTF-8?q?=20changes=20around=20ContentData.reference()=20=20=20=2020399:?= =?UTF-8?q?=20Remove=20googledocs=20aspect=20option=20=20=20=2020400:=20Pu?= =?UTF-8?q?rgeTestP=20(AVM)=20-=20increase=20wait=20cycles=20=20=20=202042?= =?UTF-8?q?2:=20Added=20ooo=20converter=20properties=20=20=20=2020425:=20M?= =?UTF-8?q?erge=20V3.3-BUG-FIX=20to=20V3.3=20=20=20=20=20=20=2020392=20:?= =?UTF-8?q?=20ALF-2716=20-=20imap=20mail=20metadata=20extraction=20fails?= =?UTF-8?q?=20when=20alfresco=20server=20locale=20is=20non=20English=20=20?= =?UTF-8?q?=20=20=20=20=2020365=20:=20Merge=20DEV=20to=20V3.3-BUG=5FFIX=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=2018011=20:=20ETHREEOH-3804=20-=20IMAP?= =?UTF-8?q?=20message=20body=20doesn't=20appears=20in=20IMAP=20folder=20wh?= =?UTF-8?q?en=20message=20subject=20is=20equal=20to=20the=20attachment=20n?= =?UTF-8?q?ame=20=20=20=20=20=20=2020332=20:=20Build=20fix=20-=20rework=20?= =?UTF-8?q?to=20the=20ImapServiceUnit=20tests.=20=20=20=20=20=20=2020325?= =?UTF-8?q?=20:=20build=20fix=20=20=20=20=20=20=2020318=20:=20MERGE=20DEV?= =?UTF-8?q?=20TO=20V3.3-BUG-FIX=20=20=20=20=20=20=20=20=20=2020287=20:=20A?= =?UTF-8?q?LF-2754:=20Alfresco=20IMAP=20and=20Zimbra=20Desktop=20Client.?= =?UTF-8?q?=20=20=20=20=20=20=2020317=20:=20ALF-2716=20-=20imap=20mail=20m?= =?UTF-8?q?etadata=20extraction=20fails=20when=20alfresco=20server=20local?= =?UTF-8?q?e=20is=20non=20English=20=20=20This=20change=20reworks=20the=20?= =?UTF-8?q?received=20date=20metadata=20extraction.=20=20=20=20=20=20=2020?= =?UTF-8?q?316=20:=20ALF-1912=20:=20Problem=20with=20IMAP=20Sites=20visibi?= =?UTF-8?q?lity=20=20=20Now=20only=20IMAP=20favouries=20are=20shown.=20=20?= =?UTF-8?q?=20Also=20major=20rework=20to=20the=20way=20that=20this=20servi?= =?UTF-8?q?ce=20uses=20the=20FileFolderService.=20=20=20=20=20=20=2020315?= =?UTF-8?q?=20:=20ALF-1912=20Updates=20to=20the=20FileFolderService=20to?= =?UTF-8?q?=20support=20the=20Imap=20Service=20=20=20=20-=20add=20listDeep?= =?UTF-8?q?Folders=20=20=20=20-=20remove=20"makeFolders"=20which=20moves?= =?UTF-8?q?=20to=20its=20own=20Utility=20class.=20=20=20=20-=20update=20to?= =?UTF-8?q?=20JavaDoc=20=20=20=2020429:=20Merged=20BRANCHES/DEV/V3.3-BUG-F?= =?UTF-8?q?IX=20to=20BRANCHES/V3.3:=20=20=20=20=20=20=2020171:=203.3SP1=20?= =?UTF-8?q?bug=20fix=20branch=20=20=20=20=20=20=2020174:=20Fix=20for=20ALF?= =?UTF-8?q?-960=20and=20ALFCOM-1980:=20WCM=20-=20File=20Picker=20Restricti?= =?UTF-8?q?on=20relative=20to=20folder=20not=20web=20project=20=20=20=20?= =?UTF-8?q?=20=20=2020179:=20ALF-2629=20Now=20when=20a=20workflow=20timer?= =?UTF-8?q?=20signals=20a=20transition=20it=20also=20ends=20the=20associat?= =?UTF-8?q?ed=20task.=20=20=20=2020433:=20Merged=20BRANCHES/DEV/V3.3-BUG-F?= =?UTF-8?q?IX=20to=20BRANCHES/V3.3:=20=20=20=20=20=20=2020184:=20ALF-2772:?= =?UTF-8?q?=20Added=20new=20test=20case=20to=20RepoTransferReceiverImplTes?= =?UTF-8?q?t=20and=20fixed=20the=20fault=20in=20the=20primary=20manifest?= =?UTF-8?q?=20processor.=20=20=20=20=20=20=2020196:=20Temporary=20fix=20to?= =?UTF-8?q?=20SandboxServiceImplTest,=20which=20reverses=20the=20fix=20to?= =?UTF-8?q?=20ALF-2529.=20=20=20=2020434:=20Merged=20BRANCHES/DEV/V3.3-BUG?= =?UTF-8?q?-FIX=20to=20BRANCHES/V3.3:=20(RECORD=20ONLY)=20=20=20=20=20=20?= =?UTF-8?q?=2020213:=20(RECORD=20ONLY)=20Merge=20from=20V3.3=20to=20V3.3-B?= =?UTF-8?q?UG-FIX=20=20=20=20=20=20=20=20=20=20r20176=20Merge=20from=20V3.?= =?UTF-8?q?2=20to=20V3.3.=20=20=20=20=20=20=20=20=20=20=20=20=20=20r20175.?= =?UTF-8?q?=20JMX=20configuration=20of=20enterprise=20logging=20broken=20(?= =?UTF-8?q?fix).=20=20=20=20=20=20=2020215:=20(RECORD=20ONLY)=20Merge=20fr?= =?UTF-8?q?om=20V3.3=20to=20V3.3-BUG-FIX=20=20=20=20=20=20=20=20=20=20r201?= =?UTF-8?q?78=20JodConverter=20loggers=20are=20now=20exposed=20in=20JMX.?= =?UTF-8?q?=20=20=20=20=20=20=2020218:=20(RECORD=20ONLY)=20Merged=20BRANCH?= =?UTF-8?q?ES/V3.3=20to=20BRANCHES/DEV/V3.3-BUG-FIX:=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=2020195:=20Form=20fields=20for=20numbers=20are=20now=20r?= =?UTF-8?q?endered=20much=20smaller=20that=20...=20=20=20=20=20=20=2020248?= =?UTF-8?q?:=20(RECORD=20ONLY)=20Merging=20HEAD=20into=20V3.3=20=20=20=20?= =?UTF-8?q?=20=20=2020284:=20(RECORD=20ONLY)=20Merged=20BRANCHES/V3.3=20to?= =?UTF-8?q?=20BRANCHES/DEV/V3.3-BUG-FIX:=20=20=20=20=20=20=20=20=20=202017?= =?UTF-8?q?7:=20Add=20'MaxPermSize'=20setting=20for=20DOD=20JUnit=20tests?= =?UTF-8?q?=20=20=20=20=20=20=2020305:=20(RECORD=20ONLY)=20Merged=20BRANCH?= =?UTF-8?q?ES/V3.3=20to=20BRANCHES/DEV/V3.3-BUG-FIX:=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=2020236:=20Add=20Oracle=20support=20for=20creating/dropp?= =?UTF-8?q?ing=20"databases"=20(users)=20in=20continuous.xml=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=2020264:=20Updated=20Oracle=20build=20support?= =?UTF-8?q?=20(to=20fix=20grants)=20=20=20=2020435:=20Merged=20BRANCHES/DE?= =?UTF-8?q?V/V3.3-BUG-FIX=20to=20BRANCHES/V3.3:=20=20=20=20=20=20=2020233:?= =?UTF-8?q?=20Part=20fix=20for=20ALF-2811:=20DOD5015=20module=20breaks=20C?= =?UTF-8?q?MIS=20tck=20=20=20=20=20=20=2020239:=20Final=20part=20of=20fix?= =?UTF-8?q?=20for=20ALF-2811:=20DOD5015=20module=20breaks=20CMIS=20tck=20?= =?UTF-8?q?=20=20=20=20=20=2020250:=20Merge=20from=20DEV/BELARUS/HEAD-2010?= =?UTF-8?q?=5F04=5F28=20to=20V3.3-BUG-FIX=20=20=20=20=20=20=20=20=20=20202?= =?UTF-8?q?30=20ALF-2450:=20latin/utf-8=20HTML=20file=20cannot=20be=20text?= =?UTF-8?q?-extracted.=20=20=20=20=20=20=2020253:=20ALF-2629=20Now=20tasks?= =?UTF-8?q?=20should=20correctly=20be=20ended=20when=20an=20associated=20t?= =?UTF-8?q?imer=20is=20triggered.=20Should=20no=20longer=20cause=20WCM=20w?= =?UTF-8?q?orkflows=20to=20fail.=20=20=20=20=20=20=2020254:=20ALF-2579=20C?= =?UTF-8?q?hanged=20teh=20status=20code=20on=20incorrect=20password=20to?= =?UTF-8?q?=20'401'=20to=20reflect=20that=20it=20is=20an=20authorisation?= =?UTF-8?q?=20error.=20=20=20=20=20=20=2020263:=20Fix=20for=20ALF-2500:=20?= =?UTF-8?q?query=20with=20a=20!=20in=20contains=20search=20make=20it=20str?= =?UTF-8?q?ange=20=20=20=20=20=20=2020265:=20Fix=20for=20ALF-1495.=20Reind?= =?UTF-8?q?exing=20of=20OOo-transformed=20content=20after=20OOo=20crash.?= =?UTF-8?q?=20=20=20=2020436:=20Merged=20BRANCHES/DEV/V3.3-BUG-FIX=20to=20?= =?UTF-8?q?BRANCHES/V3.3:=20=20=20=20=20=20=2020292:=20(RECORD=20ONLY)=20L?= =?UTF-8?q?atest=20SpringSurf=20libs:=20=20=20=20=20=20=2020308:=20(RECORD?= =?UTF-8?q?=20ONLY)=20Latest=20SpringSurf=20libs:=20=20=20=20=20=20=202036?= =?UTF-8?q?6:=20(RECORD=20ONLY)=20Latest=20SpringSurf=20libs:=20=20=20=20?= =?UTF-8?q?=20=20=2020415:=20Latest=20SpringSurf=20libs:=20=20=20=2020437:?= =?UTF-8?q?=20Merged=20BRANCHES/DEV/V3.3-BUG-FIX=20to=20BRANCHES/V3.3:=20?= =?UTF-8?q?=20=20=20=20=20=2020270:=20Build=20times:=20SearchTestSuite=20?= =?UTF-8?q?=20=20=20=20=20=2020273:=20Fix=20for=20ALF-2125=20-=20Accessing?= =?UTF-8?q?=20a=20deleted=20page=20in=20Share=20does=20not=20return=20an?= =?UTF-8?q?=20error=20page,=20instead=20the=20document-details=20page=20br?= =?UTF-8?q?eaks=20=20=20=20=20=20=2020274:=20Fix=20for=20ALF-2518:=20It's?= =?UTF-8?q?=20impossible=20to=20find=20user=20by=20user=20name=20in=20Add?= =?UTF-8?q?=20User=20or=20Group=20window=20at=20Manage=20permissions=20pag?= =?UTF-8?q?e=20(also=20allows=20users=20to=20be=20found=20by=20username=20?= =?UTF-8?q?in=20the=20Share=20Admin=20Console).=20=20=20=20=20=20=2020277:?= =?UTF-8?q?=20Fix=20for=20ALF-2417:=20Create=20Web=20Content=20Wizard=20if?= =?UTF-8?q?=20cancelling/aborting=20Step=20Two=20-=20Author=20Web=20Conten?= =?UTF-8?q?t,=20any=20asset=20being=20uploaded=20gets=20locked=20=20=20=20?= =?UTF-8?q?=20=20=2020291:=20Reduce=20build=20time:=20Added=20security=20t?= =?UTF-8?q?est=20suite=20to=20cover=2017=20security=20tests=20=20=20=20204?= =?UTF-8?q?39:=20Merged=20BRANCHES/DEV/V3.3-BUG-FIX=20to=20BRANCHES/V3.3:?= =?UTF-8?q?=20=20=20=20=20=20=2020302:=20Fixed=20ALF-727:=20=20Oracle=20iB?= =?UTF-8?q?atis=20fails=20on=20PropertyValueDAOTest=20Double.MAX=5FVALUE?= =?UTF-8?q?=20=20=20=20=20=20=2020307:=20VersionStore=20-=20minor=20fixes?= =?UTF-8?q?=20if=20running=20deprecated=20V1=20=20=20=20=20=20=2020310:=20?= =?UTF-8?q?Fixed=20a=20bug=20in=20UIContentSelector=20which=20was=20buildi?= =?UTF-8?q?ng=20lucene=20search=20queries=20incorrectly.=20=20=20=20=20=20?= =?UTF-8?q?=2020314:=20Fix=20for=20ALF-2789=20-=20DispatcherServlet=20not?= =?UTF-8?q?=20correctly=20retrieving=20Object=20ID=20from=20request=20para?= =?UTF-8?q?meters=20=20=20=20=20=20=2020320:=20Merged=20DEV/TEMPORARY=20to?= =?UTF-8?q?=20V3.3-BUG-FIX=20=20=20=20=20=20=20=20=20=2020313:=20ALF-2507:?= =?UTF-8?q?=20Not=20able=20to=20email=20space=20users=20even=20if=20the=20?= =?UTF-8?q?user=20owns=20the=20space=20=20=20=20=20=20=2020324:=20Fixed=20?= =?UTF-8?q?ALF-2078=20"Content=20doesn't=20make=20checked=20in=20after=20a?= =?UTF-8?q?pplying=20'Check-in'=20rule=20in=20Share"=20=20=20=20=20=20=202?= =?UTF-8?q?0327:=20Fix=20Quickr=20project=20to=20compile=20in=20Eclipse=20?= =?UTF-8?q?=20=20=20=20=20=2020367:=20ALF-2829:=20Avoid=20reading=20entire?= =?UTF-8?q?=20result=20set=20into=20memory=20in=20FixNameCrcValuesPatch=20?= =?UTF-8?q?=20=20=20=20=20=2020368:=20Work-around=20for=20ALF-2366:=20patc?= =?UTF-8?q?h.updateDmPermissions=20takes=20too=20long=20to=20complete=20?= =?UTF-8?q?=20=20=20=20=20=2020369:=20Part=201=20of=20fix=20for=20ALF-2943?= =?UTF-8?q?:=20Update=20incorrect=20mimetypes=20(Excel=20and=20Powerpoint)?= =?UTF-8?q?=20=20=20=20=20=20=2020370:=20Version=20Migrator=20(ALF-1000)?= =?UTF-8?q?=20-=20use=20common=20batch=20processor=20to=20enable=20multipl?= =?UTF-8?q?e=20workers=20=20=20=20=20=20=2020373:=20Version=20Migrator=20(?= =?UTF-8?q?ALF-1000)=20-=20resolve=20runtime=20conflict=20(w/=20r20334)=20?= =?UTF-8?q?=20=20=20=20=20=2020378:=20Merged=20BRANCHES/DEV/BELARUS/HEAD-2?= =?UTF-8?q?010=5F04=5F28=20to=20BRANCHES/DEV/V3.3-BUG-FIX:=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=2020312:=20ALF-2162:=20Error=20processing=20WCM=20?= =?UTF-8?q?form:=20XFormsBindingException:=20property=20'constraint'=20alr?= =?UTF-8?q?eady=20present=20at=20model=20item=20=20=20=20=20=20=2020381:?= =?UTF-8?q?=20Fixed=20ALF-2943:=20Update=20incorrect=20mimetypes=20(Excel?= =?UTF-8?q?=20and=20Powerpoint)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@20571 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../alfresco/web/app/servlet/BaseServlet.java | 48 +++++++----- .../java/org/alfresco/web/bean/LoginBean.java | 14 ++-- .../alfresco/web/bean/LoginOutcomeBean.java | 67 +++++++++++++++++ .../web/bean/users/EmailSpaceUsersDialog.java | 73 +++++++++++-------- .../web/bean/wcm/CreateWebContentWizard.java | 17 +++++ .../alfresco/web/bean/wcm/FilePickerBean.java | 26 ++----- .../ui/repo/component/UIContentSelector.java | 9 +-- source/web/WEB-INF/faces-config-beans.xml | 13 ++++ source/web/jsp/login.jsp | 3 + 9 files changed, 186 insertions(+), 84 deletions(-) create mode 100644 source/java/org/alfresco/web/bean/LoginOutcomeBean.java diff --git a/source/java/org/alfresco/web/app/servlet/BaseServlet.java b/source/java/org/alfresco/web/app/servlet/BaseServlet.java index 518e2cbde3..541e4c4a15 100644 --- a/source/java/org/alfresco/web/app/servlet/BaseServlet.java +++ b/source/java/org/alfresco/web/app/servlet/BaseServlet.java @@ -19,6 +19,7 @@ package org.alfresco.web.app.servlet; import java.io.IOException; +import java.net.URLEncoder; import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -47,6 +48,7 @@ import org.alfresco.service.namespace.NamespaceService; import org.springframework.extensions.surf.util.URLDecoder; import org.alfresco.web.app.Application; import org.alfresco.web.bean.LoginBean; +import org.alfresco.web.bean.LoginOutcomeBean; import org.alfresco.web.bean.repository.Repository; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -163,32 +165,40 @@ public abstract class BaseServlet extends HttpServlet * once the user has successfully completed the authentication process. */ public static void redirectToLoginPage(HttpServletRequest req, HttpServletResponse res, ServletContext sc) - throws IOException + throws IOException { // authentication failed - so end servlet execution and redirect to login page - res.sendRedirect(req.getContextPath() + FACES_SERVLET + Application.getLoginPage(sc)); - - // save the full requested URL so the login page knows where to redirect too later + StringBuilder redirectURL = new StringBuilder(1024).append(req.getContextPath()).append(FACES_SERVLET).append( + Application.getLoginPage(sc)); + + // Pass the full requested URL as a parameter so the login page knows where to redirect to later String uri = req.getRequestURI(); - String url = uri; - if (req.getQueryString() != null && req.getQueryString().length() != 0) + + // if we find a JSF servlet reference in the URI then we need to check if the rest of the + // JSP specified is valid for a redirect operation after Login has occured. + int jspIndex; + if (uri.indexOf(req.getContextPath() + FACES_SERVLET) == -1 + || uri.length() > (jspIndex = uri.indexOf(BaseServlet.FACES_SERVLET) + BaseServlet.FACES_SERVLET.length()) + && BaseServlet.validRedirectJSP(uri.substring(jspIndex))) { - url += "?" + req.getQueryString(); - } - if (uri.indexOf(req.getContextPath() + FACES_SERVLET) != -1) - { - // if we find a JSF servlet reference in the URI then we need to check if the rest of the - // JSP specified is valid for a redirect operation after Login has occured. - int jspIndex = uri.indexOf(BaseServlet.FACES_SERVLET) + BaseServlet.FACES_SERVLET.length(); - if (uri.length() > jspIndex && BaseServlet.validRedirectJSP(uri.substring(jspIndex))) + if (redirectURL.indexOf("?") == -1) { - req.getSession().setAttribute(LoginBean.LOGIN_REDIRECT_KEY, url); + redirectURL.append('?'); } + else + { + redirectURL.append('&'); + } + redirectURL.append(LoginOutcomeBean.PARAM_REDIRECT_URL); + redirectURL.append('='); + String url = uri; + if (req.getQueryString() != null && req.getQueryString().length() != 0) + { + url += "?" + req.getQueryString(); + } + redirectURL.append(URLEncoder.encode(url, "UTF-8")); } - else - { - req.getSession().setAttribute(LoginBean.LOGIN_REDIRECT_KEY, url); - } + res.sendRedirect(redirectURL.toString()); } /** diff --git a/source/java/org/alfresco/web/bean/LoginBean.java b/source/java/org/alfresco/web/bean/LoginBean.java index fbc231f4cb..41bee76088 100644 --- a/source/java/org/alfresco/web/bean/LoginBean.java +++ b/source/java/org/alfresco/web/bean/LoginBean.java @@ -323,17 +323,18 @@ public class LoginBean implements Serializable // the app to continue without redirecting to the login page Application.setCurrentUser(fc, user); + // Programatically retrieve the LoginOutcomeBean from JSF + LoginOutcomeBean loginOutcomeBean = (LoginOutcomeBean) fc.getApplication().createValueBinding( + "#{LoginOutcomeBean}").getValue(fc); + // if a redirect URL has been provided then use that // this allows servlets etc. to provide a URL to return too after a successful login - String redirectURL = (String)session.get(LOGIN_REDIRECT_KEY); - if (redirectURL != null) + String redirectURL = loginOutcomeBean.getRedirectURL(); + if (redirectURL != null && redirectURL.length() > 0) { if (logger.isDebugEnabled()) logger.debug("Redirect URL found: " + redirectURL); - - // remove redirect URL from session - session.remove(LOGIN_REDIRECT_KEY); - + try { fc.getExternalContext().redirect(redirectURL); @@ -472,7 +473,6 @@ public class LoginBean implements Serializable public static final String MSG_PASSWORD_LENGTH = "login_err_password_length"; public static final String MSG_USER_ERR = "user_err_user_name"; - public static final String LOGIN_REDIRECT_KEY = "_alfRedirect"; public static final String LOGIN_EXTERNAL_AUTH = "_alfExternalAuth"; public static final String LOGIN_NOPERMISSIONS = "_alfNoPermissions"; diff --git a/source/java/org/alfresco/web/bean/LoginOutcomeBean.java b/source/java/org/alfresco/web/bean/LoginOutcomeBean.java new file mode 100644 index 0000000000..9d0c17bf62 --- /dev/null +++ b/source/java/org/alfresco/web/bean/LoginOutcomeBean.java @@ -0,0 +1,67 @@ +/* + * Copyright (C) 2005-2010 Alfresco Software Limited. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + * As a special exception to the terms and conditions of version 2.0 of + * the GPL, you may redistribute this Program in connection with Free/Libre + * and Open Source Software ("FLOSS") applications as described in Alfresco's + * FLOSS exception. You should have received a copy of the text describing + * the FLOSS exception, and it is also available here: + * http://www.alfresco.com/legal/licensing" + */ +package org.alfresco.web.bean; + +import java.io.Serializable; + +/** + * A request-scoped bean that is used to propagate the URL to redirect to after successful login. This is now done with + * request parameters rather than session-scoped beans so that tools such as MS Office, which do not propagate cookies + * to hyperlinks, can be used to open hyperlinks to protected documents (ALF-206). + * + * @author dward + */ +public class LoginOutcomeBean implements Serializable +{ + /** The name of the request parameter that provides the initial value of the {@link #redirectURL} property. */ + public static final String PARAM_REDIRECT_URL = "_alfRedirect"; + + private static final long serialVersionUID = -2575348340143674698L; + + /** The URL to redirect to after successful login. */ + private String redirectURL; + + /** + * Gets the URL to redirect to after successful login. + * + * @return the URL to redirect to after successful login + */ + public String getRedirectURL() + { + return redirectURL; + } + + /** + * Sets the URL to redirect to after successful login. + * + * @param redirectURL + * the URL to redirect to after successful login + */ + public void setRedirectURL(String redirectURL) + { + this.redirectURL = redirectURL; + } + +} diff --git a/source/java/org/alfresco/web/bean/users/EmailSpaceUsersDialog.java b/source/java/org/alfresco/web/bean/users/EmailSpaceUsersDialog.java index 060f3e8c11..07916258e3 100644 --- a/source/java/org/alfresco/web/bean/users/EmailSpaceUsersDialog.java +++ b/source/java/org/alfresco/web/bean/users/EmailSpaceUsersDialog.java @@ -33,6 +33,8 @@ import javax.faces.event.ActionEvent; import javax.transaction.UserTransaction; import org.alfresco.model.ContentModel; +import org.alfresco.repo.security.authentication.AuthenticationUtil; +import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork; import org.alfresco.service.cmr.repository.InvalidNodeRefException; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.security.AccessPermission; @@ -313,46 +315,53 @@ public class EmailSpaceUsersDialog extends BaseDialogBean implements IContextLis // Return all the permissions set against the current node for any authentication // instance (user/group), walking the parent space inheritance chain. // Then combine them into a single list for each authentication found. - String currentAuthority = Application.getCurrentUser(context).getUserName(); - Map> permissionMap = new HashMap>(8, 1.0f); - NodeRef spaceRef = getSpace().getNodeRef(); - while (spaceRef != null) + final String currentAuthority = Application.getCurrentUser(context).getUserName(); + Map> permissionMap = AuthenticationUtil.runAs(new RunAsWork>>() { - Set permissions = getPermissionService().getAllSetPermissions(spaceRef); - for (AccessPermission permission : permissions) + public Map> doWork() throws Exception { - // we are only interested in Allow and not Guest/Everyone/owner - if (permission.getAccessStatus() == AccessStatus.ALLOWED && - (permission.getAuthorityType() == AuthorityType.USER || - permission.getAuthorityType() == AuthorityType.GROUP)) + NodeRef spaceRef = getSpace().getNodeRef(); + Map> permissionMap = new HashMap>(8, 1.0f); + while (spaceRef != null) { - String authority = permission.getAuthority(); - - if (currentAuthority.equals(authority) == false) + Set permissions = getPermissionService().getAllSetPermissions(spaceRef); + for (AccessPermission permission : permissions) { - List userPermissions = permissionMap.get(authority); - if (userPermissions == null) + // we are only interested in Allow and not Guest/Everyone/owner + if (permission.getAccessStatus() == AccessStatus.ALLOWED && + (permission.getAuthorityType() == AuthorityType.USER || + permission.getAuthorityType() == AuthorityType.GROUP)) { - // create for first time - userPermissions = new ArrayList(4); - permissionMap.put(authority, userPermissions); + String authority = permission.getAuthority(); + + if (currentAuthority.equals(authority) == false) + { + List userPermissions = permissionMap.get(authority); + if (userPermissions == null) + { + // create for first time + userPermissions = new ArrayList(4); + permissionMap.put(authority, userPermissions); + } + // add the permission name for this authority + userPermissions.add(permission.getPermission()); + } } - // add the permission name for this authority - userPermissions.add(permission.getPermission()); + } + + // walk parent inheritance chain until root or no longer inherits + if (getPermissionService().getInheritParentPermissions(spaceRef)) + { + spaceRef = getNodeService().getPrimaryParent(spaceRef).getParentRef(); + } + else + { + spaceRef = null; } } - } - - // walk parent inheritance chain until root or no longer inherits - if (getPermissionService().getInheritParentPermissions(spaceRef)) - { - spaceRef = getNodeService().getPrimaryParent(spaceRef).getParentRef(); - } - else - { - spaceRef = null; - } - } + return permissionMap; + } + }, AuthenticationUtil.SYSTEM_USER_NAME); // create the structure as a linked list for fast insert/removal of items this.usersGroups = new LinkedList(); diff --git a/source/java/org/alfresco/web/bean/wcm/CreateWebContentWizard.java b/source/java/org/alfresco/web/bean/wcm/CreateWebContentWizard.java index 290dfd66ee..f2d35e2b15 100644 --- a/source/java/org/alfresco/web/bean/wcm/CreateWebContentWizard.java +++ b/source/java/org/alfresco/web/bean/wcm/CreateWebContentWizard.java @@ -366,6 +366,23 @@ public class CreateWebContentWizard extends CreateContentWizard } } + // remove any locks created as a result of uploading files + final NodeRef[] uploadedFiles = this.filePickerBean.getUploadedFiles(); + if (uploadedFiles != null && uploadedFiles.length > 0) + { + for (NodeRef uploadedFile : uploadedFiles) + { + String path = AVMNodeConverter.ToAVMVersionPath(uploadedFile).getSecond(); + String storeId = AVMUtil.getStoreId(path); + String storePath = AVMUtil.getStoreRelativePath(path); + + if (logger.isDebugEnabled()) + logger.debug("Removing lock for uploaded file: " + path); + + this.getAvmLockingService().removeLock(storeId, storePath); + } + } + return super.cancel(); } diff --git a/source/java/org/alfresco/web/bean/wcm/FilePickerBean.java b/source/java/org/alfresco/web/bean/wcm/FilePickerBean.java index 33120f87a8..8325092353 100644 --- a/source/java/org/alfresco/web/bean/wcm/FilePickerBean.java +++ b/source/java/org/alfresco/web/bean/wcm/FilePickerBean.java @@ -112,10 +112,6 @@ public class FilePickerBean implements Serializable // cached reference to the public saved searches folder private NodeRef publicSearchesRef = null; - // initial current folder - the current folder path which the - // the file picker opens at when first selected in the form - private String initialCurrentPath = null; - public FilePickerBean() { } @@ -383,32 +379,20 @@ public class FilePickerBean implements Serializable AVMUtil.PathRelation.WEBAPP_RELATIVE); } - // if initial current path not set then set it to the current path - if (initialCurrentPath == null) - { - initialCurrentPath = currentPath; - - // insert '/' at end of initial current path if there isn't one - if (initialCurrentPath.charAt(initialCurrentPath.length() - 1) != '/') - { - initialCurrentPath = initialCurrentPath + "/"; - } - } - // if folder path restriction (relative path) is set, - // then calculate the absolute restriction path (in context of file - // picker's - // initial current path - the path at which it was opened the first time) - // and set file picker current path to that + // then calculate the absolute restriction path from the root + // of the webapp and set the current path to that if ((folderPathRestriction != null) && (folderPathRestriction.length() != 0)) { - currentPath = initialCurrentPath + folderPathRestriction; + currentPath = AVMUtil.getWebappPath(currentPath) + "/" + folderPathRestriction; } if (LOGGER.isDebugEnabled()) { LOGGER.debug(this + ".getFilePickerData(path = " + currentPath + + ", folderRestriction = " + + folderPathRestriction + ", selectableTypes = [" + StringUtils.join(selectableTypes, ",") + "], filterMimetypes = [" diff --git a/source/java/org/alfresco/web/ui/repo/component/UIContentSelector.java b/source/java/org/alfresco/web/ui/repo/component/UIContentSelector.java index e46d6865fa..6f59071137 100644 --- a/source/java/org/alfresco/web/ui/repo/component/UIContentSelector.java +++ b/source/java/org/alfresco/web/ui/repo/component/UIContentSelector.java @@ -43,7 +43,6 @@ import org.alfresco.web.bean.repository.Repository; import org.alfresco.web.ui.common.Utils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.lucene.queryParser.QueryParser; /** * Component for selecting content from the repository @@ -54,7 +53,7 @@ public class UIContentSelector extends UIInput { private final static Log logger = LogFactory.getLog(UIContentSelector.class); - private final static String ACTION_SEPARATOR = ";"; +// private final static String ACTION_SEPARATOR = ";"; private final static String ACTION_SEARCH = "0"; private final static String FIELD_CONTAINS = "_contains"; @@ -123,8 +122,8 @@ public class UIContentSelector extends UIInput */ public void decode(FacesContext context) { - Map requestMap = context.getExternalContext().getRequestParameterMap(); - Map valuesMap = context.getExternalContext().getRequestParameterValuesMap(); + Map requestMap = context.getExternalContext().getRequestParameterMap(); + Map valuesMap = context.getExternalContext().getRequestParameterValuesMap(); String fieldId = getHiddenFieldName(); String value = (String)requestMap.get(fieldId); @@ -356,7 +355,7 @@ public class UIContentSelector extends UIInput NamespaceService.CONTENT_MODEL_1_0_URI, "name")); query.append(nameAttr); - query.append(":*" + safeContains + "*"); + query.append(":\"*" + safeContains + "\"*"); } int maxResults = Application.getClientConfig(context).getSelectorsSearchMaxResults(); diff --git a/source/web/WEB-INF/faces-config-beans.xml b/source/web/WEB-INF/faces-config-beans.xml index 1ee8661de1..396f888143 100644 --- a/source/web/WEB-INF/faces-config-beans.xml +++ b/source/web/WEB-INF/faces-config-beans.xml @@ -260,6 +260,19 @@ + + + A request scoped bean that backs up the Login screen + + LoginOutcomeBean + org.alfresco.web.bean.LoginOutcomeBean + request + + redirectURL + #{param._alfRedirect} + + + The bean that holds navigation state. diff --git a/source/web/jsp/login.jsp b/source/web/jsp/login.jsp index 8d6314b1fc..7927b31a16 100644 --- a/source/web/jsp/login.jsp +++ b/source/web/jsp/login.jsp @@ -87,6 +87,9 @@ + <%-- Propagate the redirect URL parameter --%> + +