diff --git a/slice-core-api/pom.xml b/slice-core-api/pom.xml
index b692b292..433fe26e 100644
--- a/slice-core-api/pom.xml
+++ b/slice-core-api/pom.xml
@@ -72,11 +72,6 @@
org.osgi.core
-
- org.apache.sling
- org.apache.sling.commons.classloader
-
-
javax.servlet
diff --git a/slice-core-api/src/main/java/com/cognifide/slice/api/tag/SliceTagUtils.java b/slice-core-api/src/main/java/com/cognifide/slice/api/tag/SliceTagUtils.java
index 54ea9cd6..36712b8b 100644
--- a/slice-core-api/src/main/java/com/cognifide/slice/api/tag/SliceTagUtils.java
+++ b/slice-core-api/src/main/java/com/cognifide/slice/api/tag/SliceTagUtils.java
@@ -35,7 +35,6 @@
import com.cognifide.slice.api.injector.InjectorWithContext;
import com.cognifide.slice.api.injector.InjectorsRepository;
import com.cognifide.slice.api.provider.ModelProvider;
-import org.apache.sling.commons.classloader.DynamicClassLoaderManager;
public final class SliceTagUtils {
@@ -83,11 +82,24 @@ public static T getFromCurrentPath(final PageContext pageContext, final Clas
* @throws ClassNotFoundException if the class was not found
*/
public static Class> getClassFromType(final PageContext pageContext, final String type) throws ClassNotFoundException {
- final SlingScriptHelper scriptHelper = getSlingScriptHelper(pageContext);
- final DynamicClassLoaderManager dynamicClassLoaderManager = scriptHelper
- .getService(DynamicClassLoaderManager.class);
- final ClassLoader classLoader = dynamicClassLoaderManager.getDynamicClassLoader();
- return classLoader.loadClass(type);
+ final SlingHttpServletRequest request = SliceTagUtils.slingRequestFrom(pageContext);
+ final InjectorsRepository injectorsRepository = SliceTagUtils.injectorsRepositoryFrom(pageContext);
+
+ final String injectorName = getInjectorName(request, null, injectorsRepository);
+
+ final InjectorWithContext injector = injectorsRepository.getInjector(injectorName);
+ if (injector == null) {
+ throw new IllegalStateException("Guice injector not found: " + injectorName);
+ }
+ injector.pushContextProvider(contextProviderFrom(pageContext));
+
+ final ModelProvider modelProvider = injector.getInstance(ModelProvider.class);
+
+ try {
+ return modelProvider.get(type, request.getResource()).getClass();
+ } finally {
+ injector.popContextProvider();
+ }
}
/**