From helpdesk at onehippo.com Tue Dec 1 10:17:15 2009
From: helpdesk at onehippo.com (JIRA (Stephan Westen))
Date: Tue Dec 1 10:27:47 2009
Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-3486) Update all content
fails when an existing type has been edited
In-Reply-To: <16584005.221291259587755997.JavaMail.jira@jira.vm.castaserver.com>
Message-ID: <13857413.225891259659035946.JavaMail.jira@jira.vm.castaserver.com>
[ http://issues.onehippo.com/browse/HREPTWO-3486?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Stephan Westen updated HREPTWO-3486:
------------------------------------
Priority: Top (was: Normal)
> Update all content fails when an existing type has been edited
> --------------------------------------------------------------
>
> Key: HREPTWO-3486
> URL: http://issues.onehippo.com/browse/HREPTWO-3486
> Project: Hippo Repository 2
> Issue Type: Bug
> Reporter: Frank van Lankvelt
> Assignee: Berry van Halderen
> Priority: Top
> Fix For: r2.10.00
>
>
> When a template for an existing type has been edited, update-all-content fails.
> Reproduction path:
> - open template for "defaultcontent:article"
> - click "edit"
> - click "done"
> - update-all-content on defaultcontent
> javax.jcr.nodetype.ConstraintViolationException: /hippo:namespaces/defaultcontent/article/hipposysedit:prototypes/hipposysedit:prototype[3]/defaultcontent:body: no definition found in parent node's node type for new node: no matching child node definition found for {http://www.hippoecm.org/defaultcontent/nt/1.7}body: no matching child node definition found for {http://www.hippoecm.org/defaultcontent/nt/1.7}body
> at org.apache.jackrabbit.core.SessionImpl.move(SessionImpl.java:999)
> at org.hippoecm.repository.decorating.SessionDecorator.move(SessionDecorator.java:194)
> at org.hippoecm.repository.updater.UpdaterNode.commit(UpdaterNode.java:258)
> at org.hippoecm.repository.updater.UpdaterNode.commit(UpdaterNode.java:342)
> at org.hippoecm.repository.updater.UpdaterNode.commit(UpdaterNode.java:342)
> at org.hippoecm.repository.updater.UpdaterNode.commit(UpdaterNode.java:342)
> at org.hippoecm.repository.updater.UpdaterNode.commit(UpdaterNode.java:342)
> at org.hippoecm.repository.updater.UpdaterNode.commit(UpdaterNode.java:342)
> at org.hippoecm.repository.updater.UpdaterNode.commit(UpdaterNode.java:342)
> at org.hippoecm.repository.updater.UpdaterSession.commit(UpdaterSession.java:214)
> at org.hippoecm.repository.updater.UpdaterEngine.upgrade(UpdaterEngine.java:558)
> at org.hippoecm.repository.updater.UpdaterEngine.migrate(UpdaterEngine.java:544)
> at org.hippoecm.repository.standardworkflow.RepositoryWorkflowImpl.updateModel(RepositoryWorkflowImpl.java:144)
> at org.hippoecm.repository.standardworkflow.RepositoryWorkflowImpl.updateModel(RepositoryWorkflowImpl.java:154)
> at org.hippoecm.repository.standardworkflow.RepositoryWorkflowImpl.updateModel(RepositoryWorkflowImpl.java:204)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at org.hippoecm.repository.impl.WorkflowManagerImpl$WorkflowInvocationImpl.invoke(WorkflowManagerImpl.java:788)
> at org.hippoecm.repository.impl.WorkflowManagerImpl$WorkflowInvocationHandler.invoke(WorkflowManagerImpl.java:512)
> at $Proxy2.updateModel(Unknown Source)
> at org.hippoecm.frontend.editor.workflow.RemodelWorkflowPlugin$1.execute(RemodelWorkflowPlugin.java:89)
> at org.hippoecm.frontend.editor.workflow.RemodelWorkflowPlugin$1.execute(RemodelWorkflowPlugin.java:1)
> at org.hippoecm.addon.workflow.CompatibilityWorkflowPlugin$WorkflowAction.execute(CompatibilityWorkflowPlugin.java:153)
> at org.hippoecm.addon.workflow.CompatibilityWorkflowPlugin$WorkflowAction$WorkflowDialog.execute(CompatibilityWorkflowPlugin.java:231)
> at org.hippoecm.frontend.editor.workflow.dialog.RemodelDialog.remodel(RemodelDialog.java:67)
> at org.hippoecm.frontend.editor.workflow.dialog.RemodelWizard$Step2$1.getLazyLoadComponent(RemodelWizard.java:84)
> at org.apache.wicket.extensions.ajax.markup.html.AjaxLazyLoadPanel$1.respond(AjaxLazyLoadPanel.java:79)
> at org.apache.wicket.ajax.AbstractDefaultAjaxBehavior.onRequest(AbstractDefaultAjaxBehavior.java:299)
> at org.apache.wicket.request.target.component.listener.BehaviorRequestTarget.processEvents(BehaviorRequestTarget.java:119)
> at org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:92)
> at org.hippoecm.frontend.PluginRequestCycleProcessor.processEvents(PluginRequestCycleProcessor.java:31)
> at org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1250)
> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1329)
> at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1428)
> at org.apache.wicket.RequestCycle.request(RequestCycle.java:545)
> at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:468)
> at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:301)
> at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
> at org.hippoecm.frontend.plugins.login.ConcurrentLoginFilter.doFilter(ConcurrentLoginFilter.java:54)
> at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
> at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
> at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
> at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
> at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:722)
> at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:404)
> at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
> at org.mortbay.jetty.Server.handle(Server.java:324)
> at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
> at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:828)
> at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
> at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
> at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
> at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
> at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450)
> Caused by: javax.jcr.nodetype.ConstraintViolationException: no matching child node definition found for {http://www.hippoecm.org/defaultcontent/nt/1.7}body
> at org.apache.jackrabbit.core.nodetype.EffectiveNodeType.getApplicableChildNodeDef(EffectiveNodeType.java:730)
> at org.apache.jackrabbit.core.NodeImpl.getApplicableChildNodeDefinition(NodeImpl.java:878)
> at org.apache.jackrabbit.core.SessionImpl.move(SessionImpl.java:995)
> ... 55 more
> javax.jcr.nodetype.ConstraintViolationException: no matching child node definition found for {http://www.hippoecm.org/defaultcontent/nt/1.7}body
> at org.apache.jackrabbit.core.nodetype.EffectiveNodeType.getApplicableChildNodeDef(EffectiveNodeType.java:730)
> at org.apache.jackrabbit.core.NodeImpl.getApplicableChildNodeDefinition(NodeImpl.java:878)
> at org.apache.jackrabbit.core.SessionImpl.move(SessionImpl.java:995)
> at org.hippoecm.repository.decorating.SessionDecorator.move(SessionDecorator.java:194)
> at org.hippoecm.repository.updater.UpdaterNode.commit(UpdaterNode.java:258)
> at org.hippoecm.repository.updater.UpdaterNode.commit(UpdaterNode.java:342)
> at org.hippoecm.repository.updater.UpdaterNode.commit(UpdaterNode.java:342)
> at org.hippoecm.repository.updater.UpdaterNode.commit(UpdaterNode.java:342)
> at org.hippoecm.repository.updater.UpdaterNode.commit(UpdaterNode.java:342)
> at org.hippoecm.repository.updater.UpdaterNode.commit(UpdaterNode.java:342)
> at org.hippoecm.repository.updater.UpdaterNode.commit(UpdaterNode.java:342)
> at org.hippoecm.repository.updater.UpdaterSession.commit(UpdaterSession.java:214)
> at org.hippoecm.repository.updater.UpdaterEngine.upgrade(UpdaterEngine.java:558)
> at org.hippoecm.repository.updater.UpdaterEngine.migrate(UpdaterEngine.java:544)
> at org.hippoecm.repository.standardworkflow.RepositoryWorkflowImpl.updateModel(RepositoryWorkflowImpl.java:144)
> at org.hippoecm.repository.standardworkflow.RepositoryWorkflowImpl.updateModel(RepositoryWorkflowImpl.java:154)
> at org.hippoecm.repository.standardworkflow.RepositoryWorkflowImpl.updateModel(RepositoryWorkflowImpl.java:204)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at org.hippoecm.repository.impl.WorkflowManagerImpl$WorkflowInvocationImpl.invoke(WorkflowManagerImpl.java:788)
> at org.hippoecm.repository.impl.WorkflowManagerImpl$WorkflowInvocationHandler.invoke(WorkflowManagerImpl.java:512)
> at $Proxy2.updateModel(Unknown Source)
> at org.hippoecm.frontend.editor.workflow.RemodelWorkflowPlugin$1.execute(RemodelWorkflowPlugin.java:89)
> at org.hippoecm.frontend.editor.workflow.RemodelWorkflowPlugin$1.execute(RemodelWorkflowPlugin.java:1)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
From helpdesk at onehippo.com Tue Dec 1 10:19:15 2009
From: helpdesk at onehippo.com (JIRA (Stephan Westen))
Date: Tue Dec 1 10:29:47 2009
Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-3253) Template editor
should keep focus on input field when selected
In-Reply-To: <11386778.7811255610475741.JavaMail.jira@jira.vm.castaserver.com>
Message-ID: <22165647.225961259659155921.JavaMail.jira@jira.vm.castaserver.com>
[ http://issues.onehippo.com/browse/HREPTWO-3253?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Stephan Westen updated HREPTWO-3253:
------------------------------------
Fix Version/s: r2.11.00
(was: r2.10.00)
> Template editor should keep focus on input field when selected
> --------------------------------------------------------------
>
> Key: HREPTWO-3253
> URL: http://issues.onehippo.com/browse/HREPTWO-3253
> Project: Hippo Repository 2
> Issue Type: Bug
> Affects Versions: r2.09.00
> Reporter: Bart van der Schans
> Assignee: Frank van Lankvelt
> Fix For: r2.11.00
>
> Original Estimate: 2 hours
> Remaining Estimate: 2 hours
>
> When selecting an input field the focus is removed from the input field and the bar is highlighted (yellow). This behavior is unexpected and when you try to remove a character with backspace the browser does a "go back ".
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
From svn-logs at hippocms.org Tue Dec 1 10:46:25 2009
From: svn-logs at hippocms.org (bvdschans)
Date: Tue Dec 1 10:46:26 2009
Subject: [HippoRepos-dev] [20947] hippo-ecm: HREPTWO-16: Clarify comment
Message-ID: <20091201094625.EA280C19E@svnnew.onehippo.org>
Revision: 20947
Author: bvdschans
Date: 2009-12-01 10:46:24 +0100 (Tue, 01 Dec 2009)
Log Message:
-----------
HREPTWO-16: Clarify comment
Modified Paths:
--------------
hippo-ecm/branches/Branch-HREPTWO-v2_09_xx/repository/engine/src/main/java/org/hippoecm/repository/security/HippoAccessManager.java
Modified: hippo-ecm/branches/Branch-HREPTWO-v2_09_xx/repository/engine/src/main/java/org/hippoecm/repository/security/HippoAccessManager.java
===================================================================
--- hippo-ecm/branches/Branch-HREPTWO-v2_09_xx/repository/engine/src/main/java/org/hippoecm/repository/security/HippoAccessManager.java 2009-11-30 17:45:31 UTC (rev 20946)
+++ hippo-ecm/branches/Branch-HREPTWO-v2_09_xx/repository/engine/src/main/java/org/hippoecm/repository/security/HippoAccessManager.java 2009-12-01 09:46:24 UTC (rev 20947)
@@ -332,7 +332,7 @@
try {
return canRead((NodeId) id);
} catch (NoSuchItemStateException e) {
- // shouldn't happen, the id was already found
+ // This usually happens when the id is found in the index but not in the database
log.info("No item id found", e);
return false;
}
From svn-logs at hippocms.org Tue Dec 1 10:47:05 2009
From: svn-logs at hippocms.org (bvdschans)
Date: Tue Dec 1 10:47:04 2009
Subject: [HippoRepos-dev] [20948] hippo-ecm: HREPTWO-16: Clarify comment
Message-ID: <20091201094705.653AFC96D@svnnew.onehippo.org>
Revision: 20948
Author: bvdschans
Date: 2009-12-01 10:47:04 +0100 (Tue, 01 Dec 2009)
Log Message:
-----------
HREPTWO-16: Clarify comment
Modified Paths:
--------------
hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/HippoAccessManager.java
Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/HippoAccessManager.java
===================================================================
--- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/HippoAccessManager.java 2009-12-01 09:46:24 UTC (rev 20947)
+++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/security/HippoAccessManager.java 2009-12-01 09:47:04 UTC (rev 20948)
@@ -332,7 +332,7 @@
try {
return canRead((NodeId) id);
} catch (NoSuchItemStateException e) {
- // shouldn't happen, the id was already found
+ // This usually happens when the id is found in the index but not in the database
log.info("No item id found", e);
return false;
}
From svn-logs at hippocms.org Tue Dec 1 10:47:50 2009
From: svn-logs at hippocms.org (bvdschans)
Date: Tue Dec 1 10:47:49 2009
Subject: [HippoRepos-dev] [20949] hippo-ecm: HREPTWO-16: Relax logging
Message-ID: <20091201094750.C5553C96D@svnnew.onehippo.org>
Revision: 20949
Author: bvdschans
Date: 2009-12-01 10:47:50 +0100 (Tue, 01 Dec 2009)
Log Message:
-----------
HREPTWO-16: Relax logging
Modified Paths:
--------------
hippo-ecm/branches/Branch-HREPTWO-v2_06_xx/repository/engine/src/main/java/org/hippoecm/repository/security/HippoAccessManager.java
Modified: hippo-ecm/branches/Branch-HREPTWO-v2_06_xx/repository/engine/src/main/java/org/hippoecm/repository/security/HippoAccessManager.java
===================================================================
--- hippo-ecm/branches/Branch-HREPTWO-v2_06_xx/repository/engine/src/main/java/org/hippoecm/repository/security/HippoAccessManager.java 2009-12-01 09:47:04 UTC (rev 20948)
+++ hippo-ecm/branches/Branch-HREPTWO-v2_06_xx/repository/engine/src/main/java/org/hippoecm/repository/security/HippoAccessManager.java 2009-12-01 09:47:50 UTC (rev 20949)
@@ -332,8 +332,8 @@
try {
return canRead((NodeId) id);
} catch (NoSuchItemStateException e) {
- // shouldn't happen, the id was already found
- log.error("No item id found", e);
+ // This usually happens when the id is found in the index but not in the database
+ log.info("No item id found", e);
return false;
}
}
From svn-logs at hippocms.org Tue Dec 1 10:48:42 2009
From: svn-logs at hippocms.org (bvdschans)
Date: Tue Dec 1 10:48:42 2009
Subject: [HippoRepos-dev] [20950] hippo-ecm: HREPTWO-16: Clarify comment
Message-ID: <20091201094842.BF329C96D@svnnew.onehippo.org>
Revision: 20950
Author: bvdschans
Date: 2009-12-01 10:48:42 +0100 (Tue, 01 Dec 2009)
Log Message:
-----------
HREPTWO-16: Clarify comment
Modified Paths:
--------------
hippo-ecm/branches/Branch-HREPTWO-v2_03_xx/repository/engine/src/main/java/org/hippoecm/repository/security/HippoAccessManager.java
Modified: hippo-ecm/branches/Branch-HREPTWO-v2_03_xx/repository/engine/src/main/java/org/hippoecm/repository/security/HippoAccessManager.java
===================================================================
--- hippo-ecm/branches/Branch-HREPTWO-v2_03_xx/repository/engine/src/main/java/org/hippoecm/repository/security/HippoAccessManager.java 2009-12-01 09:47:50 UTC (rev 20949)
+++ hippo-ecm/branches/Branch-HREPTWO-v2_03_xx/repository/engine/src/main/java/org/hippoecm/repository/security/HippoAccessManager.java 2009-12-01 09:48:42 UTC (rev 20950)
@@ -332,7 +332,7 @@
try {
return canRead((NodeId) id);
} catch (NoSuchItemStateException e) {
- // shouldn't happen, the id was already found
+ // This usually happens when the id is found in the index but not in the database
log.info("No item id found", e);
return false;
}
From helpdesk at onehippo.com Tue Dec 1 11:07:16 2009
From: helpdesk at onehippo.com (JIRA (Stephan Westen))
Date: Tue Dec 1 11:17:48 2009
Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-3471) Error reporting
concerning backing database
In-Reply-To: <20206653.208351259246235741.JavaMail.jira@jira.vm.castaserver.com>
Message-ID: <28023213.226651259662036048.JavaMail.jira@jira.vm.castaserver.com>
[ http://issues.onehippo.com/browse/HREPTWO-3471?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Stephan Westen updated HREPTWO-3471:
------------------------------------
Assignee: Bart van der Schans
Fix Version/s: r2.11.00
Priority: Top (was: Normal)
What is MySQL's default max allowed packet size?
Note that this issue is already documented: http://www.onehippo.org/cms7/documentation/configuration/database_server.html
We could improve the documentation a bit.
Is there a way to log an error if the above situation occurs?
> Error reporting concerning backing database
> -------------------------------------------
>
> Key: HREPTWO-3471
> URL: http://issues.onehippo.com/browse/HREPTWO-3471
> Project: Hippo Repository 2
> Issue Type: Improvement
> Affects Versions: r2.09.03
> Reporter: Wim Ederveen
> Assignee: Bart van der Schans
> Priority: Top
> Fix For: r2.11.00
>
>
> We use a MySQL database for our repository.
> This database has a setting called "max_allowed_packet"
> What this does is determine what the max blob size is.
> When we try to upload a pdf file that is larger than this setting, for example 1Mb
> The repository will just say 0 bytes and the pdf wont work.
> Also when we upload a pdf that might have a corrupt header or something also shows as 0 bytes.
> This is confusing for the users of the cms, they dont know what database is behind the cms, and they shouldn't
> They get no notification that something went wrong.
> My suggestion is to improve the way the cms handles this kind of issues and implement errors or warnings in the cms.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
From helpdesk at onehippo.com Tue Dec 1 11:19:16 2009
From: helpdesk at onehippo.com (JIRA (Stephan Westen))
Date: Tue Dec 1 11:29:49 2009
Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-3487) Improve caption btn
Message-ID: <465561.226811259662756088.JavaMail.jira@jira.vm.castaserver.com>
Improve caption btn
-------------------
Key: HREPTWO-3487
URL: http://issues.onehippo.com/browse/HREPTWO-3487
Project: Hippo Repository 2
Issue Type: Improvement
Reporter: Stephan Westen
Assignee: Arthur Bogaart
Fix For: r2.11.00
Attachments: screenshot-1.jpg
The caption is misleading, it does not mention that you need to check the document(s) first to open them.
(I thought there was a bug)
The caption should be "Open selected documents in background"
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
From helpdesk at onehippo.com Tue Dec 1 11:19:16 2009
From: helpdesk at onehippo.com (JIRA (Stephan Westen))
Date: Tue Dec 1 11:29:50 2009
Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-3487) Improve caption btn
In-Reply-To: <465561.226811259662756088.JavaMail.jira@jira.vm.castaserver.com>
Message-ID: <4381673.226871259662756171.JavaMail.jira@jira.vm.castaserver.com>
[ http://issues.onehippo.com/browse/HREPTWO-3487?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Stephan Westen updated HREPTWO-3487:
------------------------------------
Assignee: Bart van der Schans (was: Arthur Bogaart)
> Improve caption btn
> -------------------
>
> Key: HREPTWO-3487
> URL: http://issues.onehippo.com/browse/HREPTWO-3487
> Project: Hippo Repository 2
> Issue Type: Improvement
> Reporter: Stephan Westen
> Assignee: Bart van der Schans
> Fix For: r2.11.00
>
> Attachments: screenshot-1.jpg
>
>
> The caption is misleading, it does not mention that you need to check the document(s) first to open them.
> (I thought there was a bug)
> The caption should be "Open selected documents in background"
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
From helpdesk at onehippo.com Tue Dec 1 11:19:16 2009
From: helpdesk at onehippo.com (JIRA (Stephan Westen))
Date: Tue Dec 1 11:29:50 2009
Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-3487) Improve caption btn
In-Reply-To: <465561.226811259662756088.JavaMail.jira@jira.vm.castaserver.com>
Message-ID: <13644881.226841259662756132.JavaMail.jira@jira.vm.castaserver.com>
[ http://issues.onehippo.com/browse/HREPTWO-3487?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Stephan Westen updated HREPTWO-3487:
------------------------------------
Attachment: screenshot-1.jpg
> Improve caption btn
> -------------------
>
> Key: HREPTWO-3487
> URL: http://issues.onehippo.com/browse/HREPTWO-3487
> Project: Hippo Repository 2
> Issue Type: Improvement
> Reporter: Stephan Westen
> Assignee: Arthur Bogaart
> Fix For: r2.11.00
>
> Attachments: screenshot-1.jpg
>
>
> The caption is misleading, it does not mention that you need to check the document(s) first to open them.
> (I thought there was a bug)
> The caption should be "Open selected documents in background"
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
From helpdesk at onehippo.com Tue Dec 1 11:19:16 2009
From: helpdesk at onehippo.com (JIRA (Stephan Westen))
Date: Tue Dec 1 11:29:51 2009
Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-3487) Improve caption btn
In-Reply-To: <465561.226811259662756088.JavaMail.jira@jira.vm.castaserver.com>
Message-ID: <6642348.226901259662756210.JavaMail.jira@jira.vm.castaserver.com>
[ http://issues.onehippo.com/browse/HREPTWO-3487?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Stephan Westen updated HREPTWO-3487:
------------------------------------
Description:
The caption is misleading, it does not mention that you need to check the document(s) first to open them.
(I thought there was a bug because nothing happened at all)
The caption should be "Open selected documents in background"
was:
The caption is misleading, it does not mention that you need to check the document(s) first to open them.
(I thought there was a bug)
The caption should be "Open selected documents in background"
> Improve caption btn
> -------------------
>
> Key: HREPTWO-3487
> URL: http://issues.onehippo.com/browse/HREPTWO-3487
> Project: Hippo Repository 2
> Issue Type: Improvement
> Reporter: Stephan Westen
> Assignee: Bart van der Schans
> Fix For: r2.11.00
>
> Attachments: screenshot-1.jpg
>
>
> The caption is misleading, it does not mention that you need to check the document(s) first to open them.
> (I thought there was a bug because nothing happened at all)
> The caption should be "Open selected documents in background"
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
From helpdesk at onehippo.com Tue Dec 1 12:14:15 2009
From: helpdesk at onehippo.com (JIRA (Mathijs Brand))
Date: Tue Dec 1 12:24:47 2009
Subject: [HippoRepos-dev]
[JIRA] Created: (HREPTWO-3488) XInha: lists, quotes, blockquotes
and def lists don't indent
Message-ID: <12216582.227371259666055796.JavaMail.jira@jira.vm.castaserver.com>
XInha: lists, quotes, blockquotes and def lists don't indent
------------------------------------------------------------
Key: HREPTWO-3488
URL: http://issues.onehippo.com/browse/HREPTWO-3488
Project: Hippo Repository 2
Issue Type: Bug
Components: front-end-core, user experience
Affects Versions: r2.10.00
Reporter: Mathijs Brand
Lists should indent in a backend template with a xinha field. By default this indentation is removed.
More info:
In the standard xinha editor css (xinhaInternal.css) margins and padding is set to 0px:
* { margin : 0; padding : 0;}
This will also remove indentation of lists, quotes, blockquotes and def lists.
Adding the following lines should fix it:
ol, ul, dl {margin-left: 2.5em;}
blockquote {margin: 0 2.5em 0 2.5em;}
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
From svn-logs at hippocms.org Tue Dec 1 12:58:54 2009
From: svn-logs at hippocms.org (fvlankvelt)
Date: Tue Dec 1 12:58:53 2009
Subject: [HippoRepos-dev] [20951] hippo-ecm: HREPTWO-16: fix typo that
pulled in dependency
Message-ID: <20091201115854.9F9DFC96E@svnnew.onehippo.org>
Revision: 20951
Author: fvlankvelt
Date: 2009-12-01 12:58:53 +0100 (Tue, 01 Dec 2009)
Log Message:
-----------
HREPTWO-16: fix typo that pulled in dependency
Modified Paths:
--------------
hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/properties/JcrPropertyValueModel.java
Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/properties/JcrPropertyValueModel.java
===================================================================
--- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/properties/JcrPropertyValueModel.java 2009-12-01 09:48:42 UTC (rev 20950)
+++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/properties/JcrPropertyValueModel.java 2009-12-01 11:58:53 UTC (rev 20951)
@@ -28,7 +28,6 @@
import javax.jcr.ValueFactory;
import javax.jcr.ValueFormatException;
import javax.jcr.nodetype.PropertyDefinition;
-import javax.xml.crypto.Data;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
@@ -44,7 +43,7 @@
/**
* Model of a property value. Retrieves the value of a single valued property, or an indexed
* value of a multi-valued property. The type of the value returned depends on the JCR type
- * of the property. I.e. JCR type string maps to {@link String}, date maps to {@link Data}.
+ * of the property. I.e. JCR type string maps to {@link String}, date maps to {@link Date}.
*
* One can also set and retrieve the underlying {@link Value}.
*/
From svn-logs at hippocms.org Tue Dec 1 13:03:51 2009
From: svn-logs at hippocms.org (fvlankvelt)
Date: Tue Dec 1 13:03:50 2009
Subject: [HippoRepos-dev] [20952] hippo-ecm: HREPTWO-16: make helper methods
public
Message-ID: <20091201120351.4CDBAC96D@svnnew.onehippo.org>
Revision: 20952
Author: fvlankvelt
Date: 2009-12-01 13:03:50 +0100 (Tue, 01 Dec 2009)
Log Message:
-----------
HREPTWO-16: make helper methods public
Modified Paths:
--------------
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/plugins/field/FieldPluginHelper.java
Modified: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/plugins/field/FieldPluginHelper.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/plugins/field/FieldPluginHelper.java 2009-12-01 11:58:53 UTC (rev 20951)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/plugins/field/FieldPluginHelper.java 2009-12-01 12:03:50 UTC (rev 20952)
@@ -107,7 +107,7 @@
}
}
- protected String getFieldName() {
+ public String getFieldName() {
return field != null ? field.getName() : "";
}
@@ -119,17 +119,17 @@
return context;
}
- protected ITemplateEngine getTemplateEngine() {
+ public ITemplateEngine getTemplateEngine() {
return getPluginContext()
.getService(getPluginConfig().getString(ITemplateEngine.ENGINE), ITemplateEngine.class);
}
- protected JcrNodeModel getNodeModel() {
+ public JcrNodeModel getNodeModel() {
return (JcrNodeModel) getPluginContext().getService(getPluginConfig().getString("wicket.model"),
IModelReference.class).getModel();
}
- protected JcrItemModel getFieldItemModel() {
+ public JcrItemModel getFieldItemModel() {
return new JcrItemModel(getNodeModel().getItemModel().getPath() + "/" + field.getPath());
}
From svn-logs at hippocms.org Tue Dec 1 13:39:38 2009
From: svn-logs at hippocms.org (bvanhalderen)
Date: Tue Dec 1 13:39:36 2009
Subject: [HippoRepos-dev] [20953] hippo-ecm: HREPTWO-3483:
Message-ID: <20091201123938.0C26BC96D@svnnew.onehippo.org>
Revision: 20953
Author: bvanhalderen
Date: 2009-12-01 13:39:37 +0100 (Tue, 01 Dec 2009)
Log Message:
-----------
HREPTWO-3483:
- allow user defined upgrades of namespaces (backport)
- bug in ordering upgrade modules after last (requires forward port)
- bug when node already moved still referenced for next upgrade by path
(just skip) (backport)
Modified Paths:
--------------
hippo-ecm/branches/Branch-HREPTWO-v2_09_xx/repository/engine/src/main/java/org/hippoecm/repository/updater/UpdaterEngine.java
hippo-ecm/branches/Branch-HREPTWO-v2_09_xx/repository/upgrade/src/main/java/org/hippoecm/repository/upgrade/Release72UpgraderPhase2.java
Added Paths:
-----------
hippo-ecm/branches/Branch-HREPTWO-v2_09_xx/repository/engine/src/main/java/org/hippoecm/repository/jackrabbit/HippoCompactNodeTypeDefReader.java
Added: hippo-ecm/branches/Branch-HREPTWO-v2_09_xx/repository/engine/src/main/java/org/hippoecm/repository/jackrabbit/HippoCompactNodeTypeDefReader.java
===================================================================
--- hippo-ecm/branches/Branch-HREPTWO-v2_09_xx/repository/engine/src/main/java/org/hippoecm/repository/jackrabbit/HippoCompactNodeTypeDefReader.java (rev 0)
+++ hippo-ecm/branches/Branch-HREPTWO-v2_09_xx/repository/engine/src/main/java/org/hippoecm/repository/jackrabbit/HippoCompactNodeTypeDefReader.java 2009-12-01 12:39:37 UTC (rev 20953)
@@ -0,0 +1,93 @@
+/*
+ * Copyright 2009 Hippo.
+ *
+ * Licensed 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.
+ */
+package org.hippoecm.repository.jackrabbit;
+
+import java.io.Reader;
+import java.util.Arrays;
+import java.util.Set;
+import java.util.TreeSet;
+
+import javax.jcr.NamespaceException;
+import javax.jcr.NamespaceRegistry;
+import javax.jcr.RepositoryException;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.apache.jackrabbit.core.nodetype.compact.CompactNodeTypeDefReader;
+import org.apache.jackrabbit.core.nodetype.compact.ParseException;
+import org.apache.jackrabbit.spi.commons.namespace.NamespaceMapping;
+
+import org.hippoecm.repository.util.VersionNumber;
+
+public class HippoCompactNodeTypeDefReader extends CompactNodeTypeDefReader {
+ @SuppressWarnings("unused")
+ private final static String SVN_ID = "$Id$";
+
+ static final Logger log = LoggerFactory.getLogger(HippoCompactNodeTypeDefReader.class);
+
+ private static class HippoNamespaceMapping extends NamespaceMapping {
+ static Set autoCompatibleNamespaces = new TreeSet(Arrays.asList(new String[] {"hippo", "hipposys"}));
+ private NamespaceRegistry registry;
+
+ HippoNamespaceMapping(NamespaceRegistry registry) {
+ this.registry = registry;
+ }
+
+ @Override
+ public void setMapping(String prefix, String uri) throws NamespaceException {
+ try {
+ if (autoCompatibleNamespaces.contains(prefix)) {
+ VersionNumber version = VersionNumber.versionFromURI(uri);
+ String[] versions = version.toString().split("\\.");
+ try {
+ String currentUri = registry.getURI(prefix);
+ VersionNumber currentVersion = VersionNumber.versionFromURI(currentUri);
+ String[] currentVersions = currentVersion.toString().split("\\.");
+ if (versions.length >= 2 && currentVersions.length >= 2 &&
+ versions[0].equals(currentVersions[0]) &&
+ versions[1].equals(currentVersions[1])) {
+ int compare = version.compareTo(currentVersion);
+ if (compare > 0) {
+ log.info("using outdated version in repository {} in stead of {}", new Object[] {currentUri, uri});
+ uri = currentUri;
+ } else if (compare < 0) {
+ log.info("using more up-to-date version in repository {} in stead of {}", new Object[] {currentUri, uri});
+ uri = currentUri;
+ }
+ }
+ } catch (NamespaceException ex) {
+ if (log.isDebugEnabled()) {
+ log.debug("namespace {} as yet undefined", new Object[] {uri});
+ }
+ // deliberate fall through
+ }
+ }
+ } catch (RepositoryException ex) {
+ log.error("unexpected exception while determining namespace", ex);
+ // deliberate fall through
+ }
+ if (log.isDebugEnabled()) {
+ log.debug("set mapping of {} to {}", new Object[] {prefix, uri});
+ }
+ super.setMapping(prefix, uri);
+ }
+ }
+
+ public HippoCompactNodeTypeDefReader(Reader reader, String systemId, NamespaceRegistry registry) throws ParseException {
+ super(reader, systemId, new HippoNamespaceMapping(registry));
+ }
+}
Property changes on: hippo-ecm/branches/Branch-HREPTWO-v2_09_xx/repository/engine/src/main/java/org/hippoecm/repository/jackrabbit/HippoCompactNodeTypeDefReader.java
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Modified: hippo-ecm/branches/Branch-HREPTWO-v2_09_xx/repository/engine/src/main/java/org/hippoecm/repository/updater/UpdaterEngine.java
===================================================================
--- hippo-ecm/branches/Branch-HREPTWO-v2_09_xx/repository/engine/src/main/java/org/hippoecm/repository/updater/UpdaterEngine.java 2009-12-01 12:03:50 UTC (rev 20952)
+++ hippo-ecm/branches/Branch-HREPTWO-v2_09_xx/repository/engine/src/main/java/org/hippoecm/repository/updater/UpdaterEngine.java 2009-12-01 12:39:37 UTC (rev 20953)
@@ -17,6 +17,7 @@
import java.io.IOException;
import java.io.InputStream;
+import java.io.StringReader;
import java.util.Collection;
import java.util.Comparator;
import java.util.HashMap;
@@ -83,6 +84,8 @@
import org.hippoecm.repository.ext.UpdaterItemVisitor;
import org.hippoecm.repository.ext.UpdaterModule;
import org.hippoecm.repository.impl.SessionDecorator;
+import org.hippoecm.repository.jackrabbit.HippoCompactNodeTypeDefReader;
+import org.hippoecm.repository.util.JcrCompactNodeTypeDefWriter;
public class UpdaterEngine {
@SuppressWarnings("unused")
@@ -140,9 +143,9 @@
}
visitors.add(visitor);
} catch (RepositoryException ex) {
- ex.printStackTrace(System.err);
+ log.error("error while registering visitor", ex);
} catch (ParseException ex) {
- ex.printStackTrace(System.err);
+ log.error("error while registering visitor", ex);
}
}
@@ -404,7 +407,7 @@
if (index != -1) {
modified = true;
iter.remove();
- modules.insertElementAt(module, index);
+ modules.insertElementAt(module, index-1);
break;
}
}
@@ -417,6 +420,34 @@
break;
}
}
+
+ // Throw away all namespace upgrades for which there is both an explicit CND-resource based upgrade as an implicit
+ Set explicitCNDUpgrades = new HashSet();
+ for(ModuleRegistration moduleRegistration : modules) {
+ for (ItemVisitor visitor : moduleRegistration.visitors) {
+ if (visitor instanceof NamespaceVisitorImpl) {
+ NamespaceVisitorImpl namespaceVisitor = (NamespaceVisitorImpl)visitor;
+ if (namespaceVisitor.cndReader != null)
+ explicitCNDUpgrades.add(namespaceVisitor.namespace);
+ }
+ }
+ }
+
+ for(ModuleRegistration moduleRegistration : modules) {
+ for (Iterator iter = moduleRegistration.visitors.iterator(); iter.hasNext();) {
+ ItemVisitor visitor = iter.next();
+ if (visitor instanceof NamespaceVisitorImpl) {
+ NamespaceVisitorImpl namespaceVisitor = (NamespaceVisitorImpl)visitor;
+ if (namespaceVisitor.cndReader == null) {
+ if (explicitCNDUpgrades.contains(namespaceVisitor.namespace)) {
+ iter.remove();
+ } else {
+ namespaceVisitor.initialize(moduleRegistration.getWorkspace());
+ }
+ }
+ }
+ }
+ }
return true;
}
@@ -440,8 +471,6 @@
}
}
} catch(UpdaterException ex) {
- System.err.println(ex.getClass().getName()+": "+ex.getMessage());
- ex.printStackTrace(System.err);
if(exception != null) {
exception = ex;
}
@@ -610,8 +639,10 @@
}
log.error("error in migration cycle, continuing, but this might lead to subsequent errors", ex);
} catch (PathNotFoundException ex) {
+ log.debug("could no longer convert "+path+" "+ex.getMessage(), ex);
// deliberate ignore
} catch (InvalidItemStateException ex) {
+ log.debug("could no longer convert "+path+" "+ex.getMessage(), ex);
// deliberate ignore
}
}
@@ -726,7 +757,6 @@
log.info("upgrade registering new nodetype " + ntd.getName());
/* EffectiveNodeType effnt = */ ntreg.registerNodeType(ntd);
} catch (InvalidNodeTypeDefException ex) {
- ex.printStackTrace(System.err);
// deliberate ignore
}
}
@@ -769,11 +799,13 @@
Node node = nodeIter.nextNode();
String path = node.getPath();
node = updaterSession.getRootNode();
- if (!path.equals("/")) {
- node = node.getNode(path.substring(1));
- }
try {
+ if (!path.equals("/")) {
+ node = node.getNode(path.substring(1));
+ }
visitor.visit(node);
+ } catch (PathNotFoundException ex) {
+ // deliberate ignore
} catch (InvalidItemStateException ex) {
// deliberate ignore
}
@@ -793,99 +825,6 @@
}
}
- /*
- public static class Converted extends UpdaterItemVisitor {
- public Converted() {
- }
-
- @Override
- public final void visit(Property property) throws RepositoryException {
- super.visit(property);
- }
-
- @Override
- public final void visit(Node node) throws RepositoryException {
- if (((UpdaterNode)node).hollow) {
- return;
- }
- super.visit(node);
- }
-
- protected void entering(Node node, int level)
- throws RepositoryException {
- }
-
- protected void entering(Property property, int level)
- throws RepositoryException {
- }
-
- protected void leaving(Node node, int level)
- throws RepositoryException {
- }
-
- protected void leaving(Property property, int level)
- throws RepositoryException {
- }
- }
-
- public static class Cleaner extends Converted {
- UpdaterContext context;
-
- public Cleaner(UpdaterContext context) {
- this.context = context;
- }
-
- void update(UpdaterSession session) throws RepositoryException {
- session.getRootNode().accept(this);
- }
-
- @Override
- public void entering(Node node, int level) throws RepositoryException {
- NodeType[] nodeTypes = context.getNodeTypes(node);
- for (PropertyIterator iter = node.getProperties(); iter.hasNext();) {
- UpdaterProperty property = (UpdaterProperty)iter.nextProperty();
- if (property.origin == null || !((Property)property.origin).getDefinition().isProtected()) {
- boolean isValid = false;
- for (int i = 0; i < nodeTypes.length; i++) {
- PropertyDefinition[] defs = nodeTypes[i].getPropertyDefinitions();
- for (int j = 0; j < defs.length; j++) {
- if (defs[j].getName().equals("*")) {
- isValid = true;
- } else if (defs[j].getName().equals(property.getName())) {
- isValid = true;
- break;
- }
- }
- }
- if (!isValid) {
- property.remove();
- }
- }
- }
- for (NodeIterator iter = node.getNodes(); iter.hasNext();) {
- UpdaterNode child = (UpdaterNode)iter.nextNode();
- if (child.origin == null || !((Node)child.origin).getDefinition().isProtected()) {
- boolean isValid = false;
- for (int i = 0; i < nodeTypes.length; i++) {
- NodeDefinition[] defs = nodeTypes[i].getChildNodeDefinitions();
- for (int j = 0; j < defs.length; j++) {
- if (defs[j].getName().equals("*")) {
- isValid = true;
- } else if (defs[j].getName().equals(child.getName())) {
- isValid = true;
- break;
- }
- }
- }
- if (!isValid) {
- child.remove();
- }
- }
- }
- }
- }
- */
-
static class NamespaceVisitorImpl extends UpdaterItemVisitor {
String namespace;
String oldURI;
@@ -910,8 +849,27 @@
oldPrefix = namespace + "_" + oldURI.substring(oldURI.lastIndexOf('/') + 1).replace('.', '_');
} catch (NamespaceException ex) {
// deliberate ignore
- }
- this.cndReader = new CompactNodeTypeDefReader(definition.cndReader, cndName);
+ }
+ if(definition.cndReader != null) {
+ this.cndReader = new HippoCompactNodeTypeDefReader(definition.cndReader, cndName, nsReg);
+ initialize();
+ } else
+ this.cndReader = null;
+ }
+
+ void initialize(Workspace workspace) throws NamespaceException, RepositoryException {
+ try {
+ String cndString = JcrCompactNodeTypeDefWriter.compactNodeTypeDef(workspace, namespace);
+ this.cndReader = new HippoCompactNodeTypeDefReader(new StringReader(cndString), cndName, workspace.getNamespaceRegistry());
+ } catch (ParseException ex) {
+ log.error("cannot autogenerate cnd", ex);
+ } catch (IOException ex) {
+ log.error("cannot autogenerate cnd", ex);
+ }
+ initialize();
+ }
+
+ void initialize() throws NamespaceException {
NamespaceMapping mapping = cndReader.getNamespaceMapping();
newURI = mapping.getURI(namespace);
newPrefix = namespace + "_" + newURI.substring(newURI.lastIndexOf('/') + 1).replace('.', '_');
Modified: hippo-ecm/branches/Branch-HREPTWO-v2_09_xx/repository/upgrade/src/main/java/org/hippoecm/repository/upgrade/Release72UpgraderPhase2.java
===================================================================
--- hippo-ecm/branches/Branch-HREPTWO-v2_09_xx/repository/upgrade/src/main/java/org/hippoecm/repository/upgrade/Release72UpgraderPhase2.java 2009-12-01 12:03:50 UTC (rev 20952)
+++ hippo-ecm/branches/Branch-HREPTWO-v2_09_xx/repository/upgrade/src/main/java/org/hippoecm/repository/upgrade/Release72UpgraderPhase2.java 2009-12-01 12:39:37 UTC (rev 20953)
@@ -744,15 +744,12 @@
for(String subtypedNamespace : subTypedNamespaces(workspace)) {
String uri = workspace.getNamespaceRegistry().getURI(subtypedNamespace);
workspace.getNamespaceRegistry().registerNamespace(subtypedNamespace, VersionNumber.versionFromURI(uri).next().versionToURI(uri));
- String cnd = JcrCompactNodeTypeDefWriter.compactNodeTypeDef(workspace, subtypedNamespace);
- context.registerVisitor(new UpdaterItemVisitor.NamespaceVisitor(context, subtypedNamespace, "-", new StringReader(cnd)));
+ context.registerVisitor(new UpdaterItemVisitor.NamespaceVisitor(context, subtypedNamespace, "-", null));
}
} catch (NamespaceException ex) {
ex.printStackTrace(System.err);
} catch (RepositoryException ex) {
ex.printStackTrace(System.err);
- } catch (IOException ex) {
- ex.printStackTrace(System.err);
}
}
From svn-logs at hippocms.org Tue Dec 1 13:48:37 2009
From: svn-logs at hippocms.org (bvanhalderen)
Date: Tue Dec 1 13:48:36 2009
Subject: [HippoRepos-dev] [20954] hippo-ecm: HREPTWO-3483: forward port of
commit 20953
Message-ID: <20091201124837.8ACF7C96E@svnnew.onehippo.org>
Revision: 20954
Author: bvanhalderen
Date: 2009-12-01 13:48:36 +0100 (Tue, 01 Dec 2009)
Log Message:
-----------
HREPTWO-3483: forward port of commit 20953
Modified Paths:
--------------
hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/updater/UpdaterEngine.java
Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/updater/UpdaterEngine.java
===================================================================
--- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/updater/UpdaterEngine.java 2009-12-01 12:39:37 UTC (rev 20953)
+++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/updater/UpdaterEngine.java 2009-12-01 12:48:36 UTC (rev 20954)
@@ -407,7 +407,7 @@
if (index != -1) {
modified = true;
iter.remove();
- modules.insertElementAt(module, index);
+ modules.insertElementAt(module, index-1);
break;
}
}
@@ -420,6 +420,34 @@
break;
}
}
+
+ // Throw away all namespace upgrades for which there is both an explicit CND-resource based upgrade as an implicit
+ Set explicitCNDUpgrades = new HashSet();
+ for(ModuleRegistration moduleRegistration : modules) {
+ for (ItemVisitor visitor : moduleRegistration.visitors) {
+ if (visitor instanceof NamespaceVisitorImpl) {
+ NamespaceVisitorImpl namespaceVisitor = (NamespaceVisitorImpl)visitor;
+ if (namespaceVisitor.cndReader != null)
+ explicitCNDUpgrades.add(namespaceVisitor.namespace);
+ }
+ }
+ }
+
+ for(ModuleRegistration moduleRegistration : modules) {
+ for (Iterator iter = moduleRegistration.visitors.iterator(); iter.hasNext();) {
+ ItemVisitor visitor = iter.next();
+ if (visitor instanceof NamespaceVisitorImpl) {
+ NamespaceVisitorImpl namespaceVisitor = (NamespaceVisitorImpl)visitor;
+ if (namespaceVisitor.cndReader == null) {
+ if (explicitCNDUpgrades.contains(namespaceVisitor.namespace)) {
+ iter.remove();
+ } else {
+ namespaceVisitor.initialize(moduleRegistration.getWorkspace());
+ }
+ }
+ }
+ }
+ }
return true;
}
@@ -768,17 +796,18 @@
Node node = nodeIter.nextNode();
String path = node.getPath();
node = updaterSession.getRootNode();
- if (!path.equals("/")) {
- try {
+ try {
+ if (!path.equals("/")) {
node = node.getNode(path.substring(1));
- visitor.visit(node);
- } catch (PathNotFoundException ex) {
- // deliberate ignore
- } catch (InvalidItemStateException ex) {
- // deliberate ignore
}
+ visitor.visit(node);
+ } catch (PathNotFoundException ex) {
+ // deliberate ignore
+ } catch (InvalidItemStateException ex) {
+ // deliberate ignore
}
}
+ }
}
} catch (UpdaterException ex) {
if (exception != null) {
@@ -818,14 +847,26 @@
} catch (NamespaceException ex) {
// deliberate ignore
}
- if(definition.cndReader == null) {
- try {
- definition.cndReader = new StringReader(JcrCompactNodeTypeDefWriter.compactNodeTypeDef(definition.context.getWorkspace(), definition.prefix));
- } catch(IOException ex) {
- log.error("cannot autogenerate cnd", ex);
- }
+ if(definition.cndReader != null) {
+ this.cndReader = new HippoCompactNodeTypeDefReader(definition.cndReader, cndName, nsReg);
+ initialize();
+ } else
+ this.cndReader = null;
+ }
+
+ void initialize(Workspace workspace) throws NamespaceException, RepositoryException {
+ try {
+ String cndString = JcrCompactNodeTypeDefWriter.compactNodeTypeDef(workspace, namespace);
+ this.cndReader = new HippoCompactNodeTypeDefReader(new StringReader(cndString), cndName, workspace.getNamespaceRegistry());
+ } catch (ParseException ex) {
+ log.error("cannot autogenerate cnd", ex);
+ } catch (IOException ex) {
+ log.error("cannot autogenerate cnd", ex);
}
- this.cndReader = new HippoCompactNodeTypeDefReader(definition.cndReader, cndName, nsReg);
+ initialize();
+ }
+
+ void initialize() throws NamespaceException {
NamespaceMapping mapping = cndReader.getNamespaceMapping();
newURI = mapping.getURI(namespace);
newPrefix = namespace + "_" + newURI.substring(newURI.lastIndexOf('/') + 1).replace('.', '_');
From helpdesk at onehippo.com Tue Dec 1 13:43:15 2009
From: helpdesk at onehippo.com (JIRA (Berry van Halderen))
Date: Tue Dec 1 13:53:48 2009
Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-3483) Allow user-defined
upgrading of template-editor based namespaces.
In-Reply-To: <11414175.218711259574555700.JavaMail.jira@jira.vm.castaserver.com>
Message-ID: <31985924.228631259671395696.JavaMail.jira@jira.vm.castaserver.com>
[ http://issues.onehippo.com/browse/HREPTWO-3483?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Berry van Halderen resolved HREPTWO-3483.
-----------------------------------------
Resolution: Fixed
> Allow user-defined upgrading of template-editor based namespaces.
> -----------------------------------------------------------------
>
> Key: HREPTWO-3483
> URL: http://issues.onehippo.com/browse/HREPTWO-3483
> Project: Hippo Repository 2
> Issue Type: Improvement
> Reporter: Berry van Halderen
> Assignee: Berry van Halderen
> Priority: Top
> Fix For: r2.09.05, r2.10.00
>
>
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
From svn-logs at hippocms.org Tue Dec 1 14:21:06 2009
From: svn-logs at hippocms.org (fvlankvelt)
Date: Tue Dec 1 14:21:05 2009
Subject: [HippoRepos-dev] [20955] hippo-ecm: HREPTWO-3484: always create
properties and child nodes
Message-ID: <20091201132106.96250C96D@svnnew.onehippo.org>
Revision: 20955
Author: fvlankvelt
Date: 2009-12-01 14:21:05 +0100 (Tue, 01 Dec 2009)
Log Message:
-----------
HREPTWO-3484: always create properties and child nodes
This is the same as the old behavior.
Modified Paths:
--------------
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/plugins/field/AbstractFieldPlugin.java
Modified: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/plugins/field/AbstractFieldPlugin.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/plugins/field/AbstractFieldPlugin.java 2009-12-01 12:48:36 UTC (rev 20954)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/plugins/field/AbstractFieldPlugin.java 2009-12-01 13:21:05 UTC (rev 20955)
@@ -106,6 +106,7 @@
helper = new FieldPluginHelper(context, config);
if (helper.getValidationModel() != null && helper.getValidationModel() instanceof IObservable) {
context.registerService(new Observer((IObservable) helper.getValidationModel()) {
+ private static final long serialVersionUID = 1L;
public void onEvent(Iterator events) {
for (ValidationFilter listener : new ArrayList(listeners.values())) {
@@ -224,8 +225,7 @@
IModel
model = getModel();
ITypeDescriptor subType = field.getTypeDescriptor();
AbstractProvider provider = newProvider(field, subType, model);
- if (ITemplateEngine.EDIT_MODE.equals(mode) && provider.size() == 0
- && field.getValidators().contains("required")) {
+ if (ITemplateEngine.EDIT_MODE.equals(mode) && provider.size() == 0) {
provider.addNew();
}
return provider;
@@ -256,10 +256,14 @@
protected boolean canRemoveItem() {
IFieldDescriptor field = helper.getField();
- if (!ITemplateEngine.EDIT_MODE.equals(mode) || (field == null)
- || (field.getValidators().contains("required") && provider.size() == 1)) {
+ if (!ITemplateEngine.EDIT_MODE.equals(mode) || (field == null))
return false;
+ if (!field.isMultiple()) {
+ return false;
}
+ if (field.getValidators().contains("required") && provider.size() == 1) {
+ return false;
+ }
return true;
}
From helpdesk at onehippo.com Tue Dec 1 14:16:15 2009
From: helpdesk at onehippo.com (JIRA (Bart van der Schans))
Date: Tue Dec 1 14:26:48 2009
Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-3489) Add empty.gif to
images library of skin
Message-ID: <26524018.228951259673375759.JavaMail.jira@jira.vm.castaserver.com>
Add empty.gif to images library of skin
---------------------------------------
Key: HREPTWO-3489
URL: http://issues.onehippo.com/browse/HREPTWO-3489
Project: Hippo Repository 2
Issue Type: Improvement
Affects Versions: r2.03.10
Reporter: Bart van der Schans
Assignee: Bart van der Schans
Fix For: r2.03.11
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
From svn-logs at hippocms.org Tue Dec 1 14:27:16 2009
From: svn-logs at hippocms.org (bvdschans)
Date: Tue Dec 1 14:27:15 2009
Subject: [HippoRepos-dev] [20956] hippo-ecm: HREPTWO-3489: Add empty.gif
Message-ID: <20091201132716.CD80CC96D@svnnew.onehippo.org>
Revision: 20956
Author: bvdschans
Date: 2009-12-01 14:27:16 +0100 (Tue, 01 Dec 2009)
Log Message:
-----------
HREPTWO-3489: Add empty.gif
Added Paths:
-----------
hippo-ecm/branches/Branch-HREPTWO-v2_03_xx/package/skin/src/main/webapp/images/empty.gif
Added: hippo-ecm/branches/Branch-HREPTWO-v2_03_xx/package/skin/src/main/webapp/images/empty.gif
===================================================================
(Binary files differ)
Property changes on: hippo-ecm/branches/Branch-HREPTWO-v2_03_xx/package/skin/src/main/webapp/images/empty.gif
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
From helpdesk at onehippo.com Tue Dec 1 14:18:15 2009
From: helpdesk at onehippo.com (JIRA (Bart van der Schans))
Date: Tue Dec 1 14:28:46 2009
Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-3489) Add empty.gif to
images library of skin
In-Reply-To: <26524018.228951259673375759.JavaMail.jira@jira.vm.castaserver.com>
Message-ID: <11404144.228971259673495771.JavaMail.jira@jira.vm.castaserver.com>
[ http://issues.onehippo.com/browse/HREPTWO-3489?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Bart van der Schans resolved HREPTWO-3489.
------------------------------------------
Resolution: Fixed
> Add empty.gif to images library of skin
> ---------------------------------------
>
> Key: HREPTWO-3489
> URL: http://issues.onehippo.com/browse/HREPTWO-3489
> Project: Hippo Repository 2
> Issue Type: Improvement
> Affects Versions: r2.03.10
> Reporter: Bart van der Schans
> Assignee: Bart van der Schans
> Fix For: r2.03.11
>
>
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
From svn-logs at hippocms.org Tue Dec 1 14:44:46 2009
From: svn-logs at hippocms.org (fvlankvelt)
Date: Tue Dec 1 14:44:46 2009
Subject: [HippoRepos-dev] [20957] hippo-ecm: HREPTWO-16: convert and correct
templates
Message-ID: <20091201134446.71064C96D@svnnew.onehippo.org>
Revision: 20957
Author: fvlankvelt
Date: 2009-12-01 14:44:45 +0100 (Tue, 01 Dec 2009)
Log Message:
-----------
HREPTWO-16: convert and correct templates
Modified Paths:
--------------
hippo-ecm/trunk/addon/editor/repository/src/main/resources/namespace-hippo.xml
hippo-ecm/trunk/addon/editor/repository/src/main/resources/namespace-hippostd.xml
hippo-ecm/trunk/addon/editor/repository/src/main/resources/namespace-hipposysedit.xml
hippo-ecm/trunk/addon/faceteddate/repository/src/main/resources/namespace-faceteddate.xml
hippo-ecm/trunk/addon/gallery/repository/src/main/resources/gallery-namespace.xml
Modified: hippo-ecm/trunk/addon/editor/repository/src/main/resources/namespace-hippo.xml
===================================================================
--- hippo-ecm/trunk/addon/editor/repository/src/main/resources/namespace-hippo.xml 2009-12-01 13:27:16 UTC (rev 20956)
+++ hippo-ecm/trunk/addon/editor/repository/src/main/resources/namespace-hippo.xml 2009-12-01 13:44:45 UTC (rev 20957)
@@ -175,13 +175,10 @@
http://www.onehippo.org/jcr/hippo/nt/2.0.1
-
+ hipposysedit:field
-
- data
- jcr:data
@@ -195,13 +192,10 @@
true
-
+ hipposysedit:field
-
- last modified
- jcr:lastModified
@@ -212,13 +206,10 @@
true
-
+ hipposysedit:field
-
- mime type
- jcr:mimeType
@@ -229,13 +220,10 @@
true
-
+ hipposysedit:field
-
- encoding
- jcr:encoding
@@ -388,16 +376,13 @@
true
-
+ hipposysedit:fieldtrue
-
- docbase
- hippo:docbase
@@ -405,13 +390,10 @@
Docbase
-
+ hipposysedit:field
-
- tree
- *
@@ -423,7 +405,7 @@
-
+ hipposysedit:field
@@ -433,9 +415,6 @@
true
-
- facets
- hippo:facets
@@ -443,7 +422,7 @@
String
-
+ hipposysedit:field
@@ -453,9 +432,6 @@
true
-
- values
- hippo:values
@@ -463,7 +439,7 @@
String
-
+ hipposysedit:field
@@ -473,9 +449,6 @@
true
-
- modes
- hippo:modes
@@ -559,16 +532,13 @@
true
-
+ hipposysedit:fieldtrue
-
- docbase
- hippo:docbase
@@ -576,13 +546,10 @@
Docbase
-
+ hipposysedit:field
-
- tree
- *
@@ -691,16 +658,13 @@
true
-
+ hipposysedit:fieldtrue
-
- queryname
- hippo:queryname
@@ -708,16 +672,13 @@
String
-
+ hipposysedit:fieldtrue
-
- docbase
- hippo:docbase
@@ -725,7 +686,7 @@
Docbase
-
+ hipposysedit:field
@@ -735,9 +696,6 @@
true
-
- facets
- hippo:facets
@@ -745,13 +703,10 @@
String
-
+ hipposysedit:field
-
- count
- hippo:count
@@ -759,13 +714,10 @@
Long
-
+ hipposysedit:field
-
- resultset
- hippo:resultset
@@ -773,16 +725,13 @@
hippo:facetresult
-
+ hipposysedit:fieldtrue
-
- subsearch
- *
@@ -840,16 +789,13 @@
true
-
+ hipposysedit:fieldtrue
-
- queryname
- hippo:queryname
@@ -857,16 +803,13 @@
String
-
+ hipposysedit:fieldtrue
-
- docbase
- hippo:docbase
@@ -874,7 +817,7 @@
Docbase
-
+ hipposysedit:field
@@ -884,9 +827,6 @@
true
-
- facets
- hippo:facets
@@ -894,16 +834,13 @@
String
-
+ hipposysedit:fieldtrue
-
- search
- hippo:search
@@ -911,13 +848,10 @@
String
-
+ hipposysedit:field
-
- count
- hippo:count
@@ -925,13 +859,10 @@
Long
-
+ hipposysedit:field
-
- resultset
- hippo:resultset
@@ -939,16 +870,13 @@
hippo:facetresult
-
+ hipposysedit:fieldtrue
-
- subsearch
- *
Modified: hippo-ecm/trunk/addon/editor/repository/src/main/resources/namespace-hippostd.xml
===================================================================
--- hippo-ecm/trunk/addon/editor/repository/src/main/resources/namespace-hippostd.xml 2009-12-01 13:27:16 UTC (rev 20956)
+++ hippo-ecm/trunk/addon/editor/repository/src/main/resources/namespace-hippostd.xml 2009-12-01 13:44:45 UTC (rev 20957)
@@ -50,13 +50,10 @@
true
-
+ hipposysedit:field
-
- Language
- hippostd:language
@@ -219,13 +216,10 @@
true
-
+ hipposysedit:field
-
- PublicationStatus
- hippostd:state
@@ -236,13 +230,10 @@
true
-
+ hipposysedit:field
-
- Editor
- hippostd:holder
@@ -420,16 +411,13 @@
hippo:derived
-
+ hipposysedit:fieldtrue
-
- PublicationStatus
- hippostd:stateSummary
@@ -491,16 +479,13 @@
true
-
+ hipposysedit:fieldtrue
-
- tags
- hippostd:tags
Modified: hippo-ecm/trunk/addon/editor/repository/src/main/resources/namespace-hipposysedit.xml
===================================================================
--- hippo-ecm/trunk/addon/editor/repository/src/main/resources/namespace-hipposysedit.xml 2009-12-01 13:27:16 UTC (rev 20956)
+++ hippo-ecm/trunk/addon/editor/repository/src/main/resources/namespace-hipposysedit.xml 2009-12-01 13:44:45 UTC (rev 20957)
@@ -65,37 +65,31 @@
hipposysedit:remodel
- http://www.onehippo.org/jcr/hipposysedit/nt/1.0
+ http://www.onehippo.org/jcr/hipposysedit/nt/1.1
-
+ hipposysedit:fieldtrue
-
- nodetype
-
- hippo:nodetype
+ hipposysedit:nodetypehippo:handle
-
+ hipposysedit:field
-
- template
-
- hippo:template
+ hipposysedit:prototypes
- hippo:handle
+ hipposysedit:prototypeset
@@ -257,7 +251,7 @@
-
+
hipposysedit:templatetype
@@ -281,15 +275,12 @@
hipposysedit:remodel
- http://www.onehippo.org/jcr/hippo/nt/2.0.1
+ http://www.onehippo.org/jcr/hipposysedit/nt/1.1
-
+ hipposysedit:field
-
- types
- *
@@ -300,8 +291,8 @@
-
-
+
+
hipposysedit:templatetype
@@ -324,18 +315,26 @@
hipposysedit:remodel
- http://www.onehippo.org/jcr/hippo/nt/2.0.1
+ http://www.onehippo.org/jcr/hipposysedit/nt/1.1true
-
+ hipposysedit:field
-
- path
+
+ hippo:name
+
+ String
+
+
+
+
+ hipposysedit:field
+ hippo:path
@@ -343,13 +342,10 @@
String
-
+ hipposysedit:field
-
- type
- hipposysedit:type
@@ -357,67 +353,91 @@
String
-
+ hipposysedit:field
-
- multiple
+
+ hipposysedit:multiple
+
+ Boolean
+
+
+
+
+ hipposysedit:field
+
- hippo:multiple
+ hipposysedit:mandatoryBoolean
-
+ hipposysedit:field
-
- mandatory
+
+ hipposysedit:ordered
+
+ Boolean
+
+
+
+
+ hipposysedit:field
+
- hippo:mandatory
+ hipposysedit:primaryBoolean
-
+ hipposysedit:field
-
- ordered
-
- hippo:ordered
+ hipposysedit:autocreatedBoolean
-
+ hipposysedit:field
-
- primary
-
- hippo:primary
+ hipposysedit:protectedBoolean
+
+
+ hipposysedit:field
+
+
+ hipposysedit:validators
+
+
+ String
+
+
+ true
+
+
-
-
+
+
hipposysedit:templatetype
@@ -440,21 +460,18 @@
hipposysedit:remodel
- http://www.onehippo.org/jcr/hippo/nt/2.0.1
+ http://www.onehippo.org/jcr/hipposysedit/nt/1.1hippo:document
-
+ hipposysedit:fieldfalse
-
- type
- hipposysedit:type
@@ -462,61 +479,88 @@
String
-
+ hipposysedit:field
-
- isnode
+
+ true
- hippo:node
+ hipposysedit:supertype
+ String
+
+
+
+
+ hipposysedit:field
+
+
+ hipposysedit:node
+
+ Boolean
-
+ hipposysedit:field
-
- true
+
+ hipposysedit:mixin
-
- supertypes
+
+ Boolean
+
+
+
+ hipposysedit:field
+
- hippo:supertype
+ hipposysedit:cascadevalidation
- String
+ Boolean
-
+ hipposysedit:fieldtrue
-
- field
+
+ true
+
+ hipposysedit:field
+
+
+ hipposysedit:field
+
+
+
+
+ hipposysedit:field
+ true
- hippo:field
+ *
- hippo:field
+ hipposysedit:field
-
+
@@ -540,7 +584,7 @@
hipposysedit:remodel
- http://www.onehippo.org/jcr/hippo/nt/2.0.1
+ http://www.onehippo.org/jcr/hipposysedit/nt/1.1true
@@ -548,19 +592,19 @@
true
-
+ hipposysedit:field
-
- namespace
- hipposysedit:uriString
+
+ true
+
Modified: hippo-ecm/trunk/addon/faceteddate/repository/src/main/resources/namespace-faceteddate.xml
===================================================================
--- hippo-ecm/trunk/addon/faceteddate/repository/src/main/resources/namespace-faceteddate.xml 2009-12-01 13:27:16 UTC (rev 20956)
+++ hippo-ecm/trunk/addon/faceteddate/repository/src/main/resources/namespace-faceteddate.xml 2009-12-01 13:44:45 UTC (rev 20957)
@@ -309,16 +309,13 @@
hippostd:datefieldshippo:derived
-
+ hipposysedit:fieldtrue
-
- date
- hippostd:date
Modified: hippo-ecm/trunk/addon/gallery/repository/src/main/resources/gallery-namespace.xml
===================================================================
--- hippo-ecm/trunk/addon/gallery/repository/src/main/resources/gallery-namespace.xml 2009-12-01 13:27:16 UTC (rev 20956)
+++ hippo-ecm/trunk/addon/gallery/repository/src/main/resources/gallery-namespace.xml 2009-12-01 13:44:45 UTC (rev 20957)
@@ -77,16 +77,13 @@
hippo:document
-
+ hipposysedit:fieldtrue
-
- 2fff010a-6cd1-49f0-86ca-970fda17d16c
- hippogallery:thumbnail
@@ -100,13 +97,10 @@
true
-
+ hipposysedit:field
-
- 827b5f3a-2fa2-4690-82de-5f78605c3429
- hippogallery:picture
@@ -137,7 +131,7 @@
edit
-
+ frontend:plugin
@@ -151,7 +145,7 @@
${wicket.id}
-
+ frontend:plugin
@@ -162,7 +156,7 @@
${engine}
- 2fff010a-6cd1-49f0-86ca-970fda17d16c
+ thumbnail${mode}
@@ -177,7 +171,7 @@
${wicket.model}
-
+ frontend:plugin
@@ -188,7 +182,7 @@
${engine}
- 827b5f3a-2fa2-4690-82de-5f78605c3429
+ picture${mode}
@@ -308,16 +302,13 @@
hippo:document
-
+ hipposysedit:fieldtrue
-
- d94cbec0-431c-45c0-b241-38582ce25ae5
- hippogallery:asset
@@ -354,7 +345,7 @@
edit
-
+ frontend:plugin
@@ -368,7 +359,7 @@
${wicket.id}
-
+ frontend:plugin
@@ -379,7 +370,7 @@
${engine}
- d94cbec0-431c-45c0-b241-38582ce25ae5
+ asset${mode}
From svn-logs at hippocms.org Tue Dec 1 14:55:17 2009
From: svn-logs at hippocms.org (fvlankvelt)
Date: Tue Dec 1 14:55:23 2009
Subject: [HippoRepos-dev] [20958] hippo-ecm/trunk: HREPTWO-3485,
HREPTWO-2995: refactor editor
Message-ID: <20091201135520.2DFBBC19E@svnnew.onehippo.org>
Revision: 20958
Author: fvlankvelt
Date: 2009-12-01 14:55:13 +0100 (Tue, 01 Dec 2009)
Log Message:
-----------
HREPTWO-3485, HREPTWO-2995: refactor editor
Separate interfaces for template and prototype stores. A draft jcr store will retrieve draft types from a namespace, to create a view on the types with one namespace in a transitional state. The field names for builtin types are now also in line with the ones generated when editing types. The template engine only uses locators for types and templates, and an interface for prototypes. A separate template engine factory is created when editing types, using the draft jcr store.
Modified Paths:
--------------
hippo-ecm/trunk/addon/cms/browse/src/main/java/org/hippoecm/frontend/plugins/cms/browse/list/TypesListingPlugin.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrFieldDescriptor.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrNamespace.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrTypeDescriptor.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrTypeLocator.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrTypeStore.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/PseudoTypeDescriptor.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/builder/TemplateBuilder.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/builder/TemplateTypeEditorPlugin.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/editor/EditorForm.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/impl/TemplateEngine.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/impl/TemplateEngineFactory.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/validator/JcrValidationService.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/viewer/ViewerPlugin.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/workflow/RemodelWorkflowPlugin.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/workflow/action/NewCompoundTypeAction.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/workflow/action/NewDocumentTypeAction.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/workflow/dialog/CreateDocumentTypeDialog.java
hippo-ecm/trunk/addon/editor/test/src/test/java/org/hippoecm/frontend/editor/builder/TemplateBuilderTest.java
hippo-ecm/trunk/addon/editor/test/src/test/java/org/hippoecm/frontend/editor/impl/JcrTemplateStoreTest.java
hippo-ecm/trunk/addon/editor/test/src/test/java/org/hippoecm/frontend/editor/tools/JcrTypeDescriptorTest.java
hippo-ecm/trunk/addon/editor/test/src/test/java/org/hippoecm/frontend/editor/validator/ValidationPluginTest.java
hippo-ecm/trunk/addon/editor/test/src/test/java/org/hippoecm/frontend/editor/workflow/RemodelWorkflowPluginTest.java
hippo-ecm/trunk/addon/editor/test/src/test/java/org/hippoecm/frontend/types/CndSerializationTest.java
hippo-ecm/trunk/addon/editor/test/src/test/java/org/hippoecm/frontend/types/TypeStoreTest.java
hippo-ecm/trunk/addon/editor/test/src/test/resources/org/hippoecm/repository/test-namespace.xml
hippo-ecm/trunk/addon/editor/test/src/test/resources/org/hippoecm/repository/test.cnd
hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/types/BuiltinTypeDescriptor.java
Added Paths:
-----------
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/cnd/
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/cnd/CndSerializer.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/cnd/FieldIdentifier.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/cnd/TypeUpdate.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/prototype/
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/prototype/IPrototypeStore.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/prototype/JcrPrototypeStore.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/template/
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/template/BuiltinTemplateConfig.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/template/BuiltinTemplateStore.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/template/ITemplateLocator.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/template/ITemplateStore.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/template/JcrTemplateStore.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/template/TemplateLocator.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrDraftLocator.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrDraftStore.java
Removed Paths:
-------------
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/tools/
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/CndSerializer.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/FieldIdentifier.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrPrototypeStore.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/TypeUpdate.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/impl/BuiltinTemplateConfig.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/impl/BuiltinTemplateStore.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/impl/JcrTemplateStore.java
Modified: hippo-ecm/trunk/addon/cms/browse/src/main/java/org/hippoecm/frontend/plugins/cms/browse/list/TypesListingPlugin.java
===================================================================
--- hippo-ecm/trunk/addon/cms/browse/src/main/java/org/hippoecm/frontend/plugins/cms/browse/list/TypesListingPlugin.java 2009-12-01 13:44:45 UTC (rev 20957)
+++ hippo-ecm/trunk/addon/cms/browse/src/main/java/org/hippoecm/frontend/plugins/cms/browse/list/TypesListingPlugin.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -28,7 +28,7 @@
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.StringResourceModel;
-import org.hippoecm.editor.tools.JcrTypeStore;
+import org.hippoecm.editor.type.JcrTypeStore;
import org.hippoecm.frontend.model.JcrNodeModel;
import org.hippoecm.frontend.model.event.IEvent;
import org.hippoecm.frontend.model.event.IObserver;
Copied: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/cnd/CndSerializer.java (from rev 20946, hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/tools/CndSerializer.java)
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/cnd/CndSerializer.java (rev 0)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/cnd/CndSerializer.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -0,0 +1,473 @@
+/*
+ * Copyright 2008 Hippo.
+ *
+ * Licensed 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.
+ */
+package org.hippoecm.editor.cnd;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.jcr.NamespaceRegistry;
+import javax.jcr.Node;
+import javax.jcr.NodeIterator;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+
+import org.apache.wicket.IClusterable;
+import org.hippoecm.editor.type.JcrNamespace;
+import org.hippoecm.editor.type.JcrTypeDescriptor;
+import org.hippoecm.editor.type.JcrTypeStore;
+import org.hippoecm.frontend.model.JcrNodeModel;
+import org.hippoecm.frontend.model.JcrSessionModel;
+import org.hippoecm.frontend.model.ocm.IStore;
+import org.hippoecm.frontend.model.ocm.StoreException;
+import org.hippoecm.frontend.types.BuiltinTypeStore;
+import org.hippoecm.frontend.types.IFieldDescriptor;
+import org.hippoecm.frontend.types.ITypeDescriptor;
+import org.hippoecm.frontend.types.ITypeLocator;
+import org.hippoecm.frontend.types.TypeLocator;
+import org.hippoecm.repository.api.HippoNodeType;
+import org.hippoecm.repository.api.ISO9075Helper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class CndSerializer implements IClusterable {
+ @SuppressWarnings("unused")
+ private final static String SVN_ID = "$Id: CndSerializer.java 18973 2009-07-23 10:01:26Z fvlankvelt $";
+
+ private static final long serialVersionUID = 1L;
+
+ private static Logger log = LoggerFactory.getLogger(CndSerializer.class);
+
+ class TypeEntry {
+ Node oldType;
+ Node newType;
+
+ TypeEntry(Node oldType, Node newType) {
+ this.oldType = oldType;
+ this.newType = newType;
+ }
+
+ ITypeDescriptor getOldType() throws StoreException {
+ try {
+ return new JcrTypeDescriptor(new JcrNodeModel(oldType), oldTypeLocator);
+ } catch (RepositoryException e) {
+ throw new StoreException(e);
+ }
+ }
+
+ ITypeDescriptor getNewType() throws StoreException {
+ try {
+ // FIXME: it should be possible to delete types.
+ if (newType == null) {
+ return new JcrTypeDescriptor(new JcrNodeModel(oldType), newTypeLocator);
+ }
+ return new JcrTypeDescriptor(new JcrNodeModel(newType), newTypeLocator);
+ } catch (RepositoryException e) {
+ throw new StoreException(e);
+ }
+ }
+
+ TypeUpdate getUpdate() throws StoreException {
+ if (oldType == null) {
+ return null;
+ }
+
+ TypeUpdate update = new TypeUpdate();
+
+ ITypeDescriptor oldTypeDescriptor = getOldType();
+ ITypeDescriptor newTypeDescriptor = getNewType();
+
+ if (newType != null) {
+ update.newName = newTypeDescriptor.getName();
+ } else {
+ update.newName = oldTypeDescriptor.getName();
+ }
+
+ update.renames = new HashMap();
+ for (Map.Entry entry : oldTypeDescriptor.getFields().entrySet()) {
+ IFieldDescriptor origField = entry.getValue();
+ FieldIdentifier oldId = new FieldIdentifier();
+ oldId.path = origField.getPath();
+ oldId.type = origField.getTypeDescriptor().getType();
+
+ if (newType != null) {
+ IFieldDescriptor newField = newTypeDescriptor.getField(entry.getKey());
+ if (newField != null) {
+ FieldIdentifier newId = new FieldIdentifier();
+ newId.path = newField.getPath();
+ newId.type = newField.getTypeDescriptor().getType();
+
+ update.renames.put(oldId, newId);
+ }
+ } else {
+ update.renames.put(oldId, oldId);
+ }
+ }
+ return update;
+ }
+ }
+
+ class SortContext {
+ HashSet visited;
+ LinkedHashSet result;
+
+ SortContext() {
+ visited = new HashSet();
+ }
+
+ void visit(String typeName) throws StoreException {
+ if (visited.contains(typeName) || !types.containsKey(typeName)) {
+ return;
+ }
+
+ ITypeDescriptor descriptor = types.get(typeName).getNewType();
+
+ visited.add(typeName);
+ for (String superType : descriptor.getSuperTypes()) {
+ visit(superType);
+ }
+ for (IFieldDescriptor field : descriptor.getFields().values()) {
+ visit(field.getTypeDescriptor().getName());
+ }
+ result.add(types.get(typeName).getNewType());
+ }
+
+ LinkedHashSet sort() throws StoreException {
+ result = new LinkedHashSet();
+ for (String type : types.keySet()) {
+ visit(type);
+ }
+ return result;
+ }
+ }
+
+ private JcrSessionModel jcrSession;
+ private Map namespaces;
+ private LinkedHashMap types;
+ private HashMap pseudoTypes;
+ private ITypeLocator oldTypeLocator;
+ private ITypeLocator newTypeLocator;
+
+ public CndSerializer(JcrSessionModel sessionModel, final String namespace) throws StoreException {
+ this.jcrSession = sessionModel;
+
+ final JcrTypeStore jcrTypeStore = new JcrTypeStore();
+ IStore oldBuiltinTypeStore = new BuiltinTypeStore();
+ oldTypeLocator = new TypeLocator(new IStore[] { jcrTypeStore, oldBuiltinTypeStore });
+ jcrTypeStore.setTypeLocator(oldTypeLocator);
+
+ JcrTypeStore newJcrTypeStore = new JcrTypeStore();
+ final BuiltinTypeStore newBuiltinTypeStore = new BuiltinTypeStore();
+ final ITypeLocator newLocator = new TypeLocator(new IStore[] { newJcrTypeStore, newBuiltinTypeStore });
+ newTypeLocator = new ITypeLocator() {
+
+ public ITypeDescriptor locate(String type) throws StoreException {
+ if (type.indexOf(':') > 0 && namespace.equals(type.substring(0, type.indexOf(':')))) {
+ if (types.containsKey(type)) {
+ return types.get(type).getNewType();
+ } else if (pseudoTypes.containsKey(type)) {
+ return locate(pseudoTypes.get(type));
+ } else {
+ return newBuiltinTypeStore.load(type);
+ }
+ }
+ return newLocator.locate(type);
+ }
+
+ public List getSubTypes(String type) throws StoreException {
+ throw new StoreException("sub-types are not supported in cnd serializer");
+ }
+
+ };
+ newBuiltinTypeStore.setTypeLocator(newTypeLocator);
+ newJcrTypeStore.setTypeLocator(newTypeLocator);
+
+ this.namespaces = new HashMap();
+ addNamespace(namespace);
+
+ initTypes(namespace);
+ resolveNamespaces();
+
+ versionNamespace(namespace);
+ }
+
+ public String getOutput() {
+ StringBuffer output = new StringBuffer();
+ for (Map.Entry entry : namespaces.entrySet()) {
+ output.append("<" + entry.getKey() + "='" + entry.getValue() + "'>\n");
+ }
+ output.append("\n");
+
+ try {
+ Set sorted = sortTypes();
+ for (ITypeDescriptor type : sorted) {
+ renderType(output, type);
+ }
+ } catch (StoreException ex) {
+ throw new RuntimeException("Type has disappeared!", ex);
+ }
+ return output.toString();
+ }
+
+ public Map getUpdate() throws StoreException {
+ Map result = new HashMap();
+ for (Map.Entry entry : types.entrySet()) {
+ TypeUpdate update = entry.getValue().getUpdate();
+ if (update != null) {
+ result.put(entry.getKey(), entry.getValue().getUpdate());
+ }
+ }
+ return result;
+ }
+
+ private void initTypes(String namespace) throws StoreException {
+ types = new LinkedHashMap();
+ pseudoTypes = new HashMap();
+
+ try {
+ Session session = jcrSession.getSession();
+ JcrNamespace jcrNamespace = new JcrNamespace(session, namespace);
+ String uri = jcrNamespace.getCurrentUri();
+ Node nsNode = session.getRootNode().getNode(jcrNamespace.getPath().substring(1));
+
+ NodeIterator typeIter = nsNode.getNodes();
+ while (typeIter.hasNext()) {
+ Node templateTypeNode = typeIter.nextNode();
+ String pseudoName = namespace + ":" + templateTypeNode.getName();
+
+ Node oldType = null, newType = null;
+
+ boolean isPseudoType = false;
+ Node ntNode = templateTypeNode.getNode(HippoNodeType.HIPPOSYSEDIT_NODETYPE);
+ NodeIterator versions = ntNode.getNodes(HippoNodeType.HIPPOSYSEDIT_NODETYPE);
+ while (versions.hasNext()) {
+ Node version = versions.nextNode();
+ if (version.hasProperty(HippoNodeType.HIPPOSYSEDIT_TYPE)) {
+ if (!pseudoName.equals(version.getProperty(HippoNodeType.HIPPOSYSEDIT_TYPE).getString())) {
+ isPseudoType = true;
+ oldType = version;
+ break;
+ }
+ }
+ if (version.isNodeType(HippoNodeType.NT_REMODEL)) {
+ if (version.getProperty(HippoNodeType.HIPPO_URI).getString().equals(uri)) {
+ oldType = version;
+ }
+ } else {
+ newType = version;
+ }
+ }
+ if (oldType == null && newType == null) {
+ throw new StoreException("No description found for either old or new version of type " + pseudoName);
+ }
+ if (!isPseudoType) {
+ types.put(pseudoName, new TypeEntry(oldType, newType));
+ } else {
+ pseudoTypes.put(pseudoName, oldType.getProperty(HippoNodeType.HIPPOSYSEDIT_TYPE).getString());
+ }
+ }
+ } catch (RepositoryException ex) {
+ throw new StoreException("Error retrieving namespace description from repository");
+ }
+ }
+
+ private void resolveNamespaces() throws StoreException {
+ for (TypeEntry entry : types.values()) {
+ ITypeDescriptor descriptor = entry.getNewType();
+ if (descriptor.isNode()) {
+ String type = descriptor.getType();
+ addNamespace(type.substring(0, type.indexOf(':')));
+ for (String superType : descriptor.getSuperTypes()) {
+ addNamespace(superType.substring(0, superType.indexOf(':')));
+ }
+
+ for (IFieldDescriptor field : descriptor.getFields().values()) {
+ ITypeDescriptor sub = field.getTypeDescriptor();
+ if (sub.isNode()) {
+ String subType = sub.getType();
+ addNamespace(subType.substring(0, subType.indexOf(':')));
+
+ List superTypes = sub.getSuperTypes();
+ for (String superType : superTypes) {
+ addNamespace(superType.substring(0, superType.indexOf(':')));
+ }
+ } else if (field.getPath().indexOf(':') > 0) {
+ addNamespace(field.getPath().substring(0, field.getPath().indexOf(':')));
+ }
+ }
+ }
+ }
+ }
+
+ private void addNamespace(String prefix) {
+ if (!namespaces.containsKey(prefix)) {
+ try {
+ namespaces.put(prefix, jcrSession.getSession().getNamespaceURI(prefix));
+ } catch (RepositoryException ex) {
+ log.error(ex.getMessage());
+ }
+ }
+ }
+
+ private void versionNamespace(String prefix) {
+ if (namespaces.containsKey(prefix)) {
+ String namespace = namespaces.get(prefix);
+ String last = namespace;
+ int pos = namespace.lastIndexOf('/');
+ try {
+ for (String registered : jcrSession.getSession().getNamespacePrefixes()) {
+ String uri = jcrSession.getSession().getNamespaceURI(registered);
+ if (uri.startsWith(namespace.substring(0, pos + 1))) {
+ if (isLater(uri, last)) {
+ last = uri;
+ }
+ }
+ }
+ } catch (RepositoryException ex) {
+ log.error(ex.getMessage());
+ return;
+ }
+
+ int minorPos = last.lastIndexOf('.');
+ if (minorPos > pos) {
+ int minor = Integer.parseInt(last.substring(minorPos + 1));
+ namespace = last.substring(0, minorPos + 1) + new Integer(minor + 1).toString();
+ namespaces.put(prefix, namespace);
+ } else {
+ log.warn("namespace for " + prefix + " does not conform to versionable format");
+ }
+ } else {
+ log.warn("namespace for " + prefix + " was not found");
+ }
+ }
+
+ private static boolean isLater(String one, String two) {
+ int pos = one.lastIndexOf('/');
+ String[] oneVersions = one.substring(pos + 1).split("\\.");
+ String[] twoVersions = two.substring(pos + 1).split("\\.");
+ for (int i = 0; i < oneVersions.length; i++) {
+ if (i < twoVersions.length) {
+ int oneVersion = Integer.parseInt(oneVersions[i]);
+ int twoVersion = Integer.parseInt(twoVersions[i]);
+ if (oneVersion > twoVersion) {
+ return true;
+ } else if (oneVersion < twoVersion) {
+ return false;
+ }
+ } else {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private String getCurrentUri(String prefix) {
+ if ("system".equals(prefix)) {
+ return "internal";
+ }
+ try {
+ NamespaceRegistry nsReg = jcrSession.getSession().getWorkspace().getNamespaceRegistry();
+ return nsReg.getURI(prefix);
+ } catch (RepositoryException ex) {
+ log.error(ex.getMessage());
+ }
+ return null;
+ }
+
+ private void renderField(StringBuffer output, IFieldDescriptor field) throws StoreException {
+ ITypeDescriptor sub = field.getTypeDescriptor();
+ if (sub.isNode()) {
+ output.append("+");
+ } else {
+ output.append("-");
+ }
+
+ if (field.getPath() != null) {
+ output.append(" " + encode(field.getPath()));
+ } else {
+ output.append(" *");
+ }
+
+ String type = sub.getType();
+ if (type.indexOf(':') == -1) {
+ type = type.toLowerCase();
+ }
+ output.append(" (" + type + ")");
+ if (field.isMultiple()) {
+ output.append(" multiple");
+ }
+ if (field.isMandatory()) {
+ output.append(" mandatory");
+ }
+ if (field.isPrimary()) {
+ output.append(" primary");
+ }
+ output.append("\n");
+ }
+
+ private void renderType(StringBuffer output, ITypeDescriptor typeDescriptor) throws StoreException {
+ String type = typeDescriptor.getType();
+ output.append("[" + encode(type) + "]");
+
+ Iterator superTypes = typeDescriptor.getSuperTypes().iterator();
+ boolean first = true;
+ while (superTypes.hasNext()) {
+ String superType = superTypes.next();
+ if (first) {
+ first = false;
+ output.append(" > " + superType);
+ } else {
+ output.append(", " + superType);
+ }
+ }
+
+ if (typeDescriptor.isMixin()) {
+ output.append(" mixin");
+ }
+
+ // type should be orderable if any of the fields is
+ for (IFieldDescriptor field : typeDescriptor.getFields().values()) {
+ if (field.isOrdered()) {
+ output.append(" orderable");
+ break;
+ }
+ }
+
+ output.append("\n");
+ for (IFieldDescriptor field : typeDescriptor.getDeclaredFields().values()) {
+ renderField(output, field);
+ }
+ output.append("\n");
+ }
+
+ private Set sortTypes() throws StoreException {
+ return new SortContext().sort();
+ }
+
+ private static String encode(String name) {
+ int colon = name.indexOf(':');
+ if (colon > 0) {
+ return name.substring(0, colon + 1) + ISO9075Helper.encodeLocalName(name.substring(colon + 1));
+ }
+ return name;
+ }
+
+}
Copied: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/cnd/FieldIdentifier.java (from rev 20946, hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/tools/FieldIdentifier.java)
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/cnd/FieldIdentifier.java (rev 0)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/cnd/FieldIdentifier.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2009 Hippo.
+ *
+ * Licensed 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.
+ */
+package org.hippoecm.editor.cnd;
+
+import java.io.ObjectStreamException;
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Map;
+
+public class FieldIdentifier implements Serializable {
+ @SuppressWarnings("unused")
+ private final static String SVN_ID = "$Id: $";
+
+ private static final long serialVersionUID = 1L;
+
+ public String path;
+
+ public String type;
+
+ private Object writeReplace() throws ObjectStreamException {
+ Map obj = new HashMap();
+ obj.put("path", path);
+ obj.put("type", type);
+ return obj;
+ }
+
+ @Override
+ public boolean equals(Object object) {
+ if (object != null) {
+ if (object instanceof FieldIdentifier) {
+ FieldIdentifier id = (FieldIdentifier) object;
+ return id.path.equals(path) && id.type.equals(type);
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public int hashCode() {
+ return (path.hashCode() * (type != null ? type.hashCode() : 0)) % 1001;
+ }
+}
Copied: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/cnd/TypeUpdate.java (from rev 20946, hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/tools/TypeUpdate.java)
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/cnd/TypeUpdate.java (rev 0)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/cnd/TypeUpdate.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2009 Hippo.
+ *
+ * Licensed 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.
+ */
+package org.hippoecm.editor.cnd;
+
+import java.io.ObjectStreamException;
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Map;
+
+
+public class TypeUpdate implements Serializable {
+ @SuppressWarnings("unused")
+ private final static String SVN_ID = "$Id: TypeUpdate.java 17361 2009-04-21 10:07:17Z bvanhalderen $";
+
+ private static final long serialVersionUID = 1L;
+
+ public String newName;
+
+ public String prototype;
+
+ public Map renames;
+
+ private Object writeReplace() throws ObjectStreamException {
+ Map obj = new HashMap();
+ obj.put("newName", newName);
+ obj.put("prototype", prototype);
+ obj.put("renames", renames);
+ return obj;
+ }
+
+}
Added: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/prototype/IPrototypeStore.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/prototype/IPrototypeStore.java (rev 0)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/prototype/IPrototypeStore.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2009 Hippo.
+ *
+ * Licensed 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.
+ */
+package org.hippoecm.editor.prototype;
+
+import org.apache.wicket.IClusterable;
+import org.apache.wicket.model.IModel;
+
+public interface IPrototypeStore extends IClusterable {
+
+ IModel getPrototype(String name, boolean draft);
+
+}
Property changes on: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/prototype/IPrototypeStore.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Copied: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/prototype/JcrPrototypeStore.java (from rev 20946, hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/tools/JcrPrototypeStore.java)
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/prototype/JcrPrototypeStore.java (rev 0)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/prototype/JcrPrototypeStore.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -0,0 +1,165 @@
+/*
+ * Copyright 2008 Hippo.
+ *
+ * Licensed 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.
+ */
+package org.hippoecm.editor.prototype;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.jcr.NamespaceRegistry;
+import javax.jcr.Node;
+import javax.jcr.NodeIterator;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+
+import org.apache.wicket.model.IDetachable;
+import org.hippoecm.frontend.model.JcrNodeModel;
+import org.hippoecm.frontend.session.UserSession;
+import org.hippoecm.repository.api.HippoNodeType;
+import org.hippoecm.repository.api.HippoSession;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class JcrPrototypeStore implements IPrototypeStore, IDetachable {
+ @SuppressWarnings("unused")
+ private final static String SVN_ID = "$Id: JcrPrototypeStore.java 18825 2009-07-10 15:26:30Z abogaart $";
+
+ private static final long serialVersionUID = 1L;
+
+ private static final Logger log = LoggerFactory.getLogger(JcrPrototypeStore.class);
+
+ private Map prototypes;
+
+ public JcrNodeModel getPrototype(String name, boolean draft) {
+ if ("rep:root".equals(name)) {
+ // ignore the root node
+ return null;
+ }
+ if (prototypes == null) {
+ prototypes = new HashMap();
+ }
+ JcrNodeModel result = prototypes.get(name);
+ if (result == null) {
+ try {
+ Node node = lookupConfigNode(name, draft);
+ if (node != null) {
+ result = new JcrNodeModel(node);
+ prototypes.put(name, result);
+ }
+ } catch (RepositoryException e) {
+ log.error(e.getMessage());
+ }
+ }
+ return result;
+ }
+
+ public JcrNodeModel createPrototype(String name, boolean draft) {
+ JcrNodeModel prototype = getPrototype(name, draft);
+ if (prototype != null) {
+ throw new IllegalArgumentException("prototype " + name + " exists");
+ }
+
+ try {
+ String path = getLocation(name);
+ Session session = getJcrSession();
+ Node handle;
+ String parentPath = path.substring(0, path.lastIndexOf('/'));
+ Node parent = session.getRootNode().getNode(parentPath.substring(1));
+ if (!session.itemExists(path)) {
+ handle = parent.addNode(HippoNodeType.HIPPO_PROTOTYPES, HippoNodeType.NT_PROTOTYPESET);
+ } else {
+ handle = parent.getNode(HippoNodeType.HIPPO_PROTOTYPES);
+ }
+
+ Node node;
+ if (draft) {
+ node = handle.addNode(HippoNodeType.HIPPO_PROTOTYPE, "nt:unstructured");
+ } else {
+ node = handle.addNode(HippoNodeType.HIPPO_PROTOTYPE, name);
+ }
+ parent.save();
+
+ prototype = new JcrNodeModel(node);
+ } catch (RepositoryException ex) {
+ log.error("Failed to create prototype node", ex);
+ }
+ return prototype;
+ }
+
+ public void detach() {
+ prototypes = null;
+ }
+
+ // Privates
+
+ private String getUri(String prefix) {
+ if ("system".equals(prefix)) {
+ return "internal";
+ }
+ try {
+ NamespaceRegistry nsReg = getJcrSession().getWorkspace().getNamespaceRegistry();
+ return nsReg.getURI(prefix);
+ } catch (RepositoryException ex) {
+ log.error(ex.getMessage());
+ }
+ return null;
+ }
+
+ private Session getJcrSession() {
+ return ((UserSession) org.apache.wicket.Session.get()).getJcrSession();
+ }
+
+ private String getLocation(String type) {
+ String prefix = "system";
+ String subType = type;
+ if (type.indexOf(':') > 0) {
+ prefix = type.substring(0, type.indexOf(':'));
+ subType = type.substring(type.indexOf(':') + 1);
+ }
+
+ String uri = getUri(prefix);
+ String nsVersion = "_" + uri.substring(uri.lastIndexOf("/") + 1);
+ if (prefix.length() > nsVersion.length()
+ && nsVersion.equals(prefix.substring(prefix.length() - nsVersion.length()))) {
+ prefix = prefix.substring(0, prefix.length() - nsVersion.length());
+ }
+
+ return "/" + HippoNodeType.NAMESPACES_PATH + "/" + prefix + "/" + subType + "/"
+ + HippoNodeType.HIPPO_PROTOTYPES;
+ }
+
+ private Node lookupConfigNode(String type, boolean draft) throws RepositoryException {
+ HippoSession session = (HippoSession) getJcrSession();
+ String path = getLocation(type);
+ if (!session.itemExists(path) || !session.getItem(path).isNode()) {
+ return null;
+ }
+ NodeIterator iter = ((Node) session.getItem(path)).getNodes(HippoNodeType.HIPPO_PROTOTYPE);
+
+ while (iter.hasNext()) {
+ Node node = iter.nextNode();
+ if (draft) {
+ if (node.isNodeType("nt:unstructured")) {
+ return node;
+ }
+ } else {
+ if (!node.isNodeType("nt:unstructured")) {
+ return node;
+ }
+ }
+ }
+ return null;
+ }
+}
Copied: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/template/BuiltinTemplateConfig.java (from rev 20946, hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/impl/BuiltinTemplateConfig.java)
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/template/BuiltinTemplateConfig.java (rev 0)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/template/BuiltinTemplateConfig.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -0,0 +1,108 @@
+/*
+ * Copyright 2008 Hippo.
+ *
+ * Licensed 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.
+ */
+package org.hippoecm.editor.template;
+
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+import org.hippoecm.frontend.editor.plugins.field.NodeFieldPlugin;
+import org.hippoecm.frontend.editor.plugins.field.PropertyFieldPlugin;
+import org.hippoecm.frontend.plugin.config.IPluginConfig;
+import org.hippoecm.frontend.plugin.config.impl.JavaClusterConfig;
+import org.hippoecm.frontend.plugin.config.impl.JavaPluginConfig;
+import org.hippoecm.frontend.service.render.ListViewPlugin;
+import org.hippoecm.frontend.types.IFieldDescriptor;
+import org.hippoecm.frontend.types.ITypeDescriptor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class BuiltinTemplateConfig extends JavaClusterConfig {
+ @SuppressWarnings("unused")
+ private final static String SVN_ID = "$Id: $";
+
+ private static final long serialVersionUID = 1L;
+
+ static final Logger log = LoggerFactory.getLogger(BuiltinTemplateConfig.class);
+
+ private ITypeDescriptor type;
+ private String name;
+
+ public BuiltinTemplateConfig(ITypeDescriptor type) {
+ this.type = type;
+ super.put("type", type.getName());
+ this.name = type.getName().replace(':', '_');
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public List getServices() {
+ List result = new LinkedList();
+ result.add("wicket.id");
+ return result;
+ }
+
+ @Override
+ public List getReferences() {
+ List result = new LinkedList();
+ result.add("wicket.model");
+ result.add("engine");
+ return result;
+ }
+
+ @Override
+ public List getProperties() {
+ List result = new LinkedList();
+ result.add("mode");
+ return result;
+ }
+
+ @Override
+ public List getPlugins() {
+ List list = new LinkedList();
+ IPluginConfig config = new JavaPluginConfig("root");
+ config.put("plugin.class", ListViewPlugin.class.getName());
+ config.put("wicket.id", "${wicket.id}");
+ config.put("item", "${cluster.id}.field");
+ list.add(config);
+
+ Map fields = type.getFields();
+ for (Map.Entry entry : fields.entrySet()) {
+ IFieldDescriptor field = entry.getValue();
+ ITypeDescriptor type = field.getTypeDescriptor();
+
+ config = new JavaPluginConfig(entry.getKey());
+ if (type.isNode()) {
+ config.put("plugin.class", NodeFieldPlugin.class.getName());
+ } else {
+ config.put("plugin.class", PropertyFieldPlugin.class.getName());
+ }
+ config.put("wicket.id", "${cluster.id}.field");
+ config.put("wicket.model", "${wicket.model}");
+ config.put("engine", "${engine}");
+ config.put("mode", "${mode}");
+ config.put("caption", entry.getKey());
+ config.put("field", entry.getKey());
+ list.add(config);
+ }
+ return list;
+ }
+
+}
Copied: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/template/BuiltinTemplateStore.java (from rev 20946, hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/impl/BuiltinTemplateStore.java)
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/template/BuiltinTemplateStore.java (rev 0)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/template/BuiltinTemplateStore.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -0,0 +1,74 @@
+/*
+ * Copyright 2008 Hippo.
+ *
+ * Licensed 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.
+ */
+package org.hippoecm.editor.template;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.hippoecm.frontend.model.ocm.StoreException;
+import org.hippoecm.frontend.plugin.config.IClusterConfig;
+import org.hippoecm.frontend.types.ITypeDescriptor;
+import org.hippoecm.frontend.types.ITypeLocator;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class BuiltinTemplateStore implements ITemplateStore {
+ @SuppressWarnings("unused")
+ private final static String SVN_ID = "$Id$";
+
+ private static final long serialVersionUID = 1L;
+
+ static final Logger log = LoggerFactory.getLogger(BuiltinTemplateStore.class);
+
+ private ITypeLocator typeLocator;
+
+ public BuiltinTemplateStore(ITypeLocator typeStore) {
+ this.typeLocator = typeStore;
+ }
+
+ public Iterator find(Map criteria) {
+ if (criteria.containsKey("type")) {
+ List list = new ArrayList(1);
+ list.add(new BuiltinTemplateConfig((ITypeDescriptor) criteria.get("type")));
+ return list.iterator();
+ }
+ return new ArrayList(0).iterator();
+ }
+
+ public IClusterConfig load(String id) throws StoreException {
+ try {
+ return new BuiltinTemplateConfig(typeLocator.locate(id));
+ } catch (StoreException ex) {
+ throw new StoreException("No type found for " + id, ex);
+ }
+ }
+
+ public String save(IClusterConfig cluster) throws StoreException {
+ throw new UnsupportedOperationException("Builtin template store is read only");
+ }
+
+ public void delete(IClusterConfig object) {
+ throw new UnsupportedOperationException("Builtin template store is read only");
+ }
+
+ public List getMetadataEditors() {
+ return Collections.emptyList();
+ }
+
+}
Added: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/template/ITemplateLocator.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/template/ITemplateLocator.java (rev 0)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/template/ITemplateLocator.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -0,0 +1,13 @@
+package org.hippoecm.editor.template;
+
+import java.util.Map;
+
+import org.apache.wicket.IClusterable;
+import org.hippoecm.frontend.model.ocm.StoreException;
+import org.hippoecm.frontend.plugin.config.IClusterConfig;
+
+public interface ITemplateLocator extends IClusterable {
+
+ IClusterConfig getTemplate(Map criteria) throws StoreException;
+
+}
Property changes on: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/template/ITemplateLocator.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Added: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/template/ITemplateStore.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/template/ITemplateStore.java (rev 0)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/template/ITemplateStore.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2009 Hippo.
+ *
+ * Licensed 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.
+ */
+package org.hippoecm.editor.template;
+
+import java.util.List;
+
+import org.hippoecm.frontend.model.ocm.IStore;
+import org.hippoecm.frontend.plugin.config.IClusterConfig;
+
+public interface ITemplateStore extends IStore {
+
+ List getMetadataEditors();
+
+}
Property changes on: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/template/ITemplateStore.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Copied: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/template/JcrTemplateStore.java (from rev 20946, hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/impl/JcrTemplateStore.java)
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/template/JcrTemplateStore.java (rev 0)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/template/JcrTemplateStore.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -0,0 +1,270 @@
+/*
+ * Copyright 2008 Hippo.
+ *
+ * Licensed 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.
+ */
+package org.hippoecm.editor.template;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+import javax.jcr.Node;
+import javax.jcr.NodeIterator;
+import javax.jcr.RepositoryException;
+import javax.jcr.Value;
+import javax.jcr.query.Query;
+import javax.jcr.query.QueryManager;
+
+import org.apache.wicket.Session;
+import org.apache.wicket.model.IDetachable;
+import org.hippoecm.editor.EditorNodeType;
+import org.hippoecm.editor.type.JcrNamespace;
+import org.hippoecm.frontend.FrontendNodeType;
+import org.hippoecm.frontend.model.JcrNodeModel;
+import org.hippoecm.frontend.model.ocm.StoreException;
+import org.hippoecm.frontend.plugin.config.IClusterConfig;
+import org.hippoecm.frontend.plugin.config.IPluginConfig;
+import org.hippoecm.frontend.plugin.config.impl.JcrClusterConfig;
+import org.hippoecm.frontend.plugin.config.impl.JcrPluginConfig;
+import org.hippoecm.frontend.session.UserSession;
+import org.hippoecm.frontend.types.ITypeDescriptor;
+import org.hippoecm.frontend.types.ITypeLocator;
+import org.hippoecm.repository.api.HippoNodeType;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class JcrTemplateStore implements ITemplateStore, IDetachable {
+ @SuppressWarnings("unused")
+ private final static String SVN_ID = "$Id$";
+
+ private static final long serialVersionUID = 1L;
+
+ static final Logger log = LoggerFactory.getLogger(JcrTemplateStore.class);
+
+ private ITypeLocator typeLocator;
+
+ public JcrTemplateStore(ITypeLocator typeStore) {
+ this.typeLocator = typeStore;
+ }
+
+ public List getMetadataEditors() {
+ List mixins = new LinkedList();
+
+ try {
+ javax.jcr.Session session = ((UserSession) Session.get()).getJcrSession();
+ QueryManager qMgr = session.getWorkspace().getQueryManager();
+ Query query = qMgr.createQuery("//element(*, " + HippoNodeType.NT_NODETYPE + ")[@"
+ + HippoNodeType.HIPPO_MIXIN + "='true']", Query.XPATH);
+ NodeIterator iter = query.execute().getNodes();
+ while (iter.hasNext()) {
+ Node node = iter.nextNode();
+ log.debug("search result: {}", node.getPath());
+
+ node = node.getParent();
+ if (!node.isNodeType(HippoNodeType.NT_HANDLE)) {
+ log.debug("invalid parent");
+ continue;
+ }
+ node = node.getParent();
+ if (!node.isNodeType(HippoNodeType.NT_TEMPLATETYPE)) {
+ log.debug("invalid ancestor");
+ continue;
+ }
+
+ if (!node.isNodeType(EditorNodeType.NT_EDITABLE)) {
+ log.debug("no template present");
+ continue;
+ }
+
+ Node parent = node.getParent();
+ if (!parent.isNodeType(HippoNodeType.NT_NAMESPACE)) {
+ log.debug("invalid great ancestor");
+ continue;
+ }
+
+ String name;
+ if ("system".equals(parent.getName())) {
+ name = node.getName();
+ } else {
+ name = parent.getName() + ":" + node.getName();
+ }
+ log.debug("found: " + name);
+ mixins.add(name);
+ }
+ } catch (RepositoryException ex) {
+ log.error(ex.getMessage());
+ }
+
+ return mixins;
+ }
+
+ public Iterator find(Map criteria) {
+ if (criteria.containsKey("type")) {
+ List list = new ArrayList(1);
+ try {
+ list.add(getTemplate((ITypeDescriptor) criteria.get("type")));
+ } catch (StoreException ex) {
+ // ignore
+ }
+ return list.iterator();
+ }
+ return new ArrayList(0).iterator();
+ }
+
+ public IClusterConfig load(String id) throws StoreException {
+ JcrNodeModel nodeModel = new JcrNodeModel(id);
+ if (nodeModel.getNode() == null) {
+ throw new StoreException("Unknown template " + id);
+ }
+ return new JcrClusterConfig(nodeModel);
+ }
+
+ public String save(IClusterConfig cluster) throws StoreException {
+ if (cluster instanceof JcrClusterConfig) {
+ try {
+ Node node = ((JcrClusterConfig) cluster).getNodeModel().getNode();
+ node.save();
+ return node.getPath();
+ } catch (RepositoryException ex) {
+ throw new StoreException(ex);
+ }
+ } else {
+ String type = cluster.getString("type");
+ if (type == null) {
+ throw new StoreException("Can only store clusters with a type");
+ }
+ try {
+ Node node = getTemplateNode(typeLocator.locate(type), true);
+
+ JcrClusterConfig jcrConfig = new JcrClusterConfig(new JcrNodeModel(node));
+ for (Map.Entry entry : cluster.entrySet()) {
+ jcrConfig.put(entry.getKey(), entry.getValue());
+ }
+
+ for (IPluginConfig plugin : cluster.getPlugins()) {
+ Node child = node.addNode(plugin.getName(), FrontendNodeType.NT_PLUGIN);
+ JcrPluginConfig pluginConfig = new JcrPluginConfig(new JcrNodeModel(child));
+ for (Map.Entry entry : plugin.entrySet()) {
+ pluginConfig.put(entry.getKey(), entry.getValue());
+ }
+ }
+
+ node.setProperty(FrontendNodeType.FRONTEND_SERVICES, getValues(cluster.getServices()));
+ node.setProperty(FrontendNodeType.FRONTEND_REFERENCES, getValues(cluster.getReferences()));
+ node.setProperty(FrontendNodeType.FRONTEND_PROPERTIES, getValues(cluster.getProperties()));
+
+ node.save();
+ return node.getPath();
+ } catch (RepositoryException ex) {
+ throw new StoreException(ex);
+ }
+ }
+ }
+
+ public void delete(IClusterConfig object) {
+ }
+
+ /**
+ * Retrieve the node that contains the template cluster. Throws an exception when no such
+ * node can be found.
+ */
+ protected Node getTemplateNode(ITypeDescriptor type, boolean create) throws RepositoryException, StoreException {
+ javax.jcr.Session session = ((UserSession) Session.get()).getJcrSession();
+
+ String typeName = type.getName();
+ String prefix;
+ String subType;
+ if (typeName.indexOf(':') > 0) {
+ prefix = typeName.substring(0, typeName.indexOf(':'));
+ subType = typeName.substring(typeName.indexOf(':') + 1);
+ } else {
+ prefix = "system";
+ subType = typeName;
+ }
+ String path = new JcrNamespace(session, prefix).getPath() + "/" + subType;
+ if (!session.itemExists(path)) {
+ throw new StoreException("No template type node exists");
+ }
+ Node typeNode = (Node) session.getItem(path);
+
+ boolean save = false;
+ try {
+ Node templateSetNode;
+ if (!typeNode.isNodeType(EditorNodeType.NT_EDITABLE)) {
+ if (create) {
+ typeNode.addMixin(EditorNodeType.NT_EDITABLE);
+ templateSetNode = typeNode.addNode(EditorNodeType.EDITOR_TEMPLATES, EditorNodeType.NT_TEMPLATESET);
+ save = true;
+ } else {
+ throw new StoreException("Type " + type + " is not editable");
+ }
+ } else {
+ templateSetNode = typeNode.getNode(EditorNodeType.EDITOR_TEMPLATES);
+ }
+
+ // use the first available template
+ Node templateNode = null;
+ NodeIterator nodes = templateSetNode.getNodes();
+ while (nodes.hasNext()) {
+ Node template = nodes.nextNode();
+ if (template != null && template.isNodeType(FrontendNodeType.NT_PLUGINCLUSTER)) {
+ templateNode = template;
+ break;
+ }
+ }
+ if (templateNode == null) {
+ if (create) {
+ templateNode = templateSetNode.addNode("_default_", FrontendNodeType.NT_PLUGINCLUSTER);
+ save = true;
+ } else {
+ throw new StoreException("No template found for " + type);
+ }
+ }
+ return templateNode;
+ } finally {
+ if (save) {
+ typeNode.save();
+ }
+ }
+ }
+
+ protected IClusterConfig getTemplate(ITypeDescriptor type) throws StoreException {
+ try {
+ Node node = getTemplateNode(type, false);
+ return new JcrClusterConfig(new JcrNodeModel(node));
+ } catch (RepositoryException ex) {
+ log.error("Error while fetching template for type: " + type, ex);
+ }
+ return null;
+ }
+
+ public void detach() {
+ if (typeLocator instanceof IDetachable) {
+ ((IDetachable) typeLocator).detach();
+ }
+ }
+
+ private Value[] getValues(List list) throws RepositoryException {
+ Value[] values = new Value[list.size()];
+ int i = 0;
+ for (String override : list) {
+ values[i++] = ((UserSession) org.apache.wicket.Session.get()).getJcrSession().getValueFactory()
+ .createValue(override);
+ }
+ return values;
+ }
+
+}
Property changes on: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/template/JcrTemplateStore.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: svn:keywords
+ Id
Added: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/template/TemplateLocator.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/template/TemplateLocator.java (rev 0)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/template/TemplateLocator.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -0,0 +1,31 @@
+package org.hippoecm.editor.template;
+
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+import org.hippoecm.frontend.model.ocm.IStore;
+import org.hippoecm.frontend.model.ocm.StoreException;
+import org.hippoecm.frontend.plugin.config.IClusterConfig;
+
+public class TemplateLocator implements ITemplateLocator {
+ private static final long serialVersionUID = 1L;
+
+ private IStore[] stores;
+
+ public TemplateLocator(IStore[] stores) {
+ this.stores = stores;
+ }
+
+ public IClusterConfig getTemplate(Map criteria) throws StoreException {
+ Map templates = new LinkedHashMap();
+ for (int i = 0; i < stores.length; i++) {
+ Iterator iter = stores[i].find(criteria);
+ if (iter.hasNext()) {
+ return iter.next();
+ }
+ }
+ throw new StoreException("Could not find template");
+ }
+
+}
Property changes on: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/template/TemplateLocator.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Deleted: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/CndSerializer.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/tools/CndSerializer.java 2009-11-30 17:45:31 UTC (rev 20946)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/CndSerializer.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -1,470 +0,0 @@
-/*
- * Copyright 2008 Hippo.
- *
- * Licensed 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.
- */
-package org.hippoecm.editor.tools;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import javax.jcr.NamespaceRegistry;
-import javax.jcr.Node;
-import javax.jcr.NodeIterator;
-import javax.jcr.RepositoryException;
-import javax.jcr.Session;
-
-import org.apache.wicket.IClusterable;
-import org.hippoecm.frontend.model.JcrNodeModel;
-import org.hippoecm.frontend.model.JcrSessionModel;
-import org.hippoecm.frontend.model.ocm.IStore;
-import org.hippoecm.frontend.model.ocm.StoreException;
-import org.hippoecm.frontend.types.BuiltinTypeStore;
-import org.hippoecm.frontend.types.IFieldDescriptor;
-import org.hippoecm.frontend.types.ITypeDescriptor;
-import org.hippoecm.frontend.types.ITypeLocator;
-import org.hippoecm.frontend.types.TypeLocator;
-import org.hippoecm.repository.api.HippoNodeType;
-import org.hippoecm.repository.api.ISO9075Helper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class CndSerializer implements IClusterable {
- @SuppressWarnings("unused")
- private final static String SVN_ID = "$Id: CndSerializer.java 18973 2009-07-23 10:01:26Z fvlankvelt $";
-
- private static final long serialVersionUID = 1L;
-
- private static Logger log = LoggerFactory.getLogger(CndSerializer.class);
-
- class TypeEntry {
- Node oldType;
- Node newType;
-
- TypeEntry(Node oldType, Node newType) {
- this.oldType = oldType;
- this.newType = newType;
- }
-
- ITypeDescriptor getOldType() throws StoreException {
- try {
- return new JcrTypeDescriptor(new JcrNodeModel(oldType), oldTypeLocator);
- } catch (RepositoryException e) {
- throw new StoreException(e);
- }
- }
-
- ITypeDescriptor getNewType() throws StoreException {
- try {
- // FIXME: it should be possible to delete types.
- if (newType == null) {
- return new JcrTypeDescriptor(new JcrNodeModel(oldType), newTypeLocator);
- }
- return new JcrTypeDescriptor(new JcrNodeModel(newType), newTypeLocator);
- } catch (RepositoryException e) {
- throw new StoreException(e);
- }
- }
-
- TypeUpdate getUpdate() throws StoreException {
- if (oldType == null) {
- return null;
- }
-
- TypeUpdate update = new TypeUpdate();
-
- ITypeDescriptor oldTypeDescriptor = getOldType();
- ITypeDescriptor newTypeDescriptor = getNewType();
-
- if (newType != null) {
- update.newName = newTypeDescriptor.getName();
- } else {
- update.newName = oldTypeDescriptor.getName();
- }
-
- update.renames = new HashMap();
- for (Map.Entry entry : oldTypeDescriptor.getFields().entrySet()) {
- IFieldDescriptor origField = entry.getValue();
- FieldIdentifier oldId = new FieldIdentifier();
- oldId.path = origField.getPath();
- oldId.type = origField.getTypeDescriptor().getType();
-
- if (newType != null) {
- IFieldDescriptor newField = newTypeDescriptor.getField(entry.getKey());
- if (newField != null) {
- FieldIdentifier newId = new FieldIdentifier();
- newId.path = newField.getPath();
- newId.type = newField.getTypeDescriptor().getType();
-
- update.renames.put(oldId, newId);
- }
- } else {
- update.renames.put(oldId, oldId);
- }
- }
- return update;
- }
- }
-
- class SortContext {
- HashSet visited;
- LinkedHashSet result;
-
- SortContext() {
- visited = new HashSet();
- }
-
- void visit(String typeName) throws StoreException {
- if (visited.contains(typeName) || !types.containsKey(typeName)) {
- return;
- }
-
- ITypeDescriptor descriptor = types.get(typeName).getNewType();
-
- visited.add(typeName);
- for (String superType : descriptor.getSuperTypes()) {
- visit(superType);
- }
- for (IFieldDescriptor field : descriptor.getFields().values()) {
- visit(field.getTypeDescriptor().getName());
- }
- result.add(types.get(typeName).getNewType());
- }
-
- LinkedHashSet sort() throws StoreException {
- result = new LinkedHashSet();
- for (String type : types.keySet()) {
- visit(type);
- }
- return result;
- }
- }
-
- private JcrSessionModel jcrSession;
- private Map namespaces;
- private LinkedHashMap types;
- private HashMap pseudoTypes;
- private ITypeLocator oldTypeLocator;
- private ITypeLocator newTypeLocator;
-
- public CndSerializer(JcrSessionModel sessionModel, final String namespace) throws StoreException {
- this.jcrSession = sessionModel;
-
- final JcrTypeStore jcrTypeStore = new JcrTypeStore();
- IStore oldBuiltinTypeStore = new BuiltinTypeStore();
- oldTypeLocator = new TypeLocator(new IStore[] { jcrTypeStore, oldBuiltinTypeStore });
- jcrTypeStore.setTypeLocator(oldTypeLocator);
-
- JcrTypeStore newJcrTypeStore = new JcrTypeStore();
- final BuiltinTypeStore newBuiltinTypeStore = new BuiltinTypeStore();
- final ITypeLocator newLocator = new TypeLocator(new IStore[] { newJcrTypeStore, newBuiltinTypeStore });
- newTypeLocator = new ITypeLocator() {
-
- public ITypeDescriptor locate(String type) throws StoreException {
- if (type.indexOf(':') > 0 && namespace.equals(type.substring(0, type.indexOf(':')))) {
- if (types.containsKey(type)) {
- return types.get(type).getNewType();
- } else if (pseudoTypes.containsKey(type)) {
- return locate(pseudoTypes.get(type));
- } else {
- return newBuiltinTypeStore.load(type);
- }
- }
- return newLocator.locate(type);
- }
-
- public List getSubTypes(String type) throws StoreException {
- throw new StoreException("sub-types are not supported in cnd serializer");
- }
-
- };
- newBuiltinTypeStore.setTypeLocator(newTypeLocator);
- newJcrTypeStore.setTypeLocator(newTypeLocator);
-
- this.namespaces = new HashMap();
- addNamespace(namespace);
-
- initTypes(namespace);
- resolveNamespaces();
-
- versionNamespace(namespace);
- }
-
- public String getOutput() {
- StringBuffer output = new StringBuffer();
- for (Map.Entry entry : namespaces.entrySet()) {
- output.append("<" + entry.getKey() + "='" + entry.getValue() + "'>\n");
- }
- output.append("\n");
-
- try {
- Set sorted = sortTypes();
- for (ITypeDescriptor type : sorted) {
- renderType(output, type);
- }
- } catch (StoreException ex) {
- throw new RuntimeException("Type has disappeared!", ex);
- }
- return output.toString();
- }
-
- public Map getUpdate() throws StoreException {
- Map result = new HashMap();
- for (Map.Entry entry : types.entrySet()) {
- TypeUpdate update = entry.getValue().getUpdate();
- if (update != null) {
- result.put(entry.getKey(), entry.getValue().getUpdate());
- }
- }
- return result;
- }
-
- private void initTypes(String namespace) throws StoreException {
- types = new LinkedHashMap();
- pseudoTypes = new HashMap();
-
- try {
- Session session = jcrSession.getSession();
- JcrNamespace jcrNamespace = new JcrNamespace(session, namespace);
- String uri = jcrNamespace.getCurrentUri();
- Node nsNode = session.getRootNode().getNode(jcrNamespace.getPath().substring(1));
-
- NodeIterator typeIter = nsNode.getNodes();
- while (typeIter.hasNext()) {
- Node templateTypeNode = typeIter.nextNode();
- String pseudoName = namespace + ":" + templateTypeNode.getName();
-
- Node oldType = null, newType = null;
-
- boolean isPseudoType = false;
- Node ntNode = templateTypeNode.getNode(HippoNodeType.HIPPOSYSEDIT_NODETYPE);
- NodeIterator versions = ntNode.getNodes(HippoNodeType.HIPPOSYSEDIT_NODETYPE);
- while (versions.hasNext()) {
- Node version = versions.nextNode();
- if (version.hasProperty(HippoNodeType.HIPPOSYSEDIT_TYPE)) {
- if (!pseudoName.equals(version.getProperty(HippoNodeType.HIPPOSYSEDIT_TYPE).getString())) {
- isPseudoType = true;
- oldType = version;
- break;
- }
- }
- if (version.isNodeType(HippoNodeType.NT_REMODEL)) {
- if (version.getProperty(HippoNodeType.HIPPO_URI).getString().equals(uri)) {
- oldType = version;
- }
- } else {
- newType = version;
- }
- }
- if (oldType == null && newType == null) {
- throw new StoreException("No description found for either old or new version of type " + pseudoName);
- }
- if (!isPseudoType) {
- types.put(pseudoName, new TypeEntry(oldType, newType));
- } else {
- pseudoTypes.put(pseudoName, oldType.getProperty(HippoNodeType.HIPPOSYSEDIT_TYPE).getString());
- }
- }
- } catch (RepositoryException ex) {
- throw new StoreException("Error retrieving namespace description from repository");
- }
- }
-
- private void resolveNamespaces() throws StoreException {
- for (TypeEntry entry : types.values()) {
- ITypeDescriptor descriptor = entry.getNewType();
- if (descriptor.isNode()) {
- String type = descriptor.getType();
- addNamespace(type.substring(0, type.indexOf(':')));
- for (String superType : descriptor.getSuperTypes()) {
- addNamespace(superType.substring(0, superType.indexOf(':')));
- }
-
- for (IFieldDescriptor field : descriptor.getFields().values()) {
- ITypeDescriptor sub = field.getTypeDescriptor();
- if (sub.isNode()) {
- String subType = sub.getType();
- addNamespace(subType.substring(0, subType.indexOf(':')));
-
- List superTypes = sub.getSuperTypes();
- for (String superType : superTypes) {
- addNamespace(superType.substring(0, superType.indexOf(':')));
- }
- } else if (field.getPath().indexOf(':') > 0) {
- addNamespace(field.getPath().substring(0, field.getPath().indexOf(':')));
- }
- }
- }
- }
- }
-
- private void addNamespace(String prefix) {
- if (!namespaces.containsKey(prefix)) {
- try {
- namespaces.put(prefix, jcrSession.getSession().getNamespaceURI(prefix));
- } catch (RepositoryException ex) {
- log.error(ex.getMessage());
- }
- }
- }
-
- private void versionNamespace(String prefix) {
- if (namespaces.containsKey(prefix)) {
- String namespace = namespaces.get(prefix);
- String last = namespace;
- int pos = namespace.lastIndexOf('/');
- try {
- for (String registered : jcrSession.getSession().getNamespacePrefixes()) {
- String uri = jcrSession.getSession().getNamespaceURI(registered);
- if (uri.startsWith(namespace.substring(0, pos + 1))) {
- if (isLater(uri, last)) {
- last = uri;
- }
- }
- }
- } catch (RepositoryException ex) {
- log.error(ex.getMessage());
- return;
- }
-
- int minorPos = last.lastIndexOf('.');
- if (minorPos > pos) {
- int minor = Integer.parseInt(last.substring(minorPos + 1));
- namespace = last.substring(0, minorPos + 1) + new Integer(minor + 1).toString();
- namespaces.put(prefix, namespace);
- } else {
- log.warn("namespace for " + prefix + " does not conform to versionable format");
- }
- } else {
- log.warn("namespace for " + prefix + " was not found");
- }
- }
-
- private static boolean isLater(String one, String two) {
- int pos = one.lastIndexOf('/');
- String[] oneVersions = one.substring(pos + 1).split("\\.");
- String[] twoVersions = two.substring(pos + 1).split("\\.");
- for (int i = 0; i < oneVersions.length; i++) {
- if (i < twoVersions.length) {
- int oneVersion = Integer.parseInt(oneVersions[i]);
- int twoVersion = Integer.parseInt(twoVersions[i]);
- if (oneVersion > twoVersion) {
- return true;
- } else if (oneVersion < twoVersion) {
- return false;
- }
- } else {
- return true;
- }
- }
- return false;
- }
-
- private String getCurrentUri(String prefix) {
- if ("system".equals(prefix)) {
- return "internal";
- }
- try {
- NamespaceRegistry nsReg = jcrSession.getSession().getWorkspace().getNamespaceRegistry();
- return nsReg.getURI(prefix);
- } catch (RepositoryException ex) {
- log.error(ex.getMessage());
- }
- return null;
- }
-
- private void renderField(StringBuffer output, IFieldDescriptor field) throws StoreException {
- ITypeDescriptor sub = field.getTypeDescriptor();
- if (sub.isNode()) {
- output.append("+");
- } else {
- output.append("-");
- }
-
- if (field.getPath() != null) {
- output.append(" " + encode(field.getPath()));
- } else {
- output.append(" *");
- }
-
- String type = sub.getType();
- if (type.indexOf(':') == -1) {
- type = type.toLowerCase();
- }
- output.append(" (" + type + ")");
- if (field.isMultiple()) {
- output.append(" multiple");
- }
- if (field.isMandatory()) {
- output.append(" mandatory");
- }
- if (field.isPrimary()) {
- output.append(" primary");
- }
- output.append("\n");
- }
-
- private void renderType(StringBuffer output, ITypeDescriptor typeDescriptor) throws StoreException {
- String type = typeDescriptor.getType();
- output.append("[" + encode(type) + "]");
-
- Iterator superTypes = typeDescriptor.getSuperTypes().iterator();
- boolean first = true;
- while (superTypes.hasNext()) {
- String superType = superTypes.next();
- if (first) {
- first = false;
- output.append(" > " + superType);
- } else {
- output.append(", " + superType);
- }
- }
-
- if (typeDescriptor.isMixin()) {
- output.append(" mixin");
- }
-
- // type should be orderable if any of the fields is
- for (IFieldDescriptor field : typeDescriptor.getFields().values()) {
- if (field.isOrdered()) {
- output.append(" orderable");
- break;
- }
- }
-
- output.append("\n");
- for (IFieldDescriptor field : typeDescriptor.getDeclaredFields().values()) {
- renderField(output, field);
- }
- output.append("\n");
- }
-
- private Set sortTypes() throws StoreException {
- return new SortContext().sort();
- }
-
- private static String encode(String name) {
- int colon = name.indexOf(':');
- if (colon > 0) {
- return name.substring(0, colon + 1) + ISO9075Helper.encodeLocalName(name.substring(colon + 1));
- }
- return name;
- }
-
-}
Deleted: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/FieldIdentifier.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/tools/FieldIdentifier.java 2009-11-30 17:45:31 UTC (rev 20946)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/FieldIdentifier.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -1,55 +0,0 @@
-/*
- * Copyright 2009 Hippo.
- *
- * Licensed 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.
- */
-package org.hippoecm.editor.tools;
-
-import java.io.ObjectStreamException;
-import java.io.Serializable;
-import java.util.HashMap;
-import java.util.Map;
-
-public class FieldIdentifier implements Serializable {
- @SuppressWarnings("unused")
- private final static String SVN_ID = "$Id: $";
-
- private static final long serialVersionUID = 1L;
-
- public String path;
-
- public String type;
-
- private Object writeReplace() throws ObjectStreamException {
- Map obj = new HashMap();
- obj.put("path", path);
- obj.put("type", type);
- return obj;
- }
-
- @Override
- public boolean equals(Object object) {
- if (object != null) {
- if (object instanceof FieldIdentifier) {
- FieldIdentifier id = (FieldIdentifier) object;
- return id.path.equals(path) && id.type.equals(type);
- }
- }
- return false;
- }
-
- @Override
- public int hashCode() {
- return (path.hashCode() * (type != null ? type.hashCode() : 0)) % 1001;
- }
-}
Added: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrDraftLocator.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrDraftLocator.java (rev 0)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrDraftLocator.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2009 Hippo.
+ *
+ * Licensed 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.
+ */
+package org.hippoecm.editor.type;
+
+import java.util.List;
+
+import org.apache.wicket.model.IDetachable;
+import org.hippoecm.frontend.model.ocm.IStore;
+import org.hippoecm.frontend.model.ocm.StoreException;
+import org.hippoecm.frontend.types.BuiltinTypeStore;
+import org.hippoecm.frontend.types.ITypeDescriptor;
+import org.hippoecm.frontend.types.ITypeLocator;
+import org.hippoecm.frontend.types.TypeLocator;
+
+public class JcrDraftLocator implements ITypeLocator, IDetachable {
+ private static final long serialVersionUID = 1L;
+
+ @SuppressWarnings("unused")
+ private final static String SVN_ID = "$Id$";
+
+ private TypeLocator locator;
+ private JcrTypeStore jcrTypeStore;
+
+ public JcrDraftLocator(String prefix) {
+ jcrTypeStore = new JcrTypeStore();
+ JcrDraftStore draftStore = new JcrDraftStore(jcrTypeStore, prefix);
+ BuiltinTypeStore builtinTypeStore = new BuiltinTypeStore();
+ locator = new TypeLocator(new IStore[] { draftStore, jcrTypeStore, builtinTypeStore });
+ jcrTypeStore.setTypeLocator(locator);
+ builtinTypeStore.setTypeLocator(locator);
+ }
+
+ public List getSubTypes(String type) throws StoreException {
+ return locator.getSubTypes(type);
+ }
+
+ public ITypeDescriptor locate(String type) throws StoreException {
+ return locator.locate(type);
+ }
+
+ public void detach() {
+ jcrTypeStore.detach();
+ }
+
+}
Property changes on: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrDraftLocator.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Added: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrDraftStore.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrDraftStore.java (rev 0)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrDraftStore.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -0,0 +1,60 @@
+/*
+ * Copyright 2009 Hippo.
+ *
+ * Licensed 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.
+ */
+package org.hippoecm.editor.type;
+
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.hippoecm.frontend.model.ocm.IStore;
+import org.hippoecm.frontend.model.ocm.StoreException;
+import org.hippoecm.frontend.types.ITypeDescriptor;
+
+public class JcrDraftStore implements IStore {
+ private static final long serialVersionUID = 1L;
+
+ private final String prefix;
+ private JcrTypeStore jcrTypeStore;
+
+ public JcrDraftStore(JcrTypeStore typeStore, String prefix) {
+ this.jcrTypeStore = typeStore;
+ this.prefix = prefix;
+ }
+
+ public void delete(ITypeDescriptor object) throws StoreException {
+ throw new StoreException();
+ }
+
+ public Iterator find(Map criteria) throws StoreException {
+ return Collections.EMPTY_LIST.iterator();
+ }
+
+ public ITypeDescriptor load(String id) throws StoreException {
+ ITypeDescriptor draft = null;
+ if ((!"system".equals(prefix) && id.indexOf(':') > 0 && id.substring(0, id.indexOf(':')).equals(prefix))
+ || ("system".equals(prefix) && id.indexOf(':') < 0)) {
+ draft = jcrTypeStore.getDraftType(id);
+ }
+ if (draft == null) {
+ throw new StoreException("Could not find draft");
+ }
+ return draft;
+ }
+
+ public String save(ITypeDescriptor object) throws StoreException {
+ return jcrTypeStore.save(object);
+ }
+}
\ No newline at end of file
Property changes on: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrDraftStore.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Modified: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrFieldDescriptor.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/tools/JcrFieldDescriptor.java 2009-11-30 17:45:31 UTC (rev 20946)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrFieldDescriptor.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.hippoecm.editor.tools;
+package org.hippoecm.editor.type;
import java.util.Collections;
import java.util.Iterator;
Modified: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrNamespace.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/tools/JcrNamespace.java 2009-11-30 17:45:31 UTC (rev 20946)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrNamespace.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.hippoecm.editor.tools;
+package org.hippoecm.editor.type;
import javax.jcr.NamespaceRegistry;
import javax.jcr.RepositoryException;
@@ -56,6 +56,10 @@
return "/" + HippoNodeType.NAMESPACES_PATH + "/" + prefix;
}
+ public String getPrefix() {
+ return prefix;
+ }
+
public String getCurrentUri() throws RepositoryException {
return getUri(prefix);
}
Deleted: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrPrototypeStore.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/tools/JcrPrototypeStore.java 2009-11-30 17:45:31 UTC (rev 20946)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrPrototypeStore.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -1,165 +0,0 @@
-/*
- * Copyright 2008 Hippo.
- *
- * Licensed 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.
- */
-package org.hippoecm.editor.tools;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.jcr.NamespaceRegistry;
-import javax.jcr.Node;
-import javax.jcr.NodeIterator;
-import javax.jcr.RepositoryException;
-import javax.jcr.Session;
-
-import org.apache.wicket.model.IDetachable;
-import org.hippoecm.frontend.model.JcrNodeModel;
-import org.hippoecm.frontend.session.UserSession;
-import org.hippoecm.repository.api.HippoNodeType;
-import org.hippoecm.repository.api.HippoSession;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class JcrPrototypeStore implements IDetachable {
- @SuppressWarnings("unused")
- private final static String SVN_ID = "$Id: JcrPrototypeStore.java 18825 2009-07-10 15:26:30Z abogaart $";
-
- private static final long serialVersionUID = 1L;
-
- private static final Logger log = LoggerFactory.getLogger(JcrPrototypeStore.class);
-
- private Map prototypes;
-
- public JcrNodeModel getPrototype(String name, boolean draft) {
- if ("rep:root".equals(name)) {
- // ignore the root node
- return null;
- }
- if (prototypes == null) {
- prototypes = new HashMap();
- }
- JcrNodeModel result = prototypes.get(name);
- if (result == null) {
- try {
- Node node = lookupConfigNode(name, draft);
- if (node != null) {
- result = new JcrNodeModel(node);
- prototypes.put(name, result);
- }
- } catch (RepositoryException e) {
- log.error(e.getMessage());
- }
- }
- return result;
- }
-
- public JcrNodeModel createPrototype(String name, boolean draft) {
- JcrNodeModel prototype = getPrototype(name, draft);
- if (prototype != null) {
- throw new IllegalArgumentException("prototype " + name + " exists");
- }
-
- try {
- String path = getLocation(name);
- Session session = getJcrSession();
- Node handle;
- String parentPath = path.substring(0, path.lastIndexOf('/'));
- Node parent = session.getRootNode().getNode(parentPath.substring(1));
- if (!session.itemExists(path)) {
- handle = parent.addNode(HippoNodeType.HIPPO_PROTOTYPES, HippoNodeType.NT_PROTOTYPESET);
- } else {
- handle = parent.getNode(HippoNodeType.HIPPO_PROTOTYPES);
- }
-
- Node node;
- if (draft) {
- node = handle.addNode(HippoNodeType.HIPPO_PROTOTYPE, "nt:unstructured");
- } else {
- node = handle.addNode(HippoNodeType.HIPPO_PROTOTYPE, name);
- }
- parent.save();
-
- prototype = new JcrNodeModel(node);
- } catch (RepositoryException ex) {
- log.error("Failed to create prototype node", ex);
- }
- return prototype;
- }
-
- public void detach() {
- prototypes = null;
- }
-
- // Privates
-
- private String getUri(String prefix) {
- if ("system".equals(prefix)) {
- return "internal";
- }
- try {
- NamespaceRegistry nsReg = getJcrSession().getWorkspace().getNamespaceRegistry();
- return nsReg.getURI(prefix);
- } catch (RepositoryException ex) {
- log.error(ex.getMessage());
- }
- return null;
- }
-
- private Session getJcrSession() {
- return ((UserSession) org.apache.wicket.Session.get()).getJcrSession();
- }
-
- private String getLocation(String type) {
- String prefix = "system";
- String subType = type;
- if (type.indexOf(':') > 0) {
- prefix = type.substring(0, type.indexOf(':'));
- subType = type.substring(type.indexOf(':') + 1);
- }
-
- String uri = getUri(prefix);
- String nsVersion = "_" + uri.substring(uri.lastIndexOf("/") + 1);
- if (prefix.length() > nsVersion.length()
- && nsVersion.equals(prefix.substring(prefix.length() - nsVersion.length()))) {
- prefix = prefix.substring(0, prefix.length() - nsVersion.length());
- }
-
- return "/" + HippoNodeType.NAMESPACES_PATH + "/" + prefix + "/" + subType + "/"
- + HippoNodeType.HIPPO_PROTOTYPES;
- }
-
- private Node lookupConfigNode(String type, boolean draft) throws RepositoryException {
- HippoSession session = (HippoSession) getJcrSession();
- String path = getLocation(type);
- if (!session.itemExists(path) || !session.getItem(path).isNode()) {
- return null;
- }
- NodeIterator iter = ((Node) session.getItem(path)).getNodes(HippoNodeType.HIPPO_PROTOTYPE);
-
- while (iter.hasNext()) {
- Node node = iter.nextNode();
- if (draft) {
- if (node.isNodeType("nt:unstructured")) {
- return node;
- }
- } else {
- if (!node.isNodeType("nt:unstructured")) {
- return node;
- }
- }
- }
- return null;
- }
-}
Modified: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrTypeDescriptor.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/tools/JcrTypeDescriptor.java 2009-11-30 17:45:31 UTC (rev 20946)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrTypeDescriptor.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.hippoecm.editor.tools;
+package org.hippoecm.editor.type;
import java.util.ArrayList;
import java.util.Collections;
Modified: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrTypeLocator.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/tools/JcrTypeLocator.java 2009-11-30 17:45:31 UTC (rev 20946)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrTypeLocator.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.hippoecm.editor.tools;
+package org.hippoecm.editor.type;
import java.util.List;
Modified: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrTypeStore.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/tools/JcrTypeStore.java 2009-11-30 17:45:31 UTC (rev 20946)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrTypeStore.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.hippoecm.editor.tools;
+package org.hippoecm.editor.type;
import java.rmi.RemoteException;
import java.util.HashMap;
@@ -95,8 +95,7 @@
ITypeDescriptor result = types.get(name);
if (result == null) {
try {
- TypeInfo info = new TypeInfo(name);
- TypeVersion version = info.getLatest();
+ TypeVersion version = new TypeVersion(name);
Node typeNode = version.getTypeNode(getJcrSession());
if (typeNode != null) {
result = createTypeDescriptor(typeNode, name);
@@ -233,7 +232,10 @@
nsNode.refresh(false);
- ITypeDescriptor type = getTypeDescriptor(object.getType());
+ ITypeDescriptor type = getDraftType(object.getType());
+ if (type == null) {
+ throw new StoreException("Could not find newly created draft");
+ }
type.setSuperTypes(object.getSuperTypes());
type.setIsNode(object.isNode());
type.setIsMixin(object.isMixin());
@@ -275,12 +277,13 @@
}
}
- public ITypeDescriptor getCurrentType(String name) throws StoreException {
+ public ITypeDescriptor getDraftType(String name) throws StoreException {
ITypeDescriptor result = currentTypes.get(name);
if (result == null) {
try {
- TypeInfo info = new TypeInfo(name);
- TypeVersion current = info.getCurrent();
+ TypeVersion version = new TypeVersion(name);
+ TypeInfo info = version.getTypeInfo();
+ TypeVersion current = info.getDraft();
Node typeNode = current.getTypeNode(getJcrSession());
if (typeNode != null) {
result = createTypeDescriptor(typeNode, name);
@@ -289,7 +292,7 @@
log.debug("No nodetype description found for " + name);
}
} catch (RepositoryException e) {
- throw new StoreException("Could not find current type descriptor", e);
+ throw new StoreException("Could not find draft type descriptor", e);
}
}
return result;
@@ -345,47 +348,38 @@
return nsInfo.getPath() + "/" + subType;
}
- TypeVersion getLatest() throws RepositoryException {
- boolean latest = true;
- String uri = getNamespace().getCurrentUri();
- String prefix;
- if (type.indexOf(':') > 0) {
- prefix = type.substring(0, type.indexOf(':'));
- String typeUri = getJcrSession().getWorkspace().getNamespaceRegistry().getURI(prefix);
- if (!typeUri.equals(uri)) {
- latest = false;
- uri = typeUri;
- }
- } else {
- prefix = "system";
- }
-
- return new TypeVersion(this, latest, uri);
+ TypeVersion getDraft() throws RepositoryException {
+ return new TypeVersion(this, true, null);
}
-
- TypeVersion getCurrent() throws RepositoryException {
- String prefix = "system";
- String uri = null;
- if (type.indexOf(':') > 0) {
- prefix = type.substring(0, type.indexOf(':'));
- uri = getJcrSession().getWorkspace().getNamespaceRegistry().getURI(prefix);
- }
- return new TypeVersion(this, false, uri);
- }
}
private class TypeVersion {
TypeInfo info;
- boolean latest;
+ boolean draft;
String uri;
- public TypeVersion(TypeInfo info, boolean latest, String uri) {
+ TypeVersion(String type) throws RepositoryException {
+ info = new TypeInfo(type);
+ draft = false;
+ if (type.indexOf(':') > 0) {
+ String prefix = type.substring(0, type.indexOf(':'));
+ uri = getJcrSession().getWorkspace().getNamespaceRegistry().getURI(prefix);
+ } else {
+ uri = "internal";
+ }
+ }
+
+ TypeVersion(TypeInfo info, boolean draft, String uri) {
this.info = info;
- this.latest = latest;
+ this.draft = draft;
this.uri = uri;
}
+ TypeInfo getTypeInfo() {
+ return info;
+ }
+
Node getTypeNode(Session session) throws RepositoryException {
String path = info.getPath();
if (!session.itemExists(path) || !session.getItem(path).isNode()) {
@@ -395,19 +389,33 @@
NodeIterator iter = ((Node) session.getItem(path)).getNode(HippoNodeType.HIPPOSYSEDIT_NODETYPE).getNodes(
HippoNodeType.HIPPOSYSEDIT_NODETYPE);
- Node current = null;
while (iter.hasNext()) {
Node node = iter.nextNode();
- if (latest && !node.isNodeType(HippoNodeType.NT_REMODEL)) {
- return node;
+ if (!node.isNodeType(HippoNodeType.NT_REMODEL)) {
+ if (draft) {
+ return node;
+ } else if (node.hasProperty(HippoNodeType.HIPPOSYSEDIT_TYPE)) {
+ String realType = node.getProperty(HippoNodeType.HIPPOSYSEDIT_TYPE).getString();
+ String prefix = info.getNamespace().getPrefix();
+ String pseudoType;
+ if (!"system".equals(prefix)) {
+ pseudoType = prefix + ":" + info.subType;
+ } else {
+ pseudoType = info.subType;
+ }
+ if (!realType.equals(pseudoType)) {
+ return node;
+ }
+ }
} else {
if (node.getProperty(HippoNodeType.HIPPO_URI).getString().equals(uri)) {
- current = node;
+ return node;
}
}
}
- return current;
+ return null;
+ }
- }
}
+
}
Modified: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/PseudoTypeDescriptor.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/tools/PseudoTypeDescriptor.java 2009-11-30 17:45:31 UTC (rev 20946)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/PseudoTypeDescriptor.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.hippoecm.editor.tools;
+package org.hippoecm.editor.type;
import java.util.Iterator;
import java.util.List;
Deleted: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/TypeUpdate.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/tools/TypeUpdate.java 2009-11-30 17:45:31 UTC (rev 20946)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/TypeUpdate.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -1,43 +0,0 @@
-/*
- * Copyright 2009 Hippo.
- *
- * Licensed 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.
- */
-package org.hippoecm.editor.tools;
-
-import java.io.ObjectStreamException;
-import java.io.Serializable;
-import java.util.HashMap;
-import java.util.Map;
-
-public class TypeUpdate implements Serializable {
- @SuppressWarnings("unused")
- private final static String SVN_ID = "$Id: TypeUpdate.java 17361 2009-04-21 10:07:17Z bvanhalderen $";
-
- private static final long serialVersionUID = 1L;
-
- public String newName;
-
- public String prototype;
-
- public Map renames;
-
- private Object writeReplace() throws ObjectStreamException {
- Map obj = new HashMap();
- obj.put("newName", newName);
- obj.put("prototype", prototype);
- obj.put("renames", renames);
- return obj;
- }
-
-}
Modified: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/builder/TemplateBuilder.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/builder/TemplateBuilder.java 2009-12-01 13:44:45 UTC (rev 20957)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/builder/TemplateBuilder.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -36,10 +36,12 @@
import org.apache.wicket.model.IDetachable;
import org.apache.wicket.model.IModel;
import org.apache.wicket.util.collections.MiniMap;
-import org.hippoecm.editor.tools.JcrPrototypeStore;
-import org.hippoecm.editor.tools.JcrTypeStore;
-import org.hippoecm.frontend.editor.impl.BuiltinTemplateStore;
-import org.hippoecm.frontend.editor.impl.JcrTemplateStore;
+import org.hippoecm.editor.prototype.JcrPrototypeStore;
+import org.hippoecm.editor.template.BuiltinTemplateStore;
+import org.hippoecm.editor.template.JcrTemplateStore;
+import org.hippoecm.editor.type.JcrDraftStore;
+import org.hippoecm.editor.type.JcrTypeStore;
+import org.hippoecm.frontend.editor.TemplateEngineException;
import org.hippoecm.frontend.editor.plugins.field.NodeFieldPlugin;
import org.hippoecm.frontend.editor.plugins.field.PropertyFieldPlugin;
import org.hippoecm.frontend.model.JcrNodeModel;
@@ -189,7 +191,7 @@
&& (currentTypeDescriptor == null || (!currentTypeDescriptor.getFields().containsKey(name) && !currentTypeDescriptor
.getFields().containsKey(newName)))) {
JavaFieldDescriptor javaFieldDescriptor = new JavaFieldDescriptor(delegate);
- typeDescriptor.removeField(name);
+ typeDescriptor.removeField(name);
javaFieldDescriptor.setName(newName);
typeDescriptor.addField(javaFieldDescriptor);
delegate = typeDescriptor.getField(newName);
@@ -545,7 +547,6 @@
private IStore builtinTemplateStore;
private JcrTypeStore jcrTypeStore;
- private BuiltinTypeStore builtinTypeStore;
private JcrPrototypeStore prototypeStore;
@@ -561,7 +562,7 @@
private BuilderPluginList plugins;
- public TemplateBuilder(String type, boolean readonly, IPluginContext context, IModel extPtModel)
+ public TemplateBuilder(final String type, boolean readonly, IPluginContext context, IModel extPtModel)
throws BuilderException {
this.type = type;
this.readonly = readonly;
@@ -569,21 +570,41 @@
this.selectedExtPtModel = extPtModel;
this.jcrTypeStore = new JcrTypeStore();
- this.builtinTypeStore = new BuiltinTypeStore();
- ITypeLocator fieldTypeLocator = new TypeLocator(new IStore[] { jcrTypeStore, builtinTypeStore });
- builtinTypeStore.setTypeLocator(fieldTypeLocator);
+ String prefix;
+ if (type.indexOf(':') > 0) {
+ prefix = type.substring(0, type.indexOf(':'));
+ } else {
+ prefix = "system";
+ }
+ IStore draftStore = new JcrDraftStore(jcrTypeStore, prefix);
+ BuiltinTypeStore builtinTypeStore = new BuiltinTypeStore();
+ ITypeLocator typeLocator = new TypeLocator(new IStore[] { draftStore, jcrTypeStore, builtinTypeStore });
+ builtinTypeStore.setTypeLocator(typeLocator);
+ jcrTypeStore.setTypeLocator(typeLocator);
- this.jcrTemplateStore = new JcrTemplateStore(fieldTypeLocator);
- this.builtinTemplateStore = new BuiltinTemplateStore(fieldTypeLocator);
+ this.jcrTemplateStore = new JcrTemplateStore(typeLocator);
+ this.builtinTemplateStore = new BuiltinTemplateStore(typeLocator);
this.prototypeStore = new JcrPrototypeStore();
try {
- typeDescriptor = jcrTypeStore.load(type);
+ typeDescriptor = jcrTypeStore.getDraftType(type);
+ if (typeDescriptor == null) {
+ if (readonly) {
+ typeDescriptor = jcrTypeStore.load(type);
+ } else {
+ throw new BuilderException("No draft found for type " + type);
+ }
+ }
try {
- currentTypeDescriptor = jcrTypeStore.getCurrentType(type);
+ currentTypeDescriptor = jcrTypeStore.load(type);
} catch (StoreException ex) {
+ try {
+ currentTypeDescriptor = builtinTypeStore.load(type);
+ } catch (StoreException ex2) {
+ // ignore
+ }
// ignore
}
Modified: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/builder/TemplateTypeEditorPlugin.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/builder/TemplateTypeEditorPlugin.java 2009-12-01 13:44:45 UTC (rev 20957)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/builder/TemplateTypeEditorPlugin.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -26,6 +26,7 @@
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.Model;
import org.hippoecm.frontend.editor.ITemplateEngine;
+import org.hippoecm.frontend.editor.impl.TemplateEngineFactory;
import org.hippoecm.frontend.model.IModelReference;
import org.hippoecm.frontend.model.ModelReference;
import org.hippoecm.frontend.model.event.IEvent;
@@ -75,6 +76,7 @@
private String typeModelId;
private String selectedPluginId;
private String selectedExtPtId;
+ private String engineId;
public TemplateTypeEditorPlugin(IPluginContext context, IPluginConfig config) {
super(context, config);
@@ -101,6 +103,11 @@
try {
Node node = (Node) nodeModel.getObject();
String typeName = node.getParent().getName() + ":" + node.getName();
+
+ engineId = context.getReference(this).getServiceId() + ".engine";
+ TemplateEngineFactory factory = new TemplateEngineFactory(node.getParent().getName());
+ context.registerService(factory, engineId);
+
IModel selectedExtensionPointModel = new LoadableDetachableModel() {
private static final long serialVersionUID = 1L;
@@ -166,7 +173,7 @@
// selectedExtPt ?
IPluginConfig parameters = new JavaPluginConfig();
- parameters.put(ITemplateEngine.ENGINE, config.getString("engine"));
+ parameters.put(ITemplateEngine.ENGINE, engineId);
parameters.put(ITemplateEngine.MODE, mode);
parameters.put(RenderService.WICKET_ID, config.getString("template"));
Modified: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/editor/EditorForm.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/editor/EditorForm.java 2009-12-01 13:44:45 UTC (rev 20957)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/editor/EditorForm.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -73,7 +73,7 @@
setMultiPart(true);
- engineFactory = new TemplateEngineFactory();
+ engineFactory = new TemplateEngineFactory(null);
engine = engineFactory.getService(context);
context.registerService(engineFactory, ITemplateEngine.class.getName());
engineId = context.getReference(engineFactory).getServiceId();
Deleted: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/impl/BuiltinTemplateConfig.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/impl/BuiltinTemplateConfig.java 2009-12-01 13:44:45 UTC (rev 20957)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/impl/BuiltinTemplateConfig.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -1,108 +0,0 @@
-/*
- * Copyright 2008 Hippo.
- *
- * Licensed 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.
- */
-package org.hippoecm.frontend.editor.impl;
-
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-import org.hippoecm.frontend.editor.plugins.field.NodeFieldPlugin;
-import org.hippoecm.frontend.editor.plugins.field.PropertyFieldPlugin;
-import org.hippoecm.frontend.plugin.config.IPluginConfig;
-import org.hippoecm.frontend.plugin.config.impl.JavaClusterConfig;
-import org.hippoecm.frontend.plugin.config.impl.JavaPluginConfig;
-import org.hippoecm.frontend.service.render.ListViewPlugin;
-import org.hippoecm.frontend.types.IFieldDescriptor;
-import org.hippoecm.frontend.types.ITypeDescriptor;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class BuiltinTemplateConfig extends JavaClusterConfig {
- @SuppressWarnings("unused")
- private final static String SVN_ID = "$Id: $";
-
- private static final long serialVersionUID = 1L;
-
- static final Logger log = LoggerFactory.getLogger(BuiltinTemplateConfig.class);
-
- private ITypeDescriptor type;
- private String name;
-
- public BuiltinTemplateConfig(ITypeDescriptor type) {
- this.type = type;
- super.put("type", type.getName());
- this.name = type.getName().replace(':', '_');
- }
-
- @Override
- public String getName() {
- return name;
- }
-
- @Override
- public List getServices() {
- List result = new LinkedList();
- result.add("wicket.id");
- return result;
- }
-
- @Override
- public List getReferences() {
- List result = new LinkedList();
- result.add("wicket.model");
- result.add("engine");
- return result;
- }
-
- @Override
- public List getProperties() {
- List result = new LinkedList();
- result.add("mode");
- return result;
- }
-
- @Override
- public List getPlugins() {
- List list = new LinkedList();
- IPluginConfig config = new JavaPluginConfig("root");
- config.put("plugin.class", ListViewPlugin.class.getName());
- config.put("wicket.id", "${wicket.id}");
- config.put("item", "${cluster.id}.field");
- list.add(config);
-
- Map fields = type.getFields();
- for (Map.Entry entry : fields.entrySet()) {
- IFieldDescriptor field = entry.getValue();
- ITypeDescriptor type = field.getTypeDescriptor();
-
- config = new JavaPluginConfig(entry.getKey());
- if (type.isNode()) {
- config.put("plugin.class", NodeFieldPlugin.class.getName());
- } else {
- config.put("plugin.class", PropertyFieldPlugin.class.getName());
- }
- config.put("wicket.id", "${cluster.id}.field");
- config.put("wicket.model", "${wicket.model}");
- config.put("engine", "${engine}");
- config.put("mode", "${mode}");
- config.put("caption", entry.getKey());
- config.put("field", entry.getKey());
- list.add(config);
- }
- return list;
- }
-
-}
Deleted: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/impl/BuiltinTemplateStore.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/impl/BuiltinTemplateStore.java 2009-12-01 13:44:45 UTC (rev 20957)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/impl/BuiltinTemplateStore.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -1,70 +0,0 @@
-/*
- * Copyright 2008 Hippo.
- *
- * Licensed 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.
- */
-package org.hippoecm.frontend.editor.impl;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.hippoecm.frontend.model.ocm.IStore;
-import org.hippoecm.frontend.model.ocm.StoreException;
-import org.hippoecm.frontend.plugin.config.IClusterConfig;
-import org.hippoecm.frontend.types.ITypeDescriptor;
-import org.hippoecm.frontend.types.ITypeLocator;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class BuiltinTemplateStore implements IStore {
- @SuppressWarnings("unused")
- private final static String SVN_ID = "$Id$";
-
- private static final long serialVersionUID = 1L;
-
- static final Logger log = LoggerFactory.getLogger(BuiltinTemplateStore.class);
-
- private ITypeLocator typeLocator;
-
- public BuiltinTemplateStore(ITypeLocator typeStore) {
- this.typeLocator = typeStore;
- }
-
- public Iterator find(Map criteria) {
- if (criteria.containsKey("type")) {
- List list = new ArrayList(1);
- list.add(new BuiltinTemplateConfig((ITypeDescriptor) criteria.get("type")));
- return list.iterator();
- }
- return new ArrayList(0).iterator();
- }
-
- public IClusterConfig load(String id) throws StoreException {
- try {
- return new BuiltinTemplateConfig(typeLocator.locate(id));
- } catch (StoreException ex) {
- throw new StoreException("No type found for " + id, ex);
- }
- }
-
- public String save(IClusterConfig cluster) throws StoreException {
- throw new UnsupportedOperationException("Builtin template store is read only");
- }
-
- public void delete(IClusterConfig object) {
- throw new UnsupportedOperationException("Builtin template store is read only");
- }
-
-}
Deleted: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/impl/JcrTemplateStore.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/impl/JcrTemplateStore.java 2009-12-01 13:44:45 UTC (rev 20957)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/impl/JcrTemplateStore.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -1,271 +0,0 @@
-/*
- * Copyright 2008 Hippo.
- *
- * Licensed 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.
- */
-package org.hippoecm.frontend.editor.impl;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-import javax.jcr.Node;
-import javax.jcr.NodeIterator;
-import javax.jcr.RepositoryException;
-import javax.jcr.Value;
-import javax.jcr.query.Query;
-import javax.jcr.query.QueryManager;
-
-import org.apache.wicket.Session;
-import org.apache.wicket.model.IDetachable;
-import org.hippoecm.editor.EditorNodeType;
-import org.hippoecm.editor.tools.JcrNamespace;
-import org.hippoecm.frontend.FrontendNodeType;
-import org.hippoecm.frontend.model.JcrNodeModel;
-import org.hippoecm.frontend.model.ocm.IStore;
-import org.hippoecm.frontend.model.ocm.StoreException;
-import org.hippoecm.frontend.plugin.config.IClusterConfig;
-import org.hippoecm.frontend.plugin.config.IPluginConfig;
-import org.hippoecm.frontend.plugin.config.impl.JcrClusterConfig;
-import org.hippoecm.frontend.plugin.config.impl.JcrPluginConfig;
-import org.hippoecm.frontend.session.UserSession;
-import org.hippoecm.frontend.types.ITypeDescriptor;
-import org.hippoecm.frontend.types.ITypeLocator;
-import org.hippoecm.repository.api.HippoNodeType;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class JcrTemplateStore implements IStore, IDetachable {
- @SuppressWarnings("unused")
- private final static String SVN_ID = "$Id$";
-
- private static final long serialVersionUID = 1L;
-
- static final Logger log = LoggerFactory.getLogger(JcrTemplateStore.class);
-
- private ITypeLocator typeLocator;
-
- public JcrTemplateStore(ITypeLocator typeStore) {
- this.typeLocator = typeStore;
- }
-
- public List getAvailableMixins() {
- List mixins = new LinkedList();
-
- try {
- javax.jcr.Session session = ((UserSession) Session.get()).getJcrSession();
- QueryManager qMgr = session.getWorkspace().getQueryManager();
- Query query = qMgr.createQuery("//element(*, " + HippoNodeType.NT_NODETYPE + ")[@"
- + HippoNodeType.HIPPO_MIXIN + "='true']", Query.XPATH);
- NodeIterator iter = query.execute().getNodes();
- while (iter.hasNext()) {
- Node node = iter.nextNode();
- log.debug("search result: {}", node.getPath());
-
- node = node.getParent();
- if (!node.isNodeType(HippoNodeType.NT_HANDLE)) {
- log.debug("invalid parent");
- continue;
- }
- node = node.getParent();
- if (!node.isNodeType(HippoNodeType.NT_TEMPLATETYPE)) {
- log.debug("invalid ancestor");
- continue;
- }
-
- if (!node.isNodeType(EditorNodeType.NT_EDITABLE)) {
- log.debug("no template present");
- continue;
- }
-
- Node parent = node.getParent();
- if (!parent.isNodeType(HippoNodeType.NT_NAMESPACE)) {
- log.debug("invalid great ancestor");
- continue;
- }
-
- String name;
- if ("system".equals(parent.getName())) {
- name = node.getName();
- } else {
- name = parent.getName() + ":" + node.getName();
- }
- log.debug("found: " + name);
- mixins.add(name);
- }
- } catch (RepositoryException ex) {
- log.error(ex.getMessage());
- }
-
- return mixins;
- }
-
- public Iterator find(Map criteria) {
- if (criteria.containsKey("type")) {
- List list = new ArrayList(1);
- try {
- list.add(getTemplate((ITypeDescriptor) criteria.get("type")));
- } catch (StoreException ex) {
- // ignore
- }
- return list.iterator();
- }
- return new ArrayList(0).iterator();
- }
-
- public IClusterConfig load(String id) throws StoreException {
- JcrNodeModel nodeModel = new JcrNodeModel(id);
- if (nodeModel.getNode() == null) {
- throw new StoreException("Unknown template " + id);
- }
- return new JcrClusterConfig(nodeModel);
- }
-
- public String save(IClusterConfig cluster) throws StoreException {
- if (cluster instanceof JcrClusterConfig) {
- try {
- Node node = ((JcrClusterConfig) cluster).getNodeModel().getNode();
- node.save();
- return node.getPath();
- } catch (RepositoryException ex) {
- throw new StoreException(ex);
- }
- } else {
- String type = cluster.getString("type");
- if (type == null) {
- throw new StoreException("Can only store clusters with a type");
- }
- try {
- Node node = getTemplateNode(typeLocator.locate(type), true);
-
- JcrClusterConfig jcrConfig = new JcrClusterConfig(new JcrNodeModel(node));
- for (Map.Entry entry : cluster.entrySet()) {
- jcrConfig.put(entry.getKey(), entry.getValue());
- }
-
- for (IPluginConfig plugin : cluster.getPlugins()) {
- Node child = node.addNode(plugin.getName(), FrontendNodeType.NT_PLUGIN);
- JcrPluginConfig pluginConfig = new JcrPluginConfig(new JcrNodeModel(child));
- for (Map.Entry entry : plugin.entrySet()) {
- pluginConfig.put(entry.getKey(), entry.getValue());
- }
- }
-
- node.setProperty(FrontendNodeType.FRONTEND_SERVICES, getValues(cluster.getServices()));
- node.setProperty(FrontendNodeType.FRONTEND_REFERENCES, getValues(cluster.getReferences()));
- node.setProperty(FrontendNodeType.FRONTEND_PROPERTIES, getValues(cluster.getProperties()));
-
- node.save();
- return node.getPath();
- } catch (RepositoryException ex) {
- throw new StoreException(ex);
- }
- }
- }
-
- public void delete(IClusterConfig object) {
- }
-
- /**
- * Retrieve the node that contains the template cluster. Throws an exception when no such
- * node can be found.
- */
- protected Node getTemplateNode(ITypeDescriptor type, boolean create) throws RepositoryException, StoreException {
- javax.jcr.Session session = ((UserSession) Session.get()).getJcrSession();
-
- String typeName = type.getName();
- String prefix;
- String subType;
- if (typeName.indexOf(':') > 0) {
- prefix = typeName.substring(0, typeName.indexOf(':'));
- subType = typeName.substring(typeName.indexOf(':') + 1);
- } else {
- prefix = "system";
- subType = typeName;
- }
- String path = new JcrNamespace(session, prefix).getPath() + "/" + subType;
- if (!session.itemExists(path)) {
- throw new StoreException("No template type node exists");
- }
- Node typeNode = (Node) session.getItem(path);
-
- boolean save = false;
- try {
- Node templateSetNode;
- if (!typeNode.isNodeType(EditorNodeType.NT_EDITABLE)) {
- if (create) {
- typeNode.addMixin(EditorNodeType.NT_EDITABLE);
- templateSetNode = typeNode.addNode(EditorNodeType.EDITOR_TEMPLATES, EditorNodeType.NT_TEMPLATESET);
- save = true;
- } else {
- throw new StoreException("Type " + type + " is not editable");
- }
- } else {
- templateSetNode = typeNode.getNode(EditorNodeType.EDITOR_TEMPLATES);
- }
-
- // use the first available template
- Node templateNode = null;
- NodeIterator nodes = templateSetNode.getNodes();
- while (nodes.hasNext()) {
- Node template = nodes.nextNode();
- if (template != null && template.isNodeType(FrontendNodeType.NT_PLUGINCLUSTER)) {
- templateNode = template;
- break;
- }
- }
- if (templateNode == null) {
- if (create) {
- templateNode = templateSetNode.addNode("_default_", FrontendNodeType.NT_PLUGINCLUSTER);
- save = true;
- } else {
- throw new StoreException("No template found for " + type);
- }
- }
- return templateNode;
- } finally {
- if (save) {
- typeNode.save();
- }
- }
- }
-
- protected IClusterConfig getTemplate(ITypeDescriptor type) throws StoreException {
- try {
- Node node = getTemplateNode(type, false);
- return new JcrClusterConfig(new JcrNodeModel(node));
- } catch (RepositoryException ex) {
- log.error("Error while fetching template for type: " + type, ex);
- }
- return null;
- }
-
- public void detach() {
- if (typeLocator instanceof IDetachable) {
- ((IDetachable) typeLocator).detach();
- }
- }
-
- private Value[] getValues(List list) throws RepositoryException {
- Value[] values = new Value[list.size()];
- int i = 0;
- for (String override : list) {
- values[i++] = ((UserSession) org.apache.wicket.Session.get()).getJcrSession().getValueFactory()
- .createValue(override);
- }
- return values;
- }
-
-}
Modified: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/impl/TemplateEngine.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/impl/TemplateEngine.java 2009-12-01 13:44:45 UTC (rev 20957)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/impl/TemplateEngine.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -15,7 +15,6 @@
*/
package org.hippoecm.frontend.editor.impl;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -25,16 +24,15 @@
import org.apache.wicket.model.IDetachable;
import org.apache.wicket.model.IModel;
import org.apache.wicket.util.collections.MiniMap;
-import org.hippoecm.editor.tools.JcrPrototypeStore;
-import org.hippoecm.editor.tools.JcrTypeLocator;
+import org.hippoecm.editor.prototype.IPrototypeStore;
+import org.hippoecm.editor.template.ITemplateLocator;
import org.hippoecm.frontend.editor.ITemplateEngine;
import org.hippoecm.frontend.editor.TemplateEngineException;
import org.hippoecm.frontend.model.JcrNodeModel;
-import org.hippoecm.frontend.model.ocm.IStore;
import org.hippoecm.frontend.model.ocm.StoreException;
-import org.hippoecm.frontend.plugin.IPluginContext;
import org.hippoecm.frontend.plugin.config.IClusterConfig;
import org.hippoecm.frontend.types.ITypeDescriptor;
+import org.hippoecm.frontend.types.ITypeLocator;
import org.hippoecm.repository.api.HippoNodeType;
import org.hippoecm.repository.api.NodeNameCodec;
import org.slf4j.Logger;
@@ -48,23 +46,21 @@
static Logger log = LoggerFactory.getLogger(TemplateEngine.class);
- private JcrTypeLocator typeStore;
- private JcrTemplateStore jcrTemplateStore;
- private IStore builtinTemplateStore;
- private JcrPrototypeStore prototypeStore;
+ private ITypeLocator typeLocator;
+ private ITemplateLocator templateLocator;
+ private IPrototypeStore prototypeStore;
private EditableTypes editableTypes;
- public TemplateEngine(IPluginContext context) {
- typeStore = new JcrTypeLocator();
-
- this.jcrTemplateStore = new JcrTemplateStore(typeStore);
- this.builtinTemplateStore = new BuiltinTemplateStore(typeStore);
- this.prototypeStore = new JcrPrototypeStore();
+ public TemplateEngine(ITypeLocator typeLocator, IPrototypeStore prototypeStore,
+ ITemplateLocator templateLocator) {
+ this.typeLocator = typeLocator;
+ this.prototypeStore = prototypeStore;
+ this.templateLocator = templateLocator;
}
public ITypeDescriptor getType(String type) throws TemplateEngineException {
try {
- return typeStore.locate(type);
+ return typeLocator.locate(type);
} catch (StoreException ex) {
throw new TemplateEngineException("Unable to load type", ex);
}
@@ -108,19 +104,11 @@
Map criteria = new MiniMap(2);
criteria.put("type", type);
criteria.put("mode", mode);
- Iterator iter = jcrTemplateStore.find(criteria);
- if (iter.hasNext()) {
- return iter.next();
- }
try {
- iter = builtinTemplateStore.find(criteria);
- if (iter.hasNext()) {
- return iter.next();
- }
+ return templateLocator.getTemplate(criteria);
} catch (StoreException e) {
throw new TemplateEngineException("Error locating template", e);
}
- throw new TemplateEngineException("No template found");
}
public IModel getPrototype(ITypeDescriptor type) {
@@ -135,9 +123,15 @@
}
public void detach() {
- jcrTemplateStore.detach();
- prototypeStore.detach();
- typeStore.detach();
+ if (templateLocator instanceof IDetachable) {
+ ((IDetachable) templateLocator).detach();
+ }
+ if (prototypeStore instanceof IDetachable) {
+ ((IDetachable) prototypeStore).detach();
+ }
+ if (typeLocator instanceof IDetachable) {
+ ((IDetachable) typeLocator).detach();
+ }
editableTypes = null;
}
Modified: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/impl/TemplateEngineFactory.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/impl/TemplateEngineFactory.java 2009-12-01 13:44:45 UTC (rev 20957)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/impl/TemplateEngineFactory.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -19,9 +19,20 @@
import java.util.Map;
import org.apache.wicket.model.IDetachable;
+import org.hippoecm.editor.prototype.IPrototypeStore;
+import org.hippoecm.editor.prototype.JcrPrototypeStore;
+import org.hippoecm.editor.template.BuiltinTemplateStore;
+import org.hippoecm.editor.template.ITemplateLocator;
+import org.hippoecm.editor.template.ITemplateStore;
+import org.hippoecm.editor.template.JcrTemplateStore;
+import org.hippoecm.editor.template.TemplateLocator;
+import org.hippoecm.editor.type.JcrDraftLocator;
+import org.hippoecm.editor.type.JcrTypeLocator;
import org.hippoecm.frontend.editor.ITemplateEngine;
+import org.hippoecm.frontend.model.ocm.IStore;
import org.hippoecm.frontend.plugin.IPluginContext;
import org.hippoecm.frontend.plugin.IServiceFactory;
+import org.hippoecm.frontend.types.ITypeLocator;
public class TemplateEngineFactory implements IServiceFactory, IDetachable {
@SuppressWarnings("unused")
@@ -30,10 +41,27 @@
private static final long serialVersionUID = 1L;
private Map engines = new HashMap();
-
+
+ private ITypeLocator typeLocator;
+ private ITemplateLocator templateLocator;
+ private IPrototypeStore prototypeStore;
+
+ public TemplateEngineFactory(String prefix) {
+ if (prefix == null) {
+ typeLocator = new JcrTypeLocator();
+ } else {
+ typeLocator = new JcrDraftLocator(prefix);
+ }
+ ITemplateStore jcrTemplateStore = new JcrTemplateStore(typeLocator);
+ ITemplateStore builtinTemplateStore = new BuiltinTemplateStore(typeLocator);
+ templateLocator = new TemplateLocator(new IStore[] { jcrTemplateStore, builtinTemplateStore });
+
+ prototypeStore = new JcrPrototypeStore();
+ }
+
public ITemplateEngine getService(IPluginContext context) {
if (!engines.containsKey(context)) {
- engines.put(context, new TemplateEngine(context));
+ engines.put(context, new TemplateEngine(typeLocator, prototypeStore, templateLocator));
}
return engines.get(context);
}
Modified: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/validator/JcrValidationService.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/validator/JcrValidationService.java 2009-12-01 13:44:45 UTC (rev 20957)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/validator/JcrValidationService.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -22,7 +22,7 @@
import javax.jcr.RepositoryException;
import org.apache.wicket.model.IModel;
-import org.hippoecm.editor.tools.JcrTypeLocator;
+import org.hippoecm.editor.type.JcrTypeLocator;
import org.hippoecm.frontend.model.IModelReference;
import org.hippoecm.frontend.model.ocm.StoreException;
import org.hippoecm.frontend.plugin.IPluginContext;
Modified: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/viewer/ViewerPlugin.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/viewer/ViewerPlugin.java 2009-12-01 13:44:45 UTC (rev 20957)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/viewer/ViewerPlugin.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -47,7 +47,7 @@
public ViewerPlugin(IPluginContext context, IPluginConfig properties) {
super(context, properties);
- TemplateEngineFactory factory = new TemplateEngineFactory();
+ TemplateEngineFactory factory = new TemplateEngineFactory(null);
engine = factory.getService(context);
context.registerService(factory, ITemplateEngine.class.getName());
engineId = context.getReference(factory).getServiceId();
Modified: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/workflow/RemodelWorkflowPlugin.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/workflow/RemodelWorkflowPlugin.java 2009-12-01 13:44:45 UTC (rev 20957)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/workflow/RemodelWorkflowPlugin.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -32,8 +32,8 @@
import org.hippoecm.addon.workflow.CompatibilityWorkflowPlugin;
import org.hippoecm.addon.workflow.StdWorkflow;
import org.hippoecm.addon.workflow.WorkflowDescriptorModel;
+import org.hippoecm.editor.cnd.CndSerializer;
import org.hippoecm.editor.repository.NamespaceWorkflow;
-import org.hippoecm.editor.tools.CndSerializer;
import org.hippoecm.frontend.dialog.IDialogService.Dialog;
import org.hippoecm.frontend.editor.layout.ILayoutProvider;
import org.hippoecm.frontend.editor.workflow.action.NewCompoundTypeAction;
Modified: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/workflow/action/NewCompoundTypeAction.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/workflow/action/NewCompoundTypeAction.java 2009-12-01 13:44:45 UTC (rev 20957)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/workflow/action/NewCompoundTypeAction.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -20,9 +20,9 @@
import org.hippoecm.addon.workflow.StdWorkflow;
import org.hippoecm.editor.NamespaceValidator;
import org.hippoecm.editor.repository.NamespaceWorkflow;
-import org.hippoecm.editor.tools.JcrTypeLocator;
+import org.hippoecm.editor.template.JcrTemplateStore;
+import org.hippoecm.editor.type.JcrDraftLocator;
import org.hippoecm.frontend.dialog.IDialogService.Dialog;
-import org.hippoecm.frontend.editor.impl.JcrTemplateStore;
import org.hippoecm.frontend.editor.layout.ILayoutProvider;
import org.hippoecm.frontend.editor.workflow.RemodelWorkflowPlugin;
import org.hippoecm.frontend.editor.workflow.TemplateFactory;
@@ -67,7 +67,7 @@
// create layout
// FIXME: should be managed by template engine
- JcrTemplateStore templateStore = new JcrTemplateStore(new JcrTypeLocator());
+ JcrTemplateStore templateStore = new JcrTemplateStore(new JcrDraftLocator(prefix));
IClusterConfig template = new TemplateFactory().createTemplate(layoutProvider.getDescriptor(layout));
template.put("type", prefix + ":" + name);
templateStore.save(template);
Modified: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/workflow/action/NewDocumentTypeAction.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/workflow/action/NewDocumentTypeAction.java 2009-12-01 13:44:45 UTC (rev 20957)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/workflow/action/NewDocumentTypeAction.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -25,16 +25,20 @@
import org.hippoecm.addon.workflow.StdWorkflow;
import org.hippoecm.editor.NamespaceValidator;
import org.hippoecm.editor.repository.NamespaceWorkflow;
-import org.hippoecm.editor.tools.JcrTypeLocator;
-import org.hippoecm.editor.tools.JcrTypeStore;
+import org.hippoecm.editor.template.JcrTemplateStore;
+import org.hippoecm.editor.type.JcrDraftStore;
+import org.hippoecm.editor.type.JcrTypeStore;
import org.hippoecm.frontend.dialog.IDialogService.Dialog;
-import org.hippoecm.frontend.editor.impl.JcrTemplateStore;
import org.hippoecm.frontend.editor.layout.ILayoutProvider;
import org.hippoecm.frontend.editor.workflow.RemodelWorkflowPlugin;
import org.hippoecm.frontend.editor.workflow.TemplateFactory;
import org.hippoecm.frontend.editor.workflow.dialog.CreateDocumentTypeDialog;
+import org.hippoecm.frontend.model.ocm.IStore;
import org.hippoecm.frontend.plugin.config.IClusterConfig;
+import org.hippoecm.frontend.types.BuiltinTypeStore;
import org.hippoecm.frontend.types.ITypeDescriptor;
+import org.hippoecm.frontend.types.ITypeLocator;
+import org.hippoecm.frontend.types.TypeLocator;
import org.hippoecm.repository.api.Workflow;
public class NewDocumentTypeAction extends Action {
@@ -78,7 +82,13 @@
String prefix = (String) workflow.hints().get("prefix");
JcrTypeStore typeStore = new JcrTypeStore();
- ITypeDescriptor typeDescriptor = typeStore.getTypeDescriptor(prefix + ":" + name);
+ JcrDraftStore draftStore = new JcrDraftStore(typeStore, prefix);
+ BuiltinTypeStore builtinStore = new BuiltinTypeStore();
+ ITypeLocator typeLocator = new TypeLocator(new IStore[] {draftStore, typeStore, builtinStore});
+ typeStore.setTypeLocator(typeLocator);
+ builtinStore.setTypeLocator(typeLocator);
+
+ ITypeDescriptor typeDescriptor = typeStore.getDraftType(prefix + ":" + name);
List types = typeDescriptor.getSuperTypes();
for (String mixin : mixins) {
types.add(mixin);
@@ -88,7 +98,7 @@
// create layout
// FIXME: should be managed by template engine
- JcrTemplateStore templateStore = new JcrTemplateStore(new JcrTypeLocator());
+ JcrTemplateStore templateStore = new JcrTemplateStore(typeLocator);
IClusterConfig template = new TemplateFactory().createTemplate(layoutProvider.getDescriptor(layout));
template.put("type", prefix + ":" + name);
templateStore.save(template);
Modified: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/workflow/dialog/CreateDocumentTypeDialog.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/workflow/dialog/CreateDocumentTypeDialog.java 2009-12-01 13:44:45 UTC (rev 20957)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/workflow/dialog/CreateDocumentTypeDialog.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -30,8 +30,8 @@
import org.apache.wicket.model.ResourceModel;
import org.apache.wicket.model.StringResourceModel;
import org.hippoecm.editor.NamespaceValidator;
-import org.hippoecm.editor.tools.JcrTypeLocator;
-import org.hippoecm.frontend.editor.impl.JcrTemplateStore;
+import org.hippoecm.editor.template.JcrTemplateStore;
+import org.hippoecm.editor.type.JcrTypeLocator;
import org.hippoecm.frontend.editor.layout.ILayoutProvider;
import org.hippoecm.frontend.editor.workflow.action.NewDocumentTypeAction;
import org.hippoecm.frontend.i18n.types.TypeTranslator;
@@ -59,7 +59,7 @@
JcrTemplateStore templateStore = new JcrTemplateStore(new JcrTypeLocator());
- cg.add(new DataView("mixins", new ListDataProvider(templateStore.getAvailableMixins())) {
+ cg.add(new DataView("mixins", new ListDataProvider(templateStore.getMetadataEditors())) {
private static final long serialVersionUID = 1L;
@Override
Modified: hippo-ecm/trunk/addon/editor/test/src/test/java/org/hippoecm/frontend/editor/builder/TemplateBuilderTest.java
===================================================================
--- hippo-ecm/trunk/addon/editor/test/src/test/java/org/hippoecm/frontend/editor/builder/TemplateBuilderTest.java 2009-12-01 13:44:45 UTC (rev 20957)
+++ hippo-ecm/trunk/addon/editor/test/src/test/java/org/hippoecm/frontend/editor/builder/TemplateBuilderTest.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -28,7 +28,7 @@
import javax.jcr.Node;
import org.apache.wicket.model.IModel;
-import org.hippoecm.editor.tools.JcrTypeStore;
+import org.hippoecm.editor.type.JcrTypeStore;
import org.hippoecm.frontend.PluginTest;
import org.hippoecm.frontend.editor.ITemplateEngine;
import org.hippoecm.frontend.editor.impl.TemplateEngineFactory;
@@ -88,7 +88,7 @@
* verify that a plugin is added to the cluster when a field is added to the type
*/
public void testAddField() throws Exception {
- TemplateBuilder builder = new TemplateBuilder("test:test", false, context, new ExtPtModel());
+ TemplateBuilder builder = new TemplateBuilder("test:edited", false, context, new ExtPtModel());
final List added = new LinkedList();
final List removed = new LinkedList();
@@ -138,7 +138,7 @@
* verify that a field is removed from the type when a plugin is removed from the cluster
*/
public void testRemovePlugin() throws Exception {
- TemplateBuilder builder = new TemplateBuilder("test:test", false, context, new ExtPtModel());
+ TemplateBuilder builder = new TemplateBuilder("test:edited", false, context, new ExtPtModel());
// initialize type descriptor and template
final ITypeDescriptor type = builder.getTypeDescriptor();
@@ -187,7 +187,7 @@
@Test
public void testAddRemoveCycle() throws Exception {
- TemplateBuilder builder = new TemplateBuilder("test:test", false, context, new ExtPtModel());
+ TemplateBuilder builder = new TemplateBuilder("test:edited", false, context, new ExtPtModel());
// initialize type descriptor and template
final ITypeDescriptor type = builder.getTypeDescriptor();
@@ -216,7 +216,7 @@
@Test
public void testChangePath() throws Exception {
- TemplateBuilder builder = new TemplateBuilder("test:test", false, context, new ExtPtModel());
+ TemplateBuilder builder = new TemplateBuilder("test:edited", false, context, new ExtPtModel());
// initialize type descriptor and template
ITypeDescriptor type = builder.getTypeDescriptor();
@@ -282,7 +282,7 @@
@Test
public void testSetPathOnSubTypePreservesFieldName() throws Exception {
- TemplateBuilder builder = new TemplateBuilder("test:test", false, context, new ExtPtModel());
+ TemplateBuilder builder = new TemplateBuilder("test:edited", false, context, new ExtPtModel());
// initialize type descriptor and template
ITypeDescriptor type = builder.getTypeDescriptor();
@@ -307,17 +307,17 @@
context.registerService(yuiWebApp, "service.behavior.yui");
home.add(new PageLayoutPlugin(context, new JavaPluginConfig()));
- Node templateTypeNode = session.getRootNode().getNode("hippo:namespaces/test/test");
+ Node templateTypeNode = session.getRootNode().getNode("hippo:namespaces/test/edited");
JcrNodeModel nodeModel = new JcrNodeModel(templateTypeNode);
ModelReference modelRef = new ModelReference("service.model", nodeModel);
modelRef.init(context);
- TemplateEngineFactory factory = new TemplateEngineFactory();
+ TemplateEngineFactory factory = new TemplateEngineFactory(null);
context.registerService(factory, "service.engine");
ITemplateEngine engine = context.getService("service.engine", ITemplateEngine.class);
ITypeDescriptor type = engine.getType(nodeModel);
- IClusterConfig template = engine.getTemplate(type, "view");
+ IClusterConfig template = engine.getTemplate(type, "edit");
JavaPluginConfig parameters = new JavaPluginConfig();
parameters.put("wicket.id", "service.root");
parameters.put("wicket.model", "service.model");
@@ -344,17 +344,17 @@
context.registerService(yuiWebApp, "service.behavior.yui");
home.add(new PageLayoutPlugin(context, new JavaPluginConfig()));
- Node templateTypeNode = session.getRootNode().getNode("hippo:namespaces/test/test");
+ Node templateTypeNode = session.getRootNode().getNode("hippo:namespaces/test/edited");
JcrNodeModel nodeModel = new JcrNodeModel(templateTypeNode);
ModelReference modelRef = new ModelReference("service.model", nodeModel);
modelRef.init(context);
- TemplateEngineFactory factory = new TemplateEngineFactory();
+ TemplateEngineFactory factory = new TemplateEngineFactory(null);
context.registerService(factory, "service.engine");
ITemplateEngine engine = context.getService("service.engine", ITemplateEngine.class);
ITypeDescriptor type = engine.getType(nodeModel);
- IClusterConfig template = engine.getTemplate(type, "view");
+ IClusterConfig template = engine.getTemplate(type, "edit");
JavaPluginConfig parameters = new JavaPluginConfig();
parameters.put("wicket.id", "service.root");
parameters.put("wicket.model", "service.model");
Modified: hippo-ecm/trunk/addon/editor/test/src/test/java/org/hippoecm/frontend/editor/impl/JcrTemplateStoreTest.java
===================================================================
--- hippo-ecm/trunk/addon/editor/test/src/test/java/org/hippoecm/frontend/editor/impl/JcrTemplateStoreTest.java 2009-12-01 13:44:45 UTC (rev 20957)
+++ hippo-ecm/trunk/addon/editor/test/src/test/java/org/hippoecm/frontend/editor/impl/JcrTemplateStoreTest.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -22,7 +22,8 @@
import java.util.Map;
import org.apache.wicket.util.collections.MiniMap;
-import org.hippoecm.editor.tools.JcrTypeLocator;
+import org.hippoecm.editor.template.JcrTemplateStore;
+import org.hippoecm.editor.type.JcrTypeLocator;
import org.hippoecm.frontend.PluginTest;
import org.hippoecm.frontend.model.ocm.IStore;
import org.hippoecm.frontend.plugin.config.IClusterConfig;
Modified: hippo-ecm/trunk/addon/editor/test/src/test/java/org/hippoecm/frontend/editor/tools/JcrTypeDescriptorTest.java
===================================================================
--- hippo-ecm/trunk/addon/editor/test/src/test/java/org/hippoecm/frontend/editor/tools/JcrTypeDescriptorTest.java 2009-12-01 13:44:45 UTC (rev 20957)
+++ hippo-ecm/trunk/addon/editor/test/src/test/java/org/hippoecm/frontend/editor/tools/JcrTypeDescriptorTest.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -24,8 +24,8 @@
import java.io.ObjectOutputStream;
import java.util.Map;
-import org.hippoecm.editor.tools.JcrTypeDescriptor;
-import org.hippoecm.editor.tools.JcrTypeStore;
+import org.hippoecm.editor.type.JcrTypeDescriptor;
+import org.hippoecm.editor.type.JcrTypeStore;
import org.hippoecm.frontend.PluginTest;
import org.hippoecm.frontend.types.IFieldDescriptor;
import org.hippoecm.frontend.types.ITypeDescriptor;
Modified: hippo-ecm/trunk/addon/editor/test/src/test/java/org/hippoecm/frontend/editor/validator/ValidationPluginTest.java
===================================================================
--- hippo-ecm/trunk/addon/editor/test/src/test/java/org/hippoecm/frontend/editor/validator/ValidationPluginTest.java 2009-12-01 13:44:45 UTC (rev 20957)
+++ hippo-ecm/trunk/addon/editor/test/src/test/java/org/hippoecm/frontend/editor/validator/ValidationPluginTest.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -24,8 +24,8 @@
import javax.jcr.Node;
-import org.hippoecm.editor.tools.JcrTypeDescriptor;
-import org.hippoecm.editor.tools.JcrTypeLocator;
+import org.hippoecm.editor.type.JcrTypeDescriptor;
+import org.hippoecm.editor.type.JcrTypeLocator;
import org.hippoecm.frontend.PluginTest;
import org.hippoecm.frontend.model.JcrNodeModel;
import org.hippoecm.frontend.model.ModelReference;
Modified: hippo-ecm/trunk/addon/editor/test/src/test/java/org/hippoecm/frontend/editor/workflow/RemodelWorkflowPluginTest.java
===================================================================
--- hippo-ecm/trunk/addon/editor/test/src/test/java/org/hippoecm/frontend/editor/workflow/RemodelWorkflowPluginTest.java 2009-12-01 13:44:45 UTC (rev 20957)
+++ hippo-ecm/trunk/addon/editor/test/src/test/java/org/hippoecm/frontend/editor/workflow/RemodelWorkflowPluginTest.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -40,6 +40,7 @@
import org.hippoecm.repository.api.HippoWorkspace;
import org.hippoecm.repository.api.WorkflowDescriptor;
import org.hippoecm.repository.api.WorkflowManager;
+import org.hippoecm.repository.util.Utilities;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -99,6 +100,7 @@
nsWfl.createNamespace("testns", "http://example.org/test/0.0");
Node documentNode = session.getRootNode().getNode("hippo:namespaces/testns");
+ Utilities.dump(documentNode);
String category = "test";
WorkflowDescriptor descriptor = wflMgr.getWorkflowDescriptor(category, documentNode);
WorkflowDescriptorModel pluginModel = new WorkflowDescriptorModel(descriptor, category, documentNode);
Modified: hippo-ecm/trunk/addon/editor/test/src/test/java/org/hippoecm/frontend/types/CndSerializationTest.java
===================================================================
--- hippo-ecm/trunk/addon/editor/test/src/test/java/org/hippoecm/frontend/types/CndSerializationTest.java 2009-12-01 13:44:45 UTC (rev 20957)
+++ hippo-ecm/trunk/addon/editor/test/src/test/java/org/hippoecm/frontend/types/CndSerializationTest.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -30,7 +30,7 @@
import org.apache.jackrabbit.spi.Name;
import org.apache.jackrabbit.spi.commons.namespace.NamespaceMapping;
import org.apache.wicket.Session;
-import org.hippoecm.editor.tools.CndSerializer;
+import org.hippoecm.editor.cnd.CndSerializer;
import org.hippoecm.frontend.PluginTest;
import org.hippoecm.frontend.model.JcrSessionModel;
import org.hippoecm.frontend.session.UserSession;
Modified: hippo-ecm/trunk/addon/editor/test/src/test/java/org/hippoecm/frontend/types/TypeStoreTest.java
===================================================================
--- hippo-ecm/trunk/addon/editor/test/src/test/java/org/hippoecm/frontend/types/TypeStoreTest.java 2009-12-01 13:44:45 UTC (rev 20957)
+++ hippo-ecm/trunk/addon/editor/test/src/test/java/org/hippoecm/frontend/types/TypeStoreTest.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -24,7 +24,7 @@
import java.util.Map;
import java.util.Set;
-import org.hippoecm.editor.tools.JcrTypeStore;
+import org.hippoecm.editor.type.JcrTypeStore;
import org.hippoecm.frontend.PluginTest;
import org.hippoecm.frontend.model.ocm.IStore;
import org.junit.Test;
@@ -58,10 +58,10 @@
Map fields = type.getFields();
assertEquals(2, fields.size());
- assertTrue(fields.keySet().contains("test:title"));
- assertTrue(fields.keySet().contains("test:child"));
+ assertTrue(fields.keySet().contains("title"));
+ assertTrue(fields.keySet().contains("child"));
- IFieldDescriptor title = fields.get("test:title");
+ IFieldDescriptor title = fields.get("title");
assertEquals("String", title.getTypeDescriptor().getName());
assertEquals("test:title", title.getPath());
}
@@ -82,7 +82,7 @@
jcrTypeStore.save(builtinType);
- ITypeDescriptor type = jcrTypeStore.load("test:test2");
+ ITypeDescriptor type = jcrTypeStore.getDraftType("test:test2");
assertEquals("test:test2", type.getName());
Map fields = type.getFields();
@@ -151,4 +151,27 @@
assertTrue(fields.keySet().contains("title"));
assertTrue(fields.keySet().contains("child"));
}
+
+ @Test
+ public void testFetchDraft() throws Exception {
+ JcrTypeStore typeStore = new JcrTypeStore();
+ ITypeDescriptor type = typeStore.getDraftType("test:edited");
+ assertEquals("test:edited", type.getName());
+
+ Map fields = type.getFields();
+ assertEquals(2, fields.size());
+ assertTrue(fields.keySet().contains("title"));
+ assertTrue(fields.keySet().contains("child"));
+
+ IFieldDescriptor title = fields.get("title");
+ assertEquals("String", title.getTypeDescriptor().getName());
+ assertEquals("test:title", title.getPath());
+
+ // current type should be the builtin descriptor
+ type = typeStore.getTypeLocator().locate("test:edited");
+ fields = type.getFields();
+ assertEquals(1, fields.size());
+ assertTrue(fields.keySet().contains("title"));
+ }
+
}
Modified: hippo-ecm/trunk/addon/editor/test/src/test/resources/org/hippoecm/repository/test-namespace.xml
===================================================================
--- hippo-ecm/trunk/addon/editor/test/src/test/resources/org/hippoecm/repository/test-namespace.xml 2009-12-01 13:44:45 UTC (rev 20957)
+++ hippo-ecm/trunk/addon/editor/test/src/test/resources/org/hippoecm/repository/test-namespace.xml 2009-12-01 13:55:13 UTC (rev 20958)
@@ -737,5 +737,205 @@
+
+
+
+ hipposysedit:templatetype
+
+
+ mix:referenceable
+ editor:editable
+
+
+
+ hippo:handle
+
+
+ hippo:hardhandle
+
+
+
+ hipposysedit:nodetype
+
+
+
+ hipposysedit:field
+
+
+ test:title
+
+
+ String
+
+
+
+
+ hipposysedit:field
+
+
+ test:child
+
+
+ nt:unstructured
+
+
+
+
+
+
+ editor:templateset
+
+
+
+ frontend:plugincluster
+
+
+ mode
+
+
+ engine
+ wicket.model
+
+
+ wicket.id
+
+
+
+ frontend:plugin
+
+
+ ${cluster.id}.field
+
+
+ org.hippoecm.frontend.service.render.ListViewPlugin
+
+
+ ${wicket.id}
+
+
+
+
+ frontend:plugin
+
+
+ ${engine}
+
+
+ title
+
+
+ Title
+
+
+ ${mode}
+
+
+ org.hippoecm.frontend.editor.plugins.field.PropertyFieldPlugin
+
+
+ hippo-template-default-title
+
+
+ ${cluster.id}.field
+
+
+ ${wicket.model}
+
+
+ ${cluster.id}.translator
+
+
+
+
+ frontend:plugin
+
+
+ ${engine}
+
+
+ child
+
+
+ Child
+
+
+ ${mode}
+
+
+ org.hippoecm.frontend.editor.plugins.field.NodeFieldPlugin
+
+
+ hippo-template-default-title
+
+
+ ${cluster.id}.field
+
+
+ ${wicket.model}
+
+
+ ${cluster.id}.translator
+
+
+
+
+
+
+ hipposysedit:prototypeset
+
+
+
+ test:edited
+
+
+ title
+
+
+
+
+
+
+
+
+ hipposysedit:templatetype
+
+
+ mix:referenceable
+
+
+
+ hippo:handle
+
+
+ hippo:hardhandle
+
+
+
+ hipposysedit:nodetype
+
+
+ hipposysedit:remodel
+
+
+ http://www.hippoecm.org/editor/test/nt/0.1
+
+
+ test:edited
+
+
+
+ hipposysedit:field
+
+
+ test:extra
+
+
+ String
+
+
+
+
+
+
Modified: hippo-ecm/trunk/addon/editor/test/src/test/resources/org/hippoecm/repository/test.cnd
===================================================================
--- hippo-ecm/trunk/addon/editor/test/src/test/resources/org/hippoecm/repository/test.cnd 2009-12-01 13:44:45 UTC (rev 20957)
+++ hippo-ecm/trunk/addon/editor/test/src/test/resources/org/hippoecm/repository/test.cnd 2009-12-01 13:55:13 UTC (rev 20958)
@@ -66,5 +66,9 @@
+ test:uncascaded (test:uncascaded)
+ * (test:validator)
+[test:edited]
+- test:title (string)
+[test:inheritingfromedited] > test:edited
+- test:extra (string)
Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/types/BuiltinTypeDescriptor.java
===================================================================
--- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/types/BuiltinTypeDescriptor.java 2009-12-01 13:44:45 UTC (rev 20957)
+++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/types/BuiltinTypeDescriptor.java 2009-12-01 13:55:13 UTC (rev 20958)
@@ -134,12 +134,12 @@
protected void addDefinition(String prefix, ItemDefinition definition) throws StoreException {
BuiltinFieldDescriptor field = new BuiltinFieldDescriptor(prefix, definition, locator);
if (definition.getDeclaringNodeType().equals(nt)) {
- declaredFields.put(definition.getName(), field);
+ declaredFields.put(field.getName(), field);
}
if ("nt:base".equals(definition.getDeclaringNodeType().getName())) {
return;
}
- fields.put(definition.getName(), field);
+ fields.put(field.getName(), field);
String primaryItemName = definition.getDeclaringNodeType().getPrimaryItemName();
if (primaryItemName != null && primaryItemName.equals(definition.getName())) {
field.setPrimary(true);
From helpdesk at onehippo.com Tue Dec 1 15:10:15 2009
From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt))
Date: Tue Dec 1 15:20:48 2009
Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-3484) All optional
fields should be present from the start
In-Reply-To: <28746945.219481259576715775.JavaMail.jira@jira.vm.castaserver.com>
Message-ID: <14035939.229571259676615771.JavaMail.jira@jira.vm.castaserver.com>
[ http://issues.onehippo.com/browse/HREPTWO-3484?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Frank van Lankvelt resolved HREPTWO-3484.
-----------------------------------------
Resolution: Fixed
> All optional fields should be present from the start
> ----------------------------------------------------
>
> Key: HREPTWO-3484
> URL: http://issues.onehippo.com/browse/HREPTWO-3484
> Project: Hippo Repository 2
> Issue Type: Bug
> Reporter: Stephan Westen
> Assignee: Frank van Lankvelt
> Priority: Top
> Fix For: r2.10.00
>
>
> The current change in interaction - where users can add an optional field - is conceptually the right way to go but should be part of a bigger effort.
> 2.10 should behave the same way as 2.09
> Please inform Rolf of the changes. Rolf will work on interaction design changes for 2.11
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
From helpdesk at onehippo.com Tue Dec 1 15:12:15 2009
From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt))
Date: Tue Dec 1 15:22:47 2009
Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-3485) Update template
engine to deal with new virtual URI format
In-Reply-To: <5633577.220441259580855756.JavaMail.jira@jira.vm.castaserver.com>
Message-ID: <22653695.229611259676735848.JavaMail.jira@jira.vm.castaserver.com>
[ http://issues.onehippo.com/browse/HREPTWO-3485?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Frank van Lankvelt updated HREPTWO-3485:
----------------------------------------
Description:
The new concept of a namespace version that is not actually registered as a namespace must be handled by the template engine.
This is only necessary for the hippo and hipposys namespaces
was:
The new concept of a namespace version that is not actually registered as a namespace must be handled by the template engine.
> Update template engine to deal with new virtual URI format
> ----------------------------------------------------------
>
> Key: HREPTWO-3485
> URL: http://issues.onehippo.com/browse/HREPTWO-3485
> Project: Hippo Repository 2
> Issue Type: Bug
> Reporter: Frank van Lankvelt
> Assignee: Frank van Lankvelt
> Priority: Blocker
> Fix For: r2.10.00
>
> Original Estimate: 3 days
> Remaining Estimate: 3 days
>
> The new concept of a namespace version that is not actually registered as a namespace must be handled by the template engine.
> This is only necessary for the hippo and hipposys namespaces
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
From helpdesk at onehippo.com Tue Dec 1 15:22:18 2009
From: helpdesk at onehippo.com (JIRA (Bart van der Schans))
Date: Tue Dec 1 15:36:42 2009
Subject: [HippoRepos-dev] [JIRA] Commented: (HREPTWO-3471) Error reporting
concerning backing database
In-Reply-To: <20206653.208351259246235741.JavaMail.jira@jira.vm.castaserver.com>
Message-ID: <5911018.229751259677338929.JavaMail.jira@jira.vm.castaserver.com>
[ http://issues.onehippo.com/browse/HREPTWO-3471?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=76033#action_76033 ]
Bart van der Schans commented on HREPTWO-3471:
----------------------------------------------
The default is max_allowed_packet site is 1M which usually is too small. Some JR based products recommand the following settings in their install manuals:
[mysqld]
max_allowed_packet=128M
[mysqldump]
max_allowed_packet=128M
Personally I think that's a bit large. I would probably go for something like 25MB.
I'm quite sure there will be an error in the logs, logged by jackrabbit. If not, we should fix this upstream. It should log something like:
ERROR ConnectionRecoveryManager : could not execute statement, reason:
Packet for query is too large (38117830 > 16777216). You can change this
value on the server by setting the max_allowed_packet' variable.,
state/code: S1000/0
I think the important issue here is that users in the cms don't get feedback if the upload fails.
See also:
http://wiki.apache.org/jackrabbit/DataStore#Limitations
http://bugs.mysql.com/bug.php?id=10859
http://stackoverflow.com/questions/945471/handling-of-huge-blobs-in-mysql-handling-of-huge-blobs-in-mysql
> Error reporting concerning backing database
> -------------------------------------------
>
> Key: HREPTWO-3471
> URL: http://issues.onehippo.com/browse/HREPTWO-3471
> Project: Hippo Repository 2
> Issue Type: Improvement
> Affects Versions: r2.09.03
> Reporter: Wim Ederveen
> Assignee: Bart van der Schans
> Priority: Top
> Fix For: r2.11.00
>
>
> We use a MySQL database for our repository.
> This database has a setting called "max_allowed_packet"
> What this does is determine what the max blob size is.
> When we try to upload a pdf file that is larger than this setting, for example 1Mb
> The repository will just say 0 bytes and the pdf wont work.
> Also when we upload a pdf that might have a corrupt header or something also shows as 0 bytes.
> This is confusing for the users of the cms, they dont know what database is behind the cms, and they shouldn't
> They get no notification that something went wrong.
> My suggestion is to improve the way the cms handles this kind of issues and implement errors or warnings in the cms.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
From svn-logs at hippocms.org Tue Dec 1 15:48:44 2009
From: svn-logs at hippocms.org (bvanhalderen)
Date: Tue Dec 1 15:48:42 2009
Subject: [HippoRepos-dev] [20959] hippo-ecm: HREPTWO-3486: compilation
failure
Message-ID: <20091201144844.CB840C96D@svnnew.onehippo.org>
Revision: 20959
Author: bvanhalderen
Date: 2009-12-01 15:48:44 +0100 (Tue, 01 Dec 2009)
Log Message:
-----------
HREPTWO-3486: compilation failure
Modified Paths:
--------------
hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/updater/UpdaterEngine.java
Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/updater/UpdaterEngine.java
===================================================================
--- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/updater/UpdaterEngine.java 2009-12-01 13:55:13 UTC (rev 20958)
+++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/updater/UpdaterEngine.java 2009-12-01 14:48:44 UTC (rev 20959)
@@ -792,20 +792,19 @@
}
if (nodeIter != null) {
log.info("migration update traverse iterated for module " + module.name + " (" + visitor.toString() + ")");
- while (nodeIter.hasNext()) {
- Node node = nodeIter.nextNode();
- String path = node.getPath();
- node = updaterSession.getRootNode();
- try {
- if (!path.equals("/")) {
- node = node.getNode(path.substring(1));
- }
- visitor.visit(node);
- } catch (PathNotFoundException ex) {
- // deliberate ignore
- } catch (InvalidItemStateException ex) {
- // deliberate ignore
+ while (nodeIter.hasNext()) {
+ Node node = nodeIter.nextNode();
+ String path = node.getPath();
+ node = updaterSession.getRootNode();
+ try {
+ if (!path.equals("/")) {
+ node = node.getNode(path.substring(1));
}
+ visitor.visit(node);
+ } catch (PathNotFoundException ex) {
+ // deliberate ignore
+ } catch (InvalidItemStateException ex) {
+ // deliberate ignore
}
}
}
From svn-logs at hippocms.org Tue Dec 1 18:40:39 2009
From: svn-logs at hippocms.org (fvlankvelt)
Date: Tue Dec 1 18:40:37 2009
Subject: [HippoRepos-dev] [20961] hippo-ecm: HREPTWO-16: redraw field editor
when setting path failed
Message-ID: <20091201174039.70EC5C96D@svnnew.onehippo.org>
Revision: 20961
Author: fvlankvelt
Date: 2009-12-01 18:40:37 +0100 (Tue, 01 Dec 2009)
Log Message:
-----------
HREPTWO-16: redraw field editor when setting path failed
Modified Paths:
--------------
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/builder/FieldEditor.java
Modified: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/builder/FieldEditor.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/builder/FieldEditor.java 2009-12-01 16:46:41 UTC (rev 20960)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/builder/FieldEditor.java 2009-12-01 17:40:37 UTC (rev 20961)
@@ -46,6 +46,8 @@
this.type = type;
this.edit = edit;
+ setOutputMarkupId(true);
+
prefix = null;
String typeName = type.getType();
if (typeName.indexOf(':') > 0) {
@@ -71,6 +73,10 @@
}
} catch (TypeException e) {
error(e.getLocalizedMessage());
+ AjaxRequestTarget target = AjaxRequestTarget.get();
+ if (target != null) {
+ target.addComponent(FieldEditor.this);
+ }
}
}
From svn-logs at hippocms.org Tue Dec 1 18:41:34 2009
From: svn-logs at hippocms.org (fvlankvelt)
Date: Tue Dec 1 18:41:30 2009
Subject: [HippoRepos-dev] [20962] hippo-ecm: HREPTWO-3485:
ignore uri for hippo and hipposys namespace
Message-ID: <20091201174134.1B032C96D@svnnew.onehippo.org>
Revision: 20962
Author: fvlankvelt
Date: 2009-12-01 18:41:33 +0100 (Tue, 01 Dec 2009)
Log Message:
-----------
HREPTWO-3485: ignore uri for hippo and hipposys namespace
Editing these namespaces is not supported.
Modified Paths:
--------------
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrTypeStore.java
hippo-ecm/trunk/addon/editor/repository/src/main/resources/namespace-hippo.xml
Modified: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrTypeStore.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrTypeStore.java 2009-12-01 17:40:37 UTC (rev 20961)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrTypeStore.java 2009-12-01 17:41:33 UTC (rev 20962)
@@ -327,10 +327,8 @@
private class TypeInfo {
JcrNamespace nsInfo;
String subType;
- String type;
TypeInfo(String type) throws RepositoryException {
- this.type = type;
String prefix = "system";
subType = type;
if (type.indexOf(':') > 0) {
@@ -389,6 +387,8 @@
NodeIterator iter = ((Node) session.getItem(path)).getNode(HippoNodeType.HIPPOSYSEDIT_NODETYPE).getNodes(
HippoNodeType.HIPPOSYSEDIT_NODETYPE);
+ String prefix = info.getNamespace().getPrefix();
+ boolean isHippoNs = "hippo".equals(prefix) || "hipposys".equals(prefix);
while (iter.hasNext()) {
Node node = iter.nextNode();
if (!node.isNodeType(HippoNodeType.NT_REMODEL)) {
@@ -396,7 +396,6 @@
return node;
} else if (node.hasProperty(HippoNodeType.HIPPOSYSEDIT_TYPE)) {
String realType = node.getProperty(HippoNodeType.HIPPOSYSEDIT_TYPE).getString();
- String prefix = info.getNamespace().getPrefix();
String pseudoType;
if (!"system".equals(prefix)) {
pseudoType = prefix + ":" + info.subType;
@@ -408,7 +407,8 @@
}
}
} else {
- if (node.getProperty(HippoNodeType.HIPPO_URI).getString().equals(uri)) {
+ // ignore uris for hippo namespace
+ if (isHippoNs || node.getProperty(HippoNodeType.HIPPO_URI).getString().equals(uri)) {
return node;
}
}
Modified: hippo-ecm/trunk/addon/editor/repository/src/main/resources/namespace-hippo.xml
===================================================================
--- hippo-ecm/trunk/addon/editor/repository/src/main/resources/namespace-hippo.xml 2009-12-01 17:40:37 UTC (rev 20961)
+++ hippo-ecm/trunk/addon/editor/repository/src/main/resources/namespace-hippo.xml 2009-12-01 17:41:33 UTC (rev 20962)
@@ -65,7 +65,7 @@
hipposysedit:remodel
- http://www.onehippo.org/jcr/hippo/nt/2.0.1
+ http://www.onehippo.org/jcr/hippo/nt/2.0nt:query
@@ -173,7 +173,7 @@
hipposysedit:remodel
- http://www.onehippo.org/jcr/hippo/nt/2.0.1
+ http://www.onehippo.org/jcr/hippo/nt/2.0
@@ -371,7 +371,7 @@
hipposysedit:remodel
- http://www.onehippo.org/jcr/hippo/nt/2.0.1
+ http://www.onehippo.org/jcr/hippo/nt/2.0true
@@ -527,7 +527,7 @@
hipposysedit:remodel
- http://www.onehippo.org/jcr/hippo/nt/2.0.1
+ http://www.onehippo.org/jcr/hippo/nt/2.0true
@@ -653,7 +653,7 @@
hipposysedit:remodel
- http://www.onehippo.org/jcr/hippo/nt/2.0.1
+ http://www.onehippo.org/jcr/hippo/nt/2.0true
@@ -784,7 +784,7 @@
hipposysedit:remodel
- http://www.onehippo.org/jcr/hippo/nt/2.0.1
+ http://www.onehippo.org/jcr/hippo/nt/2.0true
@@ -910,7 +910,7 @@
hipposysedit:remodel
- http://www.onehippo.org/jcr/hippo/nt/2.0.1
+ http://www.onehippo.org/jcr/hippo/nt/2.0
From svn-logs at hippocms.org Tue Dec 1 18:43:16 2009
From: svn-logs at hippocms.org (fvlankvelt)
Date: Tue Dec 1 18:43:12 2009
Subject: [HippoRepos-dev] [20963] hippo-ecm: HREPTWO-16: typo in reordering
Message-ID: <20091201174316.601C9C96D@svnnew.onehippo.org>
Revision: 20963
Author: fvlankvelt
Date: 2009-12-01 18:43:15 +0100 (Tue, 01 Dec 2009)
Log Message:
-----------
HREPTWO-16: typo in reordering
Modified Paths:
--------------
hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/plugin/config/impl/JcrClusterConfig.java
Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/plugin/config/impl/JcrClusterConfig.java
===================================================================
--- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/plugin/config/impl/JcrClusterConfig.java 2009-12-01 17:41:33 UTC (rev 20962)
+++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/plugin/config/impl/JcrClusterConfig.java 2009-12-01 17:43:15 UTC (rev 20963)
@@ -162,7 +162,8 @@
if (node.getPrimaryNodeType().hasOrderableChildNodes() && (index < (size() - 1))) {
Node previous = getNode(index);
- node.orderBefore(previous.getName() + (previous.getIndex() > 1 ? "[" + previous.getIndex() + "]" : ""), child.getName() + (child.getIndex() > 1 ? "[" + child.getIndex() + "]" : ""));
+ node.orderBefore(child.getName() + (child.getIndex() > 1 ? "[" + child.getIndex() + "]" : ""),
+ previous.getName() + (previous.getIndex() > 1 ? "[" + previous.getIndex() + "]" : ""));
}
notifyObservers();
@@ -326,8 +327,8 @@
}
private List getList(String key) {
- return new JcrValueList(new JcrPropertyModel(getNodeModel().getItemModel().getPath() + "/" + key),
- PropertyType.STRING);
+ return new JcrValueList(new JcrPropertyModel(getNodeModel().getItemModel().getPath() + "/"
+ + key), PropertyType.STRING);
}
String getPluginName(Node node) throws RepositoryException {
From svn-logs at hippocms.org Tue Dec 1 18:52:31 2009
From: svn-logs at hippocms.org (fvlankvelt)
Date: Tue Dec 1 18:52:29 2009
Subject: [HippoRepos-dev] [20964] hippo-ecm/trunk: HREPTWO-16: detach item
models
Message-ID: <20091201175231.B29D9C96D@svnnew.onehippo.org>
Revision: 20964
Author: fvlankvelt
Date: 2009-12-01 18:52:30 +0100 (Tue, 01 Dec 2009)
Log Message:
-----------
HREPTWO-16: detach item models
Plugins that create a type locator, are responsible for detaching them. It is not necessary to call detach on type stores, assuming that they are managed by a locator.
A new helper class, the DetachMonitor, has been introduced to make detecting missing detach calls easier.
Modified Paths:
--------------
hippo-ecm/trunk/addon/cms/browse/src/main/java/org/hippoecm/frontend/plugins/cms/browse/list/TypesListingPlugin.java
hippo-ecm/trunk/addon/cms/browse/src/main/java/org/hippoecm/frontend/plugins/cms/browse/list/resolvers/TemplateTypeRenderer.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/cnd/CndSerializer.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrDraftLocator.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrTypeDescriptor.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrTypeLocator.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/builder/TemplateBuilder.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/plugins/field/AbstractFieldPlugin.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/plugins/field/FieldItemRenderer.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/plugins/field/TemplateController.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/validator/FilteredValidationResult.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/validator/JcrValidationService.java
hippo-ecm/trunk/addon/editor/test/src/test/java/org/hippoecm/frontend/editor/builder/TemplateBuilderTest.java
hippo-ecm/trunk/addon/xinha-frontend/src/main/java/org/hippoecm/frontend/plugins/xinha/AbstractXinhaPlugin.java
hippo-ecm/trunk/addon/xinha-frontend/src/main/java/org/hippoecm/frontend/plugins/xinha/services/images/XinhaImageService.java
hippo-ecm/trunk/addon/xinha-frontend/src/main/java/org/hippoecm/frontend/plugins/xinha/services/links/XinhaLinkService.java
hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/JcrItemModel.java
hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/tree/JcrTreeNode.java
hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/types/ITypeLocator.java
hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/types/TypeLocator.java
hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/validation/IValidationResult.java
hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/validation/ModelPath.java
hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/validation/ModelPathElement.java
hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/validation/ValidationResult.java
hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/validation/Violation.java
Added Paths:
-----------
hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/DetachMonitor.java
Modified: hippo-ecm/trunk/addon/cms/browse/src/main/java/org/hippoecm/frontend/plugins/cms/browse/list/TypesListingPlugin.java
===================================================================
--- hippo-ecm/trunk/addon/cms/browse/src/main/java/org/hippoecm/frontend/plugins/cms/browse/list/TypesListingPlugin.java 2009-12-01 17:43:15 UTC (rev 20963)
+++ hippo-ecm/trunk/addon/cms/browse/src/main/java/org/hippoecm/frontend/plugins/cms/browse/list/TypesListingPlugin.java 2009-12-01 17:52:30 UTC (rev 20964)
@@ -28,7 +28,8 @@
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.StringResourceModel;
-import org.hippoecm.editor.type.JcrTypeStore;
+import org.hippoecm.editor.type.JcrDraftLocator;
+import org.hippoecm.editor.type.JcrTypeLocator;
import org.hippoecm.frontend.model.JcrNodeModel;
import org.hippoecm.frontend.model.event.IEvent;
import org.hippoecm.frontend.model.event.IObserver;
@@ -50,6 +51,7 @@
import org.hippoecm.frontend.plugins.standards.list.resolvers.IconAttributeModifier;
import org.hippoecm.frontend.plugins.yui.YuiPluginHelper;
import org.hippoecm.frontend.plugins.yui.tables.TableHelperBehavior;
+import org.hippoecm.frontend.types.ITypeLocator;
import org.hippoecm.repository.api.HippoNodeType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -62,12 +64,25 @@
static final Logger log = LoggerFactory.getLogger(TypesListingPlugin.class);
- private JcrTypeStore typeStore;
+ private ITypeLocator typeLocator;
public TypesListingPlugin(IPluginContext context, IPluginConfig config) {
super(context, config);
- typeStore = new JcrTypeStore();
+ IModel nodeModel = getModel();
+ if (nodeModel != null && nodeModel.getObject() != null) {
+ try {
+ Node node = nodeModel.getObject();
+ if (node.isNodeType(HippoNodeType.NT_NAMESPACE)) {
+ typeLocator = new JcrDraftLocator(node.getName());
+ }
+ } catch (RepositoryException ex) {
+ log.error("Error determining node type for listing", ex);
+ }
+ }
+ if (typeLocator == null) {
+ typeLocator = new JcrTypeLocator();
+ }
}
@Override
@@ -85,7 +100,7 @@
columns.add(column);
column = new ListColumn(new StringResourceModel("typeslisting-type", this, null), null);
- column.setRenderer(new TemplateTypeRenderer(typeStore));
+ column.setRenderer(new TemplateTypeRenderer(typeLocator));
columns.add(column);
column = new ListColumn(new StringResourceModel("typeslisting-state", this, null), "state");
@@ -106,7 +121,7 @@
@Override
protected void onDetach() {
- typeStore.detach();
+ typeLocator.detach();
super.onDetach();
}
Modified: hippo-ecm/trunk/addon/cms/browse/src/main/java/org/hippoecm/frontend/plugins/cms/browse/list/resolvers/TemplateTypeRenderer.java
===================================================================
--- hippo-ecm/trunk/addon/cms/browse/src/main/java/org/hippoecm/frontend/plugins/cms/browse/list/resolvers/TemplateTypeRenderer.java 2009-12-01 17:43:15 UTC (rev 20963)
+++ hippo-ecm/trunk/addon/cms/browse/src/main/java/org/hippoecm/frontend/plugins/cms/browse/list/resolvers/TemplateTypeRenderer.java 2009-12-01 17:52:30 UTC (rev 20964)
@@ -22,10 +22,10 @@
import org.apache.wicket.Component;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.model.ResourceModel;
-import org.hippoecm.frontend.model.ocm.IStore;
import org.hippoecm.frontend.model.ocm.StoreException;
import org.hippoecm.frontend.plugins.standards.list.resolvers.AbstractNodeRenderer;
import org.hippoecm.frontend.types.ITypeDescriptor;
+import org.hippoecm.frontend.types.ITypeLocator;
import org.hippoecm.repository.api.HippoNodeType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -38,10 +38,10 @@
private static final long serialVersionUID = 1L;
- private IStore typeStore;
+ private ITypeLocator typeLocator;
- public TemplateTypeRenderer(IStore store) {
- typeStore = store;
+ public TemplateTypeRenderer(ITypeLocator store) {
+ typeLocator = store;
}
@Override
@@ -66,7 +66,7 @@
if (type.indexOf(':') < 0) {
return new Label(id, new ResourceModel("type-primitive"));
}
- ITypeDescriptor descriptor = typeStore.load(type);
+ ITypeDescriptor descriptor = typeLocator.locate(type);
if (descriptor.isType(HippoNodeType.NT_DOCUMENT)) {
return new Label(id, new ResourceModel("type-document"));
}
@@ -76,7 +76,7 @@
Value[] values = ntNode.getProperty(HippoNodeType.HIPPO_SUPERTYPE).getValues();
for (int i = 0; i < values.length; i++) {
Value value = values[i];
- ITypeDescriptor descriptor = typeStore.load(value.getString());
+ ITypeDescriptor descriptor = typeLocator.locate(value.getString());
if (descriptor.isType(HippoNodeType.NT_DOCUMENT)) {
return new Label(id, new ResourceModel("type-document"));
}
Modified: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/cnd/CndSerializer.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/cnd/CndSerializer.java 2009-12-01 17:43:15 UTC (rev 20963)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/cnd/CndSerializer.java 2009-12-01 17:52:30 UTC (rev 20964)
@@ -178,6 +178,7 @@
final BuiltinTypeStore newBuiltinTypeStore = new BuiltinTypeStore();
final ITypeLocator newLocator = new TypeLocator(new IStore[] { newJcrTypeStore, newBuiltinTypeStore });
newTypeLocator = new ITypeLocator() {
+ private static final long serialVersionUID = 1L;
public ITypeDescriptor locate(String type) throws StoreException {
if (type.indexOf(':') > 0 && namespace.equals(type.substring(0, type.indexOf(':')))) {
@@ -196,6 +197,9 @@
throw new StoreException("sub-types are not supported in cnd serializer");
}
+ public void detach() {
+ }
+
};
newBuiltinTypeStore.setTypeLocator(newTypeLocator);
newJcrTypeStore.setTypeLocator(newTypeLocator);
Modified: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrDraftLocator.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrDraftLocator.java 2009-12-01 17:43:15 UTC (rev 20963)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrDraftLocator.java 2009-12-01 17:52:30 UTC (rev 20964)
@@ -52,7 +52,7 @@
}
public void detach() {
- jcrTypeStore.detach();
+ locator.detach();
}
}
Modified: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrTypeDescriptor.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrTypeDescriptor.java 2009-12-01 17:43:15 UTC (rev 20963)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrTypeDescriptor.java 2009-12-01 17:52:30 UTC (rev 20964)
@@ -319,14 +319,12 @@
@Override
public void detach() {
- if (attached) {
- for (IFieldDescriptor field : fields.values()) {
- if (field instanceof IDetachable) {
- ((IDetachable) field).detach();
- }
+ for (IFieldDescriptor field : fields.values()) {
+ if (field instanceof IDetachable) {
+ ((IDetachable) field).detach();
}
- attached = false;
}
+ attached = false;
super.detach();
}
Modified: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrTypeLocator.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrTypeLocator.java 2009-12-01 17:43:15 UTC (rev 20963)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/editor/type/JcrTypeLocator.java 2009-12-01 17:52:30 UTC (rev 20964)
@@ -18,6 +18,7 @@
import java.util.List;
import org.apache.wicket.model.IDetachable;
+import org.hippoecm.frontend.model.DetachMonitor;
import org.hippoecm.frontend.model.ocm.IStore;
import org.hippoecm.frontend.model.ocm.StoreException;
import org.hippoecm.frontend.types.BuiltinTypeStore;
@@ -51,7 +52,7 @@
}
public void detach() {
- jcrTypeStore.detach();
+ locator.detach();
}
}
Modified: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/builder/TemplateBuilder.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/builder/TemplateBuilder.java 2009-12-01 17:43:15 UTC (rev 20963)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/builder/TemplateBuilder.java 2009-12-01 17:52:30 UTC (rev 20964)
@@ -32,7 +32,6 @@
import javax.jcr.RepositoryException;
import javax.jcr.Value;
-import org.apache.wicket.IClusterable;
import org.apache.wicket.model.IDetachable;
import org.apache.wicket.model.IModel;
import org.apache.wicket.util.collections.MiniMap;
@@ -41,7 +40,6 @@
import org.hippoecm.editor.template.JcrTemplateStore;
import org.hippoecm.editor.type.JcrDraftStore;
import org.hippoecm.editor.type.JcrTypeStore;
-import org.hippoecm.frontend.editor.TemplateEngineException;
import org.hippoecm.frontend.editor.plugins.field.NodeFieldPlugin;
import org.hippoecm.frontend.editor.plugins.field.PropertyFieldPlugin;
import org.hippoecm.frontend.model.JcrNodeModel;
@@ -186,6 +184,7 @@
String name = delegate.getName();
String newName = TypeHelper.getFieldName(path, getTypeDescriptor().getName());
+ boolean updateFieldName = false;
if (!typeDescriptor.getFields().containsKey(newName)
&& !fieldNames.contains(newName)
&& (currentTypeDescriptor == null || (!currentTypeDescriptor.getFields().containsKey(name) && !currentTypeDescriptor
@@ -197,6 +196,7 @@
delegate = typeDescriptor.getField(newName);
paths.remove(name);
paths.put(newName, path);
+ updateFieldName = true;
} else {
paths.put(name, path);
}
@@ -206,7 +206,9 @@
for (int i = 0; i < plugins.size(); i++) {
IPluginConfig plugin = plugins.get(i);
if (plugin.containsKey("field") && name.equals(plugin.getString("field"))) {
- plugin.put("field", newName);
+ if (updateFieldName) {
+ plugin.put("field", newName);
+ }
position = i;
}
if (newName.equals(plugin.getName())) {
@@ -456,7 +458,7 @@
return new BuilderFieldDescriptor(descriptor);
}
- class BuilderPluginList extends AbstractList implements IClusterable {
+ class BuilderPluginList extends AbstractList implements IDetachable {
private static final long serialVersionUID = 1L;
private List plugins;
@@ -514,6 +516,14 @@
return plugins.size();
}
+ public void detach() {
+ for (IPluginConfig config : plugins) {
+ if (config instanceof IDetachable) {
+ ((IDetachable) config).detach();
+ }
+ }
+ }
+
}
private static class BuilderClusterDecorator extends AbstractClusterDecorator {
@@ -547,6 +557,7 @@
private IStore builtinTemplateStore;
private JcrTypeStore jcrTypeStore;
+ private ITypeLocator typeLocator;
private JcrPrototypeStore prototypeStore;
@@ -569,7 +580,7 @@
this.context = context;
this.selectedExtPtModel = extPtModel;
- this.jcrTypeStore = new JcrTypeStore();
+ JcrTypeStore jcrTypeStore = new JcrTypeStore();
String prefix;
if (type.indexOf(':') > 0) {
prefix = type.substring(0, type.indexOf(':'));
@@ -578,7 +589,7 @@
}
IStore draftStore = new JcrDraftStore(jcrTypeStore, prefix);
BuiltinTypeStore builtinTypeStore = new BuiltinTypeStore();
- ITypeLocator typeLocator = new TypeLocator(new IStore[] { draftStore, jcrTypeStore, builtinTypeStore });
+ typeLocator = new TypeLocator(new IStore[] { draftStore, jcrTypeStore, builtinTypeStore });
builtinTypeStore.setTypeLocator(typeLocator);
jcrTypeStore.setTypeLocator(typeLocator);
@@ -898,15 +909,20 @@
public void detach() {
prototypeStore.detach();
- jcrTypeStore.detach();
- if (prototype != null) {
- prototype.detach();
+ typeLocator.detach();
+ detach(plugins);
+ detach(prototype);
+ detach(clusterConfig);
+ detach(typeDescriptor);
+ detach(currentTypeDescriptor);
+ }
+
+ private void detach(Object object) {
+ if (object instanceof IDetachable) {
+ ((IDetachable) object).detach();
}
- if (clusterConfig != null && (clusterConfig instanceof IDetachable)) {
- ((IDetachable) clusterConfig).detach();
- }
}
-
+
// IObservable
public void setObservationContext(IObservationContext context) {
Modified: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/plugins/field/AbstractFieldPlugin.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/plugins/field/AbstractFieldPlugin.java 2009-12-01 17:43:15 UTC (rev 20963)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/plugins/field/AbstractFieldPlugin.java 2009-12-01 17:52:30 UTC (rev 20964)
@@ -184,6 +184,7 @@
provider.detach();
}
helper.detach();
+ controller.detach();
super.onDetach();
}
Modified: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/plugins/field/FieldItemRenderer.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/plugins/field/FieldItemRenderer.java 2009-12-01 17:43:15 UTC (rev 20963)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/plugins/field/FieldItemRenderer.java 2009-12-01 17:52:30 UTC (rev 20964)
@@ -18,7 +18,7 @@
import java.util.Iterator;
import java.util.List;
-import org.apache.wicket.IClusterable;
+import org.apache.wicket.model.IDetachable;
import org.apache.wicket.model.IModel;
import org.hippoecm.frontend.editor.validator.FilteredValidationModel;
import org.hippoecm.frontend.model.ModelReference;
@@ -36,7 +36,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class FieldItemRenderer implements IClusterable {
+public class FieldItemRenderer implements IDetachable {
private static final long serialVersionUID = 1L;
static final Logger log = LoggerFactory.getLogger(FieldItemRenderer.class);
@@ -129,4 +129,10 @@
return true;
}
+ public void detach() {
+ if (filteredValidationModel != null) {
+ filteredValidationModel.detach();
+ }
+ }
+
}
\ No newline at end of file
Modified: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/plugins/field/TemplateController.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/plugins/field/TemplateController.java 2009-12-01 17:43:15 UTC (rev 20963)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/plugins/field/TemplateController.java 2009-12-01 17:52:30 UTC (rev 20964)
@@ -19,7 +19,7 @@
import java.util.Iterator;
import java.util.Map;
-import org.apache.wicket.IClusterable;
+import org.apache.wicket.model.IDetachable;
import org.apache.wicket.model.IModel;
import org.hippoecm.frontend.editor.TemplateEngineException;
import org.hippoecm.frontend.model.AbstractProvider;
@@ -32,7 +32,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class TemplateController implements IClusterable {
+public class TemplateController implements IDetachable {
private static final long serialVersionUID = 1L;
static final Logger log = LoggerFactory.getLogger(TemplateController.class);
@@ -88,4 +88,10 @@
}
}
+ public void detach() {
+ for (Map.Entry> entry : childTemplates.entrySet()) {
+ entry.getValue().detach();
+ }
+ }
+
}
\ No newline at end of file
Modified: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/validator/FilteredValidationResult.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/validator/FilteredValidationResult.java 2009-12-01 17:43:15 UTC (rev 20963)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/validator/FilteredValidationResult.java 2009-12-01 17:52:30 UTC (rev 20964)
@@ -80,4 +80,9 @@
}
return new Violation(newPaths, violation.getMessageKey(), violation.getParameters());
}
+
+ public void detach() {
+ upstream.detach();
+ }
+
}
\ No newline at end of file
Modified: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/validator/JcrValidationService.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/validator/JcrValidationService.java 2009-12-01 17:43:15 UTC (rev 20963)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/validator/JcrValidationService.java 2009-12-01 17:52:30 UTC (rev 20964)
@@ -21,6 +21,7 @@
import javax.jcr.Node;
import javax.jcr.RepositoryException;
+import org.apache.wicket.model.IDetachable;
import org.apache.wicket.model.IModel;
import org.hippoecm.editor.type.JcrTypeLocator;
import org.hippoecm.frontend.model.IModelReference;
@@ -61,7 +62,7 @@
* model that is registered here.
*
*/
-public class JcrValidationService implements IValidationService {
+public class JcrValidationService implements IValidationService, IDetachable {
private static final long serialVersionUID = 1L;
static final Logger log = LoggerFactory.getLogger(JcrValidationService.class);
@@ -149,4 +150,9 @@
return null;
}
+ public void detach() {
+ locator.detach();
+ result.detach();
+ }
+
}
Modified: hippo-ecm/trunk/addon/editor/test/src/test/java/org/hippoecm/frontend/editor/builder/TemplateBuilderTest.java
===================================================================
--- hippo-ecm/trunk/addon/editor/test/src/test/java/org/hippoecm/frontend/editor/builder/TemplateBuilderTest.java 2009-12-01 17:43:15 UTC (rev 20963)
+++ hippo-ecm/trunk/addon/editor/test/src/test/java/org/hippoecm/frontend/editor/builder/TemplateBuilderTest.java 2009-12-01 17:52:30 UTC (rev 20964)
@@ -296,6 +296,21 @@
newField.setPath("test:extra");
assertEquals("string", newField.getName());
+
+ // plugin should have been renamed, but it's field should still be the same
+ IPluginConfig fieldPlugin = null;
+ IClusterConfig cluster = builder.getTemplate();
+ List plugins = cluster.getPlugins();
+ for (IPluginConfig plugin : plugins) {
+ if (plugin.containsKey("field")) {
+ if ("string".equals(plugin.getString("field"))) {
+ fieldPlugin = plugin;
+ break;
+ }
+ }
+ }
+ assertNotNull(fieldPlugin);
+ assertEquals("extra", fieldPlugin.getName());
}
@Test
Modified: hippo-ecm/trunk/addon/xinha-frontend/src/main/java/org/hippoecm/frontend/plugins/xinha/AbstractXinhaPlugin.java
===================================================================
--- hippo-ecm/trunk/addon/xinha-frontend/src/main/java/org/hippoecm/frontend/plugins/xinha/AbstractXinhaPlugin.java 2009-12-01 17:43:15 UTC (rev 20963)
+++ hippo-ecm/trunk/addon/xinha-frontend/src/main/java/org/hippoecm/frontend/plugins/xinha/AbstractXinhaPlugin.java 2009-12-01 17:52:30 UTC (rev 20964)
@@ -241,6 +241,12 @@
@Override
protected void onDetach() {
+ if (imageService != null) {
+ imageService.detach();
+ }
+ if (linkService != null) {
+ linkService.detach();
+ }
if (nodeModel != null) {
nodeModel.detach();
}
Modified: hippo-ecm/trunk/addon/xinha-frontend/src/main/java/org/hippoecm/frontend/plugins/xinha/services/images/XinhaImageService.java
===================================================================
--- hippo-ecm/trunk/addon/xinha-frontend/src/main/java/org/hippoecm/frontend/plugins/xinha/services/images/XinhaImageService.java 2009-12-01 17:43:15 UTC (rev 20963)
+++ hippo-ecm/trunk/addon/xinha-frontend/src/main/java/org/hippoecm/frontend/plugins/xinha/services/images/XinhaImageService.java 2009-12-01 17:52:30 UTC (rev 20964)
@@ -24,14 +24,14 @@
import javax.jcr.RepositoryException;
import javax.jcr.UnsupportedRepositoryOperationException;
-import org.apache.wicket.IClusterable;
+import org.apache.wicket.model.IDetachable;
import org.hippoecm.frontend.model.JcrNodeModel;
import org.hippoecm.frontend.plugins.xinha.services.XinhaFacetHelper;
import org.hippoecm.frontend.plugins.xinha.services.images.ImageItemFactory.ImageItem;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public abstract class XinhaImageService implements IClusterable {
+public abstract class XinhaImageService implements IDetachable {
private static final long serialVersionUID = 1L;
@SuppressWarnings("unused")
@@ -88,6 +88,10 @@
};
}
+ public void detach() {
+ nodeModel.detach();
+ }
+
private ImageItem createImageItem(Map values) {
return factory.createImageItem(values);
}
Modified: hippo-ecm/trunk/addon/xinha-frontend/src/main/java/org/hippoecm/frontend/plugins/xinha/services/links/XinhaLinkService.java
===================================================================
--- hippo-ecm/trunk/addon/xinha-frontend/src/main/java/org/hippoecm/frontend/plugins/xinha/services/links/XinhaLinkService.java 2009-12-01 17:43:15 UTC (rev 20963)
+++ hippo-ecm/trunk/addon/xinha-frontend/src/main/java/org/hippoecm/frontend/plugins/xinha/services/links/XinhaLinkService.java 2009-12-01 17:52:30 UTC (rev 20964)
@@ -24,6 +24,7 @@
import javax.jcr.RepositoryException;
import org.apache.wicket.IClusterable;
+import org.apache.wicket.model.IDetachable;
import org.hippoecm.frontend.model.JcrNodeModel;
import org.hippoecm.frontend.plugins.xinha.XinhaUtil;
import org.hippoecm.frontend.plugins.xinha.services.XinhaFacetHelper;
@@ -32,7 +33,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public abstract class XinhaLinkService implements IClusterable {
+public abstract class XinhaLinkService implements IDetachable {
private static final long serialVersionUID = 1L;
@SuppressWarnings("unused")
@@ -82,6 +83,10 @@
}
}
+ public void detach() {
+ nodeModel.detach();
+ }
+
private String createLink(JcrNodeModel nodeModel) {
try {
String link = createLink(new NodeItem(nodeModel.getNode()));
Added: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/DetachMonitor.java
===================================================================
--- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/DetachMonitor.java (rev 0)
+++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/DetachMonitor.java 2009-12-01 17:52:30 UTC (rev 20964)
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2009 Hippo.
+ *
+ * Licensed 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.
+ */
+package org.hippoecm.frontend.model;
+
+import java.io.IOException;
+import java.io.ObjectOutputStream;
+
+import org.apache.wicket.Application;
+import org.apache.wicket.model.IDetachable;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class DetachMonitor implements IDetachable {
+ private static final long serialVersionUID = 1L;
+
+ static final Logger log = LoggerFactory.getLogger(DetachMonitor.class);
+
+ static final int ATTACHED = 0x00000001;
+
+ private transient int flags = 0;
+
+ public void attach() {
+ flags |= ATTACHED;
+ }
+
+ public boolean isAttached() {
+ return (flags & ATTACHED) != 0;
+ }
+
+ public void detach() {
+ flags &= 0xFFFFFFFF ^ ATTACHED;
+ }
+
+ private void writeObject(ObjectOutputStream output) throws IOException {
+ if ((flags & ATTACHED) != 0) {
+ // TODO: walk the stack to identify owner
+ log.warn("Undetached DetachMonitor");
+ if (Application.DEPLOYMENT.equals(Application.get().getConfigurationType())) {
+ detach();
+ }
+ }
+ output.defaultWriteObject();
+ }
+}
Property changes on: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/DetachMonitor.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/JcrItemModel.java
===================================================================
--- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/JcrItemModel.java 2009-12-01 17:43:15 UTC (rev 20963)
+++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/JcrItemModel.java 2009-12-01 17:52:30 UTC (rev 20964)
@@ -27,6 +27,7 @@
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;
+import org.apache.wicket.Application;
import org.apache.wicket.Session;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.util.string.PrependingStringBuffer;
@@ -259,7 +260,9 @@
private void writeObject(ObjectOutputStream output) throws IOException {
if (isAttached()) {
log.warn("Undetached JcrItemModel " + getPath());
- detach();
+ if (Application.DEPLOYMENT.equals(Application.get().getConfigurationType())) {
+ detach();
+ }
}
output.defaultWriteObject();
}
Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/tree/JcrTreeNode.java
===================================================================
--- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/tree/JcrTreeNode.java 2009-12-01 17:43:15 UTC (rev 20963)
+++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/tree/JcrTreeNode.java 2009-12-01 17:52:30 UTC (rev 20964)
@@ -43,12 +43,15 @@
private final static int MAXCOUNT = 2000;
+ static final int DETACHING = 0x00000001;
+
private List children;
private boolean reloadChildren = true;
private boolean reloadChildCount = true;
private int childCount = -1;
private IJcrTreeNode parent;
+ private transient int flags = 0;
public JcrTreeNode(JcrNodeModel nodeModel, IJcrTreeNode parent) {
super(nodeModel);
@@ -131,17 +134,24 @@
@Override
public void detach() {
- reloadChildren = true;
- reloadChildCount = true;
- if (children != null) {
- for (TreeNode child : children) {
- if (child instanceof IDetachable) {
- ((IDetachable) child).detach();
+ if ((flags & DETACHING) == 0) {
+ flags = flags | DETACHING;
+ reloadChildren = true;
+ reloadChildCount = true;
+ if (children != null) {
+ for (TreeNode child : children) {
+ if (child instanceof IDetachable) {
+ ((IDetachable) child).detach();
+ }
}
+ children = null;
}
- children = null;
+ if (parent != null) {
+ parent.detach();
+ }
+ super.detach();
+ flags = flags & (0xFFFFFFFF ^ DETACHING);
}
- super.detach();
}
protected List loadChildren() throws RepositoryException {
Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/types/ITypeLocator.java
===================================================================
--- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/types/ITypeLocator.java 2009-12-01 17:43:15 UTC (rev 20963)
+++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/types/ITypeLocator.java 2009-12-01 17:52:30 UTC (rev 20964)
@@ -17,9 +17,10 @@
import java.util.List;
+import org.apache.wicket.model.IDetachable;
import org.hippoecm.frontend.model.ocm.StoreException;
-public interface ITypeLocator {
+public interface ITypeLocator extends IDetachable {
ITypeDescriptor locate(String type) throws StoreException;
Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/types/TypeLocator.java
===================================================================
--- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/types/TypeLocator.java 2009-12-01 17:43:15 UTC (rev 20963)
+++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/types/TypeLocator.java 2009-12-01 17:52:30 UTC (rev 20964)
@@ -23,9 +23,12 @@
import java.util.List;
import java.util.Map;
-import org.apache.wicket.IClusterable;
+import org.apache.wicket.model.IDetachable;
+import org.hippoecm.frontend.model.DetachMonitor;
import org.hippoecm.frontend.model.ocm.IStore;
import org.hippoecm.frontend.model.ocm.StoreException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* The TypeLocator finds the ITypeDescriptor for a particular type,
@@ -33,19 +36,23 @@
* ITypeDescriptor implementations to be able to do their own lookup.
* It should not be used by store implementations.
*/
-public class TypeLocator implements ITypeLocator, IClusterable {
+public class TypeLocator implements ITypeLocator {
@SuppressWarnings("unused")
private final static String SVN_ID = "$Id$";
private static final long serialVersionUID = 1L;
+ static final Logger log = LoggerFactory.getLogger(TypeLocator.class);
+
private IStore[] stores;
-
+ private DetachMonitor monitor = new DetachMonitor();
+
public TypeLocator(IStore stores[]) {
this.stores = stores;
}
public ITypeDescriptor locate(String type) throws StoreException {
+ monitor.attach();
for (int i = 0; i < stores.length; i++) {
try {
return stores[i].load(type);
@@ -57,6 +64,7 @@
}
public List getSubTypes(String type) throws StoreException {
+ monitor.attach();
Map types = new LinkedHashMap();
List newList = new LinkedList();
newList.add(type);
@@ -79,4 +87,15 @@
return new LinkedList(types.values());
}
+ public void detach() {
+ if (monitor.isAttached()) {
+ for (IStore store : stores) {
+ if (store instanceof IDetachable) {
+ ((IDetachable) store).detach();
+ }
+ }
+ monitor.detach();
+ }
+ }
+
}
Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/validation/IValidationResult.java
===================================================================
--- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/validation/IValidationResult.java 2009-12-01 17:43:15 UTC (rev 20963)
+++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/validation/IValidationResult.java 2009-12-01 17:52:30 UTC (rev 20964)
@@ -17,13 +17,13 @@
import java.util.Set;
-import org.apache.wicket.IClusterable;
+import org.apache.wicket.model.IDetachable;
/**
* The model that is constructed during validation. Maintains state about
* what fields are invalid.
*/
-public interface IValidationResult extends IClusterable {
+public interface IValidationResult extends IDetachable {
Set getViolations();
Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/validation/ModelPath.java
===================================================================
--- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/validation/ModelPath.java 2009-12-01 17:43:15 UTC (rev 20963)
+++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/validation/ModelPath.java 2009-12-01 17:52:30 UTC (rev 20964)
@@ -15,13 +15,14 @@
*/
package org.hippoecm.frontend.validation;
-import org.apache.wicket.IClusterable;
+import org.apache.wicket.model.IDetachable;
import org.apache.wicket.util.string.Strings;
+import org.hippoecm.frontend.types.IFieldDescriptor;
/**
* Path to a value that maintains references to {@link IFieldDescriptor}s.
*/
-public final class ModelPath implements IClusterable {
+public final class ModelPath implements IDetachable {
private static final long serialVersionUID = 1L;
private ModelPathElement[] elements;
@@ -42,5 +43,11 @@
}
return Strings.join("/", strings);
}
+
+ public void detach() {
+ for (ModelPathElement element : elements) {
+ element.detach();
+ }
+ }
}
Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/validation/ModelPathElement.java
===================================================================
--- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/validation/ModelPathElement.java 2009-12-01 17:43:15 UTC (rev 20963)
+++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/validation/ModelPathElement.java 2009-12-01 17:52:30 UTC (rev 20964)
@@ -16,13 +16,13 @@
package org.hippoecm.frontend.validation;
import org.apache.commons.lang.builder.HashCodeBuilder;
-import org.apache.wicket.IClusterable;
+import org.apache.wicket.model.IDetachable;
import org.hippoecm.frontend.types.IFieldDescriptor;
/**
* Path element in a {@link ModelPath}.
*/
-public final class ModelPathElement implements IClusterable {
+public final class ModelPathElement implements IDetachable {
private static final long serialVersionUID = 1L;
private IFieldDescriptor field;
@@ -47,6 +47,12 @@
return index;
}
+ public void detach() {
+ if (field instanceof IDetachable) {
+ ((IDetachable) field).detach();
+ }
+ }
+
@Override
public boolean equals(Object obj) {
if (obj instanceof ModelPathElement) {
Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/validation/ValidationResult.java
===================================================================
--- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/validation/ValidationResult.java 2009-12-01 17:43:15 UTC (rev 20963)
+++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/validation/ValidationResult.java 2009-12-01 17:52:30 UTC (rev 20964)
@@ -43,4 +43,10 @@
return violations.size() == 0;
}
+ public void detach() {
+ for (Violation violation : violations) {
+ violation.detach();
+ }
+ }
+
}
\ No newline at end of file
Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/validation/Violation.java
===================================================================
--- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/validation/Violation.java 2009-12-01 17:43:15 UTC (rev 20963)
+++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/validation/Violation.java 2009-12-01 17:52:30 UTC (rev 20964)
@@ -17,13 +17,13 @@
import java.util.Set;
-import org.apache.wicket.IClusterable;
+import org.apache.wicket.model.IDetachable;
/**
* Validation constraint violation. Provides the list of {@link ModelPath}s that
* led up to the violation, plus a message that describes the problem.
*/
-public final class Violation implements IClusterable {
+public final class Violation implements IDetachable {
private static final long serialVersionUID = 1L;
private Set fieldPaths;
@@ -58,4 +58,10 @@
return sb.toString();
}
+ public void detach() {
+ for (ModelPath path : fieldPaths) {
+ path.detach();
+ }
+ }
+
}
From helpdesk at onehippo.com Tue Dec 1 18:44:15 2009
From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt))
Date: Tue Dec 1 18:54:46 2009
Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-3485) Update template
engine to deal with new virtual URI format
In-Reply-To: <5633577.220441259580855756.JavaMail.jira@jira.vm.castaserver.com>
Message-ID: <17699902.231651259689455758.JavaMail.jira@jira.vm.castaserver.com>
[ http://issues.onehippo.com/browse/HREPTWO-3485?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Frank van Lankvelt resolved HREPTWO-3485.
-----------------------------------------
Resolution: Fixed
> Update template engine to deal with new virtual URI format
> ----------------------------------------------------------
>
> Key: HREPTWO-3485
> URL: http://issues.onehippo.com/browse/HREPTWO-3485
> Project: Hippo Repository 2
> Issue Type: Bug
> Reporter: Frank van Lankvelt
> Assignee: Frank van Lankvelt
> Priority: Blocker
> Fix For: r2.10.00
>
> Original Estimate: 3 days
> Remaining Estimate: 3 days
>
> The new concept of a namespace version that is not actually registered as a namespace must be handled by the template engine.
> This is only necessary for the hippo and hipposys namespaces
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
From svn-logs at hippocms.org Tue Dec 1 22:45:36 2009
From: svn-logs at hippocms.org (bvanhalderen)
Date: Tue Dec 1 22:45:30 2009
Subject: [HippoRepos-dev] [20965] hippo-ecm/trunk: HREPTWO-3486:
Message-ID: <20091201214536.64F20C19E@svnnew.onehippo.org>
Revision: 20965
Author: bvanhalderen
Date: 2009-12-01 22:45:32 +0100 (Tue, 01 Dec 2009)
Log Message:
-----------
HREPTWO-3486:
- conversion of prototypes in templates should also be in regular update cycle
(ie not atomic)
- rename also child names and property names on prototypes as the namespace
conversion will not do them as original type was unstructured
- same name siblings list was not cleared upon last removal of same name sibling
Modified Paths:
--------------
hippo-ecm/trunk/addon/editor/repository/src/main/java/org/hippoecm/editor/repository/impl/TemplateConverter.java
hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/updater/UpdaterItem.java
Modified: hippo-ecm/trunk/addon/editor/repository/src/main/java/org/hippoecm/editor/repository/impl/TemplateConverter.java
===================================================================
--- hippo-ecm/trunk/addon/editor/repository/src/main/java/org/hippoecm/editor/repository/impl/TemplateConverter.java 2009-12-01 17:52:30 UTC (rev 20964)
+++ hippo-ecm/trunk/addon/editor/repository/src/main/java/org/hippoecm/editor/repository/impl/TemplateConverter.java 2009-12-01 21:45:32 UTC (rev 20965)
@@ -157,6 +157,14 @@
}
}
String newTypeName = rename(prefix, newVersion, prefix + ":" + node.getName());
+ for(NodeIterator childIter = draftPrototype.getNodes(); childIter.hasNext(); ) {
+ Node child = childIter.nextNode();
+ context.setName(child, rename(prefix, newVersion, child.getName()));
+ }
+ for(PropertyIterator childIter = draftPrototype.getProperties(); childIter.hasNext(); ) {
+ Property child = childIter.nextProperty();
+ context.setName(child, rename(prefix, newVersion, child.getName()));
+ }
context.setPrimaryNodeType(draftPrototype, newTypeName);
if (draftPrototype.isNodeType(HippoNodeType.NT_DOCUMENT)) {
draftPrototype.addMixin(HippoNodeType.NT_HARDDOCUMENT);
@@ -168,7 +176,7 @@
}
}
}
- }.setAtomic());
+ });
}
}
}
Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/updater/UpdaterItem.java
===================================================================
--- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/updater/UpdaterItem.java 2009-12-01 17:52:30 UTC (rev 20964)
+++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/updater/UpdaterItem.java 2009-12-01 21:45:32 UTC (rev 20965)
@@ -184,11 +184,12 @@
if (item == this) {
iter.remove();
parent.removed.add(this);
- return;
+ break;
}
}
- if (parent.children.get(name).size() == 0)
+ if (parent.children.get(name).size() == 0) {
parent.children.remove(name);
+ }
}
}
}
From svn-logs at hippocms.org Tue Dec 1 22:47:11 2009
From: svn-logs at hippocms.org (bvanhalderen)
Date: Tue Dec 1 22:47:05 2009
Subject: [HippoRepos-dev] [20966] hippo-ecm: HREPTWO-3445:
multi-phase transformation of nodes where the parent does not allow
same-name siblings
Message-ID: <20091201214711.4BFEDC96D@svnnew.onehippo.org>
Revision: 20966
Author: bvanhalderen
Date: 2009-12-01 22:47:10 +0100 (Tue, 01 Dec 2009)
Log Message:
-----------
HREPTWO-3445: multi-phase transformation of nodes where the parent does not allow same-name siblings
Modified Paths:
--------------
hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/updater/UpdaterNode.java
Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/updater/UpdaterNode.java
===================================================================
--- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/updater/UpdaterNode.java 2009-12-01 21:45:32 UTC (rev 20965)
+++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/updater/UpdaterNode.java 2009-12-01 21:47:10 UTC (rev 20966)
@@ -184,6 +184,7 @@
boolean nodeLocationChanged;
boolean nodeRelinked = false;
String nodeName = getName();
+ String noSameNameSiblingWorkaround = "hipposys:unstructured";
if (origin != null) {
if (origin instanceof HippoNode) {
@@ -232,7 +233,7 @@
}
origin = ((Node)parent.origin).getNode(nodeName);
} else {
- if(UpdaterEngine.log.isDebugEnabled()) {
+ if(UpdaterEngine.log.isDebugEnabled()) {
UpdaterEngine.log.debug("commit create "+getPath()+" in "+((Node)parent.origin).getPath()+" (primary type "+((Node)parent.origin).getProperty("jcr:primaryType").getString()+") type "+getInternalProperty("jcr:primaryType")[0]);
}
if(!((Node)parent.origin).isCheckedOut()) {
@@ -240,7 +241,12 @@
}
String[] primaryType = getInternalProperty("jcr:primaryType");
if (primaryType != null && primaryType.length > 0) {
- origin = ((Node)parent.origin).addNode(nodeName, primaryType[0]);
+ try {
+ origin = ((Node)parent.origin).addNode(nodeName, primaryType[0]);
+ noSameNameSiblingWorkaround = null;
+ } catch(ItemExistsException ex) {
+ origin = ((Node)parent.origin).addNode(noSameNameSiblingWorkaround, primaryType[0]);
+ }
} else {
origin = ((Node)parent.origin).addNode(nodeName);
}
@@ -367,6 +373,9 @@
UpdaterEngine.log.debug("commit remove old origin "+oldOrigin.getPath());
}
oldOrigin.remove();
+ if (noSameNameSiblingWorkaround != null) {
+ parent.origin.getSession().move(parent.origin.getPath() + "/" + noSameNameSiblingWorkaround, parent.origin.getPath() + "/" + nodeName);
+ }
}
}
}
From svn-logs at hippocms.org Tue Dec 1 22:53:49 2009
From: svn-logs at hippocms.org (bvanhalderen)
Date: Tue Dec 1 22:53:44 2009
Subject: [HippoRepos-dev] [20967] hippo-ecm: HREPTWO-3467:
Message-ID: <20091201215349.A38D5C96D@svnnew.onehippo.org>
Revision: 20967
Author: bvanhalderen
Date: 2009-12-01 22:53:49 +0100 (Tue, 01 Dec 2009)
Log Message:
-----------
HREPTWO-3467:
try to convert properties, even though this might fail AND induces performance penalty.
Modified Paths:
--------------
hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/updater/UpdaterProperty.java
Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/updater/UpdaterProperty.java
===================================================================
--- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/updater/UpdaterProperty.java 2009-12-01 21:47:10 UTC (rev 20966)
+++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/updater/UpdaterProperty.java 2009-12-01 21:53:49 UTC (rev 20967)
@@ -122,8 +122,9 @@
String name = getName();
- boolean isSingle = false;
- boolean isMultiple = false;
+ boolean matchSingle = false;
+ boolean matchMultiple = false;
+ boolean exactMatch = false;
Set nodeTypes = new HashSet();
nodeTypes.add(((Node)parent.origin).getPrimaryNodeType());
nodeTypes.addAll(Arrays.asList(((Node)parent.origin).getMixinNodeTypes()));
@@ -131,46 +132,51 @@
for (PropertyDefinition propDef : nodeType.getPropertyDefinitions()) {
if (propDef.getName().equals(name)) {
if (propDef.isMultiple()) {
+ matchMultiple = true;
+ matchSingle = false;
if (values != null) {
- isMultiple = true;
- isSingle = false;
+ exactMatch = true;
break;
}
} else {
+ matchSingle = true;
+ matchMultiple = false;
if (value != null) {
- isSingle = true;
- isMultiple = false;
+ exactMatch = true;
break;
}
}
} else if (propDef.getName().equals("*")) {
if (propDef.isMultiple()) {
if (values != null) {
- isMultiple = true;
- isSingle = false;
+ matchMultiple = true;
+ matchSingle = false;
}
} else {
if (value != null) {
- isSingle = true;
- isMultiple = false;
+ matchSingle = true;
+ matchMultiple = false;
}
}
}
}
+ if (exactMatch) {
+ break;
+ }
}
- if (isSingle) {
+ if (matchSingle) {
if (isMultiple()) {
if (UpdaterEngine.log.isDebugEnabled()) {
UpdaterEngine.log.warn("commit set singlevalue from multivalue property " + name + " on " + getPath());
}
- origin = ((Node)parent.origin).setProperty(name, values);
+ origin = ((Node)parent.origin).setProperty(name, values[0]);
} else {
if (UpdaterEngine.log.isDebugEnabled()) {
UpdaterEngine.log.debug("commit set singlevalue property " + name + " on " + getPath());
}
origin = ((Node)parent.origin).setProperty(name, value);
}
- } else if (isMultiple) {
+ } else if (matchMultiple) {
if (isMultiple()) {
if (UpdaterEngine.log.isDebugEnabled()) {
UpdaterEngine.log.debug("commit set multivalue property " + name + " on " + getPath());
@@ -180,7 +186,7 @@
if (UpdaterEngine.log.isDebugEnabled()) {
UpdaterEngine.log.warn("commit set multivalue from singlevalue property " + name + " on " + getPath());
}
- origin = ((Node)parent.origin).setProperty(name, values[0]);
+ origin = ((Node)parent.origin).setProperty(name, new Value[] { value} );
}
} else {
if (isMultiple()) {
From helpdesk at onehippo.com Tue Dec 1 22:45:15 2009
From: helpdesk at onehippo.com (JIRA (Berry van Halderen))
Date: Tue Dec 1 22:55:47 2009
Subject: [HippoRepos-dev] [JIRA] Commented: (HREPTWO-3467) Changing property
from single to multi-valued breaks update-all-content
In-Reply-To: <5741527.200291259156595837.JavaMail.jira@jira.vm.castaserver.com>
Message-ID: <26889682.231931259703915775.JavaMail.jira@jira.vm.castaserver.com>
[ http://issues.onehippo.com/browse/HREPTWO-3467?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=76094#action_76094 ]
Berry van Halderen commented on HREPTWO-3467:
---------------------------------------------
The template editor should provide proper rules on the actual conversion, rather than making the repository guess, with heavy performance hit, what to do.
> Changing property from single to multi-valued breaks update-all-content
> -----------------------------------------------------------------------
>
> Key: HREPTWO-3467
> URL: http://issues.onehippo.com/browse/HREPTWO-3467
> Project: Hippo Repository 2
> Issue Type: Bug
> Reporter: Frank van Lankvelt
> Assignee: Berry van Halderen
> Priority: High
> Fix For: r2.10.00
>
>
> When an item definition changes from single- to multi-valued, the repository workflow does not convert the property value. This breaks update-all-content.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
From helpdesk at onehippo.com Tue Dec 1 22:47:15 2009
From: helpdesk at onehippo.com (JIRA (Berry van Halderen))
Date: Tue Dec 1 22:57:47 2009
Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-3486) Update all content
fails when an existing type has been edited
In-Reply-To: <16584005.221291259587755997.JavaMail.jira@jira.vm.castaserver.com>
Message-ID: <22134113.231991259704035805.JavaMail.jira@jira.vm.castaserver.com>
[ http://issues.onehippo.com/browse/HREPTWO-3486?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Berry van Halderen resolved HREPTWO-3486.
-----------------------------------------
Resolution: Fixed
> Update all content fails when an existing type has been edited
> --------------------------------------------------------------
>
> Key: HREPTWO-3486
> URL: http://issues.onehippo.com/browse/HREPTWO-3486
> Project: Hippo Repository 2
> Issue Type: Bug
> Reporter: Frank van Lankvelt
> Assignee: Berry van Halderen
> Priority: Top
> Fix For: r2.10.00
>
>
> When a template for an existing type has been edited, update-all-content fails.
> Reproduction path:
> - open template for "defaultcontent:article"
> - click "edit"
> - click "done"
> - update-all-content on defaultcontent
> javax.jcr.nodetype.ConstraintViolationException: /hippo:namespaces/defaultcontent/article/hipposysedit:prototypes/hipposysedit:prototype[3]/defaultcontent:body: no definition found in parent node's node type for new node: no matching child node definition found for {http://www.hippoecm.org/defaultcontent/nt/1.7}body: no matching child node definition found for {http://www.hippoecm.org/defaultcontent/nt/1.7}body
> at org.apache.jackrabbit.core.SessionImpl.move(SessionImpl.java:999)
> at org.hippoecm.repository.decorating.SessionDecorator.move(SessionDecorator.java:194)
> at org.hippoecm.repository.updater.UpdaterNode.commit(UpdaterNode.java:258)
> at org.hippoecm.repository.updater.UpdaterNode.commit(UpdaterNode.java:342)
> at org.hippoecm.repository.updater.UpdaterNode.commit(UpdaterNode.java:342)
> at org.hippoecm.repository.updater.UpdaterNode.commit(UpdaterNode.java:342)
> at org.hippoecm.repository.updater.UpdaterNode.commit(UpdaterNode.java:342)
> at org.hippoecm.repository.updater.UpdaterNode.commit(UpdaterNode.java:342)
> at org.hippoecm.repository.updater.UpdaterNode.commit(UpdaterNode.java:342)
> at org.hippoecm.repository.updater.UpdaterSession.commit(UpdaterSession.java:214)
> at org.hippoecm.repository.updater.UpdaterEngine.upgrade(UpdaterEngine.java:558)
> at org.hippoecm.repository.updater.UpdaterEngine.migrate(UpdaterEngine.java:544)
> at org.hippoecm.repository.standardworkflow.RepositoryWorkflowImpl.updateModel(RepositoryWorkflowImpl.java:144)
> at org.hippoecm.repository.standardworkflow.RepositoryWorkflowImpl.updateModel(RepositoryWorkflowImpl.java:154)
> at org.hippoecm.repository.standardworkflow.RepositoryWorkflowImpl.updateModel(RepositoryWorkflowImpl.java:204)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at org.hippoecm.repository.impl.WorkflowManagerImpl$WorkflowInvocationImpl.invoke(WorkflowManagerImpl.java:788)
> at org.hippoecm.repository.impl.WorkflowManagerImpl$WorkflowInvocationHandler.invoke(WorkflowManagerImpl.java:512)
> at $Proxy2.updateModel(Unknown Source)
> at org.hippoecm.frontend.editor.workflow.RemodelWorkflowPlugin$1.execute(RemodelWorkflowPlugin.java:89)
> at org.hippoecm.frontend.editor.workflow.RemodelWorkflowPlugin$1.execute(RemodelWorkflowPlugin.java:1)
> at org.hippoecm.addon.workflow.CompatibilityWorkflowPlugin$WorkflowAction.execute(CompatibilityWorkflowPlugin.java:153)
> at org.hippoecm.addon.workflow.CompatibilityWorkflowPlugin$WorkflowAction$WorkflowDialog.execute(CompatibilityWorkflowPlugin.java:231)
> at org.hippoecm.frontend.editor.workflow.dialog.RemodelDialog.remodel(RemodelDialog.java:67)
> at org.hippoecm.frontend.editor.workflow.dialog.RemodelWizard$Step2$1.getLazyLoadComponent(RemodelWizard.java:84)
> at org.apache.wicket.extensions.ajax.markup.html.AjaxLazyLoadPanel$1.respond(AjaxLazyLoadPanel.java:79)
> at org.apache.wicket.ajax.AbstractDefaultAjaxBehavior.onRequest(AbstractDefaultAjaxBehavior.java:299)
> at org.apache.wicket.request.target.component.listener.BehaviorRequestTarget.processEvents(BehaviorRequestTarget.java:119)
> at org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:92)
> at org.hippoecm.frontend.PluginRequestCycleProcessor.processEvents(PluginRequestCycleProcessor.java:31)
> at org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1250)
> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1329)
> at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1428)
> at org.apache.wicket.RequestCycle.request(RequestCycle.java:545)
> at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:468)
> at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:301)
> at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
> at org.hippoecm.frontend.plugins.login.ConcurrentLoginFilter.doFilter(ConcurrentLoginFilter.java:54)
> at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
> at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
> at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
> at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
> at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:722)
> at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:404)
> at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
> at org.mortbay.jetty.Server.handle(Server.java:324)
> at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
> at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:828)
> at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
> at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
> at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
> at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
> at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450)
> Caused by: javax.jcr.nodetype.ConstraintViolationException: no matching child node definition found for {http://www.hippoecm.org/defaultcontent/nt/1.7}body
> at org.apache.jackrabbit.core.nodetype.EffectiveNodeType.getApplicableChildNodeDef(EffectiveNodeType.java:730)
> at org.apache.jackrabbit.core.NodeImpl.getApplicableChildNodeDefinition(NodeImpl.java:878)
> at org.apache.jackrabbit.core.SessionImpl.move(SessionImpl.java:995)
> ... 55 more
> javax.jcr.nodetype.ConstraintViolationException: no matching child node definition found for {http://www.hippoecm.org/defaultcontent/nt/1.7}body
> at org.apache.jackrabbit.core.nodetype.EffectiveNodeType.getApplicableChildNodeDef(EffectiveNodeType.java:730)
> at org.apache.jackrabbit.core.NodeImpl.getApplicableChildNodeDefinition(NodeImpl.java:878)
> at org.apache.jackrabbit.core.SessionImpl.move(SessionImpl.java:995)
> at org.hippoecm.repository.decorating.SessionDecorator.move(SessionDecorator.java:194)
> at org.hippoecm.repository.updater.UpdaterNode.commit(UpdaterNode.java:258)
> at org.hippoecm.repository.updater.UpdaterNode.commit(UpdaterNode.java:342)
> at org.hippoecm.repository.updater.UpdaterNode.commit(UpdaterNode.java:342)
> at org.hippoecm.repository.updater.UpdaterNode.commit(UpdaterNode.java:342)
> at org.hippoecm.repository.updater.UpdaterNode.commit(UpdaterNode.java:342)
> at org.hippoecm.repository.updater.UpdaterNode.commit(UpdaterNode.java:342)
> at org.hippoecm.repository.updater.UpdaterNode.commit(UpdaterNode.java:342)
> at org.hippoecm.repository.updater.UpdaterSession.commit(UpdaterSession.java:214)
> at org.hippoecm.repository.updater.UpdaterEngine.upgrade(UpdaterEngine.java:558)
> at org.hippoecm.repository.updater.UpdaterEngine.migrate(UpdaterEngine.java:544)
> at org.hippoecm.repository.standardworkflow.RepositoryWorkflowImpl.updateModel(RepositoryWorkflowImpl.java:144)
> at org.hippoecm.repository.standardworkflow.RepositoryWorkflowImpl.updateModel(RepositoryWorkflowImpl.java:154)
> at org.hippoecm.repository.standardworkflow.RepositoryWorkflowImpl.updateModel(RepositoryWorkflowImpl.java:204)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at org.hippoecm.repository.impl.WorkflowManagerImpl$WorkflowInvocationImpl.invoke(WorkflowManagerImpl.java:788)
> at org.hippoecm.repository.impl.WorkflowManagerImpl$WorkflowInvocationHandler.invoke(WorkflowManagerImpl.java:512)
> at $Proxy2.updateModel(Unknown Source)
> at org.hippoecm.frontend.editor.workflow.RemodelWorkflowPlugin$1.execute(RemodelWorkflowPlugin.java:89)
> at org.hippoecm.frontend.editor.workflow.RemodelWorkflowPlugin$1.execute(RemodelWorkflowPlugin.java:1)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
From helpdesk at onehippo.com Tue Dec 1 22:47:15 2009
From: helpdesk at onehippo.com (JIRA (Berry van Halderen))
Date: Tue Dec 1 22:57:48 2009
Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-3467) Changing property
from single to multi-valued breaks update-all-content
In-Reply-To: <5741527.200291259156595837.JavaMail.jira@jira.vm.castaserver.com>
Message-ID: <29726743.231971259704035768.JavaMail.jira@jira.vm.castaserver.com>
[ http://issues.onehippo.com/browse/HREPTWO-3467?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Berry van Halderen resolved HREPTWO-3467.
-----------------------------------------
Resolution: Won't Fix
Although this works now, the template editor knows both original and destination type. By letting the repository do guessing, this not only might fail, but also induces a substantial performance hit.
> Changing property from single to multi-valued breaks update-all-content
> -----------------------------------------------------------------------
>
> Key: HREPTWO-3467
> URL: http://issues.onehippo.com/browse/HREPTWO-3467
> Project: Hippo Repository 2
> Issue Type: Bug
> Reporter: Frank van Lankvelt
> Assignee: Berry van Halderen
> Priority: High
> Fix For: r2.10.00
>
>
> When an item definition changes from single- to multi-valued, the repository workflow does not convert the property value. This breaks update-all-content.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
From helpdesk at onehippo.com Tue Dec 1 22:49:15 2009
From: helpdesk at onehippo.com (JIRA (Berry van Halderen))
Date: Tue Dec 1 22:59:47 2009
Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-3432) Errors in log
during update all content but dialog shows success message
In-Reply-To: <25450935.179111258975695746.JavaMail.jira@jira.vm.castaserver.com>
Message-ID: <29876125.232011259704155775.JavaMail.jira@jira.vm.castaserver.com>
[ http://issues.onehippo.com/browse/HREPTWO-3432?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Berry van Halderen resolved HREPTWO-3432.
-----------------------------------------
Resolution: Cannot Reproduce
> Errors in log during update all content but dialog shows success message
> ------------------------------------------------------------------------
>
> Key: HREPTWO-3432
> URL: http://issues.onehippo.com/browse/HREPTWO-3432
> Project: Hippo Repository 2
> Issue Type: Bug
> Reporter: Bart van der Schans
> Assignee: Berry van Halderen
> Fix For: r2.10.00
>
> Original Estimate: 2 hours, 30 minutes
> Remaining Estimate: 2 hours, 30 minutes
>
> 23.11.2009 12:35:58 ERROR [org.hippoecm.editor.tools.JcrTypeStore.getTypeDescriptor():101] defaultcontent_1_11: is not a registered namespace prefix.
> 23.11.2009 12:35:58 ERROR [org.hippoecm.frontend.editor.impl.JcrTemplateStore.getTemplate():251] Error while fetching template for type: org.hippoecm.frontend.types.BuiltinTypeDescriptor@545cb390
> javax.jcr.NamespaceException: defaultcontent_1_11: is not a registered namespace prefix.
> at org.apache.jackrabbit.core.NamespaceRegistryImpl.getURI(NamespaceRegistryImpl.java:429)
> at org.hippoecm.editor.tools.JcrNamespace.getUri(JcrNamespace.java:68)
> at org.hippoecm.editor.tools.JcrNamespace.(JcrNamespace.java:41)
> at org.hippoecm.frontend.editor.impl.JcrTemplateStore.getTemplateNode(JcrTemplateStore.java:199)
> at org.hippoecm.frontend.editor.impl.JcrTemplateStore.getTemplate(JcrTemplateStore.java:248)
> at org.hippoecm.frontend.editor.impl.JcrTemplateStore.find(JcrTemplateStore.java:119)
> at org.hippoecm.frontend.editor.impl.TemplateEngine.getTemplate(TemplateEngine.java:151)
> at org.hippoecm.frontend.editor.viewer.ViewerPlugin.createTemplate(ViewerPlugin.java:79)
> at org.hippoecm.frontend.editor.viewer.ViewerPlugin.onModelChanged(ViewerPlugin.java:68)
> at org.apache.wicket.Component.modelChanged(Component.java:2187)
> at org.hippoecm.frontend.editor.viewer.ViewerPlugin.(ViewerPlugin.java:57)
> at sun.reflect.GeneratedConstructorAccessor132.newInstance(Unknown Source)
> at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
> at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
> at org.hippoecm.frontend.plugin.impl.PluginFactory.createPlugin(PluginFactory.java:71)
> at org.hippoecm.frontend.plugin.impl.PluginManager.start(PluginManager.java:83)
> at org.hippoecm.frontend.plugin.impl.PluginContext.start(PluginContext.java:249)
> at org.hippoecm.frontend.plugin.impl.ClusterControl.start(ClusterControl.java:111)
> at org.hippoecm.frontend.plugins.cms.edit.AbstractCmsEditor.start(AbstractCmsEditor.java:262)
> at org.hippoecm.frontend.plugins.cms.edit.HippostdPublishableEditor.start(HippostdPublishableEditor.java:133)
> at org.hippoecm.frontend.plugins.cms.edit.HippostdPublishableEditor.refresh(HippostdPublishableEditor.java:160)
> at org.hippoecm.frontend.plugins.cms.edit.EditorManagerPlugin.refresh(EditorManagerPlugin.java:144)
> at org.hippoecm.frontend.Home.processEvents(Home.java:146)
> at org.hippoecm.frontend.PluginRequestCycleProcessor.processEvents(PluginRequestCycleProcessor.java:37)
> at org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1250)
> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1329)
> at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1428)
> at org.apache.wicket.RequestCycle.request(RequestCycle.java:545)
> at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:468)
> at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:301)
> at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1115)
> at org.hippoecm.frontend.plugins.login.ConcurrentLoginFilter.doFilter(ConcurrentLoginFilter.java:54)
> at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1115)
> at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:361)
> at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
> at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
> at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
> at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:417)
> at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
> at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
> at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
> at org.mortbay.jetty.Server.handle(Server.java:324)
> at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:534)
> at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:864)
> at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:533)
> at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:207)
> at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:403)
> at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
> at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:522)
> 23.11.2009 12:35:58 ERROR [org.hippoecm.frontend.plugin.impl.PluginFactory.createPlugin():89] java.lang.NullPointerException: null
> java.lang.reflect.InvocationTargetException
> at sun.reflect.GeneratedConstructorAccessor132.newInstance(Unknown Source)
> at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
> at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
> at org.hippoecm.frontend.plugin.impl.PluginFactory.createPlugin(PluginFactory.java:71)
> at org.hippoecm.frontend.plugin.impl.PluginManager.start(PluginManager.java:83)
> at org.hippoecm.frontend.plugin.impl.PluginContext.start(PluginContext.java:249)
> at org.hippoecm.frontend.plugin.impl.ClusterControl.start(ClusterControl.java:111)
> at org.hippoecm.frontend.plugins.cms.edit.AbstractCmsEditor.start(AbstractCmsEditor.java:262)
> at org.hippoecm.frontend.plugins.cms.edit.HippostdPublishableEditor.start(HippostdPublishableEditor.java:133)
> at org.hippoecm.frontend.plugins.cms.edit.HippostdPublishableEditor.refresh(HippostdPublishableEditor.java:160)
> at org.hippoecm.frontend.plugins.cms.edit.EditorManagerPlugin.refresh(EditorManagerPlugin.java:144)
> at org.hippoecm.frontend.Home.processEvents(Home.java:146)
> at org.hippoecm.frontend.PluginRequestCycleProcessor.processEvents(PluginRequestCycleProcessor.java:37)
> at org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1250)
> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1329)
> at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1428)
> at org.apache.wicket.RequestCycle.request(RequestCycle.java:545)
> at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:468)
> at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:301)
> at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1115)
> at org.hippoecm.frontend.plugins.login.ConcurrentLoginFilter.doFilter(ConcurrentLoginFilter.java:54)
> at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1115)
> at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:361)
> at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
> at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
> at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
> at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:417)
> at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
> at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
> at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
> at org.mortbay.jetty.Server.handle(Server.java:324)
> at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:534)
> at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:864)
> at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:533)
> at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:207)
> at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:403)
> at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
> at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:522)
> Caused by: java.lang.NullPointerException
> at org.hippoecm.frontend.plugin.impl.PluginContext.newCluster(PluginContext.java:75)
> at org.hippoecm.frontend.editor.viewer.ViewerPlugin.createTemplate(ViewerPlugin.java:85)
> at org.hippoecm.frontend.editor.viewer.ViewerPlugin.onModelChanged(ViewerPlugin.java:68)
> at org.apache.wicket.Component.modelChanged(Component.java:2187)
> at org.hippoecm.frontend.editor.viewer.ViewerPlugin.(ViewerPlugin.java:57)
> ... 38 more
> 23.11.2009 12:35:58 WARN [org.hippoecm.frontend.plugin.impl.PluginContext.registerService():174] plugin is registering a service when stopping; ignoring
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
From helpdesk at onehippo.com Tue Dec 1 22:51:15 2009
From: helpdesk at onehippo.com (JIRA (Berry van Halderen))
Date: Tue Dec 1 23:01:47 2009
Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-3372) Create upgrade
module that translated mandatory into required
In-Reply-To: <18452909.118391257948675736.JavaMail.jira@jira.vm.castaserver.com>
Message-ID: <30634885.232031259704275768.JavaMail.jira@jira.vm.castaserver.com>
[ http://issues.onehippo.com/browse/HREPTWO-3372?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Berry van Halderen resolved HREPTWO-3372.
-----------------------------------------
Resolution: Available for testing
> Create upgrade module that translated mandatory into required
> -------------------------------------------------------------
>
> Key: HREPTWO-3372
> URL: http://issues.onehippo.com/browse/HREPTWO-3372
> Project: Hippo Repository 2
> Issue Type: Sub-task
> Reporter: Frank van Lankvelt
> Assignee: Berry van Halderen
> Fix For: r2.10.00
>
> Original Estimate: 4 hours
> Remaining Estimate: 4 hours
>
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
From svn-logs at hippocms.org Tue Dec 1 23:45:32 2009
From: svn-logs at hippocms.org (bvanhalderen)
Date: Tue Dec 1 23:45:27 2009
Subject: [HippoRepos-dev] [20968] hippo-ecm/trunk: HREPTWO-3366:
Message-ID: <20091201224532.A7A75C96D@svnnew.onehippo.org>
Revision: 20968
Author: bvanhalderen
Date: 2009-12-01 23:45:31 +0100 (Tue, 01 Dec 2009)
Log Message:
-----------
HREPTWO-3366:
- remove hippo and hipposys from indexing_configuration to allow both
2.0 and 2.0.1 version during startup.
- in order to do this, make sure the hippo namespace is initialized
before the searchmanager is activated rt after jackrabbit startup.
Modified Paths:
--------------
hippo-ecm/trunk/addon/builtin/test/src/test/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml
hippo-ecm/trunk/addon/eavesdrop/src/test/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml
hippo-ecm/trunk/addon/faceteddate/repository/src/test/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml
hippo-ecm/trunk/addon/reviewed-action/test/src/test/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml
hippo-ecm/trunk/addon/sample/test/src/test/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml
hippo-ecm/trunk/frontend/test/src/main/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml
hippo-ecm/trunk/repository/application/src/main/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml
hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/LocalHippoRepository.java
hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/jackrabbit/RepositoryImpl.java
hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/query/lucene/ServicingIndexingConfigurationImpl.java
hippo-ecm/trunk/repository/engine/src/test/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml
hippo-ecm/trunk/repository/jca/src/main/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml
hippo-ecm/trunk/repository/test/src/test/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml
hippo-ecm/trunk/tools/projectexport/src/test/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml
Added Paths:
-----------
hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/query/lucene/OverlayNamespaceResolver.java
Modified: hippo-ecm/trunk/addon/builtin/test/src/test/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml
===================================================================
--- hippo-ecm/trunk/addon/builtin/test/src/test/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml 2009-12-01 21:53:49 UTC (rev 20967)
+++ hippo-ecm/trunk/addon/builtin/test/src/test/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml 2009-12-01 22:45:31 UTC (rev 20968)
@@ -15,8 +15,7 @@
limitations under the License.
-->
-
+hippostd:date
Modified: hippo-ecm/trunk/addon/eavesdrop/src/test/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml
===================================================================
--- hippo-ecm/trunk/addon/eavesdrop/src/test/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml 2009-12-01 21:53:49 UTC (rev 20967)
+++ hippo-ecm/trunk/addon/eavesdrop/src/test/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml 2009-12-01 22:45:31 UTC (rev 20968)
@@ -15,8 +15,7 @@
limitations under the License.
-->
-
+hippo:paths
Modified: hippo-ecm/trunk/addon/faceteddate/repository/src/test/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml
===================================================================
--- hippo-ecm/trunk/addon/faceteddate/repository/src/test/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml 2009-12-01 21:53:49 UTC (rev 20967)
+++ hippo-ecm/trunk/addon/faceteddate/repository/src/test/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml 2009-12-01 22:45:31 UTC (rev 20968)
@@ -15,8 +15,7 @@
limitations under the License.
-->
-
+hippostd:date
Modified: hippo-ecm/trunk/addon/reviewed-action/test/src/test/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml
===================================================================
--- hippo-ecm/trunk/addon/reviewed-action/test/src/test/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml 2009-12-01 21:53:49 UTC (rev 20967)
+++ hippo-ecm/trunk/addon/reviewed-action/test/src/test/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml 2009-12-01 22:45:31 UTC (rev 20968)
@@ -15,8 +15,7 @@
limitations under the License.
-->
-
+hippostd:date
Modified: hippo-ecm/trunk/addon/sample/test/src/test/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml
===================================================================
--- hippo-ecm/trunk/addon/sample/test/src/test/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml 2009-12-01 21:53:49 UTC (rev 20967)
+++ hippo-ecm/trunk/addon/sample/test/src/test/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml 2009-12-01 22:45:31 UTC (rev 20968)
@@ -15,8 +15,7 @@
limitations under the License.
-->
-
+hippostd:date
Modified: hippo-ecm/trunk/frontend/test/src/main/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml
===================================================================
--- hippo-ecm/trunk/frontend/test/src/main/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml 2009-12-01 21:53:49 UTC (rev 20967)
+++ hippo-ecm/trunk/frontend/test/src/main/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml 2009-12-01 22:45:31 UTC (rev 20968)
@@ -15,8 +15,7 @@
limitations under the License.
-->
-
+hippostd:date
Modified: hippo-ecm/trunk/repository/application/src/main/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml
===================================================================
--- hippo-ecm/trunk/repository/application/src/main/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml 2009-12-01 21:53:49 UTC (rev 20967)
+++ hippo-ecm/trunk/repository/application/src/main/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml 2009-12-01 22:45:31 UTC (rev 20968)
@@ -15,10 +15,10 @@
limitations under the License.
-->
-
+
+ hippostd:htmlhippostd:date
Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/LocalHippoRepository.java
===================================================================
--- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/LocalHippoRepository.java 2009-12-01 21:53:49 UTC (rev 20967)
+++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/LocalHippoRepository.java 2009-12-01 22:45:31 UTC (rev 20968)
@@ -87,12 +87,6 @@
@SuppressWarnings("unused")
private final static String SVN_ID = "$Id$";
- /** Hippo Namespace */
- public final static String NAMESPACE_URI = "http://www.onehippo.org/jcr/hippo/nt/2.0.1";
-
- /** Hippo Namespace prefix */
- public final static String NAMESPACE_PREFIX = "hippo";
-
/** System property for overriding the repository path */
public final static String SYSTEM_PATH_PROPERTY = "repo.path";
@@ -335,19 +329,6 @@
}
}
- try {
- log.info("Initializing hippo namespace");
- initializeNamespace(jcrRootSession.getWorkspace().getNamespaceRegistry(), NAMESPACE_PREFIX, NAMESPACE_URI);
- log.info("Initializing hipposys namespace");
- initializeNamespace(jcrRootSession.getWorkspace().getNamespaceRegistry(), "hipposys", "http://www.onehippo.org/jcr/hipposys/nt/1.0");
- log.info("Initializing hipposysedit namespace");
- initializeNamespace(jcrRootSession.getWorkspace().getNamespaceRegistry(), "hipposysedit", "http://www.onehippo.org/jcr/hipposysedit/nt/1.1");
- } catch (UnsupportedRepositoryOperationException ex) {
- throw new RepositoryException("Could not initialize repository with hippo namespace", ex);
- } catch (AccessDeniedException ex) {
- throw new RepositoryException("Could not initialize repository with hippo namespace", ex);
- }
-
Session syncSession = jcrRootSession.impersonate(new SimpleCredentials("system", new char[] {}));
for(String cndName : new String[] { "hippo.cnd", "hipposys.cnd", "hipposysedit.cnd" }) {
Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/jackrabbit/RepositoryImpl.java
===================================================================
--- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/jackrabbit/RepositoryImpl.java 2009-12-01 21:53:49 UTC (rev 20967)
+++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/jackrabbit/RepositoryImpl.java 2009-12-01 22:45:31 UTC (rev 20968)
@@ -18,10 +18,12 @@
import javax.jcr.AccessDeniedException;
import javax.jcr.Credentials;
import javax.jcr.LoginException;
+import javax.jcr.NamespaceException;
import javax.jcr.NoSuchWorkspaceException;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.SimpleCredentials;
+import javax.jcr.UnsupportedRepositoryOperationException;
import javax.security.auth.Subject;
import org.slf4j.Logger;
@@ -55,6 +57,26 @@
super(repConfig);
}
+ @Override
+ protected NamespaceRegistryImpl createNamespaceRegistry(FileSystem fs) throws RepositoryException {
+ NamespaceRegistryImpl nsReg = super.createNamespaceRegistry(fs);
+ log.info("Initializing hippo namespace");
+ safeRegisterNamespace(nsReg, "hippo", "http://www.onehippo.org/jcr/hippo/nt/2.0.1");
+ log.info("Initializing hipposys namespace");
+ safeRegisterNamespace(nsReg, "hipposys", "http://www.onehippo.org/jcr/hipposys/nt/1.0");
+ log.info("Initializing hipposysedit namespace");
+ safeRegisterNamespace(nsReg, "hipposysedit", "http://www.onehippo.org/jcr/hipposysedit/nt/1.1");
+ return nsReg;
+ }
+
+ private void safeRegisterNamespace(NamespaceRegistryImpl nsreg, String prefix, String uri) throws NamespaceException, RepositoryException {
+ try {
+ nsreg.getURI(prefix);
+ } catch (NamespaceException ex) {
+ nsreg.registerNamespace(prefix, uri);
+ }
+ }
+
private FacetedNavigationEngine facetedEngine;
public FacetedNavigationEngine getFacetedNavigationEngine() {
Added: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/query/lucene/OverlayNamespaceResolver.java
===================================================================
--- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/query/lucene/OverlayNamespaceResolver.java (rev 0)
+++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/query/lucene/OverlayNamespaceResolver.java 2009-12-01 22:45:31 UTC (rev 20968)
@@ -0,0 +1,66 @@
+package org.hippoecm.repository.query.lucene;
+
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+import javax.jcr.NamespaceException;
+import javax.jcr.NamespaceRegistry;
+import javax.jcr.RepositoryException;
+
+import org.apache.jackrabbit.spi.commons.namespace.NamespaceResolver;
+
+public class OverlayNamespaceResolver implements NamespaceResolver {
+ private final Map overlayPrefixToURI = new HashMap();
+
+ private final Map overlayUriToPrefix = new HashMap();
+
+ private NamespaceRegistry upstream;
+
+ public OverlayNamespaceResolver(NamespaceRegistry nsMappings, Properties namespaces) {
+ this.upstream = nsMappings;
+ for(Enumeration prefixes = namespaces.propertyNames(); prefixes.hasMoreElements(); ) {
+ String prefix = (String) prefixes.nextElement();
+ addOverlayNamespace(prefix, namespaces.getProperty(prefix));
+ }
+ }
+
+ /**
+ * Adds the given namespace declaration to this resolver.
+ *
+ * @param prefix namespace prefix
+ * @param uri namespace URI
+ */
+ private void addOverlayNamespace(String prefix, String uri) {
+ overlayPrefixToURI.put(prefix, uri);
+ overlayUriToPrefix.put(uri, prefix);
+ }
+
+ /** {@inheritDoc} */
+ public String getURI(String prefix) throws NamespaceException {
+ String uri = overlayPrefixToURI.get(prefix);
+ if (uri != null) {
+ return uri;
+ } else {
+ try {
+ return upstream.getURI(prefix);
+ } catch (RepositoryException ex) {
+ throw new NamespaceException("namespace "+prefix+" not defined", ex);
+ }
+ }
+ }
+
+ /** {@inheritDoc} */
+ public String getPrefix(String uri) throws NamespaceException {
+ String prefix = overlayUriToPrefix.get(uri);
+ if (prefix != null) {
+ return prefix;
+ } else {
+ try {
+ return upstream.getPrefix(uri);
+ } catch (RepositoryException ex) {
+ throw new NamespaceException("namespace "+prefix+" not defined", ex);
+ }
+ }
+ }
+}
Property changes on: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/query/lucene/OverlayNamespaceResolver.java
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Modified: hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/query/lucene/ServicingIndexingConfigurationImpl.java
===================================================================
--- hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/query/lucene/ServicingIndexingConfigurationImpl.java 2009-12-01 21:53:49 UTC (rev 20967)
+++ hippo-ecm/trunk/repository/engine/src/main/java/org/hippoecm/repository/query/lucene/ServicingIndexingConfigurationImpl.java 2009-12-01 22:45:31 UTC (rev 20968)
@@ -95,7 +95,7 @@
@Override
public void init(Element config, QueryHandlerContext context, NamespaceMappings nsMappings) throws Exception {
super.init(config, context, nsMappings);
- NamespaceResolver nsResolver = new AdditionalNamespaceResolver(getNamespaces(config));
+ NamespaceResolver nsResolver = new OverlayNamespaceResolver(context.getNamespaceRegistry(), getNamespaces(config));
NameResolver resolver = new ParsingNameResolver(NameFactoryImpl.getInstance(), nsResolver);
NodeList indexingConfigs = config.getChildNodes();
Modified: hippo-ecm/trunk/repository/engine/src/test/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml
===================================================================
--- hippo-ecm/trunk/repository/engine/src/test/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml 2009-12-01 21:53:49 UTC (rev 20967)
+++ hippo-ecm/trunk/repository/engine/src/test/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml 2009-12-01 22:45:31 UTC (rev 20968)
@@ -15,8 +15,7 @@
limitations under the License.
-->
-
+hippo:paths
Modified: hippo-ecm/trunk/repository/jca/src/main/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml
===================================================================
--- hippo-ecm/trunk/repository/jca/src/main/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml 2009-12-01 21:53:49 UTC (rev 20967)
+++ hippo-ecm/trunk/repository/jca/src/main/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml 2009-12-01 22:45:31 UTC (rev 20968)
@@ -15,8 +15,7 @@
limitations under the License.
-->
-
+hippostd:html
Modified: hippo-ecm/trunk/repository/test/src/test/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml
===================================================================
--- hippo-ecm/trunk/repository/test/src/test/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml 2009-12-01 21:53:49 UTC (rev 20967)
+++ hippo-ecm/trunk/repository/test/src/test/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml 2009-12-01 22:45:31 UTC (rev 20968)
@@ -15,8 +15,7 @@
limitations under the License.
-->
-
+hippo:paths
Modified: hippo-ecm/trunk/tools/projectexport/src/test/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml
===================================================================
--- hippo-ecm/trunk/tools/projectexport/src/test/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml 2009-12-01 21:53:49 UTC (rev 20967)
+++ hippo-ecm/trunk/tools/projectexport/src/test/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml 2009-12-01 22:45:31 UTC (rev 20968)
@@ -15,8 +15,7 @@
limitations under the License.
-->
-
+hippo:paths
From helpdesk at onehippo.com Tue Dec 1 23:36:15 2009
From: helpdesk at onehippo.com (JIRA (Berry van Halderen))
Date: Tue Dec 1 23:46:47 2009
Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-3366) Automatic upgrade
from 2.09 to 2.10
In-Reply-To: <30941399.113791257926175787.JavaMail.jira@jira.vm.castaserver.com>
Message-ID: <11995143.232321259706975777.JavaMail.jira@jira.vm.castaserver.com>
[ http://issues.onehippo.com/browse/HREPTWO-3366?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Berry van Halderen resolved HREPTWO-3366.
-----------------------------------------
Resolution: Available for testing
> Automatic upgrade from 2.09 to 2.10
> -----------------------------------
>
> Key: HREPTWO-3366
> URL: http://issues.onehippo.com/browse/HREPTWO-3366
> Project: Hippo Repository 2
> Issue Type: New Feature
> Reporter: Stephan Westen
> Assignee: Berry van Halderen
> Fix For: r2.10.00
>
>
> Automatic upgrade from 2.09 to 2.10 is probably needed because of improved 'required' validation.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
From helpdesk at onehippo.com Tue Dec 1 23:43:15 2009
From: helpdesk at onehippo.com (JIRA (Berry van Halderen))
Date: Tue Dec 1 23:53:47 2009
Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-3449) Check whether CNDs
have changes and bumb their version numbers
In-Reply-To: <863629.190311259062635681.JavaMail.jira@jira.vm.castaserver.com>
Message-ID: <8870674.232331259707395696.JavaMail.jira@jira.vm.castaserver.com>
[ http://issues.onehippo.com/browse/HREPTWO-3449?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Berry van Halderen resolved HREPTWO-3449.
-----------------------------------------
Resolution: Fixed
verified upto subversion revision 20968
> Check whether CNDs have changes and bumb their version numbers
> --------------------------------------------------------------
>
> Key: HREPTWO-3449
> URL: http://issues.onehippo.com/browse/HREPTWO-3449
> Project: Hippo Repository 2
> Issue Type: Task
> Reporter: Berry van Halderen
> Assignee: Berry van Halderen
> Fix For: r2.10.00
>
> Time Spent: 30 minutes
> Remaining Estimate: 0 minutes
>
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
From helpdesk at onehippo.com Wed Dec 2 00:35:15 2009
From: helpdesk at onehippo.com (JIRA (Berry van Halderen))
Date: Wed Dec 2 00:45:46 2009
Subject: [HippoRepos-dev] [JIRA] Created: (HREPTWO-3490) Remove outdated
documentation from trunk
Message-ID: <30462085.232351259710515705.JavaMail.jira@jira.vm.castaserver.com>
Remove outdated documentation from trunk
----------------------------------------
Key: HREPTWO-3490
URL: http://issues.onehippo.com/browse/HREPTWO-3490
Project: Hippo Repository 2
Issue Type: Task
Affects Versions: r2.10.00
Reporter: Berry van Halderen
Assignee: Berry van Halderen
Fix For: r2.10.00
Leave site generated from trunk to developer information and generated reports. The current documentation is on the documents site and maintained using Hippo CMS 7 itself.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
From svn-logs at hippocms.org Wed Dec 2 00:51:03 2009
From: svn-logs at hippocms.org (bvanhalderen)
Date: Wed Dec 2 00:51:03 2009
Subject: [HippoRepos-dev] [20969] hippo-ecm/trunk: HREPTWO-3490:
remove documentation currently on cms maintained documentation site
Message-ID: <20091201235103.ABEF9C96D@svnnew.onehippo.org>
Revision: 20969
Author: bvanhalderen
Date: 2009-12-02 00:51:02 +0100 (Wed, 02 Dec 2009)
Log Message:
-----------
HREPTWO-3490: remove documentation currently on cms maintained documentation site
Modified Paths:
--------------
hippo-ecm/trunk/pom.xml
hippo-ecm/trunk/src/site/site.xml
Added Paths:
-----------
hippo-ecm/trunk/src/site/CMS_logo.png
hippo-ecm/trunk/src/site/apt/
hippo-ecm/trunk/src/site/apt/integration_testing
hippo-ecm/trunk/src/site/apt/releasing
hippo-ecm/trunk/src/site/hippo_logo.png
Removed Paths:
-------------
hippo-ecm/trunk/src/changes/
hippo-ecm/trunk/src/site/content.xml
hippo-ecm/trunk/src/site/docerrors.xml
hippo-ecm/trunk/src/site/errorgraad.txt
hippo-ecm/trunk/src/site/folder.xml
hippo-ecm/trunk/src/site/hippo_xdoc_template.xml
hippo-ecm/trunk/src/site/resources/
hippo-ecm/trunk/src/site/restore_previous_version.xml
hippo-ecm/trunk/src/site/versioning-users.xml
hippo-ecm/trunk/src/site/versioning.xml
hippo-ecm/trunk/src/site/xdoc/
Modified: hippo-ecm/trunk/pom.xml
===================================================================
--- hippo-ecm/trunk/pom.xml 2009-12-01 22:45:31 UTC (rev 20968)
+++ hippo-ecm/trunk/pom.xml 2009-12-01 23:51:02 UTC (rev 20969)
@@ -47,25 +47,6 @@
-
- 2.09.02
- /tags/Tag-HREPTWO-v2_09_02
- http://repository.hippocms.org/maven2/org/hippoecm/hippo-ecm-quickstart-war/2.09.02/hippo-ecm-quickstart-war-2.09.02.war
- http://repository.hippocms.org/maven2/org/hippoecm/hippo-ecm-quickstart-ear/2.09.02/hippo-ecm-quickstart-ear-2.09.02.ear
- http://repository.hippocms.org/maven2/org/hippoecm/hippo-ecm-quickstart-bin/2.09.02/hippo-ecm-quickstart-bin-2.09.02.zip
- http://repository.hippocms.org/maven2/org/hippoecm/hippo-ecm-quickstart-bin/2.09.02/hippo-ecm-quickstart-bin-2.09.02.tar.gz
- hippo-ecm-package-ear-2.09.02.ear
- http://repo1.maven.org/maven/geronimo-spec/jars/geronimo-spec-jta-1.0-M1.jar
- http://wiki.hippo.nl/display/CMS7/Home
- http://svn.onehippo.org/repos/hippo/hippo-ecm
- http://repository.hippocms.org
- http://issues.onehippo.org
- Hippo CMS 7
- CMS 7
-
1.10.9.2
Copied: hippo-ecm/trunk/src/site/CMS_logo.png (from rev 20968, hippo-ecm/trunk/src/site/resources/images/CMS_logo.png)
===================================================================
(Binary files differ)
Property changes on: hippo-ecm/trunk/src/site/CMS_logo.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: svn:mergeinfo
+ /hippo-ecm/branches/Branch-HREPTWO-v2_03_xx/src/site/resources/images/CMS_logo.png:17183-17186,17202,17206,17211-17212
/hippo-ecm/branches/Branch-HREPTWO-v2_09_xx/src/site/resources/images/CMS_logo.png:20255-20460
/hippo-ecm/branches/wicket_upgrade_to_1_4/src/site/resources/images/CMS_logo.png:20604-20690
Copied: hippo-ecm/trunk/src/site/apt/integration_testing (from rev 20968, hippo-ecm/trunk/src/site/xdoc/integration_testing.xml)
===================================================================
--- hippo-ecm/trunk/src/site/apt/integration_testing (rev 0)
+++ hippo-ecm/trunk/src/site/apt/integration_testing 2009-12-01 23:51:02 UTC (rev 20969)
@@ -0,0 +1,347 @@
+
+
+
+
+
+ Core developer information
+
+
+
+
+
+
+Integration tests are designed to check the functionality of the application
+as a whole, rather than the internal working of an individual section of
+program code, which is the domain of normal unit testing.
+
+
+
+Selenium is such a toolset to create and run integration tests.
+
+
+
+Requirements:
+
+
+
Hippo ECM, maven, and usual tools to build Hippo ECM
+
Firefox 3;
+
Selenium IDE 1.0b2 add-on plugin for Firefox;
+
Wicket 1.3.5 (which will be patched).
+
+
+to run the automated tests furthermore:
+
+
+
Application container supporting standard JSR-88 (programmatic interface
+to deploy applications), such as glassfish (recommended), Websphere, WebLogic,
+etcetera. Tomcat and Jetty as not EE application containers.
+
+
+
+This description will assume you have basic knowledge on how to build Hippo
+ECM and how to operate application containers in general. It will describe in
+generic terms how to run the applications, when using different programs than
+described or on different installations the directory paths, and commands used
+will vary.
+
+
+
+The current trunk of Hippo ECM already contains the proper infrastructure for
+Selenium-based integration testing. This description will first outline how to
+run this integration test. Having done that, it outlines how to compose tests.
+First of all, we start by setting up the required environment.
+
+
+
+Next subsections describe:
+
+
+
Patch and compile wicket 1.3.5, compile Hippo ECM;
+compile the modified sources and install them in your local maven repository
+
+
+ mvn -DskipTests install
+
+
+this version will now be used in the compilation of hippo-ecm:
+
+
+ cd ../hippo-ecm
+ mvn -DskipTests install
+
+
+Make sure that in the future the modified wicket installation is not overwritten
+or re-downloaded. The patched wicket 1.3.5 installation is FULLY compatible
+with the original 1.3.5 release.
+
+
+
+ Background information:
+
+ The patched wicket 1.3.5 is necessary to run and develop Selenium based
+ tests. Wicket normally generates markup ids on the fly for wicket
+ components. These markup ids can vary from request to request making
+ them unsuitable for identifying a component in the browser DOM.
+
+ Since Selenium uses the markup ids to identify, for example, which element
+ was clicked, tests might fail because the Selenium test had no proper way
+ of identifying the items being indicated.
+
+ Generation of stable markup ids, that when the same run is done the ids are
+ the same as the ids from a previous run, is in certain situations possible.
+ However when wicket generates the ids, this method does not have the right
+ information upon which the stable id can be generated.
+
+ A request for integration on this patch will be submitted to the wicket
+ developers.
+
+
+
+Note that the patch is not required to run the CMS. Because of the way the
+patch has been constructed and the CMS code works, the generation of stable
+ids is only active with the patched version.
+
+
+
+
+
+
+Make sure you have a proper application server, such as Glasfish which can
+be obtained freely from:
+
+Glassfish is usually installed in a directure path such as /usr/local/glassfish-v2ur2
+this path is needed later as well as refered to as the installation directory of the application container.
+
+The administration console is usually available at
+
+
+ http://localhost:4848/
+
+
+with default username admin and password adminadmin.
+
+
+
+By default Glassfish will run applications on port 8080, which often conflicts
+with other applications. Thus we have setup the tests in such a manner that the
+applications should run on port 4849. You need to change the settings in the
+application container accordingly. Within glassfish this can be done using the
+administration console as such:
+
+In the right pane you will see the ports being listened to for http requests.
+Leave the admin-listener which normally has the Listener port set to 4848
+alone. One of the other listeners is probably set to 8080. If none of them
+are, find out which of them does not have the security setting enabled. Click
+on that one to view and edit the details. Modify the Listener port and set it
+to 4849. Select save.
+
+
+
+These steps complete the setup of the application server Glassfish. As
+mentioned earlier, any compliant application server is possible which should
+implement the JSR-88 standard. However the libraries needed are probably
+different. Therefor in that case you need to modify
+the package/pom.xml and put the right libraries into
+the additionalClasspathElement entries in the maven surefire
+plugin configuration. In addition to this you need to modify the the class
+name in the source file
+tools/testutils/src/main/java/org/hippoecm/testutils/deployer/Deployer.java,
+which is currently set to the glassfish instance of the deployment
+api: com.sun.enterprise.deployapi.SunDeploymentFactory.
+
+
+
+
+
+
+You are now ready to run the first simple Selenium test. Under default build,
+the integration tests using Selenium are not executed. However by
+setting the appserver.home system property during build, their
+profile is activated.
+
+
+
+The appserver.home property should be set to the location where
+your application server was installed, for
+instance /usr/local/glassfish-v2ur2. This parameter is passed
+maven using the -D flag.
+
+
+
+As a prerequisite to the running Selenium tests, the Seleniumn libraries
+require that the firefox-bin executable is found on the system executable
+path. This may or may not be the case on your system.
+
+
+For Ubuntu 8.04 (and higher) in combination with Firefox 3 this requires
+some extra setup (or at least with current Selenium version in use) as Selenium
+expects the firefox binary to be called firefox-bin, which is not the case on
+Ubuntu 8.04. Thus we create a symlink in /usr/lib/firefox to the Firefox binary
+as follows: (version might differ)
+The path /usr/lib/firefox-2.0.0.14 will propably differ though.
+
+
+Now run the provided Selenium test using:
+
+cd package/test
+mvn -B -Dappserver.home=/usr/local/glassfish-v2ur2 integration-test
+
+
+
+
+
+
+Make sure you download and install the Selenium IDE plugin for Firefox.
+Now deploy the EAR installation (it must be an ear installation of
+the package/ear project) into the application server. You can use
+the console of the application server (for glassfish, available at
+http://localhost:4848/).
+
+
+
+Run firefox, and access the cms by entering the
+URL http://localhost:4849/. Now fire up the Selenium IDE which
+is activated in the menu Tools -> Selenium IDE. As soom as the Selenium IDE
+starts, is will start recording. As format (menu Options -> Format) you must
+choose either HTML if you want to play back the recording in the Selenium IDE,
+but then you cannot put this integration test into the automated Selenium
+integration test for the CMS. Or you choose JAVA to get a human readable
+source representation.
+
+
+
+Made sure that in the Base URL box the URL http://localhost:4849/ is shown.
+Reload the page and this will be the first step recorded. You can now record
+a number of steps and when done you press to stop record button shown as a red
+ball on the right side of the Selenium IDE window. You can save a java-format
+based test using File -> Save Test Case As.
+
+
+
+To integrate the saved test, you can subclass the BasicSeleniumTest.java which
+does the setup/teardown of the Selenium tests and provides some helper functions
+for working with Ajax-requests. Make sure you leave the outer definitions intact,
+especially the @Before and @After definition. Just put the generated code
+without the class definition in the @Test marked method.
+
+
+
+You can also subclass CmsSeleniumTest.java which extends BasicSeleniumTest itself
+and adds functions for loading the homepage and logging in and out.
+
+
+
+The test class you have created must now be entered into the framework. To do
+this, modify the file:
+
+and add the classname to the Suite.SuiteClasses annotation. Don't
+forget the comma seperator and the .class extension.
+
+
+
+Some notes on recording Selenium tests:
+
+
+
Never use the autocompletion, as this will not be properly recorded.
+
You probably need to modify the generated source. In general the sleep
+times are not the best method of testing but
+Selenium.isTextPresent is more suited. Look for the other tests for examples.
+This section described releasing a pre-initial version milestone of the
+Hippo-ECM suite. This means releasing the project as a milestone build
+before a actual public release with a formal version number.
+
+
+The first formally released version must be 2.01.01 because of the current
+numbering scheme
+
+
+
+
+
+This description is based on maven 2.1.0, which should be taken as
+prerequisite. A good prerequisite is to use a cleaned out maven repository,
+although this will greatly affect the release time. Upon a first upgrade of
+maven to 2.1.0 you should do this, and this is to be performed later also on a
+regular basis.
+
+
+
+
+
+
+Before doing a release you should make sure you have a Jira issue.
+Maintaining a release in Jira is not part of this description.
+
+
+
+Make sure you have an up-to-date, no changes, no unknown files trunk
+checkout of the full hippo-ecm suite. In other words; do a clean
+checkout. Remove any hippo-ecm targets from your local maven repository
+as well as any locally build targets that you have installed.
+Then do a full build installing everything and including unit tests
+(this is a must):
+
+At times, it is easier to manage to release from a branch than from the
+trunk in SVN. In this case you should have a starting point with the
+to-be-released state of hippo-ecm in a branch that is named the same as
+the to be release version.
+In the description below the tag Release-HREPTWO-v2_01_00_M0
+is used with M0 replaced by a M followed by the milestone number where
+dots are replaced by underscores. This means that if you want to
+release from a branch, then you should have your sources available at
+the following URL, and checkout those in stead of the trunk:
+http://svn.onehippo.org/repos/hippo/hippo-ecm/branches/Release-HREPTWO-v2_01_00_M0
+
+
+
+At this time, make sure that any versions referenced in the documentation
+are up-to-date. In the pre-release milestones, the downloadable WARs and
+EARs are referenced in the documentation and include the svn revision
+number. Check, change and commit (in the branch if created a branch) the
+updated links in the documentation.
+
+
+
+
+
+
+As a conveniance method, certain information that would otherwise need to be
+given on the command like as arguments (like -Dtag,
+-DscmCommentPrefix) is specified in the root pom.xml.
+
+
+
+Modify the root pom.xml and update the section which starts with
+
+In this section there are two entries that need updating:
+
+
+
scmCommentPrefix
+
This is the Jira key of an open issue which is relevant for
+performing the release, as described inthe beginning of this description. The
+string specified may not contain any spaces, must specifiy a relevant Jira key
+and must end with a colon. Better to use just the Jira key followed by a
+colon.
+
tag
+
The tag name to be used in SVN. See the Hippo conventions for how this
+key must be specified, which in general will
+be Tag-HREPTWO-v2_xx_yy where xx and yy are the two digits
+numbers (using leading 0 if necessary) for the version and minor version to be
+used. Note that dots are replaced by underscore signs, otherwise the tag name
+is the same as specified in the Hippo conventions. The tag created in svn
+will be:
+
+Note that for releasing 2.06, the scmCommentPrefix is already
+specified correctly, and for the next release (candidate) the tag
+parameter is also already correct.
+
+
+
+
+
+When having modified the pom.xml, commit the changes to SVN.
+
+
+
+
+
+
+
+
+Now prepare for a release, which will enter the right version numbers in
+the pom.xml. Initially this will be a dry-run and nothing will actually
+be committed.
+
+
+
+The following maven call will perform this release preparation.
+
+
+
+mvn release:prepare -DdryRun=true
+
+
+
+After some initial actions taken by this command, the release plugin
+will prompt you for the version number to be used in the release.
+For pre-initial-release versions we are using 2.01.00.
+followed by the SVN revision number of the then current trunk.
+For example a version might be 2.01.00.13457 It will also
+ask for the next version to be used. Enter 2.01.00-SNAPSHOT
+for this on pre-initial-release milestone build.
+
+
+
+Make sure there where no errors. Some causes for problems can be:
+
+
+
dependencies which specifiy the version as ${parent.version} which
+cannot be translated by the maven-release-plugin
+
This plugin also cannot handle optional dependencies
+
+
+If everything looks sound, cleanup and do the actual release preparation:
+
+It is useless to specify a -DdevelopmentVersion
+or -DreleaseVersion on the comment line, the release plugin asks
+for these numbers on the comment line anyway, and does give proper defaults.
+
+
+
+When the release:prepare command runs, it will ask after a while for the
+release and development version. The defaults presented are the correct
+values to use normally. When having pressed enter twice the actual release
+will be made which takes quite amount of time due to the unit tests to be run.
+
+
+
+The release plugin however fails due to a bug in the maven release plugin. It
+fails with the message that a certain pom.xml already exists in svn. This
+error is to be ignored, and a simple workaround for this release plugin bug is
+available. After the failure do update the svn and continue the release as
+such:
+
+
+
+svn up
+mvn release:prepare -Dresume=true
+
+
+
+This will then complete the release in subversion correctly.
+
+
+
+Note that the current install uses the maven release plugin version
+2.0-beta-8, there is a newer version 2.0-beta-9 available which should fix the
+bug which leads to the initial failure of releasing and requires you to do a
+"svn up" to continue. However this new version 2.0-beta-9 has a
+different bug which causes the scmCommentPrefix to be ignored. Given our
+settings for committing in subversion (where commits without Jira issues are
+blocked), this makes it impossible to use the 2.0-beta-9 version.
+Therefore the remote tagging and commitByProject commands do not resolve any
+issues at this time.
+
+
+
+Therefore the remote
+
+
+
+
+
+
+First checkout the tagged version of hippo-ecm:
+
+Make sure that in your local maven settings.xml configuration file
+the upload ftp server is known and the credentials for uploading are
+set properly. This means that your ~/.m2/settings.xml
+file should contain a section similar to:
+
+You should replace ???????? with the password of the maven repository ftp
+server.
+
+
+
+Now deploy the build targets, i.e. upload to the public maven repository, using:
+
+
+mvn deploy
+
+
+
+All uploads should be performed without any timeouts in one go. If the
+network connection is unstable, you have to restart the whole deploy
+procedure.
+
+Enter version number 2.03.01 on all (sub)modules.
+
+
+
+
+
Property changes on: hippo-ecm/trunk/src/site/apt/releasing
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: svn:keywords
+ Id
Added: svn:mergeinfo
+ /hippo-ecm/branches/Branch-HREPTWO-v2_03_xx/src/site/xdoc/releasing.xml:17183-17186,17202,17206,17211-17212
/hippo-ecm/branches/Branch-HREPTWO-v2_09_xx/src/site/xdoc/releasing.xml:20255-20460
/hippo-ecm/branches/wicket_upgrade_to_1_4/src/site/xdoc/releasing.xml:20604-20690
Added: svn:eol-style
+ native
Deleted: hippo-ecm/trunk/src/site/content.xml
===================================================================
--- hippo-ecm/trunk/src/site/content.xml 2009-12-01 22:45:31 UTC (rev 20968)
+++ hippo-ecm/trunk/src/site/content.xml 2009-12-01 23:51:02 UTC (rev 20969)
@@ -1,1558 +0,0 @@
-
-
-
- .
-
- about
-
- release_notes
- Hippo CMS release notes
- Hippo CMS 7.1 release notes
- Hippo CMS 7.1 release notes
-
- Important changes for Hippo CMS end-users
- Improvements
- What didn't make it into the release?
- Demo
- List of Jira issues that have been resolved in Hippo CMS 7.1
-
- Roadmap Hippo CMS
- Roadmap Hippo CMS
- What's up for the future?
-
- Version numbering scheme
- Version numbering scheme
- How are Hippo ECM versions numbered?
- delve_into
-
- Bin Startup Help
- Bin Startup Help
- Error messages
- core
- Hacking the coreTake a deep dive into core Hippo CMS development.
- Hippo CMS is open source software. All source code is available from our SVN repository
- under the Apache license.
- This section explains how to get the source code, how to build it, and how to set
- up your IDE. In addition, the architecture and the conceptual ideas behind it
- are explained in detail.
-
- building
- Building Hippo CMSBuild Hippo CMS from source using your tool of choice.
- Getting the Hippo CMS source code and building it is easy. Hippo CMS
- uses a Maven build environment,
- but it is also possible to use a Java IDE like Eclipse
- or Netbeans.
-
- Developing Hippo CMS with Eclipse
- Developing Hippo CMS with Eclipse
- How to import and work with the Hippo CMS project in the Eclipse IDE.
- Introduction
- Prepare
- Configure Eclipse workspace
- Create Eclipse projects
- Fixup
- Run
- Code formatting
- Keeping up
-
- Building the Hippo CMS with maven
- Building the Hippo CMS with maven
- How to build the core Hippo CMS package from the sources using Maven?
- Building with Netbeans
- Building with Netbeans
- How to import and work with the Hippo CMS project in the Netbeans IDE.
- Prepare
- Configure Netbeans
-
Install the Subversion Plugin
-
Install the Mevenide2 Plugin
- Run / Debug
-
- Project Structure
- Project Structure
- Find your way in the Hippo CMS project.
- Why so many projects?
- Addon
- Dependencies between addons
- Finding your way
- Repository
- Frontend
- Package
- Archetypes
- Tools
- Api
- custom
-
- howto
-
- Customize an Editing Template
- Customize an Editing Template
- Learn how to create a template with a custom layout.
- Define the layout
- Update project
- Update template
- Template repository structure
- Share and enjoy
- Frontend skin customization
- Frontend skin customization
- Customize the appearance of Hippo CMS.
- Create your own skin
- What to customize
- Overview of a skin project
- How to apply a skin
- eclipse
-
- Configure Workspace
- Configure Workspace
- Configure Eclipse Workspace for Hippo CMS addon projects.
- Configure update sites
- Install plugins
- War overlays
- Import java project
- Import java project
- Howto import an existing java project.
-
- Start Eclipse
- Start Eclipse
- Start Eclipse to work on Hippo CMS addon projects.
- Create an Editing Template Plugin
- Create an Editing Template Plugin
- Create a template plugin that edits a custom type
- Create a plugin
- Create a custom type
- Make it available in the Document Type Editor
- My Favorite Developer Template Plugin
- Further reading
- Giving our plugin a place on the dashboard
- Giving our plugin a place on the dashboard
- Modify the dashboard layout to give your GUI plugin a permanent place.
- Adding you plugin to the repository
- Hello World
- Hello World
- Create a GUI plugin that displays "Hello World!"
- Maven structure
- pom.xml
- HelloWorldPlugin.java
- HelloWorldPlugin.html
- Building the plugin JAR
- Making the Hello World plugin context sensitive
- Making the Hello World plugin context sensitive
- Howto
- Howto
- Learn how to make your own add-ons.
- Hello Plugin World!
- Templates
- Other
- Testing the Hello World plugin
- Testing the Hello World plugin
- Include your own GUI plugin in Hippo CMS
- Adding a dependency on our plugin
- Running the application
- Configuring to application to use the plugin
- Plugin configuration screenshot
- Hello World screenshot
- Developing workflows
- Developing workflows
- Building your own workflow
- Creating a workflow class
- Writing the method that performs the workflow step
- Mapping the data in the class to data in the repository
- Deploying the workflow
- Hippo CMS Add-ons
- Hippo CMS Add-ons
- Extend Hippo CMS with your own add-ons.
- Introduction to add-on development
- Introduction to add-on development
- An introduction to Hippo CMS add-on development.
- Repository add-on
-
Content add-on
-
Editing Template add-on
- Frontend add-on
- Combined add-on
-
Custom Perspective
-
Customized namespace add-on
- jcr
- JCR InterfaceDirect access to your content through the JCR API.
- The standard JCR interface exposed by Hippo CMS gives you direct access
- to your content inside the repository, and all the content management
- functionalities provided by Hippo CMS. This allows you to build almost
- any imaginable application on top of Hippo CMS. This section describes how
- to get started, and provides some examples on how you could use the
- possibilities of the JCR interface.
-
- JCR Examples
- JCR Examples
- Examples of accessing Hippo CMS functionality directly through the JCR API
- Example 1: Get a document
- Example 2: Obtaining the workflow on a document
- Example 3: Obtaining older version of document
- Example 4: Get latest news articles
-
- JCR Basics
- JCR Basics
- Get low level access to your content.
- Connecting with Hippo Repository
- Working with JCR
- Dependencies
- Complete Example Class
- Next
- reference
- JCR reference guideDeeper explanations of the JCR interface
- Derived Data
- Derived Data
-
-Derived data is the concept where additional information for a document
-generated, based upon the information of the document itself.
-
- Description of the problem
- Facility offered
- How to define
-
Defining the data for which to compute properties
-
Configuring the repository to compute derived properties for this data
-
Supplying the method that computes the derived property
-
- project_export
-
- Add a new project
- Add a new project
- How to add a new project to the list of known projects in the
- project export.
- Alternative
- Excludes
- Excludes
- How to exclude nodes from an export
- Export excludes
- Next
- Alternative
- Export a sub project
- Export a sub project
- Export a sub project
- Export project
- Folder
- Maven Project
- Next
- Alternative
- Project Export
- Project Export
- How to export customized content
- Next
- Start a Project Export
- Start a Project Export
- How to start a project export
- Start project export
- Next
- Alternative
- Why Export?
- Why Export?
- Why customized content in sources?
-
- Next
- Alternative
- reference
-
- frontend
-
- Frontend Plugin Architecture
- Frontend Plugin Architecture
- Explanation of the frontend plugin architecture.
- Customization by configuration
- Applications
- Advanced - Subject to Change
- Plugin Configuration
- Plugin Context
- Dynamic Services
- Frontend Plugin Communication
- Frontend Plugin Communication
- Learn how frontend plugins communicate with each other.
- Sharing Models
- Dialogs / Page Serialization
- Advanced - Subject to Change
- Other Communication Patterns
- Available Services
- Frontend Plugins
- Frontend Plugins
- Plugins to customize or extend the user interface.
- Add-on Reference
- Add-on Reference
- Technical documentation on add-on development.
- Repository plugins vs. frontend plugins
- repository
-
- Bootstrapping the repository
- Bootstrapping the repository
- How to use
- Example:
- Building package with built-in bootstrap procedures
- Repository Plugins
- Repository Plugins
- Architecture of Hippo CMS and Hippo Repository
- Workflow functionality
- Workflow functionality
- Workflow model
- Workflow access
- Reviewed actions workflow
-
- Synonyms
- Synonyms
- List of synonyms used in discussions about Hippo CMS.
- Hippo CMS plugin
- Frontend plugin
- Document type
- Backend template
- Editing template
- Documenttype
- Delve into Hippo CMS
- Delve into Hippo CMS
- Get to know all the details of Hippo CMS.
- Your own Quickstart
- Your own Quickstart
- Quickstart in your own servlet container.
- Download
- Deploy, run and access
-
-
- Deploy the binary distribution
- Quickstart Steps
- Quickstart Steps
- Quickly install and use standard Hippo CMS with example content.
- Install standard Hippo CMS with example content
- Using standard Hippo CMS with example content
- Alternatives
- Next
- sysadmin
- System Administration GuideWhat does a system administrator need to know and do for Hippo CMS?
- These pages describe how to get Hippo ECM up and running and how to configure your running application.
-
- configuration
- ConfigurationWhat does a system administrator have to configure in Hippo CMS?
- Whole folder, and rewrite if necessary.
-
- Console
- Console
- A simple GUI application that can be used to edit the configuration.
- Screenshot of the console
- Database server
- Database server
- Configuration of the database server.
- Increase the maximum allowed asset size
- max_allowed_packet
-
- nodes
- Configuration Nodes Reference
- Configuration of Hippo ECM functionality is stored inside Hippo Repository
- as configuration nodes in the JCR tree, and is accessible through the standard
- JCR interface.
-
- Domains Configuration
- Domains Configuration
-
- Domains define a subset of nodes from the repository and which users or groups
- have which role on the nodes in the domain.
-
- Structure
- Nodes
- hippo:domain
- hipposys:domainrule
- hippo:facetrule
- hipposys:authrole
- Groups Configuration
- Groups Configuration
-
- Permissions are assigned to groups and groups have users as members. The members
- have the permissions of their groups.
-
- Structure
- Nodes
- hipposys:group
-
- Roles Configuration
- Roles Configuration
- The roles define which JCR
- permissions each role has.
- Structure
- Nodes
- hipposys:role
- Users Configuration
- Users Configuration
- A user in the configuration is an account for a real, living user.
- A user is member of one or more groups and is granted
- all the permissions defined for his groups.
-
- Structure
- Nodes
- hipposys:user
- Workflow configuration
- Workflow configuration
-
-Workflows are configured by specifying how the workflow can be accessed and
-how the workflow is applicable. This definition is stored in the
-repository itself.
-
- Performance tuning
- Performance tuning
- How to improve performance of Hippo CMS by site specific tuning.
- Do not allow very large assets
- repository
- Repository ConfigurationThe base repository configuration through a number of XML files.
- Repository based authentication
- Repository based authentication
- Authentication with The Repository Login Module
-
- Repository Configuration
- Repository Configuration
- The base repository configuration through a number of XML files.
- FileSystem element
- Security element
- Workspaces element
- Workspace element
- SearchIndex element
- Versioning element
- SearchIndex configuration
- SearchIndex configuration
- Search index for content that is shared repository wide (/jcr:system tree, contains mainly versions).
- Minimal configuration
- Best practice
- ServicingSearchIndex
- ServicingIndexingConfigurationImpl
- Workspace configuration
- Workspace configuration
- The workspace element is used as a template for separate workspace configuration files created for each new workspace.
- Sample
- Known issues
- Known issues
- What to do in case of errors?
- Workflow error: Can not insert new record:
- Packet for query is too large (4729208 > 1048576)
-
- installation
- InstallationHow to install Hippo CMS
-
-
-
- help renamed
- help renamed
- How to download a file into a folder renamed to some name?
- Help startup in Servlet Container
- Help startup in Servlet Container
- Help for when you have problems starting up Hippo in a servlet container.
- java.lang.IllegalStateException:...infinite loop
- Failed to Connect. Firefox can't establish a connection to the server at localhost:8080.
- The browser window of the CMS is an empty page
- Configuration file syntax error
- Help web Servlet Container
- Help web Servlet Container
- Empty page after login to Hippo CMS
- in Application Server
- in Application Server
- Get Hippo CMS up and running in a Java application server.
- application server
- Obtain the EAR package
- Application Server
- Deploying in Glassfish
- GlassFish
-
-
-
Integration Glassfish and NetBeans
-
Glassfish and Ubuntu
- Deploying in JBoss
- JBoss
-
- Java servlet container
- Java application server
- WAR
- EAR
- tomcat logo
- jetty logo
- glassfish logo
- JBoss logo
- in Servlet Container
- in Servlet Container
- Get Hippo CMS up and running
- in a Java servlet container.
- servlet container
- Deploying in Tomcat 5.5 or 6
-
Install required libraries
-
Deploy Hippo CMS WAR
- Install Tomcat
- Install Tomcat
- Learn how to install Apache Tomcat
- Tomcat 6.0
- Hippo Forge plugins
- Hippo Forge plugins
- Installing plugins from the Hippo forge.
- Download the Plugin
- Extending the EAR
- Extending the WAR
- Deploy the Bundle (planned)
- Customizing the CMS configuration
- /hippo:configuration/hippo:frontend/cms/cms-static/logoutPlugin
- Sending feedback
- cms plus feedback
- Requirements
- Requirements
- What do you need to run Hippo CMS?
- Firefox logo
- internet explorer logo
- Java logo
- Sun logo
- Java logo
- Jetty logo
- Tomcat logo
- Derby logo
- Oracle logo
- tools
- Development ToolsTools used when developing upon Hippo CMS 7
- This section is to describe general tools and procedures needed when developing on top of Hippo CMS 7.
-
- eclipse
- EclipseHow to use eclipse for Hippo projects.
- Configure Workspace
- Configure Workspace
- Configure Eclipse Workspace for Hippo projects.
- Identify Maven local repository
-
- Start Eclipse
- Start Eclipse
- Start Eclipse to work on Hippo projects.
- War overlays in eclipse
- War overlays in eclipse
- How to use War overlays in eclipse
-
- maven
- MavenHow to use maven for Hippo projects.
- Maven basics
- Maven basics
- Learn to basics of maven: pom.xml and mvn clean install.
-
- Install Maven
- Install Maven
- Howto install Maven.
- Tips and tricks
- Tips and tricks
- Some handy notes about using maven for Hippo projects.
- Run a development package
- Run a development package
- How to build the package of a project and run it, all on the fly?
- svn
- SVNHow to use subversion for Hippo projects.
- Hippo projects are version controlled with Subversion.
- They can be anonymously checked out using any subversion client.
- Instructions on Subversion use can be found at http://svnbook.red-bean.com/.
-
- Get the Hippo CMS source
- Get the Hippo CMS source
- Get the Hippo CMS source from the Hippo subversion repository.
-
- user
-
- cms_admins
-
- concepts
- CMS Administrator ConceptsA collection of concepts a CMS administrators may want to know.
-
-
- If you do not know where to start, take the Tour.
-
-
-
- Home Workspace
- Home Workspace
- What and where is the home workspace?
- home workspace
- Next
- Alternative
-
- Alternative
- howto
- CMS administrator HowtoA collection of howto's for small tasks a CMS administrator may want to do.
-
-
- If you do not know where to start, take the Tour.
-
-
-
- Add Group
- Add Group
- How to add a group to Hippo CMS to group users in.
- add group screenshot
- Next
- Alternative
- Add User
- Add User
- How to add a user account to Hippo CMS to allow someone access.
- Add user screenshot
- Next
- Alternative
- Assign user to group
- Assign user to group
- How to make a particular user belong to a particular group.
- Assign user to group screenshot
- Alternative
- Next
- Alternative
- Edit group properties
- Edit group properties
- How to edit the properties of a Hippo CMS user group.
- Edit group properties screenshot
- Next
- Alternative
- Change own password
- Change own password
- How to change your own password.
- Change own screenshot
- Next
- Alternative
- Edit user properties
- Edit user properties
- How to edit the properties of a Hippo CMS user account.
- Edit user properties screenshot
- Next
- Alternative
- Deactivate account
- Deactivate account
- How to deactivate a Hippo CMS user account.
- Deactivate account screenshot
- Next
- Alternative
- Goto User Management Workspace
- Goto User Management Workspace
- How to get to the user management workspace, to add users and groups or change their properties.
- user management workspace screenshot
- Next
- Alternative
-
- Alternative
- Login as Administrator
- Login as Administrator
- How to login to Hippo CMS as administrator.
- Hippo login screenshot
- Next
- Alternative
- Logout
- Logout
- How to logout
- logout screenshot
- Next
- Alternative
- Publish all
- Publish all
- How to publish all documents simultaneously?
- Add user screenshot
- Next
- Alternative
- Save settings
- Save settings
- How to save settings, like the properties of a user of a group.
- Next
- Alternative
- Set group permissions
- Set group permissions
- How to set permissions for a Hippo CMS group of users.
- Set permissions screenshot
- Alternative
- Next
- Alternative
- Start CMS
- Start CMS
- How to start a CMS session in your browser
- Next
- Alternative
- CMS Administrator Guide
- CMS Administrator Guide
- Guide for Hippo CMS users to perform the role of CMS administrator.
- todo
-
- Edit Group Properties
- Edit Group Properties
- How to edit the properties of a group.
- edit group properties screenshot
- Next
- Alternative
- Goto User Properties
- Goto User Properties
- How to get to the properties of a user
- user properties screenshot
- Next
- Alternative
- Type in editing region
- Type in editing region
- How to type in an editing regin, creating markuped text.
- Editing region screenshot
- Next
- Alternative
- Hippo CMS Administrator Tour
- Hippo CMS Administrator Tour
- To get introduced to the role of CMS administrator,
- take the following tour.
- contributors
-
- concepts
- CMS Author ConceptsA collection of concepts a CMS author may want to know.
-
-
- If you do not know where to start, take the Tour.
-
-
-
- Boolean
- Boolean
- What is a boolean
- Next
- Alternative
- Content Workspace
- Content Workspace
- What and where is the content workspace?
- content workspace
- Alternative
- Next
- Author
- Author
- What does it mean to be a CMS author?
- Next
- Alternative
- Current folder
- Current folder
- What is the current folder?
- current folder screenshot
- Next
- Alternative
- Document actions menu
- Document actions menu
- The document actions menu is a menu of actions that can be performed
- on a specific document.
- Next
- Alternative
- Document type
- Document type
- What is a document type?
- Next
- Alternative
- Document
- Document
- What is a document?
-
Etymology
- Next
- Alternative
- Editing
- Editing
- What is editing?
- Next
- Alternative
- Edit mode
- Edit mode
- What is edit mode?
- edit mode sreenshot
- Next
- Alternative
- CMS editor
- CMS editor
- What is a CMS editor?
- Next
- Alternative
- Folder action menu
- Folder action menu
- What and where is the folder action menu?
- Folder action menu screenshot
- Next
- Alternative
- Folder navigation panel
- Folder navigation panel
- What and where is the folder navigation panel?
- Folder navigation panel screenshot
- Next
- Alternative
- Folder tabulation panel
- Folder tabulation panel
- What and where is the folder tabulation panel?
- folder tabulation panel screenshot
- Next
- Alternative
- Folder
- Folder
- What is a Folder?
- Next
- Alternative
- Home Workspace
- Home Workspace
- What and where is the home workspace?
- home workspace
- Next
- Alternative
-
- Alternative
- Inputfield
- Inputfield
- What is an inputfield?
- Next
- Alternative
- Markuped text
- Markuped text
- What is markuped text?
- Next
- Alternative
- Review mode
- Review mode
- What is review mode?
- review mode screenshot
- Next
- Alternative
- Slider
- Slider
- What and where are sliders?
- sliders
- Next
- Alternative
- String
- String
- What is a string?
- Next
- Alternative
- Tab pages panel
- Tab pages panel
- What and where is the tab pages panel?
- tab pages panel
- Next
- Alternative
- Tab page
- Tab page
- What and where are tab pages?
- document tab pages
- Next
- Alternative
- Workspace Navigation Panel
- Workspace Navigation Panel
- What and where is the workspace navigation panel?
- workspace navigation panel screenshot
- Next
- Alternative
- Workspace
- Workspace
- What is a workspace?
- content workspace
- Next
- Alternative
- howto
- CMS Author HowtoA collection of howto's for small tasks an author may want to do.
-
-
- If you do not know where to start, take the Tour.
-
-
-
- Change own password
- Change own password
- How to change your own password.
- Change own screenshot
- Next
- Alternative
- Create Document
- Create Document
- How to create a document to write in.
- Create document screenshot
- Next
- Alternative
- Discard changes
- Discard changes
- How to discard changes you made to a document.
- save document screenshot
- Next
- Alternative
- Editor actions
- Editor actions
- What editor actions to expect?
- Screenshot of history
- History
- What happens to your documents when the editor ...
- Publishing
- Taking offline
- Next
- Alternative
- Fill boolean field in Document
- Fill boolean field in Document
- How to answer a yes/no question in a document.
- Fill boolean screenshot
- Next
- Alternative
- Fill date in Document
- Fill date in Document
- How to fill a date field in a document.
- Fill date screenshot
- Next
- Alternative
- Fill marked-up text in Document
- Fill marked-up text in Document
- How to write marked-up text in a document.
- Fill marked-up text screenshot
- Next
- Alternative
- Fill string in Document
- Fill string in Document
- How to fill a string field in a document.
- Fill string screenshot
- Next
- Alternative
- Goto Content workspace
- Goto Content workspace
- How to get to the content workspace.
- goto content workspace screenshot
- Next
- Alternative
- Goto a Folder
- Goto a Folder
- How to get to a folder, to add or change content in it.
- Goto folder screenshot
- Next
- Alternative
-
- Alternative
- Learn meaning of inputfield
- Learn meaning of inputfield
- Why and how to learn the meaning of an inputfield?
- Fill boolean screenshot
- Next
- Alternative
- Login as author
- Login as author
- How to login to Hippo CMS as author
- of documents, images and/or files.
- Hippo login screenshot
- Next
- Alternative
- Logout
- Logout
- How to logout
- logout screenshot
- Next
- Alternative
- Request Publication of Document
- Request Publication of Document
- How to ask the editor to publish a document?
- request schedule publication screenshot
- Next
- Alternative
- Request to take off line a document
- Request to take off line a document
- How to ask the editor to take a document off line, i.e.
- to unpublish a published document?
- screenshot for request take offline
- Next
- Alternative
- Save Document
- Save Document
- How to save the changes you made to a document.
- save document screenshot
- Next
- Alternative
- Schedule publication of Document
- Schedule publication of Document
- How to schedule when your document should be published?
- request schedule publication screenshot
- Next
- Alternative
- set edit mode
- set edit mode
- How to set a document in edit mode?
- Next
- Alternative
- Show referring documents
- Show referring documents
- How to get a list of where the current
- document is used, i.e. which documents refer the current document?
- Screenshot of where used.
- Next
- Alternative
- Start CMS site
- Start CMS site
- How to go to the CMS site, i.e. start a CMS session, in your browser.
- goto CMS site
- Next
- Alternative
- Authors Guide
- Authors Guide
- Guide for Hippo CMS users to perform the role of author.
- General introduction for authors
- Hippo CMS Authors Tour
- Hippo CMS Authors Tour
-
- A CMS author writes documents and can upload images and
- other binaries (this is why they are sometimes called 'contributors').
- To get introduced to the role of CMS author, take the following tour.
-
- Fill marked-up text screenshot
- editors
-
- concepts
- CMS Editor ConceptsA collection of concepts a CMS editor may want to know.
-
-
- If you do not know where to start, take the Tour.
-
-
-
- CMS editor
- CMS editor
- What is a CMS editor?
- Next
- Alternative
- Folder
- Folder
- What is a Folder?
- Next
- Alternative
- Home Workspace
- Home Workspace
- What and where is the home workspace?
- home workspace
- Alternative
- Next
- Alternative
-
- Alternative
- Request
- Request
- What is a request?
- Next
- Alternative
- Scheduled publication
- Scheduled publication
- What about scheduling the online publication of documents?
- Next
- Alternative
- howto
- CMS Editor HowtoA collection of howto's for small tasks an CMS editor may want to do.
-
-
- If you do not know where to start, take the Tour.
-
-
-
- Check for requests
- Check for requests
- How to check for requests.
- Check for requests screenshot
- Next
- Alternative
- Count modified document at publish
- Count modified document at publish
- Count modified document at publish
- Screenshot of count documents modified
- Next
- Alternative
- Count modified document at take offline
- Count modified document at take offline
- Count modified document at take offline
- Screenshot of count documents modified at take offline
- Next
- Alternative
- Count published documents
- Count published documents
- How to get a count of all published documents in a folder?
- Screenshot of count published documents
- Next
- Alternative
- Count unpublished documents
- Count unpublished documents
- How to get a count of all unpublished documents in a folder?
- Screenshot of documents to publish
- Next
- Alternative
- Create Folder
- Create Folder
- How to create a folder for authors to put content in.
- Create folder screenshot
- Next
- Alternative
- Handle request
- Handle request
- How to handle a request.
- handle requests screenshot
- Next
- Alternative
-
- Alternative
- Login as Editor
- Login as Editor
- How to login to Hippo CMS as editor
- to decide about publication of documents, images and/or files.
- Hippo login screenshot
- Next
- Alternative
- Logout
- Logout
- How to logout
- logout screenshot
- Next
- Alternative
- Publish all in folder
- Publish all in folder
- How to publish all documents in a folder?
- Screenshot for publish all in folder
- Next
- Alternative
- Referring documents (where used)
- Referring documents (where used)
- How to get a list of where the current
- document is used, i.e. which documents refer the current document?
- When are you warned about referring documents?
-
- Screenshot of where used at take offline.
- Next
- Alternative
- Start CMS site
- Start CMS site
- How to go to the CMS site, i.e. start a CMS session, in your browser.
- goto CMS site
- Next
- Alternative
- Take offline all in folder
- Take offline all in folder
- How to take offline all documents in a folder?
- Next
- Alternative
- Editors Guide
- Editors Guide
- Guide for Hippo CMS users to perform the role of editor.
- old
-
- Goto Content Browse Tab
- Goto Content Browse Tab
- How to get to the content browse tab.
- content browse screenshot
- Next
- Hippo CMS Editor Tour
- Hippo CMS Editor Tour
- To get introduced to the role of CMS Editor, take the following tour.
- User Guide
- User Guide
- How to work as a user of Hippo CMS.
- General introduction for users of the Hippo CMS
- information_architects
-
- concepts
- CMS Information Architects ConceptsA collection of concepts a CMS information architect may want to know.
-
-
- If you do not know where to start, take the Tour.
-
-
-
- Boolean
- Boolean
- What is a boolean
- Next
- Alternative
- Compound type
- Compound type
- What is a compound type
- compound templates diagram
- Next
- Alternative
- Document type
- Document type
- What is a document type
- Next
- Alternative
- Editing
- Editing
- What is editing?
- Next
- Alternative
- Edit mode
- Edit mode
- What is edit mode?
- edit mode sreenshot
- Next
- Alternative
- Field properties overview
- Field properties overview
- What is a field properties overview?
- Next
- Alternative
- field type menu
- field type menu
- What is a field type menu?
- field type menu screenshot
- Next
- Alternative
-
- Alternative
- Mandatory or optional field
- Mandatory or optional field
- What is a mandatory or optional field in a documenttype?
- Next
- Alternative
- Markuped text
- Markuped text
- What is markuped text?
- Next
- Alternative
- Namespace folder
- Namespace folder
- What and where is the namespace folder?
- Go to document types tab screenshot
- Next
- Alternative
- namespace
- namespace
- What is a namespace?
- Namespace name examples
- Namespace name format rules
- full names
- Namespace name format rules
- usage
- More explanation about the concept
- Alternative
- Review mode
- Review mode
- What is review mode?
- review mode screenshot
- Next
- Alternative
- string
- string
- What is a string
- Next
- Alternative
- URL
- URL
- URL
- Next
- Alternative
- howto
- CMS Information Architect HowtoA collection of howto's for small tasks an information architect may want to do!
-
-
- If you do not know where to start, take the Tour.
-
-
-
- Add boolean to document type
- Add boolean to document type
- How to add a boolean to a document type.
- Add boolean to document type screenshot
- Next
- Alternative
- Add custom compound
- Add custom compound
- How to add a custom compound to a document type or other
- custom compound?
- Add custom compound
- Next
- Alternative
- Add date to document type
- Add date to document type
- How to add a date field to a document type.
- Add date to documenttype screenshot
- Next
- Alternative
- Add marked-up text field to document type
- Add marked-up text field to document type
- How to add a marked-up text field to a document type.
- Add markuped text to document type screenshot
- Next
- Alternative
- Add number to document type
- Add number to document type
- How to add a number field to a document type.
- Next
- Alternative
- Add string to document type
- Add string to document type
- How to add a string field to a document type.
- Add string to documenttype screenshot
- Next
- Alternative
- Change field in document type
- Change field in document type
- How to change a field in a document type.
- change field screenshot
- Next
- Alternative
- Create custom compound
- Create custom compound
- How to create a custom compound
- Create custom compound
- Next
- Alternative
- Create document type
- Create document type
- How to create a document type, to define the structure
- of a class of similar documents.
- Create document type screenshot
- Next
- Alternative
- Create namespace
- Create namespace
- How to create a namespace to gather document types in.
- Create namespace screenshot
- Next
- Alternative
- Field caption
- Field caption
- How to define a caption for a field in a document type.
- Fieldcaption screenshot
- Next
- Alternative
- Field size
- Field size
- How to define the size for a field in a document type.
- Field size screenshot
- Next
- Alternative
- Go to a Document type
- Go to a Document type
- How to get to a screen to manipulate a particular document type.
- documenttype tab page screenshot
- Next
- Alternative
- Go to a namespace
- Go to a namespace
- How to get to a namespace, to view the document types in it.
- Go to namespace screenshot
- Next
- Alternative
-
- Alternative
- Login
- Login
- How to login to Hippo CMS.
- Hippo login screenshot
- Next
- Alternative
- Logout
- Logout
- How to logout
- logout screenshot
- Next
- Alternative
- Mandatory or optional field
- Mandatory or optional field
- How to define a field as mandatory or as optional.
- Mandatory or optional screenshot
- Next
- Alternative
- Naming a field
- Naming a field
- How to name a field of a document type.
- Naming a field screenshot
- Path sar:title is used in multiple fields
- Next
- Alternative
- Remove field from document type
- Remove field from document type
- How to remove a field from a document type.
- remove field screenshot
- Next
- Alternative
- Save document type
- Save document type
- How to save a document type.
- save document type screenshot
- Next
- Alternative
- Specify type details
- Specify type details
- How to specify type details
- Specify type details
- Taggable
- Next
- Alternative
- Specify type layout
- Specify type layout
- How to specify the elemental layout for a document type or compound type?
- Specify type layout
- Nested layout
- Next
- Alternative
- Start CMS
- Start CMS
- How to start a CMS session in your browser
- Next
- Alternative
- Update all content
- Update all content
- How to update all content
- update content screenshot
- Next
- Alternative
- Information Architects Guide
- Information Architects Guide
- Guide for Hippo CMS users to perform the role of Information Architect.
- General introduction to document types
- old
-
- Go to content browse tab
- Go to content browse tab
- How to get to the content browse tab.
- content browse screenshot
- Next
- Alternative
- old-concepts
-
- Current folder
- Current folder
- What is the current folder?
- current folder screenshot
- Folder action menu
- Folder action menu
- What and where is the folder action menu?
- Folder action menu screenshot
- Hippo CMS Tour for Information Architects
- Hippo CMS Tour for Information Architects
- To get introduced to the role of CMS information architect,
- take the following tour.
- Screenshots
- Screenshots
- How to view screenshots in the userguide.
- Start CMS screenshot
- Next
- web
-
- add-ons
-
- howto
-
- Create an Editing Template Add-on
- Create an Editing Template Add-on
- Learn how to create an add-on for a namespace.
- Fancy Document
- Create a new project
- Export CND
- Build and deploy
- Next
- Howto
- Howto
- Learn how to make your own content add-ons.
- Creating your own WAR package
- Creating your own WAR package
- Package Hippo CMS with your own add-on.
- Your own POM file
- Make your project a WAR project
- Add the WAR dependency
- Configure the WAR overlay
- Troubleshooting
- Add the Jetty plugin for fast testing
- Full pom.xml
- Hippo CMS Add-ons
- Hippo CMS Add-ons
- Extend Hippo CMS with your own content (type) add-ons.
- Introduction to content add-on development
- Introduction to content add-on development
- An introduction to content add-on development.
- Content add-on
- Editing Template add-on
- More
- Website Development
- Website Development
- Publish your Hippo CMS managed content on the web.
- Need more functionality?
- jcr
-
- Document is not a valid XML document.toolkits
-
- Toolkits
- Toolkits
- Get the right tools for your project.
- Hippo Site Toolkit
- Hippo Portal
-
- What is Hippo CMS?
- What is Hippo CMS?
- What part of Hippo ECM is it, what are its tasks?
- Setting up and using Selenium tests
- Setting up and using Selenium tests
- Building wicket and Hippo ECM for running integration tests
- Get your application server
- Running a simple Selenium test
- Recording a Selenium test
- Performing a release of the Hippo ECM suite
- Performing a release of the Hippo ECM suite
- Prerequisites
- Preparing a release
- Update release information in the root pom.xml
- Releasing in subversion
- Deploying the targets
- Branching
- support
-
- Community Support
- Community Support
- Get support from the Hippo community
- Community Support Tools
- Alternatives
- Contributing
- Contributing
- Contribute to ${product_name}, either in code, documentation, support, bug reports, improvement requests
- or whatever form you think is useful.
- Alternative
- Public Forums
- Public Forums
- Get support from others on the Hippo public forums
-
-
Deleted: hippo-ecm/trunk/src/site/docerrors.xml
===================================================================
--- hippo-ecm/trunk/src/site/docerrors.xml 2009-12-01 22:45:31 UTC (rev 20968)
+++ hippo-ecm/trunk/src/site/docerrors.xml 2009-12-01 23:51:02 UTC (rev 20969)
@@ -1,447 +0,0 @@
-
-
-
- .
-
- about
-
- release_notes
- Hippo CMS release notes
- Hippo CMS 7.1 release notes
- Cannot create external links in X inha field
- Internal link in X inha field does not get correctly URL encoded
- The workflow toolbar now groups document and publication actions in a dropdown menu right under the current ly selected tab in review mode. See the documentation for screenshots:
- Unequal visual mark of folder being current
- Adding a document to the current ly selected folder does not update doclisting
- Missing short description. Add <span class='shortdesc'>.
- Missing section. Add <section name='...'>.Roadmap Hippo CMS
- Missing short description. Add <span class='shortdesc'>.
- Missing section. Add <section name='...'>.Version numbering schemedelve_into
-
- Bin Startup Help
- Missing short description. Add <span class='shortdesc'>.core
- Hacking the coreTake a deep dive into core Hippo CMS development.
- Hippo CMS is open source software. All source code is available from our SVN repository
- under the Apache license.
- This section explains how to get the source code, how to build it, and how to set
- up your IDE. In addition, the architecture and the conceptual ideas behind it
- are explained in detail.
-
- building
- Building Hippo CMSBuild Hippo CMS from source using your tool of choice.
- Getting the Hippo CMS source code and building it is easy. Hippo CMS
- uses a Maven build environment,
- but it is also possible to use a Java IDE like Eclipse
- or Netbeans.
-
- Developing Hippo CMS with Eclipse
- Missing short description. Add <span class='shortdesc'>.
- Missing section. Add <section name='...'>.Building the Hippo CMS with mavenBuilding with Netbeans
- Missing short description. Add <span class='shortdesc'>.
- Missing section. Add <section name='...'>.Project Structure
- <p/>
- <p/>
- <p/>
- <p/>
- <p/>
- <p/>
- Has 9 sections.custom
-
- howto
-
- Customize an Editing Template
- include screenshotFrontend skin customizationeclipse
-
- Configure Workspace
- Explanation about installing JPOX eclipse pluginImport java project
- Missing short description. Add <span class='shortdesc'>.
- Missing section. Add <section name='...'>.Start EclipseCreate an Editing Template PluginGiving our plugin a place on the dashboard
- . Under wicket.extensions you will see the current plugins shown on the dashboard. Add an entry "extension.helloworld". Next add a property called "extension.helloworld" and give it the value "service.helloworld". Now the dashboard knows where to findHello WorldMaking the Hello World plugin context sensitive
- Missing short description. Add <span class='shortdesc'>.HowtoTesting the Hello World pluginDeveloping workflows
- http://www.hippoecm.org/nt/1.2 is out of date. There are also instances of this adres in other files.
- Missing short description. Add <span class='shortdesc'>.Hippo CMS Add-onsIntroduction to add-on developmentjcr
- JCR InterfaceDirect access to your content through the JCR API.
- The standard JCR interface exposed by Hippo CMS gives you direct access
- to your content inside the repository, and all the content management
- functionalities provided by Hippo CMS. This allows you to build almost
- any imaginable application on top of Hippo CMS. This section describes how
- to get started, and provides some examples on how you could use the
- possibilities of the JCR interface.
-
- JCR Examples
- rkflow which is available in a dedicated category and then restores earliest published version as the current unpublished version.
- Missing short description. Add <span class='shortdesc'>.
- Missing section. Add <section name='...'>.JCR Basicsreference
- JCR reference guideDeeper explanations of the JCR interface
- Derived Data
- Missing short description. Add <span class='shortdesc'>.
- Missing section. Add <section name='...'>.project_export
-
- Add a new projectExcludesExport a sub projectProject ExportStart a Project ExportWhy Export?reference
-
- frontend
-
- Frontend Plugin Architecture
- Has 2 sections.Frontend Plugin Communication
- Has 2 sections.Frontend PluginsAdd-on Referencerepository
-
- Bootstrapping the repository
- Missing short description. Add <span class='shortdesc'>.Repository Plugins
-
-
-This description is/was only about the concept of a plugin. The concept is
-that the repository functionality is not static, but one can extend the
-repository functionalities. The only current repository functionality that
-can be extended (but sufficient flexible to do everything needed at the
-moment) is the workflow. Which workflow is active for which type(s) of
-documents and what the workflow comprised (which steps and how they are
-implemented) can be defined.
-
-Probably the best way to position this is if there is a "concepts"
-page just below, or integrated with the page
-Delve into > Website Development > Add-ons > Introduction
-And describe there that the concept that a repository can be extended. The
-text below can be used there for the part on what the concept of extending the
-repository is;
-
-
- e repository functionality is not static, but one can extend the repository functionalities. The only current repository functionality that can be extended (but sufficient flexible to do everything needed at the moment) is the workflow. Which workflow is active for which type(s) of documents and what the work
- which defines how plugins can be loaded into the application. This is subject to change, as current ly the only supported way of adding plugins is by adding the JAR to the quickstart or package based ear or war artifacts. One of the ways is by adding the plugin jar directly to the ear or war using tWorkflow functionality
- Missing short description. Add <span class='shortdesc'>.
- Missing short description. Add <span class='shortdesc'>.
- Missing section. Add <section name='...'>.SynonymsDelve into Hippo CMS
- Enlighting and attractive diagram.Your own Quickstart
-
- and leave the new version very small,
- mainly refering to the necessary administrator documents.
- Quickstart Steps
- ...<span class='to_index' id='localhost'/>
- in your (this) webbrowser.
- A window `Sign In, Hippo CMS 7' will open.
- As username use `admin' and as password use also `admin'.
- .../<td> This may cause the markup of this span element to spill in the following text. This is due to Doxia not closing empty elements. It does not generate correct XHTML.
- ...<span class='to_index' id='number_8080'/>
- in your (this) webbrowser.
- A window `Sign In, Hippo CMS 7' will open.
- As username use `admin' and as password use also `admin'.
- .../<td> This may cause the markup of this span element to spill in the following text. This is due to Doxia not closing empty elements. It does not generate correct XHTML.sysadmin
- System Administration GuideWhat does a system administrator need to know and do for Hippo CMS?
- These pages describe how to get Hippo ECM up and running and how to configure your running application.
-
- configuration
- ConfigurationWhat does a system administrator have to configure in Hippo CMS?
- Whole folder, and rewrite if necessary.
-
- ConsoleDatabase server
- Missing short description. Add <span class='shortdesc'>.
- Missing section. Add <section name='...'>.nodes
- Configuration Nodes Reference
- Configuration of Hippo ECM functionality is stored inside Hippo Repository
- as configuration nodes in the JCR tree, and is accessible through the standard
- JCR interface.
-
- Domains Configuration
- Has 3 sections.Groups Configuration
- Has 3 sections.
- Missing short description. Add <span class='shortdesc'>.
- Missing section. Add <section name='...'>.Roles Configuration
- Has 3 sections.Users Configuration
- Has 3 sections.Workflow configurationPerformance tuningrepository
- Repository ConfigurationThe base repository configuration through a number of XML files.
- Repository based authentication
- Missing short description. Add <span class='shortdesc'>.
- Missing section. Add <section name='...'>.Repository ConfigurationSearchIndex configuration
- New, working link to JackRabbit lucene implementation
- Also see
- href="http://jackrabbit.apache.org/doc/arch/operate/index-readers.html" JackRabbit lucene implementation.
-
- getting indexing_configuration from a jar classpath instead of the current JackRabbit implementation which can only fetch an indexing_configuration from filesystem.Workspace configurationKnown issues
- Missing short description. Add <span class='shortdesc'>.
- Missing section. Add <section name='...'>.installation
- InstallationHow to install Hippo CMS
-
-
-
- help renamedHelp startup in Servlet ContainerHelp web Servlet Container
- Missing short description. Add <span class='shortdesc'>.in Application Server
- Replace 2 bad resolution screenshots
- Missing short description. Add <span class='shortdesc'>.
- Missing section. Add <section name='...'>.in Servlet ContainerInstall Tomcat
- ...<span class='to_index' id='tomcat_5.5'/>.
- .../<td> This may cause the markup of this span element to spill in the following text. This is due to Doxia not closing empty elements. It does not generate correct XHTML.Hippo Forge pluginsRequirements
- <td/>
- <td/>tools
- Development ToolsTools used when developing upon Hippo CMS 7
- This section is to describe general tools and procedures needed when developing on top of Hippo CMS 7.
-
- eclipse
- EclipseHow to use eclipse for Hippo projects.
- Configure Workspace
- Missing short description. Add <span class='shortdesc'>.
- Missing section. Add <section name='...'>.Start EclipseWar overlays in eclipse
- Missing short description. Add <span class='shortdesc'>.
- Missing section. Add <section name='...'>.maven
- MavenHow to use maven for Hippo projects.
- Maven basics
- Missing short description. Add <span class='shortdesc'>.
- Missing section. Add <section name='...'>.Install MavenTips and tricks
- References to Maven pages
- Maven commands always works on the current directory, so you have to cd to the directory you want Maven to work on.Run a development packagesvn
- SVNHow to use subversion for Hippo projects.
- Hippo projects are version controlled with Subversion.
- They can be anonymously checked out using any subversion client.
- Instructions on Subversion use can be found at http://svnbook.red-bean.com/.
-
- Get the Hippo CMS source
- Missing short description. Add <span class='shortdesc'>.
- Missing section. Add <section name='...'>.user
-
- cms_admins
-
- concepts
- CMS Administrator ConceptsA collection of concepts a CMS administrators may want to know.
-
-
- If you do not know where to start, take the Tour.
-
-
-
- Home Workspace
- Missing short description. Add <span class='shortdesc'>.
- Missing section. Add <section name='...'>.howto
- CMS administrator HowtoA collection of howto's for small tasks a CMS administrator may want to do.
-
-
- If you do not know where to start, take the Tour.
-
-
-
- Add GroupAdd UserAssign user to groupEdit group propertiesChange own passwordEdit user propertiesDeactivate accountGoto User Management Workspace
- Missing short description. Add <span class='shortdesc'>.
- Missing section. Add <section name='...'>.Login as AdministratorLogoutPublish allSave settingsSet group permissionsStart CMSCMS Administrator Guide<
/document>todo
-
- Edit Group PropertiesGoto User PropertiesType in editing regionHippo CMS Administrator Tourcontributors
-
- concepts
- CMS Author ConceptsA collection of concepts a CMS author may want to know.
-
-
- If you do not know where to start, take the Tour.
-
-
-
- BooleanContent WorkspaceAuthorCurrent folder
- What is the current folder?
- The current folder 'common' is marked bright yellow in the
- . The current folder contains a document titled 'About Us' and document titled 'homepage'.
- The current folder is one single folder at any time, which is chosen by the user, by clicking on its name in the
- . The current folder name is marked with a color in the
- . At any time, the user can chose another folder to be the current folder.
- The content of the current folder is tabulated in the
- The names of the subfolders of the current folder are listed under the current folder name in the
- . This allows to proceed to one of the subfolders and make that the current folder.
- folder is the current folder, it is the one that is open. If another folder is the current folder, it is marked bright yellow.
- , that folder has already become current , but the bright yellow marking will only be changed to the new folder after the folder action has finished.
- Particular actions are possible for the current folder, such as: creating a document in it, creating a subfolder in it, deleting a subfolder from it. The actions that a particular user may do on particular folder can be different for different foldDocument actions menu
- to get a list of all documents referring to the current document.Document typeDocumentEditingEdit modeCMS editorFolder action menuFolder navigation panelFolder tabulation panel
- The document 'multibazar2009' is not current ly published on the web. It may never have been published or been taken off line.
- If you like the details: All documents that are not current ly published on the web have an unpublished saved variant, even if just created and you never saved it yourself.FolderHome Workspace
- Missing short description. Add <span class='shortdesc'>.
- Missing section. Add <section name='...'>.InputfieldMarkuped textReview modeSliderStringTab pages panel
- Is for content.
- Call it content panel, file panel, present panel?Tab page
- more about tab pages in the imageWorkspace Navigation PanelWorkspacehowto
- CMS Author HowtoA collection of howto's for small tasks an author may want to do.
-
-
- If you do not know where to start, take the Tour.
-
-
-
- Change own passwordCreate DocumentDiscard changes
- the the Editor actionsFill boolean field in DocumentFill date in DocumentFill marked-up text in DocumentFill string in DocumentGoto Content workspace
- image class='content-workspace-16 icon-16'Goto a Folder
- Document about navigation in folder tree and reference from here.
- . The contents of the current folder will appear in the
- Missing short description. Add <span class='shortdesc'>.
- Missing section. Add <section name='...'>.Learn meaning of inputfieldLogin as authorLogoutRequest Publication of DocumentRequest to take off line a documentSave DocumentSchedule publication of Documentset edit mode
- Screenshot set edit modeShow referring documents
- How to get a list of where the current document is used, i.e. which documents refer the current document?Start CMS site
- ia.org/. The site is not yet visible, because the user has not clicked yet. Coincidentially, the site current ly visible happens to be the Hippo CMS documentation site atAuthors GuideHippo CMS Authors Toureditors
-
- concepts
- CMS Editor ConceptsA collection of concepts a CMS editor may want to know.
-
-
- If you do not know where to start, take the Tour.
-
-
-
- CMS editorFolderHome Workspace
- Missing short description. Add <span class='shortdesc'>.
- Missing section. Add <section name='...'>.RequestScheduled publicationhowto
- CMS Editor HowtoA collection of howto's for small tasks an CMS editor may want to do.
-
-
- If you do not know where to start, take the Tour.
-
-
-
- Check for requestsCount modified document at publishCount modified document at take offlineCount published documents
- ) a count is presented of all documents in the folder tree that are current ly published.
- The document artificial intelligence is current ly published, so this document is counted.
- The document panflute is current ly published, so it is counted. A newer variant exists, but that makes no difference.
- The document multibazaar2009 is current ly published, so it is counted. The document is being edited, but that makes no difference.Count unpublished documents
- a count is presented of all documents in the folder tree that are not current ly published or that are changed and saved after being published. These documents all have an unpublished saved variant.
- The document multibazaar2009 is not current ly published, so it is counted.Create FolderHandle request
- Missing short description. Add <span class='shortdesc'>.
- Missing section. Add <section name='...'>.Login as EditorLogoutPublish all in folderReferring documents (where used)
- How to get a list of where the current document is used, i.e. which documents refer the current document? When are you warned about referring documents?Start CMS site
- ia.org/. The site is not yet visible, because the user has not clicked yet. Coincidentially, the site current ly visible happens to be the Hippo CMS documentation site atTake offline all in folderEditors Guideold
-
- Goto Content Browse Tab
- ...<span class='content_browse-16'/>,
- at the left of the screen.
- .../<p> This may cause the markup of this span element to spill in the following text. This is due to Doxia not closing empty elements. It does not generate correct XHTML.Hippo CMS Editor TourUser Guideinformation_architects
-
- concepts
- CMS Information Architects ConceptsA collection of concepts a CMS information architect may want to know.
-
-
- If you do not know where to start, take the Tour.
-
-
-
- BooleanCompound typeDocument typeEditingEdit modeField properties overviewfield type menu
- Missing short description. Add <span class='shortdesc'>.
- Missing section. Add <section name='...'>.Mandatory or optional fieldMarkuped textNamespace foldernamespaceReview modestringURLhowto
- CMS Information Architect HowtoA collection of howto's for small tasks an information architect may want to do!
-
-
- If you do not know where to start, take the Tour.
-
-
-
- Add boolean to document typeAdd custom compoundAdd date to document typeAdd marked-up text field to document typeAdd number to document typeAdd string to docum
ent typeChange field in document typeCreate custom compoundCreate document typeCreate namespaceField captionField sizeGo to a Document typeGo to a namespace
- Missing short description. Add <span class='shortdesc'>.
- Missing section. Add <section name='...'>.LoginLogoutMandatory or optional fieldNaming a fieldRemove field from document typeSave document typeSpecify type detailsSpecify type layoutStart CMSUpdate all contentInformation Architects Guideold
-
- Go to content browse tab
- ...<span class='content_browse_16'/>,
- at the left of the screen.
- .../<p> This may cause the markup of this span element to spill in the following text. This is due to Doxia not closing empty elements. It does not generate correct XHTML.old-concepts
-
- Current folder
- What is the current folder?
- The current folder is marked bright yellow in the
- The current folder is one single folder at any time, which is chosen by the user, by clicking on its name in the
- . The current folder name is marked with a color in the
- . At any time, the user can chose another folder to be the current folder.
- The content of the current folder is tabulated in the
- The names of the subfolders of the current folder are listed under the current folder name in the
- . This allows to proceed to one of the subfolders and make that the current folder.
- Particular actions are possible for the current folder, such as: creating a document in it, creating a subfolder in it, deleting a subfolder from it. The actions that a particular user may do on particular folder can be different for different fold
- . At any particular moment, only folder actions on the current folder are possible.Folder action menu
- At any particular moment, only folder actions on the current folder are possible.Hippo CMS Tour for Information ArchitectsScreenshotsweb
-
- add-ons
-
- howto
-
- Create an Editing Template Add-on
- , use "CND Export" to download the fancy.cnd file. This will give you the types as current ly used by the repository.
- Note: due to a bug in the current milestone, you need to remove any occurence ofHowtoCreating your own WAR package
- Has 4 sections.Hippo CMS Add-onsIntroduction to content add-on developmentWebsite Developmentjcr
-
- Document is not a valid XML document.toolkits
-
- Toolkits
- Missing short description. Add <span class='shortdesc'>.
- Missing section. Add <section name='...'>.What is Hippo CMS?
- Enlightning diagram?
- all text: move short features list to feature document?
- <script src='vimeo.js'/>Setting up and using Selenium tests
- The current trunk of Hippo ECM already contains the proper infrastructure for Selenium-based integration testing. This description will first outline how to run this integration test. Having done that, it outline
- , which is current ly set to the glassfish instance of the deployment api:
- untu 8.04 (and higher) in combination with Firefox 3 this requires some extra setup (or at least with current Selenium version in use) as Selenium expects the firefox binary to be called firefox-bin, which is not the case on Ubuntu 8.04. Thus we create a symlink in /usr/lib/firefox to the Firefox binary as fo
- entries in the maven surefire plugin configuration. In addition to this you need to modify the the class name in the source file
- Missing short description. Add <span class='shortdesc'>.Performing a release of the Hippo ECM suite
- The first formally released version must be 2.01.01 because of the current numbering scheme
- followed by the SVN revision number of the then current trunk. For example a version might be
- Note that the current install uses the maven release plugin version 2.0-beta-8, there is a newer version 2.0-beta-9 available which should fix the bug which leads to the initial failure of releasing and requires you to do
- Missing short description. Add <span class='shortdesc'>.
- Has 2 sections.support
-
- Community Support
- add forum icon
- : Read here what issues the developers of ${product_name} have been and are current ly working on.Contributing
- add forum iconPublic Forums
- <script src='../nabble.js'/>
-
Deleted: hippo-ecm/trunk/src/site/errorgraad.txt
===================================================================
--- hippo-ecm/trunk/src/site/errorgraad.txt 2009-12-01 22:45:31 UTC (rev 20968)
+++ hippo-ecm/trunk/src/site/errorgraad.txt 2009-12-01 23:51:02 UTC (rev 20969)
@@ -1,513 +0,0 @@
-#_________________________________________________________________________________________________________________________rita_2008-w46-5-10:49
- 132 errors and/or todos in 68 out of 172 documents (39%).
-#_________________________________________________________________________________________________________________________rita_2008-w46-5-11:05
- 132 errors and/or todos in 68 out of 172 documents (39%).
-#_________________________________________________________________________________________________________________________rita_2008-w46-5-11:07
- 132 errors and/or todos in 68 out of 172 documents (39%).
-#_________________________________________________________________________________________________________________________rita_2008-w46-5-11:17
- 132 errors and/or todos in 68 out of 172 documents (39%).
-#_________________________________________________________________________________________________________________________rita_2008-w46-5-11:17
- 132 errors and/or todos in 68 out of 172 documents (39%).
-#_________________________________________________________________________________________________________________________rita_2008-w46-5-11:19
- 132 errors and/or todos in 68 out of 172 documents (39%).
-#_________________________________________________________________________________________________________________________rita_2008-w46-5-11:20
- 132 errors and/or todos in 68 out of 172 documents (39%).
-#_________________________________________________________________________________________________________________________rita_2008-w46-5-11:21
- 132 errors and/or todos in 68 out of 172 documents (39%).
-#_________________________________________________________________________________________________________________________rita_2008-w46-5-11:24
- 127 errors and/or todos in 65 out of 169 documents (38%).
-#_________________________________________________________________________________________________________________________rita_2008-w46-5-11:24
- 127 errors and/or todos in 65 out of 169 documents (38%).
-#_________________________________________________________________________________________________________________________rita_2008-w46-5-11:24
- 127 errors and/or todos in 65 out of 169 documents (38%).
-#_______________________________________________________________________________________________________________________rita_2008-w46-5-11:27
- 127 errors and/or todos in 65 out of 169 documents (38%).
-#_______________________________________________________________________________________________________________________rita_2008-w46-5-11:28
- 127 errors and/or todos in 65 out of 169 documents (38%).
-#_______________________________________________________________________________________________________________________rita_2008-w46-5-11:28
- 127 errors and/or todos in 65 out of 169 documents (38%).
-#_______________________________________________________________________________________________________________________rita_2008-w46-5-11:39
- 127 errors and/or todos in 65 out of 169 documents (38%).
-#_______________________________________________________________________________________________________________________rita_2008-w46-5-11:45
- 127 errors and/or todos in 65 out of 169 documents (38%).
-#______________________________________________________________________________________________________rita_2008-w47-4-19:11
- 127 errors and/or todos in 65 out of 169 documents (38%).
-#______________________________________________________________________________________________________rita_2008-w47-4-19:12
- 133 errors and/or todos in 67 out of 169 documents (39%).
-#______________________________________________________________________________________________________rita_2008-w47-4-19:14
- 133 errors and/or todos in 67 out of 169 documents (39%).
-#______________________________________________________________________________________________________rita_2008-w47-4-19:23
- 129 errors and/or todos in 67 out of 169 documents (39%).
-#_______________________________________________________________________________________________________________________rita_2008-w47-5-12:03
- 134 errors and/or todos in 70 out of 172 documents (40%).
-#_________________________________________________________________________________________________rita_2008-w48-3-17:04
- 158 errors and/or todos in 78 out of 173 documents (45%).
-#_________________________________________________________________________________________________rita_2008-w48-3-17:08
- 297 errors and/or todos in 173 out of 173 documents (100%).
-#_________________________________________________________________________________________________rita_2008-w48-3-17:08
- 158 errors and/or todos in 78 out of 173 documents (45%).
-#_________________________________________________________________________________________________rita_2008-w48-3-17:14
- 135 errors and/or todos in 71 out of 173 documents (41%).
-#_________________________________________________________________________________________________rita_2008-w48-3-17:16
- 114 errors and/or todos in 71 out of 173 documents (41%).
-#_________________________________________________________________________________________________rita_2008-w48-3-17:17
- 115 errors and/or todos in 71 out of 173 documents (41%).
-#_________________________________________________________________________________________________rita_2008-w48-3-17:20
- 115 errors and/or todos in 71 out of 173 documents (41%).
-#_________________________________________________________________________________________________rita_2008-w48-3-17:47
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_________________________________________________________________________________________________rita_2008-w48-3-18:01
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_________________________________________________________________________________________________rita_2008-w48-3-18:05
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_________________________________________________________________________________________________rita_2008-w48-3-18:06
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_________________________________________________________________________________________________rita_2008-w48-3-18:07
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_________________________________________________________________________________________________rita_2008-w48-3-18:11
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_________________________________________________________________________________________________rita_2008-w48-3-18:14
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_________________________________________________________________________________________________rita_2008-w48-3-18:16
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_________________________________________________________________________________________________rita_2008-w48-3-18:16
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_________________________________________________________________________________________________rita_2008-w48-3-18:16
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_________________________________________________________________________________________________rita_2008-w48-3-18:18
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_________________________________________________________________________________________________rita_2008-w48-3-18:21
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_________________________________________________________________________________________________rita_2008-w48-3-18:21
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_________________________________________________________________________________________________rita_2008-w48-3-18:22
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_________________________________________________________________________________________________rita_2008-w48-3-18:23
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_________________________________________________________________________________________________rita_2008-w48-3-18:24
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_________________________________________________________________________________________________rita_2008-w48-3-18:25
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_________________________________________________________________________________________________rita_2008-w48-3-18:25
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_________________________________________________________________________________________________rita_2008-w48-3-18:25
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_________________________________________________________________________________________________rita_2008-w48-3-18:26
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_________________________________________________________________________________________________rita_2008-w48-3-18:26
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_________________________________________________________________________________________________rita_2008-w48-3-18:27
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_________________________________________________________________________________________________rita_2008-w48-3-18:27
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_________________________________________________________________________________________________rita_2008-w48-3-18:27
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_________________________________________________________________________________________________rita_2008-w48-3-18:28
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_________________________________________________________________________________________________rita_2008-w48-3-18:28
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_________________________________________________________________________________________________rita_2008-w48-3-18:28
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_________________________________________________________________________________________________rita_2008-w48-3-18:28
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_________________________________________________________________________________________________rita_2008-w48-3-18:28
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_________________________________________________________________________________________________rita_2008-w48-3-18:29
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_________________________________________________________________________________________________rita_2008-w48-3-18:30
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_________________________________________________________________________________________________rita_2008-w48-3-18:30
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_________________________________________________________________________________________________rita_2008-w48-3-18:31
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_________________________________________________________________________________________________rita_2008-w48-3-18:32
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_________________________________________________________________________________________________rita_2008-w48-3-18:35
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_________________________________________________________________________________________________rita_2008-w48-3-18:37
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_________________________________________________________________________________________________rita_2008-w48-3-18:38
- 121 errors and/or todos in 72 out of 173 documents (41%).
-#_________________________________________________________________________________________________rita_2008-w48-3-18:40
- 121 errors and/or todos in 72 out of 173 documents (41%).
-#_________________________________________________________________________________________________rita_2008-w48-3-18:43
- 124 errors and/or todos in 72 out of 173 documents (41%).
-#_________________________________________________________________________________________________rita_2008-w48-3-18:44
- 124 errors and/or todos in 72 out of 173 documents (41%).
-#_________________________________________________________________________________________________rita_2008-w48-3-18:44
- 124 errors and/or todos in 72 out of 173 documents (41%).
-#_________________________________________________________________________________________________rita_2008-w48-3-18:44
- 124 errors and/or todos in 72 out of 173 documents (41%).
-#_________________________________________________________________________________________________rita_2008-w48-3-18:45
- 124 errors and/or todos in 72 out of 173 documents (41%).
-#________________________________________________________________________________rita_2008-w48-4-09:23
- 124 errors and/or todos in 72 out of 173 documents (41%).
-#________________________________________________________________________________rita_2008-w48-4-09:58
- 121 errors and/or todos in 72 out of 173 documents (41%).
-#________________________________________________________________________________________________________rita_2008-w48-4-10:12
- 121 errors and/or todos in 72 out of 173 documents (41%).
-#________________________________________________________________________________________________________rita_2008-w48-4-10:17
- 121 errors and/or todos in 72 out of 173 documents (41%).
-#________________________________________________________________________________________________________rita_2008-w48-4-10:21
- 121 errors and/or todos in 72 out of 173 documents (41%).
-#________________________________________________________________________________________________________rita_2008-w48-4-10:29
- 121 errors and/or todos in 72 out of 173 documents (41%).
-#________________________________________________________________________________________________________rita_2008-w48-4-10:53
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#________________________________________________________________________________________________________rita_2008-w48-4-10:55
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_______________________________________________________________________________________________________rita_2008-w48-4-11:04
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_______________________________________________________________________________________________________rita_2008-w48-4-11:05
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_______________________________________________________________________________________________________rita_2008-w48-4-11:05
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_______________________________________________________________________________________________________rita_2008-w48-4-11:06
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_______________________________________________________________________________________________________rita_2008-w48-4-11:06
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_______________________________________________________________________________________________________rita_2008-w48-4-11:06
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_______________________________________________________________________________________________________rita_2008-w48-4-11:07
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_______________________________________________________________________________________________________rita_2008-w48-4-11:08
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_______________________________________________________________________________________________________rita_2008-w48-4-11:08
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_______________________________________________________________________________________________________rita_2008-w48-4-11:09
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_______________________________________________________________________________________________________rita_2008-w48-4-11:11
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_______________________________________________________________________________________________________rita_2008-w48-4-11:11
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_______________________________________________________________________________________________________rita_2008-w48-4-11:19
- 120 errors and/or todos in 72 out of 173 documents (41%).
-#_______________________________________________________________________________________________________rita_2008-w48-4-11:19
- 120 errors and/or todos in 72 out of 173 documents (41%).
-#_______________________________________________________________________________________________________rita_2008-w48-4-11:20
- 120 errors and/or todos in 72 out of 173 documents (41%).
-#_______________________________________________________________________________________________________rita_2008-w48-4-11:28
- 286 errors and/or todos in 173 out of 173 documents (100%).
-#_______________________________________________________________________________________________________rita_2008-w48-4-11:30
- 115 errors and/or todos in 71 out of 173 documents (41%).
-#_______________________________________________________________________________________________________rita_2008-w48-4-11:35
-#_______________________________________________________________________________________________________rita_2008-w48-4-11:35
- 284 errors and/or todos in 173 out of 173 documents (100%).
-#_______________________________________________________________________________________________________rita_2008-w48-4-11:40
- 118 errors and/or todos in 71 out of 173 documents (41%).
-#_______________________________________________________________________________________________________rita_2008-w48-4-11:42
- 118 errors and/or todos in 71 out of 173 documents (41%).
-#_______________________________________________________________________________________________________rita_2008-w48-4-12:18
- 118 errors and/or todos in 71 out of 173 documents (41%).
-#_______________________________________________________________________________________________________rita_2008-w48-4-12:20
- 118 errors and/or todos in 71 out of 173 documents (41%).
-#_______________________________________________________________________________________________________rita_2008-w48-4-12:49
- 118 errors and/or todos in 71 out of 173 documents (41%).
-#_______________________________________________________________________________________________rita_2008-w48-4-13:42
- 118 errors and/or todos in 71 out of 173 documents (41%).
-#_______________________________________________________________________________________________rita_2008-w48-4-13:49
- 118 errors and/or todos in 71 out of 173 documents (41%).
-#_______________________________________________________________________________________________rita_2008-w48-4-13:52
- 118 errors and/or todos in 71 out of 173 documents (41%).
-#_______________________________________________________________________________________________rita_2008-w48-4-13:54
- 118 errors and/or todos in 71 out of 173 documents (41%).
-#_______________________________________________________________________________________________rita_2008-w48-4-13:58
- 118 errors and/or todos in 71 out of 173 documents (41%).
-#_______________________________________________________________________________________________rita_2008-w48-4-14:25
- 118 errors and/or todos in 71 out of 173 documents (41%).
-#_______________________________________________________________________________________________rita_2008-w48-4-14:28
- 118 errors and/or todos in 71 out of 173 documents (41%).
-#_______________________________________________________________________________________________rita_2008-w48-4-14:33
- 118 errors and/or todos in 71 out of 173 documents (41%).
-#_________________________________________________________________________________________rita_2008-w50-1-12:30
- 143 errors and/or todos in 79 out of 175 documents (45%).
-#_________________________________________________________________________________________rita_2008-w50-1-12:35
- 143 errors and/or todos in 79 out of 175 documents (45%).
-#__________________________________________________________________________________________________________________________rita_2008-w50-3-17:41
- 145 errors and/or todos in 81 out of 175 documents (46%).
-#__________________________________________________________________________________________________________________________rita_2008-w50-3-17:42
- 144 errors and/or todos in 80 out of 175 documents (45%).
-#_____________________________________________________________________________________________________________________rita_2008-w51-1-14:24
- 315 errors and/or todos in 176 out of 176 documents (100%).
-#_____________________________________________________________________________________________________________________rita_2008-w51-1-14:28
- 176 errors and/or todos in 176 out of 176 documents (100%).
-#_____________________________________________________________________________________________________________________rita_2008-w51-1-14:28
- 148 errors and/or todos in 80 out of 176 documents (45%).
-#_____________________________________________________________________________________________________________________rita_2008-w51-1-14:40
- 148 errors and/or todos in 80 out of 176 documents (45%).
-#_______________________________________________________________________rita_2008-w51-1-18:39
- 316 errors and/or todos in 176 out of 176 documents (100%).
-#________________________________________________________________________________________________________________rita_2008-w51-1-18:58
- 146 errors and/or todos in 79 out of 176 documents (44%).
-PATH
-/usr/local/share/jdk1.5.0_16/bin:/usr/local/share/apache-maven-2.0.9/bin:/home/rita/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/rita/programs/alle:/usr/local/share/jdk1.5.0_16/bin:/usr/local/share/netbeans-6.1/java2/ant/bin:/usr/local/share/eclipse:/usr/local/share/mybins//ritaCD/bin:/usr/local/share/mybins//irisfm/bin:/usr/local/share/mybins//scripta_scripta/bin:/usr/local/share/mybins//uureceive/bin:/usr/local/share/mybins//irisfm/receive/home/rita/bin:/usr/local/share/mybins//test/bin:/usr/local/share/mybins//tue/bin:/usr/local/share/mybins//rita/bin:/usr/local/share/mybins//rita2/bin:/usr/bin/mh:/home/rita/programs:/home/rita/bin:/home/rita/rbin:/home/rita/opt/*/bin:/home/ritamail/bin:/home/test/bin:/usr/local/ritadev/ritaCD/bin:/usr/local/ritadev/rita2/rita/bin:/home/rita/keep/uureceive/bin:/usr/local/ritadev/ritaCD/irisfm/bin:/usr/local/ritadev/rita2/rita/opt/tue/bin:/usr/local/ritadev/ritaCD/irisfm/receive/home/rita/bin
-FIFI
-fifi is /home/rita/bin/fifi
-#________________________________________________________________________________________________________rita_2008-w51-5-13:39
- 152 errors and/or todos in 84 out of 181 documents (46%).
-PATH
-/usr/local/share/jdk1.5.0_16/bin:/usr/local/share/apache-maven-2.0.9/bin:/home/rita/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/rita/programs/alle:/usr/local/share/jdk1.5.0_16/bin:/usr/local/share/netbeans-6.1/java2/ant/bin:/usr/local/share/eclipse:/usr/local/share/mybins//ritaCD/bin:/usr/local/share/mybins//irisfm/bin:/usr/local/share/mybins//scripta_scripta/bin:/usr/local/share/mybins//uureceive/bin:/usr/local/share/mybins//irisfm/receive/home/rita/bin:/usr/local/share/mybins//test/bin:/usr/local/share/mybins//tue/bin:/usr/local/share/mybins//rita/bin:/usr/local/share/mybins//rita2/bin:/usr/bin/mh:/home/rita/programs:/home/rita/bin:/home/rita/rbin:/home/rita/opt/*/bin:/home/ritamail/bin:/home/test/bin:/usr/local/ritadev/ritaCD/bin:/usr/local/ritadev/rita2/rita/bin:/home/rita/keep/uureceive/bin:/usr/local/ritadev/ritaCD/irisfm/bin:/usr/local/ritadev/rita2/rita/opt/tue/bin:/usr/local/ritadev/ritaCD/irisfm/receive/home/rita/bin
-FIFI
-fifi is /home/rita/bin/fifi
-#________________________________________________________________________________________________________rita_2008-w51-5-14:13
- 156 errors and/or todos in 81 out of 181 documents (44%).
-PATH
-/usr/local/share/jdk1.5.0_16/bin:/usr/local/share/apache-maven-2.0.9/bin:/home/rita/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/rita/programs/alle:/usr/local/share/jdk1.5.0_16/bin:/usr/local/share/netbeans-6.1/java2/ant/bin:/usr/local/share/eclipse:/usr/local/share/mybins//ritaCD/bin:/usr/local/share/mybins//irisfm/bin:/usr/local/share/mybins//scripta_scripta/bin:/usr/local/share/mybins//uureceive/bin:/usr/local/share/mybins//irisfm/receive/home/rita/bin:/usr/local/share/mybins//test/bin:/usr/local/share/mybins//tue/bin:/usr/local/share/mybins//rita/bin:/usr/local/share/mybins//rita2/bin:/usr/bin/mh:/home/rita/programs:/home/rita/bin:/home/rita/rbin:/home/rita/opt/*/bin:/home/ritamail/bin:/home/test/bin:/usr/local/ritadev/ritaCD/bin:/usr/local/ritadev/rita2/rita/bin:/home/rita/keep/uureceive/bin:/usr/local/ritadev/ritaCD/irisfm/bin:/usr/local/ritadev/rita2/rita/opt/tue/bin:/usr/local/ritadev/ritaCD/irisfm/receive/home/rita/bin
-FIFI
-fifi is /home/rita/bin/fifi
-#________________________________________________________________________________________________________rita_2008-w51-5-14:20
- 155 errors and/or todos in 81 out of 181 documents (44%).
-PATH
-/usr/local/share/jdk1.5.0_16/bin:/usr/local/share/apache-maven-2.0.9/bin:/home/rita/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/rita/programs/alle:/usr/local/share/jdk1.5.0_16/bin:/usr/local/share/netbeans-6.1/java2/ant/bin:/usr/local/share/eclipse:/usr/local/share/mybins//ritaCD/bin:/usr/local/share/mybins//irisfm/bin:/usr/local/share/mybins//scripta_scripta/bin:/usr/local/share/mybins//uureceive/bin:/usr/local/share/mybins//irisfm/receive/home/rita/bin:/usr/local/share/mybins//test/bin:/usr/local/share/mybins//tue/bin:/usr/local/share/mybins//rita/bin:/usr/local/share/mybins//rita2/bin:/usr/bin/mh:/home/rita/programs:/home/rita/bin:/home/rita/rbin:/home/rita/opt/*/bin:/home/ritamail/bin:/home/test/bin:/usr/local/ritadev/ritaCD/bin:/usr/local/ritadev/rita2/rita/bin:/home/rita/keep/uureceive/bin:/usr/local/ritadev/ritaCD/irisfm/bin:/usr/local/ritadev/rita2/rita/opt/tue/bin:/usr/local/ritadev/ritaCD/irisfm/receive/home/rita/bin
-FIFI
-fifi is /home/rita/bin/fifi
-#________________________________________________________________________________________________________rita_2008-w51-5-14:34
- 154 errors and/or todos in 80 out of 182 documents (43%).
-PATH
-/usr/local/share/jdk1.5.0_16/bin:/usr/local/share/apache-maven-2.0.9/bin:/home/rita/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/rita/programs/alle:/usr/local/share/jdk1.5.0_16/bin:/usr/local/share/netbeans-6.1/java2/ant/bin:/usr/local/share/eclipse:/usr/local/share/mybins//ritaCD/bin:/usr/local/share/mybins//irisfm/bin:/usr/local/share/mybins//scripta_scripta/bin:/usr/local/share/mybins//uureceive/bin:/usr/local/share/mybins//irisfm/receive/home/rita/bin:/usr/local/share/mybins//test/bin:/usr/local/share/mybins//tue/bin:/usr/local/share/mybins//rita/bin:/usr/local/share/mybins//rita2/bin:/usr/bin/mh:/home/rita/programs:/home/rita/bin:/home/rita/rbin:/home/rita/opt/*/bin:/home/ritamail/bin:/home/test/bin:/usr/local/ritadev/ritaCD/bin:/usr/local/ritadev/rita2/rita/bin:/home/rita/keep/uureceive/bin:/usr/local/ritadev/ritaCD/irisfm/bin:/usr/local/ritadev/rita2/rita/opt/tue/bin:/usr/local/ritadev/ritaCD/irisfm/receive/home/rita/bin
-FIFI
-fifi is /home/rita/bin/fifi
-#________________________________________________________________________________________________________rita_2008-w51-5-14:47
- 154 errors and/or todos in 80 out of 182 documents (43%).
-PATH
-/usr/local/share/jdk1.5.0_16/bin:/usr/local/share/apache-maven-2.0.9/bin:/home/rita/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/rita/programs/alle:/usr/local/share/jdk1.5.0_16/bin:/usr/local/share/netbeans-6.1/java2/ant/bin:/usr/local/share/eclipse:/usr/local/share/mybins//ritaCD/bin:/usr/local/share/mybins//irisfm/bin:/usr/local/share/mybins//scripta_scripta/bin:/usr/local/share/mybins//uureceive/bin:/usr/local/share/mybins//irisfm/receive/home/rita/bin:/usr/local/share/mybins//test/bin:/usr/local/share/mybins//tue/bin:/usr/local/share/mybins//rita/bin:/usr/local/share/mybins//rita2/bin:/usr/bin/mh:/home/rita/programs:/home/rita/bin:/home/rita/rbin:/home/rita/opt/*/bin:/home/ritamail/bin:/home/test/bin:/usr/local/ritadev/ritaCD/bin:/usr/local/ritadev/rita2/rita/bin:/home/rita/keep/uureceive/bin:/usr/local/ritadev/ritaCD/irisfm/bin:/usr/local/ritadev/rita2/rita/opt/tue/bin:/usr/local/ritadev/ritaCD/irisfm/receive/home/rita/bin
-FIFI
-fifi is /home/rita/bin/fifi
-#________________________________________________________________________________________________________rita_2008-w51-5-14:54
- 154 errors and/or todos in 80 out of 182 documents (43%).
-PATH
-/usr/local/share/jdk1.5.0_16/bin:/usr/local/share/apache-maven-2.0.9/bin:/home/rita/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/rita/programs/alle:/usr/local/share/jdk1.5.0_16/bin:/usr/local/share/netbeans-6.1/java2/ant/bin:/usr/local/share/eclipse:/usr/local/share/mybins//ritaCD/bin:/usr/local/share/mybins//irisfm/bin:/usr/local/share/mybins//scripta_scripta/bin:/usr/local/share/mybins//uureceive/bin:/usr/local/share/mybins//irisfm/receive/home/rita/bin:/usr/local/share/mybins//test/bin:/usr/local/share/mybins//tue/bin:/usr/local/share/mybins//rita/bin:/usr/local/share/mybins//rita2/bin:/usr/bin/mh:/home/rita/programs:/home/rita/bin:/home/rita/rbin:/home/rita/opt/*/bin:/home/ritamail/bin:/home/test/bin:/usr/local/ritadev/ritaCD/bin:/usr/local/ritadev/rita2/rita/bin:/home/rita/keep/uureceive/bin:/usr/local/ritadev/ritaCD/irisfm/bin:/usr/local/ritadev/rita2/rita/opt/tue/bin:/usr/local/ritadev/ritaCD/irisfm/receive/home/rita/bin
-FIFI
-fifi is /home/rita/bin/fifi
-#________________________________________________________________________________________________________rita_2008-w51-5-19:05
- 154 errors and/or todos in 80 out of 182 documents (43%).
-#__________________________________________________________rita_2008-w52-3-12:15
- 161 errors and/or todos in 81 out of 182 documents (44%).
-#_______________________________________________________________________________________________________rita_2008-w52-3-17:01
- 161 errors and/or todos in 81 out of 182 documents (44%).
-#_____________________________________________________________________________________________________rita_2009-w02-5-16:58
- 351 errors and/or todos in 193 out of 193 documents (100%).
-#__________________________________________________________rita_2009-w04-3-09:53
- 170 errors and/or todos in 85 out of 194 documents (43%).
-#_________________________________________________________________________rita_2009-w04-4-12:48
- 358 errors and/or todos in 197 out of 197 documents (100%).
-#_________________________________________________________________________rita_2009-w04-4-13:37
- 358 errors and/or todos in 197 out of 197 documents (100%).
-#_________________________________________________________________________rita_2009-w04-4-13:45
- 357 errors and/or todos in 197 out of 197 documents (100%).
-#_________________________________________________________________________rita_2009-w04-4-15:49
- 359 errors and/or todos in 198 out of 198 documents (100%).
-#__________________________________________________________rita_2009-w04-5-10:18
- 359 errors and/or todos in 198 out of 198 documents (100%).
-#_________________________________________________________________________rita_2009-w04-7-20:47
- 370 errors and/or todos in 205 out of 205 documents (100%).
-#_______________________________________________________________________rita_2009-w05-1-12:06
- 375 errors and/or todos in 208 out of 208 documents (100%).
-#_______________________________________________________________________rita_2009-w05-1-12:50
- 376 errors and/or todos in 209 out of 209 documents (100%).
-#_______________________________________________________________________rita_2009-w05-1-13:36
- 376 errors and/or todos in 209 out of 209 documents (100%).
-#_______________________________________________________________________rita_2009-w05-1-13:38
- 376 errors and/or todos in 209 out of 209 documents (100%).
-#_______________________________________________________________________rita_2009-w05-1-14:06
- 376 errors and/or todos in 209 out of 209 documents (100%).
-#__________________________________________________________rita_2009-w05-5-16:48
- 391 errors and/or todos in 219 out of 219 documents (100%).
-#__________________________________________________________rita_2009-w05-5-16:49
- 393 errors and/or todos in 219 out of 219 documents (100%).
-#__________________________________________________________rita_2009-w05-5-17:01
- 393 errors and/or todos in 219 out of 219 documents (100%).
-#__________________________________________________________rita_2009-w05-5-17:06
- 394 errors and/or todos in 219 out of 219 documents (100%).
-#__________________________________________________________rita_2009-w06-1-14:39
- 392 errors and/or todos in 219 out of 219 documents (100%).
-#____________________________________________________________rita_2009-w06-2-14:33
- 392 errors and/or todos in 219 out of 219 documents (100%).
-#______________________________________________________________________________rita_2009-w06-5-15:22
- 398 errors and/or todos in 221 out of 221 documents (100%).
-#__________________________________________________________rita_2009-w09-3-18:15
- 405 errors and/or todos in 223 out of 223 documents (100%).
-#__________________________________________________________rita_2009-w09-3-18:23
- 405 errors and/or todos in 223 out of 223 documents (100%).
-#_______________________________________________________________________________________________________rita_2009-w09-4-16:09
- 414 errors and/or todos in 228 out of 228 documents (100%).
-#_______________________________________________________________________________________________________rita_2009-w09-4-16:10
- 416 errors and/or todos in 228 out of 228 documents (100%).
-#_______________________________________________________________________rita_2009-w11-2-19:25
- 418 errors and/or todos in 230 out of 230 documents (100%).
-#________________________________________________________________________________rita_2009-w15-2-20:17
- 435 errors and/or todos in 236 out of 236 documents (100%).
-#___________________________________________________________________________________________________________________rita_2009-w17-5-18:26
- 435 errors and/or todos in 236 out of 236 documents (100%).
-#___________________________________________________________________________________________________________________rita_2009-w17-5-19:09
- 435 errors and/or todos in 236 out of 236 documents (100%).
-#__________________________________________________________rita_2009-w25-1-21:14
- 436 errors and/or todos in 236 out of 236 documents (100%).
-#__________________________________________________________rita_2009-w25-1-21:22
- 436 errors and/or todos in 236 out of 236 documents (100%).
-#__________________________________________________________rita_2009-w25-1-21:22
- 438 errors and/or todos in 236 out of 236 documents (100%).
-#__________________________________________________________rita_2009-w25-1-21:35
- 438 errors and/or todos in 236 out of 236 documents (100%).
-#__________________________________________________________rita_2009-w25-1-22:01
- 440 errors and/or todos in 238 out of 238 documents (100%).
-#_________________________________________________________________________________________rita_2009-w25-1-22:27
- 442 errors and/or todos in 240 out of 240 documents (100%).
-#______________________________________________________________________________________________rita_2009-w25-2-15:51
- 446 errors and/or todos in 245 out of 245 documents (100%).
-#______________________________________________________________________________________________rita_2009-w25-2-15:57
- 446 errors and/or todos in 245 out of 245 documents (100%).
-#______________________________________________________________________________________________rita_2009-w25-2-16:02
- 449 errors and/or todos in 246 out of 246 documents (100%).
-#______________________________________________________________________________________________rita_2009-w25-2-16:25
- 449 errors and/or todos in 246 out of 246 documents (100%).
-#______________________________________________________________________________________________rita_2009-w25-2-16:38
- 449 errors and/or todos in 246 out of 246 documents (100%).
-#______________________________________________________________________________________________rita_2009-w25-2-16:49
- 448 errors and/or todos in 245 out of 245 documents (100%).
-#______________________________________________________________________________________________rita_2009-w25-2-16:58
- 448 errors and/or todos in 245 out of 245 documents (100%).
-#______________________________________________________________________________________________rita_2009-w25-2-16:59
- 448 errors and/or todos in 245 out of 245 documents (100%).
-#__________________________________________________________rita_2009-w25-2-22:30
- 447 errors and/or todos in 244 out of 244 documents (100%).
-#__________________________________________________________rita_2009-w25-3-13:40
- 447 errors and/or todos in 244 out of 244 documents (100%).
-#__________________________________________________________rita_2009-w25-3-14:00
- 449 errors and/or todos in 244 out of 244 documents (100%).
-#__________________________________________________________rita_2009-w25-3-15:22
- 449 errors and/or todos in 244 out of 244 documents (100%).
-#__________________________________________________________rita_2009-w25-3-15:26
- 449 errors and/or todos in 244 out of 244 documents (100%).
-#__________________________________________________________rita_2009-w25-3-17:53
- 452 errors and/or todos in 246 out of 246 documents (100%).
-#__________________________________________________________rita_2009-w25-3-18:10
- 445 errors and/or todos in 245 out of 245 documents (100%).
-#__________________________________________________________rita_2009-w25-3-18:15
- 443 errors and/or todos in 244 out of 244 documents (100%).
-#__________________________________________________________rita_2009-w25-3-20:59
- 442 errors and/or todos in 243 out of 243 documents (100%).
-#__________________________________________________________rita_2009-w25-3-21:05
- 442 errors and/or todos in 243 out of 243 documents (100%).
-#__________________________________________________________rita_2009-w25-3-21:34
- 441 errors and/or todos in 243 out of 243 documents (100%).
-#__________________________________________________________rita_2009-w25-3-21:37
- 440 errors and/or todos in 242 out of 242 documents (100%).
-#__________________________________________________________rita_2009-w25-4-11:18
- 434 errors and/or todos in 240 out of 240 documents (100%).
-#_________________________________________________________________________________________________rita_2009-w25-4-12:33
- 434 errors and/or todos in 240 out of 240 documents (100%).
-#_________________________________________________________________________________________________rita_2009-w25-4-12:39
- 436 errors and/or todos in 241 out of 241 documents (100%).
-#____________________________________________________________________________________________________________________rita_2009-w31-3-20:22
- 442 errors and/or todos in 251 out of 251 documents (100%).
-#__________________________________________________________rita_2009-w34-2-10:35
- 401 errors and/or todos in 240 out of 240 documents (100%).
-#_____________________________________________________________________________________rita_2009-w34-2-10:42
- 402 errors and/or todos in 240 out of 240 documents (100%).
-#_____________________________________________________________________________________rita_2009-w34-2-11:23
- 397 errors and/or todos in 240 out of 240 documents (100%).
-#_____________________________________________________________________________________________rita_2009-w34-2-11:34
- 396 errors and/or todos in 240 out of 240 documents (100%).
-#_____________________________________________________________________________________________rita_2009-w34-2-11:35
- 396 errors and/or todos in 240 out of 240 documents (100%).
-#_____________________________________________________________________________________________rita_2009-w34-2-11:39
- 398 errors and/or todos in 242 out of 242 documents (100%).
-#_____________________________________________________________________________________________rita_2009-w34-2-11:48
- 398 errors and/or todos in 242 out of 242 documents (100%).
-#__________________________________________________________rita_2009-w34-2-12:17
- 399 errors and/or todos in 242 out of 242 documents (100%).
-#__________________________________________________________rita_2009-w34-2-14:59
- 399 errors and/or todos in 242 out of 242 documents (100%).
-#__________________________________________________________________________________________________rita_2009-w34-3-11:05
- 397 errors and/or todos in 242 out of 242 documents (100%).
-#__________________________________________________________________________________________________rita_2009-w34-3-11:09
- 397 errors and/or todos in 242 out of 242 documents (100%).
-#__________________________________________________________rita_2009-w34-3-11:23
- 395 errors and/or todos in 241 out of 241 documents (100%).
-#__________________________________________________________________________________rita_2009-w34-3-11:35
- 395 errors and/or todos in 241 out of 241 documents (100%).
-#__________________________________________________________________________________rita_2009-w34-3-11:38
- 395 errors and/or todos in 241 out of 241 documents (100%).
-#_________________________________________________________________________________________________rita_2009-w34-3-12:37
- 396 errors and/or todos in 239 out of 239 documents (100%).
-#_________________________________________________________________________________________________rita_2009-w34-3-14:39
- 389 errors and/or todos in 239 out of 239 documents (100%).
-#_________________________________________________________________________________________________rita_2009-w34-3-14:41
- 396 errors and/or todos in 239 out of 239 documents (100%).
-#__________________________________________________________________________________________________rita_2009-w34-3-14:50
- 396 errors and/or todos in 239 out of 239 documents (100%).
-#__________________________________________________________________________________________________rita_2009-w34-3-15:44
- 389 errors and/or todos in 232 out of 232 documents (100%).
-#__________________________________________________________________________________________________rita_2009-w34-3-15:52
- 388 errors and/or todos in 232 out of 232 documents (100%).
-#__________________________________________________________________________________________________rita_2009-w34-3-15:54
- 388 errors and/or todos in 232 out of 232 documents (100%).
-#__________________________________________________________________________________________________rita_2009-w34-3-16:52
- 387 errors and/or todos in 231 out of 231 documents (100%).
-#__________________________________________________________rita_2009-w34-4-10:22
- 387 errors and/or todos in 231 out of 231 documents (100%).
-#___________________________________________________________________________rita_2009-w34-4-10:38
- 387 errors and/or todos in 232 out of 232 documents (100%).
-#__________________________________________________________rita_2009-w34-4-10:43
- 387 errors and/or todos in 232 out of 232 documents (100%).
-#___________________________________________________________________________rita_2009-w34-4-10:50
- 385 errors and/or todos in 232 out of 232 documents (100%).
-#___________________________________________________________________________rita_2009-w34-4-10:54
- 384 errors and/or todos in 232 out of 232 documents (100%).
-#______________________________________________________________________________________________________rita_2009-w34-4-11:35
- 374 errors and/or todos in 230 out of 230 documents (100%).
-#______________________________________________________________________________________________________rita_2009-w34-4-11:53
- 390 errors and/or todos in 246 out of 246 documents (100%).
-#__________________________________________________________________________________rita_2009-w34-4-12:20
- 390 errors and/or todos in 246 out of 246 documents (100%).
-#______________________________________________________________________________________________________rita_2009-w34-4-12:34
- 375 errors and/or todos in 231 out of 231 documents (100%).
-#__________________________________________________________________________________rita_2009-w34-4-12:36
- 374 errors and/or todos in 230 out of 230 documents (100%).
-#_____________________________________________________________________________________rita_2009-w35-3-15:39
- 387 errors and/or todos in 238 out of 238 documents (100%).
-#_____________________________________________________________________________________rita_2009-w35-3-15:41
- 387 errors and/or todos in 238 out of 238 documents (100%).
-#_____________________________________________________________________________________rita_2009-w35-3-15:41
- 387 errors and/or todos in 238 out of 238 documents (100%).
-#_____________________________________________________________________________________rita_2009-w35-3-15:42
- 387 errors and/or todos in 238 out of 238 documents (100%).
-#______________________________________________________________________________rita_2009-w35-3-16:09
- 387 errors and/or todos in 238 out of 238 documents (100%).
-#________________________________________________________________________rita_2009-w35-4-13:57
- 393 errors and/or todos in 241 out of 241 documents (100%).
-#____________________________________________________________________________________________________rita_2009-w35-4-14:17
- 393 errors and/or todos in 241 out of 241 documents (100%).
-#_________________________________________________________________________________rita_2009-w35-4-14:48
- 393 errors and/or todos in 241 out of 241 documents (100%).
-#_________________________________________________________________________________________________rita_2009-w37-4-15:42
- 395 errors and/or todos in 241 out of 241 documents (100%).
-#_________________________________________________________________________________________________rita_2009-w37-4-15:45
- 395 errors and/or todos in 241 out of 241 documents (100%).
-#_________________________________________________________________________________________________rita_2009-w37-4-15:48
- 395 errors and/or todos in 241 out of 241 documents (100%).
-#_________________________________________________________________________________________________rita_2009-w37-4-15:54
- 395 errors and/or todos in 241 out of 241 documents (100%).
-#_________________________________________________________________________________________________rita_2009-w37-4-15:56
- 395 errors and/or todos in 241 out of 241 documents (100%).
-#_________________________________________________________________________________________________rita_2009-w37-4-16:00
- 395 errors and/or todos in 241 out of 241 documents (100%).
-#____________________________________________________________________________________rita_2009-w37-4-16:24
- 395 errors and/or todos in 241 out of 241 documents (100%).
-#____________________________________________________________________________________rita_2009-w37-4-16:28
- 395 errors and/or todos in 241 out of 241 documents (100%).
-#____________________________________________________________________________________rita_2009-w37-4-16:32
- 395 errors and/or todos in 241 out of 241 documents (100%).
-#____________________________________________________________________________________rita_2009-w37-4-16:34
- 395 errors and/or todos in 241 out of 241 documents (100%).
-#_____________________________________________________________________________________________________rita_2009-w37-4-18:11
- 395 errors and/or todos in 241 out of 241 documents (100%).
-#_____________________________________________________________________________________________________rita_2009-w37-4-18:14
- 395 errors and/or todos in 241 out of 241 documents (100%).
-#_____________________________________________________________________________________________________rita_2009-w37-4-18:16
- 395 errors and/or todos in 241 out of 241 documents (100%).
-#_______________________________________________________________________________________rita_2009-w37-5-10:36
- 395 errors and/or todos in 241 out of 241 documents (100%).
-#_________________________________________________________________________________________rita_2009-w40-3-11:27
- 404 errors and/or todos in 243 out of 243 documents (100%).
Deleted: hippo-ecm/trunk/src/site/folder.xml
===================================================================
--- hippo-ecm/trunk/src/site/folder.xml 2009-12-01 22:45:31 UTC (rev 20968)
+++ hippo-ecm/trunk/src/site/folder.xml 2009-12-01 23:51:02 UTC (rev 20969)
@@ -1,1326 +0,0 @@
-
-
- .
- about
- release_notes
-
- Hippo CMS release notes
-
-
- CMS_7_1_release
- index
-
- roadmap
- term_index
- version_numbers
-
- delve_into
- bin_startup_help
- core
-
- Hacking the core
- Take a deep dive into core Hippo CMS development.
-
- Hippo CMS is open source software. All source code is available from our SVN repository
- under the Apache license.
- This section explains how to get the source code, how to build it, and how to set
- up your IDE. In addition, the architecture and the conceptual ideas behind it
- are explained in detail.
-
-
- building
-
- Building Hippo CMS
- Build Hippo CMS from source using your tool of choice.
-
- Getting the Hippo CMS source code and building it is easy. Hippo CMS
- uses a Maven build environment,
- but it is also possible to use a Java IDE like Eclipse
- or Netbeans.
-
-
- eclipse
- index
- maven
- netbeans
-
- index
- project-structure
-
- custom
- howto
- customize_editing_template
- customize_skin
- eclipse
- configure_workspace
- import_project
- index
- start_eclipse
-
- editing_template_plugin
- extend_dashboard
- gui_plugin
- hello_model
- index
- packaging
- workflow
-
- index
- introduction
- jcr
-
- JCR Interface
- Direct access to your content through the JCR API.
-
- The standard JCR interface exposed by Hippo CMS gives you direct access
- to your content inside the repository, and all the content management
- functionalities provided by Hippo CMS. This allows you to build almost
- any imaginable application on top of Hippo CMS. This section describes how
- to get started, and provides some examples on how you could use the
- possibilities of the JCR interface.
-
-
- examples
- index
- jcr
- reference
-
- JCR reference guide
- Deeper explanations of the JCR interface
-
- derived_data
- index
-
-
- project_export
- add_project
- excludes
- export_project
- index
- start
- why_export
-
- reference
- frontend
- frontend_plugin_architecture
- frontend_plugin_communication
- index
-
- index
- repository
- repository_bootstrap
- repository_plugins
- workflow
-
-
- schemas
- synonyms
-
- overview
- quickstart_in_existing_container
- quickstart
- sysadmin
-
- System Administration Guide
- What does a system administrator need to know and do for Hippo CMS?
-
- These pages describe how to get Hippo ECM up and running and how to configure your running application.
-
-
-
-
- configuration
-
- Configuration
- What does a system administrator have to configure in Hippo CMS?
-
- Whole folder, and rewrite if necessary.
-
-
- console
- database_server
- index
- nodes
-
- Configuration Nodes Reference
-
- Configuration of Hippo ECM functionality is stored inside Hippo Repository
- as configuration nodes in the JCR tree, and is accessible through the standard
- JCR interface.
-
-
- domains
- groups
- index
- roles
- users
- workflow
-
- performance_tuning
- repository
-
- Repository Configuration
- The base repository configuration through a number of XML files.
-
- authentication
- index
- overview
- searchindex
- workspace
-
-
- debugging
- index
- installation
-
- Installation
- How to install Hippo CMS
-
-
-
-
-
- help_renamed
- help_startup_servlet_container
- help_web_servlet_container
- in_application_server
- index
- in_servlet_container
- install_tomcat
- plugins
-
- requirements
-
- tools
-
- Development Tools
- Tools used when developing upon Hippo CMS 7
-
- This section is to describe general tools and procedures needed when developing on top of Hippo CMS 7.
-
-
- eclipse
-
- Eclipse
- How to use eclipse for Hippo projects.
-
- configure_workspace
- index
- start_eclipse
- war_overlays_in_eclipse
-
- index
- maven
-
- Maven
- How to use maven for Hippo projects.
-
- basics
- index
- install_maven
- learning_maven
- run_development_package
-
- svn
-
- SVN
- How to use subversion for Hippo projects.
-
- Hippo projects are version controlled with Subversion.
- They can be anonymously checked out using any subversion client.
- Instructions on Subversion use can be found at http://svnbook.red-bean.com/.
-
-
- get_Hippo_CMS_source
- index
-
-
- user
- cms_admins
- concepts
-
- CMS Administrator Concepts
- A collection of concepts a CMS administrators may want to know.
-
-
-
- If you do not know where to start, take the Tour.
-
-
-
-
- home_workspace
- index
-
- howto
-
- CMS administrator Howto
- A collection of howto's for small tasks a CMS administrator may want to do.
-
-
-
- If you do not know where to start, take the Tour.
-
-
-
-
- add_group
- add_user
- assign_user_to_group
- change_group_properties
- change_password
- change_user_properties
- deactivate_account
- goto_user_management_workspace
- index
- login
- logout
- publish_all
- save_settings
- set_permissions_for_group
- start_CMS
-
- index
- todo
- goto_group_properties
- goto_user_properties
- type_in_editing_region
-
- tour
-
- contributors
- concepts
-
- CMS Author Concepts
- A collection of concepts a CMS author may want to know.
-
-
-
- If you do not know where to start, take the Tour.
-
-
-
-
- boolean
- content_workspace
- contributor
- current_folder
- document_actions_menu
- document_type
- document
- editing
- edit_mode
- editor
- folder_action_menu
- folder_navigation_panel
- folder_tabulation_panel
- folder
- home_workspace
- index
- inputfield
- markuped_text
- review_mode
- slider
- string
- tab_pages_panel
- tab_page
- workspace_navigation_panel
- workspace
-
- howto
-
- CMS Author Howto
- A collection of howto's for small tasks an author may want to do.
-
-
-
- If you do not know where to start, take the Tour.
-
-
-
-
- change_own_password
- create_document
- discard_changes
- editor_actions
- fill_boolean_field_in_document
- fill_date_field_in_document
- fill_markuped_text_in_document
- fill_string_field_in_document
- goto_content_workspace
- goto_folder
- index
- learn_meaning_of_inputfield
- login
- logout
- request_publication
- request_take_offline
- save_document
- schedule_publication
- set_edit_mode
- show_referring_documents
- start_CMS
-
- index
- tour
-
- editors
- concepts
-
- CMS Editor Concepts
- A collection of concepts a CMS editor may want to know.
-
-
-
- If you do not know where to start, take the Tour.
-
-
-
-
- editor
- folder
- home_workspace
- index
- request
- scheduled_publication
-
- howto
-
- CMS Editor Howto
- A collection of howto's for small tasks an CMS editor may want to do.
-
-
-
- If you do not know where to start, take the Tour.
-
-
-
-
- check_for_requests
- count_modified_at_publish
- count_modified_at_take_offline
- count_published
- count_unpublished
- create_folder
- handle_request
- index
- login
- logout
- publish_all_in_folder
- referring_documents
- start_CMS
- take_offline_all_in_folder
-
- index
- old
- goto_content_browse_tab
-
- tour
-
- index
- information_architects
- concepts
-
- CMS Information Architects Concepts
- A collection of concepts a CMS information architect may want to know.
-
-
-
- If you do not know where to start, take the Tour.
-
-
-
-
- boolean
- compoundtype
- documenttype
- editing
- edit_mode
- field_properties_overview
- field_type_menu
- index
- mandatory_or_optional
- markuped_text
- namespaces_folder
- namespace
- review_mode
- string
- URL
-
- howto
-
- CMS Information Architect Howto
- A collection of howto's for small tasks an information architect may want to do!
-
-
-
- If you do not know where to start, take the Tour.
-
-
-
-
- add_boolean_to_documenttype
- add_custom_compound
- add_date_to_documenttype
- add_markuped_text_to_documenttype
- add_number_to_documenttype
- add_string_to_documenttype
- change_field_in_documenttype
- create_custom_compound
- create_documenttype
- create_namespace
- fieldcaption
- fieldsize
- goto_documenttype_card
- goto_namespace
- index
- login
- logout
- mandatory_or_optional
- naming_a_field
- remove_field_from_documenttype
- save_documenttype
- specify_type_details
- specify_type_layout
- start_CMS
- update_all_content
-
- index
- old
- goto_content_browse_tab
-
- old-concepts
- current_folder
- folder_action_menu
-
- tour
-
- screenshots
-
- web
- add-ons
- howto
- editing_template
- index
- packaging
-
- index
- introduction
-
- index
- jcr
- *
-
- toolkits
- index
-
-
-
- errorlist
- index
- integration_testing
- releasing
- support
- community
- contributing
- forums
-
-
Copied: hippo-ecm/trunk/src/site/hippo_logo.png (from rev 20968, hippo-ecm/trunk/src/site/resources/images/hippo_logo.png)
===================================================================
(Binary files differ)
Property changes on: hippo-ecm/trunk/src/site/hippo_logo.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: svn:mergeinfo
+ /hippo-ecm/branches/Branch-HREPTWO-v2_03_xx/src/site/resources/images/hippo_logo.png:17183-17186,17202,17206,17211-17212
/hippo-ecm/branches/Branch-HREPTWO-v2_09_xx/src/site/resources/images/hippo_logo.png:20255-20460
/hippo-ecm/branches/wicket_upgrade_to_1_4/src/site/resources/images/hippo_logo.png:20604-20690
Deleted: hippo-ecm/trunk/src/site/hippo_xdoc_template.xml
===================================================================
--- hippo-ecm/trunk/src/site/hippo_xdoc_template.xml 2009-12-01 22:45:31 UTC (rev 20968)
+++ hippo-ecm/trunk/src/site/hippo_xdoc_template.xml 2009-12-01 23:51:02 UTC (rev 20969)
@@ -1,70 +0,0 @@
-
-
-
-
-
- Change to the browser title
-
-
-
-
- Change to document short description.
-
- this whole document.
-
-
Introductory text.
- Introductory text.
-
-
-
-
-
-
This is text with an index word.
-
-
-
First subsubsection title
-
Text
- text
-
-
-
First subsubsection title
-
Text
- text
-
-
-
-
-
-
-
-
Text
-
-
-
- code line 1
- code line 2
-
-
-
-
-
-
Deleted: hippo-ecm/trunk/src/site/restore_previous_version.xml
===================================================================
--- hippo-ecm/trunk/src/site/restore_previous_version.xml 2009-12-01 22:45:31 UTC (rev 20968)
+++ hippo-ecm/trunk/src/site/restore_previous_version.xml 2009-12-01 23:51:02 UTC (rev 20969)
@@ -1,46 +0,0 @@
-
-
-
-
-
- Versioning
-
-
-
-
- How to replace the current content of a document with content the document had sometime in the past?
-
- all text
-
-
-Finally the "Restore" button allows the user to replace the current document
-with the content of a historic document. Note that this does not mean that
-the historic version of the document becomes the current version of the
-document. Only the content is restored, and the existing history of the
-document is kept intact.
-
-
-
-The Restore button is always available, but users which do not have full
-rights to modify the document may not be able to restore the document this
-way. The workflow should in this case allow the user to request a restore
-(this is not yet available as part of the reviewed actions workflow).
-
-
-
Modified: hippo-ecm/trunk/src/site/site.xml
===================================================================
--- hippo-ecm/trunk/src/site/site.xml 2009-12-01 22:45:31 UTC (rev 20968)
+++ hippo-ecm/trunk/src/site/site.xml 2009-12-01 23:51:02 UTC (rev 20969)
@@ -25,7 +25,7 @@
org.onehippo.ecm.skinmaven-skin
- 1.01.08-SNAPSHOT
+ 1.01.08
-
-
- Versioning
-
-
-
- What is versioning to a content contributor?
-
-
Versioning allows
- you to browse the history of a document,
- i.e. to see the changes to the
- document over time and allows you to
- restore a previous version of the document,
- to replace the current content of a document with content the document had sometime in the past.
-
-
Versioning requires that copies of your document are saved for later history browsing and
- restoring. This is done automatically by Hippo CMS, but at what occasions the copies are automatically made
- is a business rule decided by your organization.
- Who will know and how to find out what the business rule actually is?
-
-Versioning is the ability of a CMS to keep track of the changes to a document over time.
-Changes occur when documents are edited, published, re-edited, removed, etcetera.
-
-
-
-
From helpdesk at onehippo.com Wed Dec 2 00:42:15 2009
From: helpdesk at onehippo.com (JIRA (Berry van Halderen))
Date: Wed Dec 2 00:52:46 2009
Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-3490) Remove outdated
documentation from trunk
In-Reply-To: <30462085.232351259710515705.JavaMail.jira@jira.vm.castaserver.com>
Message-ID: <3354035.232361259710935683.JavaMail.jira@jira.vm.castaserver.com>
[ http://issues.onehippo.com/browse/HREPTWO-3490?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Berry van Halderen resolved HREPTWO-3490.
-----------------------------------------
Resolution: Fixed
> Remove outdated documentation from trunk
> ----------------------------------------
>
> Key: HREPTWO-3490
> URL: http://issues.onehippo.com/browse/HREPTWO-3490
> Project: Hippo Repository 2
> Issue Type: Task
> Affects Versions: r2.10.00
> Reporter: Berry van Halderen
> Assignee: Berry van Halderen
> Fix For: r2.10.00
>
>
> Leave site generated from trunk to developer information and generated reports. The current documentation is on the documents site and maintained using Hippo CMS 7 itself.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
From schans at onehippo.com Wed Dec 2 04:11:11 2009
From: schans at onehippo.com (Hippo Hudson Server)
Date: Wed Dec 2 04:11:04 2009
Subject: [HippoRepos-dev] =?utf-8?q?Hudson_build_became_unstable=3A_Hippo?=
=?utf-8?q?_ECM_Trunk_=C2=BB_Reviewed_action_addon_tests_=23921?=
Message-ID: <6733835.921259723471147.JavaMail.hudson@hudson.onehippo.org>
See
From schans at onehippo.com Wed Dec 2 04:11:10 2009
From: schans at onehippo.com (Hippo Hudson Server)
Date: Wed Dec 2 04:11:05 2009
Subject: [HippoRepos-dev] =?utf-8?q?Hudson_build_became_unstable=3A_Hippo?=
=?utf-8?q?_ECM_Trunk_=C2=BB_Sample_addon_tests_=23921?=
Message-ID: <28167821.911259723470828.JavaMail.hudson@hudson.onehippo.org>
See
From schans at onehippo.com Wed Dec 2 04:11:12 2009
From: schans at onehippo.com (Hippo Hudson Server)
Date: Wed Dec 2 04:11:07 2009
Subject: [HippoRepos-dev] Hudson build became unstable: Hippo ECM Trunk #921
Message-ID: <698833.931259723472637.JavaMail.hudson@hudson.onehippo.org>
See
From svn-logs at hippocms.org Wed Dec 2 08:32:53 2009
From: svn-logs at hippocms.org (bvanhalderen)
Date: Wed Dec 2 08:32:56 2009
Subject: [HippoRepos-dev] [20970] hippo-ecm: HREPTWO-3366:
Message-ID: <20091202073253.A7D99C96D@svnnew.onehippo.org>
Revision: 20970
Author: bvanhalderen
Date: 2009-12-02 08:32:52 +0100 (Wed, 02 Dec 2009)
Log Message:
-----------
HREPTWO-3366:
- remove hippo and hipposys from indexing_configuration to allow both
2.0 and 2.0.1 version during startup.
Modified Paths:
--------------
hippo-ecm/trunk/addon/reviewed-action/test/src/test/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml
Modified: hippo-ecm/trunk/addon/reviewed-action/test/src/test/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml
===================================================================
--- hippo-ecm/trunk/addon/reviewed-action/test/src/test/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml 2009-12-01 23:51:02 UTC (rev 20969)
+++ hippo-ecm/trunk/addon/reviewed-action/test/src/test/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml 2009-12-02 07:32:52 UTC (rev 20970)
@@ -15,7 +15,7 @@
limitations under the License.
-->
-
+hippostd:date
From helpdesk at onehippo.com Wed Dec 2 08:23:16 2009
From: helpdesk at onehippo.com (JIRA (Berry van Halderen))
Date: Wed Dec 2 08:33:51 2009
Subject: [HippoRepos-dev] [JIRA] Reopened: (HREPTWO-3366) Automatic upgrade
from 2.09 to 2.10
In-Reply-To: <30941399.113791257926175787.JavaMail.jira@jira.vm.castaserver.com>
Message-ID: <6441137.232381259738596815.JavaMail.jira@jira.vm.castaserver.com>
[ http://issues.onehippo.com/browse/HREPTWO-3366?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Berry van Halderen reopened HREPTWO-3366:
-----------------------------------------
missing addiotional hippostd definition
> Automatic upgrade from 2.09 to 2.10
> -----------------------------------
>
> Key: HREPTWO-3366
> URL: http://issues.onehippo.com/browse/HREPTWO-3366
> Project: Hippo Repository 2
> Issue Type: New Feature
> Reporter: Stephan Westen
> Assignee: Berry van Halderen
> Fix For: r2.10.00
>
>
> Automatic upgrade from 2.09 to 2.10 is probably needed because of improved 'required' validation.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
From svn-logs at hippocms.org Wed Dec 2 09:12:47 2009
From: svn-logs at hippocms.org (bvanhalderen)
Date: Wed Dec 2 09:12:47 2009
Subject: [HippoRepos-dev] [20971] hippo-ecm/tags/test/: HREPTWO-16: remove
test tag
Message-ID: <20091202081247.159B5C96D@svnnew.onehippo.org>
Revision: 20971
Author: bvanhalderen
Date: 2009-12-02 09:12:46 +0100 (Wed, 02 Dec 2009)
Log Message:
-----------
HREPTWO-16: remove test tag
Removed Paths:
-------------
hippo-ecm/tags/test/
From svn-logs at hippocms.org Wed Dec 2 09:17:23 2009
From: svn-logs at hippocms.org (bvanhalderen)
Date: Wed Dec 2 09:17:23 2009
Subject: [HippoRepos-dev] [20972] hippo-ecm/tags/test/: HREPTWO-16: reset
test tag
Message-ID: <20091202081723.D3FF2C96D@svnnew.onehippo.org>
Revision: 20972
Author: bvanhalderen
Date: 2009-12-02 09:17:23 +0100 (Wed, 02 Dec 2009)
Log Message:
-----------
HREPTWO-16: reset test tag
Added Paths:
-----------
hippo-ecm/tags/test/
Property changes on: hippo-ecm/tags/test
___________________________________________________________________
Added: svn:ignore
+ *.tmp
.classpath
.project
.settings
local.properties
nbproject
target
jpox.log
Added: svn:mergeinfo
+ /hippo-ecm/branches/Branch-HREPTWO-v2_03_xx:17183-17186,17202,17206,17211-17212
/hippo-ecm/branches/Branch-HREPTWO-v2_09_xx:20255-20460
/hippo-ecm/branches/wicket_upgrade_to_1_4:20604-20690
From svn-logs at hippocms.org Wed Dec 2 09:43:28 2009
From: svn-logs at hippocms.org (bvanhalderen)
Date: Wed Dec 2 09:43:29 2009
Subject: [HippoRepos-dev] [20973] hippo-ecm: HREPTWO-3366:
Message-ID: <20091202084328.63F6DC19E@svnnew.onehippo.org>
Revision: 20973
Author: bvanhalderen
Date: 2009-12-02 09:43:26 +0100 (Wed, 02 Dec 2009)
Log Message:
-----------
HREPTWO-3366:
- remove hippo and hipposys from indexing_configuration to allow both
2.0 and 2.0.1 version during startup.
Modified Paths:
--------------
hippo-ecm/trunk/addon/sample/test/src/test/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml
Modified: hippo-ecm/trunk/addon/sample/test/src/test/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml
===================================================================
--- hippo-ecm/trunk/addon/sample/test/src/test/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml 2009-12-02 08:17:23 UTC (rev 20972)
+++ hippo-ecm/trunk/addon/sample/test/src/test/resources/org/hippoecm/repository/query/lucene/indexing_configuration.xml 2009-12-02 08:43:26 UTC (rev 20973)
@@ -15,7 +15,7 @@
limitations under the License.
-->
-
+hippostd:date
From helpdesk at onehippo.com Wed Dec 2 10:25:15 2009
From: helpdesk at onehippo.com (JIRA (Berry van Halderen))
Date: Wed Dec 2 10:35:51 2009
Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-3472) live site does not
show published document
In-Reply-To: <15233265.209831259257395746.JavaMail.jira@jira.vm.castaserver.com>
Message-ID: <8209002.233351259745915771.JavaMail.jira@jira.vm.castaserver.com>
[ http://issues.onehippo.com/browse/HREPTWO-3472?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Berry van Halderen updated HREPTWO-3472:
----------------------------------------
Priority: High (was: Normal)
> live site does not show published document
> ------------------------------------------
>
> Key: HREPTWO-3472
> URL: http://issues.onehippo.com/browse/HREPTWO-3472
> Project: Hippo Repository 2
> Issue Type: Bug
> Reporter: Frank van Lankvelt
> Assignee: Berry van Halderen
> Priority: High
> Fix For: r2.09.05, r2.10.00
>
>
> A published document with a (rejected) request is not shown in the live virtual tree. The request is shown above the document in the console.
> The facetselect should show the first of the variants that matches the facet that is used. (a handle is not orderable, so the issue cannot be resolved by imposing an ordering on the nodes under a handle)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
From helpdesk at onehippo.com Wed Dec 2 10:42:15 2009
From: helpdesk at onehippo.com (JIRA (Hippo Helpdesk))
Date: Wed Dec 2 10:52:50 2009
Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-3474) Xinha does not
initialize
In-Reply-To: <27384193.211481259315596135.JavaMail.jira@jira.vm.castaserver.com>
Message-ID: <999442.233771259746935946.JavaMail.jira@jira.vm.castaserver.com>
[ http://issues.onehippo.com/browse/HREPTWO-3474?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Hippo Helpdesk updated HREPTWO-3474:
------------------------------------
Attachment: screenshot-2.jpg
> Xinha does not initialize
> -------------------------
>
> Key: HREPTWO-3474
> URL: http://issues.onehippo.com/browse/HREPTWO-3474
> Project: Hippo Repository 2
> Issue Type: Bug
> Reporter: Stephan Westen
> Assignee: Renate Droogendijk
> Priority: Top
> Fix For: r2.10.00
>
> Attachments: screenshot-1.jpg, screenshot-2.jpg
>
>
> Create a document (based on template Event / 'Gebeurtenis')
> Introduction field too small
> see screenshot
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
From helpdesk at onehippo.com Wed Dec 2 10:51:15 2009
From: helpdesk at onehippo.com (JIRA (Hippo Helpdesk))
Date: Wed Dec 2 11:01:50 2009
Subject: [HippoRepos-dev] [JIRA] Commented: (HREPTWO-3474) Xinha does not
initialize
In-Reply-To: <27384193.211481259315596135.JavaMail.jira@jira.vm.castaserver.com>
Message-ID: <29208864.233881259747475768.JavaMail.jira@jira.vm.castaserver.com>
[ http://issues.onehippo.com/browse/HREPTWO-3474?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=76151#action_76151 ]
Hippo Helpdesk commented on HREPTWO-3474:
-----------------------------------------
Browser: IE7
Does not occur
Browser: FFX 3.5.5
When creating a new document based on the event template, the introduction field, and also the body field are sometimes really small as in screenshot-2
I created 10 documents to test this, and it only happened ones, the first time.
I was logged in as admin
> Xinha does not initialize
> -------------------------
>
> Key: HREPTWO-3474
> URL: http://issues.onehippo.com/browse/HREPTWO-3474
> Project: Hippo Repository 2
> Issue Type: Bug
> Reporter: Stephan Westen
> Assignee: Renate Droogendijk
> Priority: Top
> Fix For: r2.10.00
>
> Attachments: screenshot-1.jpg, screenshot-2.jpg
>
>
> Create a document (based on template Event / 'Gebeurtenis')
> Introduction field too small
> see screenshot
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
From schans at onehippo.com Wed Dec 2 11:14:30 2009
From: schans at onehippo.com (Hippo Hudson Server)
Date: Wed Dec 2 11:14:31 2009
Subject: [HippoRepos-dev] =?utf-8?q?Hudson_build_is_still_unstable=3A_Hip?=
=?utf-8?q?po_ECM_Trunk_=C2=BB_Sample_addon_tests_=23922?=
In-Reply-To: <28167821.911259723470828.JavaMail.hudson@hudson.onehippo.org>
References: <28167821.911259723470828.JavaMail.hudson@hudson.onehippo.org>
Message-ID: <14188266.941259748870306.JavaMail.hudson@hudson.onehippo.org>
See
From schans at onehippo.com Wed Dec 2 11:14:30 2009
From: schans at onehippo.com (Hippo Hudson Server)
Date: Wed Dec 2 11:14:32 2009
Subject: [HippoRepos-dev] =?utf-8?q?Hudson_build_is_back_to_stable=3A_Hip?=
=?utf-8?q?po_ECM_Trunk_=C2=BB_Reviewed_action_addon_tests_=23922?=
In-Reply-To: <6733835.921259723471147.JavaMail.hudson@hudson.onehippo.org>
References: <6733835.921259723471147.JavaMail.hudson@hudson.onehippo.org>
Message-ID: <24400859.951259748870521.JavaMail.hudson@hudson.onehippo.org>
See
From schans at onehippo.com Wed Dec 2 11:14:31 2009
From: schans at onehippo.com (Hippo Hudson Server)
Date: Wed Dec 2 11:14:33 2009
Subject: [HippoRepos-dev] Hudson build is still unstable: Hippo ECM Trunk
#922
In-Reply-To: <698833.931259723472637.JavaMail.hudson@hudson.onehippo.org>
References: <698833.931259723472637.JavaMail.hudson@hudson.onehippo.org>
Message-ID: <27883345.961259748871921.JavaMail.hudson@hudson.onehippo.org>
See
From helpdesk at onehippo.com Wed Dec 2 11:10:16 2009
From: helpdesk at onehippo.com (JIRA (Hippo Helpdesk))
Date: Wed Dec 2 11:20:50 2009
Subject: [HippoRepos-dev] [JIRA] Commented: (HREPTWO-3474) Xinha does not
initialize
In-Reply-To: <27384193.211481259315596135.JavaMail.jira@jira.vm.castaserver.com>
Message-ID: <12533960.233961259748616067.JavaMail.jira@jira.vm.castaserver.com>
[ http://issues.onehippo.com/browse/HREPTWO-3474?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=76154#action_76154 ]
Hippo Helpdesk commented on HREPTWO-3474:
-----------------------------------------
I have just logged out and back in again, and I noticed that now the document does have a normal introduction and body field.
> Xinha does not initialize
> -------------------------
>
> Key: HREPTWO-3474
> URL: http://issues.onehippo.com/browse/HREPTWO-3474
> Project: Hippo Repository 2
> Issue Type: Bug
> Reporter: Stephan Westen
> Assignee: Stephan Westen
> Priority: Top
> Fix For: r2.10.00
>
> Attachments: screenshot-1.jpg, screenshot-2.jpg
>
>
> Create a document (based on template Event / 'Gebeurtenis')
> Introduction field too small
> see screenshot
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
From helpdesk at onehippo.com Wed Dec 2 11:15:15 2009
From: helpdesk at onehippo.com (JIRA (Stephan Westen))
Date: Wed Dec 2 11:25:50 2009
Subject: [HippoRepos-dev]
[JIRA] Updated: (HREPTWO-3488) XInha: lists, quotes, blockquotes
and def lists don't indent
In-Reply-To: <12216582.227371259666055796.JavaMail.jira@jira.vm.castaserver.com>
Message-ID: <13032394.234031259748915794.JavaMail.jira@jira.vm.castaserver.com>
[ http://issues.onehippo.com/browse/HREPTWO-3488?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Stephan Westen updated HREPTWO-3488:
------------------------------------
Assignee: Arthur Bogaart
> XInha: lists, quotes, blockquotes and def lists don't indent
> ------------------------------------------------------------
>
> Key: HREPTWO-3488
> URL: http://issues.onehippo.com/browse/HREPTWO-3488
> Project: Hippo Repository 2
> Issue Type: Bug
> Components: front-end-core, user experience
> Affects Versions: r2.10.00
> Reporter: Mathijs Brand
> Assignee: Arthur Bogaart
>
> Lists should indent in a backend template with a xinha field. By default this indentation is removed.
> More info:
> In the standard xinha editor css (xinhaInternal.css) margins and padding is set to 0px:
> * { margin : 0; padding : 0;}
> This will also remove indentation of lists, quotes, blockquotes and def lists.
> Adding the following lines should fix it:
> ol, ul, dl {margin-left: 2.5em;}
> blockquote {margin: 0 2.5em 0 2.5em;}
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
From helpdesk at onehippo.com Wed Dec 2 12:53:15 2009
From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt))
Date: Wed Dec 2 13:03:50 2009
Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-3369) Move feedback panel
into menu bar
In-Reply-To: <2704375.118331257948435740.JavaMail.jira@jira.vm.castaserver.com>
Message-ID: <33240466.235651259754795919.JavaMail.jira@jira.vm.castaserver.com>
[ http://issues.onehippo.com/browse/HREPTWO-3369?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Frank van Lankvelt updated HREPTWO-3369:
----------------------------------------
Parent: (was: HREPTWO-3346)
Issue Type: Improvement (was: Sub-task)
> Move feedback panel into menu bar
> ---------------------------------
>
> Key: HREPTWO-3369
> URL: http://issues.onehippo.com/browse/HREPTWO-3369
> Project: Hippo Repository 2
> Issue Type: Improvement
> Reporter: Frank van Lankvelt
> Assignee: Frank van Lankvelt
> Fix For: r2.10.00
>
> Original Estimate: 4 hours
> Remaining Estimate: 4 hours
>
> The feedback panel that informs the user of problems during editing, i.e. when a field is invalid and the user wishes to save, is not visible when the user has scrolled down too far.
> Make the feedback panel part of the menu bar, such that the feedback is always visible.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
From helpdesk at onehippo.com Wed Dec 2 12:53:16 2009
From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt))
Date: Wed Dec 2 13:03:51 2009
Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-3395) Introduce
resolution framework
In-Reply-To: <25199404.154171258549335988.JavaMail.jira@jira.vm.castaserver.com>
Message-ID: <24030804.235731259754796051.JavaMail.jira@jira.vm.castaserver.com>
[ http://issues.onehippo.com/browse/HREPTWO-3395?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Frank van Lankvelt updated HREPTWO-3395:
----------------------------------------
Parent: (was: HREPTWO-3346)
Issue Type: New Feature (was: Sub-task)
> Introduce resolution framework
> ------------------------------
>
> Key: HREPTWO-3395
> URL: http://issues.onehippo.com/browse/HREPTWO-3395
> Project: Hippo Repository 2
> Issue Type: New Feature
> Reporter: Frank van Lankvelt
> Assignee: Frank van Lankvelt
> Fix For: r2.11.00
>
> Original Estimate: 1 day, 4 hours
> Remaining Estimate: 1 day, 4 hours
>
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
From helpdesk at onehippo.com Wed Dec 2 12:53:16 2009
From: helpdesk at onehippo.com (JIRA (Frank van Lankvelt))
Date: Wed Dec 2 13:03:52 2009
Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-3346) Required Field
Validation
In-Reply-To: <244631.91301257346335849.JavaMail.jira@jira.vm.castaserver.com>
Message-ID: <11894838.235761259754796104.JavaMail.jira@jira.vm.castaserver.com>
[ http://issues.onehippo.com/browse/HREPTWO-3346?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Frank van Lankvelt resolved HREPTWO-3346.
-----------------------------------------
Resolution: Fixed
remaining tasks have been converted to improvement/new feature
> Required Field Validation
> -------------------------
>
> Key: HREPTWO-3346
> URL: http://issues.onehippo.com/browse/HREPTWO-3346
> Project: Hippo Repository 2
> Issue Type: New Feature
> Reporter: Stephan Westen
> Assignee: Frank van Lankvelt
> Priority: High
> Fix For: r2.10.00
>
>
> The user-friendly definition of "required" differs significantly from the JCR "mandatory". Implement an indirection layer that takes care of the translation. The templates must visually agree with the user-defined notion; the types with the JCR one.
> Related to this, the feedback that is provided to the user must be improved.
> See HREPTWO-3015 for an overview of feedback issues related to mandatory fields.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
From helpdesk at onehippo.com Wed Dec 2 13:20:15 2009
From: helpdesk at onehippo.com (JIRA (Stephan Westen))
Date: Wed Dec 2 13:30:50 2009
Subject: [HippoRepos-dev]
[JIRA] Updated: (HREPTWO-3488) XInha: lists, quotes, blockquotes
and def lists don't indent
In-Reply-To: <12216582.227371259666055796.JavaMail.jira@jira.vm.castaserver.com>
Message-ID: <19267858.236281259756415820.JavaMail.jira@jira.vm.castaserver.com>
[ http://issues.onehippo.com/browse/HREPTWO-3488?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Stephan Westen updated HREPTWO-3488:
------------------------------------
Fix Version/s: r2.10.00
> XInha: lists, quotes, blockquotes and def lists don't indent
> ------------------------------------------------------------
>
> Key: HREPTWO-3488
> URL: http://issues.onehippo.com/browse/HREPTWO-3488
> Project: Hippo Repository 2
> Issue Type: Bug
> Components: front-end-core, user experience
> Affects Versions: r2.10.00
> Reporter: Mathijs Brand
> Assignee: Arthur Bogaart
> Fix For: r2.10.00
>
>
> Lists should indent in a backend template with a xinha field. By default this indentation is removed.
> More info:
> In the standard xinha editor css (xinhaInternal.css) margins and padding is set to 0px:
> * { margin : 0; padding : 0;}
> This will also remove indentation of lists, quotes, blockquotes and def lists.
> Adding the following lines should fix it:
> ol, ul, dl {margin-left: 2.5em;}
> blockquote {margin: 0 2.5em 0 2.5em;}
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
From svn-logs at hippocms.org Wed Dec 2 13:35:42 2009
From: svn-logs at hippocms.org (bvanhalderen)
Date: Wed Dec 2 13:35:42 2009
Subject: [HippoRepos-dev] [20974] hippo-ecm: HREPTWO-3472: make sure all
hippo: request entries are ordered after documents below handles
Message-ID: <20091202123542.827C4C96E@svnnew.onehippo.org>
Revision: 20974
Author: bvanhalderen
Date: 2009-12-02 13:35:41 +0100 (Wed, 02 Dec 2009)
Log Message:
-----------
HREPTWO-3472: make sure all hippo:request entries are ordered after documents below handles
Modified Paths:
--------------
hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/FacetSelectTest.java
hippo-ecm/trunk/repository/modules/src/main/java/org/hippoecm/repository/jackrabbit/ViewVirtualProvider.java
Modified: hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/FacetSelectTest.java
===================================================================
--- hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/FacetSelectTest.java 2009-12-02 08:43:26 UTC (rev 20973)
+++ hippo-ecm/trunk/repository/engine/src/test/java/org/hippoecm/repository/FacetSelectTest.java 2009-12-02 12:35:41 UTC (rev 20974)
@@ -15,18 +15,16 @@
*/
package org.hippoecm.repository;
-import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.fail;
import javax.jcr.Node;
import javax.jcr.NodeIterator;
-import javax.jcr.PathNotFoundException;
-import javax.jcr.RepositoryException;
-import org.hippoecm.repository.util.Utilities;
import org.junit.After;
import org.junit.Test;
@@ -113,6 +111,7 @@
};
@After
+ @Override
public void tearDown() throws Exception {
if(session.getRootNode().hasNode("test")) {
session.getRootNode().getNode("test").remove();
@@ -122,6 +121,90 @@
}
@Test
+ public void testRequestsLast() throws Exception {
+ final String[] data = new String[] {
+ "/test", "nt:unstructured",
+ "/test/docs", "hippo:testdocument",
+ "jcr:mixinTypes", "hippo:harddocument",
+ "/test/docs/doc", "hippo:handle",
+ "jcr:mixinTypes", "hippo:hardhandle",
+ "/test/docs/doc/hippo:request", "hipposys:request",
+ "/test/docs/doc/doc", "hippo:testdocument",
+ "jcr:mixinTypes", "hippo:harddocument",
+ "state", "published",
+ "/test/test1", "hippo:facetselect",
+ "hippo:docbase", "/test/docs",
+ "hippo:facets", "state",
+ "hippo:values", "published",
+ "hippo:modes", "single",
+ "/test/testa", "hippo:facetselect",
+ "hippo:docbase", "/test/docs/doc",
+ "hippo:facets", "state",
+ "hippo:values", "published",
+ "hippo:modes", "single",
+ "/test/test2", "hippo:facetselect",
+ "hippo:docbase", "/test/docs",
+ "hippo:facets", "state",
+ "hippo:values", "published",
+ "hippo:modes", "prefer-single",
+ "/test/testb", "hippo:facetselect",
+ "hippo:docbase", "/test/docs/doc",
+ "hippo:facets", "state",
+ "hippo:values", "published",
+ "hippo:modes", "prefer-single",
+ "/test/test3", "hippo:facetselect",
+ "hippo:docbase", "/test/docs",
+ "hippo:facets", "state",
+ "hippo:values", "published",
+ "hippo:modes", "prefer",
+ "/test/testc", "hippo:facetselect",
+ "hippo:docbase", "/test/docs/doc",
+ "hippo:facets", "state",
+ "hippo:values", "published",
+ "hippo:modes", "prefer",
+ "/test/test4", "hippo:facetselect",
+ "hippo:docbase", "/test/docs",
+ "hippo:facets", "state",
+ "hippo:values", "published",
+ "hippo:modes", "select",
+ "/test/testd", "hippo:facetselect",
+ "hippo:docbase", "/test/docs/doc",
+ "hippo:facets", "state",
+ "hippo:values", "published",
+ "hippo:modes", "select",
+ "/test/test5", "hippo:facetselect",
+ "hippo:docbase", "/test/docs",
+ "hippo:facets", null,
+ "hippo:values", null,
+ "hippo:modes", null,
+ "/test/teste", "hippo:facetselect",
+ "hippo:docbase", "/test/docs/doc",
+ "hippo:facets", null,
+ "hippo:values", null,
+ "hippo:modes", null,
+ "/test/test6", "hippo:mirror",
+ "hippo:docbase", "/test/docs",
+ "/test/testf", "hippo:mirror",
+ "hippo:docbase", "/test/docs/doc"
+ };
+ build(session, data);
+ session.save();
+ session.refresh(false);
+ assertEquals("doc",traverse(session, "/test/test1/doc").getNodes().nextNode().getName());
+ assertEquals("doc",traverse(session, "/test/testa").getNodes().nextNode().getName());
+ assertEquals("doc",traverse(session, "/test/test2/doc").getNodes().nextNode().getName());
+ assertEquals("doc",traverse(session, "/test/testb").getNodes().nextNode().getName());
+ assertEquals("doc",traverse(session, "/test/test3/doc").getNodes().nextNode().getName());
+ assertEquals("doc",traverse(session, "/test/testc").getNodes().nextNode().getName());
+ assertEquals("doc",traverse(session, "/test/test4/doc").getNodes().nextNode().getName());
+ assertEquals("doc",traverse(session, "/test/testd").getNodes().nextNode().getName());
+ assertEquals("doc",traverse(session, "/test/test5/doc").getNodes().nextNode().getName());
+ assertEquals("doc",traverse(session, "/test/teste").getNodes().nextNode().getName());
+ assertEquals("doc",traverse(session, "/test/test6/doc").getNodes().nextNode().getName());
+ assertEquals("doc",traverse(session, "/test/testf").getNodes().nextNode().getName());
+ }
+
+ @Test
public void testBasics() throws Exception {
build(session, content);
session.save();
@@ -194,5 +277,4 @@
assertFalse(session.getRootNode().getNode("test/filterToParentOfFilter/filter1/three").getNodes().hasNext());
assertFalse(session.getRootNode().getNode("test/filterToParentOfFilter/filter1/four").getNodes().hasNext());
}
-
}
Modified: hippo-ecm/trunk/repository/modules/src/main/java/org/hippoecm/repository/jackrabbit/ViewVirtualProvider.java
===================================================================
--- hippo-ecm/trunk/repository/modules/src/main/java/org/hippoecm/repository/jackrabbit/ViewVirtualProvider.java 2009-12-02 08:43:26 UTC (rev 20973)
+++ hippo-ecm/trunk/repository/modules/src/main/java/org/hippoecm/repository/jackrabbit/ViewVirtualProvider.java 2009-12-02 12:35:41 UTC (rev 20974)
@@ -32,13 +32,12 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class ViewVirtualProvider extends MirrorVirtualProvider
-{
+public class ViewVirtualProvider extends MirrorVirtualProvider {
@SuppressWarnings("unused")
private final static String SVN_ID = "$Id$";
private final Logger log = LoggerFactory.getLogger(ViewVirtualProvider.class);
-
+
Name handleName;
Name requestName;
Name facetSelectName;
@@ -51,13 +50,13 @@
handleName = resolveName(HippoNodeType.NT_HANDLE);
requestName = resolveName(HippoNodeType.NT_REQUEST);
}
-
- protected NodeState populate(ViewVirtualProvider subProvider, NodeState state ,String[] docbase, String[] newFacets, String[] newValues, String[] newModes, boolean newCriteria) throws RepositoryException {
- if(docbase == null || docbase.length == 0) {
+
+ protected NodeState populate(ViewVirtualProvider subProvider, NodeState state, String[] docbase, String[] newFacets, String[] newValues, String[] newModes, boolean newCriteria) throws RepositoryException {
+ if (docbase == null || docbase.length == 0) {
return state;
}
-
- if(docbase[0].endsWith("babecafebabe")) {
+
+ if (docbase[0].endsWith("babecafebabe")) {
// one of the defined (and fixed, so string compare is fine) system areas
return state;
}
@@ -67,128 +66,134 @@
} catch (IllegalArgumentException e) {
log.warn("invalid docbase '" + docbase[0] + "' because not a valid UUID ");
}
- if(dereference != null) {
-
- boolean singledView = false;
- LinkedHashMap view = new LinkedHashMap();
- LinkedHashMap order = null;
-
- if(state.getNodeId() instanceof IFilterNodeId) {
+ if (dereference != null) {
+ boolean singledView = false;
+ LinkedHashMap view = new LinkedHashMap();
+ LinkedHashMap order = null;
+
+ if (state.getNodeId() instanceof IFilterNodeId) {
IFilterNodeId filterNodeId = (IFilterNodeId)state.getNodeId();
- if(filterNodeId.getView() != null) {
+ if (filterNodeId.getView() != null) {
view.putAll(filterNodeId.getView());
}
- if(filterNodeId.getOrder() != null) {
- order = new LinkedHashMap(filterNodeId.getOrder());
+ if (filterNodeId.getOrder() != null) {
+ order = new LinkedHashMap(filterNodeId.getOrder());
}
singledView = filterNodeId.isSingledView();
- } else if (state.getParentId()!=null && state.getParentId() instanceof IFilterNodeId) {
- // parent state is already virtual, inherit possible filter criteria
- IFilterNodeId filterNodeId = ((IFilterNodeId)state.getParentId());
- if(filterNodeId.getView() != null) {
+ } else if (state.getParentId() != null && state.getParentId() instanceof IFilterNodeId) {
+ // parent state is already virtual, inherit possible filter criteria
+ IFilterNodeId filterNodeId = ((IFilterNodeId)state.getParentId());
+ if (filterNodeId.getView() != null) {
view.putAll(filterNodeId.getView());
}
- if(filterNodeId.getOrder() != null) {
- if(order == null) {
- order = new LinkedHashMap();
+ if (filterNodeId.getOrder() != null) {
+ if (order == null) {
+ order = new LinkedHashMap();
}
order.putAll(filterNodeId.getOrder());
}
singledView = filterNodeId.isSingledView();
- }
-
- if(newCriteria) {
-
- if(newFacets == null || newValues == null || newModes == null || newFacets.length != newValues.length || newFacets.length != newModes.length) {
- log.error("Malformed definition of faceted selection: all must be of same length and must exist. Cannot populate facetselect. Return unpopulated mirror");
+ }
+
+ if (newCriteria) {
+ if (newFacets == null || newValues == null || newModes == null || newFacets.length != newValues.length || newFacets.length != newModes.length) {
+ log.warn("Malformed definition of faceted selection: all must be of same length and must exist. Cannot populate facetselect. Return unpopulated mirror");
return state;
}
-
- if(dereference.getNodeTypeName().equals(facetSelectName)) {
+
+ if (dereference.getNodeTypeName().equals(facetSelectName)) {
// This means this facetselect directly points to another facetselect. This is not allowed.
- log.error("Mirror of facetselect is not allowed to have as docbase the uuid of another mirror or facetselect.");
+ log.warn("Mirror of facetselect is not allowed to have as docbase the uuid of another mirror or facetselect.");
return state;
}
-
- for(int i=0; i();
+ } else if (newModes[i].equalsIgnoreCase("prefer") || newModes[i].equalsIgnoreCase("prefer-single")) {
+ if (order == null) {
+ order = new LinkedHashMap();
}
order.put(resolveName(newFacets[i]), newValues[i]);
- if(newModes[i].endsWith("prefer-single")) {
+ if (newModes[i].endsWith("prefer-single")) {
singledView = true;
}
- } else if(newModes[i].equalsIgnoreCase("clear")) {
+ } else if (newModes[i].equalsIgnoreCase("clear")) {
view.remove(resolveName(newFacets[i]));
}
}
}
-
+
boolean isHandle = dereference.getNodeTypeName().equals(handleName);
- if(order != null && isHandle) {
+ if (order != null && isHandle) {
// since the order is not null, we first have to sort all childs according the order. We only order below a handle
Vector children = new Vector();
- for(Iterator iter = dereference.getChildNodeEntries().iterator(); iter.hasNext(); ){
- ChildNodeEntry entry = (ChildNodeEntry) iter.next();
- ViewNodeId childNodeId = subProvider. new ViewNodeId(state.getNodeId(), entry.getId(), entry.getName(), view, order, singledView);
- children.add(childNodeId . new Child(entry.getName(), childNodeId));
+ for (Iterator iter = dereference.getChildNodeEntries().iterator(); iter.hasNext();) {
+ ChildNodeEntry entry = (ChildNodeEntry)iter.next();
+ ViewNodeId childNodeId = subProvider.new ViewNodeId(state.getNodeId(), entry.getId(), entry.getName(), view, order, singledView);
+ children.add(childNodeId.new Child(entry.getName(), childNodeId));
}
ViewNodeId.Child[] childrenArray = children.toArray(new ViewNodeId.Child[children.size()]);
Arrays.sort(childrenArray);
- for(int i = 0; i < childrenArray.length && (i == 0 || !singledView) ; i ++) {
+ for (int i = 0; i < childrenArray.length && (i == 0 || !singledView); i++) {
+ if (singledView && childrenArray[i].getKey().equals(requestName)) {
+ continue;
+ } else {
+ state.addChildNodeEntry(childrenArray[i].getKey(), childrenArray[i].getValue());
+ if (singledView) {
+ continue;
+ }
+ }
+ }
+ } else {
+ Vector children = new Vector();
+ for (Iterator iter = dereference.getChildNodeEntries().iterator(); iter.hasNext();) {
+ ChildNodeEntry entry = (ChildNodeEntry)iter.next();
+ // filtering is only applied on handles
+ if (!isHandle || subProvider.match(view, entry.getId())) {
+ if (isHandle && singledView && entry.getName().equals(requestName)) {
+ continue;
+ } else {
+ ViewNodeId childNodeId = subProvider.new ViewNodeId(state.getNodeId(), entry.getId(), entry.getName(), view, order, singledView);
+ children.add(childNodeId.new Child(entry.getName(), childNodeId));
+ }
+ }
+ }
+ ViewNodeId.Child[] childrenArray = children.toArray(new ViewNodeId.Child[children.size()]);
+ if (isHandle) {
+ Arrays.sort(childrenArray);
+ }
+ for (int i = 0; i < childrenArray.length && (i == 0 || !(singledView && isHandle)); i++) {
state.addChildNodeEntry(childrenArray[i].getKey(), childrenArray[i].getValue());
}
-
- } else {
- for(Iterator iter = dereference.getChildNodeEntries().iterator(); iter.hasNext(); ) {
- ChildNodeEntry entry = (ChildNodeEntry) iter.next();
- // filtering is only applied on handles
- if(!isHandle || subProvider.match(view, entry.getId())) {
- if(isHandle && singledView && getNodeState(entry.getId()).getNodeTypeName().equals(requestName)) {
- continue;
- } else {
- NodeId childNodeId = subProvider . new ViewNodeId(state.getNodeId(),entry.getId(),entry.getName(),view,order,singledView);
- state.addChildNodeEntry(entry.getName(), childNodeId);
-
- if(isHandle && singledView) {
- // stop after first match because single hippo document view
- break;
- }
- }
- }
- }
}
}
return state;
}
-
+
@Override
public NodeState populate(NodeState state) throws RepositoryException {
String[] docbase = getProperty(state.getNodeId(), docbaseName);
return populate(this, state, docbase, null, null, null, false);
}
- protected boolean match(Map view, NodeId candidate) {
- for(Map.Entry entry : view.entrySet()) {
+ protected boolean match(Map view, NodeId candidate) {
+ for (Map.Entry entry : view.entrySet()) {
Name facet = entry.getKey();
String value = entry.getValue();
String[] matching = getProperty(candidate, facet);
- if(matching != null && matching.length > 0) {
- if(value != null && !value.equals("") && !value.equals("*")) {
+ if (matching != null && matching.length > 0) {
+ if (value != null && !value.equals("") && !value.equals("*")) {
int i;
- for(i=0; i children = new Vector();
- for(Iterator iter = upstream.getChildNodeEntries().iterator(); iter.hasNext(); ) {
- ChildNodeEntry entry = (ChildNodeEntry) iter.next();
+ for (Iterator iter = upstream.getChildNodeEntries().iterator(); iter.hasNext();) {
+ ChildNodeEntry entry = (ChildNodeEntry)iter.next();
if (!isHandle || match(viewId.view, entry.getId())) {
/*
* below we check on the entry's nodestate wether the node type is hippo:request,
@@ -211,41 +216,41 @@
* extra performance hit
*/
if (viewId.singledView && isHandle) {
- if (getNodeState(entry.getId()).getNodeTypeName().equals(requestName)) {
+ if (entry.getName().equals(requestName)) {
continue;
} else {
ViewNodeId childNodeId = new ViewNodeId(nodeId, entry.getId(), entry.getName(), viewId.view, viewId.order, viewId.singledView);
- children.add(childNodeId . new Child(entry.getName(), childNodeId));
+ children.add(childNodeId.new Child(entry.getName(), childNodeId));
// stop after first match because single hippo document view, and not using sorted set
- if(viewId.order == null) {
+ if (viewId.order == null) {
break;
}
}
} else {
ViewNodeId childNodeId = new ViewNodeId(nodeId, entry.getId(), entry.getName(), viewId.view, viewId.order, viewId.singledView);
- children.add(childNodeId . new Child(entry.getName(), childNodeId));
+ children.add(childNodeId.new Child(entry.getName(), childNodeId));
}
}
}
ViewNodeId.Child[] childrenArray = children.toArray(new ViewNodeId.Child[children.size()]);
- if(viewId.order != null && isHandle) {
+ if (isHandle) {
Arrays.sort(childrenArray);
}
- for(int i=0; i view;
- LinkedHashMap order;
+ LinkedHashMap view;
+ LinkedHashMap order;
- ViewNodeId(NodeId parent, NodeId upstream, Name name, LinkedHashMap view, LinkedHashMap order, boolean singledView) {
+ ViewNodeId(NodeId parent, NodeId upstream, Name name, LinkedHashMap view, LinkedHashMap order, boolean singledView) {
super(ViewVirtualProvider.this, parent, name, upstream);
this.view = view;
this.order = order;
@@ -255,36 +260,46 @@
class Child implements Comparable {
Name name;
ViewNodeId nodeId;
+
Child(Name name, ViewNodeId viewNodeId) {
this.name = name;
this.nodeId = viewNodeId;
}
+
public Name getKey() {
return name;
}
+
public ViewNodeId getValue() {
return ViewNodeId.this;
}
+
public int compareTo(Child o) {
- if(o == null) {
+ if (o == null) {
throw new NullPointerException();
}
- if(o.equals(this)) {
- return 0;
+ if (o.equals(this)) {
+ return 0;
}
- if(order == null)
- // never return 0 (See Comparable api)
+ if (order == null) {
+ if (name.equals(requestName)) {
+ return 1;
+ } else if (o.name.equals(requestName)) {
+ return -1;
+ }
+ // never return 0 (See Comparable api)
return 1;
+ }
- for(Map.Entry entry : order.entrySet()) {
+ for (Map.Entry entry : order.entrySet()) {
Name facet = entry.getKey();
String value = entry.getValue();
int thisFacetValueIndex = -1;
String[] thisFacetValues = getProperty(upstream, facet);
- if(thisFacetValues != null) {
- for(int i=0; i getOrder() {
- if(this.order != null) {
- return new LinkedHashMap(this.order);
- }
- return null;
- }
+ if (this.order != null) {
+ return new LinkedHashMap(this.order);
+ }
+ return null;
+ }
- public LinkedHashMap getView() {
- if(this.view != null) {
- return new LinkedHashMap(this.view);
- }
- return null;
- }
+ public LinkedHashMap getView() {
+ if (this.view != null) {
+ return new LinkedHashMap(this.view);
+ }
+ return null;
+ }
- public boolean isSingledView() {
- return this.singledView;
- }
+ public boolean isSingledView() {
+ return this.singledView;
+ }
}
}
From helpdesk at onehippo.com Wed Dec 2 13:26:15 2009
From: helpdesk at onehippo.com (JIRA (Berry van Halderen))
Date: Wed Dec 2 13:36:50 2009
Subject: [HippoRepos-dev] [JIRA] Resolved: (HREPTWO-3472) live site does not
show published document
In-Reply-To: <15233265.209831259257395746.JavaMail.jira@jira.vm.castaserver.com>
Message-ID: <13066614.236411259756775802.JavaMail.jira@jira.vm.castaserver.com>
[ http://issues.onehippo.com/browse/HREPTWO-3472?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Berry van Halderen resolved HREPTWO-3472.
-----------------------------------------
Resolution: Fixed
> live site does not show published document
> ------------------------------------------
>
> Key: HREPTWO-3472
> URL: http://issues.onehippo.com/browse/HREPTWO-3472
> Project: Hippo Repository 2
> Issue Type: Bug
> Reporter: Frank van Lankvelt
> Assignee: Berry van Halderen
> Priority: High
> Fix For: r2.09.05, r2.10.00
>
> Time Spent: 3 hours, 30 minutes
> Remaining Estimate: 0 minutes
>
> A published document with a (rejected) request is not shown in the live virtual tree. The request is shown above the document in the console.
> The facetselect should show the first of the variants that matches the facet that is used. (a handle is not orderable, so the issue cannot be resolved by imposing an ordering on the nodes under a handle)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
From helpdesk at onehippo.com Wed Dec 2 13:26:15 2009
From: helpdesk at onehippo.com (JIRA (Bart van der Schans))
Date: Wed Dec 2 13:36:51 2009
Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-3436) Missing resource
shown in progress list
In-Reply-To: <29168415.186701259050815792.JavaMail.jira@jira.vm.castaserver.com>
Message-ID: <15666307.236441259756775871.JavaMail.jira@jira.vm.castaserver.com>
[ http://issues.onehippo.com/browse/HREPTWO-3436?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Bart van der Schans updated HREPTWO-3436:
-----------------------------------------
Original Estimate: 4 hours
Remaining Estimate: 4 hours
> Missing resource shown in progress list
> ---------------------------------------
>
> Key: HREPTWO-3436
> URL: http://issues.onehippo.com/browse/HREPTWO-3436
> Project: Hippo Repository 2
> Issue Type: Bug
> Reporter: Stephan Westen
> Assignee: Bart van der Schans
> Priority: Low
> Fix For: r2.11.00
>
> Attachments: screenshot-1.jpg, screenshot-2.jpg
>
> Original Estimate: 4 hours
> Remaining Estimate: 4 hours
>
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
From helpdesk at onehippo.com Wed Dec 2 13:28:15 2009
From: helpdesk at onehippo.com (JIRA (Bart van der Schans))
Date: Wed Dec 2 13:38:50 2009
Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-2773) Automatic setup
test server with latest build CMS + HST
In-Reply-To: <14669475.1245925431572.JavaMail.jira@jira.vm.castaserver.com>
Message-ID: <27766324.236471259756895909.JavaMail.jira@jira.vm.castaserver.com>
[ http://issues.onehippo.com/browse/HREPTWO-2773?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Bart van der Schans updated HREPTWO-2773:
-----------------------------------------
Original Estimate: 1 week
Remaining Estimate: 1 week
> Automatic setup test server with latest build CMS + HST
> --------------------------------------------------------
>
> Key: HREPTWO-2773
> URL: http://issues.onehippo.com/browse/HREPTWO-2773
> Project: Hippo Repository 2
> Issue Type: Task
> Reporter: Stephan Westen
> Assignee: Bart van der Schans
> Fix For: r2.11.00
>
> Original Estimate: 1 week
> Remaining Estimate: 1 week
>
> Ideally Hudson should deploy automatically on the test server the latest CMS with HST, documentation and a clean test fixture.
> This might be too much work, but what we at least want is the ability to easily deploy HST and CMS on the test server including the test fixture. The demo HST suite contains some content, perhaps we can use this. Or we use the quickstart test content (if different) and update the demo HST suite.
> Notice that we want to separate test and demo content. Test content will in the end be radically different, for example long folder names, long document names, empty templates, user without any privilege, folder with 100 images, etc, etc
> Including the CMS (maven) documentation is a nice-to-have
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
From helpdesk at onehippo.com Wed Dec 2 13:28:15 2009
From: helpdesk at onehippo.com (JIRA (Bart van der Schans))
Date: Wed Dec 2 13:38:52 2009
Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-3487) Improve caption btn
In-Reply-To: <465561.226811259662756088.JavaMail.jira@jira.vm.castaserver.com>
Message-ID: <3603653.236501259756895980.JavaMail.jira@jira.vm.castaserver.com>
[ http://issues.onehippo.com/browse/HREPTWO-3487?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Bart van der Schans updated HREPTWO-3487:
-----------------------------------------
Original Estimate: 1 hour
Remaining Estimate: 1 hour
> Improve caption btn
> -------------------
>
> Key: HREPTWO-3487
> URL: http://issues.onehippo.com/browse/HREPTWO-3487
> Project: Hippo Repository 2
> Issue Type: Improvement
> Reporter: Stephan Westen
> Assignee: Bart van der Schans
> Fix For: r2.11.00
>
> Attachments: screenshot-1.jpg
>
> Original Estimate: 1 hour
> Remaining Estimate: 1 hour
>
> The caption is misleading, it does not mention that you need to check the document(s) first to open them.
> (I thought there was a bug because nothing happened at all)
> The caption should be "Open selected documents in background"
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
From helpdesk at onehippo.com Wed Dec 2 13:28:16 2009
From: helpdesk at onehippo.com (JIRA (Bart van der Schans))
Date: Wed Dec 2 13:38:54 2009
Subject: [HippoRepos-dev] [JIRA] Updated: (HREPTWO-3350) Automatic running
CMS instance of the nightly build and 7.2
In-Reply-To: <16223021.92011257348315897.JavaMail.jira@jira.vm.castaserver.com>
Message-ID: <18647808.236531259756896030.JavaMail.jira@jira.vm.castaserver.com>
[ http://issues.onehippo.com/browse/HREPTWO-3350?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Bart van der Schans updated HREPTWO-3350:
-----------------------------------------
Environment: 3d
> Automatic running CMS instance of the nightly build and 7.2
> ------------------------------------------------------------
>
> Key: HREPTWO-3350
> URL: http://issues.onehippo.com/browse/HREPTWO-3350
> Project: Hippo Repository 2
> Issue Type: Task
> Environment: 3d
> Reporter: Stephan Westen
> Assignee: Bart van der Schans
> Priority: High
> Fix For: r2.11.00
>
>
> There should always be a running instance of the last nightly build and 7.2.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.onehippo.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
From svn-logs at hippocms.org Wed Dec 2 13:39:23 2009
From: svn-logs at hippocms.org (bvanhalderen)
Date: Wed Dec 2 13:39:23 2009
Subject: [HippoRepos-dev] [20975] hippo-ecm/trunk: HREPTWO-3366:
Message-ID: <20091202123923.2A7E7C96D@svnnew.onehippo.org>
Revision: 20975
Author: bvanhalderen
Date: 2009-12-02 13:39:22 +0100 (Wed, 02 Dec 2009)
Log Message:
-----------
HREPTWO-3366:
- remove 72 upgrade modules, they will not work sequentially with current
implementation anyway and were not active (not in the Hippo-Modules
manifest entry defined in pom.xml)
- merge hippostd:date with hippostd.cnd, the addendum was used for
migration purposes.
- remove outdated migration cnd entries
Modified Paths:
--------------
hippo-ecm/trunk/addon/builtin/repository/src/main/resources/hippostd.cnd
hippo-ecm/trunk/addon/faceteddate/repository/src/main/resources/hippoecm-extension.xml
Removed Paths:
-------------
hippo-ecm/trunk/addon/builtin/repository/src/main/resources/hippostd-migration.cnd
hippo-ecm/trunk/addon/faceteddate/repository/src/main/resources/hippostd-addendum.cnd
hippo-ecm/trunk/repository/upgrade/src/main/java/org/hippoecm/repository/upgrade/Release72UpgraderPhase1.java
hippo-ecm/trunk/repository/upgrade/src/main/java/org/hippoecm/repository/upgrade/Release72UpgraderPhase2.java
hippo-ecm/trunk/repository/upgrade/src/main/java/org/hippoecm/repository/upgrade/Release72UpgraderPhase3.java
Deleted: hippo-ecm/trunk/addon/builtin/repository/src/main/resources/hippostd-migration.cnd
===================================================================
--- hippo-ecm/trunk/addon/builtin/repository/src/main/resources/hippostd-migration.cnd 2009-12-02 12:35:41 UTC (rev 20974)
+++ hippo-ecm/trunk/addon/builtin/repository/src/main/resources/hippostd-migration.cnd 2009-12-02 12:39:22 UTC (rev 20975)
@@ -1,85 +0,0 @@
-/*
- * Copyright 2007 Hippo
- *
- * Licensed 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.
- */
-
-
-
-
-
-
-
-
-[hippostd:languageable] mixin
-- hippostd:language (string) < 'aa', 'ab', 'ae', 'af', 'ak', 'am', 'an', 'ar', 'as', 'av', 'ay', 'az', 'ba', 'be', 'bg', 'bh', 'bi', 'bm', 'bn', 'bo', 'br', 'bs', 'ca', 'ce', 'ch', 'co', 'cr', 'cs', 'cu', 'cv', 'cy', 'da', 'de', 'dv', 'dz', 'ee', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fa', 'ff', 'fi', 'fj', 'fo', 'fr', 'fy', 'ga', 'gd', 'gl', 'gn', 'gu', 'gv', 'ha', 'he', 'hi', 'ho', 'hr', 'ht', 'hu', 'hy', 'hz', 'ia', 'id', 'ie', 'ig', 'ii', 'ik', 'io', 'is', 'it', 'iu', 'ja', 'jv', 'ka', 'kg', 'ki', 'kj', 'kk', 'kl', 'km', 'kn', 'kr', 'ks', 'ku', 'kv', 'kw', 'ky', 'la', 'lb', 'lg', 'li', 'ln', 'lo', 'lt', 'lu', 'lv', 'mg', 'mh', 'mi', 'mk', 'ml', 'mn', 'mo', 'mr', 'ms', 'mt', 'my', 'na', 'nb', 'nd', 'ne', 'ng', 'nl', 'nn', 'no', 'nr', 'nv', 'ny', 'oc', 'oj', 'om', 'or', 'os', 'pa', 'pi', 'pl', 'ps', 'pt', 'qu', 'rm', 'rn', 'ro', 'ru', 'rw', 'sa', 'sc', 'sd', 'se', 'sg', 'sh', 'si', 'sk', 'sl', 'sm', 'sn', 'so', 'sq', 'sr', 'ss', 'st', 'su', 'sv', 'sw', 'ta', 'te', 'tg', 'th'
, 'ti', 'tk', 'tl', 'tn', 'to', 'tr', 'ts', 'tt', 'tw', 'ty', 'ug', 'uk', 'ur', 'uz', 've', 'vi', 'vo', 'wa', 'wo', 'xh', 'yi', 'yo', 'za', 'zh', 'zu' // ISO 639-1 codes
-
-[hippostd:publishableSummary] > hippo:derived mixin
-- hippostd:stateSummary (string) mandatory
-
-[hippostd:publishable] mixin
-- hippostd:state (string) = 'draft' mandatory copy < 'draft', 'unpublished', 'published', 'stale'
-- hippostd:holder (string) copy
-
-[hippostd:document] > hippo:document, hippostd:publishable, hippostd:publishableSummary, hippostd:languageable
-- hippostd:content (string) primary mandatory
-
-[hippostd:folder] > hippo:document orderable
-- hippostd:foldertype (string) multiple copy
-+ * = hippostd:folder multiple
-
-[hippostd:space] > hippostd:folder
-
-[hippostd:directory] > hippo:document
-- hippostd:foldertype (string) multiple copy
-+ * = hippostd:folder multiple
-
-[hippostd:templates] > nt:base
-+ *
-
-[hippostd:translations]
-+ * (nt:base)
-
-[hippostd:translated] mixin
-+ hippostd:translations (hippostd:translations)
-
-[hippostd:templatequery] > nt:query
-- hippostd:icon (string)
-- hippostd:renderer (string)
-- hippostd:modify (string) multiple
-+ hippostd:templates (hippostd:templates) = hippostd:templates
-
-[hippostd:html] > nt:base
-- hippostd:content (string) primary mandatory
-+ * (hippo:facetselect)
-
-[hippostd:taggable] mixin
-- hippostd:tags (string) multiple
-
-[hippostd:gallery] > hippostd:folder
-- hippostd:gallerytype (string) multiple copy
-// the children of this node are supposed to be images or other assets
-
-[hippostd:datefields] > nt:base
-- hippostd:year (long)
-- hippostd:month (long) < '[0,11]'
-- hippostd:weekofyear (long) < '[1,53]'
-- hippostd:dayofweek (long) < '[1,7]'
-- hippostd:dayofmonth (long) < '[1,31]'
-- hippostd:dayofyear (long) < '[1,366]'
-- hippostd:hourofday (long) < '[0,24]'
-- hippostd:minute (long) < '[0,59]'
-- hippostd:second (long)
-
-[hippostd:date] > hippostd:datefields, hippo:derived
-- hippostd:date (date) mandatory primary
Modified: hippo-ecm/trunk/addon/builtin/repository/src/main/resources/hippostd.cnd
===================================================================
--- hippo-ecm/trunk/addon/builtin/repository/src/main/resources/hippostd.cnd 2009-12-02 12:35:41 UTC (rev 20974)
+++ hippo-ecm/trunk/addon/builtin/repository/src/main/resources/hippostd.cnd 2009-12-02 12:39:22 UTC (rev 20975)
@@ -69,3 +69,17 @@
[hippostd:gallery] > hippostd:folder orderable
- hippostd:gallerytype (string) multiple copy
// the children of this node are supposed to be images or other assets
+
+[hippostd:datefields] > nt:base
+- hippostd:year (long)
+- hippostd:month (long) < '[0,11]'
+- hippostd:weekofyear (long) < '[1,53]'
+- hippostd:dayofweek (long) < '[1,7]'
+- hippostd:dayofmonth (long) < '[1,31]'
+- hippostd:dayofyear (long) < '[1,366]'
+- hippostd:hourofday (long) < '[0,24]'
+- hippostd:minute (long) < '[0,59]'
+- hippostd:second (long)
+
+[hippostd:date] > hippostd:datefields, hippo:derived
+- hippostd:date (date) mandatory primary
Modified: hippo-ecm/trunk/addon/faceteddate/repository/src/main/resources/hippoecm-extension.xml
===================================================================
--- hippo-ecm/trunk/addon/faceteddate/repository/src/main/resources/hippoecm-extension.xml 2009-12-02 12:35:41 UTC (rev 20974)
+++ hippo-ecm/trunk/addon/faceteddate/repository/src/main/resources/hippoecm-extension.xml 2009-12-02 12:39:22 UTC (rev 20975)
@@ -18,17 +18,6 @@
hippo:initializefolder
-
-
- hippo:initializeitem
-
-
- hippostd-addendum.cnd
-
-
- 10.1
-
- hippo:initializeitem
Deleted: hippo-ecm/trunk/addon/faceteddate/repository/src/main/resources/hippostd-addendum.cnd
===================================================================
--- hippo-ecm/trunk/addon/faceteddate/repository/src/main/resources/hippostd-addendum.cnd 2009-12-02 12:35:41 UTC (rev 20974)
+++ hippo-ecm/trunk/addon/faceteddate/repository/src/main/resources/hippostd-addendum.cnd 2009-12-02 12:39:22 UTC (rev 20975)
@@ -1,36 +0,0 @@
-/*
- * Copyright 2007 Hippo
- *
- * Licensed 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.
- */
-
-
-
-
-
-
-
-
-[hippostd:datefields] > nt:base
-- hippostd:year (long)
-- hippostd:month (long) < '[0,11]'
-- hippostd:weekofyear (long) < '[1,53]'
-- hippostd:dayofweek (long) < '[1,7]'
-- hippostd:dayofmonth (long) < '[1,31]'
-- hippostd:dayofyear (long) < '[1,366]'
-- hippostd:hourofday (long) < '[0,24]'
-- hippostd:minute (long) < '[0,59]'
-- hippostd:second (long)
-
-[hippostd:date] > hippostd:datefields, hippo:derived
-- hippostd:date (date) mandatory primary
Deleted: hippo-ecm/trunk/repository/upgrade/src/main/java/org/hippoecm/repository/upgrade/Release72UpgraderPhase1.java
===================================================================
--- hippo-ecm/trunk/repository/upgrade/src/main/java/org/hippoecm/repository/upgrade/Release72UpgraderPhase1.java 2009-12-02 12:35:41 UTC (rev 20974)
+++ hippo-ecm/trunk/repository/upgrade/src/main/java/org/hippoecm/repository/upgrade/Release72UpgraderPhase1.java 2009-12-02 12:39:22 UTC (rev 20975)
@@ -1,42 +0,0 @@
-/*
- * Copyright 2009 Hippo.
- *
- * Licensed 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.
- */
-package org.hippoecm.repository.upgrade;
-
-import javax.jcr.Node;
-import javax.jcr.RepositoryException;
-
-import org.hippoecm.repository.ext.UpdaterContext;
-import org.hippoecm.repository.ext.UpdaterItemVisitor;
-import org.hippoecm.repository.ext.UpdaterModule;
-
-public class Release72UpgraderPhase1 implements UpdaterModule {
- public void register(final UpdaterContext context) {
- context.registerName("upgrade-pre");
- context.registerStartTag("m13");
- context.registerEndTag("v20902-phase1");
- context.registerVisitor(new UpdaterItemVisitor.NodeTypeVisitor("hippo:derived") {
- @Override
- protected void leaving(Node node, int level) throws RepositoryException {
- if (node.hasProperty("hippo:related")) {
- node.getProperty("hippo:related").remove();
- }
- if (node.hasProperty("hippo:compute")) {
- node.getProperty("hippo:compute").remove();
- }
- }
- }.setAtomic());
- }
-}
Deleted: hippo-ecm/trunk/repository/upgrade/src/main/java/org/hippoecm/repository/upgrade/Release72UpgraderPhase2.java
===================================================================
--- hippo-ecm/trunk/repository/upgrade/src/main/java/org/hippoecm/repository/upgrade/Release72UpgraderPhase2.java 2009-12-02 12:35:41 UTC (rev 20974)
+++ hippo-ecm/trunk/repository/upgrade/src/main/java/org/hippoecm/repository/upgrade/Release72UpgraderPhase2.java 2009-12-02 12:39:22 UTC (rev 20975)
@@ -1,911 +0,0 @@
-/*
- * Copyright 2009 Hippo.
- *
- * Licensed 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.
- */
-package org.hippoecm.repository.upgrade;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.StringReader;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.Set;
-
-import javax.jcr.NamespaceException;
-import javax.jcr.Node;
-import javax.jcr.NodeIterator;
-import javax.jcr.Property;
-import javax.jcr.RepositoryException;
-import javax.jcr.Value;
-import javax.jcr.Workspace;
-import javax.jcr.nodetype.NodeDefinition;
-import javax.jcr.nodetype.NodeType;
-import javax.jcr.nodetype.NodeTypeIterator;
-import javax.jcr.nodetype.NodeTypeManager;
-import javax.jcr.util.TraversingItemVisitor;
-
-import org.hippoecm.repository.api.HippoSession;
-import org.hippoecm.repository.ext.UpdaterContext;
-import org.hippoecm.repository.ext.UpdaterItemVisitor;
-import org.hippoecm.repository.ext.UpdaterModule;
-import org.hippoecm.repository.util.JcrCompactNodeTypeDefWriter;
-import org.hippoecm.repository.util.VersionNumber;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class Release72UpgraderPhase2 implements UpdaterModule {
-
- static final Logger log = LoggerFactory.getLogger(Release72UpgraderPhase2.class);
-
- private static final String[][] rules = {
- {"type", "hippo:remodel", "hipposysedit_1_0:remodel"},
- {"field", "hippo:uri", "hipposysedit_1_0:uri"},
- {"type", "hippo:field", "hipposysedit_1_0:field"},
- {"field", "hippo:name", "hipposysedit_1_0:name"},
- {"field", "hippo:path", "hipposysedit_1_0:path"},
- {"field", "hippo:type", "hipposysedit_1_0:type"},
- {"field", "hippo:multiple", "hipposysedit_1_0:multiple"},
- {"field", "hippo:mandatory", "hipposysedit_1_0:mandatory"},
- {"field", "hippo:ordered", "hipposysedit_1_0:ordered"},
- {"field", "hippo:primary", "hipposysedit_1_0:primary"},
- {"type", "hippo:nodetype", "hipposysedit_1_0:nodetype"},
- {"field", "hippo:type", "hipposysedit_1_0:type"},
- {"field", "hippo:supertype", "hipposysedit_1_0:supertype"},
- {"field", "hippo:node", "hipposysedit_1_0:node"},
- {"field", "hippo:mixin", "hipposysedit_1_0:mixin"},
- {"child", "hippo:field", "hipposysedit_1_0:field"},
- {"type", "hippo:templatetype", "hipposysedit_1_0:templatetype"},
- {"type", "hippo:initializeitem", "hippo_2_0:initializeitem"},
- {"type", "hippo:softdocument", "hipposys_1_0:softdocument"},
- {"field", "hippo:uuid", "hipposys_1_0:uuid"},
- {"type", "hippo:request", "hipposys_1_0:request"},
- {"type", "hippo:implementation", "hipposys_1_0:implementation"},
- {"field", "hippo:classname", "hipposys_1_0:classname"},
- {"field", "hippo:serialver", "hipposys_1_0:serialver"},
- {"type", "hippo:type", "hipposys_1_0:type"},
- {"field", "hippo:nodetype", "hipposys_1_0:nodetype"},
- {"field", "hippo:display", "hipposys_1_0:display"},
- {"field", "hippo:classname", "hipposys_1_0:classname"},
- {"type", "hippo:types", "hipposys_1_0:types"},
- {"type", "hippo:workflow", "hipposys_1_0:workflow"},
- {"field", "hippo:privileges", "hipposys_1_0:privileges"},
- {"field", "hippo:nodetype", "hipposys_1_0:nodetype"},
- {"field", "hippo:display", "hipposys_1_0:display"},
- {"field", "hippo:classname", "hipposys_1_0:classname"},
- {"field", "hippo:workflow", "hipposys_1_0:classname"},
- {"child", "hippo:types", "hipposys_1_0:types"},
- {"child", "hippo:config", "hipposys_1_0:config"},
- {"type", "hippo:workflowcategory", "hipposys_1_0:workflowcategory"},
- {"type", "hippo:workflowfolder", "hipposys_1_0:workflowfolder"},
- {"type", "hippo:ocmquery", "hipposys_1_0:ocmquery"},
- {"field", "hippo:classname", "hipposys_1_0:classname"},
- {"child", "hippo:types", "hipposys_1_0:types"},
- {"type", "hippo:ocmqueryfolder", "hipposys_1_0:ocmqueryfolder"},
- {"type", "hippo:queryfolder", "hipposys_1_0:queryfolder"},
- {"type", "hippo:basequeryfolder", "hipposys_1_0:basequeryfolder"},
- {"type", "hippo:propertyreference", "hipposys_1_0:propertyreference"},
- {"type", "hippo:relativepropertyreference", "hipposys_1_0:relativepropertyreference"},
- {"field", "hippo:relPath", "hipposys_1_0:relPath"},
- {"type", "hippo:resolvepropertyreference", "hipposys_1_0:resolvepropertyreference"},
- {"field", "hippo:relPath", "hipposys_1_0:relPath"},
- {"type", "hippo:builtinpropertyreference", "hipposys_1_0:builtinpropertyreference"},
- {"field", "hippo:method", "hipposys_1_0:method"},
- {"type", "hippo:propertyreferences", "hipposys_1_0:propertyreferences"},
- {"type", "hippo:deriveddefinition", "hipposys_1_0:deriveddefinition"},
- {"field", "hippo:nodetype", "hipposys_1_0:nodetype"},
- {"field", "hippo:classname", "hipposys_1_0:classname"},
- {"field", "hippo:serialver", "hipposys_1_0:serialver"},
- {"child", "hippo:accessed", "hipposys_1_0:accessed"},
- {"child", "hippo:derived", "hipposys_1_0:derived"},
- {"type", "hippo:derivativesfolder", "hipposys_1_0:derivativesfolder"},
- {"type", "hippo:initializefolder", "hippo_2_0:initializefolder"},
- {"type", "hippo:temporaryfolder", "hipposys_1_0:temporaryfolder"},
- {"type", "hippo:applicationfolder", "hipposys_1_0:applicationfolder"},
- {"type", "hippo:configuration", "hipposys_1_0:configuration"},
- {"type", "hippo:accessmanager", "hipposys_1_0:accessmanager"},
- {"field", "hippo:permissioncachesize", "hipposys_1_0:permissioncachesize"},
- {"type", "hippo:user", "hipposys_1_0:user"},
- {"field", "hippo:securityprovider", "hipposys_1_0:securityprovider"},
- {"field", "hippo:active", "hipposys_1_0:active"},
- {"field", "hippo:password", "hipposys_1_0:password"},
- {"field", "hippo:passkey", "hipposys_1_0:passkey"},
- {"field", "hippo:lastlogin", "hipposys_1_0:lastlogin"},
- {"type", "hippo:externaluser", "hipposys_1_0:externaluser"},
- {"field", "hippo:lastsync", "hipposys_1_0:lastsync"},
- {"type", "hippo:group", "hipposys_1_0:group"},
- {"field", "hippo:securityprovider", "hipposys_1_0:securityprovider"},
- {"field", "hippo:members", "hipposys_1_0:members"},
- {"field", "hippo:groups", "hipposys_1_0:groups"},
- {"field", "hippo:description", "hipposys_1_0:description"},
- {"type", "hippo:externalgroup", "hipposys_1_0:externalgroup"},
- {"field", "hippo:syncdate", "hipposys_1_0:syncdate"},
- {"type", "hippo:role", "hipposys_1_0:role"},
- {"field", "hippo:privileges", "hipposys_1_0:privileges"},
- {"field", "hippo:roles", "hipposys_1_0:roles"},
- {"field", "hippo:jcrread", "hipposys_1_0:jcrread"},
- {"field", "hippo:jcrwrite", "hipposys_1_0:jcrwrite"},
- {"field", "hippo:jcrremove", "hipposys_1_0:jcrremove"},
- {"type", "hippo:externalrole", "hipposys_1_0:externalrole"},
- {"field", "hippo:securityprovider", "hipposys_1_0:securityprovider"},
- {"type", "hippo:authrole", "hipposys_1_0:authrole"},
- {"field", "hippo:users", "hipposys_1_0:users"},
- {"field", "hippo:groups", "hipposys_1_0:groups"},
- {"field", "hippo:role", "hipposys_1_0:role"},
- {"field", "hippo:description", "hipposys_1_0:description"},
- {"type", "hippo:facetrule", "hipposys_1_0:facetrule"},
- {"field", "hippo:facet", "hipposys_1_0:facet"},
- {"field", "hippo:value", "hipposys_1_0:value"},
- {"field", "hippo:type", "hipposys_1_0:type"},
- {"field", "hippo:equals", "hipposys_1_0:equals"},
- {"field", "hippo:filter", "hipposys_1_0:filter"},
- {"field", "hippo:description", "hipposys_1_0:description"},
- {"type", "hippo:domainrule", "hipposys_1_0:domainrule"},
- {"field", "hippo:description", "hipposys_1_0:description"},
- {"type", "hippo:domain", "hipposys_1_0:domain"},
- {"field", "hippo:description", "hipposys_1_0:description"},
- {"type", "hippo:userprovider", "hipposys_1_0:userprovider"},
- {"field", "hippo:dirlevels", "hipposys_1_0:dirlevels"},
- {"type", "hippo:groupprovider", "hipposys_1_0:groupprovider"},
- {"field", "hippo:dirlevels", "hipposys_1_0:dirlevels"},
- {"type", "hippo:roleprovider", "hipposys_1_0:roleprovider"},
- {"type", "hippo:securityprovider", "hipposys_1_0:securityprovider"},
- {"field", "hippo:classname", "hipposys_1_0:classname"},
- {"child", "hippo:userprovider", "hipposys_1_0:userprovider"},
- {"child", "hippo:groupprovider", "hipposys_1_0:groupprovider"},
- {"child", "hippo:roleprovider", "hipposys_1_0:roleprovider"},
- {"type", "hippo:userfolder", "hipposys_1_0:userfolder"},
- {"type", "hippo:groupfolder", "hipposys_1_0:groupfolder"},
- {"type", "hippo:rolefolder", "hipposys_1_0:rolefolder"},
- {"type", "hippo:domainfolder", "hipposys_1_0:domainfolder"},
- {"type", "hippo:securityfolder", "hipposys_1_0:securityfolder"},
- {"field", "hippo:userspath", "hipposys_1_0:userspath"},
- {"field", "hippo:groupspath", "hipposys_1_0:groupspath"},
- {"field", "hippo:rolespath", "hipposys_1_0:rolespath"},
- {"field", "hippo:domainspath", "hipposys_1_0:domainspath"},
- {"child", "hippo:accessmanager", "hipposys_1_0:accessmanager"},
- {"type", "hippo:namespace", "hipposysedit_1_0:namespace"},
- {"type", "hippo:namespacefolder", "hipposysedit_1_0:namespacefolder"},
- {"type", "hippo:resource", "hippo_2_0:resource"},
- {"type", "hippo:query", "hippo_2_0:query"},
- {"type", "hippo:derived", "hippo_2_0:derived"},
- {"type", "hippo:document", "hippo_2_0:document"},
- {"type", "hippo:handle", "hippo_2_0:handle"},
- {"type", "hippo:hardhandle", "hippo_2_0:hardhandle"},
- {"type", "hippo:harddocument", "hippo_2_0:harddocument"},
- {"type", "hippo:facetresult", "hippo_2_0:facetresult"},
- {"type", "hippo:facetbasesearch", "hippo_2_0:facetbasesearch"},
- {"type", "hippo:facetsearch", "hippo_2_0:facetsearch"},
- {"type", "hippo:facetselect", "hippo_2_0:facetselect"},
- {"type", "hippo:mirror", "hippo_2_0:mirror"},
- {"type", "hippo:facetlink", null},
- //{"type","hippo:translation","hipponew:translation"},
- //{"type","hippo:translated","hipponew:translated"},
-
- {"type", "frontend:workflow", "frontend_2_0:workflow"},
- {"field", "hippo:nodetype", "hipposys_1_0:nodetype"},
- {"field", "hippo:display", "hipposys_1_0:display"},
- {"field", "hippo:classname", "hipposys_1_0:classname"},
- {"field", "hippo:workflow", "hipposys_1_0:classname"},
- {"field", "hippo:privileges", "hipposys_1_0:privileges"},
- {"child", "hippo:types", "hipposys_1_0:types"},
- {"child", "hippo:config", "hipposys_1_0:config"},
- //{"type", "frontend:user", "frontend:user2"},
- //{"field", "hippo:securityprovider", "hipposys_1_0:securityprovider"},
- //{"field", "hippo:active", "hipposys_1_0:active"},
- //{"field", "hippo:password", "hipposys_1_0:password"},
- //{"field", "hippo:passkey", "hipposys_1_0:passkey"},
- //{"field", "hippo:lastlogin", "hipposys_1_0:lastlogin"},
-
- {"type", "hippo:implementation", "hipposys_1_0:implementation"},
- {"field", "hippo:classname", "hipposys_1_0:classname"},
- };
-
- static String[][] renames = {
- { "org.hippoecm.repository.standardworkflow.EditmodelWorkflowImpl",
- "org.hippoecm.editor.repository.impl.EditmodelWorkflowImpl" },
- { "org.hippoecm.frontend.plugins.standardworkflow.EditmodelWorkflowPlugin",
- "org.hippoecm.frontend.editor.workflow.EditmodelWorkflowPlugin" },
- };
-
- private static String getNewClass(String oldName) {
- for (String[] rename : renames) {
- if (rename[0].equals(oldName)) {
- return rename[1];
- }
- }
- return oldName;
- }
-
- public void register(final UpdaterContext context) {
- context.registerName("upgrade");
- context.registerStartTag("v20902-phase1");
- context.registerEndTag("v20902-phase2");
- context.registerVisitor(new UpdaterItemVisitor.NodeTypeVisitor("rep:root") {
- @Override
- protected void leaving(final Node node, int level) throws RepositoryException {
- /*
- * The removal of the entire /hippo:log tree seems to be appropriate. This is relatively volatile data as
- * this is a sliding log file with the oldest entries being removed automatically. Combine this with the
- * fact that old entries might not contain the same information and the effort of converting data which is
- * going to be removed quickly is unnecessary.
- */
- if (node.hasNode("hippo:log")) {
- for(NodeIterator iter=node.getNode("hippo:log").getNodes(); iter.hasNext(); ) {
- iter.nextNode().remove();
- }
- }
- }
- }.setAtomic());
- context.registerVisitor(new UpdaterItemVisitor.NodeTypeVisitor("hippo:templatetype") {
- @Override
- protected void leaving(final Node node, int level) throws RepositoryException {
- // Should a new nodetype descriptor be created?
- boolean convert = false;
- String prefix = node.getParent().getName();
- String uri = null;
- String newUri = null;
- if (node.getDepth() > 0 && node.getParent().isNodeType("hippo:namespace")
- && !"system".equals(prefix)) {
- try {
- uri = node.getSession().getNamespaceURI(prefix);
- VersionNumber version = new VersionNumber(uri.substring(uri.lastIndexOf("/") + 1));
- newUri = uri.substring(0, uri.lastIndexOf('/') + 1) + version.next().toString();
- convert = true;
- try {
- node.getSession().getNamespacePrefix(newUri);
- } catch (NamespaceException ex) {
- convert = false;
- }
- } catch (NamespaceException ex) {
- log.warn("Unknown namespace prefix " + prefix);
- }
- }
-
- context.setPrimaryNodeType(node, "hipposysedit_1_0:templatetype");
- Node child = node.getNode("hippo:nodetype");
- Node current = null;
- for (NodeIterator nodetypeVersionIter = child.getNodes(child.getName()); nodetypeVersionIter.hasNext();) {
- Node version = nodetypeVersionIter.nextNode();
- context.setName(version, "hipposysedit_1_0:nodetype");
- if (convert && version.isNodeType("hippo:remodel")) {
- if (uri != null && uri.equals(version.getProperty("hippo:uri").getString())) {
- current = version;
- }
- }
- version.accept(new TraversingItemVisitor.Default(true) {
- @Override
- protected void entering(final Node node, int level) throws RepositoryException {
- convert(node, context);
- }
- });
- }
- context.setName(child, "hipposysedit_1_0:nodetype");
- context.setPrimaryNodeType(child, "hippo_2_0:handle");
- if (current != null) {
- Node clone = ((HippoSession) child.getSession()).copy(current, current.getPath());
- clone.setProperty("hipposysedit_1_0:uri", newUri);
- }
-
- if (node.hasNode("hippo:prototype")) {
- child = node.getNode("hippo:prototype");
- for (NodeIterator prototypeIter = child.getNodes("hippo:prototype"); prototypeIter.hasNext();) {
- Node prototype = prototypeIter.nextNode();
- context.setName(prototype, "hipposysedit_1_0:prototype");
- prototype.accept(new TraversingItemVisitor.Default(true) {
- @Override
- protected void entering(final Node node, int level) throws RepositoryException {
- convert(node, context);
- }
- });
- }
- context.setName(child, "hipposysedit_1_0:prototypes");
- context.setPrimaryNodeType(child, "hipposysedit_1_0:prototypeset");
- }
-
- if (node.hasNode("hippo:template")) {
- node.addMixin("editor_1_0:editable");
- child = node.getNode("hippo:template");
- for (NodeIterator templateIter = child.getNodes(child.getName()); templateIter.hasNext();) {
- Node template = templateIter.nextNode();
- context.setName(template, "hipposysedit_1_0:template");
- template.accept(new TraversingItemVisitor.Default(true) {
- @Override
- protected void entering(final Node node, int level) throws RepositoryException {
- convert(node, context);
- }
- });
- }
- context.setName(child, "editor_1_0:templates");
- context.setPrimaryNodeType(child, "editor_1_0:templateset");
- }
- }
- }.setAtomic());
- context.registerVisitor(new UpdaterItemVisitor.NodeTypeVisitor("hippo:namespacefolder") {
- @Override
- protected void leaving(final Node node, int level) throws RepositoryException {
- context.setPrimaryNodeType(node, "hipposysedit_1_0:namespacefolder");
- for (NodeIterator iter = node.getNodes(); iter.hasNext();) {
- Node child = iter.nextNode();
- if (child.isNodeType("hippo:namespace")) {
- context.setPrimaryNodeType(child, "hipposysedit_1_0:namespace");
- }
- }
- }
- }.setAtomic());
-
- /**
- * reviewed-actions workflow update
- */
- context.registerVisitor(new UpdaterItemVisitor.NodeTypeVisitor("hippo:workflowcategory") {
- @Override
- protected void leaving(Node node, int level) throws RepositoryException {
- if (node.getName().equals("versioning")) {
- if (node.hasNode("version")) {
- Node version = node.getNode("version");
- if (version.getProperty("hippo:classname").getString().equals("org.hippoecm.repository.api.Document")) {
- version.setProperty("hippo:classname",
- "org.hippoecm.repository.standardworkflow.VersionWorkflowImpl");
- }
- version.setProperty("hippo:privileges", new String[] { "hippo:author" });
- context.setPrimaryNodeType(version, "frontend:workflow");
- Node renderer = version.addNode("frontend:renderer", "frontend:plugin");
- renderer.setProperty("plugin.class",
- "org.hippoecm.frontend.plugins.standardworkflow.NullWorkflowPlugin");
- }
- if (node.hasNode("revert")) {
- Node restore = node.getNode("revert");
- context.setName(restore, "restore");
- if (restore.getProperty("hippo:classname").getString().equals("org.hippoecm.repository.api.Document")) {
- restore.setProperty("hippo:classname",
- "org.hippoecm.repository.standardworkflow.VersionWorkflowImpl");
- }
- context.setPrimaryNodeType(restore, "frontend:workflow");
- restore.setProperty("hippo:privileges", new String[] { "hippo:editor" });
- Node renderer = restore.addNode("frontend:renderer", "frontend:plugin");
- renderer.setProperty("plugin.class",
- "org.hippoecm.frontend.plugins.reviewedactions.VersionWorkflowPlugin");
- renderer.setProperty("editor.id", "${editor.id}");
- }
- }
- }
- }.setAtomic());
- /**
- * add browser.id, editor.id to all frontend workflow plugins.
- * This doesn't harm plugins that don't use these services, but it might be better to
- * be a bit more fine-grained about this.
- */
- context.registerVisitor(new UpdaterItemVisitor.NodeTypeVisitor("frontend:workflow") {
- @Override
- protected void leaving(final Node node, int level) throws RepositoryException {
- // convert property to child node
- if (node.hasProperty("frontend:renderer")) {
- if (!node.hasNode("frontend:renderer")) {
- Node child = node.addNode("frontend_2_0:renderer", "frontend_2_0:plugin");
- child.setProperty("plugin.class", node.getProperty("frontend:renderer").getString());
- child.setProperty("model.id", "${model.id}");
- child.setProperty("browser.id", "${browser.id}");
- child.setProperty("editor.id", "${editor.id}");
- node.setProperty("frontend_2_0:renderer", (Value) null);
- } else {
- log.error("Unable to convert deprecated property frontend:renderer to child node");
- }
- }
- Node renderer = node.getNode("frontend:renderer");
- if (!renderer.hasProperty("validator.id")) {
- renderer.setProperty("validator.id", "${validator.id}");
- }
- if (!renderer.hasProperty("feedback.id")) {
- renderer.setProperty("feedback.id", "${feedback.id}");
- }
- String oldClassName = renderer.getProperty("plugin.class").getString();
- String className = getNewClass(oldClassName);
- if (!className.equals(oldClassName)) {
- renderer.setProperty("plugin.class", className);
- }
- }
- }.setAtomic());
- /**
- * upgrade domain rules
- */
- context.registerVisitor(new UpdaterItemVisitor.NodeTypeVisitor("hippo:domain") {
- @Override
- protected void leaving(final Node node, int level) throws RepositoryException {
- String name = node.getName();
- if ("defaultwrite".equals(name)) {
- if (node.hasNode("hippo-handle")) {
- Node hippoHandle = node.getNode("hippo-handle");
- hippoHandle.getNode("type-hippo-handle").setProperty("hippo:facet", "nodetype");
- }
- } else if ("versioning".equals(name)) {
- Node facetRule;
-
- if (!node.hasNode("nt-system")) {
- Node ntSystem = node.addNode("nt-system", "hippo:domainrule");
- facetRule = ntSystem.addNode("type-rep-system", "hippo:facetrule");
- facetRule.setProperty("hippo:equals", true);
- facetRule.setProperty("hippo:facet", "jcr:primaryType");
- facetRule.setProperty("hippo:filter", false);
- facetRule.setProperty("hippo:type", "Name");
- facetRule.setProperty("hippo:value", "rep:system");
- }
-
- if (!node.hasNode("nt-versionStorage")) {
- Node ntVersionStorage = node.addNode("nt-versionStorage", "hippo:domainrule");
- facetRule = ntVersionStorage.addNode("type-rep-versionStorage", "hippo:facetrule");
- facetRule.setProperty("hippo:equals", true);
- facetRule.setProperty("hippo:facet", "jcr:primaryType");
- facetRule.setProperty("hippo:filter", false);
- facetRule.setProperty("hippo:type", "Name");
- facetRule.setProperty("hippo:value", "rep:versionStorage");
- }
-
- Node authRole = node.addNode("hippo:authrole", "hippo:authrole");
- authRole.setProperty("hippo:role", "editor" );
- authRole.setProperty("hippo:groups", new String[] { "editor" });
- } else if ("templates".equals(name)) {
- Node facetRule;
- if (!node.hasNode("type-hippo-prototypes")) {
- Node ntPrototypes = node.addNode("type-hippo-prototypes", "hippo:domainrule");
- facetRule = ntPrototypes.addNode("nodetype-hippo-prototypeset", "hippo:facetrule");
- facetRule.setProperty("hippo:equals", true);
- facetRule.setProperty("hippo:facet", "jcr:primaryType");
- facetRule.setProperty("hippo:filter", false);
- facetRule.setProperty("hippo:type", "Name");
- facetRule.setProperty("hippo:value", "hipposysedit:prototypeset");
- }
-
- Node ntPrototype = node.getNode("hippo-prototype");
- context.setName(ntPrototype, "type-hippo-prototype");
- facetRule = ntPrototype.getNode("nodetype-hippo-prototype");
- facetRule.setProperty("hippo:value", "hipposysedit:prototype");
- }
- }
- }.setAtomic());
- /**
- * add hipposys:system to workflowuser
- */
- context.registerVisitor(new UpdaterItemVisitor.NodeTypeVisitor("hippo:userfolder") {
- @Override
- protected void leaving(final Node node, int level) throws RepositoryException {
- if (node.hasNode("workflowuser")) {
- node.getNode("workflowuser").setProperty("hipposys_1_0:system", true);
- }
- }
- }.setAtomic());
- /**
- * frontend:user => hipposys:user
- */
- context.registerVisitor(new UpdaterItemVisitor.NodeTypeVisitor("frontend:user") {
- @Override
- protected void leaving(final Node node, int level) throws RepositoryException {
- context.setPrimaryNodeType(node, "hippo:user");
- node.setProperty("frontend:firstname", (String) null);
- node.setProperty("frontend:lastname", (String) null);
- node.setProperty("frontend:email", (String) null);
- }
- }.setAtomic());
- context.registerVisitor(new UpdaterItemVisitor.NodeTypeVisitor("hippo:configuration") {
- @Override
- protected void leaving(final Node node, int level) throws RepositoryException {
- for (String[] delete : new String[][] {
- {"hippo:temporary"}, // this removal is appropriate, any changes to this folder should be considered transient
- {"hippo:frontend"} // tracking changes in cms configuration deemed too expensive
- }) {
- for (NodeIterator it = node.getNode(delete[0]).getNodes(); it.hasNext();) {
- Node child = it.nextNode();
- boolean keep = false;
- for (int i = 1; i < delete.length; i++) {
- if (child.getName().equals(delete[i]))
- keep = true;
- }
- if (!keep)
- child.remove();
- }
- }
- // see comment on removal of hippostd-queries in hippo:initialize
- node.getNode("hippo:queries").getNode("hippo:templates").remove();
- for (String delete : new String[] {
- /* Preserving changes from this item is a bridge too far, but it does include some
- * important customization by users so must be clearly documented. */
- "hippostd-queries",
-
- "namespaces", // FIXME: comment on the appropriateness of removal or decide on not remove but convert
- "templateeditor-hipposysedit", // FIXME: comment on the appropriateness of removal or decide on not remove but convert
- "templateeditor-namespace.xml", // FIXME: comment on the appropriateness of removal or decide on not remove but convert
- "templateeditor-type-query.xml", // FIXME: comment on the appropriateness of removal or decide on not remove but convert
- "hipposched", // these items are never customized
- "hippoldap", // it is rare to customize these items, a re-import is safe
-
- /**
- * these namespace declarations, type definitions are explicitly handled by the next visitor
- */
- /*
- "hippostd-date",
- "hippostd",
- "hippohtmlcleaner",
- "hippolog",
- "frontend",
- "editor",
- "reporting",
- */
-
- /**
- * don't reload content
- */
- /*
- "content",
- */
-
- /**
- * gallery: re-import templates, gallery workflow
- */
- "hippogallery",
- "hippogallery-files",
- "hippogallery-images",
- "hippogallery-image",
-
- /**
- * Templates from the "system", hippo and hippostd namespaces have to be re-initialized
- * as they are removed.
- */
- "hippostd-html-template",
- "system-html-template",
- "hippogallery-editor",
- "hippostd-types",
- "templateeditor-faceteddate",
- "templateeditor-system",
- "templateeditor-hippo",
- "frontend-types",
-
- /**
- * users: type conversion is sufficient
- */
- /*
- "user-editor",
- "user-author",
- */
-
- /**
- * groups: type conversion is sufficient
- */
- /*
- "group-editor",
- "group-author",
- "group-everybody",
- */
-
- /**
- * roles: type conversion is sufficient
- */
- /*
- "role-jcrread",
- "role-jcrwrite",
- "role-editor",
- "role-author",
- */
-
- /**
- * authorization rules: conversion suffices
- */
- /*
- "domain-defaultread",
- "domain-defaultwrite",
- "domain-versioning",
- "domain-workflow",
- "domain-hippodocuments",
- "domain-hippofolders",
- "domain-frontendconfig",
- "domain-hippogallery",
- "domain-htmlcleaner",
- "domain-templates",
- "domain-hippolog",
- "domain-hipporequests",
- "domain-templates-templateset",
- */
-
- /**
- * The reviewed-actions addon should ideally take care of upgrading its content.
- * At the moment, the imports below combine workflows from different projects.
- * The upgrade is carried out by the frontend:workflow and workflowcategory iterators.
- */
- /*repository/modules/src/main/java/org/hippoecm/repository/upgrade/Release72Updater.java
- "reviewedactions1",
- "core-workflows",
- "reviewedactions2",
- "versioning",
- */
-
- /**
- * The workflows that ship with the frontend/repository engines + editor.
- */
- "editor-workflows",
- "hippostd-workflows",
- "embedded-workflows",
- "hippostd-workflows2",
- "shortcuts-workflows",
-
- /**
- * These initialisation nodes correspond to the /hippo:configuration/hippo:frontend tree.
- * The configuration changes are too big to merge by writing JCR calls.
- */
- "frontend-console",
- "html-cleaner-service",
- "cms",
- "cms-login",
- "cms-static",
- "cms-editor",
- "cms-preview",
- "cms-headshortcuts",
- "cms-dashshortcuts",
- "cms-dashshortcuts-changepassword",
- "cms-dashboard",
- "cms-reports",
- "cms-browser",
- "cms-folder-views",
- "cms-tree-views",
- "cms-pickers",
- "cms-services",
- "cms-dashshortcuts-gotolink",
- "reviewedactions3",
- "reviewedactions4",
- "layout-provider",
- }) {
- if (node.getNode("hippo:initialize").hasNode(delete)) {
- node.getNode("hippo:initialize").getNode(delete).remove();
- }
- }
- node.accept(new TraversingItemVisitor.Default(true) {
- @Override
- protected void entering(final Node node, int level) throws RepositoryException {
- convert(node, context);
- }
- });
- }
- }.setAtomic());
- context.registerVisitor(new UpdaterItemVisitor.NodeTypeVisitor("rep:root") {
- @Override
- public void leaving(final Node node, int level) throws RepositoryException {
- if (node.hasNode("hippo:namespaces")) {
- Node nsFolderNode = node.getNode("hippo:namespaces");
- String[][] remove = {
- {"hippo", "templatetype", "namespace", "field", "nodetype", "remodel", "query", "resource", "facetlink", "facetselect", "facetsearch", "facetsubsearch", "document" },
- {"system", "String", "Text", "Boolean", "Date", "Long", "Double", "Binary", "Docbase", "Link", "CssSize", "Password", "Html"},
- {"hippostd", "languagable", "publishable", "publishableSummary", "taggable", "folder", "directory", "html"},
- {"hippogallery", "asset", "image", "exampleImageSet", "exampleAssetSet"},
- };
- for (String[] namespace : remove) {
- if (nsFolderNode.hasNode(namespace[0])) {
- Node nsNode = nsFolderNode.getNode(namespace[0]);
- for (int i = 1; i < namespace.length; i++) {
- if (nsNode.hasNode(namespace[i])) {
- nsNode.getNode(namespace[i]).remove();
- }
- }
- }
- }
- }
-
- // recreate workflow nodes
- Node workflowCategories = node.getNode("hippo:configuration/hippo:workflows");
- for (String category : new String[] { "internal", "embedded", "threepane", "shortcuts", "editor" }) {
- if (workflowCategories.hasNode(category)) {
- workflowCategories.getNode(category).remove();
- }
- }
- }
- }.setAtomic());
- for (String[] nodeTypeDefinitions : new String[][] {
- {"hipposys"},
- {"hipposysedit"},
- {"hippo", "repository.cnd", "org.hippoecm.repository.LocalHippoRepository" },
- {"hippostd"},
- {"hippostd", "hippostd-addendum.cnd"},
- {"hippogallery"},
- {"frontend"},
- {"hippolog"},
- {"reporting"},
- {"hippohtmlcleaner"},
- {"editor"}}) {
- try {
- String prefix = nodeTypeDefinitions[0];
- String cndName = (nodeTypeDefinitions.length > 1 && nodeTypeDefinitions[1] != null ? nodeTypeDefinitions[1] : prefix + ".cnd");
- String classContext = (nodeTypeDefinitions.length > 2 && nodeTypeDefinitions[2] != null ? nodeTypeDefinitions[2] : null);
- InputStream cndStream;
- if (classContext != null) {
- cndStream = Class.forName(classContext).getResourceAsStream(cndName);
- } else {
- cndStream = getClass().getClassLoader().getResourceAsStream(cndName);
- }
- if(cndName.equals("hippogallery"))
- cndName = "-";
- if (cndStream != null) {
- context.registerVisitor(new UpdaterItemVisitor.NamespaceVisitor(context, prefix, cndName, new InputStreamReader(cndStream)));
- }
- } catch (ClassNotFoundException ex) {
- ex.printStackTrace(System.err);
- }
- }
-
- try {
- Workspace workspace = context.getWorkspace();
- for(String subtypedNamespace : subTypedNamespaces(workspace)) {
- String uri = workspace.getNamespaceRegistry().getURI(subtypedNamespace);
- workspace.getNamespaceRegistry().registerNamespace(subtypedNamespace, VersionNumber.versionFromURI(uri).next().versionToURI(uri));
- context.registerVisitor(new UpdaterItemVisitor.NamespaceVisitor(context, subtypedNamespace, "-", null));
- }
- } catch (NamespaceException ex) {
- ex.printStackTrace(System.err);
- } catch (RepositoryException ex) {
- ex.printStackTrace(System.err);
- }
- }
-
- private Collection subTypedNamespaces(Workspace workspace) throws RepositoryException {
- Set knownNamespaces = new HashSet();
- LinkedList subtypedNamespaces = new LinkedList();
- Set skippedNamespaces = new HashSet();
- knownNamespaces.add("hippo");
- skippedNamespaces.add("hipposys");
- skippedNamespaces.add("hipposysedit");
- skippedNamespaces.add("hippostd");
- skippedNamespaces.add("hippogallery");
- skippedNamespaces.add("frontend");
- skippedNamespaces.add("hippolog");
- skippedNamespaces.add("reporting");
- skippedNamespaces.add("hippohtmlcleaner");
- skippedNamespaces.add("editor");
- skippedNamespaces.add("hipposched");
- skippedNamespaces.add("hippoldap");
- skippedNamespaces.addAll(knownNamespaces);
- NodeTypeManager ntMgr = workspace.getNodeTypeManager();
- boolean rerun;
- do {
- rerun = false;
- for (NodeTypeIterator ntiter = ntMgr.getAllNodeTypes(); ntiter.hasNext();) {
- NodeType nt = ntiter.nextNodeType();
- String ntName = nt.getName();
- if (ntName.contains(":")) {
- String ntNamespace = ntName.substring(0, ntName.indexOf(":"));
- // if the namespace (x) is not known, but one of the supertypes of the type is in a
- // known namespace (y) then add the namespace (x) to the list of known namespaces and restart.
- if (!knownNamespaces.contains(ntNamespace)) {
- Set dependencies = new HashSet();
- for (NodeType superType : nt.getSupertypes())
- dependencies.add(superType);
- for (NodeDefinition childDef : nt.getDeclaredChildNodeDefinitions()) {
- if(childDef.getDefaultPrimaryType() != null)
- dependencies.add(childDef.getDefaultPrimaryType());
- for(NodeType childNodeType : childDef.getRequiredPrimaryTypes())
- dependencies.add(childNodeType);
- }
- for (NodeType superType : dependencies) {
- String superName = superType.getName();
- if (superName.contains(":")) {
- String superNamespace = superName.substring(0, superName.indexOf(":"));
- if (knownNamespaces.contains(superNamespace)) {
- knownNamespaces.add(ntNamespace);
- if (!skippedNamespaces.contains(ntNamespace)) {
- subtypedNamespaces.addFirst(ntNamespace);
- }
- rerun = true;
- break;
- }
- }
- }
- }
- }
- if (rerun)
- break;
- }
- } while (rerun);
- return subtypedNamespaces;
- }
-
- private void convert(Node node, UpdaterContext context) throws RepositoryException {
- for (int i = 0; i < rules.length; i++) {
- String[] rule = rules[i];
- if ("type".equals(rule[0])) {
- boolean typeMatch = false;
- int typeMatchIndex = 0;
- for (NodeType nodeType : context.getNodeTypes(node)) {
- if (nodeType.getName().equals(rule[1])) {
- typeMatch = true;
- if (typeMatchIndex == 0) {
- if (rule[2] != null) {
- context.setPrimaryNodeType(node, rule[2]);
- } else {
- node.remove();
- return;
- }
- } else {
- node.removeMixin(rule[1]);
- node.addMixin(rule[2]);
- }
- break;
- }
- ++typeMatchIndex;
- }
- if (typeMatch) {
- int j;
- for (j = i + 1; j < rules.length; j++) {
- rule = rules[j];
- if ("field".equals(rule[0])) {
- if (node.hasProperty(rule[1])) {
- Property property = node.getProperty(rule[1]);
- if (rule[2] != null) {
- context.setName(property, rule[2]);
- if (!context.isMultiple(property)) {
- // TODO: whenever property is a Name (or Path), see if there is a prefix
- // in there that we can remap.
- if (rule[2].equals("hipposys_1_0:value") || rule[2].equals("hipposys_1_0:nodetype")) {
- String value = property.getString();
- for (int k = 0; k < rules.length; k++) {
- if (rules[k][0].equals("type") && rules[k][1].equals(value)) {
- value = rules[k][2];
- // hipposys:value is a String property, so the prefix will not be remapped
- String prefix = value.substring(0, value.indexOf('_'));
- value = prefix + value.substring(value.indexOf(':'));
- break;
- }
- }
- property.setValue(value);
- } else if (rule[2].equals("hipposys_1_0:classname")) {
- String value = property.getString();
- property.setValue(getNewClass(value));
- }
- }
- } else {
- property.remove();
- }
- }
- } else if ("child".equals(rule[0])) {
- for (NodeIterator iter = node.getNodes(rule[1]); iter.hasNext();) {
- Node child = iter.nextNode();
- if (rule[2] != null) {
- context.setName(child, rule[2]);
- if (rule.length > 3) {
- context.setPrimaryNodeType(child, rule[3]);
- }
- } else {
- child.remove();
- }
- }
- } else {
- break;
- }
- }
- i = j - 1;
- } else {
- int j;
- for (j = i + 1; j < rules.length; j++) {
- rule = rules[j];
- if (!"field".equals(rule[0]) && !"child".equals(rule[0])) {
- break;
- }
- }
- i = j - 1;
- }
- } else if ("field".equals(rule[0])) {
- throw new RepositoryException("bad rule on " + i + " " + rule[0] + " " + rule[1] + " " + rule[2]);
- } else if ("child".equals(rule[0])) {
- throw new RepositoryException("bad rule on " + i + " " + rule[0] + " " + rule[1] + " " + rule[2]);
- } else {
- throw new RepositoryException("bad rule on " + i + " " + rule[0] + " " + rule[1] + " " + rule[2]);
- }
- }
- }
-
-}
Deleted: hippo-ecm/trunk/repository/upgrade/src/main/java/org/hippoecm/repository/upgrade/Release72UpgraderPhase3.java
===================================================================
--- hippo-ecm/trunk/repository/upgrade/src/main/java/org/hippoecm/repository/upgrade/Release72UpgraderPhase3.java 2009-12-02 12:35:41 UTC (rev 20974)
+++ hippo-ecm/trunk/repository/upgrade/src/main/java/org/hippoecm/repository/upgrade/Release72UpgraderPhase3.java 2009-12-02 12:39:22 UTC (rev 20975)
@@ -1,37 +0,0 @@
-/*
- * Copyright 2009 Hippo.
- *
- * Licensed 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.
- */
-package org.hippoecm.repository.upgrade;
-
-import javax.jcr.Node;
-import javax.jcr.RepositoryException;
-
-import org.hippoecm.repository.ext.UpdaterContext;
-import org.hippoecm.repository.ext.UpdaterItemVisitor;
-import org.hippoecm.repository.ext.UpdaterModule;
-
-public class Release72UpgraderPhase3 implements UpdaterModule {
- public void register(final UpdaterContext context) {
- context.registerName("upgrade-post");
- context.registerStartTag("v20902-phase2");
- context.registerEndTag("v20902");
- context.registerVisitor(new UpdaterItemVisitor.NodeTypeVisitor("hipposys:unstructured") {
- @Override
- protected void leaving(Node node, int level) throws RepositoryException {
- node.removeMixin("hipposys:unstructured");
- }
- }.setAtomic());
- }
-}
From svn-logs at hippocms.org Wed Dec 2 13:42:18 2009
From: svn-logs at hippocms.org (fvlankvelt)
Date: Wed Dec 2 13:42:18 2009
Subject: [HippoRepos-dev] [20976] hippo-ecm/trunk: HREPTWO-16: introduce
some stronger typing
Message-ID: <20091202124218.419A5C96D@svnnew.onehippo.org>
Revision: 20976
Author: fvlankvelt
Date: 2009-12-02 13:42:16 +0100 (Wed, 02 Dec 2009)
Log Message:
-----------
HREPTWO-16: introduce some stronger typing
Reducing the dependency on JcrNodeModel; utilities that only need a node should be satisfied with IModel.
Modified Paths:
--------------
hippo-ecm/trunk/addon/cms/browse/src/main/java/org/hippoecm/frontend/plugins/cms/browse/tree/FolderTreePlugin.java
hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/plugins/resource/ImageDisplayPlugin.java
hippo-ecm/trunk/addon/gallery/frontend/src/main/java/org/hippoecm/frontend/plugins/gallery/ImageContainer.java
hippo-ecm/trunk/addon/reporting/frontend/src/main/java/org/hippoecm/frontend/plugins/reporting/ReportModel.java
hippo-ecm/trunk/addon/standards/frontend/src/main/java/org/hippoecm/frontend/plugins/standards/FolderTreeNode.java
hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/AbstractWorkflowPlugin.java
hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/i18n/model/NodeTranslator.java
hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/NodeModelWrapper.java
hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/event/JcrFrontendListener.java
hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/nodetypes/JcrNodeTypeModel.java
hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/nodetypes/JcrNodeTypesProvider.java
hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/properties/JcrPropertiesProvider.java
hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/tree/IJcrTreeNode.java
hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/tree/JcrTreeNode.java
hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/tree/ObservableTreeModel.java
hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/resource/JcrResourceStream.java
hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/service/render/AbstractRenderService.java
hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/util/MaxLengthNodeNameFormatter.java
hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/widgets/JcrTree.java
hippo-ecm/trunk/frontend/plugins/src/main/java/org/hippoecm/frontend/plugins/console/dialog/LookupDialog.java
hippo-ecm/trunk/frontend/plugins/src/main/java/org/hippoecm/frontend/plugins/console/editor/ResourceEditor.java
hippo-ecm/trunk/frontend/plugins/src/main/java/org/hippoecm/frontend/plugins/console/menu/MenuPlugin.java
hippo-ecm/trunk/frontend/plugins/src/main/java/org/hippoecm/frontend/plugins/console/menu/check/CheckInOutDialog.java
hippo-ecm/trunk/frontend/plugins/src/main/java/org/hippoecm/frontend/plugins/console/menu/cnd/CndExportDialog.java
hippo-ecm/trunk/frontend/plugins/src/main/java/org/hippoecm/frontend/plugins/console/menu/cnd/CndImportDialog.java
hippo-ecm/trunk/frontend/plugins/src/main/java/org/hippoecm/frontend/plugins/console/menu/content/ContentExportDialog.java
hippo-ecm/trunk/frontend/plugins/src/main/java/org/hippoecm/frontend/plugins/console/menu/content/ContentImportDialog.java
hippo-ecm/trunk/frontend/plugins/src/main/java/org/hippoecm/frontend/plugins/console/menu/copy/CopyDialog.java
hippo-ecm/trunk/frontend/plugins/src/main/java/org/hippoecm/frontend/plugins/console/menu/delete/DeleteDialog.java
hippo-ecm/trunk/frontend/plugins/src/main/java/org/hippoecm/frontend/plugins/console/menu/move/MoveDialog.java
hippo-ecm/trunk/frontend/plugins/src/main/java/org/hippoecm/frontend/plugins/console/menu/namespace/NamespaceDialog.java
hippo-ecm/trunk/frontend/plugins/src/main/java/org/hippoecm/frontend/plugins/console/menu/node/NodeDialog.java
hippo-ecm/trunk/frontend/plugins/src/main/java/org/hippoecm/frontend/plugins/console/menu/permissions/PermissionsDialog.java
hippo-ecm/trunk/frontend/plugins/src/main/java/org/hippoecm/frontend/plugins/console/menu/property/PropertyDialog.java
hippo-ecm/trunk/frontend/plugins/src/main/java/org/hippoecm/frontend/plugins/console/menu/rename/RenameDialog.java
hippo-ecm/trunk/frontend/plugins/src/main/java/org/hippoecm/frontend/plugins/console/menu/reset/ResetDialog.java
hippo-ecm/trunk/frontend/plugins/src/main/java/org/hippoecm/frontend/plugins/console/menu/save/SaveDialog.java
hippo-ecm/trunk/frontend/plugins/src/main/java/org/hippoecm/frontend/plugins/console/menu/workflow/WorkflowDialog.java
Modified: hippo-ecm/trunk/addon/cms/browse/src/main/java/org/hippoecm/frontend/plugins/cms/browse/tree/FolderTreePlugin.java
===================================================================
--- hippo-ecm/trunk/addon/cms/browse/src/main/java/org/hippoecm/frontend/plugins/cms/browse/tree/FolderTreePlugin.java 2009-12-02 12:39:22 UTC (rev 20975)
+++ hippo-ecm/trunk/addon/cms/browse/src/main/java/org/hippoecm/frontend/plugins/cms/browse/tree/FolderTreePlugin.java 2009-12-02 12:42:16 UTC (rev 20976)
@@ -15,6 +15,7 @@
*/
package org.hippoecm.frontend.plugins.cms.browse.tree;
+import javax.jcr.Node;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;
@@ -25,6 +26,7 @@
import org.apache.wicket.markup.html.IHeaderResponse;
import org.apache.wicket.markup.html.panel.EmptyPanel;
import org.apache.wicket.markup.html.tree.ITreeState;
+import org.apache.wicket.model.IModel;
import org.hippoecm.addon.workflow.ContextWorkflowPlugin;
import org.hippoecm.frontend.PluginRequestTarget;
import org.hippoecm.frontend.behaviors.IContextMenuManager;
@@ -86,8 +88,8 @@
if (workflowConfig != null && (node instanceof IJcrTreeNode)) {
ContextWorkflowPlugin content = new ContextWorkflowPlugin(context, workflowConfig);
content.bind(FolderTreePlugin.this, id);
- JcrNodeModel nodeModel = ((IJcrTreeNode) node).getNodeModel();
- content.setDefaultModel(nodeModel);
+ IModel nodeModel = ((IJcrTreeNode) node).getNodeModel();
+ content.setModel(nodeModel);
return content;
/* FIMXE: the following section would be a better implementation, but plugins
loaded this way cannot instantiate plugins themselves.
Modified: hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/plugins/resource/ImageDisplayPlugin.java
===================================================================
--- hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/plugins/resource/ImageDisplayPlugin.java 2009-12-02 12:39:22 UTC (rev 20975)
+++ hippo-ecm/trunk/addon/editor/frontend/src/main/java/org/hippoecm/frontend/editor/plugins/resource/ImageDisplayPlugin.java 2009-12-02 12:42:16 UTC (rev 20976)
@@ -23,7 +23,6 @@
import org.apache.wicket.markup.html.link.ResourceLink;
import org.apache.wicket.markup.html.panel.Fragment;
import org.apache.wicket.model.Model;
-import org.hippoecm.frontend.model.JcrNodeModel;
import org.hippoecm.frontend.plugin.IPluginContext;
import org.hippoecm.frontend.plugin.config.IPluginConfig;
import org.hippoecm.frontend.plugins.standards.util.ByteSizeFormatter;
@@ -33,7 +32,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class ImageDisplayPlugin extends RenderPlugin {
+public class ImageDisplayPlugin extends RenderPlugin {
@SuppressWarnings("unused")
private final static String SVN_ID = "$Id$";
@@ -50,10 +49,10 @@
}
private void addResourceFragment() {
- resource = new JcrResourceStream(((JcrNodeModel) getDefaultModel()).getNode());
+ resource = new JcrResourceStream(getModel());
Fragment fragment = new Fragment("fragment", "unknown", this);
try {
- Node node = ((JcrNodeModel) getDefaultModel()).getNode();
+ Node node = getModelObject();
String mimeType = node.getProperty("jcr:mimeType").getString();
if (mimeType.indexOf('/') > 0) {
String category = mimeType.substring(0, mimeType.indexOf('/'));
Modified: hippo-ecm/trunk/addon/gallery/frontend/src/main/java/org/hippoecm/frontend/plugins/gallery/ImageContainer.java
===================================================================
--- hippo-ecm/trunk/addon/gallery/frontend/src/main/java/org/hippoecm/frontend/plugins/gallery/ImageContainer.java 2009-12-02 12:39:22 UTC (rev 20975)
+++ hippo-ecm/trunk/addon/gallery/frontend/src/main/java/org/hippoecm/frontend/plugins/gallery/ImageContainer.java 2009-12-02 12:42:16 UTC (rev 20976)
@@ -40,7 +40,7 @@
final IPluginConfig pluginConfig) {
super(wicketId, model);
- stream = new JcrResourceStream(model.getNode());
+ stream = new JcrResourceStream(model);
NonCachingImage img = new NonCachingImage("image", new JcrResource(stream)) {
private static final long serialVersionUID = 1L;
Modified: hippo-ecm/trunk/addon/reporting/frontend/src/main/java/org/hippoecm/frontend/plugins/reporting/ReportModel.java
===================================================================
--- hippo-ecm/trunk/addon/reporting/frontend/src/main/java/org/hippoecm/frontend/plugins/reporting/ReportModel.java 2009-12-02 12:39:22 UTC (rev 20975)
+++ hippo-ecm/trunk/addon/reporting/frontend/src/main/java/org/hippoecm/frontend/plugins/reporting/ReportModel.java 2009-12-02 12:42:16 UTC (rev 20976)
@@ -44,7 +44,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class ReportModel extends NodeModelWrapper implements IDataProvider, IObservable {
+public class ReportModel extends NodeModelWrapper implements IDataProvider, IObservable {
@SuppressWarnings("unused")
private final static String SVN_ID = "$Id$";
@@ -91,7 +91,7 @@
if (!attached) {
attached = true;
try {
- Node reportNode = nodeModel.getNode();
+ Node reportNode = nodeModel.getObject();
if (reportNode.isNodeType(ReportingNodeTypes.NT_REPORT)) {
Node queryNode = reportNode.getNode(ReportingNodeTypes.QUERY);
QueryManager queryManager = ((UserSession) Session.get()).getQueryManager();
@@ -152,7 +152,7 @@
public void startObservation() {
try {
- Node node = getNodeModel().getNode();
+ Node node = getChainedModel().getObject();
Node listenerNode = node.getNode(ReportingNodeTypes.LISTENER);
listener = new JcrFrontendListener(obContext, new JcrNodeModel(listenerNode));
listener.start();
Modified: hippo-ecm/trunk/addon/standards/frontend/src/main/java/org/hippoecm/frontend/plugins/standards/FolderTreeNode.java
===================================================================
--- hippo-ecm/trunk/addon/standards/frontend/src/main/java/org/hippoecm/frontend/plugins/standards/FolderTreeNode.java 2009-12-02 12:39:22 UTC (rev 20975)
+++ hippo-ecm/trunk/addon/standards/frontend/src/main/java/org/hippoecm/frontend/plugins/standards/FolderTreeNode.java 2009-12-02 12:42:16 UTC (rev 20976)
@@ -50,8 +50,8 @@
@Override
public IJcrTreeNode getChild(String name) throws RepositoryException {
- if (getNodeModel().getNode().hasNode(name)) {
- JcrNodeModel childModel = new JcrNodeModel(getNodeModel().getNode().getNode(name));
+ if (getChainedModel().getObject().hasNode(name)) {
+ JcrNodeModel childModel = new JcrNodeModel(getChainedModel().getObject().getNode(name));
return new FolderTreeNode(childModel, this);
}
return null;
@@ -60,7 +60,7 @@
@Override
protected List loadChildren() throws RepositoryException {
List result = new ArrayList();
- List subNodes = subNodes(nodeModel.getNode());
+ List subNodes = subNodes(nodeModel.getObject());
for (Node subNode : subNodes) {
FolderTreeNode subfolder = new FolderTreeNode(new JcrNodeModel(subNode), this);
result.add(subfolder);
@@ -75,7 +75,7 @@
@Override
public int getChildCount() {
- Node jcrNode = this.nodeModel.getNode();
+ Node jcrNode = this.nodeModel.getObject();
if (jcrNode instanceof HippoNode) {
try {
HippoNode hippoNode = (HippoNode) jcrNode;
Modified: hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/AbstractWorkflowPlugin.java
===================================================================
--- hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/AbstractWorkflowPlugin.java 2009-12-02 12:39:22 UTC (rev 20975)
+++ hippo-ecm/trunk/addon/workflow/src/main/java/org/hippoecm/addon/workflow/AbstractWorkflowPlugin.java 2009-12-02 12:42:16 UTC (rev 20976)
@@ -42,7 +42,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-abstract class AbstractWorkflowPlugin extends RenderPlugin {
+abstract class AbstractWorkflowPlugin extends RenderPlugin {
@SuppressWarnings("unused")
private final static String SVN_ID = "$Id$";
Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/i18n/model/NodeTranslator.java
===================================================================
--- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/i18n/model/NodeTranslator.java 2009-12-02 12:39:22 UTC (rev 20975)
+++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/i18n/model/NodeTranslator.java 2009-12-02 12:42:16 UTC (rev 20976)
@@ -48,7 +48,7 @@
* hippo:translated set, it is used to lookup the translated strings. When no such mixin
* is present or the node doesn't exist, the last element of the node path is returned.
*/
-public class NodeTranslator extends NodeModelWrapper {
+public class NodeTranslator extends NodeModelWrapper {
@SuppressWarnings("unused")
private final static String SVN_ID = "$Id$";
@@ -59,7 +59,7 @@
private NodeNameModel name;
private transient TreeMap properties;
- public NodeTranslator(JcrNodeModel nodeModel) {
+ public NodeTranslator(IModel nodeModel) {
super(nodeModel);
name = new NodeNameModel();
}
@@ -105,7 +105,7 @@
@Override
protected String load() {
- Node node = nodeModel.getNode();
+ Node node = nodeModel.getObject();
String name = "node name";
if (node != null) {
try {
@@ -165,8 +165,8 @@
} catch (RepositoryException ex) {
log.error(ex.getMessage());
}
- } else {
- String path = nodeModel.getItemModel().getPath();
+ } else if (nodeModel instanceof JcrNodeModel) {
+ String path = ((JcrNodeModel) nodeModel).getItemModel().getPath();
if (path != null) {
name = path.substring(path.lastIndexOf('/') + 1);
if (name.indexOf('[') > 0) {
@@ -193,7 +193,7 @@
}
public void startObservation() {
- final JcrNodeModel parentModel = nodeModel.getParentModel();
+ final JcrNodeModel parentModel = ((JcrNodeModel) nodeModel).getParentModel();
obContext.registerObserver(observer = new IObserver() {
private static final long serialVersionUID = 1L;
@@ -271,7 +271,7 @@
protected String load() {
Property.this.attach();
String name = property;
- Node node = nodeModel.getNode();
+ Node node = nodeModel.getObject();
if (node != null) {
try {
if (node.isNodeType("hippo:translated")) {
@@ -320,7 +320,7 @@
protected String load() {
Property.this.attach();
String name = property;
- Node node = nodeModel.getNode();
+ Node node = nodeModel.getObject();
if (node != null) {
try {
if (node.isNodeType("hippo:translated")) {
Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/NodeModelWrapper.java
===================================================================
--- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/NodeModelWrapper.java 2009-12-02 12:39:22 UTC (rev 20975)
+++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/NodeModelWrapper.java 2009-12-02 12:42:16 UTC (rev 20976)
@@ -20,7 +20,7 @@
import org.apache.wicket.model.IChainingModel;
import org.apache.wicket.model.IModel;
-public abstract class NodeModelWrapper implements IChainingModel {
+public abstract class NodeModelWrapper implements IChainingModel {
@SuppressWarnings("unused")
private final static String SVN_ID = "$Id$";
@@ -28,10 +28,18 @@
protected JcrNodeModel nodeModel;
- public NodeModelWrapper(JcrNodeModel nodeModel) {
- this.nodeModel = nodeModel;
+ public NodeModelWrapper(IModel nodeModel) {
+ if (!(nodeModel instanceof JcrNodeModel)) {
+ this.nodeModel = new JcrNodeModel(nodeModel.getObject());
+ } else {
+ this.nodeModel = (JcrNodeModel) nodeModel;
+ }
}
+ /**
+ * @deprecated
+ * Use getChainedModel() instead.
+ */
public JcrNodeModel getNodeModel() {
return nodeModel;
}
@@ -48,12 +56,17 @@
}
}
- public Node getObject() {
- return nodeModel.getObject();
+ protected Node getNode() {
+ return nodeModel.getNode();
}
+
+ @SuppressWarnings("unchecked")
+ public T getObject() {
+ return (T) this;
+ }
- public void setObject(Node object) {
- nodeModel.setObject(object);
+ public void setObject(T object) {
+ throw new UnsupportedOperationException();
}
public void detach() {
Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/event/JcrFrontendListener.java
===================================================================
--- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/event/JcrFrontendListener.java 2009-12-02 12:39:22 UTC (rev 20975)
+++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/event/JcrFrontendListener.java 2009-12-02 12:42:16 UTC (rev 20976)
@@ -25,7 +25,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class JcrFrontendListener extends NodeModelWrapper {
+public class JcrFrontendListener extends NodeModelWrapper {
@SuppressWarnings("unused")
private final static String SVN_ID = "$Id$";
@@ -43,7 +43,7 @@
private String[] getMultiString(String name) throws RepositoryException {
String[] result = null;
- Node node = getNodeModel().getNode();
+ Node node = getNode();
if (node.hasProperty(FrontendNodeType.FRONTEND_UUIDS)) {
Value[] values = node.getProperty(FrontendNodeType.FRONTEND_UUIDS).getValues();
result = new String[values.length];
@@ -56,7 +56,7 @@
}
public void start() {
- Node node = getNodeModel().getNode();
+ Node node = getNode();
if (node != null) {
try {
boolean deep = false;
Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/nodetypes/JcrNodeTypeModel.java
===================================================================
--- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/nodetypes/JcrNodeTypeModel.java 2009-12-02 12:39:22 UTC (rev 20975)
+++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/nodetypes/JcrNodeTypeModel.java 2009-12-02 12:42:16 UTC (rev 20976)
@@ -28,7 +28,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class JcrNodeTypeModel extends LoadableDetachableModel {
+public class JcrNodeTypeModel extends LoadableDetachableModel {
@SuppressWarnings("unused")
private final static String SVN_ID = "$Id$";
@@ -52,7 +52,7 @@
}
@Override
- protected Object load() {
+ protected NodeType load() {
NodeType result = null;
if (type != null) {
try {
Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/nodetypes/JcrNodeTypesProvider.java
===================================================================
--- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/nodetypes/JcrNodeTypesProvider.java 2009-12-02 12:39:22 UTC (rev 20975)
+++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/nodetypes/JcrNodeTypesProvider.java 2009-12-02 12:42:16 UTC (rev 20976)
@@ -30,12 +30,11 @@
import org.apache.commons.lang.builder.ToStringStyle;
import org.apache.wicket.markup.repeater.data.IDataProvider;
import org.apache.wicket.model.IModel;
-import org.hippoecm.frontend.model.JcrNodeModel;
import org.hippoecm.frontend.model.NodeModelWrapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class JcrNodeTypesProvider extends NodeModelWrapper implements IDataProvider {
+public class JcrNodeTypesProvider extends NodeModelWrapper implements IDataProvider {
@SuppressWarnings("unused")
private final static String SVN_ID = "$Id$";
@@ -43,14 +42,13 @@
static final Logger log = LoggerFactory.getLogger(JcrNodeTypesProvider.class);
- public JcrNodeTypesProvider(JcrNodeModel nodeModel) {
+ public JcrNodeTypesProvider(IModel nodeModel) {
super(nodeModel);
}
- @SuppressWarnings("unchecked")
- public Iterator iterator(int first, int count) {
- List list = new ArrayList();
- Node node = nodeModel.getNode();
+ public Iterator iterator(int first, int count) {
+ List list = new ArrayList();
+ Node node = nodeModel.getObject();
if (node != null) {
try {
NodeType[] nodeTypes = node.getMixinNodeTypes();
@@ -62,16 +60,15 @@
return list.iterator();
}
- public IModel model(Object object) {
- NodeType nodeType = (NodeType)object;
- return new JcrNodeTypeModel(nodeType);
+ public IModel model(NodeType object) {
+ return new JcrNodeTypeModel(object);
}
public int size() {
int result = 0;
try {
- if (nodeModel.getNode() != null) {
- NodeType[] nodeTypes = nodeModel.getNode().getMixinNodeTypes();
+ if (nodeModel.getObject() != null) {
+ NodeType[] nodeTypes = nodeModel.getObject().getMixinNodeTypes();
result = nodeTypes.length;
}
} catch (RepositoryException e) {
Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/properties/JcrPropertiesProvider.java
===================================================================
--- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/properties/JcrPropertiesProvider.java 2009-12-02 12:39:22 UTC (rev 20975)
+++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/properties/JcrPropertiesProvider.java 2009-12-02 12:42:16 UTC (rev 20976)
@@ -35,7 +35,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class JcrPropertiesProvider extends NodeModelWrapper implements IDataProvider {
+public class JcrPropertiesProvider extends NodeModelWrapper implements IDataProvider {
@SuppressWarnings("unused")
private final static String SVN_ID = "$Id$";
@@ -54,8 +54,8 @@
public Iterator iterator(int first, int count) {
List list = new ArrayList();
try {
- if (nodeModel.getNode() != null) {
- PropertyIterator it = nodeModel.getNode().getProperties();
+ if (nodeModel.getObject() != null) {
+ PropertyIterator it = nodeModel.getObject().getProperties();
if (it.getSize() > 0) {
it.skip(first);
for (int i = 0; i < count; i++) {
@@ -76,16 +76,15 @@
return list.iterator();
}
- public IModel model(Object object) {
- Property prop = (Property) object;
- return new JcrPropertyModel(prop);
+ public IModel model(Property object) {
+ return new JcrPropertyModel(object);
}
public int size() {
int result = 0;
try {
- if (nodeModel.getNode() != null) {
- PropertyIterator it = nodeModel.getNode().getProperties();
+ if (nodeModel.getObject() != null) {
+ PropertyIterator it = nodeModel.getObject().getProperties();
result = (int) it.getSize();
// result = result - 1; // For jcr:primaryType
Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/tree/IJcrTreeNode.java
===================================================================
--- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/tree/IJcrTreeNode.java 2009-12-02 12:39:22 UTC (rev 20975)
+++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/tree/IJcrTreeNode.java 2009-12-02 12:42:16 UTC (rev 20976)
@@ -24,6 +24,12 @@
public interface IJcrTreeNode extends TreeNode, IDetachable {
final static String SVN_ID = "$Id$";
+ /**
+ * @deprecated
+ *
+ * Clients of this interface should only expect IModel as the return
+ * type.
+ */
JcrNodeModel getNodeModel();
IJcrTreeNode getChild(String name) throws RepositoryException;
Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/tree/JcrTreeNode.java
===================================================================
--- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/tree/JcrTreeNode.java 2009-12-02 12:39:22 UTC (rev 20975)
+++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/tree/JcrTreeNode.java 2009-12-02 12:42:16 UTC (rev 20976)
@@ -28,12 +28,13 @@
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;
import org.apache.wicket.model.IDetachable;
+import org.apache.wicket.model.IModel;
import org.hippoecm.frontend.model.JcrNodeModel;
import org.hippoecm.frontend.model.NodeModelWrapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class JcrTreeNode extends NodeModelWrapper implements IJcrTreeNode {
+public class JcrTreeNode extends NodeModelWrapper implements IJcrTreeNode {
private static final long serialVersionUID = 1L;
@SuppressWarnings("unused")
@@ -53,7 +54,7 @@
private IJcrTreeNode parent;
private transient int flags = 0;
- public JcrTreeNode(JcrNodeModel nodeModel, IJcrTreeNode parent) {
+ public JcrTreeNode(IModel nodeModel, IJcrTreeNode parent) {
super(nodeModel);
this.parent = parent;
@@ -66,8 +67,8 @@
* @throws RepositoryException
*/
public IJcrTreeNode getChild(String name) throws RepositoryException {
- if (getNodeModel().getNode().hasNode(name)) {
- JcrNodeModel childModel = new JcrNodeModel(getNodeModel().getNode().getNode(name));
+ if (getNodeModel().getObject().hasNode(name)) {
+ JcrNodeModel childModel = new JcrNodeModel(getNodeModel().getObject().getNode(name));
return new JcrTreeNode(childModel, this);
}
return null;
@@ -115,7 +116,7 @@
public boolean isLeaf() {
try {
if (nodeModel != null) {
- Node node = nodeModel.getNode();
+ Node node = nodeModel.getObject();
if (node != null) {
return !node.getNodes().hasNext();
}
@@ -155,7 +156,7 @@
}
protected List loadChildren() throws RepositoryException {
- Node node = nodeModel.getNode();
+ Node node = nodeModel.getObject();
List newChildren = new ArrayList();
NodeIterator jcrChildren = node.getNodes();
int count = 0;
@@ -177,7 +178,7 @@
}
private void ensureChildrenLoaded() {
- if (nodeModel.getNode() == null) {
+ if (nodeModel.getObject() == null) {
reloadChildren = false;
reloadChildCount = false;
children = new ArrayList();
@@ -205,7 +206,7 @@
return true;
}
JcrTreeNode treeNode = (JcrTreeNode) object;
- return nodeModel.equals(treeNode.getNodeModel());
+ return nodeModel.equals(treeNode.getChainedModel());
}
@Override
Modified: hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/tree/ObservableTreeModel.java
===================================================================
--- hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/tree/ObservableTreeModel.java 2009-12-02 12:39:22 UTC (rev 20975)
+++ hippo-ecm/trunk/frontend/engine/src/main/java/org/hippoecm/frontend/model/tree/ObservableTreeModel.java 2009-12-02 12:42:16 UTC (rev 20976)
@@ -82,7 +82,7 @@
public TreePath lookup(JcrNodeModel nodeModel) {
IJcrTreeNode node = root;
if (nodeModel != null) {
- String basePath = root.getNodeModel().getItemModel().getPath();
+ String basePath = ((JcrNodeModel) root.getNodeModel()).getItemModel().getPath();
String path = nodeModel.getItemModel().getPath();
if (path != null && path.startsWith(basePath)) {
String[] elements = StringUtils.split(path.substring(basePath.length()), '/');
@@ -117,27 +117,30 @@
}
public void startObservation() {
- listener = new JcrEventListener(new IObservationContext