Verschiedene Probleme mit einigen Admin-Klassen korrgiert.

git-svn-id: https://svn.libreccm.org/ccm/trunk@2184 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2013-06-07 10:56:57 +00:00
parent fe52693426
commit 2f4c3a41d7
4 changed files with 115 additions and 135 deletions

View File

@ -62,7 +62,7 @@ public class FileAttachmentConfig extends AbstractConfig {
/** /**
* Constructor, don't use it directly! * Constructor, don't use it directly!
*/ */
protected FileAttachmentConfig() { public FileAttachmentConfig() {
super(); super();

View File

@ -11,18 +11,14 @@ import com.arsdigita.util.parameter.Parameter;
*/ */
public class NotesConfig extends AbstractConfig { public class NotesConfig extends AbstractConfig {
private static final NotesConfig INSTANCE = new NotesConfig(); private static NotesConfig INSTANCE;
static {
INSTANCE.load();
}
private final Parameter assetStepSortKey = new IntegerParameter( private final Parameter assetStepSortKey = new IntegerParameter(
"com.arsdigita.cms.contentassets.notes.asset_step_sortkey", "com.arsdigita.cms.contentassets.notes.asset_step_sortkey",
Parameter.REQUIRED, Parameter.REQUIRED,
3); 3);
protected NotesConfig() { public NotesConfig() {
super(); super();
@ -33,11 +29,14 @@ public class NotesConfig extends AbstractConfig {
} }
public static final NotesConfig getInstance() { public static final NotesConfig getInstance() {
if (INSTANCE == null) {
INSTANCE = new NotesConfig();
INSTANCE.load();
}
return INSTANCE; return INSTANCE;
} }
public Integer getAssetStepSortKey() { public Integer getAssetStepSortKey() {
return (Integer) get(assetStepSortKey); return (Integer) get(assetStepSortKey);
} }
} }

View File

@ -11,20 +11,14 @@ import com.arsdigita.util.parameter.Parameter;
*/ */
public class RelatedLinkConfig extends AbstractConfig { public class RelatedLinkConfig extends AbstractConfig {
private static final RelatedLinkConfig INSTANCE = new RelatedLinkConfig(); private static RelatedLinkConfig INSTANCE;
static {
INSTANCE.load();
}
private final Parameter assetStepSortKey = new IntegerParameter( private final Parameter assetStepSortKey = new IntegerParameter(
"com.arsdigita.cms.relatedlink.contentassets.asset_step_sortkey", "com.arsdigita.cms.relatedlink.contentassets.asset_step_sortkey",
Parameter.REQUIRED, Parameter.REQUIRED,
1); 1);
protected RelatedLinkConfig() { public RelatedLinkConfig() {
super();
register(assetStepSortKey); register(assetStepSortKey);
@ -32,6 +26,10 @@ public class RelatedLinkConfig extends AbstractConfig {
} }
public static final RelatedLinkConfig getInstance() { public static final RelatedLinkConfig getInstance() {
if (INSTANCE == null) {
INSTANCE = new RelatedLinkConfig();
INSTANCE.load();
}
return INSTANCE; return INSTANCE;
} }

View File

@ -17,7 +17,6 @@
*/ */
package com.arsdigita.navigation; package com.arsdigita.navigation;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -52,10 +51,8 @@ public class NavigationFileResolver extends DefaultApplicationFileResolver {
private static final Logger s_log = private static final Logger s_log =
Logger.getLogger(NavigationFileResolver.class); Logger.getLogger(NavigationFileResolver.class);
private static final String CATEGORY_PATH_ATTR = private static final String CATEGORY_PATH_ATTR =
NavigationFileResolver.class + ".categoryPath"; NavigationFileResolver.class + ".categoryPath";
// path is set in a cookie, which navigation models may use if they wish // path is set in a cookie, which navigation models may use if they wish
public static final String PATH_COOKIE_NAME = "ad_path"; public static final String PATH_COOKIE_NAME = "ad_path";
public static final char PATH_COOKIE_SEPARATOR = '|'; public static final char PATH_COOKIE_SEPARATOR = '|';
@ -74,7 +71,7 @@ public class NavigationFileResolver extends DefaultApplicationFileResolver {
} }
if (path.equals("/category.jsp")) { if (path.equals("/category.jsp")) {
Navigation nav = (Navigation)Web.getContext().getApplication(); Navigation nav = (Navigation) Web.getContext().getApplication();
String id = sreq.getParameter("categoryID"); String id = sreq.getParameter("categoryID");
if (s_log.isDebugEnabled()) { if (s_log.isDebugEnabled()) {
@ -83,9 +80,9 @@ public class NavigationFileResolver extends DefaultApplicationFileResolver {
String useContext = sreq.getParameter("useContext"); String useContext = sreq.getParameter("useContext");
if (s_log.isDebugEnabled()) { if (s_log.isDebugEnabled()) {
s_log.debug("Using use context " + useContext ); s_log.debug("Using use context " + useContext);
} }
if ( null == useContext ) { if (null == useContext) {
useContext = Template.DEFAULT_USE_CONTEXT; useContext = Template.DEFAULT_USE_CONTEXT;
} }
Category cat = null; Category cat = null;
@ -94,7 +91,7 @@ public class NavigationFileResolver extends DefaultApplicationFileResolver {
try { try {
cat = new Category(new BigDecimal(id)); cat = new Category(new BigDecimal(id));
} catch (Exception e) { } catch (Exception e) {
s_log.warn("Could not load category for id "+id); s_log.warn("Could not load category for id " + id);
return null; return null;
} }
@ -143,23 +140,22 @@ public class NavigationFileResolver extends DefaultApplicationFileResolver {
cats.add(parents.getCategory()); cats.add(parents.getCategory());
} }
Category[] catsArray = (Category[]) Category[] catsArray = (Category[]) cats.toArray(new Category[cats.size()]);
cats.toArray(new Category[cats.size()]);
sreq.setAttribute(CATEGORY_PATH_ATTR, sreq.setAttribute(CATEGORY_PATH_ATTR,
catsArray); catsArray);
setPathCookie(sresp, catsArray); setPathCookie(sresp, catsArray);
return resolveTemplate(catsArray[catsArray.length-1], useContext); return resolveTemplate(catsArray[catsArray.length - 1], useContext);
} else { } else {
String useContext = Template.DEFAULT_USE_CONTEXT; String useContext = Template.DEFAULT_USE_CONTEXT;
if (path.endsWith( ".jsp" )) { if (path.endsWith(".jsp")) {
int lastSlash = path.lastIndexOf( '/' ); int lastSlash = path.lastIndexOf('/');
useContext = path.substring( lastSlash + 1, path.length() - 4 ); useContext = path.substring(lastSlash + 1, path.length() - 4);
path = path.substring( 0, lastSlash ); path = path.substring(0, lastSlash);
if (s_log.isDebugEnabled()) { if (s_log.isDebugEnabled()) {
s_log.debug( "useContext=" + useContext + ",path=" + path ); s_log.debug("useContext=" + useContext + ",path=" + path);
} }
} }
@ -171,11 +167,11 @@ public class NavigationFileResolver extends DefaultApplicationFileResolver {
s_log.debug("No category found"); s_log.debug("No category found");
} }
sreq.setAttribute(CATEGORY_PATH_ATTR, sreq.setAttribute(CATEGORY_PATH_ATTR,
new Category[] { root }); new Category[]{root});
setPathCookie(sresp, new Category[] { root }); setPathCookie(sresp, new Category[]{root});
return super.resolve(templatePath, sreq, sresp, app); return super.resolve(templatePath, sreq, sresp, app);
} else { } else {
Category cat = cats[cats.length-1]; Category cat = cats[cats.length - 1];
if (s_log.isDebugEnabled()) { if (s_log.isDebugEnabled()) {
s_log.debug("Got cat " + cat); s_log.debug("Got cat " + cat);
} }
@ -209,7 +205,7 @@ public class NavigationFileResolver extends DefaultApplicationFileResolver {
// use this when deciding whether to trust the given path // use this when deciding whether to trust the given path
path.append(PATH_COOKIE_SEPARATOR + Kernel.getContext().getResource().getID().toString()); path.append(PATH_COOKIE_SEPARATOR + Kernel.getContext().getResource().getID().toString());
for (int i = 0; i < catsArray.length; i ++) { for (int i = 0; i < catsArray.length; i++) {
Category cat = catsArray[i]; Category cat = catsArray[i];
path.append(PATH_COOKIE_SEPARATOR + cat.getID().toString()); path.append(PATH_COOKIE_SEPARATOR + cat.getID().toString());
} }
@ -226,12 +222,8 @@ public class NavigationFileResolver extends DefaultApplicationFileResolver {
} }
public static Category[] getCategoryPath(HttpServletRequest req) { public static Category[] getCategoryPath(HttpServletRequest req) {
return (Category[])req.getAttribute(CATEGORY_PATH_ATTR); return (Category[]) req.getAttribute(CATEGORY_PATH_ATTR);
} }
private String getTemplateContext() { private String getTemplateContext() {
@ -255,12 +247,9 @@ public class NavigationFileResolver extends DefaultApplicationFileResolver {
useContext); useContext);
} }
// If there's an explicit use context which doesn't exist, give a 404 // If there's an explicit use context which doesn't exist, give a 404
if (!Template.DEFAULT_USE_CONTEXT.equals( useContext ) && if (!Template.DEFAULT_USE_CONTEXT.equals(useContext) && null == template) {
null == template) { s_log.debug("No template found in context " + getTemplateContext() + " for category " + cat.getID()
s_log.debug("No template found in context " + + " with use context " + useContext);
getTemplateContext() + " for category " +
cat.getID() + " with use context " +
useContext );
return null; return null;
} }
@ -274,7 +263,7 @@ public class NavigationFileResolver extends DefaultApplicationFileResolver {
path = template.getURL(); path = template.getURL();
} }
RequestDispatcher rd = Web.findResourceDispatcher( RequestDispatcher rd = Web.findResourceDispatcher(
new String[] { "ROOT"} , new String[]{"ROOT"},
path); path);
if (s_log.isDebugEnabled()) { if (s_log.isDebugEnabled()) {
@ -285,7 +274,7 @@ public class NavigationFileResolver extends DefaultApplicationFileResolver {
} }
private Category getRootCategory() { private Category getRootCategory() {
Navigation nav = (Navigation)Web.getContext().getApplication(); Navigation nav = (Navigation) Web.getContext().getApplication();
TemplateContext ctx = Navigation.getContext().getTemplateContext(); TemplateContext ctx = Navigation.getContext().getTemplateContext();
if (s_log.isDebugEnabled()) { if (s_log.isDebugEnabled()) {
@ -309,31 +298,25 @@ public class NavigationFileResolver extends DefaultApplicationFileResolver {
return root; return root;
} }
/** /**
* *
* category resolution retained as an instance method to * category resolution retained as an instance method to allow it to be overridden. Default functionality contained
* allow it to be overridden. Default functionality * in static resolveCategory method
* contained in static resolveCategory method *
* @param root * @param root
* @param path * @param path
* @return * @return
*/ */
protected Category[] resolvePath (Category root, String path) { protected Category[] resolvePath(Category root, String path) {
return NavigationFileResolver.resolveCategory(root, path); return NavigationFileResolver.resolveCategory(root, path);
} }
/** /**
* Match a URL with the category tree and return the requested * Match a URL with the category tree and return the requested category if exists.
* category if exists.
* *
* Quasimodo: * Quasimodo: Originally addEqualsFilter has been used to filter the appropriate category directly inside the SQL
* Originally addEqualsFilter has been used to filter the * query. This is possible anymore due to the localised URLs of the new localised categories (or at least: not found
* appropriate category directly inside the SQL query. This is * it). Therefore we do the filtering in Java now.
* possible anymore due to the localised URLs of the new
* localised categories (or at least: not found it).
* Therefore we do the filtering in Java now.
* *
*/ */
public static Category[] resolveCategory(Category root, public static Category[] resolveCategory(Category root,
@ -344,7 +327,7 @@ public class NavigationFileResolver extends DefaultApplicationFileResolver {
cats.add(root); cats.add(root);
Category cat = root; Category cat = root;
for (int i = 0 ; i < bits.length ; i++) { for (int i = 0; i < bits.length; i++) {
if ("".equals(bits[i])) { if ("".equals(bits[i])) {
continue; continue;
} }
@ -359,7 +342,7 @@ public class NavigationFileResolver extends DefaultApplicationFileResolver {
boolean found = false; boolean found = false;
while (children.next()) { while (children.next()) {
cat = children.getCategory(); cat = children.getCategory();
if(cat.getURL().equals(bits[i]) && cat.isEnabled() == true) { if (cat.getURL().equals(bits[i]) && cat.isEnabled() == true) {
if (s_log.isDebugEnabled()) { if (s_log.isDebugEnabled()) {
s_log.debug("Got category " + cat); s_log.debug("Got category " + cat);
} }
@ -370,7 +353,7 @@ public class NavigationFileResolver extends DefaultApplicationFileResolver {
} }
} }
// } else { // } else {
if(found == false) { if (found == false) {
if (s_log.isDebugEnabled()) { if (s_log.isDebugEnabled()) {
s_log.debug("No category found "); s_log.debug("No category found ");
} }
@ -378,6 +361,6 @@ public class NavigationFileResolver extends DefaultApplicationFileResolver {
} }
} }
return (Category[])cats.toArray(new Category[cats.size()]); return (Category[]) cats.toArray(new Category[cats.size()]);
} }
} }