From fb20f3a26dbfb8f4e8d59fd7dd497c1e1b83c7e3 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Fri, 5 Nov 2010 18:19:43 +0100 Subject: [PATCH] improve handler and manager api --- .../scm/repository/GitRepositoryHandler.java | 8 +- .../scm/repository/HgRepositoryHandler.java | 8 +- .../scm/repository/SvnRepositoryHandler.java | 8 +- scm-core/src/main/java/sonia/scm/Handler.java | 65 +---------- .../src/main/java/sonia/scm/HandlerBase.java | 110 ++++++++++++++++++ ...RepositoryEvent.java => HandlerEvent.java} | 4 +- scm-core/src/main/java/sonia/scm/Manager.java | 58 +++++++++ .../RepositoryType.java => Type.java} | 95 +++++++++++++-- .../src/main/java/sonia/scm/group/Group.java | 6 +- .../java/sonia/scm/group/GroupManager.java | 14 +-- .../repository/AbstractRepositoryManager.java | 3 +- .../AbstractRepositoryManagerDecorator.java | 17 +-- .../repository/BasicRepositoryManager.java | 25 ++-- .../scm/repository/RepositoryHandler.java | 22 +--- .../scm/repository/RepositoryListener.java | 4 +- .../scm/repository/RepositoryManager.java | 28 +---- .../src/main/java/sonia/scm/ScmState.java | 11 +- .../resources/AuthenticationResource.java | 9 +- .../CacheRepositoryManagerDecorator.java | 20 +--- .../src/main/webapp/META-INF/context.xml | 2 + 20 files changed, 326 insertions(+), 191 deletions(-) create mode 100644 scm-core/src/main/java/sonia/scm/HandlerBase.java rename scm-core/src/main/java/sonia/scm/{repository/RepositoryEvent.java => HandlerEvent.java} (95%) create mode 100644 scm-core/src/main/java/sonia/scm/Manager.java rename scm-core/src/main/java/sonia/scm/{repository/RepositoryType.java => Type.java} (63%) create mode 100644 scm-webapp/src/main/webapp/META-INF/context.xml diff --git a/plugins/scm-git-plugin/src/main/java/sonia/scm/repository/GitRepositoryHandler.java b/plugins/scm-git-plugin/src/main/java/sonia/scm/repository/GitRepositoryHandler.java index 1319a6157e..fb3a4008c3 100644 --- a/plugins/scm-git-plugin/src/main/java/sonia/scm/repository/GitRepositoryHandler.java +++ b/plugins/scm-git-plugin/src/main/java/sonia/scm/repository/GitRepositoryHandler.java @@ -29,12 +29,15 @@ * */ + + package sonia.scm.repository; //~--- non-JDK imports -------------------------------------------------------- import com.google.inject.Singleton; +import sonia.scm.Type; import sonia.scm.io.CommandResult; import sonia.scm.io.ExtendedCommand; @@ -59,8 +62,7 @@ public class GitRepositoryHandler public static final String TYPE_NAME = "git"; /** Field description */ - public static final RepositoryType TYPE = new RepositoryType(TYPE_NAME, - TYPE_DISPLAYNAME); + public static final Type TYPE = new Type(TYPE_NAME, TYPE_DISPLAYNAME); //~--- get methods ---------------------------------------------------------- @@ -71,7 +73,7 @@ public class GitRepositoryHandler * @return */ @Override - public RepositoryType getType() + public Type getType() { return TYPE; } diff --git a/plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgRepositoryHandler.java b/plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgRepositoryHandler.java index 281581bcba..abfd8c33f5 100644 --- a/plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgRepositoryHandler.java +++ b/plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgRepositoryHandler.java @@ -29,6 +29,8 @@ * */ + + package sonia.scm.repository; //~--- non-JDK imports -------------------------------------------------------- @@ -39,6 +41,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import sonia.scm.ConfigurationException; +import sonia.scm.Type; import sonia.scm.io.CommandResult; import sonia.scm.io.ExtendedCommand; import sonia.scm.io.INIConfiguration; @@ -75,8 +78,7 @@ public class HgRepositoryHandler extends AbstractRepositoryHandler public static final String TYPE_NAME = "hg"; /** Field description */ - public static final RepositoryType TYPE = new RepositoryType(TYPE_NAME, - TYPE_DISPLAYNAME); + public static final Type TYPE = new Type(TYPE_NAME, TYPE_DISPLAYNAME); /** Field description */ private static final Logger logger = @@ -275,7 +277,7 @@ public class HgRepositoryHandler extends AbstractRepositoryHandler * @return */ @Override - public RepositoryType getType() + public Type getType() { return TYPE; } diff --git a/plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/SvnRepositoryHandler.java b/plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/SvnRepositoryHandler.java index 5f6898384a..f95a7ce09f 100644 --- a/plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/SvnRepositoryHandler.java +++ b/plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/SvnRepositoryHandler.java @@ -29,10 +29,13 @@ * */ + + package sonia.scm.repository; //~--- non-JDK imports -------------------------------------------------------- +import sonia.scm.Type; import sonia.scm.io.ExtendedCommand; //~--- JDK imports ------------------------------------------------------------ @@ -54,8 +57,7 @@ public class SvnRepositoryHandler public static final String TYPE_NAME = "svn"; /** Field description */ - public static final RepositoryType TYPE = new RepositoryType(TYPE_NAME, - TYPE_DISPLAYNAME); + public static final Type TYPE = new Type(TYPE_NAME, TYPE_DISPLAYNAME); //~--- get methods ---------------------------------------------------------- @@ -66,7 +68,7 @@ public class SvnRepositoryHandler * @return */ @Override - public RepositoryType getType() + public Type getType() { return TYPE; } diff --git a/scm-core/src/main/java/sonia/scm/Handler.java b/scm-core/src/main/java/sonia/scm/Handler.java index 7a9aa938f0..eb8deabbe7 100644 --- a/scm-core/src/main/java/sonia/scm/Handler.java +++ b/scm-core/src/main/java/sonia/scm/Handler.java @@ -29,15 +29,10 @@ * */ + + package sonia.scm; -//~--- JDK imports ------------------------------------------------------------ - -import java.io.Closeable; -import java.io.IOException; - -import java.util.Collection; - /** * * @author Sebastian Sdorra @@ -45,65 +40,17 @@ import java.util.Collection; * @param * @param */ -public interface Handler extends Initable, Closeable +public interface Handler + extends HandlerBase { /** * Method description * * - * @param object - * - * @throws E - * @throws IOException - */ - public void create(T object) throws E, IOException; - - /** - * Method description - * - * - * @param object - * - * @throws E - * @throws IOException - */ - public void delete(T object) throws E, IOException; - - /** - * Method description - * - * - * @param object - * - * @throws E - * @throws IOException - */ - public void modify(T object) throws E, IOException; - - /** - * Method description - * - * - * @param object - * - * @throws E - * @throws IOException - */ - public void refresh(T object) throws E, IOException; - - //~--- get methods ---------------------------------------------------------- - - /** - * Method description - * - * - * - * @param id - * * @return */ - public T get(String id); + public Type getType(); /** * Method description @@ -111,5 +58,5 @@ public interface Handler extends Initable, Closeable * * @return */ - public Collection getAll(); + public boolean isConfigured(); } diff --git a/scm-core/src/main/java/sonia/scm/HandlerBase.java b/scm-core/src/main/java/sonia/scm/HandlerBase.java new file mode 100644 index 0000000000..69cd75bded --- /dev/null +++ b/scm-core/src/main/java/sonia/scm/HandlerBase.java @@ -0,0 +1,110 @@ +/** + * Copyright (c) 2010, Sebastian Sdorra + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of SCM-Manager; nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * http://bitbucket.org/sdorra/scm-manager + * + */ + +package sonia.scm; + +import java.io.Closeable; +import java.io.IOException; +import java.util.Collection; + +/** + * + * @author Sebastian Sdorra + */ +public interface HandlerBase extends Initable, Closeable +{ + + /** + * Method description + * + * + * @param object + * + * @throws E + * @throws IOException + */ + public void create(T object) throws E, IOException; + + /** + * Method description + * + * + * @param object + * + * @throws E + * @throws IOException + */ + public void delete(T object) throws E, IOException; + + /** + * Method description + * + * + * @param object + * + * @throws E + * @throws IOException + */ + public void modify(T object) throws E, IOException; + + /** + * Method description + * + * + * @param object + * + * @throws E + * @throws IOException + */ + public void refresh(T object) throws E, IOException; + + //~--- get methods ---------------------------------------------------------- + + /** + * Method description + * + * + * + * @param id + * + * @return + */ + public T get(String id); + + /** + * Method description + * + * + * @return + */ + public Collection getAll(); + +} diff --git a/scm-core/src/main/java/sonia/scm/repository/RepositoryEvent.java b/scm-core/src/main/java/sonia/scm/HandlerEvent.java similarity index 95% rename from scm-core/src/main/java/sonia/scm/repository/RepositoryEvent.java rename to scm-core/src/main/java/sonia/scm/HandlerEvent.java index 6f3b6868ff..3543f45dc8 100644 --- a/scm-core/src/main/java/sonia/scm/repository/RepositoryEvent.java +++ b/scm-core/src/main/java/sonia/scm/HandlerEvent.java @@ -29,10 +29,10 @@ * */ -package sonia.scm.repository; +package sonia.scm; /** * * @author Sebastian Sdorra */ -public enum RepositoryEvent { CREATE, MODIFY, DELETE } +public enum HandlerEvent { CREATE, MODIFY, DELETE } diff --git a/scm-core/src/main/java/sonia/scm/Manager.java b/scm-core/src/main/java/sonia/scm/Manager.java new file mode 100644 index 0000000000..d5600842c9 --- /dev/null +++ b/scm-core/src/main/java/sonia/scm/Manager.java @@ -0,0 +1,58 @@ +/** + * Copyright (c) 2010, Sebastian Sdorra + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of SCM-Manager; nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * http://bitbucket.org/sdorra/scm-manager + * + */ + + + +package sonia.scm; + +//~--- JDK imports ------------------------------------------------------------ + +import java.util.Collection; + +/** + * + * @author Sebastian Sdorra + * + * @param + * @param + */ +public interface Manager + extends HandlerBase +{ + + /** + * Method description + * + * + * @return + */ + public Collection getTypes(); +} diff --git a/scm-core/src/main/java/sonia/scm/repository/RepositoryType.java b/scm-core/src/main/java/sonia/scm/Type.java similarity index 63% rename from scm-core/src/main/java/sonia/scm/repository/RepositoryType.java rename to scm-core/src/main/java/sonia/scm/Type.java index c2e86f3be5..c673a2ab78 100644 --- a/scm-core/src/main/java/sonia/scm/repository/RepositoryType.java +++ b/scm-core/src/main/java/sonia/scm/Type.java @@ -29,20 +29,27 @@ * */ -package sonia.scm.repository; + + +package sonia.scm; + +//~--- non-JDK imports -------------------------------------------------------- + +import sonia.scm.util.AssertUtil; +import sonia.scm.util.Util; /** * * @author Sebastian Sdorra */ -public class RepositoryType +public class Type { /** - * Constructs ... + * Constructor is required for JAXB * */ - public RepositoryType() {} + public Type() {} /** * Constructs ... @@ -51,14 +58,84 @@ public class RepositoryType * @param name * @param displayName */ - public RepositoryType(String name, String displayName) + public Type(String name, String displayName) { + AssertUtil.assertIsNotEmpty(name); this.name = name; - this.displayName = displayName; + + if (Util.isNotEmpty(displayName)) + { + this.displayName = displayName; + } + else + { + this.displayName = name; + } } //~--- methods -------------------------------------------------------------- + /** + * Method description + * + * + * @param obj + * + * @return + */ + @Override + public boolean equals(Object obj) + { + if (obj == null) + { + return false; + } + + if (getClass() != obj.getClass()) + { + return false; + } + + final Type other = (Type) obj; + + if ((this.name == null) + ? (other.name != null) + : !this.name.equals(other.name)) + { + return false; + } + + if ((this.displayName == null) + ? (other.displayName != null) + : !this.displayName.equals(other.displayName)) + { + return false; + } + + return true; + } + + /** + * Method description + * + * + * @return + */ + @Override + public int hashCode() + { + int hash = 5; + + hash = 37 * hash + ((this.name != null) + ? this.name.hashCode() + : 0); + hash = 37 * hash + ((this.displayName != null) + ? this.displayName.hashCode() + : 0); + + return hash; + } + /** * Method description * @@ -68,11 +145,11 @@ public class RepositoryType @Override public String toString() { - StringBuilder msg = new StringBuilder(name); + StringBuilder out = new StringBuilder("Type{name="); - msg.append(" (").append(displayName).append(")"); + out.append(name).append(", displayName=").append(displayName).append("}"); - return msg.toString(); + return out.toString(); } //~--- get methods ---------------------------------------------------------- diff --git a/scm-core/src/main/java/sonia/scm/group/Group.java b/scm-core/src/main/java/sonia/scm/group/Group.java index cb3d1cf82c..5fabfb0538 100644 --- a/scm-core/src/main/java/sonia/scm/group/Group.java +++ b/scm-core/src/main/java/sonia/scm/group/Group.java @@ -29,10 +29,13 @@ * */ + + package sonia.scm.group; //~--- non-JDK imports -------------------------------------------------------- +import sonia.scm.TypedObject; import sonia.scm.util.Util; //~--- JDK imports ------------------------------------------------------------ @@ -56,7 +59,7 @@ import javax.xml.bind.annotation.XmlType; @XmlRootElement(name = "groups") @XmlAccessorType(XmlAccessType.FIELD) @XmlType(propOrder = { "type", "name", "members" }) -public class Group implements Serializable +public class Group implements TypedObject, Serializable { /** Field description */ @@ -220,6 +223,7 @@ public class Group implements Serializable * * @return */ + @Override public String getType() { return type; diff --git a/scm-core/src/main/java/sonia/scm/group/GroupManager.java b/scm-core/src/main/java/sonia/scm/group/GroupManager.java index c52d613dfb..7de7e1f5d9 100644 --- a/scm-core/src/main/java/sonia/scm/group/GroupManager.java +++ b/scm-core/src/main/java/sonia/scm/group/GroupManager.java @@ -29,6 +29,8 @@ * */ + + package sonia.scm.group; //~--- non-JDK imports -------------------------------------------------------- @@ -39,14 +41,4 @@ import sonia.scm.Handler; * * @author Sebastian Sdorra */ -public interface GroupManager extends Handler -{ - - /** - * Method description - * - * - * @return - */ - public String getType(); -} +public interface GroupManager extends Handler {} diff --git a/scm-core/src/main/java/sonia/scm/repository/AbstractRepositoryManager.java b/scm-core/src/main/java/sonia/scm/repository/AbstractRepositoryManager.java index 10684b5b8a..8acf53824a 100644 --- a/scm-core/src/main/java/sonia/scm/repository/AbstractRepositoryManager.java +++ b/scm-core/src/main/java/sonia/scm/repository/AbstractRepositoryManager.java @@ -33,6 +33,7 @@ package sonia.scm.repository; //~--- JDK imports ------------------------------------------------------------ +import sonia.scm.HandlerEvent; import java.util.HashSet; import java.util.Set; @@ -74,7 +75,7 @@ public abstract class AbstractRepositoryManager implements RepositoryManager * @param repository * @param event */ - protected void fireEvent(Repository repository, RepositoryEvent event) + protected void fireEvent(Repository repository, HandlerEvent event) { for (RepositoryListener listener : listenerSet) { diff --git a/scm-core/src/main/java/sonia/scm/repository/AbstractRepositoryManagerDecorator.java b/scm-core/src/main/java/sonia/scm/repository/AbstractRepositoryManagerDecorator.java index 90a203fcc5..2108579813 100644 --- a/scm-core/src/main/java/sonia/scm/repository/AbstractRepositoryManagerDecorator.java +++ b/scm-core/src/main/java/sonia/scm/repository/AbstractRepositoryManagerDecorator.java @@ -40,6 +40,7 @@ import sonia.scm.SCMContextProvider; import java.io.IOException; import java.util.Collection; +import sonia.scm.Type; /** * @@ -60,20 +61,6 @@ public abstract class AbstractRepositoryManagerDecorator this.orginal = orginal; } - //~--- methods -------------------------------------------------------------- - - /** - * Method description - * - * - * @param handler - */ - @Override - public void addHandler(RepositoryHandler handler) - { - orginal.addHandler(handler); - } - /** * Method description * @@ -145,7 +132,7 @@ public abstract class AbstractRepositoryManagerDecorator * @return */ @Override - public Collection getTypes() + public Collection getTypes() { return orginal.getTypes(); } diff --git a/scm-core/src/main/java/sonia/scm/repository/BasicRepositoryManager.java b/scm-core/src/main/java/sonia/scm/repository/BasicRepositoryManager.java index 0135c7811a..d3501910c3 100644 --- a/scm-core/src/main/java/sonia/scm/repository/BasicRepositoryManager.java +++ b/scm-core/src/main/java/sonia/scm/repository/BasicRepositoryManager.java @@ -33,6 +33,7 @@ package sonia.scm.repository; //~--- non-JDK imports -------------------------------------------------------- +import sonia.scm.HandlerEvent; import com.google.inject.Inject; import com.google.inject.Singleton; @@ -56,6 +57,7 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; +import sonia.scm.Type; /** * @@ -81,7 +83,7 @@ public class BasicRepositoryManager extends AbstractRepositoryManager public BasicRepositoryManager(Set handlerSet) { handlerMap = new HashMap(); - types = new ArrayList(); + types = new ArrayList(); for (RepositoryHandler handler : handlerSet) { @@ -91,18 +93,11 @@ public class BasicRepositoryManager extends AbstractRepositoryManager //~--- methods -------------------------------------------------------------- - /** - * Method description - * - * - * @param handler - */ - @Override - public void addHandler(RepositoryHandler handler) + private void addHandler(RepositoryHandler handler) { AssertUtil.assertIsNotNull(handler); - RepositoryType type = handler.getType(); + Type type = handler.getType(); AssertUtil.assertIsNotNull(type); @@ -158,7 +153,7 @@ public class BasicRepositoryManager extends AbstractRepositoryManager } getHandler(repository).create(repository); - fireEvent(repository, RepositoryEvent.CREATE); + fireEvent(repository, HandlerEvent.CREATE); } /** @@ -181,7 +176,7 @@ public class BasicRepositoryManager extends AbstractRepositoryManager } getHandler(repository).delete(repository); - fireEvent(repository, RepositoryEvent.DELETE); + fireEvent(repository, HandlerEvent.DELETE); } /** @@ -213,7 +208,7 @@ public class BasicRepositoryManager extends AbstractRepositoryManager } getHandler(repository).modify(repository); - fireEvent(repository, RepositoryEvent.MODIFY); + fireEvent(repository, HandlerEvent.MODIFY); } /** @@ -322,7 +317,7 @@ public class BasicRepositoryManager extends AbstractRepositoryManager * @return */ @Override - public Collection getTypes() + public Collection getTypes() { return types; } @@ -363,5 +358,5 @@ public class BasicRepositoryManager extends AbstractRepositoryManager private Map handlerMap; /** Field description */ - private List types; + private List types; } diff --git a/scm-core/src/main/java/sonia/scm/repository/RepositoryHandler.java b/scm-core/src/main/java/sonia/scm/repository/RepositoryHandler.java index 693b7447de..85ce978608 100644 --- a/scm-core/src/main/java/sonia/scm/repository/RepositoryHandler.java +++ b/scm-core/src/main/java/sonia/scm/repository/RepositoryHandler.java @@ -29,6 +29,8 @@ * */ + + package sonia.scm.repository; //~--- non-JDK imports -------------------------------------------------------- @@ -44,22 +46,4 @@ import sonia.scm.ListenerSupport; */ public interface RepositoryHandler extends Handler, - ListenerSupport -{ - - /** - * Method description - * - * - * @return - */ - public RepositoryType getType(); - - /** - * Method description - * - * - * @return - */ - public boolean isConfigured(); -} + ListenerSupport {} diff --git a/scm-core/src/main/java/sonia/scm/repository/RepositoryListener.java b/scm-core/src/main/java/sonia/scm/repository/RepositoryListener.java index 953b174803..157d45919a 100644 --- a/scm-core/src/main/java/sonia/scm/repository/RepositoryListener.java +++ b/scm-core/src/main/java/sonia/scm/repository/RepositoryListener.java @@ -31,6 +31,8 @@ package sonia.scm.repository; +import sonia.scm.HandlerEvent; + /** * * @author Sebastian Sdorra @@ -45,5 +47,5 @@ public interface RepositoryListener * @param repository * @param event */ - public void onEvent(Repository repository, RepositoryEvent event); + public void onEvent(Repository repository, HandlerEvent event); } diff --git a/scm-core/src/main/java/sonia/scm/repository/RepositoryManager.java b/scm-core/src/main/java/sonia/scm/repository/RepositoryManager.java index 0d413e5c1e..bdeb068ce2 100644 --- a/scm-core/src/main/java/sonia/scm/repository/RepositoryManager.java +++ b/scm-core/src/main/java/sonia/scm/repository/RepositoryManager.java @@ -29,36 +29,24 @@ * */ + + package sonia.scm.repository; //~--- non-JDK imports -------------------------------------------------------- -import sonia.scm.Handler; import sonia.scm.ListenerSupport; - -//~--- JDK imports ------------------------------------------------------------ - -import java.util.Collection; +import sonia.scm.Manager; /** * * @author Sebastian Sdorra */ public interface RepositoryManager - extends Handler, + extends Manager, ListenerSupport { - /** - * Method description - * - * - * @param handler - */ - public void addHandler(RepositoryHandler handler); - - //~--- get methods ---------------------------------------------------------- - /** * Method description * @@ -68,12 +56,4 @@ public interface RepositoryManager * @return */ public RepositoryHandler getHandler(String type); - - /** - * Method description - * - * - * @return - */ - public Collection getTypes(); } diff --git a/scm-webapp/src/main/java/sonia/scm/ScmState.java b/scm-webapp/src/main/java/sonia/scm/ScmState.java index ce7dbad184..c4e6210593 100644 --- a/scm-webapp/src/main/java/sonia/scm/ScmState.java +++ b/scm-webapp/src/main/java/sonia/scm/ScmState.java @@ -29,12 +29,13 @@ * */ + + package sonia.scm; //~--- non-JDK imports -------------------------------------------------------- import sonia.scm.user.User; -import sonia.scm.repository.RepositoryType; //~--- JDK imports ------------------------------------------------------------ @@ -65,7 +66,7 @@ public class ScmState * @param user * @param repositoryTypes */ - public ScmState(User user, RepositoryType[] repositoryTypes) + public ScmState(User user, Type[] repositoryTypes) { this.user = user; this.repositoryTypes = repositoryTypes; @@ -79,7 +80,7 @@ public class ScmState * * @return */ - public RepositoryType[] getRepositoryTypes() + public Type[] getRepositoryTypes() { return repositoryTypes; } @@ -114,7 +115,7 @@ public class ScmState * * @param repositoryTypes */ - public void setRepositoryTypes(RepositoryType[] repositoryTypes) + public void setRepositoryTypes(Type[] repositoryTypes) { this.repositoryTypes = repositoryTypes; } @@ -145,7 +146,7 @@ public class ScmState /** Field description */ @XmlElement(name = "repositoryTypes") - private RepositoryType[] repositoryTypes; + private Type[] repositoryTypes; /** Field description */ private boolean success = true; diff --git a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/AuthenticationResource.java b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/AuthenticationResource.java index da2683cbb8..19d8a1b858 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/AuthenticationResource.java +++ b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/AuthenticationResource.java @@ -29,6 +29,8 @@ * */ + + package sonia.scm.api.rest.resources; //~--- non-JDK imports -------------------------------------------------------- @@ -37,9 +39,9 @@ import com.google.inject.Inject; import com.google.inject.Singleton; import sonia.scm.ScmState; -import sonia.scm.user.User; +import sonia.scm.Type; import sonia.scm.repository.RepositoryManager; -import sonia.scm.repository.RepositoryType; +import sonia.scm.user.User; import sonia.scm.web.security.SecurityContext; //~--- JDK imports ------------------------------------------------------------ @@ -162,8 +164,7 @@ public class AuthenticationResource ScmState state = new ScmState(); state.setUser(user); - state.setRepositoryTypes( - repositoryManger.getTypes().toArray(new RepositoryType[0])); + state.setRepositoryTypes(repositoryManger.getTypes().toArray(new Type[0])); return state; } diff --git a/scm-webapp/src/main/java/sonia/scm/cache/CacheRepositoryManagerDecorator.java b/scm-webapp/src/main/java/sonia/scm/cache/CacheRepositoryManagerDecorator.java index ee3effdfe2..374d644385 100644 --- a/scm-webapp/src/main/java/sonia/scm/cache/CacheRepositoryManagerDecorator.java +++ b/scm-webapp/src/main/java/sonia/scm/cache/CacheRepositoryManagerDecorator.java @@ -29,6 +29,8 @@ * */ + + package sonia.scm.cache; //~--- non-JDK imports -------------------------------------------------------- @@ -37,13 +39,12 @@ import com.google.inject.Inject; import sonia.scm.ConfigChangedListener; import sonia.scm.SCMContextProvider; +import sonia.scm.Type; import sonia.scm.Undecorated; import sonia.scm.repository.AbstractRepositoryManagerDecorator; import sonia.scm.repository.Repository; import sonia.scm.repository.RepositoryException; -import sonia.scm.repository.RepositoryHandler; import sonia.scm.repository.RepositoryManager; -import sonia.scm.repository.RepositoryType; import sonia.scm.util.AssertUtil; import sonia.scm.util.Util; @@ -88,19 +89,6 @@ public class CacheRepositoryManagerDecorator //~--- methods -------------------------------------------------------------- - /** - * Method description - * - * - * @param handler - */ - @Override - public void addHandler(RepositoryHandler handler) - { - super.addHandler(handler); - handler.addListener(this); - } - /** * Method description * @@ -158,7 +146,7 @@ public class CacheRepositoryManagerDecorator { super.init(context); - for (RepositoryType type : getTypes()) + for (Type type : getTypes()) { getHandler(type.getName()).addListener(this); } diff --git a/scm-webapp/src/main/webapp/META-INF/context.xml b/scm-webapp/src/main/webapp/META-INF/context.xml new file mode 100644 index 0000000000..39bec2d74f --- /dev/null +++ b/scm-webapp/src/main/webapp/META-INF/context.xml @@ -0,0 +1,2 @@ + +